X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fi40e%2Fi40e_rxtx_vec_common.h;h=f52ed98d62d054c2e76e34af384ec7bfa9a2c6d9;hb=a9a238e9f57dd4363535bfb78c0c5c762522014a;hp=16fcf0aec68a5085e2e3cd86f0c90694ea0124f1;hpb=0604b1f2208f54ae76030e437db40f9da558497b;p=dpdk.git diff --git a/drivers/net/i40e/i40e_rxtx_vec_common.h b/drivers/net/i40e/i40e_rxtx_vec_common.h index 16fcf0aec6..f52ed98d62 100644 --- a/drivers/net/i40e/i40e_rxtx_vec_common.h +++ b/drivers/net/i40e/i40e_rxtx_vec_common.h @@ -99,6 +99,16 @@ 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)]; + + if (txq->offloads & DEV_TX_OFFLOAD_MBUF_FAST_FREE) { + for (i = 0; i < n; i++) { + free[i] = txep[i].mbuf; + txep[i].mbuf = NULL; + } + rte_mempool_put_bulk(free[0]->pool, (void **)free, n); + goto done; + } + m = rte_pktmbuf_prefree_seg(txep[0].mbuf); if (likely(m != NULL)) { free[0] = m; @@ -126,6 +136,7 @@ i40e_tx_free_bufs(struct i40e_tx_queue *txq) } } +done: /* buffers were freed, update counters */ txq->nb_tx_free = (uint16_t)(txq->nb_tx_free + txq->tx_rs_thresh); txq->tx_next_dd = (uint16_t)(txq->tx_next_dd + txq->tx_rs_thresh);