Message ID | 1549302646-18446-11-git-send-email-maxg@mellanox.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Introduce new API for T10-PI offload | expand |
On Mon, 2019-02-04 at 19:50 +0200, Max Gurtovoy wrote: > PI offload (protection information) is a feature that each RDMA provider > can implement differently. Thus, introduce new device attribute to define > the maximal length of the page list for PI fast registration operation. For > example, mlx5 driver uses a single internal MR to map both data and > protection SGL's, so it's equal to max_fast_reg_page_list_len / 2. > > Signed-off-by: Max Gurtovoy <maxg@mellanox.com> > Reviewed-by: Leon Romanovsky <leonro@mellanox.com> > --- > drivers/infiniband/hw/mlx5/main.c | 2 ++ > include/rdma/ib_verbs.h | 1 + > 2 files changed, 3 insertions(+) > > diff --git a/drivers/infiniband/hw/mlx5/main.c b/drivers/infiniband/hw/mlx5/main.c > index c4b2d9db5d07..3460c764e341 100644 > --- a/drivers/infiniband/hw/mlx5/main.c > +++ b/drivers/infiniband/hw/mlx5/main.c > @@ -912,6 +912,8 @@ static int mlx5_ib_query_device(struct ib_device *ibdev, > props->max_srq_sge = max_rq_sg - 1; > props->max_fast_reg_page_list_len = > 1 << MLX5_CAP_GEN(mdev, log_max_klm_list_size); > + props->max_pi_fast_reg_page_list_len = > + props->max_fast_reg_page_list_len / 2; > get_atomic_caps_qp(dev, props); > props->masked_atomic_cap = IB_ATOMIC_NONE; > props->max_mcast_grp = 1 << MLX5_CAP_GEN(mdev, log_max_mcg); > diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h > index 75b470e1120e..48bb29a805cf 100644 > --- a/include/rdma/ib_verbs.h > +++ b/include/rdma/ib_verbs.h > @@ -364,6 +364,7 @@ struct ib_device_attr { > int max_srq_wr; > int max_srq_sge; > unsigned int max_fast_reg_page_list_len; > + unsigned int max_pi_fast_reg_page_list_len; > u16 max_pkeys; > u8 local_ca_ack_delay; > int sig_prot_cap; I think it would be helpful to add a comment above struct ib_device_attr that explains the meaning of max_pi_fast_reg_page_list_len. Thanks, Bart.
diff --git a/drivers/infiniband/hw/mlx5/main.c b/drivers/infiniband/hw/mlx5/main.c index c4b2d9db5d07..3460c764e341 100644 --- a/drivers/infiniband/hw/mlx5/main.c +++ b/drivers/infiniband/hw/mlx5/main.c @@ -912,6 +912,8 @@ static int mlx5_ib_query_device(struct ib_device *ibdev, props->max_srq_sge = max_rq_sg - 1; props->max_fast_reg_page_list_len = 1 << MLX5_CAP_GEN(mdev, log_max_klm_list_size); + props->max_pi_fast_reg_page_list_len = + props->max_fast_reg_page_list_len / 2; get_atomic_caps_qp(dev, props); props->masked_atomic_cap = IB_ATOMIC_NONE; props->max_mcast_grp = 1 << MLX5_CAP_GEN(mdev, log_max_mcg); diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h index 75b470e1120e..48bb29a805cf 100644 --- a/include/rdma/ib_verbs.h +++ b/include/rdma/ib_verbs.h @@ -364,6 +364,7 @@ struct ib_device_attr { int max_srq_wr; int max_srq_sge; unsigned int max_fast_reg_page_list_len; + unsigned int max_pi_fast_reg_page_list_len; u16 max_pkeys; u8 local_ca_ack_delay; int sig_prot_cap;