Message ID | c5b5d0485016836448453f12846c7c4ab75b094a.1700593593.git.lorenzo@kernel.org (mailing list archive) |
---|---|
State | Accepted |
Commit | 818ad9cc90d4a7165caaee7e32800c50d0564ec3 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net] net: veth: fix ethtool stats reporting | expand |
Hello: This patch was applied to netdev/net.git (main) by Paolo Abeni <pabeni@redhat.com>: On Tue, 21 Nov 2023 20:08:44 +0100 you wrote: > Fix a possible misalignment between page_pool stats and tx xdp_stats > reported in veth_get_ethtool_stats routine. > The issue can be reproduced configuring the veth pair with the > following tx/rx queues: > > $ip link add v0 numtxqueues 2 numrxqueues 4 type veth peer name v1 \ > numtxqueues 1 numrxqueues 1 > > [...] Here is the summary with links: - [net] net: veth: fix ethtool stats reporting https://git.kernel.org/netdev/net/c/818ad9cc90d4 You are awesome, thank you!
diff --git a/drivers/net/veth.c b/drivers/net/veth.c index 9980517ed8b0..8607eb8cf458 100644 --- a/drivers/net/veth.c +++ b/drivers/net/veth.c @@ -236,8 +236,8 @@ static void veth_get_ethtool_stats(struct net_device *dev, data[tx_idx + j] += *(u64 *)(base + offset); } } while (u64_stats_fetch_retry(&rq_stats->syncp, start)); - pp_idx = tx_idx + VETH_TQ_STATS_LEN; } + pp_idx = idx + dev->real_num_tx_queues * VETH_TQ_STATS_LEN; page_pool_stats: veth_get_page_pool_stats(dev, &data[pp_idx]);
Fix a possible misalignment between page_pool stats and tx xdp_stats reported in veth_get_ethtool_stats routine. The issue can be reproduced configuring the veth pair with the following tx/rx queues: $ip link add v0 numtxqueues 2 numrxqueues 4 type veth peer name v1 \ numtxqueues 1 numrxqueues 1 and loading a simple XDP program on v0 that just returns XDP_PASS. In this case on v0 the page_pool stats overwrites tx xdp_stats for queue 1. Fix the issue incrementing pp_idx of dev->real_num_tx_queues * VETH_TQ_STATS_LEN since we always report xdp_stats for all tx queues in ethtool. Fixes: 4fc418053ec7 ("net: veth: add page_pool stats") Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> --- drivers/net/veth.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)