diff options
author | Jakub Kicinski <kuba@kernel.org> | 2025-02-06 15:18:14 -0800 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2025-02-06 15:19:00 -0800 |
commit | ba6ec09911b805778a2fed6d626bfe77b011a717 (patch) | |
tree | 051fa81966585531550c9cae3e638f87e9f281ea /net/core/dev.c | |
parent | 0bdcfaf84a9428c49f971be9024505b9e3b43038 (diff) | |
parent | 3cf0a98fea776adb09087e521fe150c295a4b031 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Cross-merge networking fixes after downstream PR (net-6.14-rc2).
No conflicts or adjacent changes.
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'net/core/dev.c')
-rw-r--r-- | net/core/dev.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index c41d1e1cbf62..520906e285eb 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -11293,6 +11293,20 @@ struct rtnl_link_stats64 *dev_get_stats(struct net_device *dev, const struct net_device_ops *ops = dev->netdev_ops; const struct net_device_core_stats __percpu *p; + /* + * IPv{4,6} and udp tunnels share common stat helpers and use + * different stat type (NETDEV_PCPU_STAT_TSTATS vs + * NETDEV_PCPU_STAT_DSTATS). Ensure the accounting is consistent. + */ + BUILD_BUG_ON(offsetof(struct pcpu_sw_netstats, rx_bytes) != + offsetof(struct pcpu_dstats, rx_bytes)); + BUILD_BUG_ON(offsetof(struct pcpu_sw_netstats, rx_packets) != + offsetof(struct pcpu_dstats, rx_packets)); + BUILD_BUG_ON(offsetof(struct pcpu_sw_netstats, tx_bytes) != + offsetof(struct pcpu_dstats, tx_bytes)); + BUILD_BUG_ON(offsetof(struct pcpu_sw_netstats, tx_packets) != + offsetof(struct pcpu_dstats, tx_packets)); + if (ops->ndo_get_stats64) { memset(storage, 0, sizeof(*storage)); ops->ndo_get_stats64(dev, storage); |