aboutsummaryrefslogtreecommitdiffstats
path: root/net/rds/rdma_transport.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/rds/rdma_transport.c')
-rw-r--r--net/rds/rdma_transport.c21
1 files changed, 10 insertions, 11 deletions
diff --git a/net/rds/rdma_transport.c b/net/rds/rdma_transport.c
index 9c1fed81bf0f..7220bebcf558 100644
--- a/net/rds/rdma_transport.c
+++ b/net/rds/rdma_transport.c
@@ -49,9 +49,7 @@ int rds_rdma_cm_event_handler(struct rdma_cm_id *cm_id,
49 rdsdebug("conn %p id %p handling event %u (%s)\n", conn, cm_id, 49 rdsdebug("conn %p id %p handling event %u (%s)\n", conn, cm_id,
50 event->event, rdma_event_msg(event->event)); 50 event->event, rdma_event_msg(event->event));
51 51
52 if (cm_id->device->node_type == RDMA_NODE_RNIC) 52 if (cm_id->device->node_type == RDMA_NODE_IB_CA)
53 trans = &rds_iw_transport;
54 else
55 trans = &rds_ib_transport; 53 trans = &rds_ib_transport;
56 54
57 /* Prevent shutdown from tearing down the connection 55 /* Prevent shutdown from tearing down the connection
@@ -119,6 +117,14 @@ int rds_rdma_cm_event_handler(struct rdma_cm_id *cm_id,
119 rds_conn_drop(conn); 117 rds_conn_drop(conn);
120 break; 118 break;
121 119
120 case RDMA_CM_EVENT_TIMEWAIT_EXIT:
121 if (conn) {
122 pr_info("RDS: RDMA_CM_EVENT_TIMEWAIT_EXIT event: dropping connection %pI4->%pI4\n",
123 &conn->c_laddr, &conn->c_faddr);
124 rds_conn_drop(conn);
125 }
126 break;
127
122 default: 128 default:
123 /* things like device disconnect? */ 129 /* things like device disconnect? */
124 printk(KERN_ERR "RDS: unknown event %u (%s)!\n", 130 printk(KERN_ERR "RDS: unknown event %u (%s)!\n",
@@ -200,10 +206,6 @@ static int rds_rdma_init(void)
200 if (ret) 206 if (ret)
201 goto out; 207 goto out;
202 208
203 ret = rds_iw_init();
204 if (ret)
205 goto err_iw_init;
206
207 ret = rds_ib_init(); 209 ret = rds_ib_init();
208 if (ret) 210 if (ret)
209 goto err_ib_init; 211 goto err_ib_init;
@@ -211,8 +213,6 @@ static int rds_rdma_init(void)
211 goto out; 213 goto out;
212 214
213err_ib_init: 215err_ib_init:
214 rds_iw_exit();
215err_iw_init:
216 rds_rdma_listen_stop(); 216 rds_rdma_listen_stop();
217out: 217out:
218 return ret; 218 return ret;
@@ -224,11 +224,10 @@ static void rds_rdma_exit(void)
224 /* stop listening first to ensure no new connections are attempted */ 224 /* stop listening first to ensure no new connections are attempted */
225 rds_rdma_listen_stop(); 225 rds_rdma_listen_stop();
226 rds_ib_exit(); 226 rds_ib_exit();
227 rds_iw_exit();
228} 227}
229module_exit(rds_rdma_exit); 228module_exit(rds_rdma_exit);
230 229
231MODULE_AUTHOR("Oracle Corporation <rds-devel@oss.oracle.com>"); 230MODULE_AUTHOR("Oracle Corporation <rds-devel@oss.oracle.com>");
232MODULE_DESCRIPTION("RDS: IB/iWARP transport"); 231MODULE_DESCRIPTION("RDS: IB transport");
233MODULE_LICENSE("Dual BSD/GPL"); 232MODULE_LICENSE("Dual BSD/GPL");
234 233