[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <202103101234.B2OkiWWU-lkp@intel.com>
Date: Wed, 10 Mar 2021 12:55:20 +0800
From: kernel test robot <lkp@...el.com>
To: Daniel González Cabanelas <dgcbueu@...il.com>,
davem@...emloft.net
Cc: kbuild-all@...ts.01.org, kuba@...nel.org, f.fainelli@...il.com,
gregkh@...uxfoundation.org, netdev@...r.kernel.org,
noltari@...il.com
Subject: Re: [PATCH v3] bcm63xx_enet: fix internal phy IRQ assignment
Hi "Daniel,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on ipvs/master]
[also build test ERROR on linus/master sparc-next/master v5.12-rc2 next-20210309]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Daniel-Gonz-lez-Cabanelas/bcm63xx_enet-fix-internal-phy-IRQ-assignment/20210225-001952
base: https://git.kernel.org/pub/scm/linux/kernel/git/horms/ipvs.git master
config: mips-bcm63xx_defconfig (attached as .config)
compiler: mips-linux-gcc (GCC) 9.3.0
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
# https://github.com/0day-ci/linux/commit/65174cd38e1739216cc40e3d285f16391d79d6e5
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Daniel-Gonz-lez-Cabanelas/bcm63xx_enet-fix-internal-phy-IRQ-assignment/20210225-001952
git checkout 65174cd38e1739216cc40e3d285f16391d79d6e5
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=mips
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@...el.com>
All errors (new ones prefixed by >>):
drivers/net/ethernet/broadcom/bcm63xx_enet.c: In function 'bcm_enet_start_xmit':
drivers/net/ethernet/broadcom/bcm63xx_enet.c:583:9: warning: variable 'data' set but not used [-Wunused-but-set-variable]
583 | char *data;
| ^~~~
drivers/net/ethernet/broadcom/bcm63xx_enet.c: In function 'bcm_enet_probe':
>> drivers/net/ethernet/broadcom/bcm63xx_enet.c:1807:4: error: 'phydev' undeclared (first use in this function); did you mean 'pdev'?
1807 | phydev = mdiobus_get_phy(bus, priv->phy_id);
| ^~~~~~
| pdev
drivers/net/ethernet/broadcom/bcm63xx_enet.c:1807:4: note: each undeclared identifier is reported only once for each function it appears in
vim +1807 drivers/net/ethernet/broadcom/bcm63xx_enet.c
1683
1684 /*
1685 * allocate netdevice, request register memory and register device.
1686 */
1687 static int bcm_enet_probe(struct platform_device *pdev)
1688 {
1689 struct bcm_enet_priv *priv;
1690 struct net_device *dev;
1691 struct bcm63xx_enet_platform_data *pd;
1692 struct resource *res_irq, *res_irq_rx, *res_irq_tx;
1693 struct mii_bus *bus;
1694 int i, ret;
1695
1696 if (!bcm_enet_shared_base[0])
1697 return -EPROBE_DEFER;
1698
1699 res_irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
1700 res_irq_rx = platform_get_resource(pdev, IORESOURCE_IRQ, 1);
1701 res_irq_tx = platform_get_resource(pdev, IORESOURCE_IRQ, 2);
1702 if (!res_irq || !res_irq_rx || !res_irq_tx)
1703 return -ENODEV;
1704
1705 dev = alloc_etherdev(sizeof(*priv));
1706 if (!dev)
1707 return -ENOMEM;
1708 priv = netdev_priv(dev);
1709
1710 priv->enet_is_sw = false;
1711 priv->dma_maxburst = BCMENET_DMA_MAXBURST;
1712
1713 ret = bcm_enet_change_mtu(dev, dev->mtu);
1714 if (ret)
1715 goto out;
1716
1717 priv->base = devm_platform_ioremap_resource(pdev, 0);
1718 if (IS_ERR(priv->base)) {
1719 ret = PTR_ERR(priv->base);
1720 goto out;
1721 }
1722
1723 dev->irq = priv->irq = res_irq->start;
1724 priv->irq_rx = res_irq_rx->start;
1725 priv->irq_tx = res_irq_tx->start;
1726
1727 priv->mac_clk = devm_clk_get(&pdev->dev, "enet");
1728 if (IS_ERR(priv->mac_clk)) {
1729 ret = PTR_ERR(priv->mac_clk);
1730 goto out;
1731 }
1732 ret = clk_prepare_enable(priv->mac_clk);
1733 if (ret)
1734 goto out;
1735
1736 /* initialize default and fetch platform data */
1737 priv->rx_ring_size = BCMENET_DEF_RX_DESC;
1738 priv->tx_ring_size = BCMENET_DEF_TX_DESC;
1739
1740 pd = dev_get_platdata(&pdev->dev);
1741 if (pd) {
1742 memcpy(dev->dev_addr, pd->mac_addr, ETH_ALEN);
1743 priv->has_phy = pd->has_phy;
1744 priv->phy_id = pd->phy_id;
1745 priv->has_phy_interrupt = pd->has_phy_interrupt;
1746 priv->phy_interrupt = pd->phy_interrupt;
1747 priv->use_external_mii = !pd->use_internal_phy;
1748 priv->pause_auto = pd->pause_auto;
1749 priv->pause_rx = pd->pause_rx;
1750 priv->pause_tx = pd->pause_tx;
1751 priv->force_duplex_full = pd->force_duplex_full;
1752 priv->force_speed_100 = pd->force_speed_100;
1753 priv->dma_chan_en_mask = pd->dma_chan_en_mask;
1754 priv->dma_chan_int_mask = pd->dma_chan_int_mask;
1755 priv->dma_chan_width = pd->dma_chan_width;
1756 priv->dma_has_sram = pd->dma_has_sram;
1757 priv->dma_desc_shift = pd->dma_desc_shift;
1758 priv->rx_chan = pd->rx_chan;
1759 priv->tx_chan = pd->tx_chan;
1760 }
1761
1762 if (priv->has_phy && !priv->use_external_mii) {
1763 /* using internal PHY, enable clock */
1764 priv->phy_clk = devm_clk_get(&pdev->dev, "ephy");
1765 if (IS_ERR(priv->phy_clk)) {
1766 ret = PTR_ERR(priv->phy_clk);
1767 priv->phy_clk = NULL;
1768 goto out_disable_clk_mac;
1769 }
1770 ret = clk_prepare_enable(priv->phy_clk);
1771 if (ret)
1772 goto out_disable_clk_mac;
1773 }
1774
1775 /* do minimal hardware init to be able to probe mii bus */
1776 bcm_enet_hw_preinit(priv);
1777
1778 /* MII bus registration */
1779 if (priv->has_phy) {
1780
1781 priv->mii_bus = mdiobus_alloc();
1782 if (!priv->mii_bus) {
1783 ret = -ENOMEM;
1784 goto out_uninit_hw;
1785 }
1786
1787 bus = priv->mii_bus;
1788 bus->name = "bcm63xx_enet MII bus";
1789 bus->parent = &pdev->dev;
1790 bus->priv = priv;
1791 bus->read = bcm_enet_mdio_read_phylib;
1792 bus->write = bcm_enet_mdio_write_phylib;
1793 sprintf(bus->id, "%s-%d", pdev->name, pdev->id);
1794
1795 /* only probe bus where we think the PHY is, because
1796 * the mdio read operation return 0 instead of 0xffff
1797 * if a slave is not present on hw */
1798 bus->phy_mask = ~(1 << priv->phy_id);
1799
1800 ret = mdiobus_register(bus);
1801 if (ret) {
1802 dev_err(&pdev->dev, "unable to register mdio bus\n");
1803 goto out_free_mdio;
1804 }
1805
1806 if (priv->has_phy_interrupt) {
> 1807 phydev = mdiobus_get_phy(bus, priv->phy_id);
1808 if (!phydev) {
1809 dev_err(&dev->dev, "no PHY found\n");
1810 goto out_unregister_mdio;
1811 }
1812
1813 bus->irq[priv->phy_id] = priv->phy_interrupt;
1814 phydev->irq = priv->phy_interrupt;
1815 }
1816 } else {
1817
1818 /* run platform code to initialize PHY device */
1819 if (pd && pd->mii_config &&
1820 pd->mii_config(dev, 1, bcm_enet_mdio_read_mii,
1821 bcm_enet_mdio_write_mii)) {
1822 dev_err(&pdev->dev, "unable to configure mdio bus\n");
1823 goto out_uninit_hw;
1824 }
1825 }
1826
1827 spin_lock_init(&priv->rx_lock);
1828
1829 /* init rx timeout (used for oom) */
1830 timer_setup(&priv->rx_timeout, bcm_enet_refill_rx_timer, 0);
1831
1832 /* init the mib update lock&work */
1833 mutex_init(&priv->mib_update_lock);
1834 INIT_WORK(&priv->mib_update_task, bcm_enet_update_mib_counters_defer);
1835
1836 /* zero mib counters */
1837 for (i = 0; i < ENET_MIB_REG_COUNT; i++)
1838 enet_writel(priv, 0, ENET_MIB_REG(i));
1839
1840 /* register netdevice */
1841 dev->netdev_ops = &bcm_enet_ops;
1842 netif_napi_add(dev, &priv->napi, bcm_enet_poll, 16);
1843
1844 dev->ethtool_ops = &bcm_enet_ethtool_ops;
1845 /* MTU range: 46 - 2028 */
1846 dev->min_mtu = ETH_ZLEN - ETH_HLEN;
1847 dev->max_mtu = BCMENET_MAX_MTU - VLAN_ETH_HLEN;
1848 SET_NETDEV_DEV(dev, &pdev->dev);
1849
1850 ret = register_netdev(dev);
1851 if (ret)
1852 goto out_unregister_mdio;
1853
1854 netif_carrier_off(dev);
1855 platform_set_drvdata(pdev, dev);
1856 priv->pdev = pdev;
1857 priv->net_dev = dev;
1858
1859 return 0;
1860
1861 out_unregister_mdio:
1862 if (priv->mii_bus)
1863 mdiobus_unregister(priv->mii_bus);
1864
1865 out_free_mdio:
1866 if (priv->mii_bus)
1867 mdiobus_free(priv->mii_bus);
1868
1869 out_uninit_hw:
1870 /* turn off mdc clock */
1871 enet_writel(priv, 0, ENET_MIISC_REG);
1872 clk_disable_unprepare(priv->phy_clk);
1873
1874 out_disable_clk_mac:
1875 clk_disable_unprepare(priv->mac_clk);
1876 out:
1877 free_netdev(dev);
1878 return ret;
1879 }
1880
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Download attachment ".config.gz" of type "application/gzip" (14342 bytes)
Powered by blists - more mailing lists