Messages in this thread | | | Date | Mon, 11 Jul 2022 16:36:59 +0800 | From | kernel test robot <> | Subject | [linux-stable-rc:linux-5.15.y 7889/8235] drivers/net/ethernet/mediatek/mtk_eth_soc.c:1325:23: warning: result of comparison of constant 65536 with expression of type 'u16' (aka 'unsigned short') is always true |
| |
tree: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.15.y head: eb18ccd146339b58faa47c1837f1b61ba05a1acf commit: fcba12a4308143f1f1dcb0face8b3ffb51edcc5c [7889/8235] net: ethernet: mtk_eth_soc: fix misuse of mem alloc interface netdev[napi]_alloc_frag config: arm64-randconfig-r003-20220710 (https://download.01.org/0day-ci/archive/20220711/202207111644.LOc31cfI-lkp@intel.com/config) compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 6ce63e267aab79ca87bf63453d34dd3909ab978d) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # install arm64 cross compiling tool for clang build # apt-get install binutils-aarch64-linux-gnu # https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/commit/?id=fcba12a4308143f1f1dcb0face8b3ffb51edcc5c git remote add linux-stable-rc https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git git fetch --no-tags linux-stable-rc linux-5.15.y git checkout fcba12a4308143f1f1dcb0face8b3ffb51edcc5c # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm64 SHELL=/bin/bash drivers/net/ethernet/mediatek/
If you fix the issue, kindly add following tag where applicable Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
>> drivers/net/ethernet/mediatek/mtk_eth_soc.c:1325:23: warning: result of comparison of constant 65536 with expression of type 'u16' (aka 'unsigned short') is always true [-Wtautological-constant-out-of-range-compare] if (ring->frag_size <= PAGE_SIZE) ~~~~~~~~~~~~~~~ ^ ~~~~~~~~~ drivers/net/ethernet/mediatek/mtk_eth_soc.c:1742:23: warning: result of comparison of constant 65536 with expression of type 'u16' (aka 'unsigned short') is always true [-Wtautological-constant-out-of-range-compare] if (ring->frag_size <= PAGE_SIZE) ~~~~~~~~~~~~~~~ ^ ~~~~~~~~~ 2 warnings generated.
vim +1325 drivers/net/ethernet/mediatek/mtk_eth_soc.c
1277 1278 static int mtk_poll_rx(struct napi_struct *napi, int budget, 1279 struct mtk_eth *eth) 1280 { 1281 struct dim_sample dim_sample = {}; 1282 struct mtk_rx_ring *ring; 1283 int idx; 1284 struct sk_buff *skb; 1285 u8 *data, *new_data; 1286 struct mtk_rx_dma *rxd, trxd; 1287 int done = 0, bytes = 0; 1288 1289 while (done < budget) { 1290 struct net_device *netdev; 1291 unsigned int pktlen; 1292 dma_addr_t dma_addr; 1293 u32 hash; 1294 int mac; 1295 1296 ring = mtk_get_rx_ring(eth); 1297 if (unlikely(!ring)) 1298 goto rx_done; 1299 1300 idx = NEXT_DESP_IDX(ring->calc_idx, ring->dma_size); 1301 rxd = &ring->dma[idx]; 1302 data = ring->data[idx]; 1303 1304 if (!mtk_rx_get_desc(&trxd, rxd)) 1305 break; 1306 1307 /* find out which mac the packet come from. values start at 1 */ 1308 if (MTK_HAS_CAPS(eth->soc->caps, MTK_SOC_MT7628) || 1309 (trxd.rxd4 & RX_DMA_SPECIAL_TAG)) 1310 mac = 0; 1311 else 1312 mac = ((trxd.rxd4 >> RX_DMA_FPORT_SHIFT) & 1313 RX_DMA_FPORT_MASK) - 1; 1314 1315 if (unlikely(mac < 0 || mac >= MTK_MAC_COUNT || 1316 !eth->netdev[mac])) 1317 goto release_desc; 1318 1319 netdev = eth->netdev[mac]; 1320 1321 if (unlikely(test_bit(MTK_RESETTING, ð->state))) 1322 goto release_desc; 1323 1324 /* alloc new buffer */ > 1325 if (ring->frag_size <= PAGE_SIZE) 1326 new_data = napi_alloc_frag(ring->frag_size); 1327 else 1328 new_data = mtk_max_lro_buf_alloc(GFP_ATOMIC); 1329 if (unlikely(!new_data)) { 1330 netdev->stats.rx_dropped++; 1331 goto release_desc; 1332 } 1333 dma_addr = dma_map_single(eth->dev, 1334 new_data + NET_SKB_PAD + 1335 eth->ip_align, 1336 ring->buf_size, 1337 DMA_FROM_DEVICE); 1338 if (unlikely(dma_mapping_error(eth->dev, dma_addr))) { 1339 skb_free_frag(new_data); 1340 netdev->stats.rx_dropped++; 1341 goto release_desc; 1342 } 1343 1344 dma_unmap_single(eth->dev, trxd.rxd1, 1345 ring->buf_size, DMA_FROM_DEVICE); 1346 1347 /* receive data */ 1348 skb = build_skb(data, ring->frag_size); 1349 if (unlikely(!skb)) { 1350 skb_free_frag(data); 1351 netdev->stats.rx_dropped++; 1352 goto skip_rx; 1353 } 1354 skb_reserve(skb, NET_SKB_PAD + NET_IP_ALIGN); 1355 1356 pktlen = RX_DMA_GET_PLEN0(trxd.rxd2); 1357 skb->dev = netdev; 1358 skb_put(skb, pktlen); 1359 if (trxd.rxd4 & eth->rx_dma_l4_valid) 1360 skb->ip_summed = CHECKSUM_UNNECESSARY; 1361 else 1362 skb_checksum_none_assert(skb); 1363 skb->protocol = eth_type_trans(skb, netdev); 1364 bytes += pktlen; 1365 1366 hash = trxd.rxd4 & MTK_RXD4_FOE_ENTRY; 1367 if (hash != MTK_RXD4_FOE_ENTRY) { 1368 hash = jhash_1word(hash, 0); 1369 skb_set_hash(skb, hash, PKT_HASH_TYPE_L4); 1370 } 1371 1372 if (netdev->features & NETIF_F_HW_VLAN_CTAG_RX && 1373 (trxd.rxd2 & RX_DMA_VTAG)) 1374 __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), 1375 RX_DMA_VID(trxd.rxd3)); 1376 skb_record_rx_queue(skb, 0); 1377 napi_gro_receive(napi, skb); 1378 1379 skip_rx: 1380 ring->data[idx] = new_data; 1381 rxd->rxd1 = (unsigned int)dma_addr; 1382 1383 release_desc: 1384 if (MTK_HAS_CAPS(eth->soc->caps, MTK_SOC_MT7628)) 1385 rxd->rxd2 = RX_DMA_LSO; 1386 else 1387 rxd->rxd2 = RX_DMA_PLEN0(ring->buf_size); 1388 1389 ring->calc_idx = idx; 1390 1391 done++; 1392 } 1393 1394 rx_done: 1395 if (done) { 1396 /* make sure that all changes to the dma ring are flushed before 1397 * we continue 1398 */ 1399 wmb(); 1400 mtk_update_rx_cpu_idx(eth); 1401 } 1402 1403 eth->rx_packets += done; 1404 eth->rx_bytes += bytes; 1405 dim_update_sample(eth->rx_events, eth->rx_packets, eth->rx_bytes, 1406 &dim_sample); 1407 net_dim(ð->rx_dim, dim_sample); 1408 1409 return done; 1410 } 1411
-- 0-DAY CI Kernel Test Service https://01.org/lkp
| |