• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/infiniband/core/

Lines Matching refs:id

118 	struct rdma_cm_id	id;
164 struct rdma_id_private *id;
172 struct rdma_id_private *id;
283 id_priv->id.device = cma_dev->device;
308 switch (id_priv->id.ps) {
313 ib_addr_get_mgid(&id_priv->id.route.addr.dev_addr, &rec.mgid);
314 ret = ib_sa_get_mcmember_rec(id_priv->id.device,
315 id_priv->id.port_num, &rec.mgid,
328 struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr;
336 &id_priv->id.port_num, NULL);
364 return (id_priv->id.device && id_priv->cm_id.ib);
377 id_priv->id.context = context;
378 id_priv->id.event_handler = event_handler;
379 id_priv->id.ps = ps;
389 return &id_priv->id;
399 ret = rdma_init_qp_attr(&id_priv->id, &qp_attr, &qp_attr_mask);
425 ret = rdma_init_qp_attr(&id_priv->id, &qp_attr, &qp_attr_mask);
432 int rdma_create_qp(struct rdma_cm_id *id, struct ib_pd *pd,
439 id_priv = container_of(id, struct rdma_id_private, id);
440 if (id->device != pd->device)
447 if (cma_is_ud_ps(id_priv->id.ps))
454 id->qp = qp;
464 void rdma_destroy_qp(struct rdma_cm_id *id)
468 id_priv = container_of(id, struct rdma_id_private, id);
470 ib_destroy_qp(id_priv->id.qp);
471 id_priv->id.qp = NULL;
483 if (!id_priv->id.qp) {
490 ret = rdma_init_qp_attr(&id_priv->id, &qp_attr, &qp_attr_mask);
494 ret = ib_modify_qp(id_priv->id.qp, &qp_attr, qp_attr_mask);
499 ret = rdma_init_qp_attr(&id_priv->id, &qp_attr, &qp_attr_mask);
505 ret = ib_modify_qp(id_priv->id.qp, &qp_attr, qp_attr_mask);
518 if (!id_priv->id.qp) {
524 ret = rdma_init_qp_attr(&id_priv->id, &qp_attr, &qp_attr_mask);
530 ret = ib_modify_qp(id_priv->id.qp, &qp_attr, qp_attr_mask);
542 if (!id_priv->id.qp) {
548 ret = ib_modify_qp(id_priv->id.qp, &qp_attr, IB_QP_STATE);
557 struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr;
560 ret = ib_find_cached_pkey(id_priv->id.device, id_priv->id.port_num,
566 qp_attr->port_num = id_priv->id.port_num;
569 if (cma_is_ud_ps(id_priv->id.ps)) {
583 int rdma_init_qp_attr(struct rdma_cm_id *id, struct ib_qp_attr *qp_attr,
589 id_priv = container_of(id, struct rdma_id_private, id);
590 switch (rdma_node_get_transport(id_priv->id.device->node_type)) {
592 if (!id_priv->cm_id.ib || cma_is_ud_ps(id_priv->id.ps))
740 switch (rdma_node_get_transport(id_priv->id.device->node_type)) {
769 rdma_destroy_id(&dev_id_priv->id);
780 rdma_addr_cancel(&id_priv->id.route.addr.dev_addr);
786 if (cma_any_addr((struct sockaddr *) &id_priv->id.route.addr.src_addr)
824 void rdma_destroy_id(struct rdma_cm_id *id)
829 id_priv = container_of(id, struct rdma_id_private, id);
836 switch (rdma_node_get_transport(id->device->node_type)) {
859 cma_deref_id(id_priv->id.context);
861 kfree(id_priv->id.route.path_rec);
892 if (id_priv->id.ps == RDMA_PS_SDP &&
937 else if (id_priv->id.qp && id_priv->id.ps != RDMA_PS_SDP) {
977 ret = id_priv->id.event_handler(&id_priv->id, &event);
983 rdma_destroy_id(&id_priv->id);
995 struct rdma_cm_id *id;
1006 id = rdma_create_id(listen_id->event_handler, listen_id->context,
1008 if (IS_ERR(id))
1011 cma_save_net_info(&id->route.addr, &listen_id->route.addr,
1014 rt = &id->route;
1037 id_priv = container_of(id, struct rdma_id_private, id);
1042 rdma_destroy_id(id);
1051 struct rdma_cm_id *id;
1057 id = rdma_create_id(listen_id->event_handler, listen_id->context,
1059 if (IS_ERR(id))
1067 cma_save_net_info(&id->route.addr, &listen_id->route.addr,
1070 if (!cma_any_addr((struct sockaddr *) &id->route.addr.src_addr)) {
1071 ret = rdma_translate_ip((struct sockaddr *) &id->route.addr.src_addr,
1072 &id->route.addr.dev_addr);
1077 id_priv = container_of(id, struct rdma_id_private, id);
1081 rdma_destroy_id(id);
1111 offset = cma_user_data_offset(listen_id->id.ps);
1113 if (cma_is_ud_ps(listen_id->id.ps)) {
1114 conn_id = cma_new_udp_id(&listen_id->id, ib_event);
1119 conn_id = cma_new_conn_id(&listen_id->id, ib_event);
1139 ret = conn_id->id.event_handler(&conn_id->id, &event);
1147 !cma_is_ud_ps(conn_id->id.ps))
1160 rdma_destroy_id(&conn_id->id);
1238 sin = (struct sockaddr_in *) &id_priv->id.route.addr.src_addr;
1240 sin = (struct sockaddr_in *) &id_priv->id.route.addr.dst_addr;
1268 ret = id_priv->id.event_handler(&id_priv->id, &event);
1274 rdma_destroy_id(&id_priv->id);
1297 /* Create a new RDMA id for the new IW CM ID */
1298 new_cm_id = rdma_create_id(listen_id->id.event_handler,
1299 listen_id->id.context,
1305 conn_id = container_of(new_cm_id, struct rdma_id_private, id);
1316 ret = rdma_copy_addr(&conn_id->id.route.addr.dev_addr, dev, NULL);
1341 ret = ib_query_device(conn_id->id.device, &attr);
1354 ret = conn_id->id.event_handler(&conn_id->id, &event);
1360 rdma_destroy_id(&conn_id->id);
1380 id_priv->cm_id.ib = ib_create_cm_id(id_priv->id.device, cma_req_handler,
1385 addr = (struct sockaddr *) &id_priv->id.route.addr.src_addr;
1386 svc_id = cma_get_service_id(id_priv->id.ps, addr);
1390 cma_set_compare_data(id_priv->id.ps, addr, &compare_data);
1407 id_priv->cm_id.iw = iw_create_cm_id(id_priv->id.device,
1413 sin = (struct sockaddr_in *) &id_priv->id.route.addr.src_addr;
1426 static int cma_listen_handler(struct rdma_cm_id *id,
1429 struct rdma_id_private *id_priv = id->context;
1431 id->context = id_priv->id.context;
1432 id->event_handler = id_priv->id.event_handler;
1433 return id_priv->id.event_handler(id, event);
1440 struct rdma_cm_id *id;
1443 id = rdma_create_id(cma_listen_handler, id_priv, id_priv->id.ps);
1444 if (IS_ERR(id))
1447 dev_id_priv = container_of(id, struct rdma_id_private, id);
1450 memcpy(&id->route.addr.src_addr, &id_priv->id.route.addr.src_addr,
1451 ip_addr_size((struct sockaddr *) &id_priv->id.route.addr.src_addr));
1458 ret = rdma_listen(id, id_priv->backlog);
1475 int rdma_listen(struct rdma_cm_id *id, int backlog)
1480 id_priv = container_of(id, struct rdma_id_private, id);
1482 ((struct sockaddr *) &id->route.addr.src_addr)->sa_family = AF_INET;
1483 ret = rdma_bind_addr(id, (struct sockaddr *) &id->route.addr.src_addr);
1492 if (id->device) {
1493 switch (rdma_node_get_transport(id->device->node_type)) {
1519 void rdma_set_service_type(struct rdma_cm_id *id, int tos)
1523 id_priv = container_of(id, struct rdma_id_private, id);
1534 route = &work->id->id.route;
1552 struct rdma_addr *addr = &id_priv->id.route.addr;
1563 path_rec.service_id = cma_get_service_id(id_priv->id.ps,
1579 id_priv->query_id = ib_sa_path_rec_get(&sa_client, id_priv->id.device,
1580 id_priv->id.port_num, &path_rec,
1591 struct rdma_id_private *id_priv = work->id;
1598 if (id_priv->id.event_handler(&id_priv->id, &work->event)) {
1606 rdma_destroy_id(&id_priv->id);
1613 struct rdma_id_private *id_priv = work->id;
1621 if (id_priv->id.event_handler(&id_priv->id, &work->event)) {
1630 rdma_destroy_id(&id_priv->id);
1636 struct rdma_route *route = &id_priv->id.route;
1644 work->id = id_priv;
1669 int rdma_set_ib_paths(struct rdma_cm_id *id,
1675 id_priv = container_of(id, struct rdma_id_private, id);
1679 id->route.path_rec = kmemdup(path_rec, sizeof *path_rec * num_paths,
1681 if (!id->route.path_rec) {
1686 id->route.num_paths = num_paths;
1702 work->id = id_priv;
1711 int rdma_resolve_route(struct rdma_cm_id *id, int timeout_ms)
1716 id_priv = container_of(id, struct rdma_id_private, id);
1721 switch (rdma_node_get_transport(id->device->node_type)) {
1775 id_priv->id.route.addr.dev_addr.dev_type =
1779 rdma_addr_set_sgid(&id_priv->id.route.addr.dev_addr, &gid);
1780 ib_addr_set_pkey(&id_priv->id.route.addr.dev_addr, pkey);
1781 id_priv->id.port_num = p;
1817 memcpy(&id_priv->id.route.addr.src_addr, src_addr,
1822 if (id_priv->id.event_handler(&id_priv->id, &event)) {
1826 rdma_destroy_id(&id_priv->id);
1851 rdma_addr_get_sgid(&id_priv->id.route.addr.dev_addr, &gid);
1852 rdma_addr_set_dgid(&id_priv->id.route.addr.dev_addr, &gid);
1854 src = (struct sockaddr *) &id_priv->id.route.addr.src_addr;
1856 dst = (struct sockaddr *) &id_priv->id.route.addr.dst_addr;
1866 work->id = id_priv;
1878 static int cma_bind_addr(struct rdma_cm_id *id, struct sockaddr *src_addr,
1882 src_addr = (struct sockaddr *) &id->route.addr.src_addr;
1888 return rdma_bind_addr(id, src_addr);
1891 int rdma_resolve_addr(struct rdma_cm_id *id, struct sockaddr *src_addr,
1897 id_priv = container_of(id, struct rdma_id_private, id);
1899 ret = cma_bind_addr(id, src_addr, dst_addr);
1908 memcpy(&id->route.addr.dst_addr, dst_addr, ip_addr_size(dst_addr));
1912 ret = rdma_resolve_ip(&addr_client, (struct sockaddr *) &id->route.addr.src_addr,
1913 dst_addr, &id->route.addr.dev_addr,
1931 sin = (struct sockaddr_in *) &id_priv->id.route.addr.src_addr;
2009 sin = (struct sockaddr_in *) &id_priv->id.route.addr.src_addr;
2022 if (cma_any_addr((struct sockaddr *) &id_priv->id.route.addr.src_addr))
2026 if (cma_any_addr((struct sockaddr *) &cur_id->id.route.addr.src_addr))
2029 cur_sin = (struct sockaddr_in *) &cur_id->id.route.addr.src_addr;
2043 switch (id_priv->id.ps) {
2061 if (cma_any_port((struct sockaddr *) &id_priv->id.route.addr.src_addr))
2089 int rdma_bind_addr(struct rdma_cm_id *id, struct sockaddr *addr)
2097 id_priv = container_of(id, struct rdma_id_private, id);
2101 ret = cma_check_linklocal(&id->route.addr.dev_addr, addr);
2106 ret = rdma_translate_ip(addr, &id->route.addr.dev_addr);
2117 memcpy(&id->route.addr.src_addr, addr, ip_addr_size(addr));
2231 ib_init_ah_from_path(id_priv->id.device, id_priv->id.port_num,
2232 id_priv->id.route.path_rec,
2245 ret = id_priv->id.event_handler(&id_priv->id, &event);
2251 rdma_destroy_id(&id_priv->id);
2276 route = &id_priv->id.route;
2277 ret = cma_format_hdr((void *) req.private_data, id_priv->id.ps, route);
2281 id_priv->cm_id.ib = ib_create_cm_id(id_priv->id.device,
2289 req.service_id = cma_get_service_id(id_priv->id.ps,
2313 offset = cma_user_data_offset(id_priv->id.ps);
2323 id_priv->cm_id.ib = ib_create_cm_id(id_priv->id.device, cma_ib_handler,
2330 route = &id_priv->id.route;
2331 ret = cma_format_hdr(private_data, id_priv->id.ps, route);
2340 req.service_id = cma_get_service_id(id_priv->id.ps,
2374 cm_id = iw_create_cm_id(id_priv->id.device, cma_iw_handler, id_priv);
2382 sin = (struct sockaddr_in*) &id_priv->id.route.addr.src_addr;
2385 sin = (struct sockaddr_in*) &id_priv->id.route.addr.dst_addr;
2396 if (id_priv->id.qp)
2409 int rdma_connect(struct rdma_cm_id *id, struct rdma_conn_param *conn_param)
2414 id_priv = container_of(id, struct rdma_id_private, id);
2418 if (!id->qp) {
2423 switch (rdma_node_get_transport(id->device->node_type)) {
2425 if (cma_is_ud_ps(id->ps))
2492 if (id_priv->id.qp) {
2522 int rdma_accept(struct rdma_cm_id *id, struct rdma_conn_param *conn_param)
2527 id_priv = container_of(id, struct rdma_id_private, id);
2531 if (!id->qp && conn_param) {
2536 switch (rdma_node_get_transport(id->device->node_type)) {
2538 if (cma_is_ud_ps(id->ps))
2561 rdma_reject(id, NULL, 0);
2566 int rdma_notify(struct rdma_cm_id *id, enum ib_event_type event)
2571 id_priv = container_of(id, struct rdma_id_private, id);
2575 switch (id->device->node_type) {
2587 int rdma_reject(struct rdma_cm_id *id, const void *private_data,
2593 id_priv = container_of(id, struct rdma_id_private, id);
2597 switch (rdma_node_get_transport(id->device->node_type)) {
2599 if (cma_is_ud_ps(id->ps))
2619 int rdma_disconnect(struct rdma_cm_id *id)
2624 id_priv = container_of(id, struct rdma_id_private, id);
2628 switch (rdma_node_get_transport(id->device->node_type)) {
2662 if (!status && id_priv->id.qp)
2663 status = ib_attach_mcast(id_priv->id.qp, &multicast->rec.mgid,
2672 ib_init_ah_from_mcmember(id_priv->id.device,
2673 id_priv->id.port_num, &multicast->rec,
2680 ret = id_priv->id.event_handler(&id_priv->id, &event);
2684 rdma_destroy_id(&id_priv->id);
2696 struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr;
2709 if (id_priv->id.ps == RDMA_PS_UDP)
2714 if (id_priv->id.ps == RDMA_PS_UDP)
2724 struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr;
2729 ret = ib_sa_get_mcmember_rec(id_priv->id.device, id_priv->id.port_num,
2735 if (id_priv->id.ps == RDMA_PS_UDP)
2747 if (id_priv->id.ps == RDMA_PS_IPOIB)
2751 mc->multicast.ib = ib_sa_join_multicast(&sa_client, id_priv->id.device,
2752 id_priv->id.port_num, &rec,
2761 int rdma_join_multicast(struct rdma_cm_id *id, struct sockaddr *addr,
2768 id_priv = container_of(id, struct rdma_id_private, id);
2785 switch (rdma_node_get_transport(id->device->node_type)) {
2804 void rdma_leave_multicast(struct rdma_cm_id *id, struct sockaddr *addr)
2809 id_priv = container_of(id, struct rdma_id_private, id);
2816 if (id->qp)
2817 ib_detach_mcast(id->qp,
2834 dev_addr = &id_priv->id.route.addr.dev_addr;
2838 printk(KERN_INFO "RDMA CM addr change for ndev %s used by id %p\n",
2839 ndev->name, &id_priv->id);
2845 work->id = id_priv;
2931 ret = id_priv->id.event_handler(&id_priv->id, &event);
2955 rdma_destroy_id(&id_priv->id);