Lines Matching refs:id

195 	struct rdma_cm_id	id;  member
246 struct rdma_id_private *id; member
254 struct rdma_id_private *id; member
260 struct rdma_id_private *id; member
343 id_priv->id.device = cma_dev->device; in cma_attach_to_dev()
344 id_priv->id.route.addr.dev_addr.transport = in cma_attach_to_dev()
374 return (struct sockaddr *) &id_priv->id.route.addr.src_addr; in cma_src_addr()
379 return (struct sockaddr *) &id_priv->id.route.addr.dst_addr; in cma_dst_addr()
384 return id_priv->id.route.addr.src_addr.ss_family; in cma_family()
403 switch (id_priv->id.ps) { in cma_set_qkey()
409 ib_addr_get_mgid(&id_priv->id.route.addr.dev_addr, &rec.mgid); in cma_set_qkey()
410 ret = ib_sa_get_mcmember_rec(id_priv->id.device, in cma_set_qkey()
411 id_priv->id.port_num, &rec.mgid, in cma_set_qkey()
470 struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr; in cma_acquire_dev()
477 id_priv->id.ps == RDMA_PS_IPOIB) in cma_acquire_dev()
481 rdma_ip2gid((struct sockaddr *)&id_priv->id.route.addr.src_addr, in cma_acquire_dev()
489 port = listen_id_priv->id.port_num; in cma_acquire_dev()
497 id_priv->id.port_num = port; in cma_acquire_dev()
506 listen_id_priv->id.port_num == port) in cma_acquire_dev()
516 id_priv->id.port_num = port; in cma_acquire_dev()
561 id_priv->id.port_num = p; in cma_resolve_ib_dev()
569 id_priv->id.port_num = p; in cma_resolve_ib_dev()
582 cma_translate_ib(addr, &id_priv->id.route.addr.dev_addr); in cma_resolve_ib_dev()
616 id_priv->id.context = context; in rdma_create_id()
617 id_priv->id.event_handler = event_handler; in rdma_create_id()
618 id_priv->id.ps = ps; in rdma_create_id()
619 id_priv->id.qp_type = qp_type; in rdma_create_id()
628 id_priv->id.route.addr.dev_addr.net = get_net(net); in rdma_create_id()
630 return &id_priv->id; in rdma_create_id()
640 ret = rdma_init_qp_attr(&id_priv->id, &qp_attr, &qp_attr_mask); in cma_init_ud_qp()
666 ret = rdma_init_qp_attr(&id_priv->id, &qp_attr, &qp_attr_mask); in cma_init_conn_qp()
673 int rdma_create_qp(struct rdma_cm_id *id, struct ib_pd *pd, in rdma_create_qp() argument
680 id_priv = container_of(id, struct rdma_id_private, id); in rdma_create_qp()
681 if (id->device != pd->device) in rdma_create_qp()
688 if (id->qp_type == IB_QPT_UD) in rdma_create_qp()
695 id->qp = qp; in rdma_create_qp()
705 void rdma_destroy_qp(struct rdma_cm_id *id) in rdma_destroy_qp() argument
709 id_priv = container_of(id, struct rdma_id_private, id); in rdma_destroy_qp()
711 ib_destroy_qp(id_priv->id.qp); in rdma_destroy_qp()
712 id_priv->id.qp = NULL; in rdma_destroy_qp()
725 if (!id_priv->id.qp) { in cma_modify_qp_rtr()
732 ret = rdma_init_qp_attr(&id_priv->id, &qp_attr, &qp_attr_mask); in cma_modify_qp_rtr()
736 ret = ib_modify_qp(id_priv->id.qp, &qp_attr, qp_attr_mask); in cma_modify_qp_rtr()
741 ret = rdma_init_qp_attr(&id_priv->id, &qp_attr, &qp_attr_mask); in cma_modify_qp_rtr()
745 ret = ib_query_gid(id_priv->id.device, id_priv->id.port_num, in cma_modify_qp_rtr()
750 BUG_ON(id_priv->cma_dev->device != id_priv->id.device); in cma_modify_qp_rtr()
754 ret = ib_modify_qp(id_priv->id.qp, &qp_attr, qp_attr_mask); in cma_modify_qp_rtr()
767 if (!id_priv->id.qp) { in cma_modify_qp_rts()
773 ret = rdma_init_qp_attr(&id_priv->id, &qp_attr, &qp_attr_mask); in cma_modify_qp_rts()
779 ret = ib_modify_qp(id_priv->id.qp, &qp_attr, qp_attr_mask); in cma_modify_qp_rts()
791 if (!id_priv->id.qp) { in cma_modify_qp_err()
797 ret = ib_modify_qp(id_priv->id.qp, &qp_attr, IB_QP_STATE); in cma_modify_qp_err()
806 struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr; in cma_ib_init_qp_attr()
810 if (rdma_cap_eth_ah(id_priv->id.device, id_priv->id.port_num)) in cma_ib_init_qp_attr()
815 ret = ib_find_cached_pkey(id_priv->id.device, id_priv->id.port_num, in cma_ib_init_qp_attr()
820 qp_attr->port_num = id_priv->id.port_num; in cma_ib_init_qp_attr()
823 if (id_priv->id.qp_type == IB_QPT_UD) { in cma_ib_init_qp_attr()
837 int rdma_init_qp_attr(struct rdma_cm_id *id, struct ib_qp_attr *qp_attr, in rdma_init_qp_attr() argument
843 id_priv = container_of(id, struct rdma_id_private, id); in rdma_init_qp_attr()
844 if (rdma_cap_ib_cm(id->device, id->port_num)) { in rdma_init_qp_attr()
845 if (!id_priv->cm_id.ib || (id_priv->id.qp_type == IB_QPT_UD)) in rdma_init_qp_attr()
853 } else if (rdma_cap_iw_cm(id->device, id->port_num)) { in rdma_init_qp_attr()
1260 static bool cma_protocol_roce(const struct rdma_cm_id *id) in cma_protocol_roce() argument
1262 struct ib_device *device = id->device; in cma_protocol_roce()
1263 const int port_num = id->port_num ?: rdma_start_port(device); in cma_protocol_roce()
1268 static bool cma_match_net_dev(const struct rdma_cm_id *id, in cma_match_net_dev() argument
1272 const struct rdma_addr *addr = &id->route.addr; in cma_match_net_dev()
1276 return (!id->port_num || id->port_num == port_num) && in cma_match_net_dev()
1278 cma_protocol_roce_dev_port(id->device, port_num)); in cma_match_net_dev()
1299 if (id_priv->id.device == cm_id->device && in cma_find_listener()
1300 cma_match_net_dev(&id_priv->id, net_dev, req->port)) in cma_find_listener()
1305 if (id_priv_dev->id.device == cm_id->device && in cma_find_listener()
1306 cma_match_net_dev(&id_priv_dev->id, net_dev, req->port)) in cma_find_listener()
1361 if (rdma_cap_ib_sa(id_priv->id.device, id_priv->id.port_num)) { in cma_cancel_route()
1386 rdma_destroy_id(&dev_id_priv->id); in cma_cancel_listens()
1397 rdma_addr_cancel(&id_priv->id.route.addr.dev_addr); in cma_cancel_operation()
1414 struct net *net = id_priv->id.route.addr.dev_addr.net; in cma_release_port()
1437 id_priv->id.port_num)) { in cma_leave_mc_groups()
1445 void rdma_destroy_id(struct rdma_cm_id *id) in rdma_destroy_id() argument
1450 id_priv = container_of(id, struct rdma_id_private, id); in rdma_destroy_id()
1462 if (rdma_cap_ib_cm(id_priv->id.device, 1)) { in rdma_destroy_id()
1465 } else if (rdma_cap_iw_cm(id_priv->id.device, 1)) { in rdma_destroy_id()
1478 cma_deref_id(id_priv->id.context); in rdma_destroy_id()
1480 kfree(id_priv->id.route.path_rec); in rdma_destroy_id()
1481 put_net(id_priv->id.route.addr.dev_addr.net); in rdma_destroy_id()
1544 if (id_priv->id.qp) { in cma_ib_handler()
1586 ret = id_priv->id.event_handler(&id_priv->id, &event); in cma_ib_handler()
1592 rdma_destroy_id(&id_priv->id); in cma_ib_handler()
1605 struct rdma_cm_id *id; in cma_new_conn_id() local
1612 id = rdma_create_id(listen_id->route.addr.dev_addr.net, in cma_new_conn_id()
1615 if (IS_ERR(id)) in cma_new_conn_id()
1618 id_priv = container_of(id, struct rdma_id_private, id); in cma_new_conn_id()
1619 if (cma_save_net_info((struct sockaddr *)&id->route.addr.src_addr, in cma_new_conn_id()
1620 (struct sockaddr *)&id->route.addr.dst_addr, in cma_new_conn_id()
1624 rt = &id->route; in cma_new_conn_id()
1657 rdma_destroy_id(id); in cma_new_conn_id()
1666 struct rdma_cm_id *id; in cma_new_udp_id() local
1671 id = rdma_create_id(net, listen_id->event_handler, listen_id->context, in cma_new_udp_id()
1673 if (IS_ERR(id)) in cma_new_udp_id()
1676 id_priv = container_of(id, struct rdma_id_private, id); in cma_new_udp_id()
1677 if (cma_save_net_info((struct sockaddr *)&id->route.addr.src_addr, in cma_new_udp_id()
1678 (struct sockaddr *)&id->route.addr.dst_addr, in cma_new_udp_id()
1684 ret = rdma_copy_addr(&id->route.addr.dev_addr, net_dev, NULL); in cma_new_udp_id()
1690 &id->route.addr.dev_addr); in cma_new_udp_id()
1699 rdma_destroy_id(id); in cma_new_udp_id()
1718 static int cma_check_req_qp_type(struct rdma_cm_id *id, struct ib_cm_event *ib_event) in cma_check_req_qp_type() argument
1721 (ib_event->param.req_rcvd.qp_type == id->qp_type)) || in cma_check_req_qp_type()
1723 (id->qp_type == IB_QPT_UD)) || in cma_check_req_qp_type()
1724 (!id->qp_type)); in cma_check_req_qp_type()
1738 if (!cma_check_req_qp_type(&listen_id->id, ib_event)) { in cma_req_handler()
1752 conn_id = cma_new_udp_id(&listen_id->id, ib_event, net_dev); in cma_req_handler()
1757 conn_id = cma_new_conn_id(&listen_id->id, ib_event, net_dev); in cma_req_handler()
1780 ret = conn_id->id.event_handler(&conn_id->id, &event); in cma_req_handler()
1789 (conn_id->id.qp_type != IB_QPT_UD)) in cma_req_handler()
1809 rdma_destroy_id(&conn_id->id); in cma_req_handler()
1818 __be64 rdma_get_service_id(struct rdma_cm_id *id, struct sockaddr *addr) in rdma_get_service_id() argument
1823 return cpu_to_be64(((u64)id->ps << 16) + be16_to_cpu(cma_port(addr))); in rdma_get_service_id()
1878 ret = id_priv->id.event_handler(&id_priv->id, &event); in cma_iw_handler()
1884 rdma_destroy_id(&id_priv->id); in cma_iw_handler()
1908 new_cm_id = rdma_create_id(listen_id->id.route.addr.dev_addr.net, in iw_conn_req_handler()
1909 listen_id->id.event_handler, in iw_conn_req_handler()
1910 listen_id->id.context, in iw_conn_req_handler()
1916 conn_id = container_of(new_cm_id, struct rdma_id_private, id); in iw_conn_req_handler()
1920 ret = rdma_translate_ip(laddr, &conn_id->id.route.addr.dev_addr, NULL); in iw_conn_req_handler()
1941 ret = ib_query_device(conn_id->id.device, &attr); in iw_conn_req_handler()
1960 ret = conn_id->id.event_handler(&conn_id->id, &event); in iw_conn_req_handler()
1967 rdma_destroy_id(&conn_id->id); in iw_conn_req_handler()
1982 struct ib_cm_id *id; in cma_ib_listen() local
1986 svc_id = rdma_get_service_id(&id_priv->id, addr); in cma_ib_listen()
1987 id = ib_cm_insert_listen(id_priv->id.device, cma_req_handler, svc_id); in cma_ib_listen()
1988 if (IS_ERR(id)) in cma_ib_listen()
1989 return PTR_ERR(id); in cma_ib_listen()
1990 id_priv->cm_id.ib = id; in cma_ib_listen()
1998 struct iw_cm_id *id; in cma_iw_listen() local
2000 id = iw_create_cm_id(id_priv->id.device, in cma_iw_listen()
2003 if (IS_ERR(id)) in cma_iw_listen()
2004 return PTR_ERR(id); in cma_iw_listen()
2006 id->tos = id_priv->tos; in cma_iw_listen()
2007 id_priv->cm_id.iw = id; in cma_iw_listen()
2022 static int cma_listen_handler(struct rdma_cm_id *id, in cma_listen_handler() argument
2025 struct rdma_id_private *id_priv = id->context; in cma_listen_handler()
2027 id->context = id_priv->id.context; in cma_listen_handler()
2028 id->event_handler = id_priv->id.event_handler; in cma_listen_handler()
2029 return id_priv->id.event_handler(id, event); in cma_listen_handler()
2036 struct rdma_cm_id *id; in cma_listen_on_dev() local
2037 struct net *net = id_priv->id.route.addr.dev_addr.net; in cma_listen_on_dev()
2043 id = rdma_create_id(net, cma_listen_handler, id_priv, id_priv->id.ps, in cma_listen_on_dev()
2044 id_priv->id.qp_type); in cma_listen_on_dev()
2045 if (IS_ERR(id)) in cma_listen_on_dev()
2048 dev_id_priv = container_of(id, struct rdma_id_private, id); in cma_listen_on_dev()
2060 ret = rdma_listen(id, id_priv->backlog); in cma_listen_on_dev()
2077 void rdma_set_service_type(struct rdma_cm_id *id, int tos) in rdma_set_service_type() argument
2081 id_priv = container_of(id, struct rdma_id_private, id); in rdma_set_service_type()
2092 route = &work->id->id.route; in cma_query_handler()
2110 struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr; in cma_query_ib_route()
2122 path_rec.service_id = rdma_get_service_id(&id_priv->id, cma_dst_addr(id_priv)); in cma_query_ib_route()
2145 id_priv->query_id = ib_sa_path_rec_get(&sa_client, id_priv->id.device, in cma_query_ib_route()
2146 id_priv->id.port_num, &path_rec, in cma_query_ib_route()
2157 struct rdma_id_private *id_priv = work->id; in cma_work_handler()
2164 if (id_priv->id.event_handler(&id_priv->id, &work->event)) { in cma_work_handler()
2172 rdma_destroy_id(&id_priv->id); in cma_work_handler()
2179 struct rdma_id_private *id_priv = work->id; in cma_ndev_work_handler()
2187 if (id_priv->id.event_handler(&id_priv->id, &work->event)) { in cma_ndev_work_handler()
2196 rdma_destroy_id(&id_priv->id); in cma_ndev_work_handler()
2202 struct rdma_route *route = &id_priv->id.route; in cma_resolve_ib_route()
2210 work->id = id_priv; in cma_resolve_ib_route()
2235 int rdma_set_ib_paths(struct rdma_cm_id *id, in rdma_set_ib_paths() argument
2241 id_priv = container_of(id, struct rdma_id_private, id); in rdma_set_ib_paths()
2246 id->route.path_rec = kmemdup(path_rec, sizeof *path_rec * num_paths, in rdma_set_ib_paths()
2248 if (!id->route.path_rec) { in rdma_set_ib_paths()
2253 id->route.num_paths = num_paths; in rdma_set_ib_paths()
2269 work->id = id_priv; in cma_resolve_iw_route()
2300 struct rdma_route *route = &id_priv->id.route; in cma_resolve_iboe_route()
2311 work->id = id_priv; in cma_resolve_iboe_route()
2334 rdma_ip2gid((struct sockaddr *)&id_priv->id.route.addr.src_addr, in cma_resolve_iboe_route()
2336 rdma_ip2gid((struct sockaddr *)&id_priv->id.route.addr.dst_addr, in cma_resolve_iboe_route()
2372 int rdma_resolve_route(struct rdma_cm_id *id, int timeout_ms) in rdma_resolve_route() argument
2377 id_priv = container_of(id, struct rdma_id_private, id); in rdma_resolve_route()
2382 if (rdma_cap_ib_sa(id->device, id->port_num)) in rdma_resolve_route()
2384 else if (rdma_protocol_roce(id->device, id->port_num)) in rdma_resolve_route()
2386 else if (rdma_protocol_iwarp(id->device, id->port_num)) in rdma_resolve_route()
2463 id_priv->id.route.addr.dev_addr.dev_type = in cma_bind_loopback()
2467 rdma_addr_set_sgid(&id_priv->id.route.addr.dev_addr, &gid); in cma_bind_loopback()
2468 ib_addr_set_pkey(&id_priv->id.route.addr.dev_addr, pkey); in cma_bind_loopback()
2469 id_priv->id.port_num = p; in cma_bind_loopback()
2502 if (id_priv->id.event_handler(&id_priv->id, &event)) { in addr_handler()
2506 rdma_destroy_id(&id_priv->id); in addr_handler()
2530 rdma_addr_get_sgid(&id_priv->id.route.addr.dev_addr, &gid); in cma_resolve_loopback()
2531 rdma_addr_set_dgid(&id_priv->id.route.addr.dev_addr, &gid); in cma_resolve_loopback()
2533 work->id = id_priv; in cma_resolve_loopback()
2560 rdma_addr_set_dgid(&id_priv->id.route.addr.dev_addr, (union ib_gid *) in cma_resolve_ib_addr()
2561 &(((struct sockaddr_ib *) &id_priv->id.route.addr.dst_addr)->sib_addr)); in cma_resolve_ib_addr()
2563 work->id = id_priv; in cma_resolve_ib_addr()
2575 static int cma_bind_addr(struct rdma_cm_id *id, struct sockaddr *src_addr, in cma_bind_addr() argument
2579 src_addr = (struct sockaddr *) &id->route.addr.src_addr; in cma_bind_addr()
2586 id->route.addr.dev_addr.bound_dev_if = dst_addr6->sin6_scope_id; in cma_bind_addr()
2592 return rdma_bind_addr(id, src_addr); in cma_bind_addr()
2595 int rdma_resolve_addr(struct rdma_cm_id *id, struct sockaddr *src_addr, in rdma_resolve_addr() argument
2601 id_priv = container_of(id, struct rdma_id_private, id); in rdma_resolve_addr()
2603 ret = cma_bind_addr(id, src_addr, dst_addr); in rdma_resolve_addr()
2623 dst_addr, &id->route.addr.dev_addr, in rdma_resolve_addr()
2638 int rdma_set_reuseaddr(struct rdma_cm_id *id, int reuse) in rdma_set_reuseaddr() argument
2644 id_priv = container_of(id, struct rdma_id_private, id); in rdma_set_reuseaddr()
2657 int rdma_set_afonly(struct rdma_cm_id *id, int afonly) in rdma_set_afonly() argument
2663 id_priv = container_of(id, struct rdma_id_private, id); in rdma_set_afonly()
2717 ret = cma_ps_alloc(id_priv->id.route.addr.dev_addr.net, ps, bind_list, in cma_alloc_port()
2737 struct net *net = id_priv->id.route.addr.dev_addr.net; in cma_alloc_any_port()
2810 bind_list = cma_ps_find(id_priv->id.route.addr.dev_addr.net, ps, snum); in cma_use_port()
2836 switch (id_priv->id.ps) { in cma_select_inet_ps()
2841 return id_priv->id.ps; in cma_select_inet_ps()
2858 if ((id_priv->id.ps == RDMA_PS_IB) && (sid == (RDMA_IB_IP_PS_IB & mask))) { in cma_select_ib_ps()
2861 } else if (((id_priv->id.ps == RDMA_PS_IB) || (id_priv->id.ps == RDMA_PS_TCP)) && in cma_select_ib_ps()
2865 } else if (((id_priv->id.ps == RDMA_PS_IB) || (id_priv->id.ps == RDMA_PS_UDP)) && in cma_select_ib_ps()
2923 int rdma_listen(struct rdma_cm_id *id, int backlog) in rdma_listen() argument
2928 id_priv = container_of(id, struct rdma_id_private, id); in rdma_listen()
2930 id->route.addr.src_addr.ss_family = AF_INET; in rdma_listen()
2931 ret = rdma_bind_addr(id, cma_src_addr(id_priv)); in rdma_listen()
2946 if (id->device) { in rdma_listen()
2947 if (rdma_cap_ib_cm(id->device, 1)) { in rdma_listen()
2951 } else if (rdma_cap_iw_cm(id->device, 1)) { in rdma_listen()
2970 int rdma_bind_addr(struct rdma_cm_id *id, struct sockaddr *addr) in rdma_bind_addr() argument
2979 id_priv = container_of(id, struct rdma_id_private, id); in rdma_bind_addr()
2983 ret = cma_check_linklocal(&id->route.addr.dev_addr, addr); in rdma_bind_addr()
2989 ret = cma_translate_addr(addr, &id->route.addr.dev_addr); in rdma_bind_addr()
3003 struct net *net = id_priv->id.route.addr.dev_addr.net; in rdma_bind_addr()
3084 ib_init_ah_from_path(id_priv->id.device, id_priv->id.port_num, in cma_sidr_rep_handler()
3085 id_priv->id.route.path_rec, in cma_sidr_rep_handler()
3098 ret = id_priv->id.event_handler(&id_priv->id, &event); in cma_sidr_rep_handler()
3104 rdma_destroy_id(&id_priv->id); in cma_sidr_rep_handler()
3116 struct ib_cm_id *id; in cma_resolve_ib_udp() local
3145 id = ib_create_cm_id(id_priv->id.device, cma_sidr_rep_handler, in cma_resolve_ib_udp()
3147 if (IS_ERR(id)) { in cma_resolve_ib_udp()
3148 ret = PTR_ERR(id); in cma_resolve_ib_udp()
3151 id_priv->cm_id.ib = id; in cma_resolve_ib_udp()
3153 req.path = id_priv->id.route.path_rec; in cma_resolve_ib_udp()
3154 req.service_id = rdma_get_service_id(&id_priv->id, cma_dst_addr(id_priv)); in cma_resolve_ib_udp()
3174 struct ib_cm_id *id; in cma_connect_ib() local
3195 id = ib_create_cm_id(id_priv->id.device, cma_ib_handler, id_priv); in cma_connect_ib()
3196 if (IS_ERR(id)) { in cma_connect_ib()
3197 ret = PTR_ERR(id); in cma_connect_ib()
3200 id_priv->cm_id.ib = id; in cma_connect_ib()
3202 route = &id_priv->id.route; in cma_connect_ib()
3214 req.service_id = rdma_get_service_id(&id_priv->id, cma_dst_addr(id_priv)); in cma_connect_ib()
3216 req.qp_type = id_priv->id.qp_type; in cma_connect_ib()
3230 if (ret && !IS_ERR(id)) { in cma_connect_ib()
3231 ib_destroy_cm_id(id); in cma_connect_ib()
3246 cm_id = iw_create_cm_id(id_priv->id.device, cma_iw_handler, id_priv); in cma_connect_iw()
3267 iw_param.qpn = id_priv->id.qp ? id_priv->qp_num : conn_param->qp_num; in cma_connect_iw()
3281 int rdma_connect(struct rdma_cm_id *id, struct rdma_conn_param *conn_param) in rdma_connect() argument
3286 id_priv = container_of(id, struct rdma_id_private, id); in rdma_connect()
3290 if (!id->qp) { in rdma_connect()
3295 if (rdma_cap_ib_cm(id->device, id->port_num)) { in rdma_connect()
3296 if (id->qp_type == IB_QPT_UD) in rdma_connect()
3300 } else if (rdma_cap_iw_cm(id->device, id->port_num)) in rdma_connect()
3359 if (id_priv->id.qp) { in cma_accept_iw()
3389 int rdma_accept(struct rdma_cm_id *id, struct rdma_conn_param *conn_param) in rdma_accept() argument
3394 id_priv = container_of(id, struct rdma_id_private, id); in rdma_accept()
3401 if (!id->qp && conn_param) { in rdma_accept()
3406 if (rdma_cap_ib_cm(id->device, id->port_num)) { in rdma_accept()
3407 if (id->qp_type == IB_QPT_UD) { in rdma_accept()
3422 } else if (rdma_cap_iw_cm(id->device, id->port_num)) in rdma_accept()
3433 rdma_reject(id, NULL, 0); in rdma_accept()
3438 int rdma_notify(struct rdma_cm_id *id, enum ib_event_type event) in rdma_notify() argument
3443 id_priv = container_of(id, struct rdma_id_private, id); in rdma_notify()
3447 switch (id->device->node_type) { in rdma_notify()
3459 int rdma_reject(struct rdma_cm_id *id, const void *private_data, in rdma_reject() argument
3465 id_priv = container_of(id, struct rdma_id_private, id); in rdma_reject()
3469 if (rdma_cap_ib_cm(id->device, id->port_num)) { in rdma_reject()
3470 if (id->qp_type == IB_QPT_UD) in rdma_reject()
3477 } else if (rdma_cap_iw_cm(id->device, id->port_num)) { in rdma_reject()
3487 int rdma_disconnect(struct rdma_cm_id *id) in rdma_disconnect() argument
3492 id_priv = container_of(id, struct rdma_id_private, id); in rdma_disconnect()
3496 if (rdma_cap_ib_cm(id->device, id->port_num)) { in rdma_disconnect()
3503 } else if (rdma_cap_iw_cm(id->device, id->port_num)) { in rdma_disconnect()
3528 if (!status && id_priv->id.qp) in cma_ib_mc_handler()
3529 status = ib_attach_mcast(id_priv->id.qp, &multicast->rec.mgid, in cma_ib_mc_handler()
3538 ib_init_ah_from_mcmember(id_priv->id.device, in cma_ib_mc_handler()
3539 id_priv->id.port_num, &multicast->rec, in cma_ib_mc_handler()
3546 ret = id_priv->id.event_handler(&id_priv->id, &event); in cma_ib_mc_handler()
3550 rdma_destroy_id(&id_priv->id); in cma_ib_mc_handler()
3562 struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr; in cma_set_mgid()
3577 if (id_priv->id.ps == RDMA_PS_UDP) in cma_set_mgid()
3582 if (id_priv->id.ps == RDMA_PS_UDP) in cma_set_mgid()
3592 struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr; in cma_join_ib_multicast()
3597 ret = ib_sa_get_mcmember_rec(id_priv->id.device, id_priv->id.port_num, in cma_join_ib_multicast()
3618 if (id_priv->id.ps == RDMA_PS_IPOIB) in cma_join_ib_multicast()
3625 mc->multicast.ib = ib_sa_join_multicast(&sa_client, id_priv->id.device, in cma_join_ib_multicast()
3626 id_priv->id.port_num, &rec, in cma_join_ib_multicast()
3674 struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr; in cma_iboe_join_multicast()
3695 if (id_priv->id.ps == RDMA_PS_UDP) in cma_iboe_join_multicast()
3712 rdma_ip2gid((struct sockaddr *)&id_priv->id.route.addr.src_addr, in cma_iboe_join_multicast()
3714 work->id = id_priv; in cma_iboe_join_multicast()
3729 int rdma_join_multicast(struct rdma_cm_id *id, struct sockaddr *addr, in rdma_join_multicast() argument
3736 id_priv = container_of(id, struct rdma_id_private, id); in rdma_join_multicast()
3753 if (rdma_protocol_roce(id->device, id->port_num)) { in rdma_join_multicast()
3756 } else if (rdma_cap_ib_mcast(id->device, id->port_num)) in rdma_join_multicast()
3771 void rdma_leave_multicast(struct rdma_cm_id *id, struct sockaddr *addr) in rdma_leave_multicast() argument
3776 id_priv = container_of(id, struct rdma_id_private, id); in rdma_leave_multicast()
3783 if (id->qp) in rdma_leave_multicast()
3784 ib_detach_mcast(id->qp, in rdma_leave_multicast()
3788 BUG_ON(id_priv->cma_dev->device != id->device); in rdma_leave_multicast()
3790 if (rdma_cap_ib_mcast(id->device, id->port_num)) { in rdma_leave_multicast()
3793 } else if (rdma_protocol_roce(id->device, id->port_num)) in rdma_leave_multicast()
3808 dev_addr = &id_priv->id.route.addr.dev_addr; in cma_netdev_change()
3814 ndev->name, &id_priv->id); in cma_netdev_change()
3820 work->id = id_priv; in cma_netdev_change()
3903 ret = id_priv->id.event_handler(&id_priv->id, &event); in cma_remove_id_dev()
3927 rdma_destroy_id(&id_priv->id); in cma_process_remove()
3957 struct rdma_cm_id *id = NULL; in cma_get_id_stats() local
3988 id = &id_priv->id; in cma_get_id_stats()
3989 id_stats->node_type = id->route.addr.dev_addr.dev_type; in cma_get_id_stats()
3990 id_stats->port_num = id->port_num; in cma_get_id_stats()
3992 id->route.addr.dev_addr.bound_dev_if; in cma_get_id_stats()
4006 id_stats->port_space = id->ps; in cma_get_id_stats()
4009 id_stats->qp_type = id->qp_type; in cma_get_id_stats()
4056 .id = &cma_pernet_id,