|
@@ -11395,6 +11395,11 @@ static void i40e_remove(struct pci_dev *pdev)
|
|
|
if (pf->service_task.func)
|
|
|
cancel_work_sync(&pf->service_task);
|
|
|
|
|
|
+ /* Client close must be called explicitly here because the timer
|
|
|
+ * has been stopped.
|
|
|
+ */
|
|
|
+ i40e_notify_client_of_netdev_close(pf->vsi[pf->lan_vsi], false);
|
|
|
+
|
|
|
if (pf->flags & I40E_FLAG_SRIOV_ENABLED) {
|
|
|
i40e_free_vfs(pf);
|
|
|
pf->flags &= ~I40E_FLAG_SRIOV_ENABLED;
|
|
@@ -11635,6 +11640,11 @@ static void i40e_shutdown(struct pci_dev *pdev)
|
|
|
cancel_work_sync(&pf->service_task);
|
|
|
i40e_fdir_teardown(pf);
|
|
|
|
|
|
+ /* Client close must be called explicitly here because the timer
|
|
|
+ * has been stopped.
|
|
|
+ */
|
|
|
+ i40e_notify_client_of_netdev_close(pf->vsi[pf->lan_vsi], false);
|
|
|
+
|
|
|
if (pf->wol_en && (pf->flags & I40E_FLAG_WOL_MC_MAGIC_PKT_WAKE))
|
|
|
i40e_enable_mc_magic_wake(pf);
|
|
|
|