lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [day] [month] [year] [list]
Date:   Fri, 26 Nov 2021 05:00:41 +0800
From:   kernel test robot <lkp@...el.com>
To:     Petr Machata <petrm@...dia.com>
Cc:     kbuild-all@...ts.01.org, linux-kernel@...r.kernel.org
Subject: [jpirko-mlxsw:petrm_soft_counters 8/8] net/core/rtnetlink.c:5033:53:
 error: 'info' undeclared

tree:   https://github.com/jpirko/linux_mlxsw petrm_soft_counters
head:   59d158395664dab1c1164364d6ee57aaaad44b96
commit: 59d158395664dab1c1164364d6ee57aaaad44b96 [8/8] wip
config: um-i386_defconfig (https://download.01.org/0day-ci/archive/20211126/202111260416.BVNDGLfL-lkp@intel.com/config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build):
        # https://github.com/jpirko/linux_mlxsw/commit/59d158395664dab1c1164364d6ee57aaaad44b96
        git remote add jpirko-mlxsw https://github.com/jpirko/linux_mlxsw
        git fetch --no-tags jpirko-mlxsw petrm_soft_counters
        git checkout 59d158395664dab1c1164364d6ee57aaaad44b96
        # save the config file to linux build tree
        mkdir build_dir
        make W=1 O=build_dir ARCH=um SUBARCH=i386 SHELL=/bin/bash

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@...el.com>

All errors (new ones prefixed by >>):

   net/core/rtnetlink.c: In function 'rtnl_offload_xstats_have_ndo':
>> net/core/rtnetlink.c:5033:53: error: 'info' undeclared (first use in this function)
    5033 |         dev->netdev_ops->ndo_has_offload_stats(dev, info->attr_id);
         |                                                     ^~~~
   net/core/rtnetlink.c:5033:53: note: each undeclared identifier is reported only once for each function it appears in
   net/core/rtnetlink.c: At top level:
   net/core/rtnetlink.c:5073:53: warning: 'struct rtnl_offload_xstats_info' declared inside parameter list will not be visible outside of this definition or declaration
    5073 | rtnl_offload_xstats_get_size_hw_s_info(const struct rtnl_offload_xstats_info *info,
         |                                                     ^~~~~~~~~~~~~~~~~~~~~~~~
   net/core/rtnetlink.c: In function 'rtnl_offload_xstats_get_size_hw_s_info':
>> net/core/rtnetlink.c:5076:17: error: implicit declaration of function 'netdev_offload_xstats_enabled'; did you mean 'netdev_offload_xstats_report_delta'? [-Werror=implicit-function-declaration]
    5076 |  bool enabled = netdev_offload_xstats_enabled(dev);
         |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         |                 netdev_offload_xstats_report_delta
>> net/core/rtnetlink.c:5082:5: error: expected ';' before '}' token
    5082 |   0)
         |     ^
         |     ;
    5083 | }
         | ~    
   net/core/rtnetlink.c: In function 'rtnl_offload_xstats_fill_hw_s_info':
   net/core/rtnetlink.c:5099:6: warning: unused variable 'err' [-Wunused-variable]
    5099 |  int err;
         |      ^~~
   net/core/rtnetlink.c: At top level:
   net/core/rtnetlink.c:5122:52: warning: 'struct rtnl_offload_xstats_info' declared inside parameter list will not be visible outside of this definition or declaration
    5122 | rtnl_offload_xstats_get_size_sw_stats(const struct rtnl_offload_xstats_info *info,
         |                                                    ^~~~~~~~~~~~~~~~~~~~~~~~
   net/core/rtnetlink.c: In function 'rtnl_offload_xstats_fill_sw_stats':
   net/core/rtnetlink.c:5133:1: error: no return statement in function returning non-void [-Werror=return-type]
    5133 | }
         | ^
   net/core/rtnetlink.c: In function 'rtnl_get_offload_stats_size':
