bridge: vlan: learn to count
authorNikolay Aleksandrov <nikolay@cumulusnetworks.com>
Sat, 30 Apr 2016 08:25:28 +0000 (10:25 +0200)
committerDavid S. Miller <davem@davemloft.net>
Tue, 3 May 2016 02:27:06 +0000 (22:27 -0400)
commit6dada9b10a0818ba72c249526a742c8c41274a73
tree99452cd9dc512e297978597c60a3481a0d285421
parent97a47facf3468fb6ebd697324fc2a7245755c417
bridge: vlan: learn to count

Add support for per-VLAN Tx/Rx statistics. Every global vlan context gets
allocated a per-cpu stats which is then set in each per-port vlan context
for quick access. The br_allowed_ingress() common function is used to
account for Rx packets and the br_handle_vlan() common function is used
to account for Tx packets. Stats accounting is performed only if the
bridge-wide vlan_stats_enabled option is set either via sysfs or netlink.
A struct hole between vlan_enabled and vlan_proto is used for the new
option so it is in the same cache line. Currently it is binary (on/off)
but it is intentionally restricted to exactly 0 and 1 since other values
will be used in the future for different purposes (e.g. per-port stats).

Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/uapi/linux/if_link.h
net/bridge/br_netlink.c
net/bridge/br_private.h
net/bridge/br_sysfs_br.c
net/bridge/br_vlan.c