aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYonatan Cohen <yonatanc@mellanox.com>2017-11-13 03:51:15 -0500
committerDoug Ledford <dledford@redhat.com>2017-11-13 16:59:22 -0500
commitb0e9df6da25890448ebd134b7f647f16bced9abc (patch)
tree7fec5add3fa70a809b7bac84fb511ddfbfa796bf
parent34d9a270e74a412f041b528c33b75e3e6bc7a242 (diff)
IB/mlx5: Exposing modify CQ callback to uverbs layer
Exposed mlx5_ib_modify_cq to be called from ib device verb list. Signed-off-by: Yonatan Cohen <yonatanc@mellanox.com> Reviewed-by: Majd Dibbiny <majd@mellanox.com> Signed-off-by: Leon Romanovsky <leon@kernel.org> Signed-off-by: Doug Ledford <dledford@redhat.com>
-rw-r--r--drivers/infiniband/hw/mlx5/cq.c3
-rw-r--r--drivers/infiniband/hw/mlx5/main.c3
-rw-r--r--include/linux/mlx5/cq.h3
3 files changed, 8 insertions, 1 deletions
diff --git a/drivers/infiniband/hw/mlx5/cq.c b/drivers/infiniband/hw/mlx5/cq.c
index 01b218a3c277..18705cbcdc8c 100644
--- a/drivers/infiniband/hw/mlx5/cq.c
+++ b/drivers/infiniband/hw/mlx5/cq.c
@@ -1149,6 +1149,9 @@ int mlx5_ib_modify_cq(struct ib_cq *cq, u16 cq_count, u16 cq_period)
1149 if (!MLX5_CAP_GEN(dev->mdev, cq_moderation)) 1149 if (!MLX5_CAP_GEN(dev->mdev, cq_moderation))
1150 return -ENOSYS; 1150 return -ENOSYS;
1151 1151
1152 if (cq_period > MLX5_MAX_CQ_PERIOD)
1153 return -EINVAL;
1154
1152 err = mlx5_core_modify_cq_moderation(dev->mdev, &mcq->mcq, 1155 err = mlx5_core_modify_cq_moderation(dev->mdev, &mcq->mcq,
1153 cq_period, cq_count); 1156 cq_period, cq_count);
1154 if (err) 1157 if (err)
diff --git a/drivers/infiniband/hw/mlx5/main.c b/drivers/infiniband/hw/mlx5/main.c
index d2aadb13637b..5a0ed6a499f4 100644
--- a/drivers/infiniband/hw/mlx5/main.c
+++ b/drivers/infiniband/hw/mlx5/main.c
@@ -4022,7 +4022,8 @@ static void *mlx5_ib_add(struct mlx5_core_dev *mdev)
4022 (1ull << IB_USER_VERBS_EX_CMD_QUERY_DEVICE) | 4022 (1ull << IB_USER_VERBS_EX_CMD_QUERY_DEVICE) |
4023 (1ull << IB_USER_VERBS_EX_CMD_CREATE_CQ) | 4023 (1ull << IB_USER_VERBS_EX_CMD_CREATE_CQ) |
4024 (1ull << IB_USER_VERBS_EX_CMD_CREATE_QP) | 4024 (1ull << IB_USER_VERBS_EX_CMD_CREATE_QP) |
4025 (1ull << IB_USER_VERBS_EX_CMD_MODIFY_QP); 4025 (1ull << IB_USER_VERBS_EX_CMD_MODIFY_QP) |
4026 (1ull << IB_USER_VERBS_EX_CMD_MODIFY_CQ);
4026 4027
4027 dev->ib_dev.query_device = mlx5_ib_query_device; 4028 dev->ib_dev.query_device = mlx5_ib_query_device;
4028 dev->ib_dev.query_port = mlx5_ib_query_port; 4029 dev->ib_dev.query_port = mlx5_ib_query_port;
diff --git a/include/linux/mlx5/cq.h b/include/linux/mlx5/cq.h
index cc718e245b1e..6be357b219ec 100644
--- a/include/linux/mlx5/cq.h
+++ b/include/linux/mlx5/cq.h
@@ -128,6 +128,9 @@ enum {
128 CQE_SIZE_128_PAD = 2, 128 CQE_SIZE_128_PAD = 2,
129}; 129};
130 130
131#define MLX5_MAX_CQ_PERIOD (BIT(__mlx5_bit_sz(cqc, cq_period)) - 1)
132#define MLX5_MAX_CQ_COUNT (BIT(__mlx5_bit_sz(cqc, cq_max_count)) - 1)
133
131static inline int cqe_sz_to_mlx_sz(u8 size, int padding_128_en) 134static inline int cqe_sz_to_mlx_sz(u8 size, int padding_128_en)
132{ 135{
133 return padding_128_en ? CQE_SIZE_128_PAD : 136 return padding_128_en ? CQE_SIZE_128_PAD :