mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-07 13:53:24 +00:00
net: bridge: replace struct br_vlan_stats with pcpu_sw_netstats
Struct br_vlan_stats duplicates pcpu_sw_netstats (apart from br_vlan_stats not defining an alignment requirement), therefore switch to using the latter one. Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> Link: https://lore.kernel.org/r/04d25c3d-c5f6-3611-6d37-c2f40243dae2@gmail.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
280bb3f98b
commit
281cc2843b
@ -1724,7 +1724,7 @@ static int br_fill_linkxstats(struct sk_buff *skb,
|
||||
pvid = br_get_pvid(vg);
|
||||
list_for_each_entry(v, &vg->vlan_list, vlist) {
|
||||
struct bridge_vlan_xstats vxi;
|
||||
struct br_vlan_stats stats;
|
||||
struct pcpu_sw_netstats stats;
|
||||
|
||||
if (++vl_idx < *prividx)
|
||||
continue;
|
||||
|
@ -89,14 +89,6 @@ struct bridge_mcast_stats {
|
||||
};
|
||||
#endif
|
||||
|
||||
struct br_vlan_stats {
|
||||
u64 rx_bytes;
|
||||
u64 rx_packets;
|
||||
u64 tx_bytes;
|
||||
u64 tx_packets;
|
||||
struct u64_stats_sync syncp;
|
||||
};
|
||||
|
||||
struct br_tunnel_info {
|
||||
__be64 tunnel_id;
|
||||
struct metadata_dst *tunnel_dst;
|
||||
@ -137,7 +129,7 @@ struct net_bridge_vlan {
|
||||
u16 flags;
|
||||
u16 priv_flags;
|
||||
u8 state;
|
||||
struct br_vlan_stats __percpu *stats;
|
||||
struct pcpu_sw_netstats __percpu *stats;
|
||||
union {
|
||||
struct net_bridge *br;
|
||||
struct net_bridge_port *port;
|
||||
@ -1093,7 +1085,7 @@ void nbp_vlan_flush(struct net_bridge_port *port);
|
||||
int nbp_vlan_init(struct net_bridge_port *port, struct netlink_ext_ack *extack);
|
||||
int nbp_get_num_vlan_infos(struct net_bridge_port *p, u32 filter_mask);
|
||||
void br_vlan_get_stats(const struct net_bridge_vlan *v,
|
||||
struct br_vlan_stats *stats);
|
||||
struct pcpu_sw_netstats *stats);
|
||||
void br_vlan_port_event(struct net_bridge_port *p, unsigned long event);
|
||||
int br_vlan_bridge_event(struct net_device *dev, unsigned long event,
|
||||
void *ptr);
|
||||
@ -1289,7 +1281,7 @@ static inline struct net_bridge_vlan_group *nbp_vlan_group_rcu(
|
||||
}
|
||||
|
||||
static inline void br_vlan_get_stats(const struct net_bridge_vlan *v,
|
||||
struct br_vlan_stats *stats)
|
||||
struct pcpu_sw_netstats *stats)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -270,7 +270,8 @@ static int __vlan_add(struct net_bridge_vlan *v, u16 flags,
|
||||
goto out_filt;
|
||||
v->brvlan = masterv;
|
||||
if (br_opt_get(br, BROPT_VLAN_STATS_PER_PORT)) {
|
||||
v->stats = netdev_alloc_pcpu_stats(struct br_vlan_stats);
|
||||
v->stats =
|
||||
netdev_alloc_pcpu_stats(struct pcpu_sw_netstats);
|
||||
if (!v->stats) {
|
||||
err = -ENOMEM;
|
||||
goto out_filt;
|
||||
@ -421,7 +422,7 @@ struct sk_buff *br_handle_vlan(struct net_bridge *br,
|
||||
struct net_bridge_vlan_group *vg,
|
||||
struct sk_buff *skb)
|
||||
{
|
||||
struct br_vlan_stats *stats;
|
||||
struct pcpu_sw_netstats *stats;
|
||||
struct net_bridge_vlan *v;
|
||||
u16 vid;
|
||||
|
||||
@ -474,7 +475,7 @@ static bool __allowed_ingress(const struct net_bridge *br,
|
||||
struct sk_buff *skb, u16 *vid,
|
||||
u8 *state)
|
||||
{
|
||||
struct br_vlan_stats *stats;
|
||||
struct pcpu_sw_netstats *stats;
|
||||
struct net_bridge_vlan *v;
|
||||
bool tagged;
|
||||
|
||||
@ -708,7 +709,7 @@ int br_vlan_add(struct net_bridge *br, u16 vid, u16 flags, bool *changed,
|
||||
if (!vlan)
|
||||
return -ENOMEM;
|
||||
|
||||
vlan->stats = netdev_alloc_pcpu_stats(struct br_vlan_stats);
|
||||
vlan->stats = netdev_alloc_pcpu_stats(struct pcpu_sw_netstats);
|
||||
if (!vlan->stats) {
|
||||
kfree(vlan);
|
||||
return -ENOMEM;
|
||||
@ -1262,14 +1263,14 @@ void nbp_vlan_flush(struct net_bridge_port *port)
|
||||
}
|
||||
|
||||
void br_vlan_get_stats(const struct net_bridge_vlan *v,
|
||||
struct br_vlan_stats *stats)
|
||||
struct pcpu_sw_netstats *stats)
|
||||
{
|
||||
int i;
|
||||
|
||||
memset(stats, 0, sizeof(*stats));
|
||||
for_each_possible_cpu(i) {
|
||||
u64 rxpackets, rxbytes, txpackets, txbytes;
|
||||
struct br_vlan_stats *cpu_stats;
|
||||
struct pcpu_sw_netstats *cpu_stats;
|
||||
unsigned int start;
|
||||
|
||||
cpu_stats = per_cpu_ptr(v->stats, i);
|
||||
@ -1585,7 +1586,7 @@ void br_vlan_port_event(struct net_bridge_port *p, unsigned long event)
|
||||
static bool br_vlan_stats_fill(struct sk_buff *skb,
|
||||
const struct net_bridge_vlan *v)
|
||||
{
|
||||
struct br_vlan_stats stats;
|
||||
struct pcpu_sw_netstats stats;
|
||||
struct nlattr *nest;
|
||||
|
||||
nest = nla_nest_start(skb, BRIDGE_VLANDB_ENTRY_STATS);
|
||||
|
Loading…
Reference in New Issue
Block a user