• Vladimir Oltean's avatar
    net: mscc: ocelot: report ndo_get_stats64 from the wraparound-resistant ocelot->stats · e780e319
    Vladimir Oltean authored
    Rather than reading the stats64 counters directly from the 32-bit
    hardware, it's better to rely on the output produced by the periodic
    ocelot_port_update_stats().
    
    It would be even better to call ocelot_port_update_stats() right from
    ocelot_get_stats64() to make sure we report the current values rather
    than the ones from 2 seconds ago. But we need to export
    ocelot_port_update_stats() from the switch lib towards the switchdev
    driver for that, and future work will largely undo that.
    
    There are more ocelot-based drivers waiting to be introduced, an example
    of which is the SPI-controlled VSC7512. In that driver's case, it will
    be impossible to call ocelot_port_update_stats() from ndo_get_stats64
    context, since the latter is atomic, and reading the stats over SPI is
    sleepable. So the compromise taken here, which will also hold going
    forward, is to report 64-bit counters to stats64, which are not 100% up
    to date.
    
    Fixes: a556c76a ("net: mscc: Add initial Ocelot switch support")
    Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    e780e319
ocelot_net.c 50 KB