All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: [jpirko-mlxsw:petrm_soft_counters 8/8] net/core/rtnetlink.c:5033:53: error: 'info' undeclared
Date: Fri, 26 Nov 2021 05:00:41 +0800	[thread overview]
Message-ID: <202111260416.BVNDGLfL-lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 26633 bytes --]

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(a)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@intel.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@line 5033 was first introduced by commit
:::::: 7f3ca7ed5c4b775fb9261fd6dfeccf77ad124147 wip

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

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

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: Petr Machata <petrm@nvidia.com>
Cc: kbuild-all@lists.01.org, linux-kernel@vger.kernel.org
Subject: [jpirko-mlxsw:petrm_soft_counters 8/8] net/core/rtnetlink.c:5033:53: error: 'info' undeclared
Date: Fri, 26 Nov 2021 05:00:41 +0800	[thread overview]
Message-ID: <202111260416.BVNDGLfL-lkp@intel.com> (raw)

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@intel.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@nvidia.com>
:::::: CC: Petr Machata <petrm@nvidia.com>

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

             reply	other threads:[~2021-11-25 21:00 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-25 21:00 kernel test robot [this message]
2021-11-25 21:00 ` [jpirko-mlxsw:petrm_soft_counters 8/8] net/core/rtnetlink.c:5033:53: error: 'info' undeclared kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202111260416.BVNDGLfL-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild-all@lists.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.