net/qede: prefetch next packet to free
authorBalazs Nemeth <bnemeth@redhat.com>
Fri, 26 Mar 2021 11:01:29 +0000 (12:01 +0100)
committerJerin Jacob <jerinj@marvell.com>
Sat, 27 Mar 2021 14:00:48 +0000 (15:00 +0100)
While handling the current mbuf, pull the next mbuf into the cache. Note
that the last four mbufs pulled into the cache are not handled, but that
doesn't matter.

Signed-off-by: Balazs Nemeth <bnemeth@redhat.com>
Reviewed-by: Igor Russkikh <irusskikh@marvell.com>
drivers/net/qede/qede_rxtx.c

index 4f58abf..ed36171 100644 (file)
@@ -917,6 +917,12 @@ qede_process_tx_compl(__rte_unused struct ecore_dev *edev,
                nb_segs = mbuf->nb_segs;
                remaining -= nb_segs;
 
+               /* Prefetch the next mbuf. Note that at least the last 4 mbufs
+                * that are prefetched will not be used in the current call.
+                */
+               rte_mbuf_prefetch_part1(txq->sw_tx_ring[(idx + 4) & mask]);
+               rte_mbuf_prefetch_part2(txq->sw_tx_ring[(idx + 4) & mask]);
+
                PMD_TX_LOG(DEBUG, txq, "nb_segs to free %u\n", nb_segs);
 
                while (nb_segs) {