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
next 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.