]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
net/mlx5: fw reset, clear reset requested on drain_fw_reset
authorMoshe Shemesh <moshe@nvidia.com>
Tue, 9 Dec 2025 12:56:09 +0000 (14:56 +0200)
committerPaolo Abeni <pabeni@redhat.com>
Thu, 18 Dec 2025 12:39:29 +0000 (13:39 +0100)
drain_fw_reset() waits for ongoing firmware reset events and blocks new
event handling, but does not clear the reset requested flag, and may
keep sync reset polling.

To fix it, call mlx5_sync_reset_clear_reset_requested() to clear the
flag, stop sync reset polling, and resume health polling, ensuring
health issues are still detected after the firmware reset drain.

Fixes: 16d42d313350 ("net/mlx5: Drain fw_reset when removing device")
Signed-off-by: Moshe Shemesh <moshe@nvidia.com>
Reviewed-by: Shay Drori <shayd@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
Link: https://patch.msgid.link/1765284977-1363052-2-git-send-email-tariqt@nvidia.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/mellanox/mlx5/core/fw_reset.c

index 2bceb42c98cc2e53aa92414c97473ff5d7c5a545..b81de792c181a3e8e6c342a99655a5402f7f9a68 100644 (file)
@@ -844,7 +844,8 @@ void mlx5_drain_fw_reset(struct mlx5_core_dev *dev)
        cancel_work_sync(&fw_reset->reset_reload_work);
        cancel_work_sync(&fw_reset->reset_now_work);
        cancel_work_sync(&fw_reset->reset_abort_work);
-       cancel_delayed_work(&fw_reset->reset_timeout_work);
+       if (test_bit(MLX5_FW_RESET_FLAGS_RESET_REQUESTED, &fw_reset->reset_flags))
+               mlx5_sync_reset_clear_reset_requested(dev, true);
 }
 
 static const struct devlink_param mlx5_fw_reset_devlink_params[] = {