diff --git a/lib/nvmf/conn.c b/lib/nvmf/conn.c index c5f42f68f..1e32e390c 100644 --- a/lib/nvmf/conn.c +++ b/lib/nvmf/conn.c @@ -128,21 +128,6 @@ free_conn(struct spdk_nvmf_conn *conn) conn->is_valid = 0; } -struct spdk_nvmf_conn * -spdk_find_nvmf_conn_by_cm_id(struct rdma_cm_id *cm_id) -{ - int i; - - for (i = 0; i < g_max_conns; i++) { - if ((g_conns_array[i].is_valid == 1) && - (g_conns_array[i].cm_id == cm_id)) { - return &g_conns_array[i]; - } - } - - return NULL; -} - static struct spdk_nvmf_conn * spdk_find_nvmf_conn_by_cntlid(int cntlid) { diff --git a/lib/nvmf/conn.h b/lib/nvmf/conn.h index ed53a9cc9..1f67ea6e5 100644 --- a/lib/nvmf/conn.h +++ b/lib/nvmf/conn.h @@ -102,7 +102,4 @@ spdk_nvmf_allocate_conn(void); int spdk_nvmf_startup_conn(struct spdk_nvmf_conn *conn); -struct spdk_nvmf_conn * -spdk_find_nvmf_conn_by_cm_id(struct rdma_cm_id *cm_id); - #endif /* NVMF_CONN_H */ diff --git a/lib/nvmf/rdma.c b/lib/nvmf/rdma.c index 948c6dd17..dd52569d4 100644 --- a/lib/nvmf/rdma.c +++ b/lib/nvmf/rdma.c @@ -475,6 +475,7 @@ nvmf_rdma_cm_connect(struct rdma_cm_event *event) * and also to ibv_device (cm_id->verbs->device) */ conn->cm_id = conn_id; + conn_id->context = conn; /* check for private data */ if (event->param.conn.private_data_len < sizeof(union spdk_nvmf_rdma_private_data)) { @@ -655,7 +656,7 @@ nvmf_rdma_cm_disconnect(struct rdma_cm_event *event) } conn_id = event->id; - conn = spdk_find_nvmf_conn_by_cm_id(conn_id); + conn = conn_id->context; if (conn == NULL) { SPDK_ERRLOG("disconnect request: no active connection\n"); goto err0;