ib_srpt: Prevent that large RDMA transfers trigger QP termination (merge r8938 from trunk)

git-svn-id: http://svn.code.sf.net/p/scst/svn/branches/3.4.x@8945 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
Bart Van Assche
2020-05-20 00:34:00 +00:00
parent 26099e2407
commit f03f51482d

View File

@@ -2328,21 +2328,22 @@ retry:
qp_init->sq_sig_type = IB_SIGNAL_REQ_WR;
qp_init->qp_type = IB_QPT_RC;
qp_init->cap.max_send_wr = sq_size;
#if HAVE_DEV_ATTR_MAX_SEND_SGE
ch->max_send_sge = sdev->dev_attr.max_send_sge;
ch->max_recv_sge = sdev->dev_attr.max_recv_sge;
#else
ch->max_send_sge = sdev->dev_attr.max_sge;
ch->max_recv_sge = ch->max_send_sge;
#endif
/*
* For max_sge values > 2 * max_sge_delta, subtract max_sge_delta. For
* max_sge values < max_sge_delta, use max_sge. For intermediate
* max_sge values, use max_sge_delta.
*/
#if HAVE_DEV_ATTR_MAX_SEND_SGE
ch->max_send_sge = sdev->dev_attr.max_send_sge;
ch->max_recv_sge = sdev->dev_attr.max_recv_sge;
#else
ch->max_send_sge = sdev->dev_attr.max_sge -
ch->max_send_sge -=
min_t(unsigned, max_sge_delta,
max_t(int, 0,
sdev->dev_attr.max_sge - max_sge_delta));
ch->max_recv_sge = ch->max_send_sge;
#endif
ch->max_send_sge - max_sge_delta));
qp_init->cap.max_send_sge = ch->max_send_sge;
qp_init->cap.max_recv_sge = ch->max_recv_sge;
if (sdev->use_srq) {