Message ID | 20200708091908.162263-1-maxg@mellanox.com (mailing list archive) |
---|---|
State | Mainlined |
Commit | 317000b926b07c07e7f6c4032bd3344639f5eb4c |
Delegated to: | Jason Gunthorpe |
Headers | show |
Series | [1/1] IB/isert: allocate RW ctxs according to max IO size | expand |
Looks good to me Max, thanks
Acked-by: Sagi Grimberg <sagi@grimberg.me>
On Wed, Jul 08, 2020 at 12:19:08PM +0300, Max Gurtovoy wrote: > Current iSER target code allocates MR pool budget based on queue size. > Since there is no handshake between iSER initiator and target on max IO > size, we'll set the iSER target to support upto 16MiB IO operations and > allocate the correct number of RDMA ctxs according to the factor of MR's > per IO operation. This would guaranty sufficient size of the MR pool for > the required IO queue depth and IO size. > > Reported-by: Krishnamraju Eraparaju <krishna2@chelsio.com> > Tested-by: Krishnamraju Eraparaju <krishna2@chelsio.com> > Signed-off-by: Max Gurtovoy <maxg@mellanox.com> > Acked-by: Sagi Grimberg <sagi@grimberg.me> > --- > drivers/infiniband/ulp/isert/ib_isert.c | 6 ++++-- > drivers/infiniband/ulp/isert/ib_isert.h | 3 ++- > 2 files changed, 6 insertions(+), 3 deletions(-) Applied to for-next, thanks Jason
diff --git a/drivers/infiniband/ulp/isert/ib_isert.c b/drivers/infiniband/ulp/isert/ib_isert.c index b7df38e..49f5f05 100644 --- a/drivers/infiniband/ulp/isert/ib_isert.c +++ b/drivers/infiniband/ulp/isert/ib_isert.c @@ -119,7 +119,7 @@ { struct isert_device *device = isert_conn->device; struct ib_qp_init_attr attr; - int ret; + int ret, factor; memset(&attr, 0, sizeof(struct ib_qp_init_attr)); attr.event_handler = isert_qp_event_callback; @@ -128,7 +128,9 @@ attr.recv_cq = comp->cq; attr.cap.max_send_wr = ISERT_QP_MAX_REQ_DTOS + 1; attr.cap.max_recv_wr = ISERT_QP_MAX_RECV_DTOS + 1; - attr.cap.max_rdma_ctxs = ISCSI_DEF_XMIT_CMDS_MAX; + factor = rdma_rw_mr_factor(device->ib_device, cma_id->port_num, + ISCSI_ISER_MAX_SG_TABLESIZE); + attr.cap.max_rdma_ctxs = ISCSI_DEF_XMIT_CMDS_MAX * factor; attr.cap.max_send_sge = device->ib_device->attrs.max_send_sge; attr.cap.max_recv_sge = 1; attr.sq_sig_type = IB_SIGNAL_REQ_WR; diff --git a/drivers/infiniband/ulp/isert/ib_isert.h b/drivers/infiniband/ulp/isert/ib_isert.h index 3b296ba..c9ccf1d 100644 --- a/drivers/infiniband/ulp/isert/ib_isert.h +++ b/drivers/infiniband/ulp/isert/ib_isert.h @@ -63,7 +63,8 @@ (ISER_RX_PAYLOAD_SIZE + sizeof(u64) + sizeof(struct ib_sge) + \ sizeof(struct ib_cqe) + sizeof(bool))) -#define ISCSI_ISER_SG_TABLESIZE 256 +/* Maximum support is 16MB I/O size */ +#define ISCSI_ISER_MAX_SG_TABLESIZE 4096 enum isert_desc_type { ISCSI_TX_CONTROL,