iavf: in iavf_down, don't queue watchdog_task if comms failed
authorMichal Schmidt <mschmidt@redhat.com>
Fri, 27 Oct 2023 17:59:36 +0000 (10:59 -0700)
committerJakub Kicinski <kuba@kernel.org>
Fri, 27 Oct 2023 22:35:49 +0000 (15:35 -0700)
The reason for queueing watchdog_task is to have it process the
aq_required flags that are being set here. If comms failed, there's
nothing to do, so return early.

Signed-off-by: Michal Schmidt <mschmidt@redhat.com>
Reviewed-by: Wojciech Drewek <wojciech.drewek@intel.com>
Tested-by: Rafal Romanowski <rafal.romanowski@intel.com>
Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Link: https://lore.kernel.org/r/20231027175941.1340255-4-jacob.e.keller@intel.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/intel/iavf/iavf_main.c

index 502ebba2e879091b6b8190776e1a121db56f46ee..38432455fe9eecb74ccba9903cb7ecac23d02768 100644 (file)
@@ -1420,8 +1420,10 @@ void iavf_down(struct iavf_adapter *adapter)
        iavf_clear_fdir_filters(adapter);
        iavf_clear_adv_rss_conf(adapter);
 
-       if (!(adapter->flags & IAVF_FLAG_PF_COMMS_FAILED) &&
-           !(test_bit(__IAVF_IN_REMOVE_TASK, &adapter->crit_section))) {
+       if (adapter->flags & IAVF_FLAG_PF_COMMS_FAILED)
+               return;
+
+       if (!test_bit(__IAVF_IN_REMOVE_TASK, &adapter->crit_section)) {
                /* cancel any current operation */
                adapter->current_op = VIRTCHNL_OP_UNKNOWN;
                /* Schedule operations to close down the HW. Don't wait