ndo_xdp_xmit in veth did not update packet counters as described in [1]. Also, current implementation only updates counters on tx side so rx side events like XDP_DROP were not collected. This series implements the missing accounting as well as support for ethtool per-queue stats in veth.
Patch 1: Update drop counter in ndo_xdp_xmit. Patch 2: Update packet and byte counters for all XDP path, and drop counter on XDP_DROP. Patch 3: Support per-queue ethtool stats for XDP counters. Note that counters are maintained on per-queue basis for XDP but not otherwise (per-cpu and atomic as before). This is because 1) tx path in veth is essentially lockless so we cannot update per-queue stats on tx, and 2) rx path is net core routine (process_backlog) which cannot update per-queue based stats when XDP is disabled. On the other hand there are real rxqs and napi handlers for veth XDP, so update per-queue stats on rx for XDP packets, and use them to calculate tx counters as well, contrary to the existing non-XDP counters. [1] https://patchwork.ozlabs.org/cover/953071/#1967449 Signed-off-by: Toshiaki Makita <makita.toshi...@lab.ntt.co.jp> Toshiaki Makita (3): veth: Account for packet drops in ndo_xdp_xmit veth: Account for XDP packet statistics on rx side veth: Add ethtool statistics support for XDP drivers/net/veth.c | 175 ++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 147 insertions(+), 28 deletions(-) -- 1.8.3.1