]> git.openfabrics.org - ~shefty/librdmacm.git/commitdiff
Refresh of rs-qpsize
authorSean Hefty <sean.hefty@intel.com>
Thu, 24 May 2012 22:25:23 +0000 (15:25 -0700)
committerSean Hefty <sean.hefty@intel.com>
Thu, 24 May 2012 22:25:23 +0000 (15:25 -0700)
src/cma.c
src/cma.h
src/rsocket.c

index 9cd34cf592b4ab80bcb9a693d9543ef2254d19df..753612c566a4293252f273bfe32cd1925de6ebca 100755 (executable)
--- 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;
+}
index 669b6819e18e17f020fd59becb0de05ab2854fec..f28eaf3a1dc9dc136b535091e069819f043faa26 100644 (file)
--- 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)
 {
index 388cf90c3d5d3deafc0e86f62e4527099f39d5c5..4e0671fe8b27287cb1b191187ff0606bdcd3b1ed 100644 (file)
@@ -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;