]> git.droids-corp.org - dpdk.git/commitdiff
net/cnxk: fix multi-segment extraction in vwqe path
authorNithin Dabilpuram <ndabilpuram@marvell.com>
Sun, 8 May 2022 07:48:37 +0000 (13:18 +0530)
committerJerin Jacob <jerinj@marvell.com>
Tue, 10 May 2022 14:27:13 +0000 (16:27 +0200)
Fix multi-seg extraction in vwqe path to avoid updating mbuf[]
array until it is used via cq0 path.

Fixes: 7fbbc981d54f ("event/cnxk: support vectorized Rx event fast path")
Cc: stable@dpdk.org
Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Acked-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
drivers/net/cnxk/cn10k_rx.h

index 00bec0105525675ce8b4d14aeaed789d0601bc9e..5ecb20f038293676b66d9309ab546e19c59759ef 100644 (file)
@@ -1673,10 +1673,6 @@ cn10k_nix_recv_pkts_vector(void *args, struct rte_mbuf **mbufs, uint16_t pkts,
                vst1q_u64((uint64_t *)mbuf2->rearm_data, rearm2);
                vst1q_u64((uint64_t *)mbuf3->rearm_data, rearm3);
 
-               /* Store the mbufs to rx_pkts */
-               vst1q_u64((uint64_t *)&mbufs[packets], mbuf01);
-               vst1q_u64((uint64_t *)&mbufs[packets + 2], mbuf23);
-
                if (flags & NIX_RX_MULTI_SEG_F) {
                        /* Multi segment is enable build mseg list for
                         * individual mbufs in scalar mode.
@@ -1695,6 +1691,10 @@ cn10k_nix_recv_pkts_vector(void *args, struct rte_mbuf **mbufs, uint16_t pkts,
                                            mbuf3, mbuf_initializer, flags);
                }
 
+               /* Store the mbufs to rx_pkts */
+               vst1q_u64((uint64_t *)&mbufs[packets], mbuf01);
+               vst1q_u64((uint64_t *)&mbufs[packets + 2], mbuf23);
+
                /* Mark mempool obj as "get" as it is alloc'ed by NIX */
                RTE_MEMPOOL_CHECK_COOKIES(mbuf0->pool, (void **)&mbuf0, 1, 1);
                RTE_MEMPOOL_CHECK_COOKIES(mbuf1->pool, (void **)&mbuf1, 1, 1);