[ofw] [PATCH] hca/wv: set max inline data during QP creation
Sean Hefty
sean.hefty at intel.com
Fri May 8 14:59:39 PDT 2009
Pass through the user's specified max inline data value when creating a QP.
Currently, if the user specifies a value, it gets ignored when the QP is
created. The inline data value supported is then returned to the user,
which may be less than requested.
This fixes a failure running dtest over mthca adapters. Mlx4 adapters end
up working for userspace apps because the max_inline_data is passed from the
UVP to the kernel via the UMV buffer. However, for completeness, fixup
kernel calls for QP creation from IBAL for mlx4.
Signed-off-by: Sean Hefty <sean.hefty at intel.com>
---
It looks like all existing calls to create QPs through IBAL zero the
QP creation attributes, so max_inline_data appears to always be initialized.
Index: hw/mlx4/kernel/hca/qp.c
===================================================================
--- hw/mlx4/kernel/hca/qp.c (revision 2100)
+++ hw/mlx4/kernel/hca/qp.c (working copy)
@@ -135,7 +135,7 @@
qp_init_attr.cap.max_send_sge = p_create_attr->sq_sge;
qp_init_attr.cap.max_recv_wr = p_create_attr->rq_depth;
qp_init_attr.cap.max_send_wr = p_create_attr->sq_depth;
- qp_init_attr.cap.max_inline_data = 0; /* absent in IBAL */
+ qp_init_attr.cap.max_inline_data = p_create_attr->sq_max_inline;
}
qp_init_attr.sq_sig_type = (p_create_attr->sq_signaled) ?
IB_SIGNAL_ALL_WR : IB_SIGNAL_REQ_WR;
qp_init_attr.qp_type = to_qp_type(p_create_attr->qp_type);
Index: hw/mthca/kernel/hca_verbs.c
===================================================================
--- hw/mthca/kernel/hca_verbs.c (revision 2100)
+++ hw/mthca/kernel/hca_verbs.c (working copy)
@@ -1050,6 +1050,7 @@
qp_init_attr.recv_cq = (struct ib_cq *)p_create_attr->h_rq_cq;
qp_init_attr.send_cq = (struct ib_cq *)p_create_attr->h_sq_cq;
qp_init_attr.srq = (struct ib_srq *)p_create_attr->h_srq;
+ qp_init_attr.cap.max_inline_data = p_create_attr->sq_max_inline;
qp_init_attr.cap.max_recv_sge = p_create_attr->rq_sge;
qp_init_attr.cap.max_send_sge = p_create_attr->sq_sge;
qp_init_attr.cap.max_recv_wr = p_create_attr->rq_depth;
Index: core/winverbs/kernel/wv_qp.c
===================================================================
--- core/winverbs/kernel/wv_qp.c (revision 2100)
+++ core/winverbs/kernel/wv_qp.c (working copy)
@@ -47,6 +47,7 @@
pVerbsAttr->h_srq = (pQp->pSrq != NULL) ? pQp->pSrq->hVerbsSrq : NULL;
pVerbsAttr->qp_type = (ib_qp_type_t) pAttr->QpType;
+ pVerbsAttr->sq_max_inline = pAttr->MaxInlineSend;
pVerbsAttr->sq_depth = pAttr->SendDepth;
pVerbsAttr->rq_depth = pAttr->ReceiveDepth;
pVerbsAttr->sq_sge = pAttr->SendSge;
More information about the ofw
mailing list