linux/drivers/net/ethernet/sfc
Daniel Pieczko 6598dad26b sfc: leak vports if a VF is assigned during PF unload
If any VF is assigned as the PF is unloaded, do not attempt to
remove its vport or the vswitch.  These will be removed if the
driver binds to the PF again, as an entity reset occurs during
probe.

A 'force' flag is added to efx_ef10_pci_sriov_disable() to
distinguish between disabling SR-IOV and driver unload.
SR-IOV cannot be disabled if VFs are assigned to guests.

If the PF driver is unloaded while VFs are assigned, the driver
may try to bind to the VF again at a later point if the driver
has been reloaded and the VF returns to the same domain as the PF.
In this case, the PF will not have a VF data structure, so the VF
can check this and drop out of probe early.

In this case, efx->vf_count will be zero but VFs will be present.
The user is advised to remove the VF and re-create it. The check
at the beginning of efx_ef10_pci_sriov_disable() that
efx->vf_count is non-zero is removed to allow SR-IOV to be
disabled in this case. Also, if the PF driver is unloaded, it
will disable SR-IOV to remove these unknown VFs.

By not disabling bus-mastering if VFs are still assigned, the VF
will continue to pass traffic after the PF has been removed.

When using the max_vfs module parameter, if VFs are already
present do not try to initialise any more.

Signed-off-by: Shradha Shah <sshah@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2015-06-02 12:57:32 -07:00
..
Kconfig sfc: add sysfs entry to control MCDI tracing 2015-05-27 13:54:51 -04:00
Makefile sfc: Enable VF's via a write to the sysfs file sriov_numvfs 2015-05-09 16:16:46 -04:00
bitfield.h sfc: Update copyright banners 2013-08-29 23:34:51 +01:00
ef10.c sfc: leak vports if a VF is assigned during PF unload 2015-06-02 12:57:32 -07:00
ef10_regs.h sfc: Remove unused definitions of EF10 user-mode DMA descriptors 2014-02-12 17:53:34 -05:00
ef10_sriov.c sfc: leak vports if a VF is assigned during PF unload 2015-06-02 12:57:32 -07:00
ef10_sriov.h sfc: leak vports if a VF is assigned during PF unload 2015-06-02 12:57:32 -07:00
efx.c sfc: leak vports if a VF is assigned during PF unload 2015-06-02 12:57:32 -07:00
efx.h sfc: add ndo_set_vf_mac() function for EF10 2015-05-21 18:43:54 -04:00
enum.h sfc: Change entity reset on MC reboot to a new datapath-only reset. 2015-05-21 18:43:54 -04:00
ethtool.c sfc: protect filter table against use-after-free 2015-05-21 18:43:53 -04:00
falcon.c sfc: Bind the sfc driver to any available VF's 2015-05-09 16:16:48 -04:00
falcon_boards.c sfc: Update copyright banners 2013-08-29 23:34:51 +01:00
farch.c sfc: Own header for nic-specific sriov functions, single instance of netdev_ops and sriov removed from Falcon code 2015-05-09 16:16:46 -04:00
farch_regs.h sfc: Update copyright banners 2013-08-29 23:34:51 +01:00
filter.h sfc: Use ether_addr_copy and eth_broadcast_addr 2014-03-10 13:53:37 -04:00
io.h sfc: PIO:Restrict to 64bit arch and use 64-bit writes. 2014-06-11 15:36:21 -07:00
mcdi.c sfc: add module parameter to enable MCDI logging on new functions 2015-05-27 13:54:51 -04:00
mcdi.h sfc: add sysfs entry to control MCDI tracing 2015-05-27 13:54:51 -04:00
mcdi_mon.c sfc: Add new sensor names 2013-12-12 22:06:54 +00:00
mcdi_pcol.h sfc: suppress vadaptor stats when EVB is not present 2015-06-02 12:57:29 -07:00
mcdi_port.c sfc: suppress ENOENT error messages from MC_CMD_MAC_STATS 2015-06-02 12:57:29 -07:00
mdio_10g.c sfc: Update copyright banners 2013-08-29 23:34:51 +01:00
mdio_10g.h sfc: Remove extern from function prototypes 2013-09-24 12:52:53 -07:00
mtd.c sfc: Update copyright banners 2013-08-29 23:34:51 +01:00
net_driver.h sfc: Implement ndo_gets_phys_port_id() for EF10 VFs 2015-06-02 12:57:26 -07:00
nic.c sfc: fix calling of free_irq with already free vector 2014-05-12 14:56:45 -04:00
nic.h sfc: display vadaptor statistics for all interfaces 2015-06-02 12:57:28 -07:00
phy.h sfc: Remove extern from function prototypes 2013-09-24 12:52:53 -07:00
ptp.c sfc: Initialise MCDI buffers to 0 on declaration. 2015-05-21 18:43:53 -04:00
qt202x_phy.c sfc: Update copyright banners 2013-08-29 23:34:51 +01:00
rx.c sfc: free multiple Rx buffers when required 2015-05-31 17:36:20 -07:00
selftest.c sfc: Fix memcpy() with const destination compiler warning. 2015-04-17 15:15:40 -04:00
selftest.h sfc: Add MC BISTs to ethtool offline self test on EF10 2013-12-12 22:05:48 +00:00
siena.c sfc: set the MAC address using MC_CMD_VADAPTOR_SET_MAC 2015-05-21 18:43:55 -04:00
siena_sriov.c sfc: save old MAC address in case sriov_mac_address_changed fails 2015-05-21 18:43:53 -04:00
siena_sriov.h sfc: save old MAC address in case sriov_mac_address_changed fails 2015-05-21 18:43:53 -04:00
sriov.c sfc: Implement ndo_gets_phys_port_id() for EF10 VFs 2015-06-02 12:57:26 -07:00
sriov.h sfc: Implement ndo_gets_phys_port_id() for EF10 VFs 2015-06-02 12:57:26 -07:00
tenxpress.c sfc: Update copyright banners 2013-08-29 23:34:51 +01:00
tx.c sfc: remove incorrect EFX_BUG_ON_PARANOID check 2014-10-22 12:51:16 -04:00
txc43128_phy.c sfc: Update copyright banners 2013-08-29 23:34:51 +01:00
vfdi.h ethernet: codespell comment spelling fixes 2015-03-08 22:54:22 -04:00
workarounds.h sfc: Update copyright banners 2013-08-29 23:34:51 +01:00