IB/mlx5: Fix configuration of port capabilities
Subsystems (2)
PATCH 1/1 IB/mlx5: Fix configuration of port capabilities
From: Eli Cohen <eli-VPRAkNaXOzVWk0Htik3J/[email protected]>
When the "ib_virt" cap it set, configuration of port capabilities need to be done through mlx5_core_modify_hca_vport_context.
Since modify_hca_vport_context accepts mask and value, there is no need to read the port capabilities and calculate the new cap values so we avoid the mutex when ib_virt is set.
--- drivers/infiniband/hw/mlx5/main.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+)
drivers/infiniband/hw/mlx5/main.c +35 -0
@@ -985,6 +985,31 @@ static int mlx5_ib_modify_device(struct ib_device *ibdev, int mask,return err; } +static int set_port_caps_atomic (struct mlx5_ib_dev *dev,u8 port_num,u32 mask, +u32 value) +{ +struct mlx5_hca_vport_context ctx = {}; +int err; + + err =mlx5_query_hca_vport_context (dev->mdev,0 , + port_num,0 , &ctx); +if (err) +return err; + +if (~ctx.cap_mask1_perm & mask) { +mlx5_ib_warn (dev,"trying to change bitmask 0x%X but change supported 0x%X\n" , + mask, ctx.cap_mask1_perm); +return -EINVAL ; + } + + ctx.cap_mask1 = value; + ctx.cap_mask1_perm = mask; + err =mlx5_core_modify_hca_vport_context (dev->mdev,0 , + port_num,0 , &ctx); + +return err; +} +static int mlx5_ib_modify_port (struct ib_device *ibdev,u8 port,int mask,struct ib_port_modify *props) {
@@ -992,6 +1017,16 @@ static int mlx5_ib_modify_port(struct ib_device *ibdev, u8 port, int mask,struct ib_port_attr attr;u32 tmp;int err; +u32 change_mask; +u32 value; +bool is_ib = (mlx5_ib_port_link_layer (ibdev, port) == +IB_LINK_LAYER_INFINIBAND ); + +if (MLX5_CAP_GEN (dev->mdev, ib_virt) && is_ib) { + change_mask = props->clr_port_cap_mask | props->set_port_cap_mask; + value = ~props->clr_port_cap_mask | props->set_port_cap_mask; +return set_port_caps_atomic (dev, port, change_mask, value); + }mutex_lock (&dev->cap_mask_mutex);
--
2.11.1
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): 20170214052538.16562-1-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org
Doug Ledford
AppliedQuoted 10 lines · Leon Romanovsky
From: Eli Cohen <eli-VPRAkNaXOzVWk0Htik3J/[email protected]>
When the "
ib_virt" cap it set, configuration of port capabilities need
to be done throughmlx5_core_modify_hca_vport_context. Sincemodify_hca_vport_contextaccepts mask and value, there is no need
to read the port capabilities and calculate the new cap values so we avoid the mutex whenib_virtis set.
Quoted 5 lines
Fixes e126ba97dba9edeb ('mlx5: Add driver for Mellanox Connect-IBadapters')
Signed-off-by Eli Cohen <eli-VPRAkNaXOzVWk0Htik3J/[email protected]>Signed-off-by Leon Romanovsky <[email protected]>
Thanks, applied.
Signature · 4 lines
Doug Ledford <[email protected]> GPG KeyID: B826A3330E572FDD Key fingerprint = AE6B 1BDA 122B 23B4 265B 1274 B826 A333 0E57 2FDD