On Thu, Nov 5, 2020 at 7:18 AM Lance Richardson < lance.richard...@broadcom.com> wrote:
> On Wed, Nov 4, 2020 at 12:03 PM Stephen Hemminger > <step...@networkplumber.org> wrote: > > > > Prefetching only helps performance if it is done several 100 > > instructions before the actual use. The purpose of the prefetch > > is to read ahead, it doesn't help if the next instruction > > will block. > > > > The code in the bnxt driver was doing these unnecessary prefetches. > > > > Signed-off-by: Stephen Hemminger <step...@networkplumber.org> > > --- > > drivers/net/bnxt/bnxt_rxr.c | 4 ---- > > 1 file changed, 4 deletions(-) > > > > diff --git a/drivers/net/bnxt/bnxt_rxr.c b/drivers/net/bnxt/bnxt_rxr.c > > index 2645ed61f402..140d79e0e829 100644 > > --- a/drivers/net/bnxt/bnxt_rxr.c > > +++ b/drivers/net/bnxt/bnxt_rxr.c > > @@ -305,7 +305,6 @@ static inline struct rte_mbuf *bnxt_tpa_end( > > mbuf = tpa_info->mbuf; > > RTE_ASSERT(mbuf != NULL); > > > > - rte_prefetch0(mbuf); > > if (agg_bufs) { > > bnxt_rx_pages(rxq, mbuf, raw_cp_cons, agg_bufs, > tpa_info); > > } > > @@ -733,8 +732,6 @@ static int bnxt_rx_pkt(struct rte_mbuf **rx_pkt, > > if (mbuf == NULL) > > return -EBUSY; > > > > - rte_prefetch0(mbuf); > > - > > mbuf->data_off = RTE_PKTMBUF_HEADROOM; > > mbuf->nb_segs = 1; > > mbuf->next = NULL; > > @@ -867,7 +864,6 @@ uint16_t bnxt_recv_pkts(void *rx_queue, struct > rte_mbuf **rx_pkts, > > /* Handle RX burst request */ > > while (1) { > > cons = RING_CMP(cpr->cp_ring_struct, raw_cons); > > - rte_prefetch0(&cpr->cp_desc_ring[cons]); > > rxcmp = (struct rx_pkt_cmpl *)&cpr->cp_desc_ring[cons]; > > > > if (!CMP_VALID(rxcmp, raw_cons, cpr->cp_ring_struct)) > > -- > > 2.27.0 > > > Acked-by: Lance Richardson <lance.richard...@broadcom.com> > Updated commit log with fixes tag and applied to dpdk-next-net-brcm.