History

IB/mlx5: Allow scatter to CQE without global signaled WRs

Requester scatter to CQE is restricted to QPs configured to signal all WRs. This patch adds ability to enable scatter to cqe (force enable) in the requester without sig_all, for users who do not want all WRs signaled but rather just the ones whose data found in the CQE.

Yonatan Cohen committed 8 years ago

Commit 6f4bc0e1 parent 2e43bb32 files · +12 −3Browse files

Unified · Split

2 files
  1. drivers/infiniband/hw/mlx5/qp.c +11 −3
  2. include/uapi/rdma/mlx5-abi.h +1 −0
drivers/infiniband/hw/mlx5/qp.c+11−3
@@ -1706,15 +1706,20 @@ static void configure_responder_scat_cqe(struct ib_qp_init_attr *init_attr, · 1705 unmodified lines
17061706
17071707 static void configure_requester_scat_cqe(struct mlx5_ib_dev *dev,
17081708 struct ib_qp_init_attr *init_attr,
1709+ struct mlx5_ib_create_qp *ucmd,
17091710 void *qpc)
17101711 {
17111712 enum ib_qp_type qpt = init_attr->qp_type;
17121713 int scqe_sz;
1714+ bool allow_scat_cqe = 0;
17131715
17141716 if (qpt == IB_QPT_UC || qpt == IB_QPT_UD)
17151717 return;
17161718
1717− if (init_attr->sq_sig_type != IB_SIGNAL_ALL_WR)
1719+ if (ucmd)
1720+ allow_scat_cqe = ucmd->flags & MLX5_QP_FLAG_ALLOW_SCATTER_CQE;
1721+
1722+ if (!allow_scat_cqe && init_attr->sq_sig_type != IB_SIGNAL_ALL_WR)
17181723 return;
17191724
17201725 scqe_sz = mlx5_ib_get_cqe_size(init_attr->send_cq);
@@ -1836,7 +1841,8 @@ static int create_qp_common(struct mlx5_ib_dev *dev, struct ib_pd *pd, · 115 unmodified lines
18361841 MLX5_QP_FLAG_TUNNEL_OFFLOADS |
18371842 MLX5_QP_FLAG_BFREG_INDEX |
18381843 MLX5_QP_FLAG_TYPE_DCT |
1839− MLX5_QP_FLAG_TYPE_DCI))
1844+ MLX5_QP_FLAG_TYPE_DCI |
1845+ MLX5_QP_FLAG_ALLOW_SCATTER_CQE))
18401846 return -EINVAL;
18411847
18421848 err = get_qp_user_index(to_mucontext(pd->uobject->context),
@@ -1971,7 +1977,9 @@ static int create_qp_common(struct mlx5_ib_dev *dev, struct ib_pd *pd, · 128 unmodified lines
19711977
19721978 if (qp->scat_cqe && is_connected(init_attr->qp_type)) {
19731979 configure_responder_scat_cqe(init_attr, qpc);
1974− configure_requester_scat_cqe(dev, init_attr, qpc);
1980+ configure_requester_scat_cqe(dev, init_attr,
1981+ (pd && pd->uobject) ? &ucmd : NULL,
1982+ qpc);
19751983 }
19761984
19771985 if (qp->rq.wqe_cnt) {
include/uapi/rdma/mlx5-abi.h+1−0
@@ -47,6 +47,7 @@ enum { · 46 unmodified lines
4747 MLX5_QP_FLAG_TYPE_DCI = 1 << 5,
4848 MLX5_QP_FLAG_TIR_ALLOW_SELF_LB_UC = 1 << 6,
4949 MLX5_QP_FLAG_TIR_ALLOW_SELF_LB_MC = 1 << 7,
50+ MLX5_QP_FLAG_ALLOW_SCATTER_CQE = 1 << 8,
5051 };
5152
5253 enum {

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t