All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [RFC bpf-next] bpf: devmap: move drop error path to devmpap for XDP_REDIRECT
Date: Thu, 11 Feb 2021 00:23:19 +0800	[thread overview]
Message-ID: <202102110055.gWXbY677-lkp@intel.com> (raw)
In-Reply-To: <6266fb2549a06cb63d1593f9cee297a04b096433.1612966415.git.lorenzo@kernel.org>

[-- Attachment #1: Type: text/plain, Size: 40229 bytes --]

Hi Lorenzo,

[FYI, it's a private test report for your RFC patch.]
[auto build test ERROR on bpf-next/master]

url:    https://github.com/0day-ci/linux/commits/Lorenzo-Bianconi/bpf-devmap-move-drop-error-path-to-devmpap-for-XDP_REDIRECT/20210210-222154
base:   https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master
config: arm-randconfig-s032-20210209 (attached as .config)
compiler: arm-linux-gnueabi-gcc (GCC) 9.3.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # apt-get install sparse
        # sparse version: v0.6.3-215-g0fb77bb6-dirty
        # https://github.com/0day-ci/linux/commit/96ef538bb5cf75f19f3973722e4f66c7f65781db
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Lorenzo-Bianconi/bpf-devmap-move-drop-error-path-to-devmpap-for-XDP_REDIRECT/20210210-222154
        git checkout 96ef538bb5cf75f19f3973722e4f66c7f65781db
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=arm 

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

All error/warnings (new ones prefixed by >>):

   drivers/net/ethernet/socionext/netsec.c: In function 'netsec_xdp_xmit':
>> drivers/net/ethernet/socionext/netsec.c:1787:12: error: invalid storage class for function 'netsec_xdp_setup'
    1787 | static int netsec_xdp_setup(struct netsec_priv *priv, struct bpf_prog *prog,
         |            ^~~~~~~~~~~~~~~~
>> drivers/net/ethernet/socionext/netsec.c:1787:1: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
    1787 | static int netsec_xdp_setup(struct netsec_priv *priv, struct bpf_prog *prog,
         | ^~~~~~
>> drivers/net/ethernet/socionext/netsec.c:1813:12: error: invalid storage class for function 'netsec_xdp'
    1813 | static int netsec_xdp(struct net_device *ndev, struct netdev_bpf *xdp)
         |            ^~~~~~~~~~
>> drivers/net/ethernet/socionext/netsec.c:1836:14: error: initializer element is not constant
    1836 |  .ndo_bpf  = netsec_xdp,
         |              ^~~~~~~~~~
   drivers/net/ethernet/socionext/netsec.c:1836:14: note: (near initialization for 'netsec_netdev_ops.ndo_bpf')
>> drivers/net/ethernet/socionext/netsec.c:1839:12: error: invalid storage class for function 'netsec_of_probe'
    1839 | static int netsec_of_probe(struct platform_device *pdev,
         |            ^~~~~~~~~~~~~~~
>> drivers/net/ethernet/socionext/netsec.c:1868:12: error: invalid storage class for function 'netsec_acpi_probe'
    1868 | static int netsec_acpi_probe(struct platform_device *pdev,
         |            ^~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/socionext/netsec.c:1900:13: error: invalid storage class for function 'netsec_unregister_mdio'
    1900 | static void netsec_unregister_mdio(struct netsec_priv *priv)
         |             ^~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/socionext/netsec.c:1912:12: error: invalid storage class for function 'netsec_register_mdio'
    1912 | static int netsec_register_mdio(struct netsec_priv *priv, u32 phy_addr)
         |            ^~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/socionext/netsec.c:1977:12: error: invalid storage class for function 'netsec_probe'
    1977 | static int netsec_probe(struct platform_device *pdev)
         |            ^~~~~~~~~~~~
>> drivers/net/ethernet/socionext/netsec.c:2140:12: error: invalid storage class for function 'netsec_remove'
    2140 | static int netsec_remove(struct platform_device *pdev)
         |            ^~~~~~~~~~~~~
>> drivers/net/ethernet/socionext/netsec.c:2157:12: error: invalid storage class for function 'netsec_runtime_suspend'
    2157 | static int netsec_runtime_suspend(struct device *dev)
         |            ^~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/socionext/netsec.c:2168:12: error: invalid storage class for function 'netsec_runtime_resume'
    2168 | static int netsec_runtime_resume(struct device *dev)
         |            ^~~~~~~~~~~~~~~~~~~~~
   In file included from include/linux/device.h:25,
                    from include/linux/platform_device.h:13,
                    from drivers/net/ethernet/socionext/netsec.c:5:
   drivers/net/ethernet/socionext/netsec.c:2182:21: error: initializer element is not constant
    2182 |  SET_RUNTIME_PM_OPS(netsec_runtime_suspend, netsec_runtime_resume, NULL)
         |                     ^~~~~~~~~~~~~~~~~~~~~~
   include/linux/pm.h:342:21: note: in definition of macro 'SET_RUNTIME_PM_OPS'
     342 |  .runtime_suspend = suspend_fn, \
         |                     ^~~~~~~~~~
   drivers/net/ethernet/socionext/netsec.c:2182:21: note: (near initialization for 'netsec_pm_ops.runtime_suspend')
    2182 |  SET_RUNTIME_PM_OPS(netsec_runtime_suspend, netsec_runtime_resume, NULL)
         |                     ^~~~~~~~~~~~~~~~~~~~~~
   include/linux/pm.h:342:21: note: in definition of macro 'SET_RUNTIME_PM_OPS'
     342 |  .runtime_suspend = suspend_fn, \
         |                     ^~~~~~~~~~
   drivers/net/ethernet/socionext/netsec.c:2182:45: error: initializer element is not constant
    2182 |  SET_RUNTIME_PM_OPS(netsec_runtime_suspend, netsec_runtime_resume, NULL)
         |                                             ^~~~~~~~~~~~~~~~~~~~~
   include/linux/pm.h:343:20: note: in definition of macro 'SET_RUNTIME_PM_OPS'
     343 |  .runtime_resume = resume_fn, \
         |                    ^~~~~~~~~
   drivers/net/ethernet/socionext/netsec.c:2182:45: note: (near initialization for 'netsec_pm_ops.runtime_resume')
    2182 |  SET_RUNTIME_PM_OPS(netsec_runtime_suspend, netsec_runtime_resume, NULL)
         |                                             ^~~~~~~~~~~~~~~~~~~~~
   include/linux/pm.h:343:20: note: in definition of macro 'SET_RUNTIME_PM_OPS'
     343 |  .runtime_resume = resume_fn, \
         |                    ^~~~~~~~~
   drivers/net/ethernet/socionext/netsec.c:2189:1: warning: 'alias' attribute ignored [-Wattributes]
    2189 | MODULE_DEVICE_TABLE(of, netsec_dt_ids);
         | ^~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/socionext/netsec.c:2200:11: error: initializer element is not constant
    2200 |  .probe = netsec_probe,
         |           ^~~~~~~~~~~~
   drivers/net/ethernet/socionext/netsec.c:2200:11: note: (near initialization for 'netsec_driver.probe')
   drivers/net/ethernet/socionext/netsec.c:2201:12: error: initializer element is not constant
    2201 |  .remove = netsec_remove,
         |            ^~~~~~~~~~~~~
   drivers/net/ethernet/socionext/netsec.c:2201:12: note: (near initialization for 'netsec_driver.remove')
   In file included from include/linux/device.h:32,
                    from include/linux/platform_device.h:13,
                    from drivers/net/ethernet/socionext/netsec.c:5:
>> drivers/net/ethernet/socionext/netsec.c:2209:24: error: invalid storage class for function 'netsec_driver_init'
    2209 | module_platform_driver(netsec_driver);
         |                        ^~~~~~~~~~~~~
   include/linux/device/driver.h:259:19: note: in definition of macro 'module_driver'
     259 | static int __init __driver##_init(void) \
         |                   ^~~~~~~~
   drivers/net/ethernet/socionext/netsec.c:2209:1: note: in expansion of macro 'module_platform_driver'
    2209 | module_platform_driver(netsec_driver);
         | ^~~~~~~~~~~~~~~~~~~~~~
   In file included from include/linux/phy.h:22,
                    from include/linux/of_mdio.h:12,
                    from drivers/net/ethernet/socionext/netsec.c:8:
>> include/linux/module.h:132:42: error: invalid storage class for function '__inittest'
     132 |  static inline initcall_t __maybe_unused __inittest(void)  \
         |                                          ^~~~~~~~~~
   include/linux/device/driver.h:263:1: note: in expansion of macro 'module_init'
     263 | module_init(__driver##_init); \
         | ^~~~~~~~~~~
   include/linux/platform_device.h:257:2: note: in expansion of macro 'module_driver'
     257 |  module_driver(__platform_driver, platform_driver_register, \
         |  ^~~~~~~~~~~~~
   drivers/net/ethernet/socionext/netsec.c:2209:1: note: in expansion of macro 'module_platform_driver'
    2209 | module_platform_driver(netsec_driver);
         | ^~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/socionext/netsec.c:2209:1: warning: 'alias' attribute ignored [-Wattributes]
   In file included from include/linux/device.h:32,
                    from include/linux/platform_device.h:13,
                    from drivers/net/ethernet/socionext/netsec.c:5:
>> drivers/net/ethernet/socionext/netsec.c:2209:24: error: invalid storage class for function 'netsec_driver_exit'
    2209 | module_platform_driver(netsec_driver);
         |                        ^~~~~~~~~~~~~
   include/linux/device/driver.h:264:20: note: in definition of macro 'module_driver'
     264 | static void __exit __driver##_exit(void) \
         |                    ^~~~~~~~
   drivers/net/ethernet/socionext/netsec.c:2209:1: note: in expansion of macro 'module_platform_driver'
    2209 | module_platform_driver(netsec_driver);
         | ^~~~~~~~~~~~~~~~~~~~~~
>> include/linux/device/driver.h:264:1: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
     264 | static void __exit __driver##_exit(void) \
         | ^~~~~~
   include/linux/platform_device.h:257:2: note: in expansion of macro 'module_driver'
     257 |  module_driver(__platform_driver, platform_driver_register, \
         |  ^~~~~~~~~~~~~
   drivers/net/ethernet/socionext/netsec.c:2209:1: note: in expansion of macro 'module_platform_driver'
    2209 | module_platform_driver(netsec_driver);
         | ^~~~~~~~~~~~~~~~~~~~~~
   In file included from include/linux/phy.h:22,
                    from include/linux/of_mdio.h:12,
                    from drivers/net/ethernet/socionext/netsec.c:8:
>> include/linux/module.h:138:42: error: invalid storage class for function '__exittest'
     138 |  static inline exitcall_t __maybe_unused __exittest(void)  \
         |                                          ^~~~~~~~~~
   include/linux/device/driver.h:268:1: note: in expansion of macro 'module_exit'
     268 | module_exit(__driver##_exit);
         | ^~~~~~~~~~~
   include/linux/platform_device.h:257:2: note: in expansion of macro 'module_driver'
     257 |  module_driver(__platform_driver, platform_driver_register, \
         |  ^~~~~~~~~~~~~
   drivers/net/ethernet/socionext/netsec.c:2209:1: note: in expansion of macro 'module_platform_driver'
    2209 | module_platform_driver(netsec_driver);
         | ^~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/socionext/netsec.c:2209:1: warning: 'alias' attribute ignored [-Wattributes]
   In file included from include/linux/module.h:21,
                    from include/linux/phy.h:22,
                    from include/linux/of_mdio.h:12,
                    from drivers/net/ethernet/socionext/netsec.c:8:
>> include/linux/moduleparam.h:24:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
      24 |  static const char __UNIQUE_ID(name)[]      \
         |  ^~~~~~
   include/linux/module.h:163:32: note: in expansion of macro '__MODULE_INFO'
     163 | #define MODULE_INFO(tag, info) __MODULE_INFO(tag, tag, info)
         |                                ^~~~~~~~~~~~~
   include/linux/module.h:233:32: note: in expansion of macro 'MODULE_INFO'
     233 | #define MODULE_AUTHOR(_author) MODULE_INFO(author, _author)
         |                                ^~~~~~~~~~~
   drivers/net/ethernet/socionext/netsec.c:2211:1: note: in expansion of macro 'MODULE_AUTHOR'
    2211 | MODULE_AUTHOR("Jassi Brar <jaswinder.singh@linaro.org>");
         | ^~~~~~~~~~~~~
>> drivers/net/ethernet/socionext/netsec.c:2214:1: error: expected declaration or statement at end of input
    2214 | MODULE_LICENSE("GPL");
         | ^~~~~~~~~~~~~~
   At top level:
   drivers/net/ethernet/socionext/netsec.c:1755:12: warning: 'netsec_xdp_xmit' defined but not used [-Wunused-function]
    1755 | static int netsec_xdp_xmit(struct net_device *ndev, int n,
         |            ^~~~~~~~~~~~~~~


vim +/netsec_xdp_setup +1787 drivers/net/ethernet/socionext/netsec.c

ba2b232108d3c29 Ilias Apalodimas 2019-06-29  1786  
ba2b232108d3c29 Ilias Apalodimas 2019-06-29 @1787  static int netsec_xdp_setup(struct netsec_priv *priv, struct bpf_prog *prog,
ba2b232108d3c29 Ilias Apalodimas 2019-06-29  1788  			    struct netlink_ext_ack *extack)
ba2b232108d3c29 Ilias Apalodimas 2019-06-29  1789  {
ba2b232108d3c29 Ilias Apalodimas 2019-06-29  1790  	struct net_device *dev = priv->ndev;
ba2b232108d3c29 Ilias Apalodimas 2019-06-29  1791  	struct bpf_prog *old_prog;
ba2b232108d3c29 Ilias Apalodimas 2019-06-29  1792  
ba2b232108d3c29 Ilias Apalodimas 2019-06-29  1793  	/* For now just support only the usual MTU sized frames */
ba2b232108d3c29 Ilias Apalodimas 2019-06-29  1794  	if (prog && dev->mtu > 1500) {
ba2b232108d3c29 Ilias Apalodimas 2019-06-29  1795  		NL_SET_ERR_MSG_MOD(extack, "Jumbo frames not supported on XDP");
ba2b232108d3c29 Ilias Apalodimas 2019-06-29  1796  		return -EOPNOTSUPP;
ba2b232108d3c29 Ilias Apalodimas 2019-06-29  1797  	}
ba2b232108d3c29 Ilias Apalodimas 2019-06-29  1798  
ba2b232108d3c29 Ilias Apalodimas 2019-06-29  1799  	if (netif_running(dev))
ba2b232108d3c29 Ilias Apalodimas 2019-06-29  1800  		netsec_netdev_stop(dev);
ba2b232108d3c29 Ilias Apalodimas 2019-06-29  1801  
ba2b232108d3c29 Ilias Apalodimas 2019-06-29  1802  	/* Detach old prog, if any */
ba2b232108d3c29 Ilias Apalodimas 2019-06-29  1803  	old_prog = xchg(&priv->xdp_prog, prog);
ba2b232108d3c29 Ilias Apalodimas 2019-06-29  1804  	if (old_prog)
ba2b232108d3c29 Ilias Apalodimas 2019-06-29  1805  		bpf_prog_put(old_prog);
ba2b232108d3c29 Ilias Apalodimas 2019-06-29  1806  
ba2b232108d3c29 Ilias Apalodimas 2019-06-29  1807  	if (netif_running(dev))
ba2b232108d3c29 Ilias Apalodimas 2019-06-29  1808  		netsec_netdev_open(dev);
ba2b232108d3c29 Ilias Apalodimas 2019-06-29  1809  
ba2b232108d3c29 Ilias Apalodimas 2019-06-29  1810  	return 0;
ba2b232108d3c29 Ilias Apalodimas 2019-06-29  1811  }
ba2b232108d3c29 Ilias Apalodimas 2019-06-29  1812  
ba2b232108d3c29 Ilias Apalodimas 2019-06-29 @1813  static int netsec_xdp(struct net_device *ndev, struct netdev_bpf *xdp)
ba2b232108d3c29 Ilias Apalodimas 2019-06-29  1814  {
ba2b232108d3c29 Ilias Apalodimas 2019-06-29  1815  	struct netsec_priv *priv = netdev_priv(ndev);
ba2b232108d3c29 Ilias Apalodimas 2019-06-29  1816  
ba2b232108d3c29 Ilias Apalodimas 2019-06-29  1817  	switch (xdp->command) {
ba2b232108d3c29 Ilias Apalodimas 2019-06-29  1818  	case XDP_SETUP_PROG:
ba2b232108d3c29 Ilias Apalodimas 2019-06-29  1819  		return netsec_xdp_setup(priv, xdp->prog, xdp->extack);
ba2b232108d3c29 Ilias Apalodimas 2019-06-29  1820  	default:
ba2b232108d3c29 Ilias Apalodimas 2019-06-29  1821  		return -EINVAL;
ba2b232108d3c29 Ilias Apalodimas 2019-06-29  1822  	}
ba2b232108d3c29 Ilias Apalodimas 2019-06-29  1823  }
ba2b232108d3c29 Ilias Apalodimas 2019-06-29  1824  
533dd11a12f698c Jassi Brar       2018-01-06  1825  static const struct net_device_ops netsec_netdev_ops = {
533dd11a12f698c Jassi Brar       2018-01-06  1826  	.ndo_init		= netsec_netdev_init,
533dd11a12f698c Jassi Brar       2018-01-06  1827  	.ndo_uninit		= netsec_netdev_uninit,
533dd11a12f698c Jassi Brar       2018-01-06  1828  	.ndo_open		= netsec_netdev_open,
533dd11a12f698c Jassi Brar       2018-01-06  1829  	.ndo_stop		= netsec_netdev_stop,
533dd11a12f698c Jassi Brar       2018-01-06  1830  	.ndo_start_xmit		= netsec_netdev_start_xmit,
533dd11a12f698c Jassi Brar       2018-01-06  1831  	.ndo_set_features	= netsec_netdev_set_features,
533dd11a12f698c Jassi Brar       2018-01-06  1832  	.ndo_set_mac_address    = eth_mac_addr,
533dd11a12f698c Jassi Brar       2018-01-06  1833  	.ndo_validate_addr	= eth_validate_addr,
c5d19a6ecfce72d Heiner Kallweit  2020-01-21  1834  	.ndo_do_ioctl		= phy_do_ioctl,
ba2b232108d3c29 Ilias Apalodimas 2019-06-29  1835  	.ndo_xdp_xmit		= netsec_xdp_xmit,
ba2b232108d3c29 Ilias Apalodimas 2019-06-29 @1836  	.ndo_bpf		= netsec_xdp,
533dd11a12f698c Jassi Brar       2018-01-06  1837  };
533dd11a12f698c Jassi Brar       2018-01-06  1838  
533dd11a12f698c Jassi Brar       2018-01-06 @1839  static int netsec_of_probe(struct platform_device *pdev,
8e850f25b5812ae Masahisa Kojima  2018-10-23  1840  			   struct netsec_priv *priv, u32 *phy_addr)
533dd11a12f698c Jassi Brar       2018-01-06  1841  {
acd7aaf51b20263 Ard Biesheuvel   2020-10-18  1842  	int err;
acd7aaf51b20263 Ard Biesheuvel   2020-10-18  1843  
acd7aaf51b20263 Ard Biesheuvel   2020-10-18  1844  	err = of_get_phy_mode(pdev->dev.of_node, &priv->phy_interface);
acd7aaf51b20263 Ard Biesheuvel   2020-10-18  1845  	if (err) {
acd7aaf51b20263 Ard Biesheuvel   2020-10-18  1846  		dev_err(&pdev->dev, "missing required property 'phy-mode'\n");
acd7aaf51b20263 Ard Biesheuvel   2020-10-18  1847  		return err;
acd7aaf51b20263 Ard Biesheuvel   2020-10-18  1848  	}
acd7aaf51b20263 Ard Biesheuvel   2020-10-18  1849  
533dd11a12f698c Jassi Brar       2018-01-06  1850  	priv->phy_np = of_parse_phandle(pdev->dev.of_node, "phy-handle", 0);
533dd11a12f698c Jassi Brar       2018-01-06  1851  	if (!priv->phy_np) {
533dd11a12f698c Jassi Brar       2018-01-06  1852  		dev_err(&pdev->dev, "missing required property 'phy-handle'\n");
533dd11a12f698c Jassi Brar       2018-01-06  1853  		return -EINVAL;
533dd11a12f698c Jassi Brar       2018-01-06  1854  	}
533dd11a12f698c Jassi Brar       2018-01-06  1855  
8e850f25b5812ae Masahisa Kojima  2018-10-23  1856  	*phy_addr = of_mdio_parse_addr(&pdev->dev, priv->phy_np);
8e850f25b5812ae Masahisa Kojima  2018-10-23  1857  
533dd11a12f698c Jassi Brar       2018-01-06  1858  	priv->clk = devm_clk_get(&pdev->dev, NULL); /* get by 'phy_ref_clk' */
533dd11a12f698c Jassi Brar       2018-01-06  1859  	if (IS_ERR(priv->clk)) {
533dd11a12f698c Jassi Brar       2018-01-06  1860  		dev_err(&pdev->dev, "phy_ref_clk not found\n");
533dd11a12f698c Jassi Brar       2018-01-06  1861  		return PTR_ERR(priv->clk);
533dd11a12f698c Jassi Brar       2018-01-06  1862  	}
533dd11a12f698c Jassi Brar       2018-01-06  1863  	priv->freq = clk_get_rate(priv->clk);
533dd11a12f698c Jassi Brar       2018-01-06  1864  
533dd11a12f698c Jassi Brar       2018-01-06  1865  	return 0;
533dd11a12f698c Jassi Brar       2018-01-06  1866  }
533dd11a12f698c Jassi Brar       2018-01-06  1867  
533dd11a12f698c Jassi Brar       2018-01-06 @1868  static int netsec_acpi_probe(struct platform_device *pdev,
533dd11a12f698c Jassi Brar       2018-01-06  1869  			     struct netsec_priv *priv, u32 *phy_addr)
533dd11a12f698c Jassi Brar       2018-01-06  1870  {
533dd11a12f698c Jassi Brar       2018-01-06  1871  	int ret;
533dd11a12f698c Jassi Brar       2018-01-06  1872  
533dd11a12f698c Jassi Brar       2018-01-06  1873  	if (!IS_ENABLED(CONFIG_ACPI))
533dd11a12f698c Jassi Brar       2018-01-06  1874  		return -ENODEV;
533dd11a12f698c Jassi Brar       2018-01-06  1875  
acd7aaf51b20263 Ard Biesheuvel   2020-10-18  1876  	/* ACPI systems are assumed to configure the PHY in firmware, so
acd7aaf51b20263 Ard Biesheuvel   2020-10-18  1877  	 * there is really no need to discover the PHY mode from the DSDT.
acd7aaf51b20263 Ard Biesheuvel   2020-10-18  1878  	 * Since firmware is known to exist in the field that configures the
acd7aaf51b20263 Ard Biesheuvel   2020-10-18  1879  	 * PHY correctly but passes the wrong mode string in the phy-mode
acd7aaf51b20263 Ard Biesheuvel   2020-10-18  1880  	 * device property, we have no choice but to ignore it.
acd7aaf51b20263 Ard Biesheuvel   2020-10-18  1881  	 */
acd7aaf51b20263 Ard Biesheuvel   2020-10-18  1882  	priv->phy_interface = PHY_INTERFACE_MODE_NA;
acd7aaf51b20263 Ard Biesheuvel   2020-10-18  1883  
533dd11a12f698c Jassi Brar       2018-01-06  1884  	ret = device_property_read_u32(&pdev->dev, "phy-channel", phy_addr);
533dd11a12f698c Jassi Brar       2018-01-06  1885  	if (ret) {
533dd11a12f698c Jassi Brar       2018-01-06  1886  		dev_err(&pdev->dev,
533dd11a12f698c Jassi Brar       2018-01-06  1887  			"missing required property 'phy-channel'\n");
533dd11a12f698c Jassi Brar       2018-01-06  1888  		return ret;
533dd11a12f698c Jassi Brar       2018-01-06  1889  	}
533dd11a12f698c Jassi Brar       2018-01-06  1890  
533dd11a12f698c Jassi Brar       2018-01-06  1891  	ret = device_property_read_u32(&pdev->dev,
533dd11a12f698c Jassi Brar       2018-01-06  1892  				       "socionext,phy-clock-frequency",
533dd11a12f698c Jassi Brar       2018-01-06  1893  				       &priv->freq);
533dd11a12f698c Jassi Brar       2018-01-06  1894  	if (ret)
533dd11a12f698c Jassi Brar       2018-01-06  1895  		dev_err(&pdev->dev,
533dd11a12f698c Jassi Brar       2018-01-06  1896  			"missing required property 'socionext,phy-clock-frequency'\n");
533dd11a12f698c Jassi Brar       2018-01-06  1897  	return ret;
533dd11a12f698c Jassi Brar       2018-01-06  1898  }
533dd11a12f698c Jassi Brar       2018-01-06  1899  
533dd11a12f698c Jassi Brar       2018-01-06 @1900  static void netsec_unregister_mdio(struct netsec_priv *priv)
533dd11a12f698c Jassi Brar       2018-01-06  1901  {
533dd11a12f698c Jassi Brar       2018-01-06  1902  	struct phy_device *phydev = priv->phydev;
533dd11a12f698c Jassi Brar       2018-01-06  1903  
533dd11a12f698c Jassi Brar       2018-01-06  1904  	if (!dev_of_node(priv->dev) && phydev) {
533dd11a12f698c Jassi Brar       2018-01-06  1905  		phy_device_remove(phydev);
533dd11a12f698c Jassi Brar       2018-01-06  1906  		phy_device_free(phydev);
533dd11a12f698c Jassi Brar       2018-01-06  1907  	}
533dd11a12f698c Jassi Brar       2018-01-06  1908  
533dd11a12f698c Jassi Brar       2018-01-06  1909  	mdiobus_unregister(priv->mii_bus);
533dd11a12f698c Jassi Brar       2018-01-06  1910  }
533dd11a12f698c Jassi Brar       2018-01-06  1911  
533dd11a12f698c Jassi Brar       2018-01-06 @1912  static int netsec_register_mdio(struct netsec_priv *priv, u32 phy_addr)
533dd11a12f698c Jassi Brar       2018-01-06  1913  {
533dd11a12f698c Jassi Brar       2018-01-06  1914  	struct mii_bus *bus;
533dd11a12f698c Jassi Brar       2018-01-06  1915  	int ret;
533dd11a12f698c Jassi Brar       2018-01-06  1916  
533dd11a12f698c Jassi Brar       2018-01-06  1917  	bus = devm_mdiobus_alloc(priv->dev);
533dd11a12f698c Jassi Brar       2018-01-06  1918  	if (!bus)
533dd11a12f698c Jassi Brar       2018-01-06  1919  		return -ENOMEM;
533dd11a12f698c Jassi Brar       2018-01-06  1920  
533dd11a12f698c Jassi Brar       2018-01-06  1921  	snprintf(bus->id, MII_BUS_ID_SIZE, "%s", dev_name(priv->dev));
533dd11a12f698c Jassi Brar       2018-01-06  1922  	bus->priv = priv;
533dd11a12f698c Jassi Brar       2018-01-06  1923  	bus->name = "SNI NETSEC MDIO";
533dd11a12f698c Jassi Brar       2018-01-06  1924  	bus->read = netsec_phy_read;
533dd11a12f698c Jassi Brar       2018-01-06  1925  	bus->write = netsec_phy_write;
533dd11a12f698c Jassi Brar       2018-01-06  1926  	bus->parent = priv->dev;
533dd11a12f698c Jassi Brar       2018-01-06  1927  	priv->mii_bus = bus;
533dd11a12f698c Jassi Brar       2018-01-06  1928  
533dd11a12f698c Jassi Brar       2018-01-06  1929  	if (dev_of_node(priv->dev)) {
533dd11a12f698c Jassi Brar       2018-01-06  1930  		struct device_node *mdio_node, *parent = dev_of_node(priv->dev);
533dd11a12f698c Jassi Brar       2018-01-06  1931  
533dd11a12f698c Jassi Brar       2018-01-06  1932  		mdio_node = of_get_child_by_name(parent, "mdio");
533dd11a12f698c Jassi Brar       2018-01-06  1933  		if (mdio_node) {
533dd11a12f698c Jassi Brar       2018-01-06  1934  			parent = mdio_node;
533dd11a12f698c Jassi Brar       2018-01-06  1935  		} else {
533dd11a12f698c Jassi Brar       2018-01-06  1936  			/* older f/w doesn't populate the mdio subnode,
533dd11a12f698c Jassi Brar       2018-01-06  1937  			 * allow relaxed upgrade of f/w in due time.
533dd11a12f698c Jassi Brar       2018-01-06  1938  			 */
533dd11a12f698c Jassi Brar       2018-01-06  1939  			dev_info(priv->dev, "Upgrade f/w for mdio subnode!\n");
533dd11a12f698c Jassi Brar       2018-01-06  1940  		}
533dd11a12f698c Jassi Brar       2018-01-06  1941  
533dd11a12f698c Jassi Brar       2018-01-06  1942  		ret = of_mdiobus_register(bus, parent);
533dd11a12f698c Jassi Brar       2018-01-06  1943  		of_node_put(mdio_node);
533dd11a12f698c Jassi Brar       2018-01-06  1944  
533dd11a12f698c Jassi Brar       2018-01-06  1945  		if (ret) {
533dd11a12f698c Jassi Brar       2018-01-06  1946  			dev_err(priv->dev, "mdiobus register err(%d)\n", ret);
533dd11a12f698c Jassi Brar       2018-01-06  1947  			return ret;
533dd11a12f698c Jassi Brar       2018-01-06  1948  		}
533dd11a12f698c Jassi Brar       2018-01-06  1949  	} else {
533dd11a12f698c Jassi Brar       2018-01-06  1950  		/* Mask out all PHYs from auto probing. */
533dd11a12f698c Jassi Brar       2018-01-06  1951  		bus->phy_mask = ~0;
533dd11a12f698c Jassi Brar       2018-01-06  1952  		ret = mdiobus_register(bus);
533dd11a12f698c Jassi Brar       2018-01-06  1953  		if (ret) {
533dd11a12f698c Jassi Brar       2018-01-06  1954  			dev_err(priv->dev, "mdiobus register err(%d)\n", ret);
533dd11a12f698c Jassi Brar       2018-01-06  1955  			return ret;
533dd11a12f698c Jassi Brar       2018-01-06  1956  		}
533dd11a12f698c Jassi Brar       2018-01-06  1957  
533dd11a12f698c Jassi Brar       2018-01-06  1958  		priv->phydev = get_phy_device(bus, phy_addr, false);
533dd11a12f698c Jassi Brar       2018-01-06  1959  		if (IS_ERR(priv->phydev)) {
533dd11a12f698c Jassi Brar       2018-01-06  1960  			ret = PTR_ERR(priv->phydev);
533dd11a12f698c Jassi Brar       2018-01-06  1961  			dev_err(priv->dev, "get_phy_device err(%d)\n", ret);
533dd11a12f698c Jassi Brar       2018-01-06  1962  			priv->phydev = NULL;
533dd11a12f698c Jassi Brar       2018-01-06  1963  			return -ENODEV;
533dd11a12f698c Jassi Brar       2018-01-06  1964  		}
533dd11a12f698c Jassi Brar       2018-01-06  1965  
533dd11a12f698c Jassi Brar       2018-01-06  1966  		ret = phy_device_register(priv->phydev);
533dd11a12f698c Jassi Brar       2018-01-06  1967  		if (ret) {
533dd11a12f698c Jassi Brar       2018-01-06  1968  			mdiobus_unregister(bus);
533dd11a12f698c Jassi Brar       2018-01-06  1969  			dev_err(priv->dev,
533dd11a12f698c Jassi Brar       2018-01-06  1970  				"phy_device_register err(%d)\n", ret);
533dd11a12f698c Jassi Brar       2018-01-06  1971  		}
533dd11a12f698c Jassi Brar       2018-01-06  1972  	}
533dd11a12f698c Jassi Brar       2018-01-06  1973  
533dd11a12f698c Jassi Brar       2018-01-06  1974  	return ret;
533dd11a12f698c Jassi Brar       2018-01-06  1975  }
533dd11a12f698c Jassi Brar       2018-01-06  1976  
533dd11a12f698c Jassi Brar       2018-01-06 @1977  static int netsec_probe(struct platform_device *pdev)
533dd11a12f698c Jassi Brar       2018-01-06  1978  {
533dd11a12f698c Jassi Brar       2018-01-06  1979  	struct resource *mmio_res, *eeprom_res, *irq_res;
533dd11a12f698c Jassi Brar       2018-01-06  1980  	u8 *mac, macbuf[ETH_ALEN];
533dd11a12f698c Jassi Brar       2018-01-06  1981  	struct netsec_priv *priv;
533dd11a12f698c Jassi Brar       2018-01-06  1982  	u32 hw_ver, phy_addr = 0;
533dd11a12f698c Jassi Brar       2018-01-06  1983  	struct net_device *ndev;
533dd11a12f698c Jassi Brar       2018-01-06  1984  	int ret;
533dd11a12f698c Jassi Brar       2018-01-06  1985  
533dd11a12f698c Jassi Brar       2018-01-06  1986  	mmio_res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
533dd11a12f698c Jassi Brar       2018-01-06  1987  	if (!mmio_res) {
533dd11a12f698c Jassi Brar       2018-01-06  1988  		dev_err(&pdev->dev, "No MMIO resource found.\n");
533dd11a12f698c Jassi Brar       2018-01-06  1989  		return -ENODEV;
533dd11a12f698c Jassi Brar       2018-01-06  1990  	}
533dd11a12f698c Jassi Brar       2018-01-06  1991  
533dd11a12f698c Jassi Brar       2018-01-06  1992  	eeprom_res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
533dd11a12f698c Jassi Brar       2018-01-06  1993  	if (!eeprom_res) {
533dd11a12f698c Jassi Brar       2018-01-06  1994  		dev_info(&pdev->dev, "No EEPROM resource found.\n");
533dd11a12f698c Jassi Brar       2018-01-06  1995  		return -ENODEV;
533dd11a12f698c Jassi Brar       2018-01-06  1996  	}
533dd11a12f698c Jassi Brar       2018-01-06  1997  
533dd11a12f698c Jassi Brar       2018-01-06  1998  	irq_res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
533dd11a12f698c Jassi Brar       2018-01-06  1999  	if (!irq_res) {
533dd11a12f698c Jassi Brar       2018-01-06  2000  		dev_err(&pdev->dev, "No IRQ resource found.\n");
533dd11a12f698c Jassi Brar       2018-01-06  2001  		return -ENODEV;
533dd11a12f698c Jassi Brar       2018-01-06  2002  	}
533dd11a12f698c Jassi Brar       2018-01-06  2003  
533dd11a12f698c Jassi Brar       2018-01-06  2004  	ndev = alloc_etherdev(sizeof(*priv));
533dd11a12f698c Jassi Brar       2018-01-06  2005  	if (!ndev)
533dd11a12f698c Jassi Brar       2018-01-06  2006  		return -ENOMEM;
533dd11a12f698c Jassi Brar       2018-01-06  2007  
533dd11a12f698c Jassi Brar       2018-01-06  2008  	priv = netdev_priv(ndev);
533dd11a12f698c Jassi Brar       2018-01-06  2009  
533dd11a12f698c Jassi Brar       2018-01-06  2010  	spin_lock_init(&priv->reglock);
533dd11a12f698c Jassi Brar       2018-01-06  2011  	SET_NETDEV_DEV(ndev, &pdev->dev);
533dd11a12f698c Jassi Brar       2018-01-06  2012  	platform_set_drvdata(pdev, priv);
533dd11a12f698c Jassi Brar       2018-01-06  2013  	ndev->irq = irq_res->start;
533dd11a12f698c Jassi Brar       2018-01-06  2014  	priv->dev = &pdev->dev;
533dd11a12f698c Jassi Brar       2018-01-06  2015  	priv->ndev = ndev;
533dd11a12f698c Jassi Brar       2018-01-06  2016  
533dd11a12f698c Jassi Brar       2018-01-06  2017  	priv->msg_enable = NETIF_MSG_TX_ERR | NETIF_MSG_HW | NETIF_MSG_DRV |
533dd11a12f698c Jassi Brar       2018-01-06  2018  			   NETIF_MSG_LINK | NETIF_MSG_PROBE;
533dd11a12f698c Jassi Brar       2018-01-06  2019  
533dd11a12f698c Jassi Brar       2018-01-06  2020  	priv->ioaddr = devm_ioremap(&pdev->dev, mmio_res->start,
533dd11a12f698c Jassi Brar       2018-01-06  2021  				    resource_size(mmio_res));
533dd11a12f698c Jassi Brar       2018-01-06  2022  	if (!priv->ioaddr) {
533dd11a12f698c Jassi Brar       2018-01-06  2023  		dev_err(&pdev->dev, "devm_ioremap() failed\n");
533dd11a12f698c Jassi Brar       2018-01-06  2024  		ret = -ENXIO;
533dd11a12f698c Jassi Brar       2018-01-06  2025  		goto free_ndev;
533dd11a12f698c Jassi Brar       2018-01-06  2026  	}
533dd11a12f698c Jassi Brar       2018-01-06  2027  
533dd11a12f698c Jassi Brar       2018-01-06  2028  	priv->eeprom_base = devm_ioremap(&pdev->dev, eeprom_res->start,
533dd11a12f698c Jassi Brar       2018-01-06  2029  					 resource_size(eeprom_res));
533dd11a12f698c Jassi Brar       2018-01-06  2030  	if (!priv->eeprom_base) {
533dd11a12f698c Jassi Brar       2018-01-06  2031  		dev_err(&pdev->dev, "devm_ioremap() failed for EEPROM\n");
533dd11a12f698c Jassi Brar       2018-01-06  2032  		ret = -ENXIO;
533dd11a12f698c Jassi Brar       2018-01-06  2033  		goto free_ndev;
533dd11a12f698c Jassi Brar       2018-01-06  2034  	}
533dd11a12f698c Jassi Brar       2018-01-06  2035  
533dd11a12f698c Jassi Brar       2018-01-06  2036  	mac = device_get_mac_address(&pdev->dev, macbuf, sizeof(macbuf));
533dd11a12f698c Jassi Brar       2018-01-06  2037  	if (mac)
533dd11a12f698c Jassi Brar       2018-01-06  2038  		ether_addr_copy(ndev->dev_addr, mac);
533dd11a12f698c Jassi Brar       2018-01-06  2039  
533dd11a12f698c Jassi Brar       2018-01-06  2040  	if (priv->eeprom_base &&
533dd11a12f698c Jassi Brar       2018-01-06  2041  	    (!mac || !is_valid_ether_addr(ndev->dev_addr))) {
533dd11a12f698c Jassi Brar       2018-01-06  2042  		void __iomem *macp = priv->eeprom_base +
533dd11a12f698c Jassi Brar       2018-01-06  2043  					NETSEC_EEPROM_MAC_ADDRESS;
533dd11a12f698c Jassi Brar       2018-01-06  2044  
533dd11a12f698c Jassi Brar       2018-01-06  2045  		ndev->dev_addr[0] = readb(macp + 3);
533dd11a12f698c Jassi Brar       2018-01-06  2046  		ndev->dev_addr[1] = readb(macp + 2);
533dd11a12f698c Jassi Brar       2018-01-06  2047  		ndev->dev_addr[2] = readb(macp + 1);
533dd11a12f698c Jassi Brar       2018-01-06  2048  		ndev->dev_addr[3] = readb(macp + 0);
533dd11a12f698c Jassi Brar       2018-01-06  2049  		ndev->dev_addr[4] = readb(macp + 7);
533dd11a12f698c Jassi Brar       2018-01-06  2050  		ndev->dev_addr[5] = readb(macp + 6);
533dd11a12f698c Jassi Brar       2018-01-06  2051  	}
533dd11a12f698c Jassi Brar       2018-01-06  2052  
533dd11a12f698c Jassi Brar       2018-01-06  2053  	if (!is_valid_ether_addr(ndev->dev_addr)) {
533dd11a12f698c Jassi Brar       2018-01-06  2054  		dev_warn(&pdev->dev, "No MAC address found, using random\n");
533dd11a12f698c Jassi Brar       2018-01-06  2055  		eth_hw_addr_random(ndev);
533dd11a12f698c Jassi Brar       2018-01-06  2056  	}
533dd11a12f698c Jassi Brar       2018-01-06  2057  
533dd11a12f698c Jassi Brar       2018-01-06  2058  	if (dev_of_node(&pdev->dev))
8e850f25b5812ae Masahisa Kojima  2018-10-23  2059  		ret = netsec_of_probe(pdev, priv, &phy_addr);
533dd11a12f698c Jassi Brar       2018-01-06  2060  	else
533dd11a12f698c Jassi Brar       2018-01-06  2061  		ret = netsec_acpi_probe(pdev, priv, &phy_addr);
533dd11a12f698c Jassi Brar       2018-01-06  2062  	if (ret)
533dd11a12f698c Jassi Brar       2018-01-06  2063  		goto free_ndev;
533dd11a12f698c Jassi Brar       2018-01-06  2064  
8e850f25b5812ae Masahisa Kojima  2018-10-23  2065  	priv->phy_addr = phy_addr;
8e850f25b5812ae Masahisa Kojima  2018-10-23  2066  
533dd11a12f698c Jassi Brar       2018-01-06  2067  	if (!priv->freq) {
533dd11a12f698c Jassi Brar       2018-01-06  2068  		dev_err(&pdev->dev, "missing PHY reference clock frequency\n");
533dd11a12f698c Jassi Brar       2018-01-06  2069  		ret = -ENODEV;
533dd11a12f698c Jassi Brar       2018-01-06  2070  		goto free_ndev;
533dd11a12f698c Jassi Brar       2018-01-06  2071  	}
533dd11a12f698c Jassi Brar       2018-01-06  2072  
533dd11a12f698c Jassi Brar       2018-01-06  2073  	/* default for throughput */
533dd11a12f698c Jassi Brar       2018-01-06  2074  	priv->et_coalesce.rx_coalesce_usecs = 500;
533dd11a12f698c Jassi Brar       2018-01-06  2075  	priv->et_coalesce.rx_max_coalesced_frames = 8;
533dd11a12f698c Jassi Brar       2018-01-06  2076  	priv->et_coalesce.tx_coalesce_usecs = 500;
533dd11a12f698c Jassi Brar       2018-01-06  2077  	priv->et_coalesce.tx_max_coalesced_frames = 8;
533dd11a12f698c Jassi Brar       2018-01-06  2078  
533dd11a12f698c Jassi Brar       2018-01-06  2079  	ret = device_property_read_u32(&pdev->dev, "max-frame-size",
533dd11a12f698c Jassi Brar       2018-01-06  2080  				       &ndev->max_mtu);
533dd11a12f698c Jassi Brar       2018-01-06  2081  	if (ret < 0)
533dd11a12f698c Jassi Brar       2018-01-06  2082  		ndev->max_mtu = ETH_DATA_LEN;
533dd11a12f698c Jassi Brar       2018-01-06  2083  
533dd11a12f698c Jassi Brar       2018-01-06  2084  	/* runtime_pm coverage just for probe, open/close also cover it */
533dd11a12f698c Jassi Brar       2018-01-06  2085  	pm_runtime_enable(&pdev->dev);
533dd11a12f698c Jassi Brar       2018-01-06  2086  	pm_runtime_get_sync(&pdev->dev);
533dd11a12f698c Jassi Brar       2018-01-06  2087  
533dd11a12f698c Jassi Brar       2018-01-06  2088  	hw_ver = netsec_read(priv, NETSEC_REG_F_TAIKI_VER);
533dd11a12f698c Jassi Brar       2018-01-06  2089  	/* this driver only supports F_TAIKI style NETSEC */
533dd11a12f698c Jassi Brar       2018-01-06  2090  	if (NETSEC_F_NETSEC_VER_MAJOR_NUM(hw_ver) !=
533dd11a12f698c Jassi Brar       2018-01-06  2091  	    NETSEC_F_NETSEC_VER_MAJOR_NUM(NETSEC_REG_NETSEC_VER_F_TAIKI)) {
533dd11a12f698c Jassi Brar       2018-01-06  2092  		ret = -ENODEV;
533dd11a12f698c Jassi Brar       2018-01-06  2093  		goto pm_disable;
533dd11a12f698c Jassi Brar       2018-01-06  2094  	}
533dd11a12f698c Jassi Brar       2018-01-06  2095  
533dd11a12f698c Jassi Brar       2018-01-06  2096  	dev_info(&pdev->dev, "hardware revision %d.%d\n",
533dd11a12f698c Jassi Brar       2018-01-06  2097  		 hw_ver >> 16, hw_ver & 0xffff);
533dd11a12f698c Jassi Brar       2018-01-06  2098  
b6311b7bea41963 Ilias Apalodimas 2018-08-10  2099  	netif_napi_add(ndev, &priv->napi, netsec_napi_poll, NAPI_POLL_WEIGHT);
533dd11a12f698c Jassi Brar       2018-01-06  2100  
533dd11a12f698c Jassi Brar       2018-01-06  2101  	ndev->netdev_ops = &netsec_netdev_ops;
533dd11a12f698c Jassi Brar       2018-01-06  2102  	ndev->ethtool_ops = &netsec_ethtool_ops;
533dd11a12f698c Jassi Brar       2018-01-06  2103  
533dd11a12f698c Jassi Brar       2018-01-06  2104  	ndev->features |= NETIF_F_HIGHDMA | NETIF_F_RXCSUM | NETIF_F_GSO |
533dd11a12f698c Jassi Brar       2018-01-06  2105  				NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM;
533dd11a12f698c Jassi Brar       2018-01-06  2106  	ndev->hw_features = ndev->features;
533dd11a12f698c Jassi Brar       2018-01-06  2107  
533dd11a12f698c Jassi Brar       2018-01-06  2108  	priv->rx_cksum_offload_flag = true;
533dd11a12f698c Jassi Brar       2018-01-06  2109  
533dd11a12f698c Jassi Brar       2018-01-06  2110  	ret = netsec_register_mdio(priv, phy_addr);
533dd11a12f698c Jassi Brar       2018-01-06  2111  	if (ret)
533dd11a12f698c Jassi Brar       2018-01-06  2112  		goto unreg_napi;
533dd11a12f698c Jassi Brar       2018-01-06  2113  
312564269535892 Ard Biesheuvel   2018-05-25  2114  	if (dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(40)))
312564269535892 Ard Biesheuvel   2018-05-25  2115  		dev_warn(&pdev->dev, "Failed to set DMA mask\n");
533dd11a12f698c Jassi Brar       2018-01-06  2116  
533dd11a12f698c Jassi Brar       2018-01-06  2117  	ret = register_netdev(ndev);
533dd11a12f698c Jassi Brar       2018-01-06  2118  	if (ret) {
533dd11a12f698c Jassi Brar       2018-01-06  2119  		netif_err(priv, probe, ndev, "register_netdev() failed\n");
533dd11a12f698c Jassi Brar       2018-01-06  2120  		goto unreg_mii;
533dd11a12f698c Jassi Brar       2018-01-06  2121  	}
533dd11a12f698c Jassi Brar       2018-01-06  2122  
533dd11a12f698c Jassi Brar       2018-01-06  2123  	pm_runtime_put_sync(&pdev->dev);
533dd11a12f698c Jassi Brar       2018-01-06  2124  	return 0;
533dd11a12f698c Jassi Brar       2018-01-06  2125  
533dd11a12f698c Jassi Brar       2018-01-06  2126  unreg_mii:
533dd11a12f698c Jassi Brar       2018-01-06  2127  	netsec_unregister_mdio(priv);
533dd11a12f698c Jassi Brar       2018-01-06  2128  unreg_napi:
533dd11a12f698c Jassi Brar       2018-01-06  2129  	netif_napi_del(&priv->napi);
533dd11a12f698c Jassi Brar       2018-01-06  2130  pm_disable:
533dd11a12f698c Jassi Brar       2018-01-06  2131  	pm_runtime_put_sync(&pdev->dev);
533dd11a12f698c Jassi Brar       2018-01-06  2132  	pm_runtime_disable(&pdev->dev);
533dd11a12f698c Jassi Brar       2018-01-06  2133  free_ndev:
533dd11a12f698c Jassi Brar       2018-01-06  2134  	free_netdev(ndev);
533dd11a12f698c Jassi Brar       2018-01-06  2135  	dev_err(&pdev->dev, "init failed\n");
533dd11a12f698c Jassi Brar       2018-01-06  2136  
533dd11a12f698c Jassi Brar       2018-01-06  2137  	return ret;
533dd11a12f698c Jassi Brar       2018-01-06  2138  }
533dd11a12f698c Jassi Brar       2018-01-06  2139  

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

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 43101 bytes --]

  parent reply	other threads:[~2021-02-10 16:23 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-10 14:18 [RFC bpf-next] bpf: devmap: move drop error path to devmpap for XDP_REDIRECT Lorenzo Bianconi
2021-02-10 15:29 ` Jesper Dangaard Brouer
2021-02-10 16:23 ` kernel test robot [this message]
2021-02-10 18:19 ` 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=202102110055.gWXbY677-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.