|
@@ -3263,7 +3263,7 @@ static void mlx5_ib_handle_event(struct work_struct *_work)
|
|
|
struct mlx5_ib_dev *ibdev;
|
|
|
struct ib_event ibev;
|
|
|
bool fatal = false;
|
|
|
- u8 port = 0;
|
|
|
+ u8 port = (u8)work->param;
|
|
|
|
|
|
if (mlx5_core_is_mp_slave(work->dev)) {
|
|
|
ibdev = mlx5_ib_get_ibdev_from_mpi(work->context);
|
|
@@ -3283,8 +3283,6 @@ static void mlx5_ib_handle_event(struct work_struct *_work)
|
|
|
case MLX5_DEV_EVENT_PORT_UP:
|
|
|
case MLX5_DEV_EVENT_PORT_DOWN:
|
|
|
case MLX5_DEV_EVENT_PORT_INITIALIZED:
|
|
|
- port = (u8)work->param;
|
|
|
-
|
|
|
/* In RoCE, port up/down events are handled in
|
|
|
* mlx5_netdev_event().
|
|
|
*/
|
|
@@ -3298,24 +3296,19 @@ static void mlx5_ib_handle_event(struct work_struct *_work)
|
|
|
|
|
|
case MLX5_DEV_EVENT_LID_CHANGE:
|
|
|
ibev.event = IB_EVENT_LID_CHANGE;
|
|
|
- port = (u8)work->param;
|
|
|
break;
|
|
|
|
|
|
case MLX5_DEV_EVENT_PKEY_CHANGE:
|
|
|
ibev.event = IB_EVENT_PKEY_CHANGE;
|
|
|
- port = (u8)work->param;
|
|
|
-
|
|
|
schedule_work(&ibdev->devr.ports[port - 1].pkey_change_work);
|
|
|
break;
|
|
|
|
|
|
case MLX5_DEV_EVENT_GUID_CHANGE:
|
|
|
ibev.event = IB_EVENT_GID_CHANGE;
|
|
|
- port = (u8)work->param;
|
|
|
break;
|
|
|
|
|
|
case MLX5_DEV_EVENT_CLIENT_REREG:
|
|
|
ibev.event = IB_EVENT_CLIENT_REREGISTER;
|
|
|
- port = (u8)work->param;
|
|
|
break;
|
|
|
case MLX5_DEV_EVENT_DELAY_DROP_TIMEOUT:
|
|
|
schedule_work(&ibdev->delay_drop.delay_drop_work);
|
|
@@ -3327,7 +3320,7 @@ static void mlx5_ib_handle_event(struct work_struct *_work)
|
|
|
ibev.device = &ibdev->ib_dev;
|
|
|
ibev.element.port_num = port;
|
|
|
|
|
|
- if (port < 1 || port > ibdev->num_ports) {
|
|
|
+ if (!rdma_is_port_valid(&ibdev->ib_dev, port)) {
|
|
|
mlx5_ib_warn(ibdev, "warning: event on port %d\n", port);
|
|
|
goto out;
|
|
|
}
|