Lines Matching refs:id
113 struct rdma_cm_id id; member
164 struct rdma_id_private *id; member
172 struct rdma_id_private *id; member
178 struct rdma_id_private *id; member
252 id_priv->id.device = cma_dev->device; in cma_attach_to_dev()
253 id_priv->id.route.addr.dev_addr.transport = in cma_attach_to_dev()
283 return (struct sockaddr *) &id_priv->id.route.addr.src_addr; in cma_src_addr()
288 return (struct sockaddr *) &id_priv->id.route.addr.dst_addr; in cma_dst_addr()
293 return id_priv->id.route.addr.src_addr.ss_family; in cma_family()
312 switch (id_priv->id.ps) { in cma_set_qkey()
318 ib_addr_get_mgid(&id_priv->id.route.addr.dev_addr, &rec.mgid); in cma_set_qkey()
319 ret = ib_sa_get_mcmember_rec(id_priv->id.device, in cma_set_qkey()
320 id_priv->id.port_num, &rec.mgid, in cma_set_qkey()
355 struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr; in cma_acquire_dev()
364 id_priv->id.ps == RDMA_PS_IPOIB) in cma_acquire_dev()
368 rdma_ip2gid((struct sockaddr *)&id_priv->id.route.addr.src_addr, in cma_acquire_dev()
374 rdma_port_get_link_layer(listen_id_priv->id.device, in cma_acquire_dev()
375 listen_id_priv->id.port_num) == dev_ll) { in cma_acquire_dev()
377 port = listen_id_priv->id.port_num; in cma_acquire_dev()
387 id_priv->id.port_num = found_port; in cma_acquire_dev()
395 listen_id_priv->id.port_num == port) in cma_acquire_dev()
405 id_priv->id.port_num = found_port; in cma_acquire_dev()
449 id_priv->id.port_num = p; in cma_resolve_ib_dev()
457 id_priv->id.port_num = p; in cma_resolve_ib_dev()
470 cma_translate_ib(addr, &id_priv->id.route.addr.dev_addr); in cma_resolve_ib_dev()
503 id_priv->id.context = context; in rdma_create_id()
504 id_priv->id.event_handler = event_handler; in rdma_create_id()
505 id_priv->id.ps = ps; in rdma_create_id()
506 id_priv->id.qp_type = qp_type; in rdma_create_id()
516 return &id_priv->id; in rdma_create_id()
526 ret = rdma_init_qp_attr(&id_priv->id, &qp_attr, &qp_attr_mask); in cma_init_ud_qp()
552 ret = rdma_init_qp_attr(&id_priv->id, &qp_attr, &qp_attr_mask); in cma_init_conn_qp()
559 int rdma_create_qp(struct rdma_cm_id *id, struct ib_pd *pd, in rdma_create_qp() argument
566 id_priv = container_of(id, struct rdma_id_private, id); in rdma_create_qp()
567 if (id->device != pd->device) in rdma_create_qp()
574 if (id->qp_type == IB_QPT_UD) in rdma_create_qp()
581 id->qp = qp; in rdma_create_qp()
591 void rdma_destroy_qp(struct rdma_cm_id *id) in rdma_destroy_qp() argument
595 id_priv = container_of(id, struct rdma_id_private, id); in rdma_destroy_qp()
597 ib_destroy_qp(id_priv->id.qp); in rdma_destroy_qp()
598 id_priv->id.qp = NULL; in rdma_destroy_qp()
611 if (!id_priv->id.qp) { in cma_modify_qp_rtr()
618 ret = rdma_init_qp_attr(&id_priv->id, &qp_attr, &qp_attr_mask); in cma_modify_qp_rtr()
622 ret = ib_modify_qp(id_priv->id.qp, &qp_attr, qp_attr_mask); in cma_modify_qp_rtr()
627 ret = rdma_init_qp_attr(&id_priv->id, &qp_attr, &qp_attr_mask); in cma_modify_qp_rtr()
631 ret = ib_query_gid(id_priv->id.device, id_priv->id.port_num, in cma_modify_qp_rtr()
638 rdma_port_get_link_layer(id_priv->id.device, id_priv->id.port_num) in cma_modify_qp_rtr()
647 ret = ib_modify_qp(id_priv->id.qp, &qp_attr, qp_attr_mask); in cma_modify_qp_rtr()
660 if (!id_priv->id.qp) { in cma_modify_qp_rts()
666 ret = rdma_init_qp_attr(&id_priv->id, &qp_attr, &qp_attr_mask); in cma_modify_qp_rts()
672 ret = ib_modify_qp(id_priv->id.qp, &qp_attr, qp_attr_mask); in cma_modify_qp_rts()
684 if (!id_priv->id.qp) { in cma_modify_qp_err()
690 ret = ib_modify_qp(id_priv->id.qp, &qp_attr, IB_QP_STATE); in cma_modify_qp_err()
699 struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr; in cma_ib_init_qp_attr()
703 if (rdma_port_get_link_layer(id_priv->id.device, id_priv->id.port_num) == in cma_ib_init_qp_attr()
709 ret = ib_find_cached_pkey(id_priv->id.device, id_priv->id.port_num, in cma_ib_init_qp_attr()
714 qp_attr->port_num = id_priv->id.port_num; in cma_ib_init_qp_attr()
717 if (id_priv->id.qp_type == IB_QPT_UD) { in cma_ib_init_qp_attr()
731 int rdma_init_qp_attr(struct rdma_cm_id *id, struct ib_qp_attr *qp_attr, in rdma_init_qp_attr() argument
737 id_priv = container_of(id, struct rdma_id_private, id); in rdma_init_qp_attr()
738 switch (rdma_node_get_transport(id_priv->id.device->node_type)) { in rdma_init_qp_attr()
740 if (!id_priv->cm_id.ib || (id_priv->id.qp_type == IB_QPT_UD)) in rdma_init_qp_attr()
840 static void cma_save_ib_info(struct rdma_cm_id *id, struct rdma_cm_id *listen_id, in cma_save_ib_info() argument
846 ib = (struct sockaddr_ib *) &id->route.addr.src_addr; in cma_save_ib_info()
862 ib = (struct sockaddr_ib *) &id->route.addr.dst_addr; in cma_save_ib_info()
879 static void cma_save_ip4_info(struct rdma_cm_id *id, struct rdma_cm_id *listen_id, in cma_save_ip4_info() argument
884 ip4 = (struct sockaddr_in *) &id->route.addr.src_addr; in cma_save_ip4_info()
889 ip4 = (struct sockaddr_in *) &id->route.addr.dst_addr; in cma_save_ip4_info()
895 static void cma_save_ip6_info(struct rdma_cm_id *id, struct rdma_cm_id *listen_id, in cma_save_ip6_info() argument
900 ip6 = (struct sockaddr_in6 *) &id->route.addr.src_addr; in cma_save_ip6_info()
905 ip6 = (struct sockaddr_in6 *) &id->route.addr.dst_addr; in cma_save_ip6_info()
911 static int cma_save_net_info(struct rdma_cm_id *id, struct rdma_cm_id *listen_id, in cma_save_net_info() argument
918 cma_save_ib_info(id, listen_id, ib_event->param.req_rcvd.primary_path); in cma_save_net_info()
920 cma_save_ib_info(id, listen_id, NULL); in cma_save_net_info()
930 cma_save_ip4_info(id, listen_id, hdr); in cma_save_net_info()
933 cma_save_ip6_info(id, listen_id, hdr); in cma_save_net_info()
948 switch (rdma_port_get_link_layer(id_priv->id.device, id_priv->id.port_num)) { in cma_cancel_route()
977 rdma_destroy_id(&dev_id_priv->id); in cma_cancel_listens()
988 rdma_addr_cancel(&id_priv->id.route.addr.dev_addr); in cma_cancel_operation()
1026 switch (rdma_port_get_link_layer(id_priv->cma_dev->device, id_priv->id.port_num)) { in cma_leave_mc_groups()
1040 void rdma_destroy_id(struct rdma_cm_id *id) in rdma_destroy_id() argument
1045 id_priv = container_of(id, struct rdma_id_private, id); in rdma_destroy_id()
1057 switch (rdma_node_get_transport(id_priv->id.device->node_type)) { in rdma_destroy_id()
1078 cma_deref_id(id_priv->id.context); in rdma_destroy_id()
1080 kfree(id_priv->id.route.path_rec); in rdma_destroy_id()
1143 if (id_priv->id.qp) { in cma_ib_handler()
1185 ret = id_priv->id.event_handler(&id_priv->id, &event); in cma_ib_handler()
1191 rdma_destroy_id(&id_priv->id); in cma_ib_handler()
1203 struct rdma_cm_id *id; in cma_new_conn_id() local
1207 id = rdma_create_id(listen_id->event_handler, listen_id->context, in cma_new_conn_id()
1209 if (IS_ERR(id)) in cma_new_conn_id()
1212 id_priv = container_of(id, struct rdma_id_private, id); in cma_new_conn_id()
1213 if (cma_save_net_info(id, listen_id, ib_event)) in cma_new_conn_id()
1216 rt = &id->route; in cma_new_conn_id()
1242 rdma_destroy_id(id); in cma_new_conn_id()
1250 struct rdma_cm_id *id; in cma_new_udp_id() local
1253 id = rdma_create_id(listen_id->event_handler, listen_id->context, in cma_new_udp_id()
1255 if (IS_ERR(id)) in cma_new_udp_id()
1258 id_priv = container_of(id, struct rdma_id_private, id); in cma_new_udp_id()
1259 if (cma_save_net_info(id, listen_id, ib_event)) in cma_new_udp_id()
1262 if (!cma_any_addr((struct sockaddr *) &id->route.addr.src_addr)) { in cma_new_udp_id()
1263 ret = cma_translate_addr(cma_src_addr(id_priv), &id->route.addr.dev_addr); in cma_new_udp_id()
1271 rdma_destroy_id(id); in cma_new_udp_id()
1290 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
1293 (ib_event->param.req_rcvd.qp_type == id->qp_type)) || in cma_check_req_qp_type()
1295 (id->qp_type == IB_QPT_UD)) || in cma_check_req_qp_type()
1296 (!id->qp_type)); in cma_check_req_qp_type()
1306 if (!cma_check_req_qp_type(&listen_id->id, ib_event)) in cma_req_handler()
1316 conn_id = cma_new_udp_id(&listen_id->id, ib_event); in cma_req_handler()
1321 conn_id = cma_new_conn_id(&listen_id->id, ib_event); in cma_req_handler()
1344 ret = conn_id->id.event_handler(&conn_id->id, &event); in cma_req_handler()
1353 (conn_id->id.qp_type != IB_QPT_UD)) in cma_req_handler()
1371 rdma_destroy_id(&conn_id->id); in cma_req_handler()
1375 __be64 rdma_get_service_id(struct rdma_cm_id *id, struct sockaddr *addr) in rdma_get_service_id() argument
1380 return cpu_to_be64(((u64)id->ps << 16) + be16_to_cpu(cma_port(addr))); in rdma_get_service_id()
1471 ret = id_priv->id.event_handler(&id_priv->id, &event); in cma_iw_handler()
1477 rdma_destroy_id(&id_priv->id); in cma_iw_handler()
1501 new_cm_id = rdma_create_id(listen_id->id.event_handler, in iw_conn_req_handler()
1502 listen_id->id.context, in iw_conn_req_handler()
1508 conn_id = container_of(new_cm_id, struct rdma_id_private, id); in iw_conn_req_handler()
1512 ret = rdma_translate_ip(laddr, &conn_id->id.route.addr.dev_addr, NULL); in iw_conn_req_handler()
1533 ret = ib_query_device(conn_id->id.device, &attr); in iw_conn_req_handler()
1552 ret = conn_id->id.event_handler(&conn_id->id, &event); in iw_conn_req_handler()
1559 rdma_destroy_id(&conn_id->id); in iw_conn_req_handler()
1575 struct ib_cm_id *id; in cma_ib_listen() local
1579 id = ib_create_cm_id(id_priv->id.device, cma_req_handler, id_priv); in cma_ib_listen()
1580 if (IS_ERR(id)) in cma_ib_listen()
1581 return PTR_ERR(id); in cma_ib_listen()
1583 id_priv->cm_id.ib = id; in cma_ib_listen()
1586 svc_id = rdma_get_service_id(&id_priv->id, addr); in cma_ib_listen()
1590 cma_set_compare_data(id_priv->id.ps, addr, &compare_data); in cma_ib_listen()
1605 struct iw_cm_id *id; in cma_iw_listen() local
1607 id = iw_create_cm_id(id_priv->id.device, in cma_iw_listen()
1610 if (IS_ERR(id)) in cma_iw_listen()
1611 return PTR_ERR(id); in cma_iw_listen()
1613 id_priv->cm_id.iw = id; in cma_iw_listen()
1628 static int cma_listen_handler(struct rdma_cm_id *id, in cma_listen_handler() argument
1631 struct rdma_id_private *id_priv = id->context; in cma_listen_handler()
1633 id->context = id_priv->id.context; in cma_listen_handler()
1634 id->event_handler = id_priv->id.event_handler; in cma_listen_handler()
1635 return id_priv->id.event_handler(id, event); in cma_listen_handler()
1642 struct rdma_cm_id *id; in cma_listen_on_dev() local
1649 id = rdma_create_id(cma_listen_handler, id_priv, id_priv->id.ps, in cma_listen_on_dev()
1650 id_priv->id.qp_type); in cma_listen_on_dev()
1651 if (IS_ERR(id)) in cma_listen_on_dev()
1654 dev_id_priv = container_of(id, struct rdma_id_private, id); in cma_listen_on_dev()
1666 ret = rdma_listen(id, id_priv->backlog); in cma_listen_on_dev()
1683 void rdma_set_service_type(struct rdma_cm_id *id, int tos) in rdma_set_service_type() argument
1687 id_priv = container_of(id, struct rdma_id_private, id); in rdma_set_service_type()
1698 route = &work->id->id.route; in cma_query_handler()
1716 struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr; in cma_query_ib_route()
1728 path_rec.service_id = rdma_get_service_id(&id_priv->id, cma_dst_addr(id_priv)); in cma_query_ib_route()
1751 id_priv->query_id = ib_sa_path_rec_get(&sa_client, id_priv->id.device, in cma_query_ib_route()
1752 id_priv->id.port_num, &path_rec, in cma_query_ib_route()
1763 struct rdma_id_private *id_priv = work->id; in cma_work_handler()
1770 if (id_priv->id.event_handler(&id_priv->id, &work->event)) { in cma_work_handler()
1778 rdma_destroy_id(&id_priv->id); in cma_work_handler()
1785 struct rdma_id_private *id_priv = work->id; in cma_ndev_work_handler()
1793 if (id_priv->id.event_handler(&id_priv->id, &work->event)) { in cma_ndev_work_handler()
1802 rdma_destroy_id(&id_priv->id); in cma_ndev_work_handler()
1808 struct rdma_route *route = &id_priv->id.route; in cma_resolve_ib_route()
1816 work->id = id_priv; in cma_resolve_ib_route()
1841 int rdma_set_ib_paths(struct rdma_cm_id *id, in rdma_set_ib_paths() argument
1847 id_priv = container_of(id, struct rdma_id_private, id); in rdma_set_ib_paths()
1852 id->route.path_rec = kmemdup(path_rec, sizeof *path_rec * num_paths, in rdma_set_ib_paths()
1854 if (!id->route.path_rec) { in rdma_set_ib_paths()
1859 id->route.num_paths = num_paths; in rdma_set_ib_paths()
1875 work->id = id_priv; in cma_resolve_iw_route()
1906 struct rdma_route *route = &id_priv->id.route; in cma_resolve_iboe_route()
1917 work->id = id_priv; in cma_resolve_iboe_route()
1939 rdma_ip2gid((struct sockaddr *)&id_priv->id.route.addr.src_addr, in cma_resolve_iboe_route()
1941 rdma_ip2gid((struct sockaddr *)&id_priv->id.route.addr.dst_addr, in cma_resolve_iboe_route()
1977 int rdma_resolve_route(struct rdma_cm_id *id, int timeout_ms) in rdma_resolve_route() argument
1982 id_priv = container_of(id, struct rdma_id_private, id); in rdma_resolve_route()
1987 switch (rdma_node_get_transport(id->device->node_type)) { in rdma_resolve_route()
1989 switch (rdma_port_get_link_layer(id->device, id->port_num)) { in rdma_resolve_route()
2079 id_priv->id.route.addr.dev_addr.dev_type = in cma_bind_loopback()
2083 rdma_addr_set_sgid(&id_priv->id.route.addr.dev_addr, &gid); in cma_bind_loopback()
2084 ib_addr_set_pkey(&id_priv->id.route.addr.dev_addr, pkey); in cma_bind_loopback()
2085 id_priv->id.port_num = p; in cma_bind_loopback()
2118 if (id_priv->id.event_handler(&id_priv->id, &event)) { in addr_handler()
2122 rdma_destroy_id(&id_priv->id); in addr_handler()
2146 rdma_addr_get_sgid(&id_priv->id.route.addr.dev_addr, &gid); in cma_resolve_loopback()
2147 rdma_addr_set_dgid(&id_priv->id.route.addr.dev_addr, &gid); in cma_resolve_loopback()
2149 work->id = id_priv; in cma_resolve_loopback()
2176 rdma_addr_set_dgid(&id_priv->id.route.addr.dev_addr, (union ib_gid *) in cma_resolve_ib_addr()
2177 &(((struct sockaddr_ib *) &id_priv->id.route.addr.dst_addr)->sib_addr)); in cma_resolve_ib_addr()
2179 work->id = id_priv; in cma_resolve_ib_addr()
2191 static int cma_bind_addr(struct rdma_cm_id *id, struct sockaddr *src_addr, in cma_bind_addr() argument
2195 src_addr = (struct sockaddr *) &id->route.addr.src_addr; in cma_bind_addr()
2205 return rdma_bind_addr(id, src_addr); in cma_bind_addr()
2208 int rdma_resolve_addr(struct rdma_cm_id *id, struct sockaddr *src_addr, in rdma_resolve_addr() argument
2214 id_priv = container_of(id, struct rdma_id_private, id); in rdma_resolve_addr()
2216 ret = cma_bind_addr(id, src_addr, dst_addr); in rdma_resolve_addr()
2236 dst_addr, &id->route.addr.dev_addr, in rdma_resolve_addr()
2251 int rdma_set_reuseaddr(struct rdma_cm_id *id, int reuse) in rdma_set_reuseaddr() argument
2257 id_priv = container_of(id, struct rdma_id_private, id); in rdma_set_reuseaddr()
2270 int rdma_set_afonly(struct rdma_cm_id *id, int afonly) in rdma_set_afonly() argument
2276 id_priv = container_of(id, struct rdma_id_private, id); in rdma_set_afonly()
2444 switch (id_priv->id.ps) { in cma_select_inet_ps()
2468 if ((id_priv->id.ps == RDMA_PS_IB) && (sid == (RDMA_IB_IP_PS_IB & mask))) { in cma_select_ib_ps()
2471 } else if (((id_priv->id.ps == RDMA_PS_IB) || (id_priv->id.ps == RDMA_PS_TCP)) && in cma_select_ib_ps()
2475 } else if (((id_priv->id.ps == RDMA_PS_IB) || (id_priv->id.ps == RDMA_PS_UDP)) && in cma_select_ib_ps()
2533 int rdma_listen(struct rdma_cm_id *id, int backlog) in rdma_listen() argument
2538 id_priv = container_of(id, struct rdma_id_private, id); in rdma_listen()
2540 id->route.addr.src_addr.ss_family = AF_INET; in rdma_listen()
2541 ret = rdma_bind_addr(id, cma_src_addr(id_priv)); in rdma_listen()
2556 if (id->device) { in rdma_listen()
2557 switch (rdma_node_get_transport(id->device->node_type)) { in rdma_listen()
2583 int rdma_bind_addr(struct rdma_cm_id *id, struct sockaddr *addr) in rdma_bind_addr() argument
2592 id_priv = container_of(id, struct rdma_id_private, id); in rdma_bind_addr()
2596 ret = cma_check_linklocal(&id->route.addr.dev_addr, addr); in rdma_bind_addr()
2602 ret = cma_translate_addr(addr, &id->route.addr.dev_addr); in rdma_bind_addr()
2694 ib_init_ah_from_path(id_priv->id.device, id_priv->id.port_num, in cma_sidr_rep_handler()
2695 id_priv->id.route.path_rec, in cma_sidr_rep_handler()
2708 ret = id_priv->id.event_handler(&id_priv->id, &event); in cma_sidr_rep_handler()
2714 rdma_destroy_id(&id_priv->id); in cma_sidr_rep_handler()
2726 struct ib_cm_id *id; in cma_resolve_ib_udp() local
2755 id = ib_create_cm_id(id_priv->id.device, cma_sidr_rep_handler, in cma_resolve_ib_udp()
2757 if (IS_ERR(id)) { in cma_resolve_ib_udp()
2758 ret = PTR_ERR(id); in cma_resolve_ib_udp()
2761 id_priv->cm_id.ib = id; in cma_resolve_ib_udp()
2763 req.path = id_priv->id.route.path_rec; in cma_resolve_ib_udp()
2764 req.service_id = rdma_get_service_id(&id_priv->id, cma_dst_addr(id_priv)); in cma_resolve_ib_udp()
2784 struct ib_cm_id *id; in cma_connect_ib() local
2805 id = ib_create_cm_id(id_priv->id.device, cma_ib_handler, id_priv); in cma_connect_ib()
2806 if (IS_ERR(id)) { in cma_connect_ib()
2807 ret = PTR_ERR(id); in cma_connect_ib()
2810 id_priv->cm_id.ib = id; in cma_connect_ib()
2812 route = &id_priv->id.route; in cma_connect_ib()
2824 req.service_id = rdma_get_service_id(&id_priv->id, cma_dst_addr(id_priv)); in cma_connect_ib()
2826 req.qp_type = id_priv->id.qp_type; in cma_connect_ib()
2840 if (ret && !IS_ERR(id)) { in cma_connect_ib()
2841 ib_destroy_cm_id(id); in cma_connect_ib()
2856 cm_id = iw_create_cm_id(id_priv->id.device, cma_iw_handler, id_priv); in cma_connect_iw()
2876 iw_param.qpn = id_priv->id.qp ? id_priv->qp_num : conn_param->qp_num; in cma_connect_iw()
2890 int rdma_connect(struct rdma_cm_id *id, struct rdma_conn_param *conn_param) in rdma_connect() argument
2895 id_priv = container_of(id, struct rdma_id_private, id); in rdma_connect()
2899 if (!id->qp) { in rdma_connect()
2904 switch (rdma_node_get_transport(id->device->node_type)) { in rdma_connect()
2906 if (id->qp_type == IB_QPT_UD) in rdma_connect()
2973 if (id_priv->id.qp) { in cma_accept_iw()
3003 int rdma_accept(struct rdma_cm_id *id, struct rdma_conn_param *conn_param) in rdma_accept() argument
3008 id_priv = container_of(id, struct rdma_id_private, id); in rdma_accept()
3015 if (!id->qp && conn_param) { in rdma_accept()
3020 switch (rdma_node_get_transport(id->device->node_type)) { in rdma_accept()
3022 if (id->qp_type == IB_QPT_UD) { in rdma_accept()
3052 rdma_reject(id, NULL, 0); in rdma_accept()
3057 int rdma_notify(struct rdma_cm_id *id, enum ib_event_type event) in rdma_notify() argument
3062 id_priv = container_of(id, struct rdma_id_private, id); in rdma_notify()
3066 switch (id->device->node_type) { in rdma_notify()
3078 int rdma_reject(struct rdma_cm_id *id, const void *private_data, in rdma_reject() argument
3084 id_priv = container_of(id, struct rdma_id_private, id); in rdma_reject()
3088 switch (rdma_node_get_transport(id->device->node_type)) { in rdma_reject()
3090 if (id->qp_type == IB_QPT_UD) in rdma_reject()
3110 int rdma_disconnect(struct rdma_cm_id *id) in rdma_disconnect() argument
3115 id_priv = container_of(id, struct rdma_id_private, id); in rdma_disconnect()
3119 switch (rdma_node_get_transport(id->device->node_type)) { in rdma_disconnect()
3155 if (!status && id_priv->id.qp) in cma_ib_mc_handler()
3156 status = ib_attach_mcast(id_priv->id.qp, &multicast->rec.mgid, in cma_ib_mc_handler()
3165 ib_init_ah_from_mcmember(id_priv->id.device, in cma_ib_mc_handler()
3166 id_priv->id.port_num, &multicast->rec, in cma_ib_mc_handler()
3173 ret = id_priv->id.event_handler(&id_priv->id, &event); in cma_ib_mc_handler()
3177 rdma_destroy_id(&id_priv->id); in cma_ib_mc_handler()
3189 struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr; in cma_set_mgid()
3204 if (id_priv->id.ps == RDMA_PS_UDP) in cma_set_mgid()
3209 if (id_priv->id.ps == RDMA_PS_UDP) in cma_set_mgid()
3219 struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr; in cma_join_ib_multicast()
3224 ret = ib_sa_get_mcmember_rec(id_priv->id.device, id_priv->id.port_num, in cma_join_ib_multicast()
3245 if (id_priv->id.ps == RDMA_PS_IPOIB) in cma_join_ib_multicast()
3252 mc->multicast.ib = ib_sa_join_multicast(&sa_client, id_priv->id.device, in cma_join_ib_multicast()
3253 id_priv->id.port_num, &rec, in cma_join_ib_multicast()
3301 struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr; in cma_iboe_join_multicast()
3322 if (id_priv->id.ps == RDMA_PS_UDP) in cma_iboe_join_multicast()
3339 rdma_ip2gid((struct sockaddr *)&id_priv->id.route.addr.src_addr, in cma_iboe_join_multicast()
3341 work->id = id_priv; in cma_iboe_join_multicast()
3356 int rdma_join_multicast(struct rdma_cm_id *id, struct sockaddr *addr, in rdma_join_multicast() argument
3363 id_priv = container_of(id, struct rdma_id_private, id); in rdma_join_multicast()
3380 switch (rdma_node_get_transport(id->device->node_type)) { in rdma_join_multicast()
3382 switch (rdma_port_get_link_layer(id->device, id->port_num)) { in rdma_join_multicast()
3409 void rdma_leave_multicast(struct rdma_cm_id *id, struct sockaddr *addr) in rdma_leave_multicast() argument
3414 id_priv = container_of(id, struct rdma_id_private, id); in rdma_leave_multicast()
3421 if (id->qp) in rdma_leave_multicast()
3422 ib_detach_mcast(id->qp, in rdma_leave_multicast()
3426 switch (rdma_port_get_link_layer(id->device, id->port_num)) { in rdma_leave_multicast()
3450 dev_addr = &id_priv->id.route.addr.dev_addr; in cma_netdev_change()
3455 ndev->name, &id_priv->id); in cma_netdev_change()
3461 work->id = id_priv; in cma_netdev_change()
3547 ret = id_priv->id.event_handler(&id_priv->id, &event); in cma_remove_id_dev()
3571 rdma_destroy_id(&id_priv->id); in cma_process_remove()
3602 struct rdma_cm_id *id = NULL; in cma_get_id_stats() local
3633 id = &id_priv->id; in cma_get_id_stats()
3634 id_stats->node_type = id->route.addr.dev_addr.dev_type; in cma_get_id_stats()
3635 id_stats->port_num = id->port_num; in cma_get_id_stats()
3637 id->route.addr.dev_addr.bound_dev_if; in cma_get_id_stats()
3651 id_stats->port_space = id->ps; in cma_get_id_stats()
3654 id_stats->qp_type = id->qp_type; in cma_get_id_stats()