Message ID | 20190801122139.25224-2-leon@kernel.org |
---|---|
State | Awaiting Upstream |
Delegated to: | David Miller |
Headers | show |
Series | ODP support for mlx5 DC QPs | expand |
On Thu, Aug 01, 2019 at 03:21:37PM +0300, Leon Romanovsky wrote: > diff --git a/include/linux/mlx5/mlx5_ifc.h b/include/linux/mlx5/mlx5_ifc.h > index ec571fd7fcf8..5eae8d734435 100644 > +++ b/include/linux/mlx5/mlx5_ifc.h > @@ -944,7 +944,9 @@ struct mlx5_ifc_odp_cap_bits { > > struct mlx5_ifc_odp_per_transport_service_cap_bits xrc_odp_caps; > > - u8 reserved_at_100[0x700]; > + struct mlx5_ifc_odp_per_transport_service_cap_bits dc_odp_caps; > + > + u8 reserved_at_100[0x6E0]; > }; Not splitting this to mlx5-next? Jason
On Thu, Aug 01, 2019 at 02:25:16PM +0000, Jason Gunthorpe wrote: > On Thu, Aug 01, 2019 at 03:21:37PM +0300, Leon Romanovsky wrote: > > > diff --git a/include/linux/mlx5/mlx5_ifc.h b/include/linux/mlx5/mlx5_ifc.h > > index ec571fd7fcf8..5eae8d734435 100644 > > +++ b/include/linux/mlx5/mlx5_ifc.h > > @@ -944,7 +944,9 @@ struct mlx5_ifc_odp_cap_bits { > > > > struct mlx5_ifc_odp_per_transport_service_cap_bits xrc_odp_caps; > > > > - u8 reserved_at_100[0x700]; > > + struct mlx5_ifc_odp_per_transport_service_cap_bits dc_odp_caps; > > + > > + u8 reserved_at_100[0x6E0]; > > }; > > Not splitting this to mlx5-next? This whole patch goes to mlx5-next, because it touches drivers/net/ethernet/mellanox/mlx5/core/main.c too and splitting to ifc specific patch won't change anything. Thanks > > Jason
diff --git a/drivers/infiniband/hw/mlx5/mlx5_ib.h b/drivers/infiniband/hw/mlx5/mlx5_ib.h index cb41a7e6255a..f99c71b3c876 100644 --- a/drivers/infiniband/hw/mlx5/mlx5_ib.h +++ b/drivers/infiniband/hw/mlx5/mlx5_ib.h @@ -967,6 +967,7 @@ struct mlx5_ib_dev { struct mutex slow_path_mutex; int fill_delay; struct ib_odp_caps odp_caps; + uint32_t dc_odp_caps; u64 odp_max_size; struct mlx5_ib_pf_eq odp_pf_eq; diff --git a/drivers/infiniband/hw/mlx5/odp.c b/drivers/infiniband/hw/mlx5/odp.c index b0c5de39d186..5e87a5e25574 100644 --- a/drivers/infiniband/hw/mlx5/odp.c +++ b/drivers/infiniband/hw/mlx5/odp.c @@ -353,6 +353,24 @@ void mlx5_ib_internal_fill_odp_caps(struct mlx5_ib_dev *dev) 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_ODP(dev->mdev, dc_odp_caps.send)) + dev->dc_odp_caps |= IB_ODP_SUPPORT_SEND; + + if (MLX5_CAP_ODP(dev->mdev, dc_odp_caps.receive)) + dev->dc_odp_caps |= IB_ODP_SUPPORT_RECV; + + if (MLX5_CAP_ODP(dev->mdev, dc_odp_caps.write)) + dev->dc_odp_caps |= IB_ODP_SUPPORT_WRITE; + + if (MLX5_CAP_ODP(dev->mdev, dc_odp_caps.read)) + dev->dc_odp_caps |= IB_ODP_SUPPORT_READ; + + if (MLX5_CAP_ODP(dev->mdev, dc_odp_caps.atomic)) + dev->dc_odp_caps |= IB_ODP_SUPPORT_ATOMIC; + + if (MLX5_CAP_ODP(dev->mdev, dc_odp_caps.srq_receive)) + dev->dc_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)) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/main.c b/drivers/net/ethernet/mellanox/mlx5/core/main.c index b15b27a497fc..3995fc6d4d34 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/main.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/main.c @@ -495,6 +495,12 @@ static int handle_hca_cap_odp(struct mlx5_core_dev *dev) ODP_CAP_SET_MAX(dev, xrc_odp_caps.write); ODP_CAP_SET_MAX(dev, xrc_odp_caps.read); ODP_CAP_SET_MAX(dev, xrc_odp_caps.atomic); + ODP_CAP_SET_MAX(dev, dc_odp_caps.srq_receive); + ODP_CAP_SET_MAX(dev, dc_odp_caps.send); + ODP_CAP_SET_MAX(dev, dc_odp_caps.receive); + ODP_CAP_SET_MAX(dev, dc_odp_caps.write); + ODP_CAP_SET_MAX(dev, dc_odp_caps.read); + ODP_CAP_SET_MAX(dev, dc_odp_caps.atomic); if (do_set) err = set_caps(dev, set_ctx, set_sz, diff --git a/include/linux/mlx5/mlx5_ifc.h b/include/linux/mlx5/mlx5_ifc.h index ec571fd7fcf8..5eae8d734435 100644 --- a/include/linux/mlx5/mlx5_ifc.h +++ b/include/linux/mlx5/mlx5_ifc.h @@ -944,7 +944,9 @@ struct mlx5_ifc_odp_cap_bits { struct mlx5_ifc_odp_per_transport_service_cap_bits xrc_odp_caps; - u8 reserved_at_100[0x700]; + struct mlx5_ifc_odp_per_transport_service_cap_bits dc_odp_caps; + + u8 reserved_at_100[0x6E0]; }; struct mlx5_ifc_calc_op {