]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
RDMA/mlx5: Check RoCE LAG status before getting netdev
authorMark Bloch <mbloch@nvidia.com>
Mon, 9 Sep 2024 17:30:19 +0000 (20:30 +0300)
committerLeon Romanovsky <leon@kernel.org>
Fri, 13 Sep 2024 05:27:40 +0000 (08:27 +0300)
Check if RoCE LAG is active before calling the LAG layer for netdev.
This clarifies if LAG is active. No behavior changes with this patch.

Signed-off-by: Mark Bloch <mbloch@nvidia.com>
Signed-off-by: Michael Guralnik <michaelgur@nvidia.com>
Link: https://patch.msgid.link/20240909173025.30422-2-michaelgur@nvidia.com
Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/hw/mlx5/main.c

index af9ccae684babc927ebf6e16fcae73814eab7467..f09900435aa8356c055418fa924cd6909e854230 100644 (file)
@@ -198,12 +198,18 @@ static int mlx5_netdev_event(struct notifier_block *this,
        case NETDEV_CHANGE:
        case NETDEV_UP:
        case NETDEV_DOWN: {
-               struct net_device *lag_ndev = mlx5_lag_get_roce_netdev(mdev);
                struct net_device *upper = NULL;
 
-               if (lag_ndev) {
-                       upper = netdev_master_upper_dev_get(lag_ndev);
-                       dev_put(lag_ndev);
+               if (mlx5_lag_is_roce(mdev)) {
+                       struct net_device *lag_ndev;
+
+                       lag_ndev = mlx5_lag_get_roce_netdev(mdev);
+                       if (lag_ndev) {
+                               upper = netdev_master_upper_dev_get(lag_ndev);
+                               dev_put(lag_ndev);
+                       } else {
+                               goto done;
+                       }
                }
 
                if (ibdev->is_rep)
@@ -257,9 +263,10 @@ static struct net_device *mlx5_ib_get_netdev(struct ib_device *device,
        if (!mdev)
                return NULL;
 
-       ndev = mlx5_lag_get_roce_netdev(mdev);
-       if (ndev)
+       if (mlx5_lag_is_roce(mdev)) {
+               ndev = mlx5_lag_get_roce_netdev(mdev);
                goto out;
+       }
 
        /* Ensure ndev does not disappear before we invoke dev_hold()
         */