linux_dsm_epyc7002/drivers/net/ethernet
Brett Creeley f844d5212c ice: Fix removing driver while bare-metal VFs pass traffic
Currently, if there are bare-metal VFs passing traffic and the ice
driver is removed, there is a possibility of VFs triggering a Tx timeout
right before iavf_remove(). This is causing iavf_close() to not be
called because there is a check in the beginning of iavf_remove() that
bails out early if (adapter->state < IAVF_DOWN_PENDING). This makes it
so some resources do not get cleaned up. Specifically, free_irq()
is never called for data interrupts, which results in the following line
of code to trigger:

pci_disable_msix()
	free_msi_irqs()
		...
		BUG_ON(irq_has_action(entry->irq + i));
		...

To prevent the Tx timeout from occurring on the VF during driver unload
for ice and the iavf there are a few changes that are needed.

[1] Don't disable all active VF Tx/Rx queues prior to calling
pci_disable_sriov.

[2] Call ice_free_vfs() before disabling the service task.

[3] Disable VF resets when the ice driver is being unloaded by setting
the pf->state flag __ICE_VF_RESETS_DISABLED.

Changing [1] and [2] allow each VF driver's remove flow to successfully
send VIRTCHNL requests, which includes queue disable. This prevents
unexpected Tx timeouts because the PF driver is no longer forcefully
disabling queues.

Due to [1] and [2] there is a possibility that the PF driver will get a
VFLR or reset request over VIRTCHNL from a VF during PF driver unload.
Prevent that by doing [3].