>> net/core/rtnetlink.c:5156:49: error: passing argument 1 of 'rtnl_offload_xstats_get_size_hw_s_info' from incompatible pointer type [-Werror=incompatible-pointer-types]
    5156 |   size = rtnl_offload_xstats_get_size_hw_s_info(dev);
         |                                                 ^~~
         |                                                 |
         |                                                 const struct net_device *
   net/core/rtnetlink.c:5073:79: note: expected 'const struct rtnl_offload_xstats_info *' but argument is of type 'const struct net_device *'
    5073 | rtnl_offload_xstats_get_size_hw_s_info(const struct rtnl_offload_xstats_info *info,
         |                                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
>> net/core/rtnetlink.c:5156:10: error: too few arguments to function 'rtnl_offload_xstats_get_size_hw_s_info'
    5156 |   size = rtnl_offload_xstats_get_size_hw_s_info(dev);
         |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/core/rtnetlink.c:5073:1: note: declared here
    5073 | rtnl_offload_xstats_get_size_hw_s_info(const struct rtnl_offload_xstats_info *info,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> net/core/rtnetlink.c:5162:48: error: passing argument 1 of 'rtnl_offload_xstats_get_size_sw_stats' from incompatible pointer type [-Werror=incompatible-pointer-types]
    5162 |   size = rtnl_offload_xstats_get_size_sw_stats(dev);
         |                                                ^~~
         |                                                |
         |                                                const struct net_device *
   net/core/rtnetlink.c:5122:78: note: expected 'const struct rtnl_offload_xstats_info *' but argument is of type 'const struct net_device *'
    5122 | rtnl_offload_xstats_get_size_sw_stats(const struct rtnl_offload_xstats_info *info,
         |                                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
>> net/core/rtnetlink.c:5162:10: error: too few arguments to function 'rtnl_offload_xstats_get_size_sw_stats'
    5162 |   size = rtnl_offload_xstats_get_size_sw_stats(dev);
         |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/core/rtnetlink.c:5122:1: note: declared here
    5122 | rtnl_offload_xstats_get_size_sw_stats(const struct rtnl_offload_xstats_info *info,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/core/rtnetlink.c: In function 'rtnl_fill_offload_stats':
>> net/core/rtnetlink.c:5206:51: error: 'size' undeclared (first use in this function); did you mean 'ksize'?
    5206 |   attr = nla_reserve_64bit(skb, attr_id_hw_stats, size,
         |                                                   ^~~~
         |                                                   ksize
   net/core/rtnetlink.c:5184:6: warning: unused variable 'i' [-Wunused-variable]
    5184 |  int i;
         |      ^
   In file included from include/net/rtnetlink.h:6,
                    from include/net/sch_generic.h:20,
                    from include/linux/filter.h:25,
                    from include/net/sock.h:59,
                    from include/net/inet_sock.h:22,
                    from include/net/ip.h:28,
                    from net/core/rtnetlink.c:45:
   net/core/rtnetlink.c: At top level:
>> net/core/rtnetlink.c:5535:28: error: 'IFLA_HW_STATS_IMMEDIATE' undeclared here (not in a function); did you mean 'TCA_ACT_HW_STATS_IMMEDIATE'?
    5535 | #define IFLA_HW_STATS_ANY (IFLA_HW_STATS_IMMEDIATE)
         |                            ^~~~~~~~~~~~~~~~~~~~~~~
   include/net/netlink.h:365:48: note: in definition of macro 'NLA_POLICY_BITFIELD32'
     365 |  { .type = NLA_BITFIELD32, .bitfield32_valid = valid }
         |                                                ^~~~~
   net/core/rtnetlink.c:5539:25: note: in expansion of macro 'IFLA_HW_STATS_ANY'
    5539 |   NLA_POLICY_BITFIELD32(IFLA_HW_STATS_ANY),
         |                         ^~~~~~~~~~~~~~~~~
   net/core/rtnetlink.c: In function 'rtnl_offload_xstats_have_ndo':
   net/core/rtnetlink.c:5034:1: error: control reaches end of non-void function [-Werror=return-type]
    5034 | }
         | ^
   cc1: some warnings being treated as errors


vim +/info +5033 net/core/rtnetlink.c

e8872a25a05efcf Nikolay Aleksandrov 2016-04-30  5026  
59d158395664dab Petr Machata        2021-11-25  5027  static bool
59d158395664dab Petr Machata        2021-11-25  5028  rtnl_offload_xstats_have_ndo(const struct net_device *dev, int attr_id)
a8a72b09197b260 Petr Machata        2021-10-22  5029  {
59d158395664dab Petr Machata        2021-11-25  5030  	return dev->netdev_ops &&
a8a72b09197b260 Petr Machata        2021-10-22  5031  	       dev->netdev_ops->ndo_has_offload_stats &&
a8a72b09197b260 Petr Machata        2021-10-22  5032  	       dev->netdev_ops->ndo_get_offload_stats &&
7f3ca7ed5c4b775 Petr Machata        2021-11-03 @5033  	       dev->netdev_ops->ndo_has_offload_stats(dev, info->attr_id);
59d158395664dab Petr Machata        2021-11-25  5034  }
d35d00a6d28ff7a Petr Machata        2021-11-12  5035  
59d158395664dab Petr Machata        2021-11-25  5036  static unsigned int
59d158395664dab Petr Machata        2021-11-25  5037  rtnl_offload_xstats_get_size_ndo(const struct net_device *dev, int attr_id)
59d158395664dab Petr Machata        2021-11-25  5038  {
59d158395664dab Petr Machata        2021-11-25  5039  	return rtnl_offload_xstats_have_ndo(dev, attr_id) ?
59d158395664dab Petr Machata        2021-11-25  5040  	       sizeof(struct rtnl_link_stats64) : 0;
a8a72b09197b260 Petr Machata        2021-10-22  5041  }
a8a72b09197b260 Petr Machata        2021-10-22  5042  
a8a72b09197b260 Petr Machata        2021-10-22  5043  static int
59d158395664dab Petr Machata        2021-11-25  5044  rtnl_offload_xstats_fill_ndo(struct net_device *dev, int attr_id,
59d158395664dab Petr Machata        2021-11-25  5045  			     struct sk_buff *skb,
7f3ca7ed5c4b775 Petr Machata        2021-11-03  5046  			     struct netlink_ext_ack *extack)
a8a72b09197b260 Petr Machata        2021-10-22  5047  {
59d158395664dab Petr Machata        2021-11-25  5048  	unsigned int size = rtnl_offload_xstats_get_size_ndo(dev, attr_id);
7f3ca7ed5c4b775 Petr Machata        2021-11-03  5049  	struct nlattr *attr = NULL;
7f3ca7ed5c4b775 Petr Machata        2021-11-03  5050  	void *attr_data;
7f3ca7ed5c4b775 Petr Machata        2021-11-03  5051  	int err;
7f3ca7ed5c4b775 Petr Machata        2021-11-03  5052  
d35d00a6d28ff7a Petr Machata        2021-11-12  5053  	if (!size)
d35d00a6d28ff7a Petr Machata        2021-11-12  5054  		return 0;
d35d00a6d28ff7a Petr Machata        2021-11-12  5055  
7f3ca7ed5c4b775 Petr Machata        2021-11-03  5056  	// xxx does nla_reserve take into account attribute header?
59d158395664dab Petr Machata        2021-11-25  5057  	attr = nla_reserve_64bit(skb, attr_id, size,
7f3ca7ed5c4b775 Petr Machata        2021-11-03  5058  				 IFLA_OFFLOAD_XSTATS_UNSPEC);
7f3ca7ed5c4b775 Petr Machata        2021-11-03  5059  	if (!attr)
7f3ca7ed5c4b775 Petr Machata        2021-11-03  5060  		return -EMSGSIZE;
7f3ca7ed5c4b775 Petr Machata        2021-11-03  5061  
7f3ca7ed5c4b775 Petr Machata        2021-11-03  5062  	attr_data = nla_data(attr);
7f3ca7ed5c4b775 Petr Machata        2021-11-03  5063  	memset(attr_data, 0, size);
7f3ca7ed5c4b775 Petr Machata        2021-11-03  5064  
59d158395664dab Petr Machata        2021-11-25  5065  	err = dev->netdev_ops->ndo_get_offload_stats(attr_id, dev, attr_data);
7f3ca7ed5c4b775 Petr Machata        2021-11-03  5066  	if (err)
7f3ca7ed5c4b775 Petr Machata        2021-11-03  5067  		return err;
7f3ca7ed5c4b775 Petr Machata        2021-11-03  5068  
7f3ca7ed5c4b775 Petr Machata        2021-11-03  5069  	return 0;
a8a72b09197b260 Petr Machata        2021-10-22  5070  }
a8a72b09197b260 Petr Machata        2021-10-22  5071  
d35d00a6d28ff7a Petr Machata        2021-11-12  5072  static unsigned int
59d158395664dab Petr Machata        2021-11-25  5073  rtnl_offload_xstats_get_size_hw_s_info(const struct rtnl_offload_xstats_info *info,
d35d00a6d28ff7a Petr Machata        2021-11-12  5074  				       const struct net_device *dev)
d35d00a6d28ff7a Petr Machata        2021-11-12  5075  {
59d158395664dab Petr Machata        2021-11-25 @5076  	bool enabled = netdev_offload_xstats_enabled(dev);
d35d00a6d28ff7a Petr Machata        2021-11-12  5077  
59d158395664dab Petr Machata        2021-11-25  5078  	return (/* IFLA_OFFLOAD_XSTATS_HW_S_INFO_ENABLED */
59d158395664dab Petr Machata        2021-11-25  5079  		nla_total_size(sizeof(u8)) +
59d158395664dab Petr Machata        2021-11-25  5080  		/* IFLA_OFFLOAD_XSTATS_HW_S_INFO_IN_HW_COUNT */
59d158395664dab Petr Machata        2021-11-25  5081  		(enabled ? nla_total_size(sizeof(u32)) : 0) +
59d158395664dab Petr Machata        2021-11-25 @5082  		0)
59d158395664dab Petr Machata        2021-11-25  5083  }
59d158395664dab Petr Machata        2021-11-25  5084  
59d158395664dab Petr Machata        2021-11-25  5085  static unsigned int
59d158395664dab Petr Machata        2021-11-25  5086  rtnl_offload_xstats_get_size_hw_stats(const struct net_device *dev)
59d158395664dab Petr Machata        2021-11-25  5087  {
59d158395664dab Petr Machata        2021-11-25  5088  	bool enabled = netdev_offload_xstats_enabled(dev);
59d158395664dab Petr Machata        2021-11-25  5089  
59d158395664dab Petr Machata        2021-11-25  5090  	return enabled ? sizeof(struct rtnl_link_stats64) : 0;
d35d00a6d28ff7a Petr Machata        2021-11-12  5091  }
d35d00a6d28ff7a Petr Machata        2021-11-12  5092  
7f3ca7ed5c4b775 Petr Machata        2021-11-03  5093  static int
59d158395664dab Petr Machata        2021-11-25  5094  rtnl_offload_xstats_fill_hw_s_info(struct net_device *dev, struct sk_buff *skb,
59d158395664dab Petr Machata        2021-11-25  5095  				   int in_hw_count)
a8a72b09197b260 Petr Machata        2021-10-22  5096  {
59d158395664dab Petr Machata        2021-11-25  5097  	bool enabled = netdev_offload_xstats_enabled(dev);
7f3ca7ed5c4b775 Petr Machata        2021-11-03  5098  	struct nlattr *nest;
7f3ca7ed5c4b775 Petr Machata        2021-11-03  5099  	int err;
7f3ca7ed5c4b775 Petr Machata        2021-11-03  5100  
59d158395664dab Petr Machata        2021-11-25  5101  	nest = nla_nest_start(skb, IFLA_OFFLOAD_XSTATS_HW_S_INFO);
7f3ca7ed5c4b775 Petr Machata        2021-11-03  5102  	if (!nest)
7f3ca7ed5c4b775 Petr Machata        2021-11-03  5103  		return -EMSGSIZE;
7f3ca7ed5c4b775 Petr Machata        2021-11-03  5104  
59d158395664dab Petr Machata        2021-11-25  5105  	if (nla_put_u8(skb, IFLA_OFFLOAD_XSTATS_HW_S_INFO_ENABLED, enabled))
7f3ca7ed5c4b775 Petr Machata        2021-11-03  5106  		goto nla_put_failure;
d35d00a6d28ff7a Petr Machata        2021-11-12  5107  
59d158395664dab Petr Machata        2021-11-25  5108  	if (enabled &&
59d158395664dab Petr Machata        2021-11-25  5109  	    nla_put_u32(skb, IFLA_OFFLOAD_XSTATS_HW_S_INFO_IN_HW_COUNT,
59d158395664dab Petr Machata        2021-11-25  5110  			in_hw_count))
d35d00a6d28ff7a Petr Machata        2021-11-12  5111  		goto nla_put_failure;
7f3ca7ed5c4b775 Petr Machata        2021-11-03  5112  
7f3ca7ed5c4b775 Petr Machata        2021-11-03  5113  	nla_nest_end(skb, nest);
7f3ca7ed5c4b775 Petr Machata        2021-11-03  5114  	return 0;
a8a72b09197b260 Petr Machata        2021-10-22  5115  
7f3ca7ed5c4b775 Petr Machata        2021-11-03  5116  nla_put_failure:
7f3ca7ed5c4b775 Petr Machata        2021-11-03  5117  	nla_nest_cancel(skb, nest);
7f3ca7ed5c4b775 Petr Machata        2021-11-03  5118  	return -EMSGSIZE;
a8a72b09197b260 Petr Machata        2021-10-22  5119  }
a8a72b09197b260 Petr Machata        2021-10-22  5120  
59d158395664dab Petr Machata        2021-11-25  5121  static unsigned int
59d158395664dab Petr Machata        2021-11-25  5122  rtnl_offload_xstats_get_size_sw_stats(const struct rtnl_offload_xstats_info *info,
59d158395664dab Petr Machata        2021-11-25  5123  				      const struct net_device *dev)
59d158395664dab Petr Machata        2021-11-25  5124  {
59d158395664dab Petr Machata        2021-11-25  5125  	return sizeof(struct rtnl_link_stats64);
59d158395664dab Petr Machata        2021-11-25  5126  }
59d158395664dab Petr Machata        2021-11-25  5127  
59d158395664dab Petr Machata        2021-11-25  5128  static int
59d158395664dab Petr Machata        2021-11-25  5129  rtnl_offload_xstats_fill_sw_stats(struct net_device *dev, struct sk_buff *skb,
59d158395664dab Petr Machata        2021-11-25  5130  				  struct netlink_ext_ack *extack)
a8a72b09197b260 Petr Machata        2021-10-22  5131  {
59d158395664dab Petr Machata        2021-11-25  5132  	// xxx
59d158395664dab Petr Machata        2021-11-25  5133  }
59d158395664dab Petr Machata        2021-11-25  5134  
59d158395664dab Petr Machata        2021-11-25  5135  static int rtnl_get_offload_stats_size(const struct net_device *dev,
59d158395664dab Petr Machata        2021-11-25  5136  				       u32 off_filter_mask)
a8a72b09197b260 Petr Machata        2021-10-22  5137  {
59d158395664dab Petr Machata        2021-11-25  5138  	int attr_id_cpu_hit = IFLA_OFFLOAD_XSTATS_CPU_HIT;
59d158395664dab Petr Machata        2021-11-25  5139  	int nla_size = 0;
59d158395664dab Petr Machata        2021-11-25  5140  	int size;
59d158395664dab Petr Machata        2021-11-25  5141  
59d158395664dab Petr Machata        2021-11-25  5142  	if (off_filter_mask &
59d158395664dab Petr Machata        2021-11-25  5143  	    IFLA_STATS_FILTER_BIT(attr_id_cpu_hit)) {
59d158395664dab Petr Machata        2021-11-25  5144  		size = rtnl_offload_xstats_get_size_ndo(dev, attr_id_cpu_hit);
59d158395664dab Petr Machata        2021-11-25  5145  		nla_size += nla_total_size_64bit(size);
59d158395664dab Petr Machata        2021-11-25  5146  	}
59d158395664dab Petr Machata        2021-11-25  5147  
59d158395664dab Petr Machata        2021-11-25  5148  	if (off_filter_mask &
59d158395664dab Petr Machata        2021-11-25  5149  	    IFLA_STATS_FILTER_BIT(IFLA_OFFLOAD_XSTATS_HW_STATS)) {
59d158395664dab Petr Machata        2021-11-25  5150  		size = rtnl_offload_xstats_get_size_hw_stats(dev);
59d158395664dab Petr Machata        2021-11-25  5151  		nla_size += nla_total_size_64bit(size);
59d158395664dab Petr Machata        2021-11-25  5152  	}
59d158395664dab Petr Machata        2021-11-25  5153  
59d158395664dab Petr Machata        2021-11-25  5154  	if (off_filter_mask &
59d158395664dab Petr Machata        2021-11-25  5155  	    IFLA_STATS_FILTER_BIT(IFLA_OFFLOAD_XSTATS_HW_S_INFO)) {
59d158395664dab Petr Machata        2021-11-25 @5156  		size = rtnl_offload_xstats_get_size_hw_s_info(dev);
59d158395664dab Petr Machata        2021-11-25  5157  		nla_size += nla_total_size(size);
59d158395664dab Petr Machata        2021-11-25  5158  	}
59d158395664dab Petr Machata        2021-11-25  5159  
59d158395664dab Petr Machata        2021-11-25  5160  	if (off_filter_mask &
59d158395664dab Petr Machata        2021-11-25  5161  	    IFLA_STATS_FILTER_BIT(IFLA_OFFLOAD_XSTATS_SW_STATS)) {
59d158395664dab Petr Machata        2021-11-25 @5162  		size = rtnl_offload_xstats_get_size_sw_stats(dev);
59d158395664dab Petr Machata        2021-11-25  5163  		nla_size += nla_total_size_64bit(size);
59d158395664dab Petr Machata        2021-11-25  5164  	}
59d158395664dab Petr Machata        2021-11-25  5165  
59d158395664dab Petr Machata        2021-11-25  5166  	if (nla_size != 0)
59d158395664dab Petr Machata        2021-11-25  5167  		nla_size += nla_total_size(0);
59d158395664dab Petr Machata        2021-11-25  5168  
59d158395664dab Petr Machata        2021-11-25  5169  	return nla_size;
59d158395664dab Petr Machata        2021-11-25  5170  }
a8a72b09197b260 Petr Machata        2021-10-22  5171  
7f3ca7ed5c4b775 Petr Machata        2021-11-03  5172  static int rtnl_fill_offload_stats(struct sk_buff *skb, struct net_device *dev,
7f3ca7ed5c4b775 Petr Machata        2021-11-03  5173  				   int *prividx, u32 off_filter_mask,
7f3ca7ed5c4b775 Petr Machata        2021-11-03  5174  				   struct netlink_ext_ack *extack)
69ae6ad2ff37911 Nogah Frankel       2016-09-16  5175  {
59d158395664dab Petr Machata        2021-11-25  5176  	bool hw_stats_enabled = netdev_offload_xstats_enabled(dev);
59d158395664dab Petr Machata        2021-11-25  5177  	int attr_id_hw_s_info = IFLA_OFFLOAD_XSTATS_HW_S_INFO;
59d158395664dab Petr Machata        2021-11-25  5178  	int attr_id_hw_stats = IFLA_OFFLOAD_XSTATS_HW_STATS;
59d158395664dab Petr Machata        2021-11-25  5179  	int attr_id_sw_stats = IFLA_OFFLOAD_XSTATS_SW_STATS;
59d158395664dab Petr Machata        2021-11-25  5180  	int attr_id_cpu_hit = IFLA_OFFLOAD_XSTATS_CPU_HIT;
59d158395664dab Petr Machata        2021-11-25  5181  	struct rtnl_link_stats64 *hw_stats = NULL;
59d158395664dab Petr Machata        2021-11-25  5182  	u32 in_hw_count = 0;
7f3ca7ed5c4b775 Petr Machata        2021-11-03  5183  	int err = -ENODATA;
a8a72b09197b260 Petr Machata        2021-10-22  5184  	int i;
69ae6ad2ff37911 Nogah Frankel       2016-09-16  5185  
59d158395664dab Petr Machata        2021-11-25  5186  	if ((off_filter_mask & IFLA_STATS_FILTER_BIT(attr_id_cpu_hit)) &&
59d158395664dab Petr Machata        2021-11-25  5187  	    *prividx < attr_id_cpu_hit) {
59d158395664dab Petr Machata        2021-11-25  5188  		err = rtnl_offload_xstats_fill_ndo(dev, attr_id_cpu_hit, skb,
59d158395664dab Petr Machata        2021-11-25  5189  						   extack);
59d158395664dab Petr Machata        2021-11-25  5190  		if (err) {
59d158395664dab Petr Machata        2021-11-25  5191  			*prividx = attr_id_cpu_hit;
59d158395664dab Petr Machata        2021-11-25  5192  			return err;
59d158395664dab Petr Machata        2021-11-25  5193  		}
59d158395664dab Petr Machata        2021-11-25  5194  	}
69ae6ad2ff37911 Nogah Frankel       2016-09-16  5195  
59d158395664dab Petr Machata        2021-11-25  5196  	/* Reserve space for IFLA_OFFLOAD_XSTATS_HW_STATS. This allocates the
59d158395664dab Petr Machata        2021-11-25  5197  	 * attribute, but leaves the payload empty.
59d158395664dab Petr Machata        2021-11-25  5198  	 *
59d158395664dab Petr Machata        2021-11-25  5199  	 * xxx can this lead to issues in dumping when hw_stats_get() fails below?
59d158395664dab Petr Machata        2021-11-25  5200  	 */
59d158395664dab Petr Machata        2021-11-25  5201  	if (hw_stats_enabled &&
59d158395664dab Petr Machata        2021-11-25  5202  	    (off_filter_mask & IFLA_STATS_FILTER_BIT(attr_id_hw_stats)) &&
59d158395664dab Petr Machata        2021-11-25  5203  	    *prividx < attr_id_hw_stats) {
59d158395664dab Petr Machata        2021-11-25  5204  		struct nlattr *attr;
69ae6ad2ff37911 Nogah Frankel       2016-09-16  5205  
59d158395664dab Petr Machata        2021-11-25 @5206  		attr = nla_reserve_64bit(skb, attr_id_hw_stats, size,
59d158395664dab Petr Machata        2021-11-25  5207  					 IFLA_OFFLOAD_XSTATS_UNSPEC);
59d158395664dab Petr Machata        2021-11-25  5208  		if (!attr) {
59d158395664dab Petr Machata        2021-11-25  5209  			*prividx = attr_id_hw_stats;
59d158395664dab Petr Machata        2021-11-25  5210  			return -EMSGSIZE;
59d158395664dab Petr Machata        2021-11-25  5211  		}
59d158395664dab Petr Machata        2021-11-25  5212  
59d158395664dab Petr Machata        2021-11-25  5213  		hw_stats = nla_data(attr);
59d158395664dab Petr Machata        2021-11-25  5214  	}
59d158395664dab Petr Machata        2021-11-25  5215  
59d158395664dab Petr Machata        2021-11-25  5216  	/* Fetch the data for IFLA_OFFLOAD_XSTATS_HW_STATS and _HW_S_INFO,
59d158395664dab Petr Machata        2021-11-25  5217  	 * filling the payload allocated above in the process. Note that
59d158395664dab Petr Machata        2021-11-25  5218  	 * _HW_S_INFO needs to be emitted even if HW stats are disabled, so this
59d158395664dab Petr Machata        2021-11-25  5219  	 * is always called to get in_hw_count.
59d158395664dab Petr Machata        2021-11-25  5220  	 */
59d158395664dab Petr Machata        2021-11-25  5221  	if (((off_filter_mask & IFLA_STATS_FILTER_BIT(attr_id_hw_stats)) ||
59d158395664dab Petr Machata        2021-11-25  5222  	     (off_filter_mask & IFLA_STATS_FILTER_BIT(attr_id_hw_s_info))) &&
59d158395664dab Petr Machata        2021-11-25  5223  	    *prividx < attr_id_hw_s_info) {
59d158395664dab Petr Machata        2021-11-25  5224  		err = netdev_offload_xstats_hw_stats_get(dev, hw_stats,
59d158395664dab Petr Machata        2021-11-25  5225  							 &in_hw_count, extack);
59d158395664dab Petr Machata        2021-11-25  5226  		if (err) {
59d158395664dab Petr Machata        2021-11-25  5227  			*prividx = attr_id_hw_stats;
59d158395664dab Petr Machata        2021-11-25  5228  			return err;
59d158395664dab Petr Machata        2021-11-25  5229  		}
59d158395664dab Petr Machata        2021-11-25  5230  	}
59d158395664dab Petr Machata        2021-11-25  5231  
59d158395664dab Petr Machata        2021-11-25  5232  	if (off_filter_mask & IFLA_STATS_FILTER_BIT(attr_id_hw_s_info) &&
59d158395664dab Petr Machata        2021-11-25  5233  	    *prividx < attr_id_hw_s_info) {
59d158395664dab Petr Machata        2021-11-25  5234  		err = rtnl_offload_xstats_fill_hw_s_info(dev, skb, in_hw_count);
59d158395664dab Petr Machata        2021-11-25  5235  		if (err) {
59d158395664dab Petr Machata        2021-11-25  5236  			*prividx = attr_id_hw_s_info;
59d158395664dab Petr Machata        2021-11-25  5237  			return err;
59d158395664dab Petr Machata        2021-11-25  5238  		}
59d158395664dab Petr Machata        2021-11-25  5239  	}
69ae6ad2ff37911 Nogah Frankel       2016-09-16  5240  
59d158395664dab Petr Machata        2021-11-25  5241  	if (hw_stats_enabled &&
59d158395664dab Petr Machata        2021-11-25  5242  	    (off_filter_mask & IFLA_STATS_FILTER_BIT(attr_id_hw_stats)) &&
59d158395664dab Petr Machata        2021-11-25  5243  	    *prividx < attr_id_sw_stats) {
59d158395664dab Petr Machata        2021-11-25  5244  		err = rtnl_offload_xstats_fill_sw_stats(dev, skb, extack);
7f3ca7ed5c4b775 Petr Machata        2021-11-03  5245  		if (err) {
59d158395664dab Petr Machata        2021-11-25  5246  			*prividx = attr_id_sw_stats;
7f3ca7ed5c4b775 Petr Machata        2021-11-03  5247  			return err;
7f3ca7ed5c4b775 Petr Machata        2021-11-03  5248  		}
69ae6ad2ff37911 Nogah Frankel       2016-09-16  5249  	}
69ae6ad2ff37911 Nogah Frankel       2016-09-16  5250  
69ae6ad2ff37911 Nogah Frankel       2016-09-16  5251  	*prividx = 0;
69ae6ad2ff37911 Nogah Frankel       2016-09-16  5252  	return err;
69ae6ad2ff37911 Nogah Frankel       2016-09-16  5253  }
69ae6ad2ff37911 Nogah Frankel       2016-09-16  5254  

:::::: The code at line 5033 was first introduced by commit
:::::: 7f3ca7ed5c4b775fb9261fd6dfeccf77ad124147 wip

:::::: TO: Petr Machata <petrm@...dia.com>
:::::: CC: Petr Machata <petrm@...dia.com>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