From f03f51482d4c13ac1bdaf7521a6bf710f4d08bcd Mon Sep 17 00:00:00 2001 From: Bart Van Assche Date: Wed, 20 May 2020 00:34:00 +0000 Subject: [PATCH] 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 --- srpt/src/ib_srpt.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/srpt/src/ib_srpt.c b/srpt/src/ib_srpt.c index 601e2cd5f..dc368170d 100644 --- a/srpt/src/ib_srpt.c +++ b/srpt/src/ib_srpt.c @@ -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) {