OSDN Git Service

IB/mlx5: Advertise XRC ODP support
authorMoni Shoua <monis@mellanox.com>
Tue, 22 Jan 2019 06:48:50 +0000 (08:48 +0200)
committerJason Gunthorpe <jgg@mellanox.com>
Mon, 4 Feb 2019 21:34:07 +0000 (14:34 -0700)
Query all per transport caps for XRC and set the appropriate bits in the
per transport field of the advertised struct.

Signed-off-by: Moni Shoua <monis@mellanox.com>
Reviewed-by: Majd Dibbiny <majd@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/hw/mlx5/odp.c

index 7000f86..8d32d3f 100644 (file)
@@ -336,6 +336,24 @@ void mlx5_ib_internal_fill_odp_caps(struct mlx5_ib_dev *dev)
        if (MLX5_CAP_ODP(dev->mdev, rc_odp_caps.srq_receive))
                caps->per_transport_caps.rc_odp_caps |= IB_ODP_SUPPORT_SRQ_RECV;
 
+       if (MLX5_CAP_ODP(dev->mdev, xrc_odp_caps.send))
+               caps->per_transport_caps.xrc_odp_caps |= IB_ODP_SUPPORT_SEND;
+
+       if (MLX5_CAP_ODP(dev->mdev, xrc_odp_caps.receive))
+               caps->per_transport_caps.xrc_odp_caps |= IB_ODP_SUPPORT_RECV;
+
+       if (MLX5_CAP_ODP(dev->mdev, xrc_odp_caps.write))
+               caps->per_transport_caps.xrc_odp_caps |= IB_ODP_SUPPORT_WRITE;
+
+       if (MLX5_CAP_ODP(dev->mdev, xrc_odp_caps.read))
+               caps->per_transport_caps.xrc_odp_caps |= IB_ODP_SUPPORT_READ;
+
+       if (MLX5_CAP_ODP(dev->mdev, xrc_odp_caps.atomic))
+               caps->per_transport_caps.xrc_odp_caps |= IB_ODP_SUPPORT_ATOMIC;
+
+       if (MLX5_CAP_ODP(dev->mdev, xrc_odp_caps.srq_receive))
+               caps->per_transport_caps.xrc_odp_caps |= IB_ODP_SUPPORT_SRQ_RECV;
+
        if (MLX5_CAP_GEN(dev->mdev, fixed_buffer_size) &&
            MLX5_CAP_GEN(dev->mdev, null_mkey) &&
            MLX5_CAP_GEN(dev->mdev, umr_extended_translation_offset))