RDMA/iwcm: Propagate ird/ord values upwards
authorKumar Sanghvi <kumaras@chelsio.com>
Sun, 25 Sep 2011 14:47:43 +0000 (20:17 +0530)
committerRoland Dreier <roland@purestorage.com>
Thu, 6 Oct 2011 16:37:52 +0000 (09:37 -0700)
Update struct iw_cm_event to support propagating the ird/ord values
upwards to the application.

Signed-off-by: Kumar Sanghvi <kumaras@chelsio.com>
Reviewed-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
drivers/infiniband/core/cma.c
include/rdma/iw_cm.h

index 31d958e2c9ec944a4517b9388c064ba9149a975a..3e7104554597685580acc23eb05294a5110e6b89 100644 (file)
@@ -1340,6 +1340,8 @@ static int cma_iw_handler(struct iw_cm_id *iw_id, struct iw_cm_event *iw_event)
                switch (iw_event->status) {
                case 0:
                        event.event = RDMA_CM_EVENT_ESTABLISHED;
+                       event.param.conn.initiator_depth = iw_event->ird;
+                       event.param.conn.responder_resources = iw_event->ord;
                        break;
                case -ECONNRESET:
                case -ECONNREFUSED:
@@ -1355,6 +1357,8 @@ static int cma_iw_handler(struct iw_cm_id *iw_id, struct iw_cm_event *iw_event)
                break;
        case IW_CM_EVENT_ESTABLISHED:
                event.event = RDMA_CM_EVENT_ESTABLISHED;
+               event.param.conn.initiator_depth = iw_event->ird;
+               event.param.conn.responder_resources = iw_event->ord;
                break;
        default:
                BUG_ON(1);
@@ -1445,8 +1449,8 @@ static int iw_conn_req_handler(struct iw_cm_id *cm_id,
        event.event = RDMA_CM_EVENT_CONNECT_REQUEST;
        event.param.conn.private_data = iw_event->private_data;
        event.param.conn.private_data_len = iw_event->private_data_len;
-       event.param.conn.initiator_depth = attr.max_qp_init_rd_atom;
-       event.param.conn.responder_resources = attr.max_qp_rd_atom;
+       event.param.conn.initiator_depth = iw_event->ird;
+       event.param.conn.responder_resources = iw_event->ord;
 
        /*
         * Protect against the user destroying conn_id from another thread
index 2d0191c90f9eeda08da64fbbd0d9d6ba946442b7..1a046b1595ccd2ad4e24b78f8bb5647aadbee29b 100644 (file)
@@ -52,8 +52,10 @@ struct iw_cm_event {
        struct sockaddr_in local_addr;
        struct sockaddr_in remote_addr;
        void *private_data;
-       u8 private_data_len;
        void *provider_data;
+       u8 private_data_len;
+       u8 ord;
+       u8 ird;
 };
 
 /**