X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fhns3%2Fhns3_rxtx_vec_neon.h;h=e5c7d69caf2aefd3188f1ff2714c628004869f2c;hb=95e7bb6a5fc9e371e763b11ec15786e4d574ef8e;hp=8d7721baf38b97be498ecd043c8f9b2496104f9f;hpb=a3d4f4d291d79e2801397055067d903ef5e4d4aa;p=dpdk.git diff --git a/drivers/net/hns3/hns3_rxtx_vec_neon.h b/drivers/net/hns3/hns3_rxtx_vec_neon.h index 8d7721baf3..e5c7d69caf 100644 --- a/drivers/net/hns3/hns3_rxtx_vec_neon.h +++ b/drivers/net/hns3/hns3_rxtx_vec_neon.h @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: BSD-3-Clause - * Copyright(c) 2020 Hisilicon Limited. + * Copyright(c) 2020-2021 HiSilicon Limited. */ #ifndef _HNS3_RXTX_VEC_NEON_H_ @@ -42,7 +42,7 @@ hns3_xmit_fixed_burst_vec(void *__restrict tx_queue, nb_commit = RTE_MIN(txq->tx_bd_ready, nb_pkts); if (unlikely(nb_commit == 0)) { - txq->queue_full_cnt++; + txq->dfx_stats.queue_full_cnt++; return 0; } nb_tx = nb_commit; @@ -61,6 +61,9 @@ hns3_xmit_fixed_burst_vec(void *__restrict tx_queue, for (i = 0; i < n; i++, tx_pkts++, tx_desc++) { hns3_vec_tx(tx_desc, *tx_pkts); tx_entry[i].mbuf = *tx_pkts; + + /* Increment bytes counter */ + txq->basic_stats.bytes += (*tx_pkts)->pkt_len; } nb_commit -= n; @@ -72,6 +75,9 @@ hns3_xmit_fixed_burst_vec(void *__restrict tx_queue, for (i = 0; i < nb_commit; i++, tx_pkts++, tx_desc++) { hns3_vec_tx(tx_desc, *tx_pkts); tx_entry[i].mbuf = *tx_pkts; + + /* Increment bytes counter */ + txq->basic_stats.bytes += (*tx_pkts)->pkt_len; } next_to_use += nb_commit; @@ -92,10 +98,10 @@ hns3_desc_parse_field(struct hns3_rx_queue *rxq, uint32_t l234_info, ol_info, bd_base_info; struct rte_mbuf *pkt; uint32_t retcode = 0; - uint32_t cksum_err; - int ret, i; + uint32_t i; + int ret; - for (i = 0; i < (int)bd_vld_num; i++) { + for (i = 0; i < bd_vld_num; i++) { pkt = sw_ring[i].mbuf; /* init rte_mbuf.rearm_data last 64-bit */ @@ -104,17 +110,16 @@ hns3_desc_parse_field(struct hns3_rx_queue *rxq, l234_info = rxdp[i].rx.l234_info; ol_info = rxdp[i].rx.ol_info; bd_base_info = rxdp[i].rx.bd_base_info; - ret = hns3_handle_bdinfo(rxq, pkt, bd_base_info, - l234_info, &cksum_err); + ret = hns3_handle_bdinfo(rxq, pkt, bd_base_info, l234_info); if (unlikely(ret)) { retcode |= 1u << i; continue; } pkt->packet_type = hns3_rx_calc_ptype(rxq, l234_info, ol_info); - if (likely(bd_base_info & BIT(HNS3_RXD_L3L4P_B))) - hns3_rx_set_cksum_flag(pkt, pkt->packet_type, - cksum_err); + + /* Increment bytes counter */ + rxq->basic_stats.bytes += pkt->pkt_len; } return retcode; @@ -131,7 +136,8 @@ hns3_recv_burst_vec(struct hns3_rx_queue *__restrict rxq, struct hns3_desc *rxdp = &rxq->rx_ring[rx_id]; uint32_t bd_valid_num, parse_retcode; uint16_t nb_rx = 0; - int pos, offset; + uint32_t pos; + int offset; /* mask to shuffle from desc to mbuf's rx_descriptor_fields1 */ uint8x16_t shuf_desc_fields_msk = { @@ -150,6 +156,14 @@ hns3_recv_burst_vec(struct hns3_rx_queue *__restrict rxq, 0, 0, 0, /* ignore non-length fields */ }; + /* compile-time verifies the shuffle mask */ + RTE_BUILD_BUG_ON(offsetof(struct rte_mbuf, pkt_len) != + offsetof(struct rte_mbuf, rx_descriptor_fields1) + 4); + RTE_BUILD_BUG_ON(offsetof(struct rte_mbuf, data_len) != + offsetof(struct rte_mbuf, rx_descriptor_fields1) + 8); + RTE_BUILD_BUG_ON(offsetof(struct rte_mbuf, hash.rss) != + offsetof(struct rte_mbuf, rx_descriptor_fields1) + 12); + for (pos = 0; pos < nb_pkts; pos += HNS3_DEFAULT_DESCS_PER_LOOP, rxdp += HNS3_DEFAULT_DESCS_PER_LOOP) { uint64x2x2_t descs[HNS3_DEFAULT_DESCS_PER_LOOP];