<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/drivers/net/ethernet/rdc, branch v5.9</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>r6040: switch from 'pci_' to 'dma_' API</title>
<updated>2020-07-21T00:49:50+00:00</updated>
<author>
<name>Christophe JAILLET</name>
<email>christophe.jaillet@wanadoo.fr</email>
</author>
<published>2020-07-20T13:02:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=0b0edb993c99bc9a2d6d92810736cd77300b3770'/>
<id>0b0edb993c99bc9a2d6d92810736cd77300b3770</id>
<content type='text'>
The wrappers in include/linux/pci-dma-compat.h should go away.

The patch has been generated with the coccinelle script below and has been
hand modified to replace GFP_ with a correct flag.
It has been compile tested.

When memory is allocated in 'r6040_open()', GFP_KERNEL can be used because
this is a net_device_ops' 'ndo_open' function. This function is protected
by the rtnl_lock() semaphore. So only a mutex is used and no spin_lock is
acquired.

@@
@@
-    PCI_DMA_BIDIRECTIONAL
+    DMA_BIDIRECTIONAL

@@
@@
-    PCI_DMA_TODEVICE
+    DMA_TO_DEVICE

@@
@@
-    PCI_DMA_FROMDEVICE
+    DMA_FROM_DEVICE

@@
@@
-    PCI_DMA_NONE
+    DMA_NONE

@@
expression e1, e2, e3;
@@
-    pci_alloc_consistent(e1, e2, e3)
+    dma_alloc_coherent(&amp;e1-&gt;dev, e2, e3, GFP_)

@@
expression e1, e2, e3;
@@
-    pci_zalloc_consistent(e1, e2, e3)
+    dma_alloc_coherent(&amp;e1-&gt;dev, e2, e3, GFP_)

@@
expression e1, e2, e3, e4;
@@
-    pci_free_consistent(e1, e2, e3, e4)
+    dma_free_coherent(&amp;e1-&gt;dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
-    pci_map_single(e1, e2, e3, e4)
+    dma_map_single(&amp;e1-&gt;dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
-    pci_unmap_single(e1, e2, e3, e4)
+    dma_unmap_single(&amp;e1-&gt;dev, e2, e3, e4)

@@
expression e1, e2, e3, e4, e5;
@@
-    pci_map_page(e1, e2, e3, e4, e5)
+    dma_map_page(&amp;e1-&gt;dev, e2, e3, e4, e5)

@@
expression e1, e2, e3, e4;
@@
-    pci_unmap_page(e1, e2, e3, e4)
+    dma_unmap_page(&amp;e1-&gt;dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
-    pci_map_sg(e1, e2, e3, e4)
+    dma_map_sg(&amp;e1-&gt;dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
-    pci_unmap_sg(e1, e2, e3, e4)
+    dma_unmap_sg(&amp;e1-&gt;dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
-    pci_dma_sync_single_for_cpu(e1, e2, e3, e4)
+    dma_sync_single_for_cpu(&amp;e1-&gt;dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
-    pci_dma_sync_single_for_device(e1, e2, e3, e4)
+    dma_sync_single_for_device(&amp;e1-&gt;dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
-    pci_dma_sync_sg_for_cpu(e1, e2, e3, e4)
+    dma_sync_sg_for_cpu(&amp;e1-&gt;dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
-    pci_dma_sync_sg_for_device(e1, e2, e3, e4)
+    dma_sync_sg_for_device(&amp;e1-&gt;dev, e2, e3, e4)

@@
expression e1, e2;
@@
-    pci_dma_mapping_error(e1, e2)
+    dma_mapping_error(&amp;e1-&gt;dev, e2)

@@
expression e1, e2;
@@
-    pci_set_dma_mask(e1, e2)
+    dma_set_mask(&amp;e1-&gt;dev, e2)

@@
expression e1, e2;
@@
-    pci_set_consistent_dma_mask(e1, e2)
+    dma_set_coherent_mask(&amp;e1-&gt;dev, e2)

Signed-off-by: Christophe JAILLET &lt;christophe.jaillet@wanadoo.fr&gt;
Acked-by: Florian Fainelli &lt;f.fainelli@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The wrappers in include/linux/pci-dma-compat.h should go away.

The patch has been generated with the coccinelle script below and has been
hand modified to replace GFP_ with a correct flag.
It has been compile tested.

When memory is allocated in 'r6040_open()', GFP_KERNEL can be used because
this is a net_device_ops' 'ndo_open' function. This function is protected
by the rtnl_lock() semaphore. So only a mutex is used and no spin_lock is
acquired.

@@
@@
-    PCI_DMA_BIDIRECTIONAL
+    DMA_BIDIRECTIONAL

@@
@@
-    PCI_DMA_TODEVICE
+    DMA_TO_DEVICE

@@
@@
-    PCI_DMA_FROMDEVICE
+    DMA_FROM_DEVICE

@@
@@
-    PCI_DMA_NONE
+    DMA_NONE

@@
expression e1, e2, e3;
@@
-    pci_alloc_consistent(e1, e2, e3)
+    dma_alloc_coherent(&amp;e1-&gt;dev, e2, e3, GFP_)

@@
expression e1, e2, e3;
@@
-    pci_zalloc_consistent(e1, e2, e3)
+    dma_alloc_coherent(&amp;e1-&gt;dev, e2, e3, GFP_)

@@
expression e1, e2, e3, e4;
@@
-    pci_free_consistent(e1, e2, e3, e4)
+    dma_free_coherent(&amp;e1-&gt;dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
-    pci_map_single(e1, e2, e3, e4)
+    dma_map_single(&amp;e1-&gt;dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
-    pci_unmap_single(e1, e2, e3, e4)
+    dma_unmap_single(&amp;e1-&gt;dev, e2, e3, e4)

@@
expression e1, e2, e3, e4, e5;
@@
-    pci_map_page(e1, e2, e3, e4, e5)
+    dma_map_page(&amp;e1-&gt;dev, e2, e3, e4, e5)

@@
expression e1, e2, e3, e4;
@@
-    pci_unmap_page(e1, e2, e3, e4)
+    dma_unmap_page(&amp;e1-&gt;dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
-    pci_map_sg(e1, e2, e3, e4)
+    dma_map_sg(&amp;e1-&gt;dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
-    pci_unmap_sg(e1, e2, e3, e4)
+    dma_unmap_sg(&amp;e1-&gt;dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
-    pci_dma_sync_single_for_cpu(e1, e2, e3, e4)
+    dma_sync_single_for_cpu(&amp;e1-&gt;dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
-    pci_dma_sync_single_for_device(e1, e2, e3, e4)
+    dma_sync_single_for_device(&amp;e1-&gt;dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
-    pci_dma_sync_sg_for_cpu(e1, e2, e3, e4)
+    dma_sync_sg_for_cpu(&amp;e1-&gt;dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
-    pci_dma_sync_sg_for_device(e1, e2, e3, e4)
+    dma_sync_sg_for_device(&amp;e1-&gt;dev, e2, e3, e4)

@@
expression e1, e2;
@@
-    pci_dma_mapping_error(e1, e2)
+    dma_mapping_error(&amp;e1-&gt;dev, e2)

@@
expression e1, e2;
@@
-    pci_set_dma_mask(e1, e2)
+    dma_set_mask(&amp;e1-&gt;dev, e2)

@@
expression e1, e2;
@@
-    pci_set_consistent_dma_mask(e1, e2)
+    dma_set_coherent_mask(&amp;e1-&gt;dev, e2)

Signed-off-by: Christophe JAILLET &lt;christophe.jaillet@wanadoo.fr&gt;
Acked-by: Florian Fainelli &lt;f.fainelli@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>treewide: replace '---help---' in Kconfig files with 'help'</title>
<updated>2020-06-13T16:57:21+00:00</updated>
<author>
<name>Masahiro Yamada</name>
<email>masahiroy@kernel.org</email>
</author>
<published>2020-06-13T16:50:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=a7f7f6248d9740d710fd6bd190293fe5e16410ac'/>
<id>a7f7f6248d9740d710fd6bd190293fe5e16410ac</id>
<content type='text'>
Since commit 84af7a6194e4 ("checkpatch: kconfig: prefer 'help' over
'---help---'"), the number of '---help---' has been gradually
decreasing, but there are still more than 2400 instances.

This commit finishes the conversion. While I touched the lines,
I also fixed the indentation.

There are a variety of indentation styles found.

  a) 4 spaces + '---help---'
  b) 7 spaces + '---help---'
  c) 8 spaces + '---help---'
  d) 1 space + 1 tab + '---help---'
  e) 1 tab + '---help---'    (correct indentation)
  f) 1 tab + 1 space + '---help---'
  g) 1 tab + 2 spaces + '---help---'

In order to convert all of them to 1 tab + 'help', I ran the
following commend:

  $ find . -name 'Kconfig*' | xargs sed -i 's/^[[:space:]]*---help---/\thelp/'

Signed-off-by: Masahiro Yamada &lt;masahiroy@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Since commit 84af7a6194e4 ("checkpatch: kconfig: prefer 'help' over
'---help---'"), the number of '---help---' has been gradually
decreasing, but there are still more than 2400 instances.

This commit finishes the conversion. While I touched the lines,
I also fixed the indentation.

There are a variety of indentation styles found.

  a) 4 spaces + '---help---'
  b) 7 spaces + '---help---'
  c) 8 spaces + '---help---'
  d) 1 space + 1 tab + '---help---'
  e) 1 tab + '---help---'    (correct indentation)
  f) 1 tab + 1 space + '---help---'
  g) 1 tab + 2 spaces + '---help---'

In order to convert all of them to 1 tab + 'help', I ran the
following commend:

  $ find . -name 'Kconfig*' | xargs sed -i 's/^[[:space:]]*---help---/\thelp/'

Signed-off-by: Masahiro Yamada &lt;masahiroy@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net: convert suitable network drivers to use phy_do_ioctl</title>
<updated>2020-01-21T09:50:41+00:00</updated>
<author>
<name>Heiner Kallweit</name>
<email>hkallweit1@gmail.com</email>
</author>
<published>2020-01-20T21:18:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=f1294617d2f38bd2b9f6cce516b0326858b61182'/>
<id>f1294617d2f38bd2b9f6cce516b0326858b61182</id>
<content type='text'>
Convert suitable network drivers to use phy_do_ioctl.

Signed-off-by: Heiner Kallweit &lt;hkallweit1@gmail.com&gt;
Reviewed-by: Florian Fainelli &lt;f.fainelli@gmail.com&gt;
Reviewed-by: Andrew Lunn &lt;andrew@lunn.ch&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Convert suitable network drivers to use phy_do_ioctl.

Signed-off-by: Heiner Kallweit &lt;hkallweit1@gmail.com&gt;
Reviewed-by: Florian Fainelli &lt;f.fainelli@gmail.com&gt;
Reviewed-by: Andrew Lunn &lt;andrew@lunn.ch&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>netdev: pass the stuck queue to the timeout handler</title>
<updated>2019-12-13T05:38:57+00:00</updated>
<author>
<name>Michael S. Tsirkin</name>
<email>mst@redhat.com</email>
</author>
<published>2019-12-10T14:23:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=0290bd291cc0e0488e35e66bf39efcd7d9d9122b'/>
<id>0290bd291cc0e0488e35e66bf39efcd7d9d9122b</id>
<content type='text'>
This allows incrementing the correct timeout statistic without any mess.
Down the road, devices can learn to reset just the specific queue.

The patch was generated with the following script:

use strict;
use warnings;

our $^I = '.bak';

my @work = (
["arch/m68k/emu/nfeth.c", "nfeth_tx_timeout"],
["arch/um/drivers/net_kern.c", "uml_net_tx_timeout"],
["arch/um/drivers/vector_kern.c", "vector_net_tx_timeout"],
["arch/xtensa/platforms/iss/network.c", "iss_net_tx_timeout"],
["drivers/char/pcmcia/synclink_cs.c", "hdlcdev_tx_timeout"],
["drivers/infiniband/ulp/ipoib/ipoib_main.c", "ipoib_timeout"],
["drivers/infiniband/ulp/ipoib/ipoib_main.c", "ipoib_timeout"],
["drivers/message/fusion/mptlan.c", "mpt_lan_tx_timeout"],
["drivers/misc/sgi-xp/xpnet.c", "xpnet_dev_tx_timeout"],
["drivers/net/appletalk/cops.c", "cops_timeout"],
["drivers/net/arcnet/arcdevice.h", "arcnet_timeout"],
["drivers/net/arcnet/arcnet.c", "arcnet_timeout"],
["drivers/net/arcnet/com20020.c", "arcnet_timeout"],
["drivers/net/ethernet/3com/3c509.c", "el3_tx_timeout"],
["drivers/net/ethernet/3com/3c515.c", "corkscrew_timeout"],
["drivers/net/ethernet/3com/3c574_cs.c", "el3_tx_timeout"],
["drivers/net/ethernet/3com/3c589_cs.c", "el3_tx_timeout"],
["drivers/net/ethernet/3com/3c59x.c", "vortex_tx_timeout"],
["drivers/net/ethernet/3com/3c59x.c", "vortex_tx_timeout"],
["drivers/net/ethernet/3com/typhoon.c", "typhoon_tx_timeout"],
["drivers/net/ethernet/8390/8390.h", "ei_tx_timeout"],
["drivers/net/ethernet/8390/8390.h", "eip_tx_timeout"],
["drivers/net/ethernet/8390/8390.c", "ei_tx_timeout"],
["drivers/net/ethernet/8390/8390p.c", "eip_tx_timeout"],
["drivers/net/ethernet/8390/ax88796.c", "ax_ei_tx_timeout"],
["drivers/net/ethernet/8390/axnet_cs.c", "axnet_tx_timeout"],
["drivers/net/ethernet/8390/etherh.c", "__ei_tx_timeout"],
["drivers/net/ethernet/8390/hydra.c", "__ei_tx_timeout"],
["drivers/net/ethernet/8390/mac8390.c", "__ei_tx_timeout"],
["drivers/net/ethernet/8390/mcf8390.c", "__ei_tx_timeout"],
["drivers/net/ethernet/8390/lib8390.c", "__ei_tx_timeout"],
["drivers/net/ethernet/8390/ne2k-pci.c", "ei_tx_timeout"],
["drivers/net/ethernet/8390/pcnet_cs.c", "ei_tx_timeout"],
["drivers/net/ethernet/8390/smc-ultra.c", "ei_tx_timeout"],
["drivers/net/ethernet/8390/wd.c", "ei_tx_timeout"],
["drivers/net/ethernet/8390/zorro8390.c", "__ei_tx_timeout"],
["drivers/net/ethernet/adaptec/starfire.c", "tx_timeout"],
["drivers/net/ethernet/agere/et131x.c", "et131x_tx_timeout"],
["drivers/net/ethernet/allwinner/sun4i-emac.c", "emac_timeout"],
["drivers/net/ethernet/alteon/acenic.c", "ace_watchdog"],
["drivers/net/ethernet/amazon/ena/ena_netdev.c", "ena_tx_timeout"],
["drivers/net/ethernet/amd/7990.h", "lance_tx_timeout"],
["drivers/net/ethernet/amd/7990.c", "lance_tx_timeout"],
["drivers/net/ethernet/amd/a2065.c", "lance_tx_timeout"],
["drivers/net/ethernet/amd/am79c961a.c", "am79c961_timeout"],
["drivers/net/ethernet/amd/amd8111e.c", "amd8111e_tx_timeout"],
["drivers/net/ethernet/amd/ariadne.c", "ariadne_tx_timeout"],
["drivers/net/ethernet/amd/atarilance.c", "lance_tx_timeout"],
["drivers/net/ethernet/amd/au1000_eth.c", "au1000_tx_timeout"],
["drivers/net/ethernet/amd/declance.c", "lance_tx_timeout"],
["drivers/net/ethernet/amd/lance.c", "lance_tx_timeout"],
["drivers/net/ethernet/amd/mvme147.c", "lance_tx_timeout"],
["drivers/net/ethernet/amd/ni65.c", "ni65_timeout"],
["drivers/net/ethernet/amd/nmclan_cs.c", "mace_tx_timeout"],
["drivers/net/ethernet/amd/pcnet32.c", "pcnet32_tx_timeout"],
["drivers/net/ethernet/amd/sunlance.c", "lance_tx_timeout"],
["drivers/net/ethernet/amd/xgbe/xgbe-drv.c", "xgbe_tx_timeout"],
["drivers/net/ethernet/apm/xgene-v2/main.c", "xge_timeout"],
["drivers/net/ethernet/apm/xgene/xgene_enet_main.c", "xgene_enet_timeout"],
["drivers/net/ethernet/apple/macmace.c", "mace_tx_timeout"],
["drivers/net/ethernet/atheros/ag71xx.c", "ag71xx_tx_timeout"],
["drivers/net/ethernet/atheros/alx/main.c", "alx_tx_timeout"],
["drivers/net/ethernet/atheros/atl1c/atl1c_main.c", "atl1c_tx_timeout"],
["drivers/net/ethernet/atheros/atl1e/atl1e_main.c", "atl1e_tx_timeout"],
["drivers/net/ethernet/atheros/atlx/atl.c", "atlx_tx_timeout"],
["drivers/net/ethernet/atheros/atlx/atl1.c", "atlx_tx_timeout"],
["drivers/net/ethernet/atheros/atlx/atl2.c", "atl2_tx_timeout"],
["drivers/net/ethernet/broadcom/b44.c", "b44_tx_timeout"],
["drivers/net/ethernet/broadcom/bcmsysport.c", "bcm_sysport_tx_timeout"],
["drivers/net/ethernet/broadcom/bnx2.c", "bnx2_tx_timeout"],
["drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h", "bnx2x_tx_timeout"],
["drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c", "bnx2x_tx_timeout"],
["drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c", "bnx2x_tx_timeout"],
["drivers/net/ethernet/broadcom/bnxt/bnxt.c", "bnxt_tx_timeout"],
["drivers/net/ethernet/broadcom/genet/bcmgenet.c", "bcmgenet_timeout"],
["drivers/net/ethernet/broadcom/sb1250-mac.c", "sbmac_tx_timeout"],
["drivers/net/ethernet/broadcom/tg3.c", "tg3_tx_timeout"],
["drivers/net/ethernet/calxeda/xgmac.c", "xgmac_tx_timeout"],
["drivers/net/ethernet/cavium/liquidio/lio_main.c", "liquidio_tx_timeout"],
["drivers/net/ethernet/cavium/liquidio/lio_vf_main.c", "liquidio_tx_timeout"],
["drivers/net/ethernet/cavium/liquidio/lio_vf_rep.c", "lio_vf_rep_tx_timeout"],
["drivers/net/ethernet/cavium/thunder/nicvf_main.c", "nicvf_tx_timeout"],
["drivers/net/ethernet/cirrus/cs89x0.c", "net_timeout"],
["drivers/net/ethernet/cisco/enic/enic_main.c", "enic_tx_timeout"],
["drivers/net/ethernet/cisco/enic/enic_main.c", "enic_tx_timeout"],
["drivers/net/ethernet/cortina/gemini.c", "gmac_tx_timeout"],
["drivers/net/ethernet/davicom/dm9000.c", "dm9000_timeout"],
["drivers/net/ethernet/dec/tulip/de2104x.c", "de_tx_timeout"],
["drivers/net/ethernet/dec/tulip/tulip_core.c", "tulip_tx_timeout"],
["drivers/net/ethernet/dec/tulip/winbond-840.c", "tx_timeout"],
["drivers/net/ethernet/dlink/dl2k.c", "rio_tx_timeout"],
["drivers/net/ethernet/dlink/sundance.c", "tx_timeout"],
["drivers/net/ethernet/emulex/benet/be_main.c", "be_tx_timeout"],
["drivers/net/ethernet/ethoc.c", "ethoc_tx_timeout"],
["drivers/net/ethernet/faraday/ftgmac100.c", "ftgmac100_tx_timeout"],
["drivers/net/ethernet/fealnx.c", "fealnx_tx_timeout"],
["drivers/net/ethernet/freescale/dpaa/dpaa_eth.c", "dpaa_tx_timeout"],
["drivers/net/ethernet/freescale/fec_main.c", "fec_timeout"],
["drivers/net/ethernet/freescale/fec_mpc52xx.c", "mpc52xx_fec_tx_timeout"],
["drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c", "fs_timeout"],
["drivers/net/ethernet/freescale/gianfar.c", "gfar_timeout"],
["drivers/net/ethernet/freescale/ucc_geth.c", "ucc_geth_timeout"],
["drivers/net/ethernet/fujitsu/fmvj18x_cs.c", "fjn_tx_timeout"],
["drivers/net/ethernet/google/gve/gve_main.c", "gve_tx_timeout"],
["drivers/net/ethernet/hisilicon/hip04_eth.c", "hip04_timeout"],
["drivers/net/ethernet/hisilicon/hix5hd2_gmac.c", "hix5hd2_net_timeout"],
["drivers/net/ethernet/hisilicon/hns/hns_enet.c", "hns_nic_net_timeout"],
["drivers/net/ethernet/hisilicon/hns3/hns3_enet.c", "hns3_nic_net_timeout"],
["drivers/net/ethernet/huawei/hinic/hinic_main.c", "hinic_tx_timeout"],
["drivers/net/ethernet/i825xx/82596.c", "i596_tx_timeout"],
["drivers/net/ethernet/i825xx/ether1.c", "ether1_timeout"],
["drivers/net/ethernet/i825xx/lib82596.c", "i596_tx_timeout"],
["drivers/net/ethernet/i825xx/sun3_82586.c", "sun3_82586_timeout"],
["drivers/net/ethernet/ibm/ehea/ehea_main.c", "ehea_tx_watchdog"],
["drivers/net/ethernet/ibm/emac/core.c", "emac_tx_timeout"],
["drivers/net/ethernet/ibm/emac/core.c", "emac_tx_timeout"],
["drivers/net/ethernet/ibm/ibmvnic.c", "ibmvnic_tx_timeout"],
["drivers/net/ethernet/intel/e100.c", "e100_tx_timeout"],
["drivers/net/ethernet/intel/e1000/e1000_main.c", "e1000_tx_timeout"],
["drivers/net/ethernet/intel/e1000e/netdev.c", "e1000_tx_timeout"],
["drivers/net/ethernet/intel/fm10k/fm10k_netdev.c", "fm10k_tx_timeout"],
["drivers/net/ethernet/intel/i40e/i40e_main.c", "i40e_tx_timeout"],
["drivers/net/ethernet/intel/iavf/iavf_main.c", "iavf_tx_timeout"],
["drivers/net/ethernet/intel/ice/ice_main.c", "ice_tx_timeout"],
["drivers/net/ethernet/intel/ice/ice_main.c", "ice_tx_timeout"],
["drivers/net/ethernet/intel/igb/igb_main.c", "igb_tx_timeout"],
["drivers/net/ethernet/intel/igbvf/netdev.c", "igbvf_tx_timeout"],
["drivers/net/ethernet/intel/ixgb/ixgb_main.c", "ixgb_tx_timeout"],
["drivers/net/ethernet/intel/ixgbe/ixgbe_debugfs.c", "adapter-&gt;netdev-&gt;netdev_ops-&gt;ndo_tx_timeout(adapter-&gt;netdev);"],
["drivers/net/ethernet/intel/ixgbe/ixgbe_main.c", "ixgbe_tx_timeout"],
["drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c", "ixgbevf_tx_timeout"],
["drivers/net/ethernet/jme.c", "jme_tx_timeout"],
["drivers/net/ethernet/korina.c", "korina_tx_timeout"],
["drivers/net/ethernet/lantiq_etop.c", "ltq_etop_tx_timeout"],
["drivers/net/ethernet/marvell/mv643xx_eth.c", "mv643xx_eth_tx_timeout"],
["drivers/net/ethernet/marvell/pxa168_eth.c", "pxa168_eth_tx_timeout"],
["drivers/net/ethernet/marvell/skge.c", "skge_tx_timeout"],
["drivers/net/ethernet/marvell/sky2.c", "sky2_tx_timeout"],
["drivers/net/ethernet/marvell/sky2.c", "sky2_tx_timeout"],
["drivers/net/ethernet/mediatek/mtk_eth_soc.c", "mtk_tx_timeout"],
["drivers/net/ethernet/mellanox/mlx4/en_netdev.c", "mlx4_en_tx_timeout"],
["drivers/net/ethernet/mellanox/mlx4/en_netdev.c", "mlx4_en_tx_timeout"],
["drivers/net/ethernet/mellanox/mlx5/core/en_main.c", "mlx5e_tx_timeout"],
["drivers/net/ethernet/micrel/ks8842.c", "ks8842_tx_timeout"],
["drivers/net/ethernet/micrel/ksz884x.c", "netdev_tx_timeout"],
["drivers/net/ethernet/microchip/enc28j60.c", "enc28j60_tx_timeout"],
["drivers/net/ethernet/microchip/encx24j600.c", "encx24j600_tx_timeout"],
["drivers/net/ethernet/natsemi/sonic.h", "sonic_tx_timeout"],
["drivers/net/ethernet/natsemi/sonic.c", "sonic_tx_timeout"],
["drivers/net/ethernet/natsemi/jazzsonic.c", "sonic_tx_timeout"],
["drivers/net/ethernet/natsemi/macsonic.c", "sonic_tx_timeout"],
["drivers/net/ethernet/natsemi/natsemi.c", "ns_tx_timeout"],
["drivers/net/ethernet/natsemi/ns83820.c", "ns83820_tx_timeout"],
["drivers/net/ethernet/natsemi/xtsonic.c", "sonic_tx_timeout"],
["drivers/net/ethernet/neterion/s2io.h", "s2io_tx_watchdog"],
["drivers/net/ethernet/neterion/s2io.c", "s2io_tx_watchdog"],
["drivers/net/ethernet/neterion/vxge/vxge-main.c", "vxge_tx_watchdog"],
["drivers/net/ethernet/netronome/nfp/nfp_net_common.c", "nfp_net_tx_timeout"],
["drivers/net/ethernet/nvidia/forcedeth.c", "nv_tx_timeout"],
["drivers/net/ethernet/nvidia/forcedeth.c", "nv_tx_timeout"],
["drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c", "pch_gbe_tx_timeout"],
["drivers/net/ethernet/packetengines/hamachi.c", "hamachi_tx_timeout"],
["drivers/net/ethernet/packetengines/yellowfin.c", "yellowfin_tx_timeout"],
["drivers/net/ethernet/pensando/ionic/ionic_lif.c", "ionic_tx_timeout"],
["drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c", "netxen_tx_timeout"],
["drivers/net/ethernet/qlogic/qla3xxx.c", "ql3xxx_tx_timeout"],
["drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c", "qlcnic_tx_timeout"],
["drivers/net/ethernet/qualcomm/emac/emac.c", "emac_tx_timeout"],
["drivers/net/ethernet/qualcomm/qca_spi.c", "qcaspi_netdev_tx_timeout"],
["drivers/net/ethernet/qualcomm/qca_uart.c", "qcauart_netdev_tx_timeout"],
["drivers/net/ethernet/rdc/r6040.c", "r6040_tx_timeout"],
["drivers/net/ethernet/realtek/8139cp.c", "cp_tx_timeout"],
["drivers/net/ethernet/realtek/8139too.c", "rtl8139_tx_timeout"],
["drivers/net/ethernet/realtek/atp.c", "tx_timeout"],
["drivers/net/ethernet/realtek/r8169_main.c", "rtl8169_tx_timeout"],
["drivers/net/ethernet/renesas/ravb_main.c", "ravb_tx_timeout"],
["drivers/net/ethernet/renesas/sh_eth.c", "sh_eth_tx_timeout"],
["drivers/net/ethernet/renesas/sh_eth.c", "sh_eth_tx_timeout"],
["drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c", "sxgbe_tx_timeout"],
["drivers/net/ethernet/seeq/ether3.c", "ether3_timeout"],
["drivers/net/ethernet/seeq/sgiseeq.c", "timeout"],
["drivers/net/ethernet/sfc/efx.c", "efx_watchdog"],
["drivers/net/ethernet/sfc/falcon/efx.c", "ef4_watchdog"],
["drivers/net/ethernet/sgi/ioc3-eth.c", "ioc3_timeout"],
["drivers/net/ethernet/sgi/meth.c", "meth_tx_timeout"],
["drivers/net/ethernet/silan/sc92031.c", "sc92031_tx_timeout"],
["drivers/net/ethernet/sis/sis190.c", "sis190_tx_timeout"],
["drivers/net/ethernet/sis/sis900.c", "sis900_tx_timeout"],
["drivers/net/ethernet/smsc/epic100.c", "epic_tx_timeout"],
["drivers/net/ethernet/smsc/smc911x.c", "smc911x_timeout"],
["drivers/net/ethernet/smsc/smc9194.c", "smc_timeout"],
["drivers/net/ethernet/smsc/smc91c92_cs.c", "smc_tx_timeout"],
["drivers/net/ethernet/smsc/smc91x.c", "smc_timeout"],
["drivers/net/ethernet/stmicro/stmmac/stmmac_main.c", "stmmac_tx_timeout"],
["drivers/net/ethernet/sun/cassini.c", "cas_tx_timeout"],
["drivers/net/ethernet/sun/ldmvsw.c", "sunvnet_tx_timeout_common"],
["drivers/net/ethernet/sun/niu.c", "niu_tx_timeout"],
["drivers/net/ethernet/sun/sunbmac.c", "bigmac_tx_timeout"],
["drivers/net/ethernet/sun/sungem.c", "gem_tx_timeout"],
["drivers/net/ethernet/sun/sunhme.c", "happy_meal_tx_timeout"],
["drivers/net/ethernet/sun/sunqe.c", "qe_tx_timeout"],
["drivers/net/ethernet/sun/sunvnet.c", "sunvnet_tx_timeout_common"],
["drivers/net/ethernet/sun/sunvnet_common.c", "sunvnet_tx_timeout_common"],
["drivers/net/ethernet/sun/sunvnet_common.h", "sunvnet_tx_timeout_common"],
["drivers/net/ethernet/synopsys/dwc-xlgmac-net.c", "xlgmac_tx_timeout"],
["drivers/net/ethernet/ti/cpmac.c", "cpmac_tx_timeout"],
["drivers/net/ethernet/ti/cpsw.c", "cpsw_ndo_tx_timeout"],
["drivers/net/ethernet/ti/cpsw_priv.c", "cpsw_ndo_tx_timeout"],
["drivers/net/ethernet/ti/cpsw_priv.h", "cpsw_ndo_tx_timeout"],
["drivers/net/ethernet/ti/davinci_emac.c", "emac_dev_tx_timeout"],
["drivers/net/ethernet/ti/netcp_core.c", "netcp_ndo_tx_timeout"],
["drivers/net/ethernet/ti/tlan.c", "tlan_tx_timeout"],
["drivers/net/ethernet/toshiba/ps3_gelic_net.h", "gelic_net_tx_timeout"],
["drivers/net/ethernet/toshiba/ps3_gelic_net.c", "gelic_net_tx_timeout"],
["drivers/net/ethernet/toshiba/ps3_gelic_wireless.c", "gelic_net_tx_timeout"],
["drivers/net/ethernet/toshiba/spider_net.c", "spider_net_tx_timeout"],
["drivers/net/ethernet/toshiba/tc35815.c", "tc35815_tx_timeout"],
["drivers/net/ethernet/via/via-rhine.c", "rhine_tx_timeout"],
["drivers/net/ethernet/wiznet/w5100.c", "w5100_tx_timeout"],
["drivers/net/ethernet/wiznet/w5300.c", "w5300_tx_timeout"],
["drivers/net/ethernet/xilinx/xilinx_emaclite.c", "xemaclite_tx_timeout"],
["drivers/net/ethernet/xircom/xirc2ps_cs.c", "xirc_tx_timeout"],
["drivers/net/fjes/fjes_main.c", "fjes_tx_retry"],
["drivers/net/slip/slip.c", "sl_tx_timeout"],
["include/linux/usb/usbnet.h", "usbnet_tx_timeout"],
["drivers/net/usb/aqc111.c", "usbnet_tx_timeout"],
["drivers/net/usb/asix_devices.c", "usbnet_tx_timeout"],
["drivers/net/usb/asix_devices.c", "usbnet_tx_timeout"],
["drivers/net/usb/asix_devices.c", "usbnet_tx_timeout"],
["drivers/net/usb/ax88172a.c", "usbnet_tx_timeout"],
["drivers/net/usb/ax88179_178a.c", "usbnet_tx_timeout"],
["drivers/net/usb/catc.c", "catc_tx_timeout"],
["drivers/net/usb/cdc_mbim.c", "usbnet_tx_timeout"],
["drivers/net/usb/cdc_ncm.c", "usbnet_tx_timeout"],
["drivers/net/usb/dm9601.c", "usbnet_tx_timeout"],
["drivers/net/usb/hso.c", "hso_net_tx_timeout"],
["drivers/net/usb/int51x1.c", "usbnet_tx_timeout"],
["drivers/net/usb/ipheth.c", "ipheth_tx_timeout"],
["drivers/net/usb/kaweth.c", "kaweth_tx_timeout"],
["drivers/net/usb/lan78xx.c", "lan78xx_tx_timeout"],
["drivers/net/usb/mcs7830.c", "usbnet_tx_timeout"],
["drivers/net/usb/pegasus.c", "pegasus_tx_timeout"],
["drivers/net/usb/qmi_wwan.c", "usbnet_tx_timeout"],
["drivers/net/usb/r8152.c", "rtl8152_tx_timeout"],
["drivers/net/usb/rndis_host.c", "usbnet_tx_timeout"],
["drivers/net/usb/rtl8150.c", "rtl8150_tx_timeout"],
["drivers/net/usb/sierra_net.c", "usbnet_tx_timeout"],
["drivers/net/usb/smsc75xx.c", "usbnet_tx_timeout"],
["drivers/net/usb/smsc95xx.c", "usbnet_tx_timeout"],
["drivers/net/usb/sr9700.c", "usbnet_tx_timeout"],
["drivers/net/usb/sr9800.c", "usbnet_tx_timeout"],
["drivers/net/usb/usbnet.c", "usbnet_tx_timeout"],
["drivers/net/vmxnet3/vmxnet3_drv.c", "vmxnet3_tx_timeout"],
["drivers/net/wan/cosa.c", "cosa_net_timeout"],
["drivers/net/wan/farsync.c", "fst_tx_timeout"],
["drivers/net/wan/fsl_ucc_hdlc.c", "uhdlc_tx_timeout"],
["drivers/net/wan/lmc/lmc_main.c", "lmc_driver_timeout"],
["drivers/net/wan/x25_asy.c", "x25_asy_timeout"],
["drivers/net/wimax/i2400m/netdev.c", "i2400m_tx_timeout"],
["drivers/net/wireless/intel/ipw2x00/ipw2100.c", "ipw2100_tx_timeout"],
["drivers/net/wireless/intersil/hostap/hostap_main.c", "prism2_tx_timeout"],
["drivers/net/wireless/intersil/hostap/hostap_main.c", "prism2_tx_timeout"],
["drivers/net/wireless/intersil/hostap/hostap_main.c", "prism2_tx_timeout"],
["drivers/net/wireless/intersil/orinoco/main.c", "orinoco_tx_timeout"],
["drivers/net/wireless/intersil/orinoco/orinoco_usb.c", "orinoco_tx_timeout"],
["drivers/net/wireless/intersil/orinoco/orinoco.h", "orinoco_tx_timeout"],
["drivers/net/wireless/intersil/prism54/islpci_dev.c", "islpci_eth_tx_timeout"],
["drivers/net/wireless/intersil/prism54/islpci_eth.c", "islpci_eth_tx_timeout"],
["drivers/net/wireless/intersil/prism54/islpci_eth.h", "islpci_eth_tx_timeout"],
["drivers/net/wireless/marvell/mwifiex/main.c", "mwifiex_tx_timeout"],
["drivers/net/wireless/quantenna/qtnfmac/core.c", "qtnf_netdev_tx_timeout"],
["drivers/net/wireless/quantenna/qtnfmac/core.h", "qtnf_netdev_tx_timeout"],
["drivers/net/wireless/rndis_wlan.c", "usbnet_tx_timeout"],
["drivers/net/wireless/wl3501_cs.c", "wl3501_tx_timeout"],
["drivers/net/wireless/zydas/zd1201.c", "zd1201_tx_timeout"],
["drivers/s390/net/qeth_core.h", "qeth_tx_timeout"],
["drivers/s390/net/qeth_core_main.c", "qeth_tx_timeout"],
["drivers/s390/net/qeth_l2_main.c", "qeth_tx_timeout"],
["drivers/s390/net/qeth_l2_main.c", "qeth_tx_timeout"],
["drivers/s390/net/qeth_l3_main.c", "qeth_tx_timeout"],
["drivers/s390/net/qeth_l3_main.c", "qeth_tx_timeout"],
["drivers/staging/ks7010/ks_wlan_net.c", "ks_wlan_tx_timeout"],
["drivers/staging/qlge/qlge_main.c", "qlge_tx_timeout"],
["drivers/staging/rtl8192e/rtl8192e/rtl_core.c", "_rtl92e_tx_timeout"],
["drivers/staging/rtl8192u/r8192U_core.c", "tx_timeout"],
["drivers/staging/unisys/visornic/visornic_main.c", "visornic_xmit_timeout"],
["drivers/staging/wlan-ng/p80211netdev.c", "p80211knetdev_tx_timeout"],
["drivers/tty/n_gsm.c", "gsm_mux_net_tx_timeout"],
["drivers/tty/synclink.c", "hdlcdev_tx_timeout"],
["drivers/tty/synclink_gt.c", "hdlcdev_tx_timeout"],
["drivers/tty/synclinkmp.c", "hdlcdev_tx_timeout"],
["net/atm/lec.c", "lec_tx_timeout"],
["net/bluetooth/bnep/netdev.c", "bnep_net_timeout"]
);

for my $p (@work) {
	my @pair = @$p;
	my $file = $pair[0];
	my $func = $pair[1];
	print STDERR $file , ": ", $func,"\n";
	our @ARGV = ($file);
	while (&lt;ARGV&gt;) {
		if (m/($func\s*\(struct\s+net_device\s+\*[A-Za-z_]?[A-Za-z-0-9_]*)(\))/) {
			print STDERR "found $1+$2 in $file\n";
		}
		if (s/($func\s*\(struct\s+net_device\s+\*[A-Za-z_]?[A-Za-z-0-9_]*)(\))/$1, unsigned int txqueue$2/) {
			print STDERR "$func found in $file\n";
		}
		print;
	}
}

where the list of files and functions is simply from:

git grep ndo_tx_timeout, with manual addition of headers
in the rare cases where the function is from a header,
then manually changing the few places which actually
call ndo_tx_timeout.

Signed-off-by: Michael S. Tsirkin &lt;mst@redhat.com&gt;
Acked-by: Heiner Kallweit &lt;hkallweit1@gmail.com&gt;
Acked-by: Jakub Kicinski &lt;jakub.kicinski@netronome.com&gt;
Acked-by: Shannon Nelson &lt;snelson@pensando.io&gt;
Reviewed-by: Martin Habets &lt;mhabets@solarflare.com&gt;

changes from v9:
	fixup a forward declaration
changes from v9:
	more leftovers from v3 change
changes from v8:
        fix up a missing direct call to timeout
        rebased on net-next
changes from v7:
	fixup leftovers from v3 change
changes from v6:
	fix typo in rtl driver
changes from v5:
	add missing files (allow any net device argument name)
changes from v4:
	add a missing driver header
changes from v3:
        change queue # to unsigned
Changes from v2:
        added headers
Changes from v1:
        Fix errors found by kbuild:
        generalize the pattern a bit, to pick up
        a couple of instances missed by the previous
        version.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This allows incrementing the correct timeout statistic without any mess.
Down the road, devices can learn to reset just the specific queue.

The patch was generated with the following script:

use strict;
use warnings;

our $^I = '.bak';

my @work = (
["arch/m68k/emu/nfeth.c", "nfeth_tx_timeout"],
["arch/um/drivers/net_kern.c", "uml_net_tx_timeout"],
["arch/um/drivers/vector_kern.c", "vector_net_tx_timeout"],
["arch/xtensa/platforms/iss/network.c", "iss_net_tx_timeout"],
["drivers/char/pcmcia/synclink_cs.c", "hdlcdev_tx_timeout"],
["drivers/infiniband/ulp/ipoib/ipoib_main.c", "ipoib_timeout"],
["drivers/infiniband/ulp/ipoib/ipoib_main.c", "ipoib_timeout"],
["drivers/message/fusion/mptlan.c", "mpt_lan_tx_timeout"],
["drivers/misc/sgi-xp/xpnet.c", "xpnet_dev_tx_timeout"],
["drivers/net/appletalk/cops.c", "cops_timeout"],
["drivers/net/arcnet/arcdevice.h", "arcnet_timeout"],
["drivers/net/arcnet/arcnet.c", "arcnet_timeout"],
["drivers/net/arcnet/com20020.c", "arcnet_timeout"],
["drivers/net/ethernet/3com/3c509.c", "el3_tx_timeout"],
["drivers/net/ethernet/3com/3c515.c", "corkscrew_timeout"],
["drivers/net/ethernet/3com/3c574_cs.c", "el3_tx_timeout"],
["drivers/net/ethernet/3com/3c589_cs.c", "el3_tx_timeout"],
["drivers/net/ethernet/3com/3c59x.c", "vortex_tx_timeout"],
["drivers/net/ethernet/3com/3c59x.c", "vortex_tx_timeout"],
["drivers/net/ethernet/3com/typhoon.c", "typhoon_tx_timeout"],
["drivers/net/ethernet/8390/8390.h", "ei_tx_timeout"],
["drivers/net/ethernet/8390/8390.h", "eip_tx_timeout"],
["drivers/net/ethernet/8390/8390.c", "ei_tx_timeout"],
["drivers/net/ethernet/8390/8390p.c", "eip_tx_timeout"],
["drivers/net/ethernet/8390/ax88796.c", "ax_ei_tx_timeout"],
["drivers/net/ethernet/8390/axnet_cs.c", "axnet_tx_timeout"],
["drivers/net/ethernet/8390/etherh.c", "__ei_tx_timeout"],
["drivers/net/ethernet/8390/hydra.c", "__ei_tx_timeout"],
["drivers/net/ethernet/8390/mac8390.c", "__ei_tx_timeout"],
["drivers/net/ethernet/8390/mcf8390.c", "__ei_tx_timeout"],
["drivers/net/ethernet/8390/lib8390.c", "__ei_tx_timeout"],
["drivers/net/ethernet/8390/ne2k-pci.c", "ei_tx_timeout"],
["drivers/net/ethernet/8390/pcnet_cs.c", "ei_tx_timeout"],
["drivers/net/ethernet/8390/smc-ultra.c", "ei_tx_timeout"],
["drivers/net/ethernet/8390/wd.c", "ei_tx_timeout"],
["drivers/net/ethernet/8390/zorro8390.c", "__ei_tx_timeout"],
["drivers/net/ethernet/adaptec/starfire.c", "tx_timeout"],
["drivers/net/ethernet/agere/et131x.c", "et131x_tx_timeout"],
["drivers/net/ethernet/allwinner/sun4i-emac.c", "emac_timeout"],
["drivers/net/ethernet/alteon/acenic.c", "ace_watchdog"],
["drivers/net/ethernet/amazon/ena/ena_netdev.c", "ena_tx_timeout"],
["drivers/net/ethernet/amd/7990.h", "lance_tx_timeout"],
["drivers/net/ethernet/amd/7990.c", "lance_tx_timeout"],
["drivers/net/ethernet/amd/a2065.c", "lance_tx_timeout"],
["drivers/net/ethernet/amd/am79c961a.c", "am79c961_timeout"],
["drivers/net/ethernet/amd/amd8111e.c", "amd8111e_tx_timeout"],
["drivers/net/ethernet/amd/ariadne.c", "ariadne_tx_timeout"],
["drivers/net/ethernet/amd/atarilance.c", "lance_tx_timeout"],
["drivers/net/ethernet/amd/au1000_eth.c", "au1000_tx_timeout"],
["drivers/net/ethernet/amd/declance.c", "lance_tx_timeout"],
["drivers/net/ethernet/amd/lance.c", "lance_tx_timeout"],
["drivers/net/ethernet/amd/mvme147.c", "lance_tx_timeout"],
["drivers/net/ethernet/amd/ni65.c", "ni65_timeout"],
["drivers/net/ethernet/amd/nmclan_cs.c", "mace_tx_timeout"],
["drivers/net/ethernet/amd/pcnet32.c", "pcnet32_tx_timeout"],
["drivers/net/ethernet/amd/sunlance.c", "lance_tx_timeout"],
["drivers/net/ethernet/amd/xgbe/xgbe-drv.c", "xgbe_tx_timeout"],
["drivers/net/ethernet/apm/xgene-v2/main.c", "xge_timeout"],
["drivers/net/ethernet/apm/xgene/xgene_enet_main.c", "xgene_enet_timeout"],
["drivers/net/ethernet/apple/macmace.c", "mace_tx_timeout"],
["drivers/net/ethernet/atheros/ag71xx.c", "ag71xx_tx_timeout"],
["drivers/net/ethernet/atheros/alx/main.c", "alx_tx_timeout"],
["drivers/net/ethernet/atheros/atl1c/atl1c_main.c", "atl1c_tx_timeout"],
["drivers/net/ethernet/atheros/atl1e/atl1e_main.c", "atl1e_tx_timeout"],
["drivers/net/ethernet/atheros/atlx/atl.c", "atlx_tx_timeout"],
["drivers/net/ethernet/atheros/atlx/atl1.c", "atlx_tx_timeout"],
["drivers/net/ethernet/atheros/atlx/atl2.c", "atl2_tx_timeout"],
["drivers/net/ethernet/broadcom/b44.c", "b44_tx_timeout"],
["drivers/net/ethernet/broadcom/bcmsysport.c", "bcm_sysport_tx_timeout"],
["drivers/net/ethernet/broadcom/bnx2.c", "bnx2_tx_timeout"],
["drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h", "bnx2x_tx_timeout"],
["drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c", "bnx2x_tx_timeout"],
["drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c", "bnx2x_tx_timeout"],
["drivers/net/ethernet/broadcom/bnxt/bnxt.c", "bnxt_tx_timeout"],
["drivers/net/ethernet/broadcom/genet/bcmgenet.c", "bcmgenet_timeout"],
["drivers/net/ethernet/broadcom/sb1250-mac.c", "sbmac_tx_timeout"],
["drivers/net/ethernet/broadcom/tg3.c", "tg3_tx_timeout"],
["drivers/net/ethernet/calxeda/xgmac.c", "xgmac_tx_timeout"],
["drivers/net/ethernet/cavium/liquidio/lio_main.c", "liquidio_tx_timeout"],
["drivers/net/ethernet/cavium/liquidio/lio_vf_main.c", "liquidio_tx_timeout"],
["drivers/net/ethernet/cavium/liquidio/lio_vf_rep.c", "lio_vf_rep_tx_timeout"],
["drivers/net/ethernet/cavium/thunder/nicvf_main.c", "nicvf_tx_timeout"],
["drivers/net/ethernet/cirrus/cs89x0.c", "net_timeout"],
["drivers/net/ethernet/cisco/enic/enic_main.c", "enic_tx_timeout"],
["drivers/net/ethernet/cisco/enic/enic_main.c", "enic_tx_timeout"],
["drivers/net/ethernet/cortina/gemini.c", "gmac_tx_timeout"],
["drivers/net/ethernet/davicom/dm9000.c", "dm9000_timeout"],
["drivers/net/ethernet/dec/tulip/de2104x.c", "de_tx_timeout"],
["drivers/net/ethernet/dec/tulip/tulip_core.c", "tulip_tx_timeout"],
["drivers/net/ethernet/dec/tulip/winbond-840.c", "tx_timeout"],
["drivers/net/ethernet/dlink/dl2k.c", "rio_tx_timeout"],
["drivers/net/ethernet/dlink/sundance.c", "tx_timeout"],
["drivers/net/ethernet/emulex/benet/be_main.c", "be_tx_timeout"],
["drivers/net/ethernet/ethoc.c", "ethoc_tx_timeout"],
["drivers/net/ethernet/faraday/ftgmac100.c", "ftgmac100_tx_timeout"],
["drivers/net/ethernet/fealnx.c", "fealnx_tx_timeout"],
["drivers/net/ethernet/freescale/dpaa/dpaa_eth.c", "dpaa_tx_timeout"],
["drivers/net/ethernet/freescale/fec_main.c", "fec_timeout"],
["drivers/net/ethernet/freescale/fec_mpc52xx.c", "mpc52xx_fec_tx_timeout"],
["drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c", "fs_timeout"],
["drivers/net/ethernet/freescale/gianfar.c", "gfar_timeout"],
["drivers/net/ethernet/freescale/ucc_geth.c", "ucc_geth_timeout"],
["drivers/net/ethernet/fujitsu/fmvj18x_cs.c", "fjn_tx_timeout"],
["drivers/net/ethernet/google/gve/gve_main.c", "gve_tx_timeout"],
["drivers/net/ethernet/hisilicon/hip04_eth.c", "hip04_timeout"],
["drivers/net/ethernet/hisilicon/hix5hd2_gmac.c", "hix5hd2_net_timeout"],
["drivers/net/ethernet/hisilicon/hns/hns_enet.c", "hns_nic_net_timeout"],
["drivers/net/ethernet/hisilicon/hns3/hns3_enet.c", "hns3_nic_net_timeout"],
["drivers/net/ethernet/huawei/hinic/hinic_main.c", "hinic_tx_timeout"],
["drivers/net/ethernet/i825xx/82596.c", "i596_tx_timeout"],
["drivers/net/ethernet/i825xx/ether1.c", "ether1_timeout"],
["drivers/net/ethernet/i825xx/lib82596.c", "i596_tx_timeout"],
["drivers/net/ethernet/i825xx/sun3_82586.c", "sun3_82586_timeout"],
["drivers/net/ethernet/ibm/ehea/ehea_main.c", "ehea_tx_watchdog"],
["drivers/net/ethernet/ibm/emac/core.c", "emac_tx_timeout"],
["drivers/net/ethernet/ibm/emac/core.c", "emac_tx_timeout"],
["drivers/net/ethernet/ibm/ibmvnic.c", "ibmvnic_tx_timeout"],
["drivers/net/ethernet/intel/e100.c", "e100_tx_timeout"],
["drivers/net/ethernet/intel/e1000/e1000_main.c", "e1000_tx_timeout"],
["drivers/net/ethernet/intel/e1000e/netdev.c", "e1000_tx_timeout"],
["drivers/net/ethernet/intel/fm10k/fm10k_netdev.c", "fm10k_tx_timeout"],
["drivers/net/ethernet/intel/i40e/i40e_main.c", "i40e_tx_timeout"],
["drivers/net/ethernet/intel/iavf/iavf_main.c", "iavf_tx_timeout"],
["drivers/net/ethernet/intel/ice/ice_main.c", "ice_tx_timeout"],
["drivers/net/ethernet/intel/ice/ice_main.c", "ice_tx_timeout"],
["drivers/net/ethernet/intel/igb/igb_main.c", "igb_tx_timeout"],
["drivers/net/ethernet/intel/igbvf/netdev.c", "igbvf_tx_timeout"],
["drivers/net/ethernet/intel/ixgb/ixgb_main.c", "ixgb_tx_timeout"],
["drivers/net/ethernet/intel/ixgbe/ixgbe_debugfs.c", "adapter-&gt;netdev-&gt;netdev_ops-&gt;ndo_tx_timeout(adapter-&gt;netdev);"],
["drivers/net/ethernet/intel/ixgbe/ixgbe_main.c", "ixgbe_tx_timeout"],
["drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c", "ixgbevf_tx_timeout"],
["drivers/net/ethernet/jme.c", "jme_tx_timeout"],
["drivers/net/ethernet/korina.c", "korina_tx_timeout"],
["drivers/net/ethernet/lantiq_etop.c", "ltq_etop_tx_timeout"],
["drivers/net/ethernet/marvell/mv643xx_eth.c", "mv643xx_eth_tx_timeout"],
["drivers/net/ethernet/marvell/pxa168_eth.c", "pxa168_eth_tx_timeout"],
["drivers/net/ethernet/marvell/skge.c", "skge_tx_timeout"],
["drivers/net/ethernet/marvell/sky2.c", "sky2_tx_timeout"],
["drivers/net/ethernet/marvell/sky2.c", "sky2_tx_timeout"],
["drivers/net/ethernet/mediatek/mtk_eth_soc.c", "mtk_tx_timeout"],
["drivers/net/ethernet/mellanox/mlx4/en_netdev.c", "mlx4_en_tx_timeout"],
["drivers/net/ethernet/mellanox/mlx4/en_netdev.c", "mlx4_en_tx_timeout"],
["drivers/net/ethernet/mellanox/mlx5/core/en_main.c", "mlx5e_tx_timeout"],
["drivers/net/ethernet/micrel/ks8842.c", "ks8842_tx_timeout"],
["drivers/net/ethernet/micrel/ksz884x.c", "netdev_tx_timeout"],
["drivers/net/ethernet/microchip/enc28j60.c", "enc28j60_tx_timeout"],
["drivers/net/ethernet/microchip/encx24j600.c", "encx24j600_tx_timeout"],
["drivers/net/ethernet/natsemi/sonic.h", "sonic_tx_timeout"],
["drivers/net/ethernet/natsemi/sonic.c", "sonic_tx_timeout"],
["drivers/net/ethernet/natsemi/jazzsonic.c", "sonic_tx_timeout"],
["drivers/net/ethernet/natsemi/macsonic.c", "sonic_tx_timeout"],
["drivers/net/ethernet/natsemi/natsemi.c", "ns_tx_timeout"],
["drivers/net/ethernet/natsemi/ns83820.c", "ns83820_tx_timeout"],
["drivers/net/ethernet/natsemi/xtsonic.c", "sonic_tx_timeout"],
["drivers/net/ethernet/neterion/s2io.h", "s2io_tx_watchdog"],
["drivers/net/ethernet/neterion/s2io.c", "s2io_tx_watchdog"],
["drivers/net/ethernet/neterion/vxge/vxge-main.c", "vxge_tx_watchdog"],
["drivers/net/ethernet/netronome/nfp/nfp_net_common.c", "nfp_net_tx_timeout"],
["drivers/net/ethernet/nvidia/forcedeth.c", "nv_tx_timeout"],
["drivers/net/ethernet/nvidia/forcedeth.c", "nv_tx_timeout"],
["drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c", "pch_gbe_tx_timeout"],
["drivers/net/ethernet/packetengines/hamachi.c", "hamachi_tx_timeout"],
["drivers/net/ethernet/packetengines/yellowfin.c", "yellowfin_tx_timeout"],
["drivers/net/ethernet/pensando/ionic/ionic_lif.c", "ionic_tx_timeout"],
["drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c", "netxen_tx_timeout"],
["drivers/net/ethernet/qlogic/qla3xxx.c", "ql3xxx_tx_timeout"],
["drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c", "qlcnic_tx_timeout"],
["drivers/net/ethernet/qualcomm/emac/emac.c", "emac_tx_timeout"],
["drivers/net/ethernet/qualcomm/qca_spi.c", "qcaspi_netdev_tx_timeout"],
["drivers/net/ethernet/qualcomm/qca_uart.c", "qcauart_netdev_tx_timeout"],
["drivers/net/ethernet/rdc/r6040.c", "r6040_tx_timeout"],
["drivers/net/ethernet/realtek/8139cp.c", "cp_tx_timeout"],
["drivers/net/ethernet/realtek/8139too.c", "rtl8139_tx_timeout"],
["drivers/net/ethernet/realtek/atp.c", "tx_timeout"],
["drivers/net/ethernet/realtek/r8169_main.c", "rtl8169_tx_timeout"],
["drivers/net/ethernet/renesas/ravb_main.c", "ravb_tx_timeout"],
["drivers/net/ethernet/renesas/sh_eth.c", "sh_eth_tx_timeout"],
["drivers/net/ethernet/renesas/sh_eth.c", "sh_eth_tx_timeout"],
["drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c", "sxgbe_tx_timeout"],
["drivers/net/ethernet/seeq/ether3.c", "ether3_timeout"],
["drivers/net/ethernet/seeq/sgiseeq.c", "timeout"],
["drivers/net/ethernet/sfc/efx.c", "efx_watchdog"],
["drivers/net/ethernet/sfc/falcon/efx.c", "ef4_watchdog"],
["drivers/net/ethernet/sgi/ioc3-eth.c", "ioc3_timeout"],
["drivers/net/ethernet/sgi/meth.c", "meth_tx_timeout"],
["drivers/net/ethernet/silan/sc92031.c", "sc92031_tx_timeout"],
["drivers/net/ethernet/sis/sis190.c", "sis190_tx_timeout"],
["drivers/net/ethernet/sis/sis900.c", "sis900_tx_timeout"],
["drivers/net/ethernet/smsc/epic100.c", "epic_tx_timeout"],
["drivers/net/ethernet/smsc/smc911x.c", "smc911x_timeout"],
["drivers/net/ethernet/smsc/smc9194.c", "smc_timeout"],
["drivers/net/ethernet/smsc/smc91c92_cs.c", "smc_tx_timeout"],
["drivers/net/ethernet/smsc/smc91x.c", "smc_timeout"],
["drivers/net/ethernet/stmicro/stmmac/stmmac_main.c", "stmmac_tx_timeout"],
["drivers/net/ethernet/sun/cassini.c", "cas_tx_timeout"],
["drivers/net/ethernet/sun/ldmvsw.c", "sunvnet_tx_timeout_common"],
["drivers/net/ethernet/sun/niu.c", "niu_tx_timeout"],
["drivers/net/ethernet/sun/sunbmac.c", "bigmac_tx_timeout"],
["drivers/net/ethernet/sun/sungem.c", "gem_tx_timeout"],
["drivers/net/ethernet/sun/sunhme.c", "happy_meal_tx_timeout"],
["drivers/net/ethernet/sun/sunqe.c", "qe_tx_timeout"],
["drivers/net/ethernet/sun/sunvnet.c", "sunvnet_tx_timeout_common"],
["drivers/net/ethernet/sun/sunvnet_common.c", "sunvnet_tx_timeout_common"],
["drivers/net/ethernet/sun/sunvnet_common.h", "sunvnet_tx_timeout_common"],
["drivers/net/ethernet/synopsys/dwc-xlgmac-net.c", "xlgmac_tx_timeout"],
["drivers/net/ethernet/ti/cpmac.c", "cpmac_tx_timeout"],
["drivers/net/ethernet/ti/cpsw.c", "cpsw_ndo_tx_timeout"],
["drivers/net/ethernet/ti/cpsw_priv.c", "cpsw_ndo_tx_timeout"],
["drivers/net/ethernet/ti/cpsw_priv.h", "cpsw_ndo_tx_timeout"],
["drivers/net/ethernet/ti/davinci_emac.c", "emac_dev_tx_timeout"],
["drivers/net/ethernet/ti/netcp_core.c", "netcp_ndo_tx_timeout"],
["drivers/net/ethernet/ti/tlan.c", "tlan_tx_timeout"],
["drivers/net/ethernet/toshiba/ps3_gelic_net.h", "gelic_net_tx_timeout"],
["drivers/net/ethernet/toshiba/ps3_gelic_net.c", "gelic_net_tx_timeout"],
["drivers/net/ethernet/toshiba/ps3_gelic_wireless.c", "gelic_net_tx_timeout"],
["drivers/net/ethernet/toshiba/spider_net.c", "spider_net_tx_timeout"],
["drivers/net/ethernet/toshiba/tc35815.c", "tc35815_tx_timeout"],
["drivers/net/ethernet/via/via-rhine.c", "rhine_tx_timeout"],
["drivers/net/ethernet/wiznet/w5100.c", "w5100_tx_timeout"],
["drivers/net/ethernet/wiznet/w5300.c", "w5300_tx_timeout"],
["drivers/net/ethernet/xilinx/xilinx_emaclite.c", "xemaclite_tx_timeout"],
["drivers/net/ethernet/xircom/xirc2ps_cs.c", "xirc_tx_timeout"],
["drivers/net/fjes/fjes_main.c", "fjes_tx_retry"],
["drivers/net/slip/slip.c", "sl_tx_timeout"],
["include/linux/usb/usbnet.h", "usbnet_tx_timeout"],
["drivers/net/usb/aqc111.c", "usbnet_tx_timeout"],
["drivers/net/usb/asix_devices.c", "usbnet_tx_timeout"],
["drivers/net/usb/asix_devices.c", "usbnet_tx_timeout"],
["drivers/net/usb/asix_devices.c", "usbnet_tx_timeout"],
["drivers/net/usb/ax88172a.c", "usbnet_tx_timeout"],
["drivers/net/usb/ax88179_178a.c", "usbnet_tx_timeout"],
["drivers/net/usb/catc.c", "catc_tx_timeout"],
["drivers/net/usb/cdc_mbim.c", "usbnet_tx_timeout"],
["drivers/net/usb/cdc_ncm.c", "usbnet_tx_timeout"],
["drivers/net/usb/dm9601.c", "usbnet_tx_timeout"],
["drivers/net/usb/hso.c", "hso_net_tx_timeout"],
["drivers/net/usb/int51x1.c", "usbnet_tx_timeout"],
["drivers/net/usb/ipheth.c", "ipheth_tx_timeout"],
["drivers/net/usb/kaweth.c", "kaweth_tx_timeout"],
["drivers/net/usb/lan78xx.c", "lan78xx_tx_timeout"],
["drivers/net/usb/mcs7830.c", "usbnet_tx_timeout"],
["drivers/net/usb/pegasus.c", "pegasus_tx_timeout"],
["drivers/net/usb/qmi_wwan.c", "usbnet_tx_timeout"],
["drivers/net/usb/r8152.c", "rtl8152_tx_timeout"],
["drivers/net/usb/rndis_host.c", "usbnet_tx_timeout"],
["drivers/net/usb/rtl8150.c", "rtl8150_tx_timeout"],
["drivers/net/usb/sierra_net.c", "usbnet_tx_timeout"],
["drivers/net/usb/smsc75xx.c", "usbnet_tx_timeout"],
["drivers/net/usb/smsc95xx.c", "usbnet_tx_timeout"],
["drivers/net/usb/sr9700.c", "usbnet_tx_timeout"],
["drivers/net/usb/sr9800.c", "usbnet_tx_timeout"],
["drivers/net/usb/usbnet.c", "usbnet_tx_timeout"],
["drivers/net/vmxnet3/vmxnet3_drv.c", "vmxnet3_tx_timeout"],
["drivers/net/wan/cosa.c", "cosa_net_timeout"],
["drivers/net/wan/farsync.c", "fst_tx_timeout"],
["drivers/net/wan/fsl_ucc_hdlc.c", "uhdlc_tx_timeout"],
["drivers/net/wan/lmc/lmc_main.c", "lmc_driver_timeout"],
["drivers/net/wan/x25_asy.c", "x25_asy_timeout"],
["drivers/net/wimax/i2400m/netdev.c", "i2400m_tx_timeout"],
["drivers/net/wireless/intel/ipw2x00/ipw2100.c", "ipw2100_tx_timeout"],
["drivers/net/wireless/intersil/hostap/hostap_main.c", "prism2_tx_timeout"],
["drivers/net/wireless/intersil/hostap/hostap_main.c", "prism2_tx_timeout"],
["drivers/net/wireless/intersil/hostap/hostap_main.c", "prism2_tx_timeout"],
["drivers/net/wireless/intersil/orinoco/main.c", "orinoco_tx_timeout"],
["drivers/net/wireless/intersil/orinoco/orinoco_usb.c", "orinoco_tx_timeout"],
["drivers/net/wireless/intersil/orinoco/orinoco.h", "orinoco_tx_timeout"],
["drivers/net/wireless/intersil/prism54/islpci_dev.c", "islpci_eth_tx_timeout"],
["drivers/net/wireless/intersil/prism54/islpci_eth.c", "islpci_eth_tx_timeout"],
["drivers/net/wireless/intersil/prism54/islpci_eth.h", "islpci_eth_tx_timeout"],
["drivers/net/wireless/marvell/mwifiex/main.c", "mwifiex_tx_timeout"],
["drivers/net/wireless/quantenna/qtnfmac/core.c", "qtnf_netdev_tx_timeout"],
["drivers/net/wireless/quantenna/qtnfmac/core.h", "qtnf_netdev_tx_timeout"],
["drivers/net/wireless/rndis_wlan.c", "usbnet_tx_timeout"],
["drivers/net/wireless/wl3501_cs.c", "wl3501_tx_timeout"],
["drivers/net/wireless/zydas/zd1201.c", "zd1201_tx_timeout"],
["drivers/s390/net/qeth_core.h", "qeth_tx_timeout"],
["drivers/s390/net/qeth_core_main.c", "qeth_tx_timeout"],
["drivers/s390/net/qeth_l2_main.c", "qeth_tx_timeout"],
["drivers/s390/net/qeth_l2_main.c", "qeth_tx_timeout"],
["drivers/s390/net/qeth_l3_main.c", "qeth_tx_timeout"],
["drivers/s390/net/qeth_l3_main.c", "qeth_tx_timeout"],
["drivers/staging/ks7010/ks_wlan_net.c", "ks_wlan_tx_timeout"],
["drivers/staging/qlge/qlge_main.c", "qlge_tx_timeout"],
["drivers/staging/rtl8192e/rtl8192e/rtl_core.c", "_rtl92e_tx_timeout"],
["drivers/staging/rtl8192u/r8192U_core.c", "tx_timeout"],
["drivers/staging/unisys/visornic/visornic_main.c", "visornic_xmit_timeout"],
["drivers/staging/wlan-ng/p80211netdev.c", "p80211knetdev_tx_timeout"],
["drivers/tty/n_gsm.c", "gsm_mux_net_tx_timeout"],
["drivers/tty/synclink.c", "hdlcdev_tx_timeout"],
["drivers/tty/synclink_gt.c", "hdlcdev_tx_timeout"],
["drivers/tty/synclinkmp.c", "hdlcdev_tx_timeout"],
["net/atm/lec.c", "lec_tx_timeout"],
["net/bluetooth/bnep/netdev.c", "bnep_net_timeout"]
);

for my $p (@work) {
	my @pair = @$p;
	my $file = $pair[0];
	my $func = $pair[1];
	print STDERR $file , ": ", $func,"\n";
	our @ARGV = ($file);
	while (&lt;ARGV&gt;) {
		if (m/($func\s*\(struct\s+net_device\s+\*[A-Za-z_]?[A-Za-z-0-9_]*)(\))/) {
			print STDERR "found $1+$2 in $file\n";
		}
		if (s/($func\s*\(struct\s+net_device\s+\*[A-Za-z_]?[A-Za-z-0-9_]*)(\))/$1, unsigned int txqueue$2/) {
			print STDERR "$func found in $file\n";
		}
		print;
	}
}

where the list of files and functions is simply from:

git grep ndo_tx_timeout, with manual addition of headers
in the rare cases where the function is from a header,
then manually changing the few places which actually
call ndo_tx_timeout.

Signed-off-by: Michael S. Tsirkin &lt;mst@redhat.com&gt;
Acked-by: Heiner Kallweit &lt;hkallweit1@gmail.com&gt;
Acked-by: Jakub Kicinski &lt;jakub.kicinski@netronome.com&gt;
Acked-by: Shannon Nelson &lt;snelson@pensando.io&gt;
Reviewed-by: Martin Habets &lt;mhabets@solarflare.com&gt;

changes from v9:
	fixup a forward declaration
changes from v9:
	more leftovers from v3 change
changes from v8:
        fix up a missing direct call to timeout
        rebased on net-next
changes from v7:
	fixup leftovers from v3 change
changes from v6:
	fix typo in rtl driver
changes from v5:
	add missing files (allow any net device argument name)
changes from v4:
	add a missing driver header
changes from v3:
        change queue # to unsigned
Changes from v2:
        added headers
Changes from v1:
        Fix errors found by kbuild:
        generalize the pattern a bit, to pick up
        a couple of instances missed by the previous
        version.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 1</title>
<updated>2019-05-21T09:28:39+00:00</updated>
<author>
<name>Thomas Gleixner</name>
<email>tglx@linutronix.de</email>
</author>
<published>2019-05-19T13:51:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=16216333235adf51093d0330a934a7e4a03134fe'/>
<id>16216333235adf51093d0330a934a7e4a03134fe</id>
<content type='text'>
Based on 2 normalized pattern(s):

  this program is free software you can redistribute it and or modify
  it under the terms of the gnu general public license as published by
  the free software foundation either version 2 of the license or at
  your option any later version this program is distributed in the
  hope that it will be useful but without any warranty without even
  the implied warranty of merchantability or fitness for a particular
  purpose see the gnu general public license for more details you
  should have received a copy of the gnu general public license along
  with this program if not write to the free software foundation inc
  51 franklin street fifth floor boston ma 02110 1301 usa

  this program is free software you can redistribute it and or modify
  it under the terms of the gnu general public license as published by
  the free software foundation either version 2 of the license or at
  your option [no]_[pad]_[ctrl] any later version this program is
  distributed in the hope that it will be useful but without any
  warranty without even the implied warranty of merchantability or
  fitness for a particular purpose see the gnu general public license
  for more details you should have received a copy of the gnu general
  public license along with this program if not write to the free
  software foundation inc 51 franklin street fifth floor boston ma
  02110 1301 usa

extracted by the scancode license scanner the SPDX license identifier

  GPL-2.0-or-later

has been chosen to replace the boilerplate/reference in 176 file(s).

Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Reviewed-by: Jilayne Lovejoy &lt;opensource@jilayne.com&gt;
Reviewed-by: Steve Winslow &lt;swinslow@gmail.com&gt;
Reviewed-by: Allison Randal &lt;allison@lohutok.net&gt;
Reviewed-by: Kate Stewart &lt;kstewart@linuxfoundation.org&gt;
Cc: linux-spdx@vger.kernel.org
Link: https://lkml.kernel.org/r/20190519154040.652910950@linutronix.de
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Based on 2 normalized pattern(s):

  this program is free software you can redistribute it and or modify
  it under the terms of the gnu general public license as published by
  the free software foundation either version 2 of the license or at
  your option any later version this program is distributed in the
  hope that it will be useful but without any warranty without even
  the implied warranty of merchantability or fitness for a particular
  purpose see the gnu general public license for more details you
  should have received a copy of the gnu general public license along
  with this program if not write to the free software foundation inc
  51 franklin street fifth floor boston ma 02110 1301 usa

  this program is free software you can redistribute it and or modify
  it under the terms of the gnu general public license as published by
  the free software foundation either version 2 of the license or at
  your option [no]_[pad]_[ctrl] any later version this program is
  distributed in the hope that it will be useful but without any
  warranty without even the implied warranty of merchantability or
  fitness for a particular purpose see the gnu general public license
  for more details you should have received a copy of the gnu general
  public license along with this program if not write to the free
  software foundation inc 51 franklin street fifth floor boston ma
  02110 1301 usa

extracted by the scancode license scanner the SPDX license identifier

  GPL-2.0-or-later

has been chosen to replace the boilerplate/reference in 176 file(s).

Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Reviewed-by: Jilayne Lovejoy &lt;opensource@jilayne.com&gt;
Reviewed-by: Steve Winslow &lt;swinslow@gmail.com&gt;
Reviewed-by: Allison Randal &lt;allison@lohutok.net&gt;
Reviewed-by: Kate Stewart &lt;kstewart@linuxfoundation.org&gt;
Cc: linux-spdx@vger.kernel.org
Link: https://lkml.kernel.org/r/20190519154040.652910950@linutronix.de
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>treewide: Add SPDX license identifier - Makefile/Kconfig</title>
<updated>2019-05-21T08:50:46+00:00</updated>
<author>
<name>Thomas Gleixner</name>
<email>tglx@linutronix.de</email>
</author>
<published>2019-05-19T12:07:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=ec8f24b7faaf3d4799a7c3f4c1b87f6b02778ad1'/>
<id>ec8f24b7faaf3d4799a7c3f4c1b87f6b02778ad1</id>
<content type='text'>
Add SPDX license identifiers to all Make/Kconfig files which:

 - Have no license information of any form

These files fall under the project license, GPL v2 only. The resulting SPDX
license identifier is:

  GPL-2.0-only

Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add SPDX license identifiers to all Make/Kconfig files which:

 - Have no license information of any form

These files fall under the project license, GPL v2 only. The resulting SPDX
license identifier is:

  GPL-2.0-only

Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net: move skb-&gt;xmit_more hint to softnet data</title>
<updated>2019-04-02T01:35:02+00:00</updated>
<author>
<name>Florian Westphal</name>
<email>fw@strlen.de</email>
</author>
<published>2019-04-01T14:42:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=6b16f9ee89b8d5709f24bc3ac89ae8b5452c0d7c'/>
<id>6b16f9ee89b8d5709f24bc3ac89ae8b5452c0d7c</id>
<content type='text'>
There are two reasons for this.

First, the xmit_more flag conceptually doesn't fit into the skb, as
xmit_more is not a property related to the skb.
Its only a hint to the driver that the stack is about to transmit another
packet immediately.

Second, it was only done this way to not have to pass another argument
to ndo_start_xmit().

We can place xmit_more in the softnet data, next to the device recursion.
The recursion counter is already written to on each transmit. The "more"
indicator is placed right next to it.

Drivers can use the netdev_xmit_more() helper instead of skb-&gt;xmit_more
to check the "more packets coming" hint.

skb-&gt;xmit_more is retained (but always 0) to not cause build breakage.

This change takes care of the simple s/skb-&gt;xmit_more/netdev_xmit_more()/
conversions.  Remaining drivers are converted in the next patches.

Suggested-by: Eric Dumazet &lt;edumazet@google.com&gt;
Signed-off-by: Florian Westphal &lt;fw@strlen.de&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
There are two reasons for this.

First, the xmit_more flag conceptually doesn't fit into the skb, as
xmit_more is not a property related to the skb.
Its only a hint to the driver that the stack is about to transmit another
packet immediately.

Second, it was only done this way to not have to pass another argument
to ndo_start_xmit().

We can place xmit_more in the softnet data, next to the device recursion.
The recursion counter is already written to on each transmit. The "more"
indicator is placed right next to it.

Drivers can use the netdev_xmit_more() helper instead of skb-&gt;xmit_more
to check the "more packets coming" hint.

skb-&gt;xmit_more is retained (but always 0) to not cause build breakage.

This change takes care of the simple s/skb-&gt;xmit_more/netdev_xmit_more()/
conversions.  Remaining drivers are converted in the next patches.

Suggested-by: Eric Dumazet &lt;edumazet@google.com&gt;
Signed-off-by: Florian Westphal &lt;fw@strlen.de&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net: ethernet: Use phy_set_max_speed() to limit advertised speed</title>
<updated>2018-09-13T03:24:20+00:00</updated>
<author>
<name>Andrew Lunn</name>
<email>andrew@lunn.ch</email>
</author>
<published>2018-09-11T23:53:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=58056c1e1b0e4951f3486bd552d8278194f8b84b'/>
<id>58056c1e1b0e4951f3486bd552d8278194f8b84b</id>
<content type='text'>
Many Ethernet MAC drivers want to limit the PHY to only advertise a
maximum speed of 100Mbs or 1Gbps. Rather than using a mask, make use
of the helper function phy_set_max_speed().

Signed-off-by: Andrew Lunn &lt;andrew@lunn.ch&gt;
Reviewed-by: Florian Fainelli &lt;f.fainelli@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Many Ethernet MAC drivers want to limit the PHY to only advertise a
maximum speed of 100Mbs or 1Gbps. Rather than using a mask, make use
of the helper function phy_set_max_speed().

Signed-off-by: Andrew Lunn &lt;andrew@lunn.ch&gt;
Reviewed-by: Florian Fainelli &lt;f.fainelli@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>r6040: move spinlock in r6040_close as SOFTIRQ-unsafe lock order detected</title>
<updated>2016-12-18T02:35:12+00:00</updated>
<author>
<name>Manuel Bessler</name>
<email>manuel.bessler@sensus.com</email>
</author>
<published>2016-12-16T03:55:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=c762eaa777b789540e3fe33581d6d0e593dbb22e'/>
<id>c762eaa777b789540e3fe33581d6d0e593dbb22e</id>
<content type='text'>
'ifconfig eth0 down' makes r6040_close() trigger:
 INFO: HARDIRQ-safe -&gt; HARDIRQ-unsafe lock order detected

Fixed by moving calls to phy_stop(), napi_disable(), netif_stop_queue()
to outside of the module's private spin_lock_irq block.

Found on a Versalogic Tomcat SBC with a Vortex86 SoC

s1660e_5150:~# sudo ifconfig eth0 down
[   61.306415] ======================================================
[   61.306415] [ INFO: SOFTIRQ-safe -&gt; SOFTIRQ-unsafe lock order detected ]
[   61.306415] 4.9.0-gb898d2d-manuel #1 Not tainted
[   61.306415] ------------------------------------------------------
[   61.306415] ifconfig/449 [HC0[0]:SC0[0]:HE0:SE1] is trying to acquire:
[   61.306415]  (&amp;dev-&gt;lock){+.+...}, at: [&lt;c1336276&gt;] phy_stop+0x16/0x80

[   61.306415] and this task is already holding:
[   61.306415]  (&amp;(&amp;lp-&gt;lock)-&gt;rlock){+.-...}, at: [&lt;d0934c84&gt;] r6040_close+0x24/0x230 [r6040]
which would create a new lock dependency:
[   61.306415]  (&amp;(&amp;lp-&gt;lock)-&gt;rlock){+.-...} -&gt; (&amp;dev-&gt;lock){+.+...}

[   61.306415] but this new dependency connects a SOFTIRQ-irq-safe lock:
[   61.306415]  (&amp;(&amp;lp-&gt;lock)-&gt;rlock){+.-...}
[   61.306415] ... which became SOFTIRQ-irq-safe at:
[   61.306415]   [   61.306415] [&lt;c1075bc5&gt;] __lock_acquire+0x555/0x1770
[   61.306415]   [   61.306415] [&lt;c107717c&gt;] lock_acquire+0x7c/0x150
[   61.306415]   [   61.306415] [&lt;c14bb334&gt;] _raw_spin_lock_irqsave+0x24/0x40
[   61.306415]   [   61.306415] [&lt;d0934ac0&gt;] r6040_start_xmit+0x30/0x1d0 [r6040]
[   61.306415]   [   61.306415] [&lt;c13a7d4d&gt;] dev_hard_start_xmit+0x9d/0x2d0
[   61.306415]   [   61.306415] [&lt;c13c8a38&gt;] sch_direct_xmit+0xa8/0x140
[   61.306415]   [   61.306415] [&lt;c13a8436&gt;] __dev_queue_xmit+0x416/0x780
[   61.306415]   [   61.306415] [&lt;c13a87aa&gt;] dev_queue_xmit+0xa/0x10
[   61.306415]   [   61.306415] [&lt;c13b4837&gt;] neigh_resolve_output+0x147/0x220
[   61.306415]   [   61.306415] [&lt;c144541b&gt;] ip6_finish_output2+0x2fb/0x910
[   61.306415]   [   61.306415] [&lt;c14494e6&gt;] ip6_finish_output+0xa6/0x1a0
[   61.306415]   [   61.306415] [&lt;c1449635&gt;] ip6_output+0x55/0x320
[   61.306415]   [   61.306415] [&lt;c146f4d2&gt;] mld_sendpack+0x352/0x560
[   61.306415]   [   61.306415] [&lt;c146fe55&gt;] mld_ifc_timer_expire+0x155/0x280
[   61.306415]   [   61.306415] [&lt;c108b081&gt;] call_timer_fn+0x81/0x270
[   61.306415]   [   61.306415] [&lt;c108b331&gt;] expire_timers+0xc1/0x180
[   61.306415]   [   61.306415] [&lt;c108b4f7&gt;] run_timer_softirq+0x77/0x150
[   61.306415]   [   61.306415] [&lt;c1043d04&gt;] __do_softirq+0xb4/0x3d0
[   61.306415]   [   61.306415] [&lt;c101a15c&gt;] do_softirq_own_stack+0x1c/0x30
[   61.306415]   [   61.306415] [&lt;c104416e&gt;] irq_exit+0x8e/0xa0
[   61.306415]   [   61.306415] [&lt;c1019d31&gt;] do_IRQ+0x51/0x100
[   61.306415]   [   61.306415] [&lt;c14bc176&gt;] common_interrupt+0x36/0x40
[   61.306415]   [   61.306415] [&lt;c1134928&gt;] set_root+0x68/0xf0
[   61.306415]   [   61.306415] [&lt;c1136120&gt;] path_init+0x400/0x640
[   61.306415]   [   61.306415] [&lt;c11386bf&gt;] path_lookupat+0xf/0xe0
[   61.306415]   [   61.306415] [&lt;c1139ebc&gt;] filename_lookup+0x6c/0x100
[   61.306415]   [   61.306415] [&lt;c1139fd5&gt;] user_path_at_empty+0x25/0x30
[   61.306415]   [   61.306415] [&lt;c11298c6&gt;] SyS_faccessat+0x86/0x1e0
[   61.306415]   [   61.306415] [&lt;c1129a30&gt;] SyS_access+0x10/0x20
[   61.306415]   [   61.306415] [&lt;c100179f&gt;] do_int80_syscall_32+0x3f/0x110
[   61.306415]   [   61.306415] [&lt;c14bba3f&gt;] restore_all+0x0/0x61
[   61.306415]
[   61.306415] to a SOFTIRQ-irq-unsafe lock:
[   61.306415]  (&amp;dev-&gt;lock){+.+...}
[   61.306415] ... which became SOFTIRQ-irq-unsafe at:
[   61.306415] ...[   61.306415]
[   61.306415] [&lt;c1075c0c&gt;] __lock_acquire+0x59c/0x1770
[   61.306415]   [   61.306415] [&lt;c107717c&gt;] lock_acquire+0x7c/0x150
[   61.306415]   [   61.306415] [&lt;c14b7add&gt;] mutex_lock_nested+0x2d/0x4a0
[   61.306415]   [   61.306415] [&lt;c133747d&gt;] phy_probe+0x4d/0xc0
[   61.306415]   [   61.306415] [&lt;c1338afe&gt;] phy_attach_direct+0xbe/0x190
[   61.306415]   [   61.306415] [&lt;c1338ca7&gt;] phy_connect_direct+0x17/0x60
[   61.306415]   [   61.306415] [&lt;c1338d23&gt;] phy_connect+0x33/0x70
[   61.306415]   [   61.306415] [&lt;d09357a0&gt;] r6040_init_one+0x3a0/0x500 [r6040]
[   61.306415]   [   61.306415] [&lt;c12a78c7&gt;] pci_device_probe+0x77/0xd0
[   61.306415]   [   61.306415] [&lt;c12f5e15&gt;] driver_probe_device+0x145/0x280
[   61.306415]   [   61.306415] [&lt;c12f5fd9&gt;] __driver_attach+0x89/0x90
[   61.306415]   [   61.306415] [&lt;c12f43ef&gt;] bus_for_each_dev+0x4f/0x80
[   61.306415]   [   61.306415] [&lt;c12f5954&gt;] driver_attach+0x14/0x20
[   61.306415]   [   61.306415] [&lt;c12f55b7&gt;] bus_add_driver+0x197/0x210
[   61.306415]   [   61.306415] [&lt;c12f6a21&gt;] driver_register+0x51/0xd0
[   61.306415]   [   61.306415] [&lt;c12a6955&gt;] __pci_register_driver+0x45/0x50
[   61.306415]   [   61.306415] [&lt;d0938017&gt;] 0xd0938017
[   61.306415]   [   61.306415] [&lt;c100043f&gt;] do_one_initcall+0x2f/0x140
[   61.306415]   [   61.306415] [&lt;c10e48c0&gt;] do_init_module+0x4a/0x19b
[   61.306415]   [   61.306415] [&lt;c10a680e&gt;] load_module+0x1b2e/0x2070
[   61.306415]   [   61.306415] [&lt;c10a6eb9&gt;] SyS_finit_module+0x69/0x80
[   61.306415]   [   61.306415] [&lt;c100179f&gt;] do_int80_syscall_32+0x3f/0x110
[   61.306415]   [   61.306415] [&lt;c14bba3f&gt;] restore_all+0x0/0x61
[   61.306415]
[   61.306415] other info that might help us debug this:
[   61.306415]
[   61.306415]  Possible interrupt unsafe locking scenario:
[   61.306415]
[   61.306415]        CPU0                    CPU1
[   61.306415]        ----                    ----
[   61.306415]   lock(&amp;dev-&gt;lock);
[   61.306415]                                local_irq_disable();
[   61.306415]                                lock(&amp;(&amp;lp-&gt;lock)-&gt;rlock);
[   61.306415]                                lock(&amp;dev-&gt;lock);
[   61.306415]   &lt;Interrupt&gt;
[   61.306415]     lock(&amp;(&amp;lp-&gt;lock)-&gt;rlock);
[   61.306415]
[   61.306415]  *** DEADLOCK ***
[   61.306415]
[   61.306415] 2 locks held by ifconfig/449:
[   61.306415]  #0:  (rtnl_mutex){+.+.+.}, at: [&lt;c13b68ef&gt;] rtnl_lock+0xf/0x20
[   61.306415]  #1:  (&amp;(&amp;lp-&gt;lock)-&gt;rlock){+.-...}, at: [&lt;d0934c84&gt;] r6040_close+0x24/0x230 [r6040]
[   61.306415]
[   61.306415] the dependencies between SOFTIRQ-irq-safe lock and the holding lock:
[   61.306415] -&gt; (&amp;(&amp;lp-&gt;lock)-&gt;rlock){+.-...} ops: 3049 {
[   61.306415]    HARDIRQ-ON-W at:
[   61.306415]                     [   61.306415] [&lt;c1075be7&gt;] __lock_acquire+0x577/0x1770
[   61.306415]                     [   61.306415] [&lt;c107717c&gt;] lock_acquire+0x7c/0x150
[   61.306415]                     [   61.306415] [&lt;c14bb21b&gt;] _raw_spin_lock+0x1b/0x30
[   61.306415]                     [   61.306415] [&lt;d09343cc&gt;] r6040_poll+0x2c/0x330 [r6040]
[   61.306415]                     [   61.306415] [&lt;c13a5577&gt;] net_rx_action+0x197/0x340
[   61.306415]                     [   61.306415] [&lt;c1043d04&gt;] __do_softirq+0xb4/0x3d0
[   61.306415]                     [   61.306415] [&lt;c1044037&gt;] run_ksoftirqd+0x17/0x40
[   61.306415]                     [   61.306415] [&lt;c105fe91&gt;] smpboot_thread_fn+0x141/0x180
[   61.306415]                     [   61.306415] [&lt;c105c84e&gt;] kthread+0xde/0x110
[   61.306415]                     [   61.306415] [&lt;c14bb949&gt;] ret_from_fork+0x19/0x30
[   61.306415]    IN-SOFTIRQ-W at:
[   61.306415]                     [   61.306415] [&lt;c1075bc5&gt;] __lock_acquire+0x555/0x1770
[   61.306415]                     [   61.306415] [&lt;c107717c&gt;] lock_acquire+0x7c/0x150
[   61.306415]                     [   61.306415] [&lt;c14bb334&gt;] _raw_spin_lock_irqsave+0x24/0x40
[   61.306415]                     [   61.306415] [&lt;d0934ac0&gt;] r6040_start_xmit+0x30/0x1d0 [r6040]
[   61.306415]                     [   61.306415] [&lt;c13a7d4d&gt;] dev_hard_start_xmit+0x9d/0x2d0
[   61.306415]                     [   61.306415] [&lt;c13c8a38&gt;] sch_direct_xmit+0xa8/0x140
[   61.306415]                     [   61.306415] [&lt;c13a8436&gt;] __dev_queue_xmit+0x416/0x780
[   61.306415]                     [   61.306415] [&lt;c13a87aa&gt;] dev_queue_xmit+0xa/0x10
[   61.306415]                     [   61.306415] [&lt;c13b4837&gt;] neigh_resolve_output+0x147/0x220
[   61.306415]                     [   61.306415] [&lt;c144541b&gt;] ip6_finish_output2+0x2fb/0x910
[   61.306415]                     [   61.306415] [&lt;c14494e6&gt;] ip6_finish_output+0xa6/0x1a0
[   61.306415]                     [   61.306415] [&lt;c1449635&gt;] ip6_output+0x55/0x320
[   61.306415]                     [   61.306415] [&lt;c146f4d2&gt;] mld_sendpack+0x352/0x560
[   61.306415]                     [   61.306415] [&lt;c146fe55&gt;] mld_ifc_timer_expire+0x155/0x280
[   61.306415]                     [   61.306415] [&lt;c108b081&gt;] call_timer_fn+0x81/0x270
[   61.306415]                     [   61.306415] [&lt;c108b331&gt;] expire_timers+0xc1/0x180
[   61.306415]                     [   61.306415] [&lt;c108b4f7&gt;] run_timer_softirq+0x77/0x150
[   61.306415]                     [   61.306415] [&lt;c1043d04&gt;] __do_softirq+0xb4/0x3d0
[   61.306415]                     [   61.306415] [&lt;c101a15c&gt;] do_softirq_own_stack+0x1c/0x30
[   61.306415]                     [   61.306415] [&lt;c104416e&gt;] irq_exit+0x8e/0xa0
[   61.306415]                     [   61.306415] [&lt;c1019d31&gt;] do_IRQ+0x51/0x100
[   61.306415]                     [   61.306415] [&lt;c14bc176&gt;] common_interrupt+0x36/0x40
[   61.306415]                     [   61.306415] [&lt;c1134928&gt;] set_root+0x68/0xf0
[   61.306415]                     [   61.306415] [&lt;c1136120&gt;] path_init+0x400/0x640
[   61.306415]                     [   61.306415] [&lt;c11386bf&gt;] path_lookupat+0xf/0xe0
[   61.306415]                     [   61.306415] [&lt;c1139ebc&gt;] filename_lookup+0x6c/0x100
[   61.306415]                     [   61.306415] [&lt;c1139fd5&gt;] user_path_at_empty+0x25/0x30
[   61.306415]                     [   61.306415] [&lt;c11298c6&gt;] SyS_faccessat+0x86/0x1e0
[   61.306415]                     [   61.306415] [&lt;c1129a30&gt;] SyS_access+0x10/0x20
[   61.306415]                     [   61.306415] [&lt;c100179f&gt;] do_int80_syscall_32+0x3f/0x110
[   61.306415]                     [   61.306415] [&lt;c14bba3f&gt;] restore_all+0x0/0x61
[   61.306415]    INITIAL USE at:
[   61.306415]                    [   61.306415] [&lt;c107586e&gt;] __lock_acquire+0x1fe/0x1770
[   61.306415]                    [   61.306415] [&lt;c107717c&gt;] lock_acquire+0x7c/0x150
[   61.306415]                    [   61.306415] [&lt;c14bb334&gt;] _raw_spin_lock_irqsave+0x24/0x40
[   61.306415]                    [   61.306415] [&lt;d093474e&gt;] r6040_get_stats+0x1e/0x60 [r6040]
[   61.306415]                    [   61.306415] [&lt;c139fb16&gt;] dev_get_stats+0x96/0xc0
[   61.306415]                    [   61.306415] [&lt;c14b416e&gt;] rtnl_fill_stats+0x36/0xfd
[   61.306415]                    [   61.306415] [&lt;c13b7b3c&gt;] rtnl_fill_ifinfo+0x47c/0xce0
[   61.306415]                    [   61.306415] [&lt;c13bc08e&gt;] rtmsg_ifinfo_build_skb+0x4e/0xd0
[   61.306415]                    [   61.306415] [&lt;c13bc120&gt;] rtmsg_ifinfo.part.20+0x10/0x40
[   61.306415]                    [   61.306415] [&lt;c13bc16b&gt;] rtmsg_ifinfo+0x1b/0x20
[   61.306415]                    [   61.306415] [&lt;c13a9d19&gt;] register_netdevice+0x409/0x550
[   61.306415]                    [   61.306415] [&lt;c13a9e72&gt;] register_netdev+0x12/0x20
[   61.306415]                    [   61.306415] [&lt;d09357e8&gt;] r6040_init_one+0x3e8/0x500 [r6040]
[   61.306415]                    [   61.306415] [&lt;c12a78c7&gt;] pci_device_probe+0x77/0xd0
[   61.306415]                    [   61.306415] [&lt;c12f5e15&gt;] driver_probe_device+0x145/0x280
[   61.306415]                    [   61.306415] [&lt;c12f5fd9&gt;] __driver_attach+0x89/0x90
[   61.306415]                    [   61.306415] [&lt;c12f43ef&gt;] bus_for_each_dev+0x4f/0x80
[   61.306415]                    [   61.306415] [&lt;c12f5954&gt;] driver_attach+0x14/0x20
[   61.306415]                    [   61.306415] [&lt;c12f55b7&gt;] bus_add_driver+0x197/0x210
[   61.306415]                    [   61.306415] [&lt;c12f6a21&gt;] driver_register+0x51/0xd0
[   61.306415]                    [   61.306415] [&lt;c12a6955&gt;] __pci_register_driver+0x45/0x50
[   61.306415]                    [   61.306415] [&lt;d0938017&gt;] 0xd0938017
[   61.306415]                    [   61.306415] [&lt;c100043f&gt;] do_one_initcall+0x2f/0x140
[   61.306415]                    [   61.306415] [&lt;c10e48c0&gt;] do_init_module+0x4a/0x19b
[   61.306415]                    [   61.306415] [&lt;c10a680e&gt;] load_module+0x1b2e/0x2070
[   61.306415]                    [   61.306415] [&lt;c10a6eb9&gt;] SyS_finit_module+0x69/0x80
[   61.306415]                    [   61.306415] [&lt;c100179f&gt;] do_int80_syscall_32+0x3f/0x110
[   61.306415]                    [   61.306415] [&lt;c14bba3f&gt;] restore_all+0x0/0x61
[   61.306415]  }
[   61.306415]  ... key      at: [&lt;d0936280&gt;] __key.45893+0x0/0xfffff739 [r6040]
[   61.306415]  ... acquired at:
[   61.306415]    [   61.306415] [&lt;c1074a32&gt;] check_irq_usage+0x42/0xb0
[   61.306415]    [   61.306415] [&lt;c107677c&gt;] __lock_acquire+0x110c/0x1770
[   61.306415]    [   61.306415] [&lt;c107717c&gt;] lock_acquire+0x7c/0x150
[   61.306415]    [   61.306415] [&lt;c14b7add&gt;] mutex_lock_nested+0x2d/0x4a0
[   61.306415]    [   61.306415] [&lt;c1336276&gt;] phy_stop+0x16/0x80
[   61.306415]    [   61.306415] [&lt;d0934ce9&gt;] r6040_close+0x89/0x230 [r6040]
[   61.306415]    [   61.306415] [&lt;c13a0a91&gt;] __dev_close_many+0x61/0xa0
[   61.306415]    [   61.306415] [&lt;c13a0bbf&gt;] __dev_close+0x1f/0x30
[   61.306415]    [   61.306415] [&lt;c13a9127&gt;] __dev_change_flags+0x87/0x150
[   61.306415]    [   61.306415] [&lt;c13a9213&gt;] dev_change_flags+0x23/0x60
[   61.306415]    [   61.306415] [&lt;c1416238&gt;] devinet_ioctl+0x5f8/0x6f0
[   61.306415]    [   61.306415] [&lt;c1417f75&gt;] inet_ioctl+0x65/0x90
[   61.306415]    [   61.306415] [&lt;c1389b54&gt;] sock_ioctl+0x124/0x2b0
[   61.306415]    [   61.306415] [&lt;c113cf7c&gt;] do_vfs_ioctl+0x7c/0x790
[   61.306415]    [   61.306415] [&lt;c113d6b8&gt;] SyS_ioctl+0x28/0x50
[   61.306415]    [   61.306415] [&lt;c100179f&gt;] do_int80_syscall_32+0x3f/0x110
[   61.306415]    [   61.306415] [&lt;c14bba3f&gt;] restore_all+0x0/0x61
[   61.306415]
[   61.306415]
the dependencies between the lock to be acquired[   61.306415]  and SOFTIRQ-irq-unsafe lock:
[   61.306415] -&gt; (&amp;dev-&gt;lock){+.+...} ops: 56 {
[   61.306415]    HARDIRQ-ON-W at:
[   61.306415]                     [   61.306415] [&lt;c1075be7&gt;] __lock_acquire+0x577/0x1770
[   61.306415]                     [   61.306415] [&lt;c107717c&gt;] lock_acquire+0x7c/0x150
[   61.306415]                     [   61.306415] [&lt;c14b7add&gt;] mutex_lock_nested+0x2d/0x4a0
[   61.306415]                     [   61.306415] [&lt;c133747d&gt;] phy_probe+0x4d/0xc0
[   61.306415]                     [   61.306415] [&lt;c1338afe&gt;] phy_attach_direct+0xbe/0x190
[   61.306415]                     [   61.306415] [&lt;c1338ca7&gt;] phy_connect_direct+0x17/0x60
[   61.306415]                     [   61.306415] [&lt;c1338d23&gt;] phy_connect+0x33/0x70
[   61.306415]                     [   61.306415] [&lt;d09357a0&gt;] r6040_init_one+0x3a0/0x500 [r6040]
[   61.306415]                     [   61.306415] [&lt;c12a78c7&gt;] pci_device_probe+0x77/0xd0
[   61.306415]                     [   61.306415] [&lt;c12f5e15&gt;] driver_probe_device+0x145/0x280
[   61.306415]                     [   61.306415] [&lt;c12f5fd9&gt;] __driver_attach+0x89/0x90
[   61.306415]                     [   61.306415] [&lt;c12f43ef&gt;] bus_for_each_dev+0x4f/0x80
[   61.306415]                     [   61.306415] [&lt;c12f5954&gt;] driver_attach+0x14/0x20
[   61.306415]                     [   61.306415] [&lt;c12f55b7&gt;] bus_add_driver+0x197/0x210
[   61.306415]                     [   61.306415] [&lt;c12f6a21&gt;] driver_register+0x51/0xd0
[   61.306415]                     [   61.306415] [&lt;c12a6955&gt;] __pci_register_driver+0x45/0x50
[   61.306415]                     [   61.306415] [&lt;d0938017&gt;] 0xd0938017
[   61.306415]                     [   61.306415] [&lt;c100043f&gt;] do_one_initcall+0x2f/0x140
[   61.306415]                     [   61.306415] [&lt;c10e48c0&gt;] do_init_module+0x4a/0x19b
[   61.306415]                     [   61.306415] [&lt;c10a680e&gt;] load_module+0x1b2e/0x2070
[   61.306415]                     [   61.306415] [&lt;c10a6eb9&gt;] SyS_finit_module+0x69/0x80
[   61.306415]                     [   61.306415] [&lt;c100179f&gt;] do_int80_syscall_32+0x3f/0x110
[   61.306415]                     [   61.306415] [&lt;c14bba3f&gt;] restore_all+0x0/0x61
[   61.306415]    SOFTIRQ-ON-W at:
[   61.306415]                     [   61.306415] [&lt;c1075c0c&gt;] __lock_acquire+0x59c/0x1770
[   61.306415]                     [   61.306415] [&lt;c107717c&gt;] lock_acquire+0x7c/0x150
[   61.306415]                     [   61.306415] [&lt;c14b7add&gt;] mutex_lock_nested+0x2d/0x4a0
[   61.306415]                     [   61.306415] [&lt;c133747d&gt;] phy_probe+0x4d/0xc0
[   61.306415]                     [   61.306415] [&lt;c1338afe&gt;] phy_attach_direct+0xbe/0x190
[   61.306415]                     [   61.306415] [&lt;c1338ca7&gt;] phy_connect_direct+0x17/0x60
[   61.306415]                     [   61.306415] [&lt;c1338d23&gt;] phy_connect+0x33/0x70
[   61.306415]                     [   61.306415] [&lt;d09357a0&gt;] r6040_init_one+0x3a0/0x500 [r6040]
[   61.306415]                     [   61.306415] [&lt;c12a78c7&gt;] pci_device_probe+0x77/0xd0
[   61.306415]                     [   61.306415] [&lt;c12f5e15&gt;] driver_probe_device+0x145/0x280
[   61.306415]                     [   61.306415] [&lt;c12f5fd9&gt;] __driver_attach+0x89/0x90
[   61.306415]                     [   61.306415] [&lt;c12f43ef&gt;] bus_for_each_dev+0x4f/0x80
[   61.306415]                     [   61.306415] [&lt;c12f5954&gt;] driver_attach+0x14/0x20
[   61.306415]                     [   61.306415] [&lt;c12f55b7&gt;] bus_add_driver+0x197/0x210
[   61.306415]                     [   61.306415] [&lt;c12f6a21&gt;] driver_register+0x51/0xd0
[   61.306415]                     [   61.306415] [&lt;c12a6955&gt;] __pci_register_driver+0x45/0x50
[   61.306415]                     [   61.306415] [&lt;d0938017&gt;] 0xd0938017
[   61.306415]                     [   61.306415] [&lt;c100043f&gt;] do_one_initcall+0x2f/0x140
[   61.306415]                     [   61.306415] [&lt;c10e48c0&gt;] do_init_module+0x4a/0x19b
[   61.306415]                     [   61.306415] [&lt;c10a680e&gt;] load_module+0x1b2e/0x2070
[   61.306415]                     [   61.306415] [&lt;c10a6eb9&gt;] SyS_finit_module+0x69/0x80
[   61.306415]                     [   61.306415] [&lt;c100179f&gt;] do_int80_syscall_32+0x3f/0x110
[   61.306415]                     [   61.306415] [&lt;c14bba3f&gt;] restore_all+0x0/0x61
[   61.306415]    INITIAL USE at:
[   61.306415]                    [   61.306415] [&lt;c107586e&gt;] __lock_acquire+0x1fe/0x1770
[   61.306415]                    [   61.306415] [&lt;c107717c&gt;] lock_acquire+0x7c/0x150
[   61.306415]                    [   61.306415] [&lt;c14b7add&gt;] mutex_lock_nested+0x2d/0x4a0
[   61.306415]                    [   61.306415] [&lt;c133747d&gt;] phy_probe+0x4d/0xc0
[   61.306415]                    [   61.306415] [&lt;c1338afe&gt;] phy_attach_direct+0xbe/0x190
[   61.306415]                    [   61.306415] [&lt;c1338ca7&gt;] phy_connect_direct+0x17/0x60
[   61.306415]                    [   61.306415] [&lt;c1338d23&gt;] phy_connect+0x33/0x70
[   61.306415]                    [   61.306415] [&lt;d09357a0&gt;] r6040_init_one+0x3a0/0x500 [r6040]
[   61.306415]                    [   61.306415] [&lt;c12a78c7&gt;] pci_device_probe+0x77/0xd0
[   61.306415]                    [   61.306415] [&lt;c12f5e15&gt;] driver_probe_device+0x145/0x280
[   61.306415]                    [   61.306415] [&lt;c12f5fd9&gt;] __driver_attach+0x89/0x90
[   61.306415]                    [   61.306415] [&lt;c12f43ef&gt;] bus_for_each_dev+0x4f/0x80
[   61.306415]                    [   61.306415] [&lt;c12f5954&gt;] driver_attach+0x14/0x20
[   61.306415]                    [   61.306415] [&lt;c12f55b7&gt;] bus_add_driver+0x197/0x210
[   61.306415]                    [   61.306415] [&lt;c12f6a21&gt;] driver_register+0x51/0xd0
[   61.306415]                    [   61.306415] [&lt;c12a6955&gt;] __pci_register_driver+0x45/0x50
[   61.306415]                    [   61.306415] [&lt;d0938017&gt;] 0xd0938017
[   61.306415]                    [   61.306415] [&lt;c100043f&gt;] do_one_initcall+0x2f/0x140
[   61.306415]                    [   61.306415] [&lt;c10e48c0&gt;] do_init_module+0x4a/0x19b
[   61.306415]                    [   61.306415] [&lt;c10a680e&gt;] load_module+0x1b2e/0x2070
[   61.306415]                    [   61.306415] [&lt;c10a6eb9&gt;] SyS_finit_module+0x69/0x80
[   61.306415]                    [   61.306415] [&lt;c100179f&gt;] do_int80_syscall_32+0x3f/0x110
[   61.306415]                    [   61.306415] [&lt;c14bba3f&gt;] restore_all+0x0/0x61
[   61.306415]  }
[   61.306415]  ... key      at: [&lt;c1f28f39&gt;] __key.43998+0x0/0x8
[   61.306415]  ... acquired at:
[   61.306415]    [   61.306415] [&lt;c1074a32&gt;] check_irq_usage+0x42/0xb0
[   61.306415]    [   61.306415] [&lt;c107677c&gt;] __lock_acquire+0x110c/0x1770
[   61.306415]    [   61.306415] [&lt;c107717c&gt;] lock_acquire+0x7c/0x150
[   61.306415]    [   61.306415] [&lt;c14b7add&gt;] mutex_lock_nested+0x2d/0x4a0
[   61.306415]    [   61.306415] [&lt;c1336276&gt;] phy_stop+0x16/0x80
[   61.306415]    [   61.306415] [&lt;d0934ce9&gt;] r6040_close+0x89/0x230 [r6040]
[   61.306415]    [   61.306415] [&lt;c13a0a91&gt;] __dev_close_many+0x61/0xa0
[   61.306415]    [   61.306415] [&lt;c13a0bbf&gt;] __dev_close+0x1f/0x30
[   61.306415]    [   61.306415] [&lt;c13a9127&gt;] __dev_change_flags+0x87/0x150
[   61.306415]    [   61.306415] [&lt;c13a9213&gt;] dev_change_flags+0x23/0x60
[   61.306415]    [   61.306415] [&lt;c1416238&gt;] devinet_ioctl+0x5f8/0x6f0
[   61.306415]    [   61.306415] [&lt;c1417f75&gt;] inet_ioctl+0x65/0x90
[   61.306415]    [   61.306415] [&lt;c1389b54&gt;] sock_ioctl+0x124/0x2b0
[   61.306415]    [   61.306415] [&lt;c113cf7c&gt;] do_vfs_ioctl+0x7c/0x790
[   61.306415]    [   61.306415] [&lt;c113d6b8&gt;] SyS_ioctl+0x28/0x50
[   61.306415]    [   61.306415] [&lt;c100179f&gt;] do_int80_syscall_32+0x3f/0x110
[   61.306415]    [   61.306415] [&lt;c14bba3f&gt;] restore_all+0x0/0x61
[   61.306415]
[   61.306415]
[   61.306415] stack backtrace:
[   61.306415] CPU: 0 PID: 449 Comm: ifconfig Not tainted 4.9.0-gb898d2d-manuel #1
[   61.306415] Call Trace:
[   61.306415]  dump_stack+0x16/0x19
[   61.306415]  check_usage+0x3f6/0x550
[   61.306415]  ? check_usage+0x4d/0x550
[   61.306415]  check_irq_usage+0x42/0xb0
[   61.306415]  __lock_acquire+0x110c/0x1770
[   61.306415]  lock_acquire+0x7c/0x150
[   61.306415]  ? phy_stop+0x16/0x80
[   61.306415]  mutex_lock_nested+0x2d/0x4a0
[   61.306415]  ? phy_stop+0x16/0x80
[   61.306415]  ? r6040_close+0x24/0x230 [r6040]
[   61.306415]  ? __delay+0x9/0x10
[   61.306415]  phy_stop+0x16/0x80
[   61.306415]  r6040_close+0x89/0x230 [r6040]
[   61.306415]  __dev_close_many+0x61/0xa0
[   61.306415]  __dev_close+0x1f/0x30
[   61.306415]  __dev_change_flags+0x87/0x150
[   61.306415]  dev_change_flags+0x23/0x60
[   61.306415]  devinet_ioctl+0x5f8/0x6f0
[   61.306415]  inet_ioctl+0x65/0x90
[   61.306415]  sock_ioctl+0x124/0x2b0
[   61.306415]  ? dlci_ioctl_set+0x30/0x30
[   61.306415]  do_vfs_ioctl+0x7c/0x790
[   61.306415]  ? trace_hardirqs_on+0xb/0x10
[   61.306415]  ? call_rcu_sched+0xd/0x10
[   61.306415]  ? __put_cred+0x32/0x50
[   61.306415]  ? SyS_faccessat+0x178/0x1e0
[   61.306415]  SyS_ioctl+0x28/0x50
[   61.306415]  do_int80_syscall_32+0x3f/0x110
[   61.306415]  entry_INT80_32+0x2f/0x2f
[   61.306415] EIP: 0xb764d364
[   61.306415] EFLAGS: 00000286 CPU: 0
[   61.306415] EAX: ffffffda EBX: 00000004 ECX: 00008914 EDX: bfa99d7c
[   61.306415] ESI: bfa99e4c EDI: fffffffe EBP: 00000004 ESP: bfa99d58
[   61.306415]  DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 007b
[   63.836607] r6040 0000:00:08.0 eth0: Link is Down

Signed-off-by: Manuel Bessler &lt;manuel.bessler@sensus.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
'ifconfig eth0 down' makes r6040_close() trigger:
 INFO: HARDIRQ-safe -&gt; HARDIRQ-unsafe lock order detected

Fixed by moving calls to phy_stop(), napi_disable(), netif_stop_queue()
to outside of the module's private spin_lock_irq block.

Found on a Versalogic Tomcat SBC with a Vortex86 SoC

s1660e_5150:~# sudo ifconfig eth0 down
[   61.306415] ======================================================
[   61.306415] [ INFO: SOFTIRQ-safe -&gt; SOFTIRQ-unsafe lock order detected ]
[   61.306415] 4.9.0-gb898d2d-manuel #1 Not tainted
[   61.306415] ------------------------------------------------------
[   61.306415] ifconfig/449 [HC0[0]:SC0[0]:HE0:SE1] is trying to acquire:
[   61.306415]  (&amp;dev-&gt;lock){+.+...}, at: [&lt;c1336276&gt;] phy_stop+0x16/0x80

[   61.306415] and this task is already holding:
[   61.306415]  (&amp;(&amp;lp-&gt;lock)-&gt;rlock){+.-...}, at: [&lt;d0934c84&gt;] r6040_close+0x24/0x230 [r6040]
which would create a new lock dependency:
[   61.306415]  (&amp;(&amp;lp-&gt;lock)-&gt;rlock){+.-...} -&gt; (&amp;dev-&gt;lock){+.+...}

[   61.306415] but this new dependency connects a SOFTIRQ-irq-safe lock:
[   61.306415]  (&amp;(&amp;lp-&gt;lock)-&gt;rlock){+.-...}
[   61.306415] ... which became SOFTIRQ-irq-safe at:
[   61.306415]   [   61.306415] [&lt;c1075bc5&gt;] __lock_acquire+0x555/0x1770
[   61.306415]   [   61.306415] [&lt;c107717c&gt;] lock_acquire+0x7c/0x150
[   61.306415]   [   61.306415] [&lt;c14bb334&gt;] _raw_spin_lock_irqsave+0x24/0x40
[   61.306415]   [   61.306415] [&lt;d0934ac0&gt;] r6040_start_xmit+0x30/0x1d0 [r6040]
[   61.306415]   [   61.306415] [&lt;c13a7d4d&gt;] dev_hard_start_xmit+0x9d/0x2d0
[   61.306415]   [   61.306415] [&lt;c13c8a38&gt;] sch_direct_xmit+0xa8/0x140
[   61.306415]   [   61.306415] [&lt;c13a8436&gt;] __dev_queue_xmit+0x416/0x780
[   61.306415]   [   61.306415] [&lt;c13a87aa&gt;] dev_queue_xmit+0xa/0x10
[   61.306415]   [   61.306415] [&lt;c13b4837&gt;] neigh_resolve_output+0x147/0x220
[   61.306415]   [   61.306415] [&lt;c144541b&gt;] ip6_finish_output2+0x2fb/0x910
[   61.306415]   [   61.306415] [&lt;c14494e6&gt;] ip6_finish_output+0xa6/0x1a0
[   61.306415]   [   61.306415] [&lt;c1449635&gt;] ip6_output+0x55/0x320
[   61.306415]   [   61.306415] [&lt;c146f4d2&gt;] mld_sendpack+0x352/0x560
[   61.306415]   [   61.306415] [&lt;c146fe55&gt;] mld_ifc_timer_expire+0x155/0x280
[   61.306415]   [   61.306415] [&lt;c108b081&gt;] call_timer_fn+0x81/0x270
[   61.306415]   [   61.306415] [&lt;c108b331&gt;] expire_timers+0xc1/0x180
[   61.306415]   [   61.306415] [&lt;c108b4f7&gt;] run_timer_softirq+0x77/0x150
[   61.306415]   [   61.306415] [&lt;c1043d04&gt;] __do_softirq+0xb4/0x3d0
[   61.306415]   [   61.306415] [&lt;c101a15c&gt;] do_softirq_own_stack+0x1c/0x30
[   61.306415]   [   61.306415] [&lt;c104416e&gt;] irq_exit+0x8e/0xa0
[   61.306415]   [   61.306415] [&lt;c1019d31&gt;] do_IRQ+0x51/0x100
[   61.306415]   [   61.306415] [&lt;c14bc176&gt;] common_interrupt+0x36/0x40
[   61.306415]   [   61.306415] [&lt;c1134928&gt;] set_root+0x68/0xf0
[   61.306415]   [   61.306415] [&lt;c1136120&gt;] path_init+0x400/0x640
[   61.306415]   [   61.306415] [&lt;c11386bf&gt;] path_lookupat+0xf/0xe0
[   61.306415]   [   61.306415] [&lt;c1139ebc&gt;] filename_lookup+0x6c/0x100
[   61.306415]   [   61.306415] [&lt;c1139fd5&gt;] user_path_at_empty+0x25/0x30
[   61.306415]   [   61.306415] [&lt;c11298c6&gt;] SyS_faccessat+0x86/0x1e0
[   61.306415]   [   61.306415] [&lt;c1129a30&gt;] SyS_access+0x10/0x20
[   61.306415]   [   61.306415] [&lt;c100179f&gt;] do_int80_syscall_32+0x3f/0x110
[   61.306415]   [   61.306415] [&lt;c14bba3f&gt;] restore_all+0x0/0x61
[   61.306415]
[   61.306415] to a SOFTIRQ-irq-unsafe lock:
[   61.306415]  (&amp;dev-&gt;lock){+.+...}
[   61.306415] ... which became SOFTIRQ-irq-unsafe at:
[   61.306415] ...[   61.306415]
[   61.306415] [&lt;c1075c0c&gt;] __lock_acquire+0x59c/0x1770
[   61.306415]   [   61.306415] [&lt;c107717c&gt;] lock_acquire+0x7c/0x150
[   61.306415]   [   61.306415] [&lt;c14b7add&gt;] mutex_lock_nested+0x2d/0x4a0
[   61.306415]   [   61.306415] [&lt;c133747d&gt;] phy_probe+0x4d/0xc0
[   61.306415]   [   61.306415] [&lt;c1338afe&gt;] phy_attach_direct+0xbe/0x190
[   61.306415]   [   61.306415] [&lt;c1338ca7&gt;] phy_connect_direct+0x17/0x60
[   61.306415]   [   61.306415] [&lt;c1338d23&gt;] phy_connect+0x33/0x70
[   61.306415]   [   61.306415] [&lt;d09357a0&gt;] r6040_init_one+0x3a0/0x500 [r6040]
[   61.306415]   [   61.306415] [&lt;c12a78c7&gt;] pci_device_probe+0x77/0xd0
[   61.306415]   [   61.306415] [&lt;c12f5e15&gt;] driver_probe_device+0x145/0x280
[   61.306415]   [   61.306415] [&lt;c12f5fd9&gt;] __driver_attach+0x89/0x90
[   61.306415]   [   61.306415] [&lt;c12f43ef&gt;] bus_for_each_dev+0x4f/0x80
[   61.306415]   [   61.306415] [&lt;c12f5954&gt;] driver_attach+0x14/0x20
[   61.306415]   [   61.306415] [&lt;c12f55b7&gt;] bus_add_driver+0x197/0x210
[   61.306415]   [   61.306415] [&lt;c12f6a21&gt;] driver_register+0x51/0xd0
[   61.306415]   [   61.306415] [&lt;c12a6955&gt;] __pci_register_driver+0x45/0x50
[   61.306415]   [   61.306415] [&lt;d0938017&gt;] 0xd0938017
[   61.306415]   [   61.306415] [&lt;c100043f&gt;] do_one_initcall+0x2f/0x140
[   61.306415]   [   61.306415] [&lt;c10e48c0&gt;] do_init_module+0x4a/0x19b
[   61.306415]   [   61.306415] [&lt;c10a680e&gt;] load_module+0x1b2e/0x2070
[   61.306415]   [   61.306415] [&lt;c10a6eb9&gt;] SyS_finit_module+0x69/0x80
[   61.306415]   [   61.306415] [&lt;c100179f&gt;] do_int80_syscall_32+0x3f/0x110
[   61.306415]   [   61.306415] [&lt;c14bba3f&gt;] restore_all+0x0/0x61
[   61.306415]
[   61.306415] other info that might help us debug this:
[   61.306415]
[   61.306415]  Possible interrupt unsafe locking scenario:
[   61.306415]
[   61.306415]        CPU0                    CPU1
[   61.306415]        ----                    ----
[   61.306415]   lock(&amp;dev-&gt;lock);
[   61.306415]                                local_irq_disable();
[   61.306415]                                lock(&amp;(&amp;lp-&gt;lock)-&gt;rlock);
[   61.306415]                                lock(&amp;dev-&gt;lock);
[   61.306415]   &lt;Interrupt&gt;
[   61.306415]     lock(&amp;(&amp;lp-&gt;lock)-&gt;rlock);
[   61.306415]
[   61.306415]  *** DEADLOCK ***
[   61.306415]
[   61.306415] 2 locks held by ifconfig/449:
[   61.306415]  #0:  (rtnl_mutex){+.+.+.}, at: [&lt;c13b68ef&gt;] rtnl_lock+0xf/0x20
[   61.306415]  #1:  (&amp;(&amp;lp-&gt;lock)-&gt;rlock){+.-...}, at: [&lt;d0934c84&gt;] r6040_close+0x24/0x230 [r6040]
[   61.306415]
[   61.306415] the dependencies between SOFTIRQ-irq-safe lock and the holding lock:
[   61.306415] -&gt; (&amp;(&amp;lp-&gt;lock)-&gt;rlock){+.-...} ops: 3049 {
[   61.306415]    HARDIRQ-ON-W at:
[   61.306415]                     [   61.306415] [&lt;c1075be7&gt;] __lock_acquire+0x577/0x1770
[   61.306415]                     [   61.306415] [&lt;c107717c&gt;] lock_acquire+0x7c/0x150
[   61.306415]                     [   61.306415] [&lt;c14bb21b&gt;] _raw_spin_lock+0x1b/0x30
[   61.306415]                     [   61.306415] [&lt;d09343cc&gt;] r6040_poll+0x2c/0x330 [r6040]
[   61.306415]                     [   61.306415] [&lt;c13a5577&gt;] net_rx_action+0x197/0x340
[   61.306415]                     [   61.306415] [&lt;c1043d04&gt;] __do_softirq+0xb4/0x3d0
[   61.306415]                     [   61.306415] [&lt;c1044037&gt;] run_ksoftirqd+0x17/0x40
[   61.306415]                     [   61.306415] [&lt;c105fe91&gt;] smpboot_thread_fn+0x141/0x180
[   61.306415]                     [   61.306415] [&lt;c105c84e&gt;] kthread+0xde/0x110
[   61.306415]                     [   61.306415] [&lt;c14bb949&gt;] ret_from_fork+0x19/0x30
[   61.306415]    IN-SOFTIRQ-W at:
[   61.306415]                     [   61.306415] [&lt;c1075bc5&gt;] __lock_acquire+0x555/0x1770
[   61.306415]                     [   61.306415] [&lt;c107717c&gt;] lock_acquire+0x7c/0x150
[   61.306415]                     [   61.306415] [&lt;c14bb334&gt;] _raw_spin_lock_irqsave+0x24/0x40
[   61.306415]                     [   61.306415] [&lt;d0934ac0&gt;] r6040_start_xmit+0x30/0x1d0 [r6040]
[   61.306415]                     [   61.306415] [&lt;c13a7d4d&gt;] dev_hard_start_xmit+0x9d/0x2d0
[   61.306415]                     [   61.306415] [&lt;c13c8a38&gt;] sch_direct_xmit+0xa8/0x140
[   61.306415]                     [   61.306415] [&lt;c13a8436&gt;] __dev_queue_xmit+0x416/0x780
[   61.306415]                     [   61.306415] [&lt;c13a87aa&gt;] dev_queue_xmit+0xa/0x10
[   61.306415]                     [   61.306415] [&lt;c13b4837&gt;] neigh_resolve_output+0x147/0x220
[   61.306415]                     [   61.306415] [&lt;c144541b&gt;] ip6_finish_output2+0x2fb/0x910
[   61.306415]                     [   61.306415] [&lt;c14494e6&gt;] ip6_finish_output+0xa6/0x1a0
[   61.306415]                     [   61.306415] [&lt;c1449635&gt;] ip6_output+0x55/0x320
[   61.306415]                     [   61.306415] [&lt;c146f4d2&gt;] mld_sendpack+0x352/0x560
[   61.306415]                     [   61.306415] [&lt;c146fe55&gt;] mld_ifc_timer_expire+0x155/0x280
[   61.306415]                     [   61.306415] [&lt;c108b081&gt;] call_timer_fn+0x81/0x270
[   61.306415]                     [   61.306415] [&lt;c108b331&gt;] expire_timers+0xc1/0x180
[   61.306415]                     [   61.306415] [&lt;c108b4f7&gt;] run_timer_softirq+0x77/0x150
[   61.306415]                     [   61.306415] [&lt;c1043d04&gt;] __do_softirq+0xb4/0x3d0
[   61.306415]                     [   61.306415] [&lt;c101a15c&gt;] do_softirq_own_stack+0x1c/0x30
[   61.306415]                     [   61.306415] [&lt;c104416e&gt;] irq_exit+0x8e/0xa0
[   61.306415]                     [   61.306415] [&lt;c1019d31&gt;] do_IRQ+0x51/0x100
[   61.306415]                     [   61.306415] [&lt;c14bc176&gt;] common_interrupt+0x36/0x40
[   61.306415]                     [   61.306415] [&lt;c1134928&gt;] set_root+0x68/0xf0
[   61.306415]                     [   61.306415] [&lt;c1136120&gt;] path_init+0x400/0x640
[   61.306415]                     [   61.306415] [&lt;c11386bf&gt;] path_lookupat+0xf/0xe0
[   61.306415]                     [   61.306415] [&lt;c1139ebc&gt;] filename_lookup+0x6c/0x100
[   61.306415]                     [   61.306415] [&lt;c1139fd5&gt;] user_path_at_empty+0x25/0x30
[   61.306415]                     [   61.306415] [&lt;c11298c6&gt;] SyS_faccessat+0x86/0x1e0
[   61.306415]                     [   61.306415] [&lt;c1129a30&gt;] SyS_access+0x10/0x20
[   61.306415]                     [   61.306415] [&lt;c100179f&gt;] do_int80_syscall_32+0x3f/0x110
[   61.306415]                     [   61.306415] [&lt;c14bba3f&gt;] restore_all+0x0/0x61
[   61.306415]    INITIAL USE at:
[   61.306415]                    [   61.306415] [&lt;c107586e&gt;] __lock_acquire+0x1fe/0x1770
[   61.306415]                    [   61.306415] [&lt;c107717c&gt;] lock_acquire+0x7c/0x150
[   61.306415]                    [   61.306415] [&lt;c14bb334&gt;] _raw_spin_lock_irqsave+0x24/0x40
[   61.306415]                    [   61.306415] [&lt;d093474e&gt;] r6040_get_stats+0x1e/0x60 [r6040]
[   61.306415]                    [   61.306415] [&lt;c139fb16&gt;] dev_get_stats+0x96/0xc0
[   61.306415]                    [   61.306415] [&lt;c14b416e&gt;] rtnl_fill_stats+0x36/0xfd
[   61.306415]                    [   61.306415] [&lt;c13b7b3c&gt;] rtnl_fill_ifinfo+0x47c/0xce0
[   61.306415]                    [   61.306415] [&lt;c13bc08e&gt;] rtmsg_ifinfo_build_skb+0x4e/0xd0
[   61.306415]                    [   61.306415] [&lt;c13bc120&gt;] rtmsg_ifinfo.part.20+0x10/0x40
[   61.306415]                    [   61.306415] [&lt;c13bc16b&gt;] rtmsg_ifinfo+0x1b/0x20
[   61.306415]                    [   61.306415] [&lt;c13a9d19&gt;] register_netdevice+0x409/0x550
[   61.306415]                    [   61.306415] [&lt;c13a9e72&gt;] register_netdev+0x12/0x20
[   61.306415]                    [   61.306415] [&lt;d09357e8&gt;] r6040_init_one+0x3e8/0x500 [r6040]
[   61.306415]                    [   61.306415] [&lt;c12a78c7&gt;] pci_device_probe+0x77/0xd0
[   61.306415]                    [   61.306415] [&lt;c12f5e15&gt;] driver_probe_device+0x145/0x280
[   61.306415]                    [   61.306415] [&lt;c12f5fd9&gt;] __driver_attach+0x89/0x90
[   61.306415]                    [   61.306415] [&lt;c12f43ef&gt;] bus_for_each_dev+0x4f/0x80
[   61.306415]                    [   61.306415] [&lt;c12f5954&gt;] driver_attach+0x14/0x20
[   61.306415]                    [   61.306415] [&lt;c12f55b7&gt;] bus_add_driver+0x197/0x210
[   61.306415]                    [   61.306415] [&lt;c12f6a21&gt;] driver_register+0x51/0xd0
[   61.306415]                    [   61.306415] [&lt;c12a6955&gt;] __pci_register_driver+0x45/0x50
[   61.306415]                    [   61.306415] [&lt;d0938017&gt;] 0xd0938017
[   61.306415]                    [   61.306415] [&lt;c100043f&gt;] do_one_initcall+0x2f/0x140
[   61.306415]                    [   61.306415] [&lt;c10e48c0&gt;] do_init_module+0x4a/0x19b
[   61.306415]                    [   61.306415] [&lt;c10a680e&gt;] load_module+0x1b2e/0x2070
[   61.306415]                    [   61.306415] [&lt;c10a6eb9&gt;] SyS_finit_module+0x69/0x80
[   61.306415]                    [   61.306415] [&lt;c100179f&gt;] do_int80_syscall_32+0x3f/0x110
[   61.306415]                    [   61.306415] [&lt;c14bba3f&gt;] restore_all+0x0/0x61
[   61.306415]  }
[   61.306415]  ... key      at: [&lt;d0936280&gt;] __key.45893+0x0/0xfffff739 [r6040]
[   61.306415]  ... acquired at:
[   61.306415]    [   61.306415] [&lt;c1074a32&gt;] check_irq_usage+0x42/0xb0
[   61.306415]    [   61.306415] [&lt;c107677c&gt;] __lock_acquire+0x110c/0x1770
[   61.306415]    [   61.306415] [&lt;c107717c&gt;] lock_acquire+0x7c/0x150
[   61.306415]    [   61.306415] [&lt;c14b7add&gt;] mutex_lock_nested+0x2d/0x4a0
[   61.306415]    [   61.306415] [&lt;c1336276&gt;] phy_stop+0x16/0x80
[   61.306415]    [   61.306415] [&lt;d0934ce9&gt;] r6040_close+0x89/0x230 [r6040]
[   61.306415]    [   61.306415] [&lt;c13a0a91&gt;] __dev_close_many+0x61/0xa0
[   61.306415]    [   61.306415] [&lt;c13a0bbf&gt;] __dev_close+0x1f/0x30
[   61.306415]    [   61.306415] [&lt;c13a9127&gt;] __dev_change_flags+0x87/0x150
[   61.306415]    [   61.306415] [&lt;c13a9213&gt;] dev_change_flags+0x23/0x60
[   61.306415]    [   61.306415] [&lt;c1416238&gt;] devinet_ioctl+0x5f8/0x6f0
[   61.306415]    [   61.306415] [&lt;c1417f75&gt;] inet_ioctl+0x65/0x90
[   61.306415]    [   61.306415] [&lt;c1389b54&gt;] sock_ioctl+0x124/0x2b0
[   61.306415]    [   61.306415] [&lt;c113cf7c&gt;] do_vfs_ioctl+0x7c/0x790
[   61.306415]    [   61.306415] [&lt;c113d6b8&gt;] SyS_ioctl+0x28/0x50
[   61.306415]    [   61.306415] [&lt;c100179f&gt;] do_int80_syscall_32+0x3f/0x110
[   61.306415]    [   61.306415] [&lt;c14bba3f&gt;] restore_all+0x0/0x61
[   61.306415]
[   61.306415]
the dependencies between the lock to be acquired[   61.306415]  and SOFTIRQ-irq-unsafe lock:
[   61.306415] -&gt; (&amp;dev-&gt;lock){+.+...} ops: 56 {
[   61.306415]    HARDIRQ-ON-W at:
[   61.306415]                     [   61.306415] [&lt;c1075be7&gt;] __lock_acquire+0x577/0x1770
[   61.306415]                     [   61.306415] [&lt;c107717c&gt;] lock_acquire+0x7c/0x150
[   61.306415]                     [   61.306415] [&lt;c14b7add&gt;] mutex_lock_nested+0x2d/0x4a0
[   61.306415]                     [   61.306415] [&lt;c133747d&gt;] phy_probe+0x4d/0xc0
[   61.306415]                     [   61.306415] [&lt;c1338afe&gt;] phy_attach_direct+0xbe/0x190
[   61.306415]                     [   61.306415] [&lt;c1338ca7&gt;] phy_connect_direct+0x17/0x60
[   61.306415]                     [   61.306415] [&lt;c1338d23&gt;] phy_connect+0x33/0x70
[   61.306415]                     [   61.306415] [&lt;d09357a0&gt;] r6040_init_one+0x3a0/0x500 [r6040]
[   61.306415]                     [   61.306415] [&lt;c12a78c7&gt;] pci_device_probe+0x77/0xd0
[   61.306415]                     [   61.306415] [&lt;c12f5e15&gt;] driver_probe_device+0x145/0x280
[   61.306415]                     [   61.306415] [&lt;c12f5fd9&gt;] __driver_attach+0x89/0x90
[   61.306415]                     [   61.306415] [&lt;c12f43ef&gt;] bus_for_each_dev+0x4f/0x80
[   61.306415]                     [   61.306415] [&lt;c12f5954&gt;] driver_attach+0x14/0x20
[   61.306415]                     [   61.306415] [&lt;c12f55b7&gt;] bus_add_driver+0x197/0x210
[   61.306415]                     [   61.306415] [&lt;c12f6a21&gt;] driver_register+0x51/0xd0
[   61.306415]                     [   61.306415] [&lt;c12a6955&gt;] __pci_register_driver+0x45/0x50
[   61.306415]                     [   61.306415] [&lt;d0938017&gt;] 0xd0938017
[   61.306415]                     [   61.306415] [&lt;c100043f&gt;] do_one_initcall+0x2f/0x140
[   61.306415]                     [   61.306415] [&lt;c10e48c0&gt;] do_init_module+0x4a/0x19b
[   61.306415]                     [   61.306415] [&lt;c10a680e&gt;] load_module+0x1b2e/0x2070
[   61.306415]                     [   61.306415] [&lt;c10a6eb9&gt;] SyS_finit_module+0x69/0x80
[   61.306415]                     [   61.306415] [&lt;c100179f&gt;] do_int80_syscall_32+0x3f/0x110
[   61.306415]                     [   61.306415] [&lt;c14bba3f&gt;] restore_all+0x0/0x61
[   61.306415]    SOFTIRQ-ON-W at:
[   61.306415]                     [   61.306415] [&lt;c1075c0c&gt;] __lock_acquire+0x59c/0x1770
[   61.306415]                     [   61.306415] [&lt;c107717c&gt;] lock_acquire+0x7c/0x150
[   61.306415]                     [   61.306415] [&lt;c14b7add&gt;] mutex_lock_nested+0x2d/0x4a0
[   61.306415]                     [   61.306415] [&lt;c133747d&gt;] phy_probe+0x4d/0xc0
[   61.306415]                     [   61.306415] [&lt;c1338afe&gt;] phy_attach_direct+0xbe/0x190
[   61.306415]                     [   61.306415] [&lt;c1338ca7&gt;] phy_connect_direct+0x17/0x60
[   61.306415]                     [   61.306415] [&lt;c1338d23&gt;] phy_connect+0x33/0x70
[   61.306415]                     [   61.306415] [&lt;d09357a0&gt;] r6040_init_one+0x3a0/0x500 [r6040]
[   61.306415]                     [   61.306415] [&lt;c12a78c7&gt;] pci_device_probe+0x77/0xd0
[   61.306415]                     [   61.306415] [&lt;c12f5e15&gt;] driver_probe_device+0x145/0x280
[   61.306415]                     [   61.306415] [&lt;c12f5fd9&gt;] __driver_attach+0x89/0x90
[   61.306415]                     [   61.306415] [&lt;c12f43ef&gt;] bus_for_each_dev+0x4f/0x80
[   61.306415]                     [   61.306415] [&lt;c12f5954&gt;] driver_attach+0x14/0x20
[   61.306415]                     [   61.306415] [&lt;c12f55b7&gt;] bus_add_driver+0x197/0x210
[   61.306415]                     [   61.306415] [&lt;c12f6a21&gt;] driver_register+0x51/0xd0
[   61.306415]                     [   61.306415] [&lt;c12a6955&gt;] __pci_register_driver+0x45/0x50
[   61.306415]                     [   61.306415] [&lt;d0938017&gt;] 0xd0938017
[   61.306415]                     [   61.306415] [&lt;c100043f&gt;] do_one_initcall+0x2f/0x140
[   61.306415]                     [   61.306415] [&lt;c10e48c0&gt;] do_init_module+0x4a/0x19b
[   61.306415]                     [   61.306415] [&lt;c10a680e&gt;] load_module+0x1b2e/0x2070
[   61.306415]                     [   61.306415] [&lt;c10a6eb9&gt;] SyS_finit_module+0x69/0x80
[   61.306415]                     [   61.306415] [&lt;c100179f&gt;] do_int80_syscall_32+0x3f/0x110
[   61.306415]                     [   61.306415] [&lt;c14bba3f&gt;] restore_all+0x0/0x61
[   61.306415]    INITIAL USE at:
[   61.306415]                    [   61.306415] [&lt;c107586e&gt;] __lock_acquire+0x1fe/0x1770
[   61.306415]                    [   61.306415] [&lt;c107717c&gt;] lock_acquire+0x7c/0x150
[   61.306415]                    [   61.306415] [&lt;c14b7add&gt;] mutex_lock_nested+0x2d/0x4a0
[   61.306415]                    [   61.306415] [&lt;c133747d&gt;] phy_probe+0x4d/0xc0
[   61.306415]                    [   61.306415] [&lt;c1338afe&gt;] phy_attach_direct+0xbe/0x190
[   61.306415]                    [   61.306415] [&lt;c1338ca7&gt;] phy_connect_direct+0x17/0x60
[   61.306415]                    [   61.306415] [&lt;c1338d23&gt;] phy_connect+0x33/0x70
[   61.306415]                    [   61.306415] [&lt;d09357a0&gt;] r6040_init_one+0x3a0/0x500 [r6040]
[   61.306415]                    [   61.306415] [&lt;c12a78c7&gt;] pci_device_probe+0x77/0xd0
[   61.306415]                    [   61.306415] [&lt;c12f5e15&gt;] driver_probe_device+0x145/0x280
[   61.306415]                    [   61.306415] [&lt;c12f5fd9&gt;] __driver_attach+0x89/0x90
[   61.306415]                    [   61.306415] [&lt;c12f43ef&gt;] bus_for_each_dev+0x4f/0x80
[   61.306415]                    [   61.306415] [&lt;c12f5954&gt;] driver_attach+0x14/0x20
[   61.306415]                    [   61.306415] [&lt;c12f55b7&gt;] bus_add_driver+0x197/0x210
[   61.306415]                    [   61.306415] [&lt;c12f6a21&gt;] driver_register+0x51/0xd0
[   61.306415]                    [   61.306415] [&lt;c12a6955&gt;] __pci_register_driver+0x45/0x50
[   61.306415]                    [   61.306415] [&lt;d0938017&gt;] 0xd0938017
[   61.306415]                    [   61.306415] [&lt;c100043f&gt;] do_one_initcall+0x2f/0x140
[   61.306415]                    [   61.306415] [&lt;c10e48c0&gt;] do_init_module+0x4a/0x19b
[   61.306415]                    [   61.306415] [&lt;c10a680e&gt;] load_module+0x1b2e/0x2070
[   61.306415]                    [   61.306415] [&lt;c10a6eb9&gt;] SyS_finit_module+0x69/0x80
[   61.306415]                    [   61.306415] [&lt;c100179f&gt;] do_int80_syscall_32+0x3f/0x110
[   61.306415]                    [   61.306415] [&lt;c14bba3f&gt;] restore_all+0x0/0x61
[   61.306415]  }
[   61.306415]  ... key      at: [&lt;c1f28f39&gt;] __key.43998+0x0/0x8
[   61.306415]  ... acquired at:
[   61.306415]    [   61.306415] [&lt;c1074a32&gt;] check_irq_usage+0x42/0xb0
[   61.306415]    [   61.306415] [&lt;c107677c&gt;] __lock_acquire+0x110c/0x1770
[   61.306415]    [   61.306415] [&lt;c107717c&gt;] lock_acquire+0x7c/0x150
[   61.306415]    [   61.306415] [&lt;c14b7add&gt;] mutex_lock_nested+0x2d/0x4a0
[   61.306415]    [   61.306415] [&lt;c1336276&gt;] phy_stop+0x16/0x80
[   61.306415]    [   61.306415] [&lt;d0934ce9&gt;] r6040_close+0x89/0x230 [r6040]
[   61.306415]    [   61.306415] [&lt;c13a0a91&gt;] __dev_close_many+0x61/0xa0
[   61.306415]    [   61.306415] [&lt;c13a0bbf&gt;] __dev_close+0x1f/0x30
[   61.306415]    [   61.306415] [&lt;c13a9127&gt;] __dev_change_flags+0x87/0x150
[   61.306415]    [   61.306415] [&lt;c13a9213&gt;] dev_change_flags+0x23/0x60
[   61.306415]    [   61.306415] [&lt;c1416238&gt;] devinet_ioctl+0x5f8/0x6f0
[   61.306415]    [   61.306415] [&lt;c1417f75&gt;] inet_ioctl+0x65/0x90
[   61.306415]    [   61.306415] [&lt;c1389b54&gt;] sock_ioctl+0x124/0x2b0
[   61.306415]    [   61.306415] [&lt;c113cf7c&gt;] do_vfs_ioctl+0x7c/0x790
[   61.306415]    [   61.306415] [&lt;c113d6b8&gt;] SyS_ioctl+0x28/0x50
[   61.306415]    [   61.306415] [&lt;c100179f&gt;] do_int80_syscall_32+0x3f/0x110
[   61.306415]    [   61.306415] [&lt;c14bba3f&gt;] restore_all+0x0/0x61
[   61.306415]
[   61.306415]
[   61.306415] stack backtrace:
[   61.306415] CPU: 0 PID: 449 Comm: ifconfig Not tainted 4.9.0-gb898d2d-manuel #1
[   61.306415] Call Trace:
[   61.306415]  dump_stack+0x16/0x19
[   61.306415]  check_usage+0x3f6/0x550
[   61.306415]  ? check_usage+0x4d/0x550
[   61.306415]  check_irq_usage+0x42/0xb0
[   61.306415]  __lock_acquire+0x110c/0x1770
[   61.306415]  lock_acquire+0x7c/0x150
[   61.306415]  ? phy_stop+0x16/0x80
[   61.306415]  mutex_lock_nested+0x2d/0x4a0
[   61.306415]  ? phy_stop+0x16/0x80
[   61.306415]  ? r6040_close+0x24/0x230 [r6040]
[   61.306415]  ? __delay+0x9/0x10
[   61.306415]  phy_stop+0x16/0x80
[   61.306415]  r6040_close+0x89/0x230 [r6040]
[   61.306415]  __dev_close_many+0x61/0xa0
[   61.306415]  __dev_close+0x1f/0x30
[   61.306415]  __dev_change_flags+0x87/0x150
[   61.306415]  dev_change_flags+0x23/0x60
[   61.306415]  devinet_ioctl+0x5f8/0x6f0
[   61.306415]  inet_ioctl+0x65/0x90
[   61.306415]  sock_ioctl+0x124/0x2b0
[   61.306415]  ? dlci_ioctl_set+0x30/0x30
[   61.306415]  do_vfs_ioctl+0x7c/0x790
[   61.306415]  ? trace_hardirqs_on+0xb/0x10
[   61.306415]  ? call_rcu_sched+0xd/0x10
[   61.306415]  ? __put_cred+0x32/0x50
[   61.306415]  ? SyS_faccessat+0x178/0x1e0
[   61.306415]  SyS_ioctl+0x28/0x50
[   61.306415]  do_int80_syscall_32+0x3f/0x110
[   61.306415]  entry_INT80_32+0x2f/0x2f
[   61.306415] EIP: 0xb764d364
[   61.306415] EFLAGS: 00000286 CPU: 0
[   61.306415] EAX: ffffffda EBX: 00000004 ECX: 00008914 EDX: bfa99d7c
[   61.306415] ESI: bfa99e4c EDI: fffffffe EBP: 00000004 ESP: bfa99d58
[   61.306415]  DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 007b
[   63.836607] r6040 0000:00:08.0 eth0: Link is Down

Signed-off-by: Manuel Bessler &lt;manuel.bessler@sensus.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net: deprecate eth_change_mtu, remove usage</title>
<updated>2016-10-13T13:36:57+00:00</updated>
<author>
<name>Jarod Wilson</name>
<email>jarod@redhat.com</email>
</author>
<published>2016-10-08T02:04:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=a52ad514fdf3b8a57ca4322c92d2d8d5c6182485'/>
<id>a52ad514fdf3b8a57ca4322c92d2d8d5c6182485</id>
<content type='text'>
With centralized MTU checking, there's nothing productive done by
eth_change_mtu that isn't already done in dev_set_mtu, so mark it as
deprecated and remove all usage of it in the kernel. All callers have been
audited for calls to alloc_etherdev* or ether_setup directly, which means
they all have a valid dev-&gt;min_mtu and dev-&gt;max_mtu. Now eth_change_mtu
prints out a netdev_warn about being deprecated, for the benefit of
out-of-tree drivers that might be utilizing it.

Of note, dvb_net.c actually had dev-&gt;mtu = 4096, while using
eth_change_mtu, meaning that if you ever tried changing it's mtu, you
couldn't set it above 1500 anymore. It's now getting dev-&gt;max_mtu also set
to 4096 to remedy that.

v2: fix up lantiq_etop, missed breakage due to drive not compiling on x86

CC: netdev@vger.kernel.org
Signed-off-by: Jarod Wilson &lt;jarod@redhat.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
With centralized MTU checking, there's nothing productive done by
eth_change_mtu that isn't already done in dev_set_mtu, so mark it as
deprecated and remove all usage of it in the kernel. All callers have been
audited for calls to alloc_etherdev* or ether_setup directly, which means
they all have a valid dev-&gt;min_mtu and dev-&gt;max_mtu. Now eth_change_mtu
prints out a netdev_warn about being deprecated, for the benefit of
out-of-tree drivers that might be utilizing it.

Of note, dvb_net.c actually had dev-&gt;mtu = 4096, while using
eth_change_mtu, meaning that if you ever tried changing it's mtu, you
couldn't set it above 1500 anymore. It's now getting dev-&gt;max_mtu also set
to 4096 to remedy that.

v2: fix up lantiq_etop, missed breakage due to drive not compiling on x86

CC: netdev@vger.kernel.org
Signed-off-by: Jarod Wilson &lt;jarod@redhat.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
</feed>
