On 23/11/2019 01:21, Stephen Hemminger wrote: > On Fri, 22 Nov 2019 18:07:42 -0500 > Vivien Didelot <vivien.didelot@xxxxxxxxx> wrote: > >> This adds rx_bpdu, tx_bpdu, rx_tcn, tx_tcn, transition_blk, >> transition_fwd stat counters to the bridge ports, along with sysfs >> statistics nodes under a "statistics" directory of the "brport" entry, >> providing useful information for STP, for example: >> >> # cat /sys/class/net/lan0/brport/statistics/tx_bpdu >> 26 >> # cat /sys/class/net/lan5/brport/statistics/transition_fwd >> 3 >> >> At the same time, make BRPORT_ATTR define a non-const attribute as >> this is required by the attribute group structure. >> >> Signed-off-by: Vivien Didelot <vivien.didelot@xxxxxxxxx> > > Please don't add more sysfs stuff. put it in netlink. > +1 You should be able to use the bridge xstats netlink infra to expose these. We already support master and slave stats (e.g. vlan and mcast stats are retrieved through it). >> --- >> net/bridge/br_private.h | 8 ++++++++ >> net/bridge/br_stp.c | 8 ++++++++ >> net/bridge/br_stp_bpdu.c | 4 ++++ >> net/bridge/br_sysfs_if.c | 35 ++++++++++++++++++++++++++++++++++- >> 4 files changed, 54 insertions(+), 1 deletion(-) >> >> diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h >> index 36b0367ca1e0..360d8030e3b2 100644 >> --- a/net/bridge/br_private.h >> +++ b/net/bridge/br_private.h >> @@ -283,6 +283,14 @@ struct net_bridge_port { >> #endif >> u16 group_fwd_mask; >> u16 backup_redirected_cnt; >> + >> + /* Statistics */ >> + atomic_long_t rx_bpdu; >> + atomic_long_t tx_bpdu; >> + atomic_long_t rx_tcn; >> + atomic_long_t tx_tcn; >> + atomic_long_t transition_blk; >> + atomic_long_t transition_fwd; >> }; >> > > There is no these need to be atomic. > Atomic is expensive. >