mirror of
https://github.com/torvalds/linux.git
synced 2026-06-05 04:56:13 +02:00
net, vrf: Move dstats structure to core
[ Upstream commit79e0c5be8c] Just move struct pcpu_dstats out of the vrf into the core, and streamline the field names slightly, so they better align with the {t,l}stats ones. No functional change otherwise. A conversion of the u64s to u64_stats_t could be done at a separate point in future. This move is needed as we are moving the {t,l,d}stats allocation/freeing to the core. Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Reviewed-by: Nikolay Aleksandrov <razor@blackwall.org> Cc: Jakub Kicinski <kuba@kernel.org> Cc: David Ahern <dsahern@kernel.org> Link: https://lore.kernel.org/r/20231114004220.6495-2-daniel@iogearbox.net Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org> Stable-dep-of:024ee930cb("bpf: Fix dev's rx stats for bpf_redirect_peer traffic") Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
49036a8886
commit
95f068b0fd
|
|
@ -121,22 +121,12 @@ struct net_vrf {
|
|||
int ifindex;
|
||||
};
|
||||
|
||||
struct pcpu_dstats {
|
||||
u64 tx_pkts;
|
||||
u64 tx_bytes;
|
||||
u64 tx_drps;
|
||||
u64 rx_pkts;
|
||||
u64 rx_bytes;
|
||||
u64 rx_drps;
|
||||
struct u64_stats_sync syncp;
|
||||
};
|
||||
|
||||
static void vrf_rx_stats(struct net_device *dev, int len)
|
||||
{
|
||||
struct pcpu_dstats *dstats = this_cpu_ptr(dev->dstats);
|
||||
|
||||
u64_stats_update_begin(&dstats->syncp);
|
||||
dstats->rx_pkts++;
|
||||
dstats->rx_packets++;
|
||||
dstats->rx_bytes += len;
|
||||
u64_stats_update_end(&dstats->syncp);
|
||||
}
|
||||
|
|
@ -161,10 +151,10 @@ static void vrf_get_stats64(struct net_device *dev,
|
|||
do {
|
||||
start = u64_stats_fetch_begin(&dstats->syncp);
|
||||
tbytes = dstats->tx_bytes;
|
||||
tpkts = dstats->tx_pkts;
|
||||
tdrops = dstats->tx_drps;
|
||||
tpkts = dstats->tx_packets;
|
||||
tdrops = dstats->tx_drops;
|
||||
rbytes = dstats->rx_bytes;
|
||||
rpkts = dstats->rx_pkts;
|
||||
rpkts = dstats->rx_packets;
|
||||
} while (u64_stats_fetch_retry(&dstats->syncp, start));
|
||||
stats->tx_bytes += tbytes;
|
||||
stats->tx_packets += tpkts;
|
||||
|
|
@ -421,7 +411,7 @@ static int vrf_local_xmit(struct sk_buff *skb, struct net_device *dev,
|
|||
if (likely(__netif_rx(skb) == NET_RX_SUCCESS))
|
||||
vrf_rx_stats(dev, len);
|
||||
else
|
||||
this_cpu_inc(dev->dstats->rx_drps);
|
||||
this_cpu_inc(dev->dstats->rx_drops);
|
||||
|
||||
return NETDEV_TX_OK;
|
||||
}
|
||||
|
|
@ -616,11 +606,11 @@ static netdev_tx_t vrf_xmit(struct sk_buff *skb, struct net_device *dev)
|
|||
struct pcpu_dstats *dstats = this_cpu_ptr(dev->dstats);
|
||||
|
||||
u64_stats_update_begin(&dstats->syncp);
|
||||
dstats->tx_pkts++;
|
||||
dstats->tx_packets++;
|
||||
dstats->tx_bytes += len;
|
||||
u64_stats_update_end(&dstats->syncp);
|
||||
} else {
|
||||
this_cpu_inc(dev->dstats->tx_drps);
|
||||
this_cpu_inc(dev->dstats->tx_drops);
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
|
|
|||
|
|
@ -2725,6 +2725,16 @@ struct pcpu_sw_netstats {
|
|||
struct u64_stats_sync syncp;
|
||||
} __aligned(4 * sizeof(u64));
|
||||
|
||||
struct pcpu_dstats {
|
||||
u64 rx_packets;
|
||||
u64 rx_bytes;
|
||||
u64 rx_drops;
|
||||
u64 tx_packets;
|
||||
u64 tx_bytes;
|
||||
u64 tx_drops;
|
||||
struct u64_stats_sync syncp;
|
||||
} __aligned(8 * sizeof(u64));
|
||||
|
||||
struct pcpu_lstats {
|
||||
u64_stats_t packets;
|
||||
u64_stats_t bytes;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user