From bd6f57f67f1ebcfb7fc5ddabbf89fc55db12de18 Mon Sep 17 00:00:00 2001 From: Bart Van Assche Date: Wed, 11 Jul 2018 16:48:22 +0000 Subject: [PATCH] Update Subversion ignore lists git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7416 d57e44dd-8a1f-0410-8b47-8ef2f437770f --- srpt/Makefile | 5 +++++ srpt/src/ib_srpt.c | 29 +++++++++++++++++++++-------- srpt/src/ib_srpt.h | 6 ++++-- 3 files changed, 30 insertions(+), 10 deletions(-) diff --git a/srpt/Makefile b/srpt/Makefile index 35da325f5..31c92659a 100644 --- a/srpt/Makefile +++ b/srpt/Makefile @@ -246,6 +246,11 @@ conftest/rdma_destroy_ah/result-$(KVER).txt: \ echo "$(call run_conftest_bool,rdma_destroy_ah, \ HAVE_RDMA_DESTROY_AH)" >"$@" +conftest/rdma_query_gid/result-$(KVER).txt: \ + conftest/rdma_query_gid/rdma_query_gid.c \ + conftest/rdma_query_gid/Makefile + echo "$(call run_conftest_bool,rdma_query_gid,HAVE_RDMA_QUERY_GID)" >"$@" + conftest/register_mad_agent/result-$(KVER).txt: \ conftest/register_mad_agent/register_mad_agent.c \ conftest/register_mad_agent/Makefile diff --git a/srpt/src/ib_srpt.c b/srpt/src/ib_srpt.c index d27a45fbe..d2ad5f262 100644 --- a/srpt/src/ib_srpt.c +++ b/srpt/src/ib_srpt.c @@ -693,11 +693,15 @@ static int srpt_refresh_port(struct srpt_port *sport) sport->sm_lid = port_attr.sm_lid; sport->lid = port_attr.lid; +#if HAVE_RDMA_QUERY_GID + ret = rdma_query_gid(sport->sdev->device, sport->port, 0, &sport->gid); +#else ret = ib_query_gid(sport->sdev->device, sport->port, 0, &sport->gid #ifdef IB_QUERY_GID_HAS_ATTR_ARG , NULL #endif ); +#endif if (ret) return ret; @@ -940,7 +944,8 @@ static int srpt_post_recv(struct srpt_device *sdev, struct srpt_rdma_ch *ch, struct srpt_recv_ioctx *ioctx) { struct ib_sge list; - struct ib_recv_wr wr, *bad_wr; + struct ib_recv_wr wr; + struct ib_recv_wr *bad_wr; BUG_ON(!sdev); wr.wr_id = encode_wr_id(SRPT_RECV, ioctx->ioctx.index); @@ -973,7 +978,8 @@ static int srpt_post_send(struct srpt_rdma_ch *ch, struct srpt_send_ioctx *ioctx, int len) { struct ib_sge list; - struct ib_send_wr wr, *bad_wr; + struct ib_send_wr wr; + struct ib_send_wr *bad_wr; struct srpt_device *sdev = ch->sport->sdev; int ret; @@ -1016,7 +1022,8 @@ out: */ static int srpt_zerolength_write(struct srpt_rdma_ch *ch) { - struct ib_send_wr wr, *bad_wr; + struct ib_send_wr wr; + struct ib_send_wr *bad_wr; memset(&wr, 0, sizeof(wr)); wr.opcode = IB_WR_RDMA_WRITE; @@ -2242,17 +2249,23 @@ retry: * max_sge values < max_sge_delta, use max_sge. For intermediate * max_sge values, use max_sge_delta. */ - ch->max_sge = sdev->dev_attr.max_sge - +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 18, 0) + 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 - min_t(unsigned, max_sge_delta, max_t(int, 0, sdev->dev_attr.max_sge - max_sge_delta)); - qp_init->cap.max_send_sge = ch->max_sge; - qp_init->cap.max_recv_sge = ch->max_sge; + ch->max_recv_sge = ch->max_send_sge; +#endif + qp_init->cap.max_send_sge = ch->max_send_sge; + qp_init->cap.max_recv_sge = ch->max_recv_sge; if (sdev->use_srq) { qp_init->srq = sdev->srq; } else { qp_init->cap.max_recv_wr = ch->rq_size; - qp_init->cap.max_recv_sge = ch->max_sge; + qp_init->cap.max_recv_sge = ch->max_recv_sge; } if (ch->using_rdma_cm) { @@ -3112,7 +3125,7 @@ static int srpt_map_sg_to_ib_sge(struct srpt_rdma_ch *ch, BUG_ON(!ioctx); BUG_ON(!cmd); dev = ch->sport->sdev->device; - max_sge = ch->max_sge; + max_sge = ch->max_send_sge; dir = scst_cmd_get_data_direction(cmd); BUG_ON(dir == SCST_DATA_NONE); /* diff --git a/srpt/src/ib_srpt.h b/srpt/src/ib_srpt.h index d7dc9a882..7eb7e51fe 100644 --- a/srpt/src/ib_srpt.h +++ b/srpt/src/ib_srpt.h @@ -316,7 +316,8 @@ enum rdma_ch_state { * @cq: IB completion queue for this channel. * @kref: Per-channel reference count. * @rq_size: IB receive queue size. - * @max_sge: Maximum length of RDMA scatter list. + * @max_send_sge: Maximum length of RDMA send scatter list. + * @max_recv_sge: Maximum length of RDMA receive scatter list. * @max_rsp_size: Maximum size of an SRP response message in bytes. * @sq_wr_avail: number of work requests available in the send queue. * @sport: pointer to the information of the HCA port used by this @@ -360,7 +361,8 @@ struct srpt_rdma_ch { struct kref kref; struct rcu_head rcu; int rq_size; - int max_sge; + int max_send_sge; + int max_recv_sge; int max_rsp_size; atomic_t sq_wr_avail; struct srpt_port *sport;