• Eric Dumazet's avatar
    net: add tx_packets/tx_bytes/tx_dropped counters in struct netdev_queue · 7004bf25
    Eric Dumazet authored
    offsetof(struct net_device, features)=0x44
    offsetof(struct net_device, stats.tx_packets)=0x54
    offsetof(struct net_device, stats.tx_bytes)=0x5c
    offsetof(struct net_device, stats.tx_dropped)=0x6c
    
    Network drivers that touch dev->stats.tx_packets/stats.tx_bytes in their
    tx path can slow down SMP operations, since they dirty a cache line
    that should stay shared (dev->features is needed in rx and tx paths)
    
    We could move away stats field in net_device but it wont help that much.
    (Two cache lines dirtied in tx path, we can do one only)
    
    Better solution is to add tx_packets/tx_bytes/tx_dropped in struct
    netdev_queue because this structure is already touched in tx path and
    counters updates will then be free (no increase in size)
    Signed-off-by: default avatarEric Dumazet <dada1@cosmosbay.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    7004bf25
dev.c 135 KB