• Jisheng Zhang's avatar
    net: stmmac: use per-queue 64 bit statistics where necessary · 133466c3
    Jisheng Zhang authored
    Currently, there are two major issues with stmmac driver statistics
    First of all, statistics in stmmac_extra_stats, stmmac_rxq_stats
    and stmmac_txq_stats are 32 bit variables on 32 bit platforms. This
    can cause some stats to overflow after several minutes of
    high traffic, for example rx_pkt_n, tx_pkt_n and so on.
    
    Secondly, if HW supports multiqueues, there are frequent cacheline
    ping pongs on some driver statistic vars, for example, normal_irq_n,
    tx_pkt_n and so on. What's more, frequent cacheline ping pongs on
    normal_irq_n happens in ISR, this makes the situation worse.
    
    To improve the driver, we convert those statistics to 64 bit, implement
    ndo_get_stats64 and update .get_ethtool_stats implementation
    accordingly. We also use per-queue statistics where necessary to remove
    the cacheline ping pongs as much as possible to make multiqueue
    operations faster. Those statistics which are not possible to overflow
    and not frequently updated are kept as is.
    Signed-off-by: default avatarJisheng Zhang <jszhang@kernel.org>
    Link: https://lore.kernel.org/r/20230717160630.1892-3-jszhang@kernel.orgSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    133466c3
stmmac.h 9.83 KB