Signed-off-by: Brett Creeley <brett.creeley@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2020-03-10 13:10:02 -07:00
..
3com net/3com: Delete driver and module versions from 3com drivers 2020-02-24 11:23:36 -08:00
8390
adaptec net/adaptec: Clean driver versions 2020-02-24 11:23:36 -08:00
aeroflex net/aeroflex: Don't assign FW if it is not available 2020-02-24 11:23:37 -08:00
agere net/agere: Delete unneeded driver version 2020-02-24 11:23:37 -08:00
alacritech net/alacritech: Delete driver version 2020-02-24 11:23:37 -08:00
allwinner net/allwinner: Remove driver version 2020-02-24 11:23:37 -08:00
alteon net/alteon: Properly report FW version 2020-02-24 11:23:37 -08:00
altera net/althera: Delete hardcoded driver version 2020-02-24 11:23:37 -08:00
amazon net: ena: fix broken interface between ENA driver and FW 2020-02-26 20:47:58 -08:00
amd xgbe: let core reject the unsupported coalescing parameters 2020-03-05 12:12:34 -08:00
apm net/apm: Properly mark absence of FW 2020-02-24 11:24:47 -08:00
apple
aquantia net: atlantic: Replace zero-length array with flexible-array member 2020-03-02 11:16:28 -08:00
arc net/arc: Delete driver version 2020-02-24 11:24:47 -08:00
atheros net: ag71xx: port to phylink 2020-02-29 21:34:20 -08:00
aurora net: convert additional drivers to use phy_do_ioctl 2020-01-22 21:16:32 +01:00
broadcom bnxt_en: Call devlink_port_type_clear() in remove() 2020-03-08 21:54:46 -07:00
brocade net/brocade: Delete driver version 2020-03-03 17:54:53 -08:00
cadence net: macb: use resolved link config in mac_link_up() 2020-02-27 12:02:14 -08:00
calxeda
cavium net/cavium: Delete N/A assignments for ethtool 2020-03-03 17:54:54 -08:00
chelsio cxgb4/chcr: Add ipv6 support and statistics 2020-03-08 21:16:23 -07:00
cirrus net/cirrus: Delete driver version 2020-03-03 17:54:54 -08:00
cisco enic: let core reject the unsupported coalescing parameters 2020-03-05 12:12:34 -08:00
cortina net/cortina: Delete driver version from ethtool output 2020-03-03 17:54:54 -08:00
davicom net/davicom: Delete ethtool version assignment 2020-03-03 17:54:54 -08:00
dec net: tulip: Replace zero-length array with flexible-array member 2020-03-05 14:55:48 -08:00
dlink net/dlink: Remove driver version and release date 2020-03-03 17:54:54 -08:00
emulex net/emulex: Delete driver version 2020-03-03 17:54:55 -08:00
ezchip
faraday net/faraday: Delete driver version from the drivers 2020-03-03 17:54:55 -08:00
freescale dpaa_eth: Use random MAC address when none is given 2020-03-08 22:02:54 -07:00
fujitsu
google
hisilicon net: hns3: delete unnecessary logs after kzalloc fails 2020-03-09 19:36:13 -07:00
huawei hinic: fix a bug of rss configuration 2020-02-27 11:08:01 -08:00
i825xx Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next 2020-01-28 16:02:33 -08:00
ibm ibmveth: Remove unused page_offset macro 2020-03-05 17:35:06 -08:00
intel ice: Fix removing driver while bare-metal VFs pass traffic 2020-03-10 13:10:02 -07:00
marvell flow_offload: check for basic action hw stats type 2020-03-08 21:07:48 -07:00
mediatek net: phylink: propagate resolved link config via mac_link_up() 2020-02-27 12:02:14 -08:00
mellanox net/mlx5e: Show/set Rx network flow classification rules on ul rep 2020-03-09 16:58:49 -07:00
micrel Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2020-02-27 18:31:39 -08:00
microchip
moxa
mscc flow_offload: check for basic action hw stats type 2020-03-08 21:07:48 -07:00
myricom
natsemi net/macsonic: Remove interrupt handler wrapper 2020-02-16 19:48:22 -08:00
neterion
netronome flow_offload: check for basic action hw stats type 2020-03-08 21:07:48 -07:00
ni
nvidia
nxp net: convert suitable drivers to use phy_do_ioctl_running 2020-01-23 10:49:30 +01:00
oki-semi
packetengines
pasemi
pensando ionic: drop ethtool driver version 2020-03-09 19:34:04 -07:00
qlogic flow_offload: check for basic action hw stats type 2020-03-08 21:07:48 -07:00
qualcomm net: rmnet: set NETIF_F_LLTX flag 2020-03-08 21:36:37 -07:00
rdc net: convert suitable network drivers to use phy_do_ioctl 2020-01-21 10:50:41 +01:00
realtek r8169: remove now unneeded barrier in rtl_tx 2020-03-09 19:07:42 -07:00
renesas sh_eth: use Gigabit register map for R7S72100 2020-02-16 19:44:41 -08:00
rocker
samsung net: convert additional drivers to use phy_do_ioctl 2020-01-22 21:16:32 +01:00
seeq
sfc Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2020-02-27 18:31:39 -08:00
sgi net: sgi: ioc3-eth: Remove phy workaround 2020-03-09 10:09:45 -07:00
silan
sis
smsc Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next 2020-01-28 16:02:33 -08:00
socionext net: page_pool: API cleanup and comments 2020-02-20 10:09:25 -08:00
stmicro flow_offload: check for basic action hw stats type 2020-03-08 21:07:48 -07:00
sun net: sun: use pci_status_get_and_clear_errors 2020-03-04 14:21:00 -08:00
synopsys
tehuti tehuti: Replace zero-length array with flexible-array member 2020-03-02 11:16:28 -08:00
ti Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next 2020-01-28 16:02:33 -08:00
toshiba toshiba: Replace zero-length array with flexible-array member 2020-02-24 15:26:17 -08:00
tundra
via
wiznet
xilinx net: ll_temac: Add ethtool support for coalesce parameters 2020-02-29 21:30:43 -08:00
xircom
xscale
dnet.c net/dnet: Delete static version from the driver 2020-03-03 17:54:55 -08:00
dnet.h net/dnet: Delete static version from the driver 2020-03-03 17:54:55 -08:00
ec_bhf.c
ethoc.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next 2020-01-28 16:02:33 -08:00
fealnx.c net/fealnx: Delete driver version 2020-03-03 17:54:55 -08:00
jme.c jme: use new helper tcp_v6_gso_csum_prep 2020-02-19 11:20:59 -08:00
jme.h
Kconfig
korina.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next 2020-01-28 16:02:33 -08:00
lantiq_etop.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next 2020-01-28 16:02:33 -08:00
lantiq_xrx200.c
Makefile