Bug ID 1604
Summary Issues with packet capture counting in dpdk-dumpcap
Product DPDK
Version 23.11
Hardware All
OS All
Status UNCONFIRMED
Severity normal
Priority Normal
Component other
Assignee dev@dpdk.org
Reporter junwang01@cestc.cn
Target Milestone ---

Is the final count returned during packet capture with DPDK Dumpcap a
cumulative value, and could there be any issues with it?

[root@dpdk04 /]# /dpdk/app/dpdk-dumpcap -i 0000:1b:00.0
File: /tmp/dpdk-dumpcap_0_0000:1b:00.0_20241217074027.pcapng
Capturing on '0000:1b:00.0'
Packets captured: 20 ^C
Packets received/dropped on interface '0000:1b:00.0': 20/0 (100.0)

[root@dpdk04 /]# /dpdk/app/dpdk-dumpcap -i 0000:1b:00.0
File: /tmp/dpdk-dumpcap_0_0000:1b:00.0_20241217074045.pcapng
Capturing on '0000:1b:00.0'
Packets captured: 13 ^C
Packets received/dropped on interface '0000:1b:00.0': 33/0 (100.0)

[root@dpdk04 /]# /dpdk/app/dpdk-dumpcap -i 0000:1b:00.0
File: /tmp/dpdk-dumpcap_0_0000:1b:00.0_20241217074055.pcapng
Capturing on '0000:1b:00.0'
Packets captured: 40 ^C
Packets received/dropped on interface '0000:1b:00.0': 73/0 (100.0)

I noticed that the final statistics of dpdk-dumpcap for packet capture show
that received is a cumulative value. Wouldn't it be more appropriate to have
the correct value for each execution instead? After analyzing the code, I
confirmed that this cumulative design applies to both received and dropped
statistics.

static void
pdump_sum_stats(uint16_t port, uint16_t nq,
                struct rte_pdump_stats
stats[RTE_MAX_ETHPORTS][RTE_MAX_QUEUES_PER_PORT],
                struct rte_pdump_stats *total)
{
        uint64_t *sum = (uint64_t *)total;
        unsigned int i;
        uint64_t val;
        uint16_t qid;

        for (qid = 0; qid < nq; qid++) {
                const RTE_ATOMIC(uint64_t) *perq = (const uint64_t __rte_atomic
*)&stats[port][qid];

                for (i = 0; i < sizeof(*total) / sizeof(uint64_t); i++) {
                        val = rte_atomic_load_explicit(&perq[i],
rte_memory_order_relaxed);
                        sum[i] += val;
                }
        }
}
          


You are receiving this mail because: