]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
RDMA/mlx5: Raise async event on device speed change
authorOr Har-Toov <ohartoov@nvidia.com>
Thu, 18 Dec 2025 15:58:53 +0000 (17:58 +0200)
committerLeon Romanovsky <leon@kernel.org>
Mon, 5 Jan 2026 07:43:12 +0000 (02:43 -0500)
Raise IB_EVENT_DEVICE_SPEED_CHANGE whenever the speed of one of the
device's ports changes. Usually all ports of the device changes
together.

This ensures user applications and upper-layer software are immediately
notified when bandwidth changes, improving traffic management in dynamic
environments. This is especially useful for vports which are part of a
LAG configuration, to know if the effective speed of the LAG was
changed.

Signed-off-by: Or Har-Toov <ohartoov@nvidia.com>
Reviewed-by: Mark Bloch <mbloch@nvidia.com>
Signed-off-by: Edward Srouji <edwards@nvidia.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/hw/mlx5/main.c

index 40284bbb45d6dcc8ea7aefa429a8ebfefcad1ac7..bea42acbeaad196b7fc0aee00855351ea87ac806 100644 (file)
@@ -2838,6 +2838,14 @@ static int handle_port_change(struct mlx5_ib_dev *ibdev, struct mlx5_eqe *eqe,
        case MLX5_PORT_CHANGE_SUBTYPE_ACTIVE:
        case MLX5_PORT_CHANGE_SUBTYPE_DOWN:
        case MLX5_PORT_CHANGE_SUBTYPE_INITIALIZED:
+               if (ibdev->ib_active) {
+                       struct ib_event speed_event = {};
+
+                       speed_event.device = &ibdev->ib_dev;
+                       speed_event.event = IB_EVENT_DEVICE_SPEED_CHANGE;
+                       ib_dispatch_event(&speed_event);
+               }
+
                /* In RoCE, port up/down events are handled in
                 * mlx5_netdev_event().
                 */