IB/iser: Fix responder resources advertisement
authorSagi Grimberg <sagig@mellanox.com>
Thu, 31 Jul 2014 10:27:46 +0000 (13:27 +0300)
committerRoland Dreier <roland@purestorage.com>
Fri, 1 Aug 2014 22:10:04 +0000 (15:10 -0700)
The iser initiator is the RDMA responder so it should publish to the
target the max inflight rdma read requests its local HCA can handle in
responder_resources (max_qp_rd_atom).

The iser target should take the min of that and its local HCA max
inflight oustanding rdma read requests (max_qp_init_rd_atom).

We keep initiator_depth set to 1 in order to compat with old targets.

Signed-off-by: Sagi Grimberg <sagig@mellanox.com>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
drivers/infiniband/ulp/iser/iser_verbs.c

index da6f3ddbb0ab03fae62feca7143ed4baf1ccab35..6c7d8ce7b0169da91df30bdfa74dc6d15f46120a 100644 (file)
@@ -694,13 +694,15 @@ static void iser_route_handler(struct rdma_cm_id *cma_id)
        struct rdma_conn_param conn_param;
        int    ret;
        struct iser_cm_hdr req_hdr;
+       struct iser_conn *ib_conn = (struct iser_conn *)cma_id->context;
+       struct iser_device *device = ib_conn->device;
 
        ret = iser_create_ib_conn_res((struct iser_conn *)cma_id->context);
        if (ret)
                goto failure;
 
        memset(&conn_param, 0, sizeof conn_param);
-       conn_param.responder_resources = 4;
+       conn_param.responder_resources = device->dev_attr.max_qp_rd_atom;
        conn_param.initiator_depth     = 1;
        conn_param.retry_count         = 7;
        conn_param.rnr_retry_count     = 6;