From: Eli Cohen <e...@mellanox.com> 3.12-stable review patch. If anyone has any objections, please let me know.
=============== commit dbaaff2a2caa03d472b5cc53a3fbfd415c97dc26 upstream. When an internal error condition is detected, make sure to set the device inactive after dispatching the event so ULPs can get a notification of this event. Fixes: e126ba97dba9 ('mlx5: Add driver for Mellanox Connect-IB adapters') Signed-off-by: Eli Cohen <e...@mellanox.com> Signed-off-by: Maor Gottlieb <ma...@mellanox.com> Reviewed-by: Mohamad Haj Yahia <moha...@mellanox.com> Signed-off-by: Leon Romanovsky <l...@kernel.org> Signed-off-by: Doug Ledford <dledf...@redhat.com> Signed-off-by: Jiri Slaby <jsl...@suse.cz> --- drivers/infiniband/hw/mlx5/main.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/infiniband/hw/mlx5/main.c b/drivers/infiniband/hw/mlx5/main.c index b1a6cb3a2809..1300a377aca8 100644 --- a/drivers/infiniband/hw/mlx5/main.c +++ b/drivers/infiniband/hw/mlx5/main.c @@ -959,12 +959,13 @@ static void mlx5_ib_event(struct mlx5_core_dev *dev, enum mlx5_dev_event event, { struct mlx5_ib_dev *ibdev = container_of(dev, struct mlx5_ib_dev, mdev); struct ib_event ibev; + bool fatal = false; u8 port = 0; switch (event) { case MLX5_DEV_EVENT_SYS_ERROR: - ibdev->ib_active = false; ibev.event = IB_EVENT_DEVICE_FATAL; + fatal = true; break; case MLX5_DEV_EVENT_PORT_UP: @@ -1012,6 +1013,9 @@ static void mlx5_ib_event(struct mlx5_core_dev *dev, enum mlx5_dev_event event, if (ibdev->ib_active) ib_dispatch_event(&ibev); + + if (fatal) + ibdev->ib_active = false; } static void get_ext_port_caps(struct mlx5_ib_dev *dev) -- 2.10.2