1. 06 Feb, 2020 1 commit
  2. 17 Jan, 2020 1 commit
    • Florian Fainelli's avatar
      net: systemport: Fixed queue mapping in internal ring map · 5a9ef194
      Florian Fainelli authored
      We would not be transmitting using the correct SYSTEMPORT transmit queue
      during ndo_select_queue() which looks up the internal TX ring map
      because while establishing the mapping we would be off by 4, so for
      instance, when we populate switch port mappings we would be doing:
      
      switch port 0, queue 0 -> ring index #0
      switch port 0, queue 1 -> ring index #1
      ...
      switch port 0, queue 3 -> ring index #3
      switch port 1, queue 0 -> ring index #8 (4 + 4 * 1)
      ...
      
      instead of using ring index #4. This would cause our ndo_select_queue()
      to use the fallback queue mechanism which would pick up an incorrect
      ring for that switch port. Fix this by using the correct switch queue
      number instead of SYSTEMPORT queue number.
      
      Fixes: 25c44070
      
       ("net: systemport: Simplify queue mapping logic")
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5a9ef194
  3. 20 Dec, 2019 1 commit
  4. 13 Dec, 2019 1 commit
    • Michael S. Tsirkin's avatar
      netdev: pass the stuck queue to the timeout handler · 0290bd29
      Michael S. Tsirkin authored
      
      
      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->netdev->netdev_ops->ndo_tx_timeout(adapter->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 (<ARGV>) {
      		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: default avatarMichael S. Tsirkin <mst@redhat.com>
      Acked-by: default avatarHeiner Kallweit <hkallweit1@gmail.com>
      Acked-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
      Acked-by: default avatarShannon Nelson <snelson@pensando.io>
      Reviewed-by: default avatarMartin Habets <mhabets@solarflare.com>
      
      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: default avatarDavid S. Miller <davem@davemloft.net>
      0290bd29
  5. 04 Nov, 2019 1 commit
    • Andrew Lunn's avatar
      net: of_get_phy_mode: Change API to solve int/unit warnings · 0c65b2b9
      Andrew Lunn authored
      
      
      Before this change of_get_phy_mode() returned an enum,
      phy_interface_t. On error, -ENODEV etc, is returned. If the result of
      the function is stored in a variable of type phy_interface_t, and the
      compiler has decided to represent this as an unsigned int, comparision
      with -ENODEV etc, is a signed vs unsigned comparision.
      
      Fix this problem by changing the API. Make the function return an
      error, or 0 on success, and pass a pointer, of type phy_interface_t,
      where the phy mode should be stored.
      
      v2:
      Return with *interface set to PHY_INTERFACE_MODE_NA on error.
      Add error checks to all users of of_get_phy_mode()
      Fixup a few reverse christmas tree errors
      Fixup a few slightly malformed reverse christmas trees
      
      v3:
      Fix 0-day reported errors.
      
      Reported-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0c65b2b9
  6. 27 Sep, 2019 1 commit
  7. 22 Aug, 2019 1 commit
  8. 21 Aug, 2019 1 commit
  9. 25 Jul, 2019 1 commit
  10. 25 Jun, 2019 3 commits
  11. 19 Jun, 2019 1 commit
  12. 07 May, 2019 1 commit
  13. 23 Apr, 2019 1 commit
  14. 21 Mar, 2019 1 commit
  15. 20 Mar, 2019 1 commit
    • Paolo Abeni's avatar
      net: remove 'fallback' argument from dev->ndo_select_queue() · a350ecce
      Paolo Abeni authored
      
      
      After the previous patch, all the callers of ndo_select_queue()
      provide as a 'fallback' argument netdev_pick_tx.
      The only exceptions are nested calls to ndo_select_queue(),
      which pass down the 'fallback' available in the current scope
      - still netdev_pick_tx.
      
      We can drop such argument and replace fallback() invocation with
      netdev_pick_tx(). This avoids an indirect call per xmit packet
      in some scenarios (TCP syn, UDP unconnected, XDP generic, pktgen)
      with device drivers implementing such ndo. It also clean the code
      a bit.
      
      Tested with ixgbe and CONFIG_FCOE=m
      
      With pktgen using queue xmit:
      threads		vanilla 	patched
      		(kpps)		(kpps)
      1		2334		2428
      2		4166		4278
      4		7895		8100
      
       v1 -> v2:
       - rebased after helper's name change
      
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a350ecce
  16. 16 Feb, 2019 1 commit
  17. 03 Feb, 2019 1 commit
  18. 08 Jan, 2019 1 commit
  19. 06 Nov, 2018 3 commits
  20. 03 Nov, 2018 1 commit
    • Florian Fainelli's avatar
      net: systemport: Protect stop from timeout · 7cb6a2a2
      Florian Fainelli authored
      A timing hazard exists when the network interface is stopped that
      allows a watchdog timeout to be processed by a separate core in
      parallel. This creates the potential for the timeout handler to
      wake the queues while the driver is shutting down, or access
      registers after their clocks have been removed.
      
      The more common case is that the watchdog timeout will produce a
      warning message which doesn't lead to a crash. The chances of this
      are greatly increased by the fact that bcm_sysport_netif_stop stops
      the transmit queues which can easily precipitate a watchdog time-
      out because of stale trans_start data in the queues.
      
      This commit corrects the behavior by ensuring that the watchdog
      timeout is disabled before enterring bcm_sysport_netif_stop. There
      are currently only two users of the bcm_sysport_netif_stop function:
      close and suspend.
      
      The close case already handles the issue by exiting the RUNNING
      state before invoking the driver close service.
      
      The suspend case now performs the netif_device_detach to exit the
      PRESENT state before the call to bcm_sysport_netif_stop rather than
      after it.
      
      These behaviors prevent any future scheduling of the driver timeout
      service during the window. The netif_tx_stop_all_queues function
      in bcm_sysport_netif_stop is replaced with netif_tx_disable to ensure
      synchronization with any transmit or timeout threads that may
      already be executing on other cores.
      
      For symmetry, the netif_device_attach call upon resume is moved to
      after the call to bcm_sysport_netif_start. Since it wakes the transmit
      queues it is not necessary to invoke netif_tx_start_all_queues from
      bcm_sysport_netif_start so it is moved into the driver open service.
      
      Fixes: 40755a0f ("net: systemport: add suspend and resume support")
      Fixes: 80105bef
      
       ("net: systemport: add Broadcom SYSTEMPORT Ethernet MAC driver")
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7cb6a2a2
  21. 03 Oct, 2018 1 commit
    • Florian Fainelli's avatar
      net: systemport: Fix wake-up interrupt race during resume · 45ec3185
      Florian Fainelli authored
      The AON_PM_L2 is normally used to trigger and identify the source of a
      wake-up event. Since the RX_SYS clock is no longer turned off, we also
      have an interrupt being sent to the SYSTEMPORT INTRL_2_0 controller, and
      that interrupt remains active up until the magic packet detector is
      disabled which happens much later during the driver resumption.
      
      The race happens if we have a CPU that is entering the SYSTEMPORT
      INTRL2_0 handler during resume, and another CPU has managed to clear the
      wake-up interrupt during bcm_sysport_resume_from_wol(). In that case, we
      have the first CPU stuck in the interrupt handler with an interrupt
      cause that has been cleared under its feet, and so we keep returning
      IRQ_NONE and we never make any progress.
      
      This was not a problem before because we would always turn off the
      RX_SYS clock during WoL, so the SYSTEMPORT INTRL2_0 would also be turned
      off as well, thus not latching the interrupt.
      
      The fix is to make sure we do not enable either the MPD or
      BRCM_TAG_MATCH interrupts since those are redundant with what the
      AON_PM_L2 interrupt controller already processes and they would cause
      such a race to occur.
      
      Fixes: bb9051a2 ("net: systemport: Add support for WAKE_FILTER")
      Fixes: 83e82f4c
      
       ("net: systemport: add Wake-on-LAN support")
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      45ec3185
  22. 02 Oct, 2018 5 commits
  23. 14 Aug, 2018 1 commit
  24. 07 Aug, 2018 1 commit
  25. 03 Aug, 2018 2 commits
  26. 12 Jul, 2018 1 commit
  27. 09 Jul, 2018 2 commits
  28. 30 Apr, 2018 1 commit
  29. 27 Apr, 2018 1 commit
    • Florian Fainelli's avatar
      net: systemport: Correclty disambiguate driver instances · 1f3ccc3c
      Florian Fainelli authored
      While adding the DSA notifier, we will be sending DSA notifications with
      info->master that is going to point to a particular net_device instance.
      
      Our logic in bcm_sysport_map_queues() correctly disambiguates net_device
      instances that are not covered by our own driver, but it will not make
      sure that info->master points to a particular driver instance that we
      are interested in. In a system where e.g: two or more SYSTEMPORT
      instances are registered, this would lead in programming two or more
      times the queue mapping, completely messing with the logic which does
      the queue/port allocation and tracking.
      
      Fix this by looking at the notifier_block pointer which is unique per
      instance and allows us to go back to our driver private structure, and
      in turn to the backing net_device instance.
      
      Fixes: d1565763
      
       ("net: systemport: Establish lower/upper queue mapping")
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Reviewed-by: default avatarVivien Didelot <vivien.didelot@savoirfairelinux.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1f3ccc3c
  30. 24 Apr, 2018 1 commit