From 7ed69c7d18d64b4edcd65c8fa9c49c98947b03cd Mon Sep 17 00:00:00 2001 From: Sean Hefty Date: Thu, 24 May 2012 15:25:23 -0700 Subject: [PATCH] Refresh of rs-qpsize --- src/cma.c | 10 ++++++++++ src/cma.h | 1 + src/rsocket.c | 5 +---- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/cma.c b/src/cma.c index 9cd34cf5..753612c5 100755 --- a/src/cma.c +++ b/src/cma.c @@ -76,6 +76,7 @@ struct cma_device { struct ibv_pd *pd; uint64_t guid; int port_cnt; + int max_qpsize; uint8_t max_initiator_depth; uint8_t max_responder_resources; }; @@ -267,6 +268,7 @@ int ucma_init(void) } cma_dev->port_cnt = attr.phys_port_cnt; + cma_dev->max_qpsize = attr.max_qp_wr; cma_dev->max_initiator_depth = (uint8_t) attr.max_qp_init_rd_atom; cma_dev->max_responder_resources = (uint8_t) attr.max_qp_rd_atom; ib += (cma_dev->verbs->device->transport_type == IBV_TRANSPORT_IB); @@ -2217,3 +2219,11 @@ void rdma_destroy_ep(struct rdma_cm_id *id) rdma_destroy_id(id); } + +int ucma_max_qpsize(struct rdma_cm_id *id) +{ + struct cma_id_private *id_priv; + + id_priv = container_of(id, struct cma_id_private, id); + return id_priv->cma_dev->max_qpsize; +} diff --git a/src/cma.h b/src/cma.h index 669b6819..f28eaf3a 100644 --- a/src/cma.h +++ b/src/cma.h @@ -104,6 +104,7 @@ static inline void fastlock_release(fastlock_t *lock) } #endif /* DEFINE_ATOMICS */ +int ucma_max_qpsize(struct rdma_cm_id *id); int ucma_complete(struct rdma_cm_id *id); static inline int ERR(int err) { diff --git a/src/rsocket.c b/src/rsocket.c index 388cf90c..4e0671fe 100644 --- a/src/rsocket.c +++ b/src/rsocket.c @@ -259,12 +259,9 @@ static int rs_set_nonblocking(struct rsocket *rs, long arg) static void rs_set_qp_size(struct rsocket *rs) { - struct ibv_device_attr attr; uint16_t max_size; - attr.max_qp_wr = RS_QP_SIZE; - ibv_query_device(rs->cm_id->verbs, &attr); - max_size = min(attr.max_qp_wr, RS_QP_MAX_SIZE); + max_size = min(ucma_max_qpsize(rs->cm_id), RS_QP_MAX_SIZE); if (rs->sq_size > max_size) rs->sq_size = max_size; -- 2.45.2