• Vladimir Oltean's avatar
    net: mscc: ocelot: add support for all sorts of standardized counters present in DSA · e32036e1
    Vladimir Oltean authored
    DSA is integrated with the new standardized ethtool -S --groups option,
    but the felix driver only exports unstructured statistics.
    
    Reuse the array of 64-bit statistics collected by ocelot_check_stats_work(),
    but just export select values from it.
    
    Since ocelot_check_stats_work() runs periodically to avoid 32-bit
    overflow, and the ethtool calling context is sleepable, we update the
    64-bit stats one more time, to provide up-to-date values. The locking
    scheme with a mutex followed by a spinlock is a bit hard to digest, so
    we create and use a ocelot_port_stats_run() helper with a callback that
    populates the ethool stats group the caller is interested in.
    
    The exported stats are:
    ethtool -S swp0 --groups eth-phy
    ethtool -S swp0 --groups eth-mac
    ethtool -S swp0 --groups eth-ctrl
    ethtool -S swp0 --groups rmon
    ethtool --include-statistics --show-pause swp0
    Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    e32036e1
felix.c 53.3 KB