> On 20 Apr 2016, at 6:43 PM, Roopa Prabhu <ro...@cumulusnetworks.com> wrote: > > From: Roopa Prabhu <ro...@cumulusnetworks.com> > > This patch adds a new RTM_GETSTATS message to query link stats via netlink > from the kernel. RTM_NEWLINK also dumps stats today, but RTM_NEWLINK > returns a lot more than just stats and is expensive in some cases when > frequent polling for stats from userspace is a common operation. > > RTM_GETSTATS is an attempt to provide a light weight netlink message > to explicity query only link stats from the kernel on an interface. > The idea is to also keep it extensible so that new kinds of stats can be > added to it in the future. > > This patch adds the following attribute for NETDEV stats: > struct nla_policy ifla_stats_policy[IFLA_STATS_MAX + 1] = { > [IFLA_STATS_LINK_64] = { .len = sizeof(struct rtnl_link_stats64) }, > }; > > Like any other rtnetlink message, RTM_GETSTATS can be used to get stats of > a single interface or all interfaces with NLM_F_DUMP. > > Future possible new types of stat attributes: > link af stats: > - IFLA_STATS_LINK_IPV6 (nested. for ipv6 stats) > - IFLA_STATS_LINK_MPLS (nested. for mpls/mdev stats) > extended stats: > - IFLA_STATS_LINK_EXTENDED (nested. extended software netdev stats like > bridge, > vlan, vxlan etc) > - IFLA_STATS_LINK_HW_EXTENDED (nested. extended hardware stats which are > available via ethtool today)
I think that it’s better to have IFLA_STATS_LINK_CPU_ONLY attribute. The default stat should be aggregation of HW only packets and packets that got trapped to CPU together. > > This patch also declares a filter mask for all stat attributes. > User has to provide a mask of stats attributes to query. filter mask > can be specified in the new hdr 'struct if_stats_msg' for stats messages. > Other important field in the header is the ifindex. > > This api can also include attributes for global stats (eg tcp) in the future. > When global stats are included in a stats msg, the ifindex in the header > must be zero. A single stats message cannot contain both global and > netdev specific stats. To easily distinguish them, netdev specific stat > attributes name are prefixed with IFLA_STATS_LINK_ > > Without any attributes in the filter_mask, no stats will be returned. > > This patch has been tested with mofified iproute2 ifstat. > > Suggested-by: Jamal Hadi Salim <j...@mojatatu.com> > Signed-off-by: Roopa Prabhu <ro...@cumulusnetworks.com> Nice work! Thank you Roopa!