[PATCH net] ionic: Prevent driver/fw getting out of sync on devcmd(s)

Shannon Nelson posted 1 patch 4 months ago
drivers/net/ethernet/pensando/ionic/ionic_main.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
[PATCH net] ionic: Prevent driver/fw getting out of sync on devcmd(s)
Posted by Shannon Nelson 4 months ago
From: Brett Creeley <brett.creeley@amd.com>

Some stress/negative firmware testing around devcmd(s) returning
EAGAIN found that the done bit could get out of sync in the
firmware when it wasn't cleared in a retry case.

While here, change the type of the local done variable to a bool
to match the return type from ionic_dev_cmd_done().

Fixes: ec8ee714736e ("ionic: stretch heartbeat detection")
Signed-off-by: Brett Creeley <brett.creeley@amd.com>
Signed-off-by: Shannon Nelson <shannon.nelson@amd.com>
---
 drivers/net/ethernet/pensando/ionic/ionic_main.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/pensando/ionic/ionic_main.c b/drivers/net/ethernet/pensando/ionic/ionic_main.c
index daf1e82cb76b..0e60a6bef99a 100644
--- a/drivers/net/ethernet/pensando/ionic/ionic_main.c
+++ b/drivers/net/ethernet/pensando/ionic/ionic_main.c
@@ -516,9 +516,9 @@ static int __ionic_dev_cmd_wait(struct ionic *ionic, unsigned long max_seconds,
 	unsigned long start_time;
 	unsigned long max_wait;
 	unsigned long duration;
-	int done = 0;
 	bool fw_up;
 	int opcode;
+	bool done;
 	int err;
 
 	/* Wait for dev cmd to complete, retrying if we get EAGAIN,
@@ -526,6 +526,7 @@ static int __ionic_dev_cmd_wait(struct ionic *ionic, unsigned long max_seconds,
 	 */
 	max_wait = jiffies + (max_seconds * HZ);
 try_again:
+	done = false;
 	opcode = idev->opcode;
 	start_time = jiffies;
 	for (fw_up = ionic_is_fw_running(idev);
-- 
2.17.1
Re: [PATCH net] ionic: Prevent driver/fw getting out of sync on devcmd(s)
Posted by Simon Horman 4 months ago
On Mon, Jun 09, 2025 at 02:28:27PM -0700, Shannon Nelson wrote:
> From: Brett Creeley <brett.creeley@amd.com>
> 
> Some stress/negative firmware testing around devcmd(s) returning
> EAGAIN found that the done bit could get out of sync in the
> firmware when it wasn't cleared in a retry case.
> 
> While here, change the type of the local done variable to a bool
> to match the return type from ionic_dev_cmd_done().
> 
> Fixes: ec8ee714736e ("ionic: stretch heartbeat detection")
> Signed-off-by: Brett Creeley <brett.creeley@amd.com>
> Signed-off-by: Shannon Nelson <shannon.nelson@amd.com>

Reviewed-by: Simon Horman <horms@kernel.org>