net/sfc: fix Tx reap behaviour on port stop on EF10 datapath
authorIvan Malov <ivan.malov@oktetlabs.ru>
Wed, 18 Oct 2017 09:39:57 +0000 (10:39 +0100)
committerFerruh Yigit <ferruh.yigit@intel.com>
Thu, 26 Oct 2017 00:33:00 +0000 (02:33 +0200)
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

index 9047b3e..167c91d 100644 (file)
@@ -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;
                }
        }