Lines Matching refs:cm_id
89 struct rdma_cm_id *cm_id; member
117 struct rdma_cm_id *cm_id; member
165 rdma_destroy_id(uevent_close->cm_id); in ucma_close_event_id()
180 rdma_destroy_id(ctx->cm_id); in ucma_close_id()
283 static void ucma_removal_event_handler(struct rdma_cm_id *cm_id) in ucma_removal_event_handler() argument
285 struct ucma_context *ctx = cm_id->context; in ucma_removal_event_handler()
298 if (ctx->cm_id == cm_id) { in ucma_removal_event_handler()
307 if (con_req_eve->cm_id == cm_id && in ucma_removal_event_handler()
320 static int ucma_event_handler(struct rdma_cm_id *cm_id, in ucma_event_handler() argument
324 struct ucma_context *ctx = cm_id->context; in ucma_event_handler()
332 uevent->cm_id = cm_id; in ucma_event_handler()
336 if (cm_id->qp_type == IB_QPT_UD) in ucma_event_handler()
349 } else if (!ctx->uid || ctx->cm_id != cm_id) { in ucma_event_handler()
359 ucma_removal_event_handler(cm_id); in ucma_event_handler()
368 ucma_removal_event_handler(cm_id); in ucma_event_handler()
411 ctx->cm_id = uevent->cm_id; in ucma_get_event()
412 ctx->cm_id->context = ctx; in ucma_get_event()
476 ctx->cm_id = rdma_create_id(current->nsproxy->net_ns, in ucma_create_id()
478 if (IS_ERR(ctx->cm_id)) { in ucma_create_id()
479 ret = PTR_ERR(ctx->cm_id); in ucma_create_id()
492 rdma_destroy_id(ctx->cm_id); in ucma_create_id()
559 rdma_destroy_id(uevent->cm_id); in ucma_free_ctx()
603 rdma_destroy_id(ctx->cm_id); in ucma_destroy_id()
630 ret = rdma_bind_addr(ctx->cm_id, (struct sockaddr *) &cmd.addr); in ucma_bind_ip()
654 ret = rdma_bind_addr(ctx->cm_id, addr); in ucma_bind()
674 ret = rdma_resolve_addr(ctx->cm_id, (struct sockaddr *) &cmd.src_addr, in ucma_resolve_ip()
703 ret = rdma_resolve_addr(ctx->cm_id, src, dst, cmd.timeout_ms); in ucma_resolve_addr()
723 ret = rdma_resolve_route(ctx->cm_id, cmd.timeout_ms); in ucma_resolve_route()
813 addr = (struct sockaddr *) &ctx->cm_id->route.addr.src_addr; in ucma_query_route()
817 addr = (struct sockaddr *) &ctx->cm_id->route.addr.dst_addr; in ucma_query_route()
821 if (!ctx->cm_id->device) in ucma_query_route()
824 resp.node_guid = (__force __u64) ctx->cm_id->device->node_guid; in ucma_query_route()
825 resp.port_num = ctx->cm_id->port_num; in ucma_query_route()
827 if (rdma_cap_ib_sa(ctx->cm_id->device, ctx->cm_id->port_num)) in ucma_query_route()
828 ucma_copy_ib_route(&resp, &ctx->cm_id->route); in ucma_query_route()
829 else if (rdma_protocol_roce(ctx->cm_id->device, ctx->cm_id->port_num)) in ucma_query_route()
830 ucma_copy_iboe_route(&resp, &ctx->cm_id->route); in ucma_query_route()
831 else if (rdma_protocol_iwarp(ctx->cm_id->device, ctx->cm_id->port_num)) in ucma_query_route()
832 ucma_copy_iw_route(&resp, &ctx->cm_id->route); in ucma_query_route()
843 static void ucma_query_device_addr(struct rdma_cm_id *cm_id, in ucma_query_device_addr() argument
846 if (!cm_id->device) in ucma_query_device_addr()
849 resp->node_guid = (__force __u64) cm_id->device->node_guid; in ucma_query_device_addr()
850 resp->port_num = cm_id->port_num; in ucma_query_device_addr()
852 ib_addr_get_pkey(&cm_id->route.addr.dev_addr)); in ucma_query_device_addr()
867 addr = (struct sockaddr *) &ctx->cm_id->route.addr.src_addr; in ucma_query_addr()
871 addr = (struct sockaddr *) &ctx->cm_id->route.addr.dst_addr; in ucma_query_addr()
875 ucma_query_device_addr(ctx->cm_id, &resp); in ucma_query_addr()
896 resp->num_paths = ctx->cm_id->route.num_paths; in ucma_query_path()
903 ib_sa_pack_path(&ctx->cm_id->route.path_rec[i], in ucma_query_path()
927 ucma_query_device_addr(ctx->cm_id, &resp); in ucma_query_gid()
931 if (ctx->cm_id->route.addr.src_addr.ss_family == AF_IB) { in ucma_query_gid()
932 memcpy(addr, &ctx->cm_id->route.addr.src_addr, resp.src_size); in ucma_query_gid()
936 rdma_addr_get_sgid(&ctx->cm_id->route.addr.dev_addr, in ucma_query_gid()
938 addr->sib_sid = rdma_get_service_id(ctx->cm_id, (struct sockaddr *) in ucma_query_gid()
939 &ctx->cm_id->route.addr.src_addr); in ucma_query_gid()
944 if (ctx->cm_id->route.addr.dst_addr.ss_family == AF_IB) { in ucma_query_gid()
945 memcpy(addr, &ctx->cm_id->route.addr.dst_addr, resp.dst_size); in ucma_query_gid()
949 rdma_addr_get_dgid(&ctx->cm_id->route.addr.dev_addr, in ucma_query_gid()
951 addr->sib_sid = rdma_get_service_id(ctx->cm_id, (struct sockaddr *) in ucma_query_gid()
952 &ctx->cm_id->route.addr.dst_addr); in ucma_query_gid()
1031 ucma_copy_conn_param(ctx->cm_id, &conn_param, &cmd.conn_param); in ucma_connect()
1032 ret = rdma_connect(ctx->cm_id, &conn_param); in ucma_connect()
1053 ret = rdma_listen(ctx->cm_id, ctx->backlog); in ucma_listen()
1074 ucma_copy_conn_param(ctx->cm_id, &conn_param, &cmd.conn_param); in ucma_accept()
1076 ret = rdma_accept(ctx->cm_id, &conn_param); in ucma_accept()
1081 ret = rdma_accept(ctx->cm_id, NULL); in ucma_accept()
1101 ret = rdma_reject(ctx->cm_id, cmd.private_data, cmd.private_data_len); in ucma_reject()
1120 ret = rdma_disconnect(ctx->cm_id); in ucma_disconnect()
1148 ret = rdma_init_qp_attr(ctx->cm_id, &qp_attr, &resp.qp_attr_mask); in ucma_init_qp_attr()
1173 rdma_set_service_type(ctx->cm_id, *((u8 *) optval)); in ucma_set_option_id()
1180 ret = rdma_set_reuseaddr(ctx->cm_id, *((int *) optval) ? 1 : 0); in ucma_set_option_id()
1187 ret = rdma_set_afonly(ctx->cm_id, *((int *) optval) ? 1 : 0); in ucma_set_option_id()
1218 ret = rdma_set_ib_paths(ctx->cm_id, &sa_path, 1); in ucma_set_ib_path()
1224 return ucma_event_handler(ctx->cm_id, &event); in ucma_set_ib_path()
1307 ret = rdma_notify(ctx->cm_id, (enum ib_event_type) cmd.event); in ucma_notify()
1341 ret = rdma_join_multicast(ctx->cm_id, (struct sockaddr *) &mc->addr, mc); in ucma_process_join()
1357 rdma_leave_multicast(ctx->cm_id, (struct sockaddr *) &mc->addr); in ucma_process_join()
1435 rdma_leave_multicast(mc->ctx->cm_id, (struct sockaddr *) &mc->addr); in ucma_leave_multicast()
1673 rdma_destroy_id(ctx->cm_id); in ucma_close()