RDS: IB: handle the RDMA CM time wait event
authorsantosh.shilimkar@oracle.com <santosh.shilimkar@oracle.com>
Tue, 1 Mar 2016 23:20:50 +0000 (15:20 -0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 2 Mar 2016 19:13:19 +0000 (14:13 -0500)
Drop the RDS connection on RDMA_CM_EVENT_TIMEWAIT_EXIT so that
it can reconnect and resume.

While testing fastreg, this error happened in couple of tests but
was getting un-noticed.

Signed-off-by: Santosh Shilimkar <ssantosh@kernel.org>
Signed-off-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/rds/rdma_transport.c

index 4f4b3d8..7220beb 100644 (file)
@@ -117,6 +117,14 @@ int rds_rdma_cm_event_handler(struct rdma_cm_id *cm_id,
                rds_conn_drop(conn);
                break;
 
+       case RDMA_CM_EVENT_TIMEWAIT_EXIT:
+               if (conn) {
+                       pr_info("RDS: RDMA_CM_EVENT_TIMEWAIT_EXIT event: dropping connection %pI4->%pI4\n",
+                               &conn->c_laddr, &conn->c_faddr);
+                       rds_conn_drop(conn);
+               }
+               break;
+
        default:
                /* things like device disconnect? */
                printk(KERN_ERR "RDS: unknown event %u (%s)!\n",