IB/cm: Expose service ID in request events
authorHaggai Eran <haggaie@mellanox.com>
Thu, 30 Jul 2015 14:50:17 +0000 (17:50 +0300)
committerDoug Ledford <dledford@redhat.com>
Sun, 30 Aug 2015 19:48:22 +0000 (15:48 -0400)
Expose the service ID on an incoming CM or SIDR request to the event
handler. This will allow the RDMA CM module to de-multiplex connection
requests based on the information encoded in the service ID.

Acked-by: Sean Hefty <sean.hefty@intel.com>
Signed-off-by: Haggai Eran <haggaie@mellanox.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/core/cm.c
include/rdma/ib_cm.h

index 82d5c4362aa856645e148f0a80fff401b6bd0653..93e9e2f34fc6a658905619eaaa8b73b9dae18f39 100644 (file)
@@ -1268,6 +1268,7 @@ static void cm_format_paths_from_req(struct cm_req_msg *req_msg,
        primary_path->packet_life_time =
                cm_req_get_primary_local_ack_timeout(req_msg);
        primary_path->packet_life_time -= (primary_path->packet_life_time > 0);
+       primary_path->service_id = req_msg->service_id;
 
        if (req_msg->alt_local_lid) {
                memset(alt_path, 0, sizeof *alt_path);
@@ -1289,6 +1290,7 @@ static void cm_format_paths_from_req(struct cm_req_msg *req_msg,
                alt_path->packet_life_time =
                        cm_req_get_alt_local_ack_timeout(req_msg);
                alt_path->packet_life_time -= (alt_path->packet_life_time > 0);
+               alt_path->service_id = req_msg->service_id;
        }
 }
 
@@ -2992,6 +2994,7 @@ static void cm_format_sidr_req_event(struct cm_work *work,
        param = &work->cm_event.param.sidr_req_rcvd;
        param->pkey = __be16_to_cpu(sidr_req_msg->pkey);
        param->listen_id = listen_id;
+       param->service_id = sidr_req_msg->service_id;
        param->port = work->port->port_num;
        work->cm_event.private_data = &sidr_req_msg->private_data;
 }
index 39ed2d2fbd51452216586b031a3e25d236099169..1b567bbc3ad41ae4f7e1ef0a0d988ec36c7e80be 100644 (file)
@@ -223,6 +223,7 @@ struct ib_cm_apr_event_param {
 
 struct ib_cm_sidr_req_event_param {
        struct ib_cm_id         *listen_id;
+       __be64                  service_id;
        u8                      port;
        u16                     pkey;
 };