common/cnxk: use computed value for WQE skip
[dpdk.git] / drivers / net / hns3 / hns3_rxtx_vec.h
index 2baf085..d13f186 100644 (file)
@@ -15,9 +15,17 @@ hns3_tx_bulk_free_buffers(struct hns3_tx_queue *txq)
        struct hns3_entry *tx_entry;
        struct rte_mbuf *m;
        int nb_free = 0;
-       int i;
+       uint16_t i;
 
        tx_entry = &txq->sw_ring[txq->next_to_clean];
+       if (txq->mbuf_fast_free_en) {
+               rte_mempool_put_bulk(tx_entry->mbuf->pool, (void **)tx_entry,
+                                    txq->tx_rs_thresh);
+               for (i = 0; i < txq->tx_rs_thresh; i++)
+                       tx_entry[i].mbuf = NULL;
+               goto update_field;
+       }
+
        for (i = 0; i < txq->tx_rs_thresh; i++, tx_entry++) {
                m = rte_pktmbuf_prefree_seg(tx_entry->mbuf);
                tx_entry->mbuf = NULL;
@@ -36,6 +44,7 @@ hns3_tx_bulk_free_buffers(struct hns3_tx_queue *txq)
        if (nb_free)
                rte_mempool_put_bulk(free[0]->pool, (void **)free, nb_free);
 
+update_field:
        /* Update numbers of available descriptor due to buffer freed */
        txq->tx_bd_ready += txq->tx_rs_thresh;
        txq->next_to_clean += txq->tx_rs_thresh;
@@ -47,7 +56,7 @@ static inline void
 hns3_tx_free_buffers(struct hns3_tx_queue *txq)
 {
        struct hns3_desc *tx_desc;
-       int i;
+       uint16_t i;
 
        /*
         * All mbufs can be released only when the VLD bits of all
@@ -71,6 +80,9 @@ hns3_rx_reassemble_pkts(struct rte_mbuf **rx_pkts,
        uint16_t count, i;
        uint64_t mask;
 
+       if (likely(pkt_err_mask == 0))
+               return nb_pkts;
+
        count = 0;
        for (i = 0; i < nb_pkts; i++) {
                mask = ((uint64_t)1u) << i;