diff options
author | Moshe Shemesh <moshe@nvidia.com> | 2024-06-04 00:04:42 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2024-06-05 14:07:16 +0100 |
commit | 33afbfcc105a572159750f2ebee834a8a70fdd96 (patch) | |
tree | be3836e077aeaeba0d806d9f9e49fc3d50bf7269 /drivers/net/ethernet/mellanox/mlx5/core/fw.c | |
parent | c57e558194430d10d5e5f4acd8a8655b68dade13 (diff) | |
download | linux-33afbfcc105a572159750f2ebee834a8a70fdd96.tar.gz linux-33afbfcc105a572159750f2ebee834a8a70fdd96.tar.bz2 linux-33afbfcc105a572159750f2ebee834a8a70fdd96.zip |
net/mlx5: Stop waiting for PCI if pci channel is offline
In case pci channel becomes offline the driver should not wait for PCI
reads during health dump and recovery flow. The driver has timeout for
each of these loops trying to read PCI, so it would fail anyway.
However, in case of recovery waiting till timeout may cause the pci
error_detected() callback fail to meet pci_dpc_recovered() wait timeout.
Fixes: b3bd076f7501 ("net/mlx5: Report devlink health on FW fatal issues")
Signed-off-by: Moshe Shemesh <moshe@nvidia.com>
Reviewed-by: Shay Drori <shayd@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/mellanox/mlx5/core/fw.c')
-rw-r--r-- | drivers/net/ethernet/mellanox/mlx5/core/fw.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/fw.c b/drivers/net/ethernet/mellanox/mlx5/core/fw.c index 2d95a9b7b44e..b61b7d966114 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/fw.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/fw.c @@ -373,6 +373,10 @@ int mlx5_cmd_fast_teardown_hca(struct mlx5_core_dev *dev) do { if (mlx5_get_nic_state(dev) == MLX5_INITIAL_SEG_NIC_INTERFACE_DISABLED) break; + if (pci_channel_offline(dev->pdev)) { + mlx5_core_err(dev, "PCI channel offline, stop waiting for NIC IFC\n"); + return -EACCES; + } cond_resched(); } while (!time_after(jiffies, end)); |