RDS: IB: track and log active side endpoint in connection
authorSantosh Shilimkar <santosh.shilimkar@oracle.com>
Sun, 10 Jul 2016 01:31:38 +0000 (18:31 -0700)
committerSantosh Shilimkar <santosh.shilimkar@oracle.com>
Mon, 2 Jan 2017 22:02:50 +0000 (14:02 -0800)
Useful to know the active and passive end points in a
RDS IB connection.

Signed-off-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
net/rds/ib.h
net/rds/ib_cm.c

index f14c26d22b272b554be5cb375018bb26b2e0ffd5..5f02b4d8f10c536ccabf931435bb95006ac10d71 100644 (file)
@@ -181,6 +181,9 @@ struct rds_ib_connection {
 
        /* Batched completions */
        unsigned int            i_unsignaled_wrs;
+
+       /* Endpoint role in connection */
+       bool                    i_active_side;
 };
 
 /* This assumes that atomic_t is at least 32 bits */
index 3002acf757666ab3bdc73e7862bc7024c8548c47..4d1bf04b06b5b458ea16ec625396bc7443b9f414 100644 (file)
@@ -120,16 +120,17 @@ void rds_ib_cm_connect_complete(struct rds_connection *conn, struct rdma_cm_even
                rds_conn_destroy(conn);
                return;
        } else {
-               pr_notice("RDS/IB: connected <%pI4,%pI4> version %u.%u%s\n",
+               pr_notice("RDS/IB: %s conn connected <%pI4,%pI4> version %u.%u%s\n",
+                         ic->i_active_side ? "Active" : "Passive",
                          &conn->c_laddr, &conn->c_faddr,
                          RDS_PROTOCOL_MAJOR(conn->c_version),
                          RDS_PROTOCOL_MINOR(conn->c_version),
                          ic->i_flowctl ? ", flow control" : "");
        }
 
-       /*
-        * Init rings and fill recv. this needs to wait until protocol negotiation
-        * is complete, since ring layout is different from 3.0 to 3.1.
+       /* Init rings and fill recv. this needs to wait until protocol
+        * negotiation is complete, since ring layout is different
+        * from 3.1 to 4.1.
         */
        rds_ib_send_init_ring(ic);
        rds_ib_recv_init_ring(ic);
@@ -685,6 +686,7 @@ out:
                if (ic->i_cm_id == cm_id)
                        ret = 0;
        }
+       ic->i_active_side = true;
        return ret;
 }
 
@@ -859,6 +861,7 @@ void rds_ib_conn_path_shutdown(struct rds_conn_path *cp)
        ic->i_sends = NULL;
        vfree(ic->i_recvs);
        ic->i_recvs = NULL;
+       ic->i_active_side = false;
 }
 
 int rds_ib_conn_alloc(struct rds_connection *conn, gfp_t gfp)