summaryrefslogtreecommitdiff
path: root/drivers/net/ethernet/sfc/efx.c
diff options
context:
space:
mode:
authorDaniel Pieczko <dpieczko@solarflare.com>2015-06-02 11:40:46 +0100
committerDavid S. Miller <davem@davemloft.net>2015-06-02 12:57:31 -0700
commit2a3fc3112275e93df2e7e09b37b002ffddfd4ba1 (patch)
tree755bc26a4b1459bd9010f0cc6a4a370177244294 /drivers/net/ethernet/sfc/efx.c
parent71158bf2e748e2710616f59a823619af3c5505a7 (diff)
downloadlwn-2a3fc3112275e93df2e7e09b37b002ffddfd4ba1.tar.gz
lwn-2a3fc3112275e93df2e7e09b37b002ffddfd4ba1.zip
sfc: force removal of VF and vport on driver removal
When the driver unloads, force the unbind and removal of any VFs in the host with the PF. The PF cannot remove vports and vswitches if they are still being used by a VF driver, and when unloading the sfc driver the removal order is not guaranteed, so the instruction from the PF to the VF to unbind enforces a suitable ordering so that vswitches and vports can be removed. As a result of this, manually unbinding the driver from a single PF will result in all of its VFs in the host also being removed. Signed-off-by: Shradha Shah <sshah@solarflare.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/sfc/efx.c')
-rw-r--r--drivers/net/ethernet/sfc/efx.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/ethernet/sfc/efx.c b/drivers/net/ethernet/sfc/efx.c
index de16cec7ec61..62b213973433 100644
--- a/drivers/net/ethernet/sfc/efx.c
+++ b/drivers/net/ethernet/sfc/efx.c
@@ -2902,7 +2902,8 @@ static void efx_pci_remove_main(struct efx_nic *efx)
}
/* Final NIC shutdown
- * This is called only at module unload (or hotplug removal).
+ * This is called only at module unload (or hotplug removal). A PF can call
+ * this on its VFs to ensure they are unbound first.
*/
static void efx_pci_remove(struct pci_dev *pci_dev)
{