drivers/net/wireless/realtek/rtw88/pci.c:1477:5: warning: no previous prototype for function 'rtw_pci_probe'

From: kernel test robot
Date: Sat Sep 12 2020 - 06:51:24 EST


Hi Zong-Zhe,

FYI, the error/warning still remains.

tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 729e3d091984487f7aa1ebfabfe594e5b317ed0f
commit: 72f256c2b948622cc45ff8bc0456dd6039d8fe36 rtw88: extract: export symbols about pci interface
date: 4 months ago
config: x86_64-randconfig-a014-20200912 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 45d0343900d3005d1d00cbb1a87c419c085dec71)
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 x86_64 cross compiling tool for clang build
# apt-get install binutils-x86-64-linux-gnu
git checkout 72f256c2b948622cc45ff8bc0456dd6039d8fe36
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64

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

All warnings (new ones prefixed by >>):

>> drivers/net/wireless/realtek/rtw88/pci.c:1477:5: warning: no previous prototype for function 'rtw_pci_probe' [-Wmissing-prototypes]
int rtw_pci_probe(struct pci_dev *pdev,
^
drivers/net/wireless/realtek/rtw88/pci.c:1477:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
int rtw_pci_probe(struct pci_dev *pdev,
^
static
>> drivers/net/wireless/realtek/rtw88/pci.c:1557:6: warning: no previous prototype for function 'rtw_pci_remove' [-Wmissing-prototypes]
void rtw_pci_remove(struct pci_dev *pdev)
^
drivers/net/wireless/realtek/rtw88/pci.c:1557:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void rtw_pci_remove(struct pci_dev *pdev)
^
static
>> drivers/net/wireless/realtek/rtw88/pci.c:1579:6: warning: no previous prototype for function 'rtw_pci_shutdown' [-Wmissing-prototypes]
void rtw_pci_shutdown(struct pci_dev *pdev)
^
drivers/net/wireless/realtek/rtw88/pci.c:1579:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void rtw_pci_shutdown(struct pci_dev *pdev)
^
static
drivers/net/wireless/realtek/rtw88/pci.c:88:21: warning: unused function 'rtw_pci_get_tx_desc' [-Wunused-function]
static inline void *rtw_pci_get_tx_desc(struct rtw_pci_tx_ring *tx_ring, u8 idx)
^
4 warnings generated.

# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=72f256c2b948622cc45ff8bc0456dd6039d8fe36
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 72f256c2b948622cc45ff8bc0456dd6039d8fe36
vim +/rtw_pci_probe +1477 drivers/net/wireless/realtek/rtw88/pci.c

1476
> 1477 int rtw_pci_probe(struct pci_dev *pdev,
1478 const struct pci_device_id *id)
1479 {
1480 struct ieee80211_hw *hw;
1481 struct rtw_dev *rtwdev;
1482 int drv_data_size;
1483 int ret;
1484
1485 drv_data_size = sizeof(struct rtw_dev) + sizeof(struct rtw_pci);
1486 hw = ieee80211_alloc_hw(drv_data_size, &rtw_ops);
1487 if (!hw) {
1488 dev_err(&pdev->dev, "failed to allocate hw\n");
1489 return -ENOMEM;
1490 }
1491
1492 rtwdev = hw->priv;
1493 rtwdev->hw = hw;
1494 rtwdev->dev = &pdev->dev;
1495 rtwdev->chip = (struct rtw_chip_info *)id->driver_data;
1496 rtwdev->hci.ops = &rtw_pci_ops;
1497 rtwdev->hci.type = RTW_HCI_TYPE_PCIE;
1498
1499 ret = rtw_core_init(rtwdev);
1500 if (ret)
1501 goto err_release_hw;
1502
1503 rtw_dbg(rtwdev, RTW_DBG_PCI,
1504 "rtw88 pci probe: vendor=0x%4.04X device=0x%4.04X rev=%d\n",
1505 pdev->vendor, pdev->device, pdev->revision);
1506
1507 ret = rtw_pci_claim(rtwdev, pdev);
1508 if (ret) {
1509 rtw_err(rtwdev, "failed to claim pci device\n");
1510 goto err_deinit_core;
1511 }
1512
1513 ret = rtw_pci_setup_resource(rtwdev, pdev);
1514 if (ret) {
1515 rtw_err(rtwdev, "failed to setup pci resources\n");
1516 goto err_pci_declaim;
1517 }
1518
1519 ret = rtw_chip_info_setup(rtwdev);
1520 if (ret) {
1521 rtw_err(rtwdev, "failed to setup chip information\n");
1522 goto err_destroy_pci;
1523 }
1524
1525 rtw_pci_phy_cfg(rtwdev);
1526
1527 ret = rtw_register_hw(rtwdev, hw);
1528 if (ret) {
1529 rtw_err(rtwdev, "failed to register hw\n");
1530 goto err_destroy_pci;
1531 }
1532
1533 ret = rtw_pci_request_irq(rtwdev, pdev);
1534 if (ret) {
1535 ieee80211_unregister_hw(hw);
1536 goto err_destroy_pci;
1537 }
1538
1539 return 0;
1540
1541 err_destroy_pci:
1542 rtw_pci_destroy(rtwdev, pdev);
1543
1544 err_pci_declaim:
1545 rtw_pci_declaim(rtwdev, pdev);
1546
1547 err_deinit_core:
1548 rtw_core_deinit(rtwdev);
1549
1550 err_release_hw:
1551 ieee80211_free_hw(hw);
1552
1553 return ret;
1554 }
1555 EXPORT_SYMBOL(rtw_pci_probe);
1556
> 1557 void rtw_pci_remove(struct pci_dev *pdev)
1558 {
1559 struct ieee80211_hw *hw = pci_get_drvdata(pdev);
1560 struct rtw_dev *rtwdev;
1561 struct rtw_pci *rtwpci;
1562
1563 if (!hw)
1564 return;
1565
1566 rtwdev = hw->priv;
1567 rtwpci = (struct rtw_pci *)rtwdev->priv;
1568
1569 rtw_unregister_hw(rtwdev, hw);
1570 rtw_pci_disable_interrupt(rtwdev, rtwpci);
1571 rtw_pci_destroy(rtwdev, pdev);
1572 rtw_pci_declaim(rtwdev, pdev);
1573 rtw_pci_free_irq(rtwdev, pdev);
1574 rtw_core_deinit(rtwdev);
1575 ieee80211_free_hw(hw);
1576 }
1577 EXPORT_SYMBOL(rtw_pci_remove);
1578
> 1579 void rtw_pci_shutdown(struct pci_dev *pdev)
1580 {
1581 struct ieee80211_hw *hw = pci_get_drvdata(pdev);
1582 struct rtw_dev *rtwdev;
1583 struct rtw_chip_info *chip;
1584
1585 if (!hw)
1586 return;
1587
1588 rtwdev = hw->priv;
1589 chip = rtwdev->chip;
1590
1591 if (chip->ops->shutdown)
1592 chip->ops->shutdown(rtwdev);
1593 }
1594 EXPORT_SYMBOL(rtw_pci_shutdown);
1595

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

Attachment: .config.gz
Description: application/gzip