DPDK patches and discussions
 help / color / mirror / Atom feed
* [DPDK/ethdev Bug 1805] Outdated CQE consumer index in rxq_burst_mprq_v()
@ 2025-10-22  2:57 bugzilla
  0 siblings, 0 replies; only message in thread
From: bugzilla @ 2025-10-22  2:57 UTC (permalink / raw)
  To: dev

http://bugs.dpdk.org/show_bug.cgi?id=1805

            Bug ID: 1805
           Summary: Outdated CQE consumer index in rxq_burst_mprq_v()
           Product: DPDK
           Version: 22.11
          Hardware: x86
                OS: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: ethdev
          Assignee: dev@dpdk.org
          Reporter: canary.overflow@gmail.com
  Target Milestone: ---

In function rxq_burst_mprq_v() [drivers/net/mlx5/mlx5_rxtx_vec.c line 470]:

unsigned int cq_idx = rxq->cq_ci & q_mask;
...
cq = &(*rxq->cqes)[cq_idx];
rte_prefetch0(cq);
rte_prefetch0(cq + 1);
rte_prefetch0(cq + 2);
rte_prefetch0(cq + 3);
...
if (rcvd_pkt > 0) {
    rcvd_pkt = RTE_MIN(rcvd_pkt, pkts_n);
    cp_pkt = rxq_copy_mprq_mbuf_v(rxq, pkts, rcvd_pkt); // rxq->cq_ci
incremented here
    rxq->decompressed -= rcvd_pkt;
    pkts += cp_pkt;
}
...
/* Not to overflow pkts array. */
pkts_n = RTE_ALIGN_FLOOR(pkts_n - cp_pkt, MLX5_VPMD_DESCS_PER_LOOP);
/* Not to cross queue end. */
pkts_n = RTE_MIN(pkts_n, elts_n - elts_idx);
pkts_n = RTE_MIN(pkts_n, q_n - cq_idx); // (1) 
...
/* At this point, there shouldn't be any remaining packets. */
MLX5_ASSERT(rxq->decompressed == 0);
/* Process all the CQEs */
nocmp_n = rxq_cq_process_v(rxq, cq, elts, pkts, pkts_n, err, &comp_idx); (2)

The cq pointer may be using an outdated rxq->cq_ci value if rcvd_pkt > 0 and
rxq->cq_ci gets incremented in rxq_copy_mprq_mbuf_v(). This may have the
following issues:
- pkts_n computed in (1) may be more than what it should be
- the cq pointer retrieved using the outdated cq_idx is being passed into
rxq_cq_process_v() again (2).


For the fix, I think the value of cq_idx needs to be updated again after the
processing the decompressed packets and cq pointer be retrieved after.

-- 
You are receiving this mail because:
You are the assignee for the bug.

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2025-10-22  2:57 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-10-22  2:57 [DPDK/ethdev Bug 1805] Outdated CQE consumer index in rxq_burst_mprq_v() bugzilla

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).