net/octeontx2: fix CQE ring prefetch on wrap around
authorKommula Shiva Shankar <kshankar@marvell.com>
Fri, 13 Sep 2019 15:31:12 +0000 (21:01 +0530)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 8 Oct 2019 10:14:31 +0000 (12:14 +0200)
When computing the head of CQE ring of prefetch, use qmask to point to
the correct head index on wrap around case.

Fixes: cc4d7693f2d9 ("net/octeontx2: support Rx")
Cc: stable@dpdk.org
Signed-off-by: Kommula Shiva Shankar <kshankar@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
drivers/net/octeontx2/otx2_rx.c

index 701efc8..48565db 100644 (file)
@@ -61,7 +61,8 @@ nix_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
 
        while (packets < nb_pkts) {
                /* Prefetch N desc ahead */
-               rte_prefetch_non_temporal((void *)(desc + (CQE_SZ(head + 2))));
+               rte_prefetch_non_temporal((void *)(desc +
+                                       (CQE_SZ((head + 2) & qmask))));
                cq = (struct nix_cqe_hdr_s *)(desc + CQE_SZ(head));
 
                mbuf = nix_get_mbuf_from_cqe(cq, data_off);