[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <202207041952.aDY8T1Ew-lkp@intel.com>
Date: Mon, 4 Jul 2022 20:04:06 +0800
From: kernel test robot <lkp@...el.com>
To: Qiao Ma <mqaio@...ux.alibaba.com>, davem@...emloft.net,
edumazet@...gle.com, pabeni@...hat.com, kuba@...nel.org,
gustavoars@...nel.org, cai.huoqing@...ux.dev,
aviad.krawczyk@...wei.com, zhaochen6@...wei.com
Cc: kbuild-all@...ts.01.org, netdev@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH net-next v2 1/3] net: hinic: fix bug that ethtool get
wrong stats
Hi Qiao,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on net-next/master]
url: https://github.com/intel-lab-lkp/linux/commits/Qiao-Ma/net-hinic-fix-three-bugs-about-dev_get_stats/20220704-165848
base: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git d0bf1fe6454e976e39bc1524b9159fa2c0fcf321
config: i386-allyesconfig (https://download.01.org/0day-ci/archive/20220704/202207041952.aDY8T1Ew-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-3) 11.3.0
reproduce (this is a W=1 build):
# https://github.com/intel-lab-lkp/linux/commit/223573d76883c30f449fc9d1bd45a3c819f85dcc
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Qiao-Ma/net-hinic-fix-three-bugs-about-dev_get_stats/20220704-165848
git checkout 223573d76883c30f449fc9d1bd45a3c819f85dcc
# save the config file
mkdir build_dir && cp config build_dir/.config
make W=1 O=build_dir ARCH=i386 SHELL=/bin/bash drivers/net/ethernet/huawei/hinic/
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@...el.com>
All warnings (new ones prefixed by >>):
drivers/net/ethernet/huawei/hinic/hinic_main.c: In function 'nic_dev_init':
>> drivers/net/ethernet/huawei/hinic/hinic_main.c:1163:33: warning: unused variable 'rx_stats' [-Wunused-variable]
1163 | struct hinic_rxq_stats *rx_stats;
| ^~~~~~~~
>> drivers/net/ethernet/huawei/hinic/hinic_main.c:1162:33: warning: unused variable 'tx_stats' [-Wunused-variable]
1162 | struct hinic_txq_stats *tx_stats;
| ^~~~~~~~
vim +/rx_stats +1163 drivers/net/ethernet/huawei/hinic/hinic_main.c
a0337c0dee686a Luo bin 2020-06-28 1152
51ba902a16e68b Aviad Krawczyk 2017-08-21 1153 /**
51ba902a16e68b Aviad Krawczyk 2017-08-21 1154 * nic_dev_init - Initialize the NIC device
51ba902a16e68b Aviad Krawczyk 2017-08-21 1155 * @pdev: the NIC pci device
51ba902a16e68b Aviad Krawczyk 2017-08-21 1156 *
51ba902a16e68b Aviad Krawczyk 2017-08-21 1157 * Return 0 - Success, negative - Failure
51ba902a16e68b Aviad Krawczyk 2017-08-21 1158 **/
51ba902a16e68b Aviad Krawczyk 2017-08-21 1159 static int nic_dev_init(struct pci_dev *pdev)
51ba902a16e68b Aviad Krawczyk 2017-08-21 1160 {
c4d06d2d208a6c Aviad Krawczyk 2017-08-21 1161 struct hinic_rx_mode_work *rx_mode_work;
edd384f682cc29 Aviad Krawczyk 2017-08-21 @1162 struct hinic_txq_stats *tx_stats;
edd384f682cc29 Aviad Krawczyk 2017-08-21 @1163 struct hinic_rxq_stats *rx_stats;
51ba902a16e68b Aviad Krawczyk 2017-08-21 1164 struct hinic_dev *nic_dev;
51ba902a16e68b Aviad Krawczyk 2017-08-21 1165 struct net_device *netdev;
51ba902a16e68b Aviad Krawczyk 2017-08-21 1166 struct hinic_hwdev *hwdev;
5e126e7c4e5275 Luo bin 2020-07-15 1167 struct devlink *devlink;
4abd7cffc09a38 Jakub Kicinski 2021-10-15 1168 u8 addr[ETH_ALEN];
51ba902a16e68b Aviad Krawczyk 2017-08-21 1169 int err, num_qps;
51ba902a16e68b Aviad Krawczyk 2017-08-21 1170
919d13a7e455c2 Leon Romanovsky 2021-08-08 1171 devlink = hinic_devlink_alloc(&pdev->dev);
5e126e7c4e5275 Luo bin 2020-07-15 1172 if (!devlink) {
5e126e7c4e5275 Luo bin 2020-07-15 1173 dev_err(&pdev->dev, "Hinic devlink alloc failed\n");
c15850c709eb5c Luo bin 2020-07-25 1174 return -ENOMEM;
5e126e7c4e5275 Luo bin 2020-07-15 1175 }
5e126e7c4e5275 Luo bin 2020-07-15 1176
c15850c709eb5c Luo bin 2020-07-25 1177 hwdev = hinic_init_hwdev(pdev, devlink);
c15850c709eb5c Luo bin 2020-07-25 1178 if (IS_ERR(hwdev)) {
c15850c709eb5c Luo bin 2020-07-25 1179 dev_err(&pdev->dev, "Failed to initialize HW device\n");
c15850c709eb5c Luo bin 2020-07-25 1180 hinic_devlink_free(devlink);
c15850c709eb5c Luo bin 2020-07-25 1181 return PTR_ERR(hwdev);
c15850c709eb5c Luo bin 2020-07-25 1182 }
5e126e7c4e5275 Luo bin 2020-07-15 1183
51ba902a16e68b Aviad Krawczyk 2017-08-21 1184 num_qps = hinic_hwdev_num_qps(hwdev);
51ba902a16e68b Aviad Krawczyk 2017-08-21 1185 if (num_qps <= 0) {
51ba902a16e68b Aviad Krawczyk 2017-08-21 1186 dev_err(&pdev->dev, "Invalid number of QPS\n");
51ba902a16e68b Aviad Krawczyk 2017-08-21 1187 err = -EINVAL;
51ba902a16e68b Aviad Krawczyk 2017-08-21 1188 goto err_num_qps;
51ba902a16e68b Aviad Krawczyk 2017-08-21 1189 }
51ba902a16e68b Aviad Krawczyk 2017-08-21 1190
51ba902a16e68b Aviad Krawczyk 2017-08-21 1191 netdev = alloc_etherdev_mq(sizeof(*nic_dev), num_qps);
51ba902a16e68b Aviad Krawczyk 2017-08-21 1192 if (!netdev) {
51ba902a16e68b Aviad Krawczyk 2017-08-21 1193 dev_err(&pdev->dev, "Failed to allocate Ethernet device\n");
51ba902a16e68b Aviad Krawczyk 2017-08-21 1194 err = -ENOMEM;
51ba902a16e68b Aviad Krawczyk 2017-08-21 1195 goto err_alloc_etherdev;
51ba902a16e68b Aviad Krawczyk 2017-08-21 1196 }
51ba902a16e68b Aviad Krawczyk 2017-08-21 1197
1f62cfa19a619f Luo bin 2020-04-25 1198 if (!HINIC_IS_VF(hwdev->hwif))
51ba902a16e68b Aviad Krawczyk 2017-08-21 1199 netdev->netdev_ops = &hinic_netdev_ops;
1f62cfa19a619f Luo bin 2020-04-25 1200 else
1f62cfa19a619f Luo bin 2020-04-25 1201 netdev->netdev_ops = &hinicvf_netdev_ops;
7dd29ee1286547 Luo bin 2020-04-25 1202
52f31422d462d1 Aviad Krawczyk 2017-08-28 1203 netdev->max_mtu = ETH_MAX_MTU;
51ba902a16e68b Aviad Krawczyk 2017-08-21 1204
51ba902a16e68b Aviad Krawczyk 2017-08-21 1205 nic_dev = netdev_priv(netdev);
51ba902a16e68b Aviad Krawczyk 2017-08-21 1206 nic_dev->netdev = netdev;
51ba902a16e68b Aviad Krawczyk 2017-08-21 1207 nic_dev->hwdev = hwdev;
51ba902a16e68b Aviad Krawczyk 2017-08-21 1208 nic_dev->msg_enable = MSG_ENABLE_DEFAULT;
c4d06d2d208a6c Aviad Krawczyk 2017-08-21 1209 nic_dev->flags = 0;
c3e79baf1b03b3 Aviad Krawczyk 2017-08-21 1210 nic_dev->txqs = NULL;
c3e79baf1b03b3 Aviad Krawczyk 2017-08-21 1211 nic_dev->rxqs = NULL;
00e57a6d4ad345 Aviad Krawczyk 2017-08-21 1212 nic_dev->tx_weight = tx_weight;
e2585ea775380e Aviad Krawczyk 2017-08-21 1213 nic_dev->rx_weight = rx_weight;
bcab67822d7714 Luo bin 2020-05-13 1214 nic_dev->sq_depth = HINIC_SQ_DEPTH;
bcab67822d7714 Luo bin 2020-05-13 1215 nic_dev->rq_depth = HINIC_RQ_DEPTH;
7dd29ee1286547 Luo bin 2020-04-25 1216 nic_dev->sriov_info.hwdev = hwdev;
7dd29ee1286547 Luo bin 2020-04-25 1217 nic_dev->sriov_info.pdev = pdev;
2eed5a8b614bc0 Luo bin 2020-06-02 1218 nic_dev->max_qps = num_qps;
5e126e7c4e5275 Luo bin 2020-07-15 1219 nic_dev->devlink = devlink;
51ba902a16e68b Aviad Krawczyk 2017-08-21 1220
ea256222a46385 Luo bin 2020-06-28 1221 hinic_set_ethtool_ops(netdev);
ea256222a46385 Luo bin 2020-06-28 1222
25a3ba61060937 Aviad Krawczyk 2017-08-21 1223 sema_init(&nic_dev->mgmt_lock, 1);
25a3ba61060937 Aviad Krawczyk 2017-08-21 1224
7c2c57263af41c Christophe JAILLET 2022-06-26 1225 nic_dev->vlan_bitmap = devm_bitmap_zalloc(&pdev->dev, VLAN_N_VID,
25a3ba61060937 Aviad Krawczyk 2017-08-21 1226 GFP_KERNEL);
25a3ba61060937 Aviad Krawczyk 2017-08-21 1227 if (!nic_dev->vlan_bitmap) {
25a3ba61060937 Aviad Krawczyk 2017-08-21 1228 err = -ENOMEM;
25a3ba61060937 Aviad Krawczyk 2017-08-21 1229 goto err_vlan_bitmap;
25a3ba61060937 Aviad Krawczyk 2017-08-21 1230 }
25a3ba61060937 Aviad Krawczyk 2017-08-21 1231
c4d06d2d208a6c Aviad Krawczyk 2017-08-21 1232 nic_dev->workq = create_singlethread_workqueue(HINIC_WQ_NAME);
c4d06d2d208a6c Aviad Krawczyk 2017-08-21 1233 if (!nic_dev->workq) {
c4d06d2d208a6c Aviad Krawczyk 2017-08-21 1234 err = -ENOMEM;
c4d06d2d208a6c Aviad Krawczyk 2017-08-21 1235 goto err_workq;
c4d06d2d208a6c Aviad Krawczyk 2017-08-21 1236 }
c4d06d2d208a6c Aviad Krawczyk 2017-08-21 1237
51ba902a16e68b Aviad Krawczyk 2017-08-21 1238 pci_set_drvdata(pdev, netdev);
51ba902a16e68b Aviad Krawczyk 2017-08-21 1239
4abd7cffc09a38 Jakub Kicinski 2021-10-15 1240 err = hinic_port_get_mac(nic_dev, addr);
7dd29ee1286547 Luo bin 2020-04-25 1241 if (err) {
7dd29ee1286547 Luo bin 2020-04-25 1242 dev_err(&pdev->dev, "Failed to get mac address\n");
7dd29ee1286547 Luo bin 2020-04-25 1243 goto err_get_mac;
7dd29ee1286547 Luo bin 2020-04-25 1244 }
4abd7cffc09a38 Jakub Kicinski 2021-10-15 1245 eth_hw_addr_set(netdev, addr);
7dd29ee1286547 Luo bin 2020-04-25 1246
7dd29ee1286547 Luo bin 2020-04-25 1247 if (!is_valid_ether_addr(netdev->dev_addr)) {
7dd29ee1286547 Luo bin 2020-04-25 1248 if (!HINIC_IS_VF(nic_dev->hwdev->hwif)) {
7dd29ee1286547 Luo bin 2020-04-25 1249 dev_err(&pdev->dev, "Invalid MAC address\n");
7dd29ee1286547 Luo bin 2020-04-25 1250 err = -EIO;
7dd29ee1286547 Luo bin 2020-04-25 1251 goto err_add_mac;
7dd29ee1286547 Luo bin 2020-04-25 1252 }
7dd29ee1286547 Luo bin 2020-04-25 1253
7dd29ee1286547 Luo bin 2020-04-25 1254 dev_info(&pdev->dev, "Invalid MAC address %pM, using random\n",
7dd29ee1286547 Luo bin 2020-04-25 1255 netdev->dev_addr);
7dd29ee1286547 Luo bin 2020-04-25 1256 eth_hw_addr_random(netdev);
7dd29ee1286547 Luo bin 2020-04-25 1257 }
25a3ba61060937 Aviad Krawczyk 2017-08-21 1258
25a3ba61060937 Aviad Krawczyk 2017-08-21 1259 err = hinic_port_add_mac(nic_dev, netdev->dev_addr, 0);
7dd29ee1286547 Luo bin 2020-04-25 1260 if (err && err != HINIC_PF_SET_VF_ALREADY) {
25a3ba61060937 Aviad Krawczyk 2017-08-21 1261 dev_err(&pdev->dev, "Failed to add mac\n");
25a3ba61060937 Aviad Krawczyk 2017-08-21 1262 goto err_add_mac;
25a3ba61060937 Aviad Krawczyk 2017-08-21 1263 }
25a3ba61060937 Aviad Krawczyk 2017-08-21 1264
25a3ba61060937 Aviad Krawczyk 2017-08-21 1265 err = hinic_port_set_mtu(nic_dev, netdev->mtu);
25a3ba61060937 Aviad Krawczyk 2017-08-21 1266 if (err) {
25a3ba61060937 Aviad Krawczyk 2017-08-21 1267 dev_err(&pdev->dev, "Failed to set mtu\n");
25a3ba61060937 Aviad Krawczyk 2017-08-21 1268 goto err_set_mtu;
25a3ba61060937 Aviad Krawczyk 2017-08-21 1269 }
25a3ba61060937 Aviad Krawczyk 2017-08-21 1270
c4d06d2d208a6c Aviad Krawczyk 2017-08-21 1271 rx_mode_work = &nic_dev->rx_mode_work;
c4d06d2d208a6c Aviad Krawczyk 2017-08-21 1272 INIT_WORK(&rx_mode_work->work, set_rx_mode);
c4d06d2d208a6c Aviad Krawczyk 2017-08-21 1273
25a3ba61060937 Aviad Krawczyk 2017-08-21 1274 netdev_features_init(netdev);
25a3ba61060937 Aviad Krawczyk 2017-08-21 1275
51ba902a16e68b Aviad Krawczyk 2017-08-21 1276 netif_carrier_off(netdev);
51ba902a16e68b Aviad Krawczyk 2017-08-21 1277
c4d06d2d208a6c Aviad Krawczyk 2017-08-21 1278 hinic_hwdev_cb_register(nic_dev->hwdev, HINIC_MGMT_MSG_CMD_LINK_STATUS,
c4d06d2d208a6c Aviad Krawczyk 2017-08-21 1279 nic_dev, link_status_event_handler);
c15850c709eb5c Luo bin 2020-07-25 1280 hinic_hwdev_cb_register(nic_dev->hwdev,
c15850c709eb5c Luo bin 2020-07-25 1281 HINIC_MGMT_MSG_CMD_CABLE_PLUG_EVENT,
c15850c709eb5c Luo bin 2020-07-25 1282 nic_dev, cable_plug_event);
c15850c709eb5c Luo bin 2020-07-25 1283 hinic_hwdev_cb_register(nic_dev->hwdev,
c15850c709eb5c Luo bin 2020-07-25 1284 HINIC_MGMT_MSG_CMD_LINK_ERR_EVENT,
c15850c709eb5c Luo bin 2020-07-25 1285 nic_dev, link_err_event);
c4d06d2d208a6c Aviad Krawczyk 2017-08-21 1286
cc18a7543d2f63 Zhao Chen 2018-10-18 1287 err = set_features(nic_dev, 0, nic_dev->netdev->features, true);
cc18a7543d2f63 Zhao Chen 2018-10-18 1288 if (err)
cc18a7543d2f63 Zhao Chen 2018-10-18 1289 goto err_set_features;
cc18a7543d2f63 Zhao Chen 2018-10-18 1290
ea256222a46385 Luo bin 2020-06-28 1291 /* enable pause and disable pfc by default */
ea256222a46385 Luo bin 2020-06-28 1292 err = hinic_dcb_set_pfc(nic_dev->hwdev, 0, 0);
ea256222a46385 Luo bin 2020-06-28 1293 if (err)
ea256222a46385 Luo bin 2020-06-28 1294 goto err_set_pfc;
ea256222a46385 Luo bin 2020-06-28 1295
7856e861627309 dann frazier 2018-07-23 1296 SET_NETDEV_DEV(netdev, &pdev->dev);
cc18a7543d2f63 Zhao Chen 2018-10-18 1297
a0337c0dee686a Luo bin 2020-06-28 1298 err = hinic_init_intr_coalesce(nic_dev);
a0337c0dee686a Luo bin 2020-06-28 1299 if (err) {
a0337c0dee686a Luo bin 2020-06-28 1300 dev_err(&pdev->dev, "Failed to init_intr_coalesce\n");
a0337c0dee686a Luo bin 2020-06-28 1301 goto err_init_intr;
a0337c0dee686a Luo bin 2020-06-28 1302 }
a0337c0dee686a Luo bin 2020-06-28 1303
253ac3a97921b8 Luo bin 2020-08-28 1304 hinic_dbg_init(nic_dev);
253ac3a97921b8 Luo bin 2020-08-28 1305
5215e16244ee58 Luo bin 2020-08-28 1306 hinic_func_tbl_dbgfs_init(nic_dev);
5215e16244ee58 Luo bin 2020-08-28 1307
5215e16244ee58 Luo bin 2020-08-28 1308 err = hinic_func_table_debug_add(nic_dev);
5215e16244ee58 Luo bin 2020-08-28 1309 if (err) {
5215e16244ee58 Luo bin 2020-08-28 1310 dev_err(&pdev->dev, "Failed to add func_table debug\n");
5215e16244ee58 Luo bin 2020-08-28 1311 goto err_add_func_table_dbg;
5215e16244ee58 Luo bin 2020-08-28 1312 }
5215e16244ee58 Luo bin 2020-08-28 1313
51ba902a16e68b Aviad Krawczyk 2017-08-21 1314 err = register_netdev(netdev);
51ba902a16e68b Aviad Krawczyk 2017-08-21 1315 if (err) {
51ba902a16e68b Aviad Krawczyk 2017-08-21 1316 dev_err(&pdev->dev, "Failed to register netdev\n");
51ba902a16e68b Aviad Krawczyk 2017-08-21 1317 goto err_reg_netdev;
51ba902a16e68b Aviad Krawczyk 2017-08-21 1318 }
51ba902a16e68b Aviad Krawczyk 2017-08-21 1319
51ba902a16e68b Aviad Krawczyk 2017-08-21 1320 return 0;
51ba902a16e68b Aviad Krawczyk 2017-08-21 1321
51ba902a16e68b Aviad Krawczyk 2017-08-21 1322 err_reg_netdev:
5215e16244ee58 Luo bin 2020-08-28 1323 hinic_func_table_debug_rem(nic_dev);
5215e16244ee58 Luo bin 2020-08-28 1324 err_add_func_table_dbg:
5215e16244ee58 Luo bin 2020-08-28 1325 hinic_func_tbl_dbgfs_uninit(nic_dev);
253ac3a97921b8 Luo bin 2020-08-28 1326 hinic_dbg_uninit(nic_dev);
a0337c0dee686a Luo bin 2020-06-28 1327 hinic_free_intr_coalesce(nic_dev);
a0337c0dee686a Luo bin 2020-06-28 1328 err_init_intr:
ea256222a46385 Luo bin 2020-06-28 1329 err_set_pfc:
cc18a7543d2f63 Zhao Chen 2018-10-18 1330 err_set_features:
c15850c709eb5c Luo bin 2020-07-25 1331 hinic_hwdev_cb_unregister(nic_dev->hwdev,
c15850c709eb5c Luo bin 2020-07-25 1332 HINIC_MGMT_MSG_CMD_LINK_ERR_EVENT);
c15850c709eb5c Luo bin 2020-07-25 1333 hinic_hwdev_cb_unregister(nic_dev->hwdev,
c15850c709eb5c Luo bin 2020-07-25 1334 HINIC_MGMT_MSG_CMD_CABLE_PLUG_EVENT);
c4d06d2d208a6c Aviad Krawczyk 2017-08-21 1335 hinic_hwdev_cb_unregister(nic_dev->hwdev,
c4d06d2d208a6c Aviad Krawczyk 2017-08-21 1336 HINIC_MGMT_MSG_CMD_LINK_STATUS);
c4d06d2d208a6c Aviad Krawczyk 2017-08-21 1337 cancel_work_sync(&rx_mode_work->work);
c4d06d2d208a6c Aviad Krawczyk 2017-08-21 1338
25a3ba61060937 Aviad Krawczyk 2017-08-21 1339 err_set_mtu:
5e126e7c4e5275 Luo bin 2020-07-15 1340 hinic_port_del_mac(nic_dev, netdev->dev_addr, 0);
25a3ba61060937 Aviad Krawczyk 2017-08-21 1341 err_add_mac:
5e126e7c4e5275 Luo bin 2020-07-15 1342 err_get_mac:
51ba902a16e68b Aviad Krawczyk 2017-08-21 1343 pci_set_drvdata(pdev, NULL);
c4d06d2d208a6c Aviad Krawczyk 2017-08-21 1344 destroy_workqueue(nic_dev->workq);
c4d06d2d208a6c Aviad Krawczyk 2017-08-21 1345 err_workq:
25a3ba61060937 Aviad Krawczyk 2017-08-21 1346 err_vlan_bitmap:
51ba902a16e68b Aviad Krawczyk 2017-08-21 1347 free_netdev(netdev);
51ba902a16e68b Aviad Krawczyk 2017-08-21 1348
51ba902a16e68b Aviad Krawczyk 2017-08-21 1349 err_alloc_etherdev:
51ba902a16e68b Aviad Krawczyk 2017-08-21 1350 err_num_qps:
51ba902a16e68b Aviad Krawczyk 2017-08-21 1351 hinic_free_hwdev(hwdev);
c15850c709eb5c Luo bin 2020-07-25 1352 hinic_devlink_free(devlink);
51ba902a16e68b Aviad Krawczyk 2017-08-21 1353 return err;
51ba902a16e68b Aviad Krawczyk 2017-08-21 1354 }
51ba902a16e68b Aviad Krawczyk 2017-08-21 1355
--
0-DAY CI Kernel Test Service
https://01.org/lkp
Powered by blists - more mailing lists