Commit 281cc284 authored by Heiner Kallweit's avatar Heiner Kallweit Committed by Jakub Kicinski

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: default avatarHeiner Kallweit <hkallweit1@gmail.com>
Link: https://lore.kernel.org/r/04d25c3d-c5f6-3611-6d37-c2f40243dae2@gmail.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 280bb3f9
...@@ -1724,7 +1724,7 @@ static int br_fill_linkxstats(struct sk_buff *skb, ...@@ -1724,7 +1724,7 @@ static int br_fill_linkxstats(struct sk_buff *skb,
pvid = br_get_pvid(vg); pvid = br_get_pvid(vg);
list_for_each_entry(v, &vg->vlan_list, vlist) { list_for_each_entry(v, &vg->vlan_list, vlist) {
struct bridge_vlan_xstats vxi; struct bridge_vlan_xstats vxi;
struct br_vlan_stats stats; struct pcpu_sw_netstats stats;
if (++vl_idx < *prividx) if (++vl_idx < *prividx)
continue; continue;
......
...@@ -89,14 +89,6 @@ struct bridge_mcast_stats { ...@@ -89,14 +89,6 @@ struct bridge_mcast_stats {
}; };
#endif #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 { struct br_tunnel_info {
__be64 tunnel_id; __be64 tunnel_id;
struct metadata_dst *tunnel_dst; struct metadata_dst *tunnel_dst;
...@@ -137,7 +129,7 @@ struct net_bridge_vlan { ...@@ -137,7 +129,7 @@ struct net_bridge_vlan {
u16 flags; u16 flags;
u16 priv_flags; u16 priv_flags;
u8 state; u8 state;
struct br_vlan_stats __percpu *stats; struct pcpu_sw_netstats __percpu *stats;
union { union {
struct net_bridge *br; struct net_bridge *br;
struct net_bridge_port *port; struct net_bridge_port *port;
...@@ -1093,7 +1085,7 @@ void nbp_vlan_flush(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_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); 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, 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); 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, int br_vlan_bridge_event(struct net_device *dev, unsigned long event,
void *ptr); void *ptr);
...@@ -1289,7 +1281,7 @@ static inline struct net_bridge_vlan_group *nbp_vlan_group_rcu( ...@@ -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, 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, ...@@ -270,7 +270,8 @@ static int __vlan_add(struct net_bridge_vlan *v, u16 flags,
goto out_filt; goto out_filt;
v->brvlan = masterv; v->brvlan = masterv;
if (br_opt_get(br, BROPT_VLAN_STATS_PER_PORT)) { 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) { if (!v->stats) {
err = -ENOMEM; err = -ENOMEM;
goto out_filt; goto out_filt;
...@@ -421,7 +422,7 @@ struct sk_buff *br_handle_vlan(struct net_bridge *br, ...@@ -421,7 +422,7 @@ struct sk_buff *br_handle_vlan(struct net_bridge *br,
struct net_bridge_vlan_group *vg, struct net_bridge_vlan_group *vg,
struct sk_buff *skb) struct sk_buff *skb)
{ {
struct br_vlan_stats *stats; struct pcpu_sw_netstats *stats;
struct net_bridge_vlan *v; struct net_bridge_vlan *v;
u16 vid; u16 vid;
...@@ -474,7 +475,7 @@ static bool __allowed_ingress(const struct net_bridge *br, ...@@ -474,7 +475,7 @@ static bool __allowed_ingress(const struct net_bridge *br,
struct sk_buff *skb, u16 *vid, struct sk_buff *skb, u16 *vid,
u8 *state) u8 *state)
{ {
struct br_vlan_stats *stats; struct pcpu_sw_netstats *stats;
struct net_bridge_vlan *v; struct net_bridge_vlan *v;
bool tagged; bool tagged;
...@@ -708,7 +709,7 @@ int br_vlan_add(struct net_bridge *br, u16 vid, u16 flags, bool *changed, ...@@ -708,7 +709,7 @@ int br_vlan_add(struct net_bridge *br, u16 vid, u16 flags, bool *changed,
if (!vlan) if (!vlan)
return -ENOMEM; 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) { if (!vlan->stats) {
kfree(vlan); kfree(vlan);
return -ENOMEM; return -ENOMEM;
...@@ -1262,14 +1263,14 @@ void nbp_vlan_flush(struct net_bridge_port *port) ...@@ -1262,14 +1263,14 @@ void nbp_vlan_flush(struct net_bridge_port *port)
} }
void br_vlan_get_stats(const struct net_bridge_vlan *v, void br_vlan_get_stats(const struct net_bridge_vlan *v,
struct br_vlan_stats *stats) struct pcpu_sw_netstats *stats)
{ {
int i; int i;
memset(stats, 0, sizeof(*stats)); memset(stats, 0, sizeof(*stats));
for_each_possible_cpu(i) { for_each_possible_cpu(i) {
u64 rxpackets, rxbytes, txpackets, txbytes; u64 rxpackets, rxbytes, txpackets, txbytes;
struct br_vlan_stats *cpu_stats; struct pcpu_sw_netstats *cpu_stats;
unsigned int start; unsigned int start;
cpu_stats = per_cpu_ptr(v->stats, i); 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) ...@@ -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, static bool br_vlan_stats_fill(struct sk_buff *skb,
const struct net_bridge_vlan *v) const struct net_bridge_vlan *v)
{ {
struct br_vlan_stats stats; struct pcpu_sw_netstats stats;
struct nlattr *nest; struct nlattr *nest;
nest = nla_nest_start(skb, BRIDGE_VLANDB_ENTRY_STATS); nest = nla_nest_start(skb, BRIDGE_VLANDB_ENTRY_STATS);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment