Lines Matching refs:cm_id
91 struct rdma_cm_id *cm_id; member
120 struct rdma_cm_id *cm_id; member
139 else if (ctx->file != file || !ctx->cm_id) in _ucma_find_context()
176 if (!ctx->cm_id->device) { in ucma_get_ctx_dev()
187 rdma_destroy_id(uevent_close->cm_id); in ucma_close_event_id()
202 rdma_destroy_id(ctx->cm_id); in ucma_close_id()
306 static void ucma_removal_event_handler(struct rdma_cm_id *cm_id) in ucma_removal_event_handler() argument
308 struct ucma_context *ctx = cm_id->context; in ucma_removal_event_handler()
321 if (ctx->cm_id == cm_id) { in ucma_removal_event_handler()
330 if (con_req_eve->cm_id == cm_id && in ucma_removal_event_handler()
343 static int ucma_event_handler(struct rdma_cm_id *cm_id, in ucma_event_handler() argument
347 struct ucma_context *ctx = cm_id->context; in ucma_event_handler()
355 uevent->cm_id = cm_id; in ucma_event_handler()
359 if (cm_id->qp_type == IB_QPT_UD) in ucma_event_handler()
360 ucma_copy_ud_event(cm_id->device, &uevent->resp.param.ud, in ucma_event_handler()
373 } else if (!ctx->uid || ctx->cm_id != cm_id) { in ucma_event_handler()
383 ucma_removal_event_handler(cm_id); in ucma_event_handler()
392 ucma_removal_event_handler(cm_id); in ucma_event_handler()
439 ctx->cm_id = uevent->cm_id; in ucma_get_event()
440 ctx->cm_id->context = ctx; in ucma_get_event()
485 struct rdma_cm_id *cm_id; in ucma_create_id() local
506 cm_id = __rdma_create_id(current->nsproxy->net_ns, in ucma_create_id()
508 if (IS_ERR(cm_id)) { in ucma_create_id()
509 ret = PTR_ERR(cm_id); in ucma_create_id()
520 ctx->cm_id = cm_id; in ucma_create_id()
524 rdma_destroy_id(cm_id); in ucma_create_id()
594 rdma_destroy_id(uevent->cm_id); in ucma_free_ctx()
638 rdma_destroy_id(ctx->cm_id); in ucma_destroy_id()
668 ret = rdma_bind_addr(ctx->cm_id, (struct sockaddr *) &cmd.addr); in ucma_bind_ip()
691 ret = rdma_bind_addr(ctx->cm_id, (struct sockaddr *) &cmd.addr); in ucma_bind()
715 ret = rdma_resolve_addr(ctx->cm_id, (struct sockaddr *) &cmd.src_addr, in ucma_resolve_ip()
741 ret = rdma_resolve_addr(ctx->cm_id, (struct sockaddr *) &cmd.src_addr, in ucma_resolve_addr()
762 ret = rdma_resolve_route(ctx->cm_id, cmd.timeout_ms); in ucma_resolve_route()
852 addr = (struct sockaddr *) &ctx->cm_id->route.addr.src_addr; in ucma_query_route()
856 addr = (struct sockaddr *) &ctx->cm_id->route.addr.dst_addr; in ucma_query_route()
860 if (!ctx->cm_id->device) in ucma_query_route()
863 resp.node_guid = (__force __u64) ctx->cm_id->device->node_guid; in ucma_query_route()
864 resp.port_num = ctx->cm_id->port_num; in ucma_query_route()
866 if (rdma_cap_ib_sa(ctx->cm_id->device, ctx->cm_id->port_num)) in ucma_query_route()
867 ucma_copy_ib_route(&resp, &ctx->cm_id->route); in ucma_query_route()
868 else if (rdma_protocol_roce(ctx->cm_id->device, ctx->cm_id->port_num)) in ucma_query_route()
869 ucma_copy_iboe_route(&resp, &ctx->cm_id->route); in ucma_query_route()
870 else if (rdma_protocol_iwarp(ctx->cm_id->device, ctx->cm_id->port_num)) in ucma_query_route()
871 ucma_copy_iw_route(&resp, &ctx->cm_id->route); in ucma_query_route()
882 static void ucma_query_device_addr(struct rdma_cm_id *cm_id, in ucma_query_device_addr() argument
885 if (!cm_id->device) in ucma_query_device_addr()
888 resp->node_guid = (__force __u64) cm_id->device->node_guid; in ucma_query_device_addr()
889 resp->port_num = cm_id->port_num; in ucma_query_device_addr()
891 ib_addr_get_pkey(&cm_id->route.addr.dev_addr)); in ucma_query_device_addr()
906 addr = (struct sockaddr *) &ctx->cm_id->route.addr.src_addr; in ucma_query_addr()
910 addr = (struct sockaddr *) &ctx->cm_id->route.addr.dst_addr; in ucma_query_addr()
914 ucma_query_device_addr(ctx->cm_id, &resp); in ucma_query_addr()
935 resp->num_paths = ctx->cm_id->route.num_paths; in ucma_query_path()
939 struct sa_path_rec *rec = &ctx->cm_id->route.path_rec[i]; in ucma_query_path()
974 ucma_query_device_addr(ctx->cm_id, &resp); in ucma_query_gid()
978 if (ctx->cm_id->route.addr.src_addr.ss_family == AF_IB) { in ucma_query_gid()
979 memcpy(addr, &ctx->cm_id->route.addr.src_addr, resp.src_size); in ucma_query_gid()
983 rdma_read_gids(ctx->cm_id, (union ib_gid *)&addr->sib_addr, in ucma_query_gid()
985 addr->sib_sid = rdma_get_service_id(ctx->cm_id, (struct sockaddr *) in ucma_query_gid()
986 &ctx->cm_id->route.addr.src_addr); in ucma_query_gid()
991 if (ctx->cm_id->route.addr.dst_addr.ss_family == AF_IB) { in ucma_query_gid()
992 memcpy(addr, &ctx->cm_id->route.addr.dst_addr, resp.dst_size); in ucma_query_gid()
996 rdma_read_gids(ctx->cm_id, NULL, in ucma_query_gid()
998 addr->sib_sid = rdma_get_service_id(ctx->cm_id, (struct sockaddr *) in ucma_query_gid()
999 &ctx->cm_id->route.addr.dst_addr); in ucma_query_gid()
1078 ucma_copy_conn_param(ctx->cm_id, &conn_param, &cmd.conn_param); in ucma_connect()
1079 ret = rdma_connect(ctx->cm_id, &conn_param); in ucma_connect()
1100 ret = rdma_listen(ctx->cm_id, ctx->backlog); in ucma_listen()
1121 ucma_copy_conn_param(ctx->cm_id, &conn_param, &cmd.conn_param); in ucma_accept()
1123 ret = __rdma_accept(ctx->cm_id, &conn_param, NULL); in ucma_accept()
1128 ret = __rdma_accept(ctx->cm_id, NULL, NULL); in ucma_accept()
1148 ret = rdma_reject(ctx->cm_id, cmd.private_data, cmd.private_data_len); in ucma_reject()
1167 ret = rdma_disconnect(ctx->cm_id); in ucma_disconnect()
1198 ret = rdma_init_qp_attr(ctx->cm_id, &qp_attr, &resp.qp_attr_mask); in ucma_init_qp_attr()
1202 ib_copy_qp_attr_to_user(ctx->cm_id->device, &resp, &qp_attr); in ucma_init_qp_attr()
1223 rdma_set_service_type(ctx->cm_id, *((u8 *) optval)); in ucma_set_option_id()
1230 ret = rdma_set_reuseaddr(ctx->cm_id, *((int *) optval) ? 1 : 0); in ucma_set_option_id()
1237 ret = rdma_set_afonly(ctx->cm_id, *((int *) optval) ? 1 : 0); in ucma_set_option_id()
1265 if (!ctx->cm_id->device) in ucma_set_ib_path()
1273 if (rdma_cap_opa_ah(ctx->cm_id->device, ctx->cm_id->port_num)) { in ucma_set_ib_path()
1277 ret = rdma_set_ib_path(ctx->cm_id, &opa); in ucma_set_ib_path()
1279 ret = rdma_set_ib_path(ctx->cm_id, &sa_path); in ucma_set_ib_path()
1286 return ucma_event_handler(ctx->cm_id, &event); in ucma_set_ib_path()
1372 if (ctx->cm_id->device) in ucma_notify()
1373 ret = rdma_notify(ctx->cm_id, (enum ib_event_type)cmd.event); in ucma_notify()
1416 ret = rdma_join_multicast(ctx->cm_id, (struct sockaddr *)&mc->addr, in ucma_process_join()
1437 rdma_leave_multicast(ctx->cm_id, (struct sockaddr *) &mc->addr); in ucma_process_join()
1521 rdma_leave_multicast(mc->ctx->cm_id, (struct sockaddr *) &mc->addr); in ucma_leave_multicast()
1770 rdma_destroy_id(ctx->cm_id); in ucma_close()