On 1/30/19 10:44 AM, Jakub Kicinski wrote: > On Tue, 29 Jan 2019 21:18:28 -0700, David Ahern wrote: >> On 1/28/19 4:44 PM, Jakub Kicinski wrote: >>> @@ -4946,6 +4964,9 @@ static size_t if_nlmsg_stats_size(const struct >>> net_device *dev, >>> rcu_read_unlock(); >>> } >>> >>> + if (stats_attr_valid(filter_mask, IFLA_STATS_LINK_HSTATS, 0)) >> >> filter_mask is populated by RTEXT_FILTER_ from >> include/uapi/linux/rtnetlink.h > > ext_filter_mask is from IFLA_EXT_MASK and has RTEXT_FILTER_ bits set. > Here the mask is from struct if_stats_msg::filter_mask of RTM_GETSTATS. > Am I missing the point? :S
nm. I confused the two filter_mask's. > >>> + size += rtnl_get_link_hstats_size(dev); >> >> rtnl_get_link_hstats_size == __rtnl_get_link_hstats can return < 0. > > Ups! Thank you! > > In general how much do you dislike this code? :) > Not having spent much time on the stats details it is hard to follow - i.e, requires a fair bit of time iterative over the core patches.