[dpdk-dev] net/sfc: fix Tx reap behaviour on port stop on EF10 datapath

Message ID 1508319597-21039-1-git-send-email-arybchenko@solarflare.com (mailing list archive)
State Accepted, archived
Delegated to: Ferruh Yigit
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Andrew Rybchenko Oct. 18, 2017, 9:39 a.m. UTC
  From: Ivan Malov <ivan.malov@oktetlabs.ru>

Tx reap mechanism on EF10 native datapath was altered by one
of the recent patches to introduce performance optimisations
using the common technique of freeing mbuf segments in bulks.

From this perspective, the way of associating SW descriptors
with individual mbuf segments rather than with whole packets
was adopted as a key requirement for the entire optimisation.

However, only the fast path reap function was amended to fit
the new scheme whilst the corresponding function on the port
stop path was left intact by mistake. This implies incorrect
usage of rte_pktmbuf_free() with regard to separate segments
rather than calling rte_pktmbuf_free_seg() and must be fixed.

Fixes: d321954343c8 ("net/sfc: free mbufs in bulks on EF10 native Tx reap")

Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Andy Moreton <amoreton@solarflare.com>
---
 drivers/net/sfc/sfc_ef10_tx.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Ferruh Yigit Oct. 23, 2017, 6:08 p.m. UTC | #1
On 10/18/2017 2:39 AM, Andrew Rybchenko wrote:
> From: Ivan Malov <ivan.malov@oktetlabs.ru>
> 
> Tx reap mechanism on EF10 native datapath was altered by one
> of the recent patches to introduce performance optimisations
> using the common technique of freeing mbuf segments in bulks.
> 
> From this perspective, the way of associating SW descriptors
> with individual mbuf segments rather than with whole packets
> was adopted as a key requirement for the entire optimisation.
> 
> However, only the fast path reap function was amended to fit
> the new scheme whilst the corresponding function on the port
> stop path was left intact by mistake. This implies incorrect
> usage of rte_pktmbuf_free() with regard to separate segments
> rather than calling rte_pktmbuf_free_seg() and must be fixed.

Good to know you are OK Ivan, I was worried when previous a few
commit logs were not perfectly aligned :)

> 
> Fixes: d321954343c8 ("net/sfc: free mbufs in bulks on EF10 native Tx reap")
> 
> Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru>
> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
> Reviewed-by: Andy Moreton <amoreton@solarflare.com>

Applied to dpdk-next-net/master, thanks.
  

Patch

diff --git a/drivers/net/sfc/sfc_ef10_tx.c b/drivers/net/sfc/sfc_ef10_tx.c
index 9047b3e..167c91d 100644
--- a/drivers/net/sfc/sfc_ef10_tx.c
+++ b/drivers/net/sfc/sfc_ef10_tx.c
@@ -602,7 +602,7 @@  sfc_ef10_tx_qreap(struct sfc_dp_txq *dp_txq)
 
 		txd = &txq->sw_ring[completed & txq->ptr_mask];
 		if (txd->mbuf != NULL) {
-			rte_pktmbuf_free(txd->mbuf);
+			rte_pktmbuf_free_seg(txd->mbuf);
 			txd->mbuf = NULL;
 		}
 	}