Commit 53798666 authored by Michal Schmidt's avatar Michal Schmidt Committed by Jakub Kicinski
Browse files

iavf: in iavf_down, disable queues when removing the driver



In iavf_down, we're skipping the scheduling of certain operations if
the driver is being removed. However, the IAVF_FLAG_AQ_DISABLE_QUEUES
request must not be skipped in this case, because iavf_close waits
for the transition to the __IAVF_DOWN state, which happens in
iavf_virtchnl_completion after the queues are released.

Without this fix, "rmmod iavf" takes half a second per interface that's
up and prints the "Device resources not yet released" warning.

Fixes: c8de44b5 ("iavf: do not process adminq tasks when __IAVF_IN_REMOVE_TASK is set")
Signed-off-by: default avatarMichal Schmidt <mschmidt@redhat.com>
Reviewed-by: default avatarWojciech Drewek <wojciech.drewek@intel.com>
Tested-by: default avatarRafal Romanowski <rafal.romanowski@intel.com>
Tested-by: default avatarJacob Keller <jacob.e.keller@intel.com>
Signed-off-by: default avatarJacob Keller <jacob.e.keller@intel.com>
Link: https://lore.kernel.org/r/20231025183213.874283-1-jacob.e.keller@intel.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 5e5d8b94
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1437,9 +1437,9 @@ void iavf_down(struct iavf_adapter *adapter)
			adapter->aq_required |= IAVF_FLAG_AQ_DEL_FDIR_FILTER;
		if (!list_empty(&adapter->adv_rss_list_head))
			adapter->aq_required |= IAVF_FLAG_AQ_DEL_ADV_RSS_CFG;
		adapter->aq_required |= IAVF_FLAG_AQ_DISABLE_QUEUES;
	}

	adapter->aq_required |= IAVF_FLAG_AQ_DISABLE_QUEUES;
	mod_delayed_work(adapter->wq, &adapter->watchdog_task, 0);
}