Lines Matching full:id
108 struct rdma_cm_id id; member
157 struct rdma_id_private *id; member
165 struct rdma_id_private *id; member
171 struct rdma_id_private *id; member
277 id_priv->id.device = cma_dev->device; in cma_attach_to_dev()
278 id_priv->id.route.addr.dev_addr.transport = in cma_attach_to_dev()
314 switch (id_priv->id.ps) { in cma_set_qkey()
319 ib_addr_get_mgid(&id_priv->id.route.addr.dev_addr, &rec.mgid); in cma_set_qkey()
320 ret = ib_sa_get_mcmember_rec(id_priv->id.device, in cma_set_qkey()
321 id_priv->id.port_num, &rec.mgid, in cma_set_qkey()
356 struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr; in cma_acquire_dev()
365 id_priv->id.ps == RDMA_PS_IPOIB) in cma_acquire_dev()
382 id_priv->id.port_num = port; in cma_acquire_dev()
427 id_priv->id.context = context; in rdma_create_id()
428 id_priv->id.event_handler = event_handler; in rdma_create_id()
429 id_priv->id.ps = ps; in rdma_create_id()
430 id_priv->id.qp_type = qp_type; in rdma_create_id()
440 return &id_priv->id; in rdma_create_id()
450 ret = rdma_init_qp_attr(&id_priv->id, &qp_attr, &qp_attr_mask); in cma_init_ud_qp()
476 ret = rdma_init_qp_attr(&id_priv->id, &qp_attr, &qp_attr_mask); in cma_init_conn_qp()
483 int rdma_create_qp(struct rdma_cm_id *id, struct ib_pd *pd, in rdma_create_qp() argument
490 id_priv = container_of(id, struct rdma_id_private, id); in rdma_create_qp()
491 if (id->device != pd->device) in rdma_create_qp()
498 if (id->qp_type == IB_QPT_UD) in rdma_create_qp()
505 id->qp = qp; in rdma_create_qp()
515 void rdma_destroy_qp(struct rdma_cm_id *id) in rdma_destroy_qp() argument
519 id_priv = container_of(id, struct rdma_id_private, id); in rdma_destroy_qp()
521 ib_destroy_qp(id_priv->id.qp); in rdma_destroy_qp()
522 id_priv->id.qp = NULL; in rdma_destroy_qp()
534 if (!id_priv->id.qp) { in cma_modify_qp_rtr()
541 ret = rdma_init_qp_attr(&id_priv->id, &qp_attr, &qp_attr_mask); in cma_modify_qp_rtr()
545 ret = ib_modify_qp(id_priv->id.qp, &qp_attr, qp_attr_mask); in cma_modify_qp_rtr()
550 ret = rdma_init_qp_attr(&id_priv->id, &qp_attr, &qp_attr_mask); in cma_modify_qp_rtr()
556 ret = ib_modify_qp(id_priv->id.qp, &qp_attr, qp_attr_mask); in cma_modify_qp_rtr()
569 if (!id_priv->id.qp) { in cma_modify_qp_rts()
575 ret = rdma_init_qp_attr(&id_priv->id, &qp_attr, &qp_attr_mask); in cma_modify_qp_rts()
581 ret = ib_modify_qp(id_priv->id.qp, &qp_attr, qp_attr_mask); in cma_modify_qp_rts()
593 if (!id_priv->id.qp) { in cma_modify_qp_err()
599 ret = ib_modify_qp(id_priv->id.qp, &qp_attr, IB_QP_STATE); in cma_modify_qp_err()
608 struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr; in cma_ib_init_qp_attr()
612 if (rdma_port_get_link_layer(id_priv->id.device, id_priv->id.port_num) == in cma_ib_init_qp_attr()
618 ret = ib_find_cached_pkey(id_priv->id.device, id_priv->id.port_num, in cma_ib_init_qp_attr()
623 qp_attr->port_num = id_priv->id.port_num; in cma_ib_init_qp_attr()
626 if (id_priv->id.qp_type == IB_QPT_UD) { in cma_ib_init_qp_attr()
640 int rdma_init_qp_attr(struct rdma_cm_id *id, struct ib_qp_attr *qp_attr, in rdma_init_qp_attr() argument
646 id_priv = container_of(id, struct rdma_id_private, id); in rdma_init_qp_attr()
647 switch (rdma_node_get_transport(id_priv->id.device->node_type)) { in rdma_init_qp_attr()
649 if (!id_priv->cm_id.ib || (id_priv->id.qp_type == IB_QPT_UD)) in rdma_init_qp_attr()
812 switch (rdma_port_get_link_layer(id_priv->id.device, id_priv->id.port_num)) { in cma_cancel_route()
841 rdma_destroy_id(&dev_id_priv->id); in cma_cancel_listens()
852 rdma_addr_cancel(&id_priv->id.route.addr.dev_addr); in cma_cancel_operation()
858 if (cma_any_addr((struct sockaddr *) &id_priv->id.route.addr.src_addr) in cma_cancel_operation()
891 switch (rdma_port_get_link_layer(id_priv->cma_dev->device, id_priv->id.port_num)) { in cma_leave_mc_groups()
905 void rdma_destroy_id(struct rdma_cm_id *id) in rdma_destroy_id() argument
910 id_priv = container_of(id, struct rdma_id_private, id); in rdma_destroy_id()
922 switch (rdma_node_get_transport(id_priv->id.device->node_type)) { in rdma_destroy_id()
943 cma_deref_id(id_priv->id.context); in rdma_destroy_id()
945 kfree(id_priv->id.route.path_rec); in rdma_destroy_id()
976 if (id_priv->id.ps == RDMA_PS_SDP && in cma_verify_rep()
1021 else if (id_priv->id.qp && id_priv->id.ps != RDMA_PS_SDP) { in cma_ib_handler()
1062 ret = id_priv->id.event_handler(&id_priv->id, &event); in cma_ib_handler()
1064 /* Destroy the CM ID by returning a non-zero value. */ in cma_ib_handler()
1068 rdma_destroy_id(&id_priv->id); in cma_ib_handler()
1080 struct rdma_cm_id *id; in cma_new_conn_id() local
1091 id = rdma_create_id(listen_id->event_handler, listen_id->context, in cma_new_conn_id()
1093 if (IS_ERR(id)) in cma_new_conn_id()
1096 cma_save_net_info(&id->route.addr, &listen_id->route.addr, in cma_new_conn_id()
1099 rt = &id->route; in cma_new_conn_id()
1122 id_priv = container_of(id, struct rdma_id_private, id); in cma_new_conn_id()
1127 rdma_destroy_id(id); in cma_new_conn_id()
1135 struct rdma_cm_id *id; in cma_new_udp_id() local
1141 id = rdma_create_id(listen_id->event_handler, listen_id->context, in cma_new_udp_id()
1143 if (IS_ERR(id)) in cma_new_udp_id()
1151 cma_save_net_info(&id->route.addr, &listen_id->route.addr, in cma_new_udp_id()
1154 if (!cma_any_addr((struct sockaddr *) &id->route.addr.src_addr)) { in cma_new_udp_id()
1155 ret = rdma_translate_ip((struct sockaddr *) &id->route.addr.src_addr, in cma_new_udp_id()
1156 &id->route.addr.dev_addr); in cma_new_udp_id()
1161 id_priv = container_of(id, struct rdma_id_private, id); in cma_new_udp_id()
1165 rdma_destroy_id(id); in cma_new_udp_id()
1184 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
1187 (ib_event->param.req_rcvd.qp_type == id->qp_type)) || in cma_check_req_qp_type()
1189 (id->qp_type == IB_QPT_UD)) || in cma_check_req_qp_type()
1190 (!id->qp_type)); in cma_check_req_qp_type()
1200 if (!cma_check_req_qp_type(&listen_id->id, ib_event)) in cma_req_handler()
1207 offset = cma_user_data_offset(listen_id->id.ps); in cma_req_handler()
1210 conn_id = cma_new_udp_id(&listen_id->id, ib_event); in cma_req_handler()
1215 conn_id = cma_new_conn_id(&listen_id->id, ib_event); in cma_req_handler()
1238 ret = conn_id->id.event_handler(&conn_id->id, &event); in cma_req_handler()
1245 if (cma_comp(conn_id, RDMA_CM_CONNECT) && (conn_id->id.qp_type != IB_QPT_UD)) in cma_req_handler()
1254 /* Destroy the CM ID by returning a non-zero value. */ in cma_req_handler()
1260 rdma_destroy_id(&conn_id->id); in cma_req_handler()
1338 sin = (struct sockaddr_in *) &id_priv->id.route.addr.src_addr; in cma_iw_handler()
1340 sin = (struct sockaddr_in *) &id_priv->id.route.addr.dst_addr; in cma_iw_handler()
1372 ret = id_priv->id.event_handler(&id_priv->id, &event); in cma_iw_handler()
1374 /* Destroy the CM ID by returning a non-zero value. */ in cma_iw_handler()
1378 rdma_destroy_id(&id_priv->id); in cma_iw_handler()
1401 /* Create a new RDMA id for the new IW CM ID */ in iw_conn_req_handler()
1402 new_cm_id = rdma_create_id(listen_id->id.event_handler, in iw_conn_req_handler()
1403 listen_id->id.context, in iw_conn_req_handler()
1409 conn_id = container_of(new_cm_id, struct rdma_id_private, id); in iw_conn_req_handler()
1420 ret = rdma_copy_addr(&conn_id->id.route.addr.dev_addr, dev, NULL); in iw_conn_req_handler()
1443 ret = ib_query_device(conn_id->id.device, &attr); in iw_conn_req_handler()
1462 ret = conn_id->id.event_handler(&conn_id->id, &event); in iw_conn_req_handler()
1464 /* User wants to destroy the CM ID */ in iw_conn_req_handler()
1469 rdma_destroy_id(&conn_id->id); in iw_conn_req_handler()
1487 struct ib_cm_id *id; in cma_ib_listen() local
1491 id = ib_create_cm_id(id_priv->id.device, cma_req_handler, id_priv); in cma_ib_listen()
1492 if (IS_ERR(id)) in cma_ib_listen()
1493 return PTR_ERR(id); in cma_ib_listen()
1495 id_priv->cm_id.ib = id; in cma_ib_listen()
1497 addr = (struct sockaddr *) &id_priv->id.route.addr.src_addr; in cma_ib_listen()
1498 svc_id = cma_get_service_id(id_priv->id.ps, addr); in cma_ib_listen()
1502 cma_set_compare_data(id_priv->id.ps, addr, &compare_data); in cma_ib_listen()
1518 struct iw_cm_id *id; in cma_iw_listen() local
1520 id = iw_create_cm_id(id_priv->id.device, in cma_iw_listen()
1523 if (IS_ERR(id)) in cma_iw_listen()
1524 return PTR_ERR(id); in cma_iw_listen()
1526 id_priv->cm_id.iw = id; in cma_iw_listen()
1528 sin = (struct sockaddr_in *) &id_priv->id.route.addr.src_addr; in cma_iw_listen()
1541 static int cma_listen_handler(struct rdma_cm_id *id, in cma_listen_handler() argument
1544 struct rdma_id_private *id_priv = id->context; in cma_listen_handler()
1546 id->context = id_priv->id.context; in cma_listen_handler()
1547 id->event_handler = id_priv->id.event_handler; in cma_listen_handler()
1548 return id_priv->id.event_handler(id, event); in cma_listen_handler()
1555 struct rdma_cm_id *id; in cma_listen_on_dev() local
1558 id = rdma_create_id(cma_listen_handler, id_priv, id_priv->id.ps, in cma_listen_on_dev()
1559 id_priv->id.qp_type); in cma_listen_on_dev()
1560 if (IS_ERR(id)) in cma_listen_on_dev()
1563 dev_id_priv = container_of(id, struct rdma_id_private, id); in cma_listen_on_dev()
1566 memcpy(&id->route.addr.src_addr, &id_priv->id.route.addr.src_addr, in cma_listen_on_dev()
1567 ip_addr_size((struct sockaddr *) &id_priv->id.route.addr.src_addr)); in cma_listen_on_dev()
1574 ret = rdma_listen(id, id_priv->backlog); in cma_listen_on_dev()
1591 void rdma_set_service_type(struct rdma_cm_id *id, int tos) in rdma_set_service_type() argument
1595 id_priv = container_of(id, struct rdma_id_private, id); in rdma_set_service_type()
1606 route = &work->id->id.route; in cma_query_handler()
1624 struct rdma_addr *addr = &id_priv->id.route.addr; in cma_query_ib_route()
1635 path_rec.service_id = cma_get_service_id(id_priv->id.ps, in cma_query_ib_route()
1651 id_priv->query_id = ib_sa_path_rec_get(&sa_client, id_priv->id.device, in cma_query_ib_route()
1652 id_priv->id.port_num, &path_rec, in cma_query_ib_route()
1663 struct rdma_id_private *id_priv = work->id; in cma_work_handler()
1670 if (id_priv->id.event_handler(&id_priv->id, &work->event)) { in cma_work_handler()
1678 rdma_destroy_id(&id_priv->id); in cma_work_handler()
1685 struct rdma_id_private *id_priv = work->id; in cma_ndev_work_handler()
1693 if (id_priv->id.event_handler(&id_priv->id, &work->event)) { in cma_ndev_work_handler()
1702 rdma_destroy_id(&id_priv->id); in cma_ndev_work_handler()
1708 struct rdma_route *route = &id_priv->id.route; in cma_resolve_ib_route()
1716 work->id = id_priv; in cma_resolve_ib_route()
1741 int rdma_set_ib_paths(struct rdma_cm_id *id, in rdma_set_ib_paths() argument
1747 id_priv = container_of(id, struct rdma_id_private, id); in rdma_set_ib_paths()
1752 id->route.path_rec = kmemdup(path_rec, sizeof *path_rec * num_paths, in rdma_set_ib_paths()
1754 if (!id->route.path_rec) { in rdma_set_ib_paths()
1759 id->route.num_paths = num_paths; in rdma_set_ib_paths()
1775 work->id = id_priv; in cma_resolve_iw_route()
1786 struct rdma_route *route = &id_priv->id.route; in cma_resolve_iboe_route()
1802 work->id = id_priv; in cma_resolve_iboe_route()
1859 int rdma_resolve_route(struct rdma_cm_id *id, int timeout_ms) in rdma_resolve_route() argument
1864 id_priv = container_of(id, struct rdma_id_private, id); in rdma_resolve_route()
1869 switch (rdma_node_get_transport(id->device->node_type)) { in rdma_resolve_route()
1871 switch (rdma_port_get_link_layer(id->device, id->port_num)) { in rdma_resolve_route()
1932 id_priv->id.route.addr.dev_addr.dev_type = in cma_bind_loopback()
1936 rdma_addr_set_sgid(&id_priv->id.route.addr.dev_addr, &gid); in cma_bind_loopback()
1937 ib_addr_set_pkey(&id_priv->id.route.addr.dev_addr, pkey); in cma_bind_loopback()
1938 id_priv->id.port_num = p; in cma_bind_loopback()
1967 memcpy(&id_priv->id.route.addr.src_addr, src_addr, in addr_handler()
1972 if (id_priv->id.event_handler(&id_priv->id, &event)) { in addr_handler()
1976 rdma_destroy_id(&id_priv->id); in addr_handler()
2001 rdma_addr_get_sgid(&id_priv->id.route.addr.dev_addr, &gid); in cma_resolve_loopback()
2002 rdma_addr_set_dgid(&id_priv->id.route.addr.dev_addr, &gid); in cma_resolve_loopback()
2004 src = (struct sockaddr *) &id_priv->id.route.addr.src_addr; in cma_resolve_loopback()
2006 dst = (struct sockaddr *) &id_priv->id.route.addr.dst_addr; in cma_resolve_loopback()
2016 work->id = id_priv; in cma_resolve_loopback()
2028 static int cma_bind_addr(struct rdma_cm_id *id, struct sockaddr *src_addr, in cma_bind_addr() argument
2032 src_addr = (struct sockaddr *) &id->route.addr.src_addr; in cma_bind_addr()
2038 return rdma_bind_addr(id, src_addr); in cma_bind_addr()
2041 int rdma_resolve_addr(struct rdma_cm_id *id, struct sockaddr *src_addr, in rdma_resolve_addr() argument
2047 id_priv = container_of(id, struct rdma_id_private, id); in rdma_resolve_addr()
2049 ret = cma_bind_addr(id, src_addr, dst_addr); in rdma_resolve_addr()
2058 memcpy(&id->route.addr.dst_addr, dst_addr, ip_addr_size(dst_addr)); in rdma_resolve_addr()
2062 ret = rdma_resolve_ip(&addr_client, (struct sockaddr *) &id->route.addr.src_addr, in rdma_resolve_addr()
2063 dst_addr, &id->route.addr.dev_addr, in rdma_resolve_addr()
2076 int rdma_set_reuseaddr(struct rdma_cm_id *id, int reuse) in rdma_set_reuseaddr() argument
2082 id_priv = container_of(id, struct rdma_id_private, id); in rdma_set_reuseaddr()
2100 sin = (struct sockaddr_in *) &id_priv->id.route.addr.src_addr; in cma_bind_port()
2183 addr = (struct sockaddr *) &id_priv->id.route.addr.src_addr; in cma_check_port()
2193 cur_addr = (struct sockaddr *) &cur_id->id.route.addr.src_addr; in cma_check_port()
2210 snum = ntohs(cma_port((struct sockaddr *) &id_priv->id.route.addr.src_addr)); in cma_use_port()
2242 switch (id_priv->id.ps) { in cma_get_port()
2263 if (cma_any_port((struct sockaddr *) &id_priv->id.route.addr.src_addr)) in cma_get_port()
2291 int rdma_listen(struct rdma_cm_id *id, int backlog) in rdma_listen() argument
2296 id_priv = container_of(id, struct rdma_id_private, id); in rdma_listen()
2298 ((struct sockaddr *) &id->route.addr.src_addr)->sa_family = AF_INET; in rdma_listen()
2299 ret = rdma_bind_addr(id, (struct sockaddr *) &id->route.addr.src_addr); in rdma_listen()
2314 if (id->device) { in rdma_listen()
2315 switch (rdma_node_get_transport(id->device->node_type)) { in rdma_listen()
2341 int rdma_bind_addr(struct rdma_cm_id *id, struct sockaddr *addr) in rdma_bind_addr() argument
2349 id_priv = container_of(id, struct rdma_id_private, id); in rdma_bind_addr()
2353 ret = cma_check_linklocal(&id->route.addr.dev_addr, addr); in rdma_bind_addr()
2358 ret = rdma_translate_ip(addr, &id->route.addr.dev_addr); in rdma_bind_addr()
2367 memcpy(&id->route.addr.src_addr, addr, ip_addr_size(addr)); in rdma_bind_addr()
2478 ib_init_ah_from_path(id_priv->id.device, id_priv->id.port_num, in cma_sidr_rep_handler()
2479 id_priv->id.route.path_rec, in cma_sidr_rep_handler()
2492 ret = id_priv->id.event_handler(&id_priv->id, &event); in cma_sidr_rep_handler()
2494 /* Destroy the CM ID by returning a non-zero value. */ in cma_sidr_rep_handler()
2498 rdma_destroy_id(&id_priv->id); in cma_sidr_rep_handler()
2511 struct ib_cm_id *id; in cma_resolve_ib_udp() local
2527 route = &id_priv->id.route; in cma_resolve_ib_udp()
2528 ret = cma_format_hdr((void *) req.private_data, id_priv->id.ps, route); in cma_resolve_ib_udp()
2532 id = ib_create_cm_id(id_priv->id.device, cma_sidr_rep_handler, in cma_resolve_ib_udp()
2534 if (IS_ERR(id)) { in cma_resolve_ib_udp()
2535 ret = PTR_ERR(id); in cma_resolve_ib_udp()
2538 id_priv->cm_id.ib = id; in cma_resolve_ib_udp()
2541 req.service_id = cma_get_service_id(id_priv->id.ps, in cma_resolve_ib_udp()
2562 struct ib_cm_id *id; in cma_connect_ib() local
2566 offset = cma_user_data_offset(id_priv->id.ps); in cma_connect_ib()
2579 id = ib_create_cm_id(id_priv->id.device, cma_ib_handler, id_priv); in cma_connect_ib()
2580 if (IS_ERR(id)) { in cma_connect_ib()
2581 ret = PTR_ERR(id); in cma_connect_ib()
2584 id_priv->cm_id.ib = id; in cma_connect_ib()
2586 route = &id_priv->id.route; in cma_connect_ib()
2587 ret = cma_format_hdr(private_data, id_priv->id.ps, route); in cma_connect_ib()
2596 req.service_id = cma_get_service_id(id_priv->id.ps, in cma_connect_ib()
2599 req.qp_type = id_priv->id.qp_type; in cma_connect_ib()
2613 if (ret && !IS_ERR(id)) { in cma_connect_ib()
2614 ib_destroy_cm_id(id); in cma_connect_ib()
2630 cm_id = iw_create_cm_id(id_priv->id.device, cma_iw_handler, id_priv); in cma_connect_iw()
2636 sin = (struct sockaddr_in*) &id_priv->id.route.addr.src_addr; in cma_connect_iw()
2639 sin = (struct sockaddr_in*) &id_priv->id.route.addr.dst_addr; in cma_connect_iw()
2651 iw_param.qpn = id_priv->id.qp ? id_priv->qp_num : conn_param->qp_num; in cma_connect_iw()
2665 int rdma_connect(struct rdma_cm_id *id, struct rdma_conn_param *conn_param) in rdma_connect() argument
2670 id_priv = container_of(id, struct rdma_id_private, id); in rdma_connect()
2674 if (!id->qp) { in rdma_connect()
2679 switch (rdma_node_get_transport(id->device->node_type)) { in rdma_connect()
2681 if (id->qp_type == IB_QPT_UD) in rdma_connect()
2748 if (id_priv->id.qp) { in cma_accept_iw()
2778 int rdma_accept(struct rdma_cm_id *id, struct rdma_conn_param *conn_param) in rdma_accept() argument
2783 id_priv = container_of(id, struct rdma_id_private, id); in rdma_accept()
2790 if (!id->qp && conn_param) { in rdma_accept()
2795 switch (rdma_node_get_transport(id->device->node_type)) { in rdma_accept()
2797 if (id->qp_type == IB_QPT_UD) { in rdma_accept()
2826 rdma_reject(id, NULL, 0); in rdma_accept()
2831 int rdma_notify(struct rdma_cm_id *id, enum ib_event_type event) in rdma_notify() argument
2836 id_priv = container_of(id, struct rdma_id_private, id); in rdma_notify()
2840 switch (id->device->node_type) { in rdma_notify()
2852 int rdma_reject(struct rdma_cm_id *id, const void *private_data, in rdma_reject() argument
2858 id_priv = container_of(id, struct rdma_id_private, id); in rdma_reject()
2862 switch (rdma_node_get_transport(id->device->node_type)) { in rdma_reject()
2864 if (id->qp_type == IB_QPT_UD) in rdma_reject()
2884 int rdma_disconnect(struct rdma_cm_id *id) in rdma_disconnect() argument
2889 id_priv = container_of(id, struct rdma_id_private, id); in rdma_disconnect()
2893 switch (rdma_node_get_transport(id->device->node_type)) { in rdma_disconnect()
2927 if (!status && id_priv->id.qp) in cma_ib_mc_handler()
2928 status = ib_attach_mcast(id_priv->id.qp, &multicast->rec.mgid, in cma_ib_mc_handler()
2937 ib_init_ah_from_mcmember(id_priv->id.device, in cma_ib_mc_handler()
2938 id_priv->id.port_num, &multicast->rec, in cma_ib_mc_handler()
2945 ret = id_priv->id.event_handler(&id_priv->id, &event); in cma_ib_mc_handler()
2949 rdma_destroy_id(&id_priv->id); in cma_ib_mc_handler()
2961 struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr; in cma_set_mgid()
2974 if (id_priv->id.ps == RDMA_PS_UDP) in cma_set_mgid()
2979 if (id_priv->id.ps == RDMA_PS_UDP) in cma_set_mgid()
2989 struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr; in cma_join_ib_multicast()
2994 ret = ib_sa_get_mcmember_rec(id_priv->id.device, id_priv->id.port_num, in cma_join_ib_multicast()
3000 if (id_priv->id.ps == RDMA_PS_UDP) in cma_join_ib_multicast()
3012 if (id_priv->id.ps == RDMA_PS_IPOIB) in cma_join_ib_multicast()
3016 mc->multicast.ib = ib_sa_join_multicast(&sa_client, id_priv->id.device, in cma_join_ib_multicast()
3017 id_priv->id.port_num, &rec, in cma_join_ib_multicast()
3068 struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr; in cma_iboe_join_multicast()
3089 if (id_priv->id.ps == RDMA_PS_UDP) in cma_iboe_join_multicast()
3107 work->id = id_priv; in cma_iboe_join_multicast()
3122 int rdma_join_multicast(struct rdma_cm_id *id, struct sockaddr *addr, in rdma_join_multicast() argument
3129 id_priv = container_of(id, struct rdma_id_private, id); in rdma_join_multicast()
3146 switch (rdma_node_get_transport(id->device->node_type)) { in rdma_join_multicast()
3148 switch (rdma_port_get_link_layer(id->device, id->port_num)) { in rdma_join_multicast()
3175 void rdma_leave_multicast(struct rdma_cm_id *id, struct sockaddr *addr) in rdma_leave_multicast() argument
3180 id_priv = container_of(id, struct rdma_id_private, id); in rdma_leave_multicast()
3187 if (id->qp) in rdma_leave_multicast()
3188 ib_detach_mcast(id->qp, in rdma_leave_multicast()
3192 switch (rdma_port_get_link_layer(id->device, id->port_num)) { in rdma_leave_multicast()
3216 dev_addr = &id_priv->id.route.addr.dev_addr; in cma_netdev_change()
3220 printk(KERN_INFO "RDMA CM addr change for ndev %s used by id %p\n", in cma_netdev_change()
3221 ndev->name, &id_priv->id); in cma_netdev_change()
3227 work->id = id_priv; in cma_netdev_change()
3313 ret = id_priv->id.event_handler(&id_priv->id, &event); in cma_remove_id_dev()
3337 rdma_destroy_id(&id_priv->id); in cma_process_remove()
3368 struct rdma_cm_id *id = NULL; in cma_get_id_stats() local
3374 * ID gets its own netlink message. in cma_get_id_stats()
3398 id = &id_priv->id; in cma_get_id_stats()
3399 id_stats->node_type = id->route.addr.dev_addr.dev_type; in cma_get_id_stats()
3400 id_stats->port_num = id->port_num; in cma_get_id_stats()
3402 id->route.addr.dev_addr.bound_dev_if; in cma_get_id_stats()
3404 if (id->route.addr.src_addr.ss_family == AF_INET) { in cma_get_id_stats()
3407 &id->route.addr.src_addr, in cma_get_id_stats()
3413 &id->route.addr.dst_addr, in cma_get_id_stats()
3417 } else if (id->route.addr.src_addr.ss_family == AF_INET6) { in cma_get_id_stats()
3420 &id->route.addr.src_addr, in cma_get_id_stats()
3426 &id->route.addr.dst_addr, in cma_get_id_stats()
3433 id_stats->port_space = id->ps; in cma_get_id_stats()
3436 id_stats->qp_type = id->qp_type; in cma_get_id_stats()