mbuf: make segment prefree function public
[dpdk.git] / drivers / net / i40e / i40e_rxtx_vec_common.h
index 6cb5dce..76031fe 100644 (file)
@@ -65,19 +65,19 @@ reassemble_packets(struct i40e_rx_queue *rxq, struct rte_mbuf **rx_bufs,
                                start->ol_flags = end->ol_flags;
                                /* we need to strip crc for the whole packet */
                                start->pkt_len -= rxq->crc_len;
-                               if (end->data_len > rxq->crc_len) {
+                               if (end->data_len > rxq->crc_len)
                                        end->data_len -= rxq->crc_len;
-                               else {
+                               else {
                                        /* free up last mbuf */
                                        struct rte_mbuf *secondlast = start;
 
+                                       start->nb_segs--;
                                        while (secondlast->next != end)
                                                secondlast = secondlast->next;
                                        secondlast->data_len -= (rxq->crc_len -
                                                        end->data_len);
                                        secondlast->next = NULL;
                                        rte_pktmbuf_free_seg(end);
-                                       end = secondlast;
                                }
                                pkts[pkt_idx++] = start;
                                start = end = NULL;
@@ -123,12 +123,12 @@ i40e_tx_free_bufs(struct i40e_tx_queue *txq)
          * tx_next_dd - (tx_rs_thresh-1)
          */
        txep = &txq->sw_ring[txq->tx_next_dd - (n - 1)];
-       m = __rte_pktmbuf_prefree_seg(txep[0].mbuf);
+       m = rte_pktmbuf_prefree_seg(txep[0].mbuf);
        if (likely(m != NULL)) {
                free[0] = m;
                nb_free = 1;
                for (i = 1; i < n; i++) {
-                       m = __rte_pktmbuf_prefree_seg(txep[i].mbuf);
+                       m = rte_pktmbuf_prefree_seg(txep[i].mbuf);
                        if (likely(m != NULL)) {
                                if (likely(m->pool == free[0]->pool)) {
                                        free[nb_free++] = m;
@@ -144,7 +144,7 @@ i40e_tx_free_bufs(struct i40e_tx_queue *txq)
                rte_mempool_put_bulk(free[0]->pool, (void **)free, nb_free);
        } else {
                for (i = 1; i < n; i++) {
-                       m = __rte_pktmbuf_prefree_seg(txep[i].mbuf);
+                       m = rte_pktmbuf_prefree_seg(txep[i].mbuf);
                        if (m != NULL)
                                rte_mempool_put(m->pool, m);
                }