X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fhns3%2Fhns3_rxtx_vec.h;h=35d99032f4192c562b60dabcf7fe12be0c2a1fb1;hb=be797cbf4582f3c474f208aeb3d1baa4001a6156;hp=c6df36d0177fbe552ce06109c242eeaba9197937;hpb=a3d4f4d291d79e2801397055067d903ef5e4d4aa;p=dpdk.git diff --git a/drivers/net/hns3/hns3_rxtx_vec.h b/drivers/net/hns3/hns3_rxtx_vec.h index c6df36d017..35d99032f4 100644 --- a/drivers/net/hns3/hns3_rxtx_vec.h +++ b/drivers/net/hns3/hns3_rxtx_vec.h @@ -9,26 +9,14 @@ #include "hns3_ethdev.h" static inline void -hns3_tx_free_buffers(struct hns3_tx_queue *txq) +hns3_tx_bulk_free_buffers(struct hns3_tx_queue *txq) { struct rte_mbuf **free = txq->free; struct hns3_entry *tx_entry; - struct hns3_desc *tx_desc; struct rte_mbuf *m; int nb_free = 0; int i; - /* - * All mbufs can be released only when the VLD bits of all - * descriptors in a batch are cleared. - */ - tx_desc = &txq->tx_ring[txq->next_to_clean]; - for (i = 0; i < txq->tx_rs_thresh; i++, tx_desc++) { - if (tx_desc->tx.tp_fe_sc_vld_ra_ri & - rte_le_to_cpu_16(BIT(HNS3_TXD_VLD_B))) - return; - } - tx_entry = &txq->sw_ring[txq->next_to_clean]; for (i = 0; i < txq->tx_rs_thresh; i++, tx_entry++) { m = rte_pktmbuf_prefree_seg(tx_entry->mbuf); @@ -55,6 +43,26 @@ hns3_tx_free_buffers(struct hns3_tx_queue *txq) txq->next_to_clean = 0; } +static inline void +hns3_tx_free_buffers(struct hns3_tx_queue *txq) +{ + struct hns3_desc *tx_desc; + int i; + + /* + * All mbufs can be released only when the VLD bits of all + * descriptors in a batch are cleared. + */ + tx_desc = &txq->tx_ring[txq->next_to_clean]; + for (i = 0; i < txq->tx_rs_thresh; i++, tx_desc++) { + if (tx_desc->tx.tp_fe_sc_vld_ra_ri & + rte_le_to_cpu_16(BIT(HNS3_TXD_VLD_B))) + return; + } + + hns3_tx_bulk_free_buffers(txq); +} + static inline uint16_t hns3_rx_reassemble_pkts(struct rte_mbuf **rx_pkts, uint16_t nb_pkts,