Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dbaaff2a authored by Eli Cohen's avatar Eli Cohen Committed by Doug Ledford
Browse files

IB/mlx5: Fix fatal error dispatching



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: e126ba97 ('mlx5: Add driver for Mellanox Connect-IB adapters')
Signed-off-by: default avatarEli Cohen <eli@mellanox.com>
Signed-off-by: default avatarMaor Gottlieb <maorg@mellanox.com>
Reviewed-by: default avatarMohamad Haj Yahia <mohamad@mellanox.com>
Signed-off-by: default avatarLeon Romanovsky <leon@kernel.org>
Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
parent 6bc1a656
Loading
Loading
Loading
Loading
+5 −2
Original line number Original line Diff line number Diff line
@@ -2311,14 +2311,14 @@ static void mlx5_ib_event(struct mlx5_core_dev *dev, void *context,
{
{
	struct mlx5_ib_dev *ibdev = (struct mlx5_ib_dev *)context;
	struct mlx5_ib_dev *ibdev = (struct mlx5_ib_dev *)context;
	struct ib_event ibev;
	struct ib_event ibev;

	bool fatal = false;
	u8 port = 0;
	u8 port = 0;


	switch (event) {
	switch (event) {
	case MLX5_DEV_EVENT_SYS_ERROR:
	case MLX5_DEV_EVENT_SYS_ERROR:
		ibdev->ib_active = false;
		ibev.event = IB_EVENT_DEVICE_FATAL;
		ibev.event = IB_EVENT_DEVICE_FATAL;
		mlx5_ib_handle_internal_error(ibdev);
		mlx5_ib_handle_internal_error(ibdev);
		fatal = true;
		break;
		break;


	case MLX5_DEV_EVENT_PORT_UP:
	case MLX5_DEV_EVENT_PORT_UP:
@@ -2370,6 +2370,9 @@ static void mlx5_ib_event(struct mlx5_core_dev *dev, void *context,


	if (ibdev->ib_active)
	if (ibdev->ib_active)
		ib_dispatch_event(&ibev);
		ib_dispatch_event(&ibev);

	if (fatal)
		ibdev->ib_active = false;
}
}


static void get_ext_port_caps(struct mlx5_ib_dev *dev)
static void get_ext_port_caps(struct mlx5_ib_dev *dev)