• Jakub Kicinski's avatar
    netdev: add per-queue statistics · ab63a238
    Jakub Kicinski authored
    The ethtool-nl family does a good job exposing various protocol
    related and IEEE/IETF statistics which used to get dumped under
    ethtool -S, with creative names. Queue stats don't have a netlink
    API, yet, and remain a lion's share of ethtool -S output for new
    drivers. Not only is that bad because the names differ driver to
    driver but it's also bug-prone. Intuitively drivers try to report
    only the stats for active queues, but querying ethtool stats
    involves multiple system calls, and the number of stats is
    read separately from the stats themselves. Worse still when user
    space asks for values of the stats, it doesn't inform the kernel
    how big the buffer is. If number of stats increases in the meantime
    kernel will overflow user buffer.
    
    Add a netlink API for dumping queue stats. Queue information is
    exposed via the netdev-genl family, so add the stats there.
    Support per-queue and sum-for-device dumps. Latter will be useful
    when subsequent patches add more interesting common stats than
    just bytes and packets.
    
    The API does not currently distinguish between HW and SW stats.
    The expectation is that the source of the stats will either not
    matter much (good packets) or be obvious (skb alloc errors).
    Acked-by: default avatarStanislav Fomichev <sdf@google.com>
    Reviewed-by: default avatarAmritha Nambiar <amritha.nambiar@intel.com>
    Reviewed-by: default avatarXuan Zhuo <xuanzhuo@linux.alibaba.com>
    Link: https://lore.kernel.org/r/20240306195509.1502746-2-kuba@kernel.orgSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    ab63a238
netdev-genl.c 16.1 KB