• Florian Fainelli's avatar
    net: dsa: Provide CPU port statistics to master netdev · badf3ada
    Florian Fainelli authored
    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: default avatarFlorian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    badf3ada
slave.c 30.5 KB