summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPrzemek Kitszel <przemyslaw.kitszel@intel.com>2025-04-04 12:23:18 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2025-06-19 15:40:41 +0200
commit352a46081e4147222aa472f75c2f7c04406a816e (patch)
tree7adb095587333df6a2232c74db41b62a0387adc8
parentdae1e290290b01b1476b2f5ba17759a88e2929e5 (diff)
iavf: simplify watchdog_task in terms of adminq task scheduling
[ Upstream commit ecb4cd0461accc446d20a7a167f39ed2fd5e9b0e ] Simplify the decision whether to schedule adminq task. The condition is the same, but it is executed in more scenarios. Note that movement of watchdog_done label makes this commit a bit surprising. (Hence not squashing it to anything bigger). Reviewed-by: Jacob Keller <jacob.e.keller@intel.com> Signed-off-by: Przemek Kitszel <przemyslaw.kitszel@intel.com> Tested-by: Rafal Romanowski <rafal.romanowski@intel.com> Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com> Stable-dep-of: 120f28a6f314 ("iavf: get rid of the crit lock") Signed-off-by: Sasha Levin <sashal@kernel.org>
-rw-r--r--drivers/net/ethernet/intel/iavf/iavf_main.c17
1 files changed, 6 insertions, 11 deletions
diff --git a/drivers/net/ethernet/intel/iavf/iavf_main.c b/drivers/net/ethernet/intel/iavf/iavf_main.c
index 2c6e033c7341..5efe44724d11 100644
--- a/drivers/net/ethernet/intel/iavf/iavf_main.c
+++ b/drivers/net/ethernet/intel/iavf/iavf_main.c
@@ -2934,6 +2934,7 @@ static void iavf_watchdog_task(struct work_struct *work)
return;
}
+ msec_delay = 20;
goto restart_watchdog;
}
@@ -3053,10 +3054,13 @@ static void iavf_watchdog_task(struct work_struct *work)
adapter->current_op = VIRTCHNL_OP_UNKNOWN;
dev_err(&adapter->pdev->dev, "Hardware reset detected\n");
iavf_schedule_reset(adapter, IAVF_FLAG_RESET_PENDING);
- msec_delay = 2000;
- goto watchdog_done;
}
+ if (adapter->aq_required)
+ msec_delay = 20;
+ else
+ msec_delay = 2000;
+watchdog_done:
mutex_unlock(&adapter->crit_lock);
restart_watchdog:
netdev_unlock(netdev);
@@ -3064,15 +3068,6 @@ restart_watchdog:
/* note that we schedule a different task */
if (adapter->state >= __IAVF_DOWN)
queue_work(adapter->wq, &adapter->adminq_task);
- if (adapter->aq_required)
- msec_delay = 20;
- else
- msec_delay = 2000;
- goto skip_unlock;
-watchdog_done:
- mutex_unlock(&adapter->crit_lock);
- netdev_unlock(netdev);
-skip_unlock:
if (msec_delay != IAVF_NO_RESCHED)
queue_delayed_work(adapter->wq, &adapter->watchdog_task,