[dpdk-dev] [PATCH] net/i40e: Improve i40evf buffer cleanup in tx vector mode
Roger B. Melton
rmelton at cisco.com
Fri Oct 6 01:42:53 CEST 2017
Hi Everyone,
As soon as I submitted the patch, I realized I neglected to signoff.
What's the recommended procedure, resubmit the original signed off, or
bump to v1?
Thanks,
Roger
On 10/5/17 3:11 PM, Roger B Melton wrote:
> ---
>
> i40evf tx vector logic frees mbufs, but it does not remove the
> mbufs from software rings which leads to double frees. This change
> corrects that oversight. We've validated this fix within our application.
>
> drivers/net/i40e/i40e_rxtx_vec_common.h | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/net/i40e/i40e_rxtx_vec_common.h b/drivers/net/i40e/i40e_rxtx_vec_common.h
> index 39a6da0..fdc6fce 100644
> --- a/drivers/net/i40e/i40e_rxtx_vec_common.h
> +++ b/drivers/net/i40e/i40e_rxtx_vec_common.h
> @@ -127,6 +127,7 @@ i40e_tx_free_bufs(struct i40e_tx_queue *txq)
> if (likely(m != NULL)) {
> free[0] = m;
> nb_free = 1;
> + txep[0].mbuf = NULL;
> for (i = 1; i < n; i++) {
> m = rte_pktmbuf_prefree_seg(txep[i].mbuf);
> if (likely(m != NULL)) {
> @@ -139,14 +140,17 @@ i40e_tx_free_bufs(struct i40e_tx_queue *txq)
> free[0] = m;
> nb_free = 1;
> }
> + txep[i].mbuf = NULL;
> }
> }
> rte_mempool_put_bulk(free[0]->pool, (void **)free, nb_free);
> } else {
> + txep[0].mbuf = NULL;
> for (i = 1; i < n; i++) {
> m = rte_pktmbuf_prefree_seg(txep[i].mbuf);
> if (m != NULL)
> rte_mempool_put(m->pool, m);
> + txep[i].mbuf = NULL;
> }
> }
>
More information about the dev
mailing list