]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
RDMA/mlx5: Initialize phys_port_cnt earlier in RDMA device creation
authorChiara Meiohas <cmeiohas@nvidia.com>
Mon, 9 Sep 2024 17:30:21 +0000 (20:30 +0300)
committerLeon Romanovsky <leon@kernel.org>
Fri, 13 Sep 2024 05:27:40 +0000 (08:27 +0300)
phys_port_cnt of the IB device must be initialized before calling
ib_device_set_netdev().

Previously, phys_port_cnt was initialized in the mlx5_ib init function.
Remove this initialization to allow setting it separately, providing
the flexibility to call ib_device_set_netdev before registering the
IB device.

Signed-off-by: Chiara Meiohas <cmeiohas@nvidia.com>
Signed-off-by: Michael Guralnik <michaelgur@nvidia.com>
Link: https://patch.msgid.link/20240909173025.30422-4-michaelgur@nvidia.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/hw/mlx5/ib_rep.c
drivers/infiniband/hw/mlx5/main.c

index c7a4ee89612145f8c7168dad6d1b5399f79b3dd7..1ad934685d80af0c23deaef4cbf82db08d593711 100644 (file)
@@ -104,6 +104,7 @@ mlx5_ib_vport_rep_load(struct mlx5_core_dev *dev, struct mlx5_eswitch_rep *rep)
        ibdev->is_rep = true;
        vport_index = rep->vport_index;
        ibdev->port[vport_index].rep = rep;
+       ibdev->ib_dev.phys_port_cnt = num_ports;
        ibdev->port[vport_index].roce.netdev =
                mlx5_ib_get_rep_netdev(lag_master->priv.eswitch, rep->vport);
        ibdev->mdev = lag_master;
index e78d50c74bc8f203d0f13934b705f8a481be0d59..ad8a2b5517bf1c2b52635275f6365d2b3fbdf619 100644 (file)
@@ -3934,7 +3934,6 @@ static int mlx5_ib_stage_init_init(struct mlx5_ib_dev *dev)
 
        dev->ib_dev.node_type = RDMA_NODE_IB_CA;
        dev->ib_dev.local_dma_lkey = 0 /* not supported for now */;
-       dev->ib_dev.phys_port_cnt = dev->num_ports;
        dev->ib_dev.dev.parent = mdev->device;
        dev->ib_dev.lag_flags = RDMA_LAG_FLAGS_HASH_ALL_SLAVES;
 
@@ -4649,6 +4648,7 @@ static struct ib_device *mlx5_ib_add_sub_dev(struct ib_device *parent,
        mplane->mdev = mparent->mdev;
        mplane->num_ports = mparent->num_plane;
        mplane->sub_dev_name = name;
+       mplane->ib_dev.phys_port_cnt = mplane->num_ports;
 
        ret = __mlx5_ib_add(mplane, &plane_profile);
        if (ret)
@@ -4765,6 +4765,7 @@ static int mlx5r_probe(struct auxiliary_device *adev,
 
        dev->mdev = mdev;
        dev->num_ports = num_ports;
+       dev->ib_dev.phys_port_cnt = num_ports;
 
        if (ll == IB_LINK_LAYER_ETHERNET && !mlx5_get_roce_state(mdev))
                profile = &raw_eth_profile;