OpenCloudOS-Kernel/net/dsa
Florian Fainelli badf3ada60 net: dsa: Provide CPU port statistics to master netdev
This patch overloads the DSA master netdev, aka CPU Ethernet MAC to also
include switch-side statistics, which is useful for debugging purposes,
when the switch is not properly connected to the Ethernet MAC (duplex
mismatch, (RG)MII electrical issues etc.).

We accomplish this by retaining the original copy of the master netdev's
ethtool_ops, and just overload the 3 operations we care about:
get_sset_count, get_strings and get_ethtool_stats so as to intercept
these calls and call into the original master_netdev ethtool_ops, plus
our own.

We take this approach as opposed to providing a set of DSA helper
functions that would retrive the CPU port's statistics, because the
entire purpose of DSA is to allow unmodified Ethernet MAC drivers to be
used as CPU conduit interfaces, therefore, statistics overlay in such
drivers would simply not scale.

The new ethtool -S <iface> output would therefore look like this now:
<iface> statistics
p<2 digits cpu port number>_<switch MIB counter names>

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2016-04-28 17:16:17 -04:00
..
Kconfig net: dsa: make NET_DSA manually selectable from the config 2015-03-20 21:37:58 -04:00
Makefile net: dsa: add Broadcom tag RX/TX handler 2014-08-27 22:59:40 -07:00
dsa.c net: dsa: remove tag_protocol from dsa_switch 2016-04-21 13:43:11 -04:00
dsa_priv.h net: dsa: kill circular reference with slave priv 2016-04-19 20:28:49 -04:00
slave.c net: dsa: Provide CPU port statistics to master netdev 2016-04-28 17:16:17 -04:00
tag_brcm.c net: dsa: Refactor transmit path to eliminate duplication 2015-07-31 15:45:37 -07:00
tag_dsa.c net: dsa: Refactor transmit path to eliminate duplication 2015-07-31 15:45:37 -07:00
tag_edsa.c net: dsa: Refactor transmit path to eliminate duplication 2015-07-31 15:45:37 -07:00
tag_trailer.c net: dsa: Fix Marvell Egress Trailer check 2015-09-22 17:37:03 -07:00