Commit f57915cf authored by Or Gerlitz's avatar Or Gerlitz Committed by Nicholas Bellinger

ib_isert: Add max_send_sge=2 minimum for control PDU responses

This patch adds a max_send_sge=2 minimum in isert_conn_setup_qp()
to ensure outgoing control PDU responses with tx_desc->num_sge=2
are able to function correctly.

This addresses a bug with RDMA hardware using dev_attr.max_sge=3,
that in the original code with the ConnectX-2 work-around would
result in isert_conn->max_sge=1 being negotiated.

Originally reported by Chris with ocrdma driver.
Reported-by: default avatarChris Moore <Chris.Moore@emulex.com>
Tested-by: default avatarChris Moore <Chris.Moore@emulex.com>
Signed-off-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
Cc: <stable@vger.kernel.org> # 3.10+
Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
parent ab477c1f
...@@ -115,9 +115,12 @@ isert_conn_setup_qp(struct isert_conn *isert_conn, struct rdma_cm_id *cma_id, ...@@ -115,9 +115,12 @@ isert_conn_setup_qp(struct isert_conn *isert_conn, struct rdma_cm_id *cma_id,
attr.cap.max_recv_wr = ISERT_QP_MAX_RECV_DTOS; attr.cap.max_recv_wr = ISERT_QP_MAX_RECV_DTOS;
/* /*
* FIXME: Use devattr.max_sge - 2 for max_send_sge as * FIXME: Use devattr.max_sge - 2 for max_send_sge as
* work-around for RDMA_READ.. * work-around for RDMA_READs with ConnectX-2.
*
* Also, still make sure to have at least two SGEs for
* outgoing control PDU responses.
*/ */
attr.cap.max_send_sge = device->dev_attr.max_sge - 2; attr.cap.max_send_sge = max(2, device->dev_attr.max_sge - 2);
isert_conn->max_sge = attr.cap.max_send_sge; isert_conn->max_sge = attr.cap.max_send_sge;
attr.cap.max_recv_sge = 1; attr.cap.max_recv_sge = 1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment