id_priv 155 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv; id_priv 157 drivers/infiniband/core/cma.c id_priv = container_of(id, struct rdma_id_private, id); id_priv 159 drivers/infiniband/core/cma.c return id_priv->cm_id.iw; id_priv 170 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv = id_priv 173 drivers/infiniband/core/cma.c return &id_priv->id; id_priv 362 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv; id_priv 422 drivers/infiniband/core/cma.c static int cma_comp(struct rdma_id_private *id_priv, enum rdma_cm_state comp) id_priv 427 drivers/infiniband/core/cma.c spin_lock_irqsave(&id_priv->lock, flags); id_priv 428 drivers/infiniband/core/cma.c ret = (id_priv->state == comp); id_priv 429 drivers/infiniband/core/cma.c spin_unlock_irqrestore(&id_priv->lock, flags); id_priv 433 drivers/infiniband/core/cma.c static int cma_comp_exch(struct rdma_id_private *id_priv, id_priv 439 drivers/infiniband/core/cma.c spin_lock_irqsave(&id_priv->lock, flags); id_priv 440 drivers/infiniband/core/cma.c if ((ret = (id_priv->state == comp))) id_priv 441 drivers/infiniband/core/cma.c id_priv->state = exch; id_priv 442 drivers/infiniband/core/cma.c spin_unlock_irqrestore(&id_priv->lock, flags); id_priv 446 drivers/infiniband/core/cma.c static enum rdma_cm_state cma_exch(struct rdma_id_private *id_priv, id_priv 452 drivers/infiniband/core/cma.c spin_lock_irqsave(&id_priv->lock, flags); id_priv 453 drivers/infiniband/core/cma.c old = id_priv->state; id_priv 454 drivers/infiniband/core/cma.c id_priv->state = exch; id_priv 455 drivers/infiniband/core/cma.c spin_unlock_irqrestore(&id_priv->lock, flags); id_priv 489 drivers/infiniband/core/cma.c static void _cma_attach_to_dev(struct rdma_id_private *id_priv, id_priv 493 drivers/infiniband/core/cma.c id_priv->cma_dev = cma_dev; id_priv 494 drivers/infiniband/core/cma.c id_priv->id.device = cma_dev->device; id_priv 495 drivers/infiniband/core/cma.c id_priv->id.route.addr.dev_addr.transport = id_priv 497 drivers/infiniband/core/cma.c list_add_tail(&id_priv->list, &cma_dev->id_list); id_priv 498 drivers/infiniband/core/cma.c if (id_priv->res.kern_name) id_priv 499 drivers/infiniband/core/cma.c rdma_restrack_kadd(&id_priv->res); id_priv 501 drivers/infiniband/core/cma.c rdma_restrack_uadd(&id_priv->res); id_priv 504 drivers/infiniband/core/cma.c static void cma_attach_to_dev(struct rdma_id_private *id_priv, id_priv 507 drivers/infiniband/core/cma.c _cma_attach_to_dev(id_priv, cma_dev); id_priv 508 drivers/infiniband/core/cma.c id_priv->gid_type = id_priv 509 drivers/infiniband/core/cma.c cma_dev->default_gid_type[id_priv->id.port_num - id_priv 527 drivers/infiniband/core/cma.c static void cma_release_dev(struct rdma_id_private *id_priv) id_priv 530 drivers/infiniband/core/cma.c list_del(&id_priv->list); id_priv 531 drivers/infiniband/core/cma.c cma_deref_dev(id_priv->cma_dev); id_priv 532 drivers/infiniband/core/cma.c id_priv->cma_dev = NULL; id_priv 536 drivers/infiniband/core/cma.c static inline struct sockaddr *cma_src_addr(struct rdma_id_private *id_priv) id_priv 538 drivers/infiniband/core/cma.c return (struct sockaddr *) &id_priv->id.route.addr.src_addr; id_priv 541 drivers/infiniband/core/cma.c static inline struct sockaddr *cma_dst_addr(struct rdma_id_private *id_priv) id_priv 543 drivers/infiniband/core/cma.c return (struct sockaddr *) &id_priv->id.route.addr.dst_addr; id_priv 546 drivers/infiniband/core/cma.c static inline unsigned short cma_family(struct rdma_id_private *id_priv) id_priv 548 drivers/infiniband/core/cma.c return id_priv->id.route.addr.src_addr.ss_family; id_priv 551 drivers/infiniband/core/cma.c static int cma_set_qkey(struct rdma_id_private *id_priv, u32 qkey) id_priv 556 drivers/infiniband/core/cma.c if (id_priv->qkey) { id_priv 557 drivers/infiniband/core/cma.c if (qkey && id_priv->qkey != qkey) id_priv 563 drivers/infiniband/core/cma.c id_priv->qkey = qkey; id_priv 567 drivers/infiniband/core/cma.c switch (id_priv->id.ps) { id_priv 570 drivers/infiniband/core/cma.c id_priv->qkey = RDMA_UDP_QKEY; id_priv 573 drivers/infiniband/core/cma.c ib_addr_get_mgid(&id_priv->id.route.addr.dev_addr, &rec.mgid); id_priv 574 drivers/infiniband/core/cma.c ret = ib_sa_get_mcmember_rec(id_priv->id.device, id_priv 575 drivers/infiniband/core/cma.c id_priv->id.port_num, &rec.mgid, id_priv 578 drivers/infiniband/core/cma.c id_priv->qkey = be32_to_cpu(rec.qkey); id_priv 611 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv) id_priv 613 drivers/infiniband/core/cma.c struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr; id_priv 619 drivers/infiniband/core/cma.c if (!rdma_dev_access_netns(device, id_priv->id.route.addr.dev_addr.net)) id_priv 642 drivers/infiniband/core/cma.c static void cma_bind_sgid_attr(struct rdma_id_private *id_priv, id_priv 645 drivers/infiniband/core/cma.c WARN_ON(id_priv->id.route.addr.dev_addr.sgid_attr); id_priv 646 drivers/infiniband/core/cma.c id_priv->id.route.addr.dev_addr.sgid_attr = sgid_attr; id_priv 658 drivers/infiniband/core/cma.c static int cma_acquire_dev_by_src_ip(struct rdma_id_private *id_priv) id_priv 660 drivers/infiniband/core/cma.c struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr; id_priv 669 drivers/infiniband/core/cma.c id_priv->id.ps == RDMA_PS_IPOIB) id_priv 672 drivers/infiniband/core/cma.c rdma_ip2gid((struct sockaddr *)&id_priv->id.route.addr.src_addr, id_priv 685 drivers/infiniband/core/cma.c gid_type, gidp, id_priv); id_priv 687 drivers/infiniband/core/cma.c id_priv->id.port_num = port; id_priv 688 drivers/infiniband/core/cma.c cma_bind_sgid_attr(id_priv, sgid_attr); id_priv 689 drivers/infiniband/core/cma.c cma_attach_to_dev(id_priv, cma_dev); id_priv 711 drivers/infiniband/core/cma.c static int cma_ib_acquire_dev(struct rdma_id_private *id_priv, id_priv 715 drivers/infiniband/core/cma.c struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr; id_priv 721 drivers/infiniband/core/cma.c id_priv->id.ps == RDMA_PS_IPOIB) id_priv 725 drivers/infiniband/core/cma.c rdma_ip2gid((struct sockaddr *)&id_priv->id.route.addr.src_addr, id_priv 733 drivers/infiniband/core/cma.c gid_type, &gid, id_priv); id_priv 737 drivers/infiniband/core/cma.c id_priv->id.port_num = req->port; id_priv 738 drivers/infiniband/core/cma.c cma_bind_sgid_attr(id_priv, sgid_attr); id_priv 744 drivers/infiniband/core/cma.c cma_attach_to_dev(id_priv, listen_id_priv->cma_dev); id_priv 749 drivers/infiniband/core/cma.c static int cma_iw_acquire_dev(struct rdma_id_private *id_priv, id_priv 752 drivers/infiniband/core/cma.c struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr; id_priv 761 drivers/infiniband/core/cma.c id_priv->id.ps == RDMA_PS_IPOIB) id_priv 773 drivers/infiniband/core/cma.c gid_type, &gid, id_priv); id_priv 775 drivers/infiniband/core/cma.c id_priv->id.port_num = port; id_priv 776 drivers/infiniband/core/cma.c cma_bind_sgid_attr(id_priv, sgid_attr); id_priv 789 drivers/infiniband/core/cma.c gid_type, &gid, id_priv); id_priv 791 drivers/infiniband/core/cma.c id_priv->id.port_num = port; id_priv 792 drivers/infiniband/core/cma.c cma_bind_sgid_attr(id_priv, sgid_attr); id_priv 801 drivers/infiniband/core/cma.c cma_attach_to_dev(id_priv, cma_dev); id_priv 810 drivers/infiniband/core/cma.c static int cma_resolve_ib_dev(struct rdma_id_private *id_priv) id_priv 821 drivers/infiniband/core/cma.c addr = (struct sockaddr_ib *) cma_dst_addr(id_priv); id_priv 842 drivers/infiniband/core/cma.c id_priv->id.port_num = p; id_priv 851 drivers/infiniband/core/cma.c id_priv->id.port_num = p; id_priv 861 drivers/infiniband/core/cma.c cma_attach_to_dev(id_priv, cma_dev); id_priv 863 drivers/infiniband/core/cma.c addr = (struct sockaddr_ib *)cma_src_addr(id_priv); id_priv 865 drivers/infiniband/core/cma.c cma_translate_ib(addr, &id_priv->id.route.addr.dev_addr); id_priv 869 drivers/infiniband/core/cma.c static void cma_deref_id(struct rdma_id_private *id_priv) id_priv 871 drivers/infiniband/core/cma.c if (atomic_dec_and_test(&id_priv->refcount)) id_priv 872 drivers/infiniband/core/cma.c complete(&id_priv->comp); id_priv 880 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv; id_priv 882 drivers/infiniband/core/cma.c id_priv = kzalloc(sizeof *id_priv, GFP_KERNEL); id_priv 883 drivers/infiniband/core/cma.c if (!id_priv) id_priv 886 drivers/infiniband/core/cma.c rdma_restrack_set_task(&id_priv->res, caller); id_priv 887 drivers/infiniband/core/cma.c id_priv->res.type = RDMA_RESTRACK_CM_ID; id_priv 888 drivers/infiniband/core/cma.c id_priv->state = RDMA_CM_IDLE; id_priv 889 drivers/infiniband/core/cma.c id_priv->id.context = context; id_priv 890 drivers/infiniband/core/cma.c id_priv->id.event_handler = event_handler; id_priv 891 drivers/infiniband/core/cma.c id_priv->id.ps = ps; id_priv 892 drivers/infiniband/core/cma.c id_priv->id.qp_type = qp_type; id_priv 893 drivers/infiniband/core/cma.c id_priv->tos_set = false; id_priv 894 drivers/infiniband/core/cma.c id_priv->timeout_set = false; id_priv 895 drivers/infiniband/core/cma.c id_priv->gid_type = IB_GID_TYPE_IB; id_priv 896 drivers/infiniband/core/cma.c spin_lock_init(&id_priv->lock); id_priv 897 drivers/infiniband/core/cma.c mutex_init(&id_priv->qp_mutex); id_priv 898 drivers/infiniband/core/cma.c init_completion(&id_priv->comp); id_priv 899 drivers/infiniband/core/cma.c atomic_set(&id_priv->refcount, 1); id_priv 900 drivers/infiniband/core/cma.c mutex_init(&id_priv->handler_mutex); id_priv 901 drivers/infiniband/core/cma.c INIT_LIST_HEAD(&id_priv->listen_list); id_priv 902 drivers/infiniband/core/cma.c INIT_LIST_HEAD(&id_priv->mc_list); id_priv 903 drivers/infiniband/core/cma.c get_random_bytes(&id_priv->seq_num, sizeof id_priv->seq_num); id_priv 904 drivers/infiniband/core/cma.c id_priv->id.route.addr.dev_addr.net = get_net(net); id_priv 905 drivers/infiniband/core/cma.c id_priv->seq_num &= 0x00ffffff; id_priv 907 drivers/infiniband/core/cma.c return &id_priv->id; id_priv 911 drivers/infiniband/core/cma.c static int cma_init_ud_qp(struct rdma_id_private *id_priv, struct ib_qp *qp) id_priv 917 drivers/infiniband/core/cma.c ret = rdma_init_qp_attr(&id_priv->id, &qp_attr, &qp_attr_mask); id_priv 937 drivers/infiniband/core/cma.c static int cma_init_conn_qp(struct rdma_id_private *id_priv, struct ib_qp *qp) id_priv 943 drivers/infiniband/core/cma.c ret = rdma_init_qp_attr(&id_priv->id, &qp_attr, &qp_attr_mask); id_priv 953 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv; id_priv 957 drivers/infiniband/core/cma.c id_priv = container_of(id, struct rdma_id_private, id); id_priv 967 drivers/infiniband/core/cma.c ret = cma_init_ud_qp(id_priv, qp); id_priv 969 drivers/infiniband/core/cma.c ret = cma_init_conn_qp(id_priv, qp); id_priv 974 drivers/infiniband/core/cma.c id_priv->qp_num = qp->qp_num; id_priv 975 drivers/infiniband/core/cma.c id_priv->srq = (qp->srq != NULL); id_priv 985 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv; id_priv 987 drivers/infiniband/core/cma.c id_priv = container_of(id, struct rdma_id_private, id); id_priv 988 drivers/infiniband/core/cma.c mutex_lock(&id_priv->qp_mutex); id_priv 989 drivers/infiniband/core/cma.c ib_destroy_qp(id_priv->id.qp); id_priv 990 drivers/infiniband/core/cma.c id_priv->id.qp = NULL; id_priv 991 drivers/infiniband/core/cma.c mutex_unlock(&id_priv->qp_mutex); id_priv 995 drivers/infiniband/core/cma.c static int cma_modify_qp_rtr(struct rdma_id_private *id_priv, id_priv 1001 drivers/infiniband/core/cma.c mutex_lock(&id_priv->qp_mutex); id_priv 1002 drivers/infiniband/core/cma.c if (!id_priv->id.qp) { id_priv 1009 drivers/infiniband/core/cma.c ret = rdma_init_qp_attr(&id_priv->id, &qp_attr, &qp_attr_mask); id_priv 1013 drivers/infiniband/core/cma.c ret = ib_modify_qp(id_priv->id.qp, &qp_attr, qp_attr_mask); id_priv 1018 drivers/infiniband/core/cma.c ret = rdma_init_qp_attr(&id_priv->id, &qp_attr, &qp_attr_mask); id_priv 1022 drivers/infiniband/core/cma.c BUG_ON(id_priv->cma_dev->device != id_priv->id.device); id_priv 1026 drivers/infiniband/core/cma.c ret = ib_modify_qp(id_priv->id.qp, &qp_attr, qp_attr_mask); id_priv 1028 drivers/infiniband/core/cma.c mutex_unlock(&id_priv->qp_mutex); id_priv 1032 drivers/infiniband/core/cma.c static int cma_modify_qp_rts(struct rdma_id_private *id_priv, id_priv 1038 drivers/infiniband/core/cma.c mutex_lock(&id_priv->qp_mutex); id_priv 1039 drivers/infiniband/core/cma.c if (!id_priv->id.qp) { id_priv 1045 drivers/infiniband/core/cma.c ret = rdma_init_qp_attr(&id_priv->id, &qp_attr, &qp_attr_mask); id_priv 1051 drivers/infiniband/core/cma.c ret = ib_modify_qp(id_priv->id.qp, &qp_attr, qp_attr_mask); id_priv 1053 drivers/infiniband/core/cma.c mutex_unlock(&id_priv->qp_mutex); id_priv 1057 drivers/infiniband/core/cma.c static int cma_modify_qp_err(struct rdma_id_private *id_priv) id_priv 1062 drivers/infiniband/core/cma.c mutex_lock(&id_priv->qp_mutex); id_priv 1063 drivers/infiniband/core/cma.c if (!id_priv->id.qp) { id_priv 1069 drivers/infiniband/core/cma.c ret = ib_modify_qp(id_priv->id.qp, &qp_attr, IB_QP_STATE); id_priv 1071 drivers/infiniband/core/cma.c mutex_unlock(&id_priv->qp_mutex); id_priv 1075 drivers/infiniband/core/cma.c static int cma_ib_init_qp_attr(struct rdma_id_private *id_priv, id_priv 1078 drivers/infiniband/core/cma.c struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr; id_priv 1082 drivers/infiniband/core/cma.c if (rdma_cap_eth_ah(id_priv->id.device, id_priv->id.port_num)) id_priv 1087 drivers/infiniband/core/cma.c ret = ib_find_cached_pkey(id_priv->id.device, id_priv->id.port_num, id_priv 1092 drivers/infiniband/core/cma.c qp_attr->port_num = id_priv->id.port_num; id_priv 1095 drivers/infiniband/core/cma.c if (id_priv->id.qp_type == IB_QPT_UD) { id_priv 1096 drivers/infiniband/core/cma.c ret = cma_set_qkey(id_priv, 0); id_priv 1100 drivers/infiniband/core/cma.c qp_attr->qkey = id_priv->qkey; id_priv 1112 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv; id_priv 1115 drivers/infiniband/core/cma.c id_priv = container_of(id, struct rdma_id_private, id); id_priv 1117 drivers/infiniband/core/cma.c if (!id_priv->cm_id.ib || (id_priv->id.qp_type == IB_QPT_UD)) id_priv 1118 drivers/infiniband/core/cma.c ret = cma_ib_init_qp_attr(id_priv, qp_attr, qp_attr_mask); id_priv 1120 drivers/infiniband/core/cma.c ret = ib_cm_init_qp_attr(id_priv->cm_id.ib, qp_attr, id_priv 1124 drivers/infiniband/core/cma.c qp_attr->rq_psn = id_priv->seq_num; id_priv 1126 drivers/infiniband/core/cma.c if (!id_priv->cm_id.iw) { id_priv 1130 drivers/infiniband/core/cma.c ret = iw_cm_init_qp_attr(id_priv->cm_id.iw, qp_attr, id_priv 1132 drivers/infiniband/core/cma.c qp_attr->port_num = id_priv->id.port_num; id_priv 1137 drivers/infiniband/core/cma.c if ((*qp_attr_mask & IB_QP_TIMEOUT) && id_priv->timeout_set) id_priv 1138 drivers/infiniband/core/cma.c qp_attr->timeout = id_priv->timeout; id_priv 1541 drivers/infiniband/core/cma.c static bool cma_match_private_data(struct rdma_id_private *id_priv, id_priv 1544 drivers/infiniband/core/cma.c struct sockaddr *addr = cma_src_addr(id_priv); id_priv 1548 drivers/infiniband/core/cma.c if (cma_any_addr(addr) && !id_priv->afonly) id_priv 1632 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv, *id_priv_dev; id_priv 1637 drivers/infiniband/core/cma.c hlist_for_each_entry(id_priv, &bind_list->owners, node) { id_priv 1638 drivers/infiniband/core/cma.c if (cma_match_private_data(id_priv, ib_event->private_data)) { id_priv 1639 drivers/infiniband/core/cma.c if (id_priv->id.device == cm_id->device && id_priv 1640 drivers/infiniband/core/cma.c cma_match_net_dev(&id_priv->id, net_dev, req)) id_priv 1641 drivers/infiniband/core/cma.c return id_priv; id_priv 1643 drivers/infiniband/core/cma.c &id_priv->listen_list, id_priv 1663 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv; id_priv 1703 drivers/infiniband/core/cma.c id_priv = ERR_PTR(-EHOSTUNREACH); id_priv 1710 drivers/infiniband/core/cma.c id_priv = ERR_PTR(-EHOSTUNREACH); id_priv 1718 drivers/infiniband/core/cma.c id_priv = cma_find_listener(bind_list, cm_id, ib_event, req, *net_dev); id_priv 1721 drivers/infiniband/core/cma.c if (IS_ERR(id_priv) && *net_dev) { id_priv 1725 drivers/infiniband/core/cma.c return id_priv; id_priv 1728 drivers/infiniband/core/cma.c static inline u8 cma_user_data_offset(struct rdma_id_private *id_priv) id_priv 1730 drivers/infiniband/core/cma.c return cma_family(id_priv) == AF_IB ? 0 : sizeof(struct cma_hdr); id_priv 1733 drivers/infiniband/core/cma.c static void cma_cancel_route(struct rdma_id_private *id_priv) id_priv 1735 drivers/infiniband/core/cma.c if (rdma_cap_ib_sa(id_priv->id.device, id_priv->id.port_num)) { id_priv 1736 drivers/infiniband/core/cma.c if (id_priv->query) id_priv 1737 drivers/infiniband/core/cma.c ib_sa_cancel_query(id_priv->query_id, id_priv->query); id_priv 1741 drivers/infiniband/core/cma.c static void cma_cancel_listens(struct rdma_id_private *id_priv) id_priv 1750 drivers/infiniband/core/cma.c list_del(&id_priv->list); id_priv 1752 drivers/infiniband/core/cma.c while (!list_empty(&id_priv->listen_list)) { id_priv 1753 drivers/infiniband/core/cma.c dev_id_priv = list_entry(id_priv->listen_list.next, id_priv 1766 drivers/infiniband/core/cma.c static void cma_cancel_operation(struct rdma_id_private *id_priv, id_priv 1771 drivers/infiniband/core/cma.c rdma_addr_cancel(&id_priv->id.route.addr.dev_addr); id_priv 1774 drivers/infiniband/core/cma.c cma_cancel_route(id_priv); id_priv 1777 drivers/infiniband/core/cma.c if (cma_any_addr(cma_src_addr(id_priv)) && !id_priv->cma_dev) id_priv 1778 drivers/infiniband/core/cma.c cma_cancel_listens(id_priv); id_priv 1785 drivers/infiniband/core/cma.c static void cma_release_port(struct rdma_id_private *id_priv) id_priv 1787 drivers/infiniband/core/cma.c struct rdma_bind_list *bind_list = id_priv->bind_list; id_priv 1788 drivers/infiniband/core/cma.c struct net *net = id_priv->id.route.addr.dev_addr.net; id_priv 1794 drivers/infiniband/core/cma.c hlist_del(&id_priv->node); id_priv 1802 drivers/infiniband/core/cma.c static void cma_leave_roce_mc_group(struct rdma_id_private *id_priv, id_priv 1805 drivers/infiniband/core/cma.c struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr; id_priv 1817 drivers/infiniband/core/cma.c static void cma_leave_mc_groups(struct rdma_id_private *id_priv) id_priv 1821 drivers/infiniband/core/cma.c while (!list_empty(&id_priv->mc_list)) { id_priv 1822 drivers/infiniband/core/cma.c mc = container_of(id_priv->mc_list.next, id_priv 1825 drivers/infiniband/core/cma.c if (rdma_cap_ib_mcast(id_priv->cma_dev->device, id_priv 1826 drivers/infiniband/core/cma.c id_priv->id.port_num)) { id_priv 1830 drivers/infiniband/core/cma.c cma_leave_roce_mc_group(id_priv, mc); id_priv 1837 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv; id_priv 1840 drivers/infiniband/core/cma.c id_priv = container_of(id, struct rdma_id_private, id); id_priv 1841 drivers/infiniband/core/cma.c state = cma_exch(id_priv, RDMA_CM_DESTROYING); id_priv 1842 drivers/infiniband/core/cma.c cma_cancel_operation(id_priv, state); id_priv 1848 drivers/infiniband/core/cma.c mutex_lock(&id_priv->handler_mutex); id_priv 1849 drivers/infiniband/core/cma.c mutex_unlock(&id_priv->handler_mutex); id_priv 1851 drivers/infiniband/core/cma.c rdma_restrack_del(&id_priv->res); id_priv 1852 drivers/infiniband/core/cma.c if (id_priv->cma_dev) { id_priv 1853 drivers/infiniband/core/cma.c if (rdma_cap_ib_cm(id_priv->id.device, 1)) { id_priv 1854 drivers/infiniband/core/cma.c if (id_priv->cm_id.ib) id_priv 1855 drivers/infiniband/core/cma.c ib_destroy_cm_id(id_priv->cm_id.ib); id_priv 1856 drivers/infiniband/core/cma.c } else if (rdma_cap_iw_cm(id_priv->id.device, 1)) { id_priv 1857 drivers/infiniband/core/cma.c if (id_priv->cm_id.iw) id_priv 1858 drivers/infiniband/core/cma.c iw_destroy_cm_id(id_priv->cm_id.iw); id_priv 1860 drivers/infiniband/core/cma.c cma_leave_mc_groups(id_priv); id_priv 1861 drivers/infiniband/core/cma.c cma_release_dev(id_priv); id_priv 1864 drivers/infiniband/core/cma.c cma_release_port(id_priv); id_priv 1865 drivers/infiniband/core/cma.c cma_deref_id(id_priv); id_priv 1866 drivers/infiniband/core/cma.c wait_for_completion(&id_priv->comp); id_priv 1868 drivers/infiniband/core/cma.c if (id_priv->internal_id) id_priv 1869 drivers/infiniband/core/cma.c cma_deref_id(id_priv->id.context); id_priv 1871 drivers/infiniband/core/cma.c kfree(id_priv->id.route.path_rec); id_priv 1873 drivers/infiniband/core/cma.c if (id_priv->id.route.addr.dev_addr.sgid_attr) id_priv 1874 drivers/infiniband/core/cma.c rdma_put_gid_attr(id_priv->id.route.addr.dev_addr.sgid_attr); id_priv 1876 drivers/infiniband/core/cma.c put_net(id_priv->id.route.addr.dev_addr.net); id_priv 1877 drivers/infiniband/core/cma.c kfree(id_priv); id_priv 1881 drivers/infiniband/core/cma.c static int cma_rep_recv(struct rdma_id_private *id_priv) id_priv 1885 drivers/infiniband/core/cma.c ret = cma_modify_qp_rtr(id_priv, NULL); id_priv 1889 drivers/infiniband/core/cma.c ret = cma_modify_qp_rts(id_priv, NULL); id_priv 1893 drivers/infiniband/core/cma.c ret = ib_send_cm_rtu(id_priv->cm_id.ib, NULL, 0); id_priv 1900 drivers/infiniband/core/cma.c cma_modify_qp_err(id_priv); id_priv 1901 drivers/infiniband/core/cma.c ib_send_cm_rej(id_priv->cm_id.ib, IB_CM_REJ_CONSUMER_DEFINED, id_priv 1923 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv = cm_id->context; id_priv 1927 drivers/infiniband/core/cma.c mutex_lock(&id_priv->handler_mutex); id_priv 1929 drivers/infiniband/core/cma.c id_priv->state != RDMA_CM_CONNECT) || id_priv 1931 drivers/infiniband/core/cma.c id_priv->state != RDMA_CM_DISCONNECT)) id_priv 1941 drivers/infiniband/core/cma.c if (cma_comp(id_priv, RDMA_CM_CONNECT) && id_priv 1942 drivers/infiniband/core/cma.c (id_priv->id.qp_type != IB_QPT_UD)) id_priv 1944 drivers/infiniband/core/cma.c if (id_priv->id.qp) { id_priv 1945 drivers/infiniband/core/cma.c event.status = cma_rep_recv(id_priv); id_priv 1962 drivers/infiniband/core/cma.c if (!cma_comp_exch(id_priv, RDMA_CM_CONNECT, id_priv 1974 drivers/infiniband/core/cma.c pr_debug_ratelimited("RDMA CM: REJECTED: %s\n", rdma_reject_msg(&id_priv->id, id_priv 1976 drivers/infiniband/core/cma.c cma_modify_qp_err(id_priv); id_priv 1988 drivers/infiniband/core/cma.c ret = id_priv->id.event_handler(&id_priv->id, &event); id_priv 1991 drivers/infiniband/core/cma.c id_priv->cm_id.ib = NULL; id_priv 1992 drivers/infiniband/core/cma.c cma_exch(id_priv, RDMA_CM_DESTROYING); id_priv 1993 drivers/infiniband/core/cma.c mutex_unlock(&id_priv->handler_mutex); id_priv 1994 drivers/infiniband/core/cma.c rdma_destroy_id(&id_priv->id); id_priv 1998 drivers/infiniband/core/cma.c mutex_unlock(&id_priv->handler_mutex); id_priv 2008 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv; id_priv 2025 drivers/infiniband/core/cma.c id_priv = container_of(id, struct rdma_id_private, id); id_priv 2046 drivers/infiniband/core/cma.c cma_any_addr(cma_src_addr(id_priv))) { id_priv 2050 drivers/infiniband/core/cma.c } else if (!cma_any_addr(cma_src_addr(id_priv))) { id_priv 2051 drivers/infiniband/core/cma.c ret = cma_translate_addr(cma_src_addr(id_priv), &rt->addr.dev_addr); id_priv 2058 drivers/infiniband/core/cma.c id_priv->state = RDMA_CM_CONNECT; id_priv 2059 drivers/infiniband/core/cma.c return id_priv; id_priv 2072 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv; id_priv 2085 drivers/infiniband/core/cma.c id_priv = container_of(id, struct rdma_id_private, id); id_priv 2095 drivers/infiniband/core/cma.c if (!cma_any_addr(cma_src_addr(id_priv))) { id_priv 2096 drivers/infiniband/core/cma.c ret = cma_translate_addr(cma_src_addr(id_priv), id_priv 2103 drivers/infiniband/core/cma.c id_priv->state = RDMA_CM_CONNECT; id_priv 2104 drivers/infiniband/core/cma.c return id_priv; id_priv 2267 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv = iw_id->context; id_priv 2273 drivers/infiniband/core/cma.c mutex_lock(&id_priv->handler_mutex); id_priv 2274 drivers/infiniband/core/cma.c if (id_priv->state != RDMA_CM_CONNECT) id_priv 2282 drivers/infiniband/core/cma.c memcpy(cma_src_addr(id_priv), laddr, id_priv 2284 drivers/infiniband/core/cma.c memcpy(cma_dst_addr(id_priv), raddr, id_priv 2316 drivers/infiniband/core/cma.c ret = id_priv->id.event_handler(&id_priv->id, &event); id_priv 2319 drivers/infiniband/core/cma.c id_priv->cm_id.iw = NULL; id_priv 2320 drivers/infiniband/core/cma.c cma_exch(id_priv, RDMA_CM_DESTROYING); id_priv 2321 drivers/infiniband/core/cma.c mutex_unlock(&id_priv->handler_mutex); id_priv 2322 drivers/infiniband/core/cma.c rdma_destroy_id(&id_priv->id); id_priv 2327 drivers/infiniband/core/cma.c mutex_unlock(&id_priv->handler_mutex); id_priv 2413 drivers/infiniband/core/cma.c static int cma_ib_listen(struct rdma_id_private *id_priv) id_priv 2419 drivers/infiniband/core/cma.c addr = cma_src_addr(id_priv); id_priv 2420 drivers/infiniband/core/cma.c svc_id = rdma_get_service_id(&id_priv->id, addr); id_priv 2421 drivers/infiniband/core/cma.c id = ib_cm_insert_listen(id_priv->id.device, id_priv 2425 drivers/infiniband/core/cma.c id_priv->cm_id.ib = id; id_priv 2430 drivers/infiniband/core/cma.c static int cma_iw_listen(struct rdma_id_private *id_priv, int backlog) id_priv 2435 drivers/infiniband/core/cma.c id = iw_create_cm_id(id_priv->id.device, id_priv 2437 drivers/infiniband/core/cma.c id_priv); id_priv 2441 drivers/infiniband/core/cma.c id->tos = id_priv->tos; id_priv 2442 drivers/infiniband/core/cma.c id->tos_set = id_priv->tos_set; id_priv 2443 drivers/infiniband/core/cma.c id_priv->cm_id.iw = id; id_priv 2445 drivers/infiniband/core/cma.c memcpy(&id_priv->cm_id.iw->local_addr, cma_src_addr(id_priv), id_priv 2446 drivers/infiniband/core/cma.c rdma_addr_size(cma_src_addr(id_priv))); id_priv 2448 drivers/infiniband/core/cma.c ret = iw_cm_listen(id_priv->cm_id.iw, backlog); id_priv 2451 drivers/infiniband/core/cma.c iw_destroy_cm_id(id_priv->cm_id.iw); id_priv 2452 drivers/infiniband/core/cma.c id_priv->cm_id.iw = NULL; id_priv 2461 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv = id->context; id_priv 2463 drivers/infiniband/core/cma.c id->context = id_priv->id.context; id_priv 2464 drivers/infiniband/core/cma.c id->event_handler = id_priv->id.event_handler; id_priv 2465 drivers/infiniband/core/cma.c return id_priv->id.event_handler(id, event); id_priv 2468 drivers/infiniband/core/cma.c static void cma_listen_on_dev(struct rdma_id_private *id_priv, id_priv 2473 drivers/infiniband/core/cma.c struct net *net = id_priv->id.route.addr.dev_addr.net; id_priv 2476 drivers/infiniband/core/cma.c if (cma_family(id_priv) == AF_IB && !rdma_cap_ib_cm(cma_dev->device, 1)) id_priv 2479 drivers/infiniband/core/cma.c id = __rdma_create_id(net, cma_listen_handler, id_priv, id_priv->id.ps, id_priv 2480 drivers/infiniband/core/cma.c id_priv->id.qp_type, id_priv->res.kern_name); id_priv 2487 drivers/infiniband/core/cma.c memcpy(cma_src_addr(dev_id_priv), cma_src_addr(id_priv), id_priv 2488 drivers/infiniband/core/cma.c rdma_addr_size(cma_src_addr(id_priv))); id_priv 2491 drivers/infiniband/core/cma.c list_add_tail(&dev_id_priv->listen_list, &id_priv->listen_list); id_priv 2492 drivers/infiniband/core/cma.c atomic_inc(&id_priv->refcount); id_priv 2494 drivers/infiniband/core/cma.c dev_id_priv->afonly = id_priv->afonly; id_priv 2495 drivers/infiniband/core/cma.c dev_id_priv->tos_set = id_priv->tos_set; id_priv 2496 drivers/infiniband/core/cma.c dev_id_priv->tos = id_priv->tos; id_priv 2498 drivers/infiniband/core/cma.c ret = rdma_listen(id, id_priv->backlog); id_priv 2504 drivers/infiniband/core/cma.c static void cma_listen_on_all(struct rdma_id_private *id_priv) id_priv 2509 drivers/infiniband/core/cma.c list_add_tail(&id_priv->list, &listen_any_list); id_priv 2511 drivers/infiniband/core/cma.c cma_listen_on_dev(id_priv, cma_dev); id_priv 2517 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv; id_priv 2519 drivers/infiniband/core/cma.c id_priv = container_of(id, struct rdma_id_private, id); id_priv 2520 drivers/infiniband/core/cma.c id_priv->tos = (u8) tos; id_priv 2521 drivers/infiniband/core/cma.c id_priv->tos_set = true; id_priv 2540 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv; id_priv 2545 drivers/infiniband/core/cma.c id_priv = container_of(id, struct rdma_id_private, id); id_priv 2546 drivers/infiniband/core/cma.c id_priv->timeout = timeout; id_priv 2547 drivers/infiniband/core/cma.c id_priv->timeout_set = true; id_priv 2576 drivers/infiniband/core/cma.c static int cma_query_ib_route(struct rdma_id_private *id_priv, id_priv 2579 drivers/infiniband/core/cma.c struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr; id_priv 2587 drivers/infiniband/core/cma.c if (rdma_cap_opa_ah(id_priv->id.device, id_priv->id.port_num)) id_priv 2596 drivers/infiniband/core/cma.c path_rec.service_id = rdma_get_service_id(&id_priv->id, id_priv 2597 drivers/infiniband/core/cma.c cma_dst_addr(id_priv)); id_priv 2603 drivers/infiniband/core/cma.c switch (cma_family(id_priv)) { id_priv 2605 drivers/infiniband/core/cma.c path_rec.qos_class = cpu_to_be16((u16) id_priv->tos); id_priv 2609 drivers/infiniband/core/cma.c sin6 = (struct sockaddr_in6 *) cma_src_addr(id_priv); id_priv 2614 drivers/infiniband/core/cma.c sib = (struct sockaddr_ib *) cma_src_addr(id_priv); id_priv 2620 drivers/infiniband/core/cma.c id_priv->query_id = ib_sa_path_rec_get(&sa_client, id_priv->id.device, id_priv 2621 drivers/infiniband/core/cma.c id_priv->id.port_num, &path_rec, id_priv 2624 drivers/infiniband/core/cma.c work, &id_priv->query); id_priv 2626 drivers/infiniband/core/cma.c return (id_priv->query_id < 0) ? id_priv->query_id : 0; id_priv 2632 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv = work->id; id_priv 2635 drivers/infiniband/core/cma.c mutex_lock(&id_priv->handler_mutex); id_priv 2636 drivers/infiniband/core/cma.c if (!cma_comp_exch(id_priv, work->old_state, work->new_state)) id_priv 2639 drivers/infiniband/core/cma.c if (id_priv->id.event_handler(&id_priv->id, &work->event)) { id_priv 2640 drivers/infiniband/core/cma.c cma_exch(id_priv, RDMA_CM_DESTROYING); id_priv 2644 drivers/infiniband/core/cma.c mutex_unlock(&id_priv->handler_mutex); id_priv 2645 drivers/infiniband/core/cma.c cma_deref_id(id_priv); id_priv 2647 drivers/infiniband/core/cma.c rdma_destroy_id(&id_priv->id); id_priv 2654 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv = work->id; id_priv 2657 drivers/infiniband/core/cma.c mutex_lock(&id_priv->handler_mutex); id_priv 2658 drivers/infiniband/core/cma.c if (id_priv->state == RDMA_CM_DESTROYING || id_priv 2659 drivers/infiniband/core/cma.c id_priv->state == RDMA_CM_DEVICE_REMOVAL) id_priv 2662 drivers/infiniband/core/cma.c if (id_priv->id.event_handler(&id_priv->id, &work->event)) { id_priv 2663 drivers/infiniband/core/cma.c cma_exch(id_priv, RDMA_CM_DESTROYING); id_priv 2668 drivers/infiniband/core/cma.c mutex_unlock(&id_priv->handler_mutex); id_priv 2669 drivers/infiniband/core/cma.c cma_deref_id(id_priv); id_priv 2671 drivers/infiniband/core/cma.c rdma_destroy_id(&id_priv->id); id_priv 2676 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv) id_priv 2678 drivers/infiniband/core/cma.c work->id = id_priv; id_priv 2686 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv) id_priv 2688 drivers/infiniband/core/cma.c work->id = id_priv; id_priv 2695 drivers/infiniband/core/cma.c static int cma_resolve_ib_route(struct rdma_id_private *id_priv, id_priv 2698 drivers/infiniband/core/cma.c struct rdma_route *route = &id_priv->id.route; id_priv 2706 drivers/infiniband/core/cma.c cma_init_resolve_route_work(work, id_priv); id_priv 2714 drivers/infiniband/core/cma.c ret = cma_query_ib_route(id_priv, timeout_ms, work); id_priv 2747 drivers/infiniband/core/cma.c cma_iboe_set_path_rec_l2_fields(struct rdma_id_private *id_priv) id_priv 2749 drivers/infiniband/core/cma.c struct rdma_route *route = &id_priv->id.route; id_priv 2763 drivers/infiniband/core/cma.c supported_gids = roce_gid_type_mask_support(id_priv->id.device, id_priv 2764 drivers/infiniband/core/cma.c id_priv->id.port_num); id_priv 2767 drivers/infiniband/core/cma.c id_priv->gid_type); id_priv 2781 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv; id_priv 2785 drivers/infiniband/core/cma.c id_priv = container_of(id, struct rdma_id_private, id); id_priv 2786 drivers/infiniband/core/cma.c if (!cma_comp_exch(id_priv, RDMA_CM_ADDR_RESOLVED, id_priv 2798 drivers/infiniband/core/cma.c ndev = cma_iboe_set_path_rec_l2_fields(id_priv); id_priv 2813 drivers/infiniband/core/cma.c cma_comp_exch(id_priv, RDMA_CM_ROUTE_RESOLVED, RDMA_CM_ADDR_RESOLVED); id_priv 2818 drivers/infiniband/core/cma.c static int cma_resolve_iw_route(struct rdma_id_private *id_priv) id_priv 2826 drivers/infiniband/core/cma.c cma_init_resolve_route_work(work, id_priv); id_priv 2849 drivers/infiniband/core/cma.c static int cma_resolve_iboe_route(struct rdma_id_private *id_priv) id_priv 2851 drivers/infiniband/core/cma.c struct rdma_route *route = &id_priv->id.route; id_priv 2857 drivers/infiniband/core/cma.c u8 default_roce_tos = id_priv->cma_dev->default_roce_tos[id_priv->id.port_num - id_priv 2858 drivers/infiniband/core/cma.c rdma_start_port(id_priv->cma_dev->device)]; id_priv 2859 drivers/infiniband/core/cma.c u8 tos = id_priv->tos_set ? id_priv->tos : default_roce_tos; id_priv 2874 drivers/infiniband/core/cma.c ndev = cma_iboe_set_path_rec_l2_fields(id_priv); id_priv 2880 drivers/infiniband/core/cma.c rdma_ip2gid((struct sockaddr *)&id_priv->id.route.addr.src_addr, id_priv 2882 drivers/infiniband/core/cma.c rdma_ip2gid((struct sockaddr *)&id_priv->id.route.addr.dst_addr, id_priv 2885 drivers/infiniband/core/cma.c if (((struct sockaddr *)&id_priv->id.route.addr.dst_addr)->sa_family != AF_IB) id_priv 2906 drivers/infiniband/core/cma.c cma_init_resolve_route_work(work, id_priv); id_priv 2922 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv; id_priv 2925 drivers/infiniband/core/cma.c id_priv = container_of(id, struct rdma_id_private, id); id_priv 2926 drivers/infiniband/core/cma.c if (!cma_comp_exch(id_priv, RDMA_CM_ADDR_RESOLVED, RDMA_CM_ROUTE_QUERY)) id_priv 2929 drivers/infiniband/core/cma.c atomic_inc(&id_priv->refcount); id_priv 2931 drivers/infiniband/core/cma.c ret = cma_resolve_ib_route(id_priv, timeout_ms); id_priv 2933 drivers/infiniband/core/cma.c ret = cma_resolve_iboe_route(id_priv); id_priv 2935 drivers/infiniband/core/cma.c ret = cma_resolve_iw_route(id_priv); id_priv 2944 drivers/infiniband/core/cma.c cma_comp_exch(id_priv, RDMA_CM_ROUTE_QUERY, RDMA_CM_ADDR_RESOLVED); id_priv 2945 drivers/infiniband/core/cma.c cma_deref_id(id_priv); id_priv 2967 drivers/infiniband/core/cma.c static int cma_bind_loopback(struct rdma_id_private *id_priv) id_priv 2979 drivers/infiniband/core/cma.c if (cma_family(id_priv) == AF_IB && id_priv 3011 drivers/infiniband/core/cma.c id_priv->id.route.addr.dev_addr.dev_type = id_priv 3015 drivers/infiniband/core/cma.c rdma_addr_set_sgid(&id_priv->id.route.addr.dev_addr, &gid); id_priv 3016 drivers/infiniband/core/cma.c ib_addr_set_pkey(&id_priv->id.route.addr.dev_addr, pkey); id_priv 3017 drivers/infiniband/core/cma.c id_priv->id.port_num = p; id_priv 3018 drivers/infiniband/core/cma.c cma_attach_to_dev(id_priv, cma_dev); id_priv 3019 drivers/infiniband/core/cma.c cma_set_loopback(cma_src_addr(id_priv)); id_priv 3028 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv = context; id_priv 3033 drivers/infiniband/core/cma.c mutex_lock(&id_priv->handler_mutex); id_priv 3034 drivers/infiniband/core/cma.c if (!cma_comp_exch(id_priv, RDMA_CM_ADDR_QUERY, id_priv 3043 drivers/infiniband/core/cma.c addr = cma_src_addr(id_priv); id_priv 3046 drivers/infiniband/core/cma.c if (!status && !id_priv->cma_dev) { id_priv 3047 drivers/infiniband/core/cma.c status = cma_acquire_dev_by_src_ip(id_priv); id_priv 3058 drivers/infiniband/core/cma.c if (!cma_comp_exch(id_priv, RDMA_CM_ADDR_RESOLVED, id_priv 3066 drivers/infiniband/core/cma.c if (id_priv->id.event_handler(&id_priv->id, &event)) { id_priv 3067 drivers/infiniband/core/cma.c cma_exch(id_priv, RDMA_CM_DESTROYING); id_priv 3068 drivers/infiniband/core/cma.c mutex_unlock(&id_priv->handler_mutex); id_priv 3069 drivers/infiniband/core/cma.c rdma_destroy_id(&id_priv->id); id_priv 3073 drivers/infiniband/core/cma.c mutex_unlock(&id_priv->handler_mutex); id_priv 3076 drivers/infiniband/core/cma.c static int cma_resolve_loopback(struct rdma_id_private *id_priv) id_priv 3086 drivers/infiniband/core/cma.c if (!id_priv->cma_dev) { id_priv 3087 drivers/infiniband/core/cma.c ret = cma_bind_loopback(id_priv); id_priv 3092 drivers/infiniband/core/cma.c rdma_addr_get_sgid(&id_priv->id.route.addr.dev_addr, &gid); id_priv 3093 drivers/infiniband/core/cma.c rdma_addr_set_dgid(&id_priv->id.route.addr.dev_addr, &gid); id_priv 3095 drivers/infiniband/core/cma.c atomic_inc(&id_priv->refcount); id_priv 3096 drivers/infiniband/core/cma.c cma_init_resolve_addr_work(work, id_priv); id_priv 3104 drivers/infiniband/core/cma.c static int cma_resolve_ib_addr(struct rdma_id_private *id_priv) id_priv 3113 drivers/infiniband/core/cma.c if (!id_priv->cma_dev) { id_priv 3114 drivers/infiniband/core/cma.c ret = cma_resolve_ib_dev(id_priv); id_priv 3119 drivers/infiniband/core/cma.c rdma_addr_set_dgid(&id_priv->id.route.addr.dev_addr, (union ib_gid *) id_priv 3120 drivers/infiniband/core/cma.c &(((struct sockaddr_ib *) &id_priv->id.route.addr.dst_addr)->sib_addr)); id_priv 3122 drivers/infiniband/core/cma.c atomic_inc(&id_priv->refcount); id_priv 3123 drivers/infiniband/core/cma.c cma_init_resolve_addr_work(work, id_priv); id_priv 3155 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv; id_priv 3158 drivers/infiniband/core/cma.c id_priv = container_of(id, struct rdma_id_private, id); id_priv 3159 drivers/infiniband/core/cma.c memcpy(cma_dst_addr(id_priv), dst_addr, rdma_addr_size(dst_addr)); id_priv 3160 drivers/infiniband/core/cma.c if (id_priv->state == RDMA_CM_IDLE) { id_priv 3163 drivers/infiniband/core/cma.c memset(cma_dst_addr(id_priv), 0, id_priv 3169 drivers/infiniband/core/cma.c if (cma_family(id_priv) != dst_addr->sa_family) { id_priv 3170 drivers/infiniband/core/cma.c memset(cma_dst_addr(id_priv), 0, rdma_addr_size(dst_addr)); id_priv 3174 drivers/infiniband/core/cma.c if (!cma_comp_exch(id_priv, RDMA_CM_ADDR_BOUND, RDMA_CM_ADDR_QUERY)) { id_priv 3175 drivers/infiniband/core/cma.c memset(cma_dst_addr(id_priv), 0, rdma_addr_size(dst_addr)); id_priv 3180 drivers/infiniband/core/cma.c ret = cma_resolve_loopback(id_priv); id_priv 3183 drivers/infiniband/core/cma.c ret = cma_resolve_ib_addr(id_priv); id_priv 3185 drivers/infiniband/core/cma.c ret = rdma_resolve_ip(cma_src_addr(id_priv), dst_addr, id_priv 3188 drivers/infiniband/core/cma.c false, id_priv); id_priv 3196 drivers/infiniband/core/cma.c cma_comp_exch(id_priv, RDMA_CM_ADDR_QUERY, RDMA_CM_ADDR_BOUND); id_priv 3203 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv; id_priv 3207 drivers/infiniband/core/cma.c id_priv = container_of(id, struct rdma_id_private, id); id_priv 3208 drivers/infiniband/core/cma.c spin_lock_irqsave(&id_priv->lock, flags); id_priv 3209 drivers/infiniband/core/cma.c if (reuse || id_priv->state == RDMA_CM_IDLE) { id_priv 3210 drivers/infiniband/core/cma.c id_priv->reuseaddr = reuse; id_priv 3215 drivers/infiniband/core/cma.c spin_unlock_irqrestore(&id_priv->lock, flags); id_priv 3222 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv; id_priv 3226 drivers/infiniband/core/cma.c id_priv = container_of(id, struct rdma_id_private, id); id_priv 3227 drivers/infiniband/core/cma.c spin_lock_irqsave(&id_priv->lock, flags); id_priv 3228 drivers/infiniband/core/cma.c if (id_priv->state == RDMA_CM_IDLE || id_priv->state == RDMA_CM_ADDR_BOUND) { id_priv 3229 drivers/infiniband/core/cma.c id_priv->options |= (1 << CMA_OPTION_AFONLY); id_priv 3230 drivers/infiniband/core/cma.c id_priv->afonly = afonly; id_priv 3235 drivers/infiniband/core/cma.c spin_unlock_irqrestore(&id_priv->lock, flags); id_priv 3241 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv) id_priv 3248 drivers/infiniband/core/cma.c addr = cma_src_addr(id_priv); id_priv 3266 drivers/infiniband/core/cma.c id_priv->bind_list = bind_list; id_priv 3267 drivers/infiniband/core/cma.c hlist_add_head(&id_priv->node, &bind_list->owners); id_priv 3271 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv, unsigned short snum) id_priv 3280 drivers/infiniband/core/cma.c ret = cma_ps_alloc(id_priv->id.route.addr.dev_addr.net, ps, bind_list, id_priv 3287 drivers/infiniband/core/cma.c cma_bind_port(bind_list, id_priv); id_priv 3295 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv) id_priv 3298 drivers/infiniband/core/cma.c struct sockaddr *daddr = cma_dst_addr(id_priv); id_priv 3299 drivers/infiniband/core/cma.c struct sockaddr *saddr = cma_src_addr(id_priv); id_priv 3307 drivers/infiniband/core/cma.c if (id_priv == cur_id) id_priv 3334 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv) id_priv 3339 drivers/infiniband/core/cma.c struct net *net = id_priv->id.route.addr.dev_addr.net; id_priv 3352 drivers/infiniband/core/cma.c ret = cma_alloc_port(ps, id_priv, rover); id_priv 3354 drivers/infiniband/core/cma.c ret = cma_port_is_unique(bind_list, id_priv); id_priv 3356 drivers/infiniband/core/cma.c cma_bind_port(bind_list, id_priv); id_priv 3383 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv, uint8_t reuseaddr) id_priv 3388 drivers/infiniband/core/cma.c addr = cma_src_addr(id_priv); id_priv 3390 drivers/infiniband/core/cma.c if (id_priv == cur_id) id_priv 3398 drivers/infiniband/core/cma.c if (id_priv->afonly && cur_id->afonly && id_priv 3412 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv) id_priv 3418 drivers/infiniband/core/cma.c snum = ntohs(cma_port(cma_src_addr(id_priv))); id_priv 3422 drivers/infiniband/core/cma.c bind_list = cma_ps_find(id_priv->id.route.addr.dev_addr.net, ps, snum); id_priv 3424 drivers/infiniband/core/cma.c ret = cma_alloc_port(ps, id_priv, snum); id_priv 3426 drivers/infiniband/core/cma.c ret = cma_check_port(bind_list, id_priv, id_priv->reuseaddr); id_priv 3428 drivers/infiniband/core/cma.c cma_bind_port(bind_list, id_priv); id_priv 3433 drivers/infiniband/core/cma.c static int cma_bind_listen(struct rdma_id_private *id_priv) id_priv 3435 drivers/infiniband/core/cma.c struct rdma_bind_list *bind_list = id_priv->bind_list; id_priv 3440 drivers/infiniband/core/cma.c ret = cma_check_port(bind_list, id_priv, 0); id_priv 3446 drivers/infiniband/core/cma.c cma_select_inet_ps(struct rdma_id_private *id_priv) id_priv 3448 drivers/infiniband/core/cma.c switch (id_priv->id.ps) { id_priv 3453 drivers/infiniband/core/cma.c return id_priv->id.ps; id_priv 3461 drivers/infiniband/core/cma.c cma_select_ib_ps(struct rdma_id_private *id_priv) id_priv 3467 drivers/infiniband/core/cma.c sib = (struct sockaddr_ib *) cma_src_addr(id_priv); id_priv 3471 drivers/infiniband/core/cma.c if ((id_priv->id.ps == RDMA_PS_IB) && (sid == (RDMA_IB_IP_PS_IB & mask))) { id_priv 3474 drivers/infiniband/core/cma.c } else if (((id_priv->id.ps == RDMA_PS_IB) || (id_priv->id.ps == RDMA_PS_TCP)) && id_priv 3478 drivers/infiniband/core/cma.c } else if (((id_priv->id.ps == RDMA_PS_IB) || (id_priv->id.ps == RDMA_PS_UDP)) && id_priv 3492 drivers/infiniband/core/cma.c static int cma_get_port(struct rdma_id_private *id_priv) id_priv 3497 drivers/infiniband/core/cma.c if (cma_family(id_priv) != AF_IB) id_priv 3498 drivers/infiniband/core/cma.c ps = cma_select_inet_ps(id_priv); id_priv 3500 drivers/infiniband/core/cma.c ps = cma_select_ib_ps(id_priv); id_priv 3505 drivers/infiniband/core/cma.c if (cma_any_port(cma_src_addr(id_priv))) id_priv 3506 drivers/infiniband/core/cma.c ret = cma_alloc_any_port(ps, id_priv); id_priv 3508 drivers/infiniband/core/cma.c ret = cma_use_port(ps, id_priv); id_priv 3538 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv; id_priv 3541 drivers/infiniband/core/cma.c id_priv = container_of(id, struct rdma_id_private, id); id_priv 3542 drivers/infiniband/core/cma.c if (id_priv->state == RDMA_CM_IDLE) { id_priv 3544 drivers/infiniband/core/cma.c ret = rdma_bind_addr(id, cma_src_addr(id_priv)); id_priv 3549 drivers/infiniband/core/cma.c if (!cma_comp_exch(id_priv, RDMA_CM_ADDR_BOUND, RDMA_CM_LISTEN)) id_priv 3552 drivers/infiniband/core/cma.c if (id_priv->reuseaddr) { id_priv 3553 drivers/infiniband/core/cma.c ret = cma_bind_listen(id_priv); id_priv 3558 drivers/infiniband/core/cma.c id_priv->backlog = backlog; id_priv 3561 drivers/infiniband/core/cma.c ret = cma_ib_listen(id_priv); id_priv 3565 drivers/infiniband/core/cma.c ret = cma_iw_listen(id_priv, backlog); id_priv 3573 drivers/infiniband/core/cma.c cma_listen_on_all(id_priv); id_priv 3577 drivers/infiniband/core/cma.c id_priv->backlog = 0; id_priv 3578 drivers/infiniband/core/cma.c cma_comp_exch(id_priv, RDMA_CM_LISTEN, RDMA_CM_ADDR_BOUND); id_priv 3585 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv; id_priv 3593 drivers/infiniband/core/cma.c id_priv = container_of(id, struct rdma_id_private, id); id_priv 3594 drivers/infiniband/core/cma.c if (!cma_comp_exch(id_priv, RDMA_CM_IDLE, RDMA_CM_ADDR_BOUND)) id_priv 3601 drivers/infiniband/core/cma.c memcpy(cma_src_addr(id_priv), addr, rdma_addr_size(addr)); id_priv 3607 drivers/infiniband/core/cma.c ret = cma_acquire_dev_by_src_ip(id_priv); id_priv 3612 drivers/infiniband/core/cma.c if (!(id_priv->options & (1 << CMA_OPTION_AFONLY))) { id_priv 3614 drivers/infiniband/core/cma.c id_priv->afonly = 1; id_priv 3617 drivers/infiniband/core/cma.c struct net *net = id_priv->id.route.addr.dev_addr.net; id_priv 3619 drivers/infiniband/core/cma.c id_priv->afonly = net->ipv6.sysctl.bindv6only; id_priv 3623 drivers/infiniband/core/cma.c daddr = cma_dst_addr(id_priv); id_priv 3626 drivers/infiniband/core/cma.c ret = cma_get_port(id_priv); id_priv 3632 drivers/infiniband/core/cma.c rdma_restrack_del(&id_priv->res); id_priv 3633 drivers/infiniband/core/cma.c if (id_priv->cma_dev) id_priv 3634 drivers/infiniband/core/cma.c cma_release_dev(id_priv); id_priv 3636 drivers/infiniband/core/cma.c cma_comp_exch(id_priv, RDMA_CM_ADDR_BOUND, RDMA_CM_IDLE); id_priv 3641 drivers/infiniband/core/cma.c static int cma_format_hdr(void *hdr, struct rdma_id_private *id_priv) id_priv 3647 drivers/infiniband/core/cma.c if (cma_family(id_priv) == AF_INET) { id_priv 3650 drivers/infiniband/core/cma.c src4 = (struct sockaddr_in *) cma_src_addr(id_priv); id_priv 3651 drivers/infiniband/core/cma.c dst4 = (struct sockaddr_in *) cma_dst_addr(id_priv); id_priv 3657 drivers/infiniband/core/cma.c } else if (cma_family(id_priv) == AF_INET6) { id_priv 3660 drivers/infiniband/core/cma.c src6 = (struct sockaddr_in6 *) cma_src_addr(id_priv); id_priv 3661 drivers/infiniband/core/cma.c dst6 = (struct sockaddr_in6 *) cma_dst_addr(id_priv); id_priv 3674 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv = cm_id->context; id_priv 3680 drivers/infiniband/core/cma.c mutex_lock(&id_priv->handler_mutex); id_priv 3681 drivers/infiniband/core/cma.c if (id_priv->state != RDMA_CM_CONNECT) id_priv 3699 drivers/infiniband/core/cma.c ret = cma_set_qkey(id_priv, rep->qkey); id_priv 3706 drivers/infiniband/core/cma.c ib_init_ah_attr_from_path(id_priv->id.device, id_priv 3707 drivers/infiniband/core/cma.c id_priv->id.port_num, id_priv 3708 drivers/infiniband/core/cma.c id_priv->id.route.path_rec, id_priv 3722 drivers/infiniband/core/cma.c ret = id_priv->id.event_handler(&id_priv->id, &event); id_priv 3727 drivers/infiniband/core/cma.c id_priv->cm_id.ib = NULL; id_priv 3728 drivers/infiniband/core/cma.c cma_exch(id_priv, RDMA_CM_DESTROYING); id_priv 3729 drivers/infiniband/core/cma.c mutex_unlock(&id_priv->handler_mutex); id_priv 3730 drivers/infiniband/core/cma.c rdma_destroy_id(&id_priv->id); id_priv 3734 drivers/infiniband/core/cma.c mutex_unlock(&id_priv->handler_mutex); id_priv 3738 drivers/infiniband/core/cma.c static int cma_resolve_ib_udp(struct rdma_id_private *id_priv, id_priv 3748 drivers/infiniband/core/cma.c offset = cma_user_data_offset(id_priv); id_priv 3766 drivers/infiniband/core/cma.c ret = cma_format_hdr(private_data, id_priv); id_priv 3772 drivers/infiniband/core/cma.c id = ib_create_cm_id(id_priv->id.device, cma_sidr_rep_handler, id_priv 3773 drivers/infiniband/core/cma.c id_priv); id_priv 3778 drivers/infiniband/core/cma.c id_priv->cm_id.ib = id; id_priv 3780 drivers/infiniband/core/cma.c req.path = id_priv->id.route.path_rec; id_priv 3781 drivers/infiniband/core/cma.c req.sgid_attr = id_priv->id.route.addr.dev_addr.sgid_attr; id_priv 3782 drivers/infiniband/core/cma.c req.service_id = rdma_get_service_id(&id_priv->id, cma_dst_addr(id_priv)); id_priv 3786 drivers/infiniband/core/cma.c ret = ib_send_cm_sidr_req(id_priv->cm_id.ib, &req); id_priv 3788 drivers/infiniband/core/cma.c ib_destroy_cm_id(id_priv->cm_id.ib); id_priv 3789 drivers/infiniband/core/cma.c id_priv->cm_id.ib = NULL; id_priv 3796 drivers/infiniband/core/cma.c static int cma_connect_ib(struct rdma_id_private *id_priv, id_priv 3807 drivers/infiniband/core/cma.c offset = cma_user_data_offset(id_priv); id_priv 3824 drivers/infiniband/core/cma.c id = ib_create_cm_id(id_priv->id.device, cma_ib_handler, id_priv); id_priv 3829 drivers/infiniband/core/cma.c id_priv->cm_id.ib = id; id_priv 3831 drivers/infiniband/core/cma.c route = &id_priv->id.route; id_priv 3833 drivers/infiniband/core/cma.c ret = cma_format_hdr(private_data, id_priv); id_priv 3843 drivers/infiniband/core/cma.c req.ppath_sgid_attr = id_priv->id.route.addr.dev_addr.sgid_attr; id_priv 3845 drivers/infiniband/core/cma.c req.service_id = rdma_get_service_id(&id_priv->id, cma_dst_addr(id_priv)); id_priv 3846 drivers/infiniband/core/cma.c req.qp_num = id_priv->qp_num; id_priv 3847 drivers/infiniband/core/cma.c req.qp_type = id_priv->id.qp_type; id_priv 3848 drivers/infiniband/core/cma.c req.starting_psn = id_priv->seq_num; id_priv 3857 drivers/infiniband/core/cma.c req.srq = id_priv->srq ? 1 : 0; id_priv 3859 drivers/infiniband/core/cma.c ret = ib_send_cm_req(id_priv->cm_id.ib, &req); id_priv 3863 drivers/infiniband/core/cma.c id_priv->cm_id.ib = NULL; id_priv 3870 drivers/infiniband/core/cma.c static int cma_connect_iw(struct rdma_id_private *id_priv, id_priv 3877 drivers/infiniband/core/cma.c cm_id = iw_create_cm_id(id_priv->id.device, cma_iw_handler, id_priv); id_priv 3881 drivers/infiniband/core/cma.c cm_id->tos = id_priv->tos; id_priv 3882 drivers/infiniband/core/cma.c cm_id->tos_set = id_priv->tos_set; id_priv 3883 drivers/infiniband/core/cma.c id_priv->cm_id.iw = cm_id; id_priv 3885 drivers/infiniband/core/cma.c memcpy(&cm_id->local_addr, cma_src_addr(id_priv), id_priv 3886 drivers/infiniband/core/cma.c rdma_addr_size(cma_src_addr(id_priv))); id_priv 3887 drivers/infiniband/core/cma.c memcpy(&cm_id->remote_addr, cma_dst_addr(id_priv), id_priv 3888 drivers/infiniband/core/cma.c rdma_addr_size(cma_dst_addr(id_priv))); id_priv 3890 drivers/infiniband/core/cma.c ret = cma_modify_qp_rtr(id_priv, conn_param); id_priv 3899 drivers/infiniband/core/cma.c iw_param.qpn = id_priv->id.qp ? id_priv->qp_num : conn_param->qp_num; id_priv 3902 drivers/infiniband/core/cma.c iw_param.qpn = id_priv->qp_num; id_priv 3908 drivers/infiniband/core/cma.c id_priv->cm_id.iw = NULL; id_priv 3915 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv; id_priv 3918 drivers/infiniband/core/cma.c id_priv = container_of(id, struct rdma_id_private, id); id_priv 3919 drivers/infiniband/core/cma.c if (!cma_comp_exch(id_priv, RDMA_CM_ROUTE_RESOLVED, RDMA_CM_CONNECT)) id_priv 3923 drivers/infiniband/core/cma.c id_priv->qp_num = conn_param->qp_num; id_priv 3924 drivers/infiniband/core/cma.c id_priv->srq = conn_param->srq; id_priv 3929 drivers/infiniband/core/cma.c ret = cma_resolve_ib_udp(id_priv, conn_param); id_priv 3931 drivers/infiniband/core/cma.c ret = cma_connect_ib(id_priv, conn_param); id_priv 3933 drivers/infiniband/core/cma.c ret = cma_connect_iw(id_priv, conn_param); id_priv 3941 drivers/infiniband/core/cma.c cma_comp_exch(id_priv, RDMA_CM_CONNECT, RDMA_CM_ROUTE_RESOLVED); id_priv 3946 drivers/infiniband/core/cma.c static int cma_accept_ib(struct rdma_id_private *id_priv, id_priv 3952 drivers/infiniband/core/cma.c ret = cma_modify_qp_rtr(id_priv, conn_param); id_priv 3956 drivers/infiniband/core/cma.c ret = cma_modify_qp_rts(id_priv, conn_param); id_priv 3961 drivers/infiniband/core/cma.c rep.qp_num = id_priv->qp_num; id_priv 3962 drivers/infiniband/core/cma.c rep.starting_psn = id_priv->seq_num; id_priv 3970 drivers/infiniband/core/cma.c rep.srq = id_priv->srq ? 1 : 0; id_priv 3972 drivers/infiniband/core/cma.c ret = ib_send_cm_rep(id_priv->cm_id.ib, &rep); id_priv 3977 drivers/infiniband/core/cma.c static int cma_accept_iw(struct rdma_id_private *id_priv, id_priv 3986 drivers/infiniband/core/cma.c ret = cma_modify_qp_rtr(id_priv, conn_param); id_priv 3994 drivers/infiniband/core/cma.c if (id_priv->id.qp) { id_priv 3995 drivers/infiniband/core/cma.c iw_param.qpn = id_priv->qp_num; id_priv 3999 drivers/infiniband/core/cma.c return iw_cm_accept(id_priv->cm_id.iw, &iw_param); id_priv 4002 drivers/infiniband/core/cma.c static int cma_send_sidr_rep(struct rdma_id_private *id_priv, id_priv 4012 drivers/infiniband/core/cma.c ret = cma_set_qkey(id_priv, qkey); id_priv 4015 drivers/infiniband/core/cma.c rep.qp_num = id_priv->qp_num; id_priv 4016 drivers/infiniband/core/cma.c rep.qkey = id_priv->qkey; id_priv 4021 drivers/infiniband/core/cma.c return ib_send_cm_sidr_rep(id_priv->cm_id.ib, &rep); id_priv 4027 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv; id_priv 4030 drivers/infiniband/core/cma.c id_priv = container_of(id, struct rdma_id_private, id); id_priv 4032 drivers/infiniband/core/cma.c rdma_restrack_set_task(&id_priv->res, caller); id_priv 4034 drivers/infiniband/core/cma.c if (!cma_comp(id_priv, RDMA_CM_CONNECT)) id_priv 4038 drivers/infiniband/core/cma.c id_priv->qp_num = conn_param->qp_num; id_priv 4039 drivers/infiniband/core/cma.c id_priv->srq = conn_param->srq; id_priv 4045 drivers/infiniband/core/cma.c ret = cma_send_sidr_rep(id_priv, IB_SIDR_SUCCESS, id_priv 4050 drivers/infiniband/core/cma.c ret = cma_send_sidr_rep(id_priv, IB_SIDR_SUCCESS, id_priv 4054 drivers/infiniband/core/cma.c ret = cma_accept_ib(id_priv, conn_param); id_priv 4056 drivers/infiniband/core/cma.c ret = cma_rep_recv(id_priv); id_priv 4059 drivers/infiniband/core/cma.c ret = cma_accept_iw(id_priv, conn_param); id_priv 4068 drivers/infiniband/core/cma.c cma_modify_qp_err(id_priv); id_priv 4076 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv; id_priv 4079 drivers/infiniband/core/cma.c id_priv = container_of(id, struct rdma_id_private, id); id_priv 4080 drivers/infiniband/core/cma.c if (!id_priv->cm_id.ib) id_priv 4085 drivers/infiniband/core/cma.c ret = ib_cm_notify(id_priv->cm_id.ib, event); id_priv 4098 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv; id_priv 4101 drivers/infiniband/core/cma.c id_priv = container_of(id, struct rdma_id_private, id); id_priv 4102 drivers/infiniband/core/cma.c if (!id_priv->cm_id.ib) id_priv 4107 drivers/infiniband/core/cma.c ret = cma_send_sidr_rep(id_priv, IB_SIDR_REJECT, 0, id_priv 4110 drivers/infiniband/core/cma.c ret = ib_send_cm_rej(id_priv->cm_id.ib, id_priv 4114 drivers/infiniband/core/cma.c ret = iw_cm_reject(id_priv->cm_id.iw, id_priv 4125 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv; id_priv 4128 drivers/infiniband/core/cma.c id_priv = container_of(id, struct rdma_id_private, id); id_priv 4129 drivers/infiniband/core/cma.c if (!id_priv->cm_id.ib) id_priv 4133 drivers/infiniband/core/cma.c ret = cma_modify_qp_err(id_priv); id_priv 4137 drivers/infiniband/core/cma.c if (ib_send_cm_dreq(id_priv->cm_id.ib, NULL, 0)) id_priv 4138 drivers/infiniband/core/cma.c ib_send_cm_drep(id_priv->cm_id.ib, NULL, 0); id_priv 4140 drivers/infiniband/core/cma.c ret = iw_cm_disconnect(id_priv->cm_id.iw, 0); id_priv 4151 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv; id_priv 4156 drivers/infiniband/core/cma.c id_priv = mc->id_priv; id_priv 4157 drivers/infiniband/core/cma.c mutex_lock(&id_priv->handler_mutex); id_priv 4158 drivers/infiniband/core/cma.c if (id_priv->state != RDMA_CM_ADDR_BOUND && id_priv 4159 drivers/infiniband/core/cma.c id_priv->state != RDMA_CM_ADDR_RESOLVED) id_priv 4163 drivers/infiniband/core/cma.c status = cma_set_qkey(id_priv, be32_to_cpu(multicast->rec.qkey)); id_priv 4167 drivers/infiniband/core/cma.c mutex_lock(&id_priv->qp_mutex); id_priv 4168 drivers/infiniband/core/cma.c if (!status && id_priv->id.qp) { id_priv 4169 drivers/infiniband/core/cma.c status = ib_attach_mcast(id_priv->id.qp, &multicast->rec.mgid, id_priv 4175 drivers/infiniband/core/cma.c mutex_unlock(&id_priv->qp_mutex); id_priv 4181 drivers/infiniband/core/cma.c &id_priv->id.route.addr.dev_addr; id_priv 4185 drivers/infiniband/core/cma.c id_priv->cma_dev->default_gid_type[id_priv->id.port_num - id_priv 4186 drivers/infiniband/core/cma.c rdma_start_port(id_priv->cma_dev->device)]; id_priv 4189 drivers/infiniband/core/cma.c ret = ib_init_ah_from_mcmember(id_priv->id.device, id_priv 4190 drivers/infiniband/core/cma.c id_priv->id.port_num, id_priv 4204 drivers/infiniband/core/cma.c ret = id_priv->id.event_handler(&id_priv->id, &event); id_priv 4208 drivers/infiniband/core/cma.c cma_exch(id_priv, RDMA_CM_DESTROYING); id_priv 4209 drivers/infiniband/core/cma.c mutex_unlock(&id_priv->handler_mutex); id_priv 4210 drivers/infiniband/core/cma.c rdma_destroy_id(&id_priv->id); id_priv 4215 drivers/infiniband/core/cma.c mutex_unlock(&id_priv->handler_mutex); id_priv 4219 drivers/infiniband/core/cma.c static void cma_set_mgid(struct rdma_id_private *id_priv, id_priv 4223 drivers/infiniband/core/cma.c struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr; id_priv 4238 drivers/infiniband/core/cma.c if (id_priv->id.ps == RDMA_PS_UDP) id_priv 4243 drivers/infiniband/core/cma.c if (id_priv->id.ps == RDMA_PS_UDP) id_priv 4249 drivers/infiniband/core/cma.c static int cma_join_ib_multicast(struct rdma_id_private *id_priv, id_priv 4253 drivers/infiniband/core/cma.c struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr; id_priv 4258 drivers/infiniband/core/cma.c ret = ib_sa_get_mcmember_rec(id_priv->id.device, id_priv->id.port_num, id_priv 4263 drivers/infiniband/core/cma.c ret = cma_set_qkey(id_priv, 0); id_priv 4267 drivers/infiniband/core/cma.c cma_set_mgid(id_priv, (struct sockaddr *) &mc->addr, &rec.mgid); id_priv 4268 drivers/infiniband/core/cma.c rec.qkey = cpu_to_be32(id_priv->qkey); id_priv 4275 drivers/infiniband/core/cma.c id_priv->id.device, id_priv 4276 drivers/infiniband/core/cma.c id_priv->id.port_num))) { id_priv 4278 drivers/infiniband/core/cma.c &id_priv->id.device->dev, id_priv 4280 drivers/infiniband/core/cma.c id_priv->id.port_num); id_priv 4290 drivers/infiniband/core/cma.c if (id_priv->id.ps == RDMA_PS_IPOIB) id_priv 4297 drivers/infiniband/core/cma.c mc->multicast.ib = ib_sa_join_multicast(&sa_client, id_priv->id.device, id_priv 4298 drivers/infiniband/core/cma.c id_priv->id.port_num, &rec, id_priv 4345 drivers/infiniband/core/cma.c static int cma_iboe_join_multicast(struct rdma_id_private *id_priv, id_priv 4349 drivers/infiniband/core/cma.c struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr; id_priv 4371 drivers/infiniband/core/cma.c gid_type = id_priv->cma_dev->default_gid_type[id_priv->id.port_num - id_priv 4372 drivers/infiniband/core/cma.c rdma_start_port(id_priv->cma_dev->device)]; id_priv 4376 drivers/infiniband/core/cma.c if (id_priv->id.ps == RDMA_PS_UDP) id_priv 4407 drivers/infiniband/core/cma.c rdma_ip2gid((struct sockaddr *)&id_priv->id.route.addr.src_addr, id_priv 4409 drivers/infiniband/core/cma.c work->id = id_priv; id_priv 4427 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv; id_priv 4434 drivers/infiniband/core/cma.c id_priv = container_of(id, struct rdma_id_private, id); id_priv 4435 drivers/infiniband/core/cma.c if (!cma_comp(id_priv, RDMA_CM_ADDR_BOUND) && id_priv 4436 drivers/infiniband/core/cma.c !cma_comp(id_priv, RDMA_CM_ADDR_RESOLVED)) id_priv 4445 drivers/infiniband/core/cma.c mc->id_priv = id_priv; id_priv 4450 drivers/infiniband/core/cma.c ret = cma_iboe_join_multicast(id_priv, mc); id_priv 4454 drivers/infiniband/core/cma.c ret = cma_join_ib_multicast(id_priv, mc); id_priv 4462 drivers/infiniband/core/cma.c spin_lock(&id_priv->lock); id_priv 4463 drivers/infiniband/core/cma.c list_add(&mc->list, &id_priv->mc_list); id_priv 4464 drivers/infiniband/core/cma.c spin_unlock(&id_priv->lock); id_priv 4475 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv; id_priv 4478 drivers/infiniband/core/cma.c id_priv = container_of(id, struct rdma_id_private, id); id_priv 4479 drivers/infiniband/core/cma.c spin_lock_irq(&id_priv->lock); id_priv 4480 drivers/infiniband/core/cma.c list_for_each_entry(mc, &id_priv->mc_list, list) { id_priv 4483 drivers/infiniband/core/cma.c spin_unlock_irq(&id_priv->lock); id_priv 4490 drivers/infiniband/core/cma.c BUG_ON(id_priv->cma_dev->device != id->device); id_priv 4496 drivers/infiniband/core/cma.c cma_leave_roce_mc_group(id_priv, mc); id_priv 4501 drivers/infiniband/core/cma.c spin_unlock_irq(&id_priv->lock); id_priv 4505 drivers/infiniband/core/cma.c static int cma_netdev_change(struct net_device *ndev, struct rdma_id_private *id_priv) id_priv 4510 drivers/infiniband/core/cma.c dev_addr = &id_priv->id.route.addr.dev_addr; id_priv 4516 drivers/infiniband/core/cma.c ndev->name, &id_priv->id); id_priv 4522 drivers/infiniband/core/cma.c work->id = id_priv; id_priv 4524 drivers/infiniband/core/cma.c atomic_inc(&id_priv->refcount); id_priv 4536 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv; id_priv 4547 drivers/infiniband/core/cma.c list_for_each_entry(id_priv, &cma_dev->id_list, list) { id_priv 4548 drivers/infiniband/core/cma.c ret = cma_netdev_change(ndev, id_priv); id_priv 4565 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv; id_priv 4605 drivers/infiniband/core/cma.c list_for_each_entry(id_priv, &listen_any_list, list) id_priv 4606 drivers/infiniband/core/cma.c cma_listen_on_dev(id_priv, cma_dev); id_priv 4620 drivers/infiniband/core/cma.c static int cma_remove_id_dev(struct rdma_id_private *id_priv) id_priv 4627 drivers/infiniband/core/cma.c state = cma_exch(id_priv, RDMA_CM_DEVICE_REMOVAL); id_priv 4631 drivers/infiniband/core/cma.c cma_cancel_operation(id_priv, state); id_priv 4632 drivers/infiniband/core/cma.c mutex_lock(&id_priv->handler_mutex); id_priv 4635 drivers/infiniband/core/cma.c if (!cma_comp(id_priv, RDMA_CM_DEVICE_REMOVAL)) id_priv 4639 drivers/infiniband/core/cma.c ret = id_priv->id.event_handler(&id_priv->id, &event); id_priv 4641 drivers/infiniband/core/cma.c mutex_unlock(&id_priv->handler_mutex); id_priv 4647 drivers/infiniband/core/cma.c struct rdma_id_private *id_priv; id_priv 4652 drivers/infiniband/core/cma.c id_priv = list_entry(cma_dev->id_list.next, id_priv 4655 drivers/infiniband/core/cma.c list_del(&id_priv->listen_list); id_priv 4656 drivers/infiniband/core/cma.c list_del_init(&id_priv->list); id_priv 4657 drivers/infiniband/core/cma.c atomic_inc(&id_priv->refcount); id_priv 4660 drivers/infiniband/core/cma.c ret = id_priv->internal_id ? 1 : cma_remove_id_dev(id_priv); id_priv 4661 drivers/infiniband/core/cma.c cma_deref_id(id_priv); id_priv 4663 drivers/infiniband/core/cma.c rdma_destroy_id(&id_priv->id); id_priv 490 drivers/infiniband/core/nldev.c struct rdma_id_private *id_priv = id_priv 492 drivers/infiniband/core/nldev.c struct ib_device *dev = id_priv->id.device; id_priv 493 drivers/infiniband/core/nldev.c struct rdma_cm_id *cm_id = &id_priv->id; id_priv 502 drivers/infiniband/core/nldev.c if (id_priv->qp_num) { id_priv 503 drivers/infiniband/core/nldev.c if (nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_LQPN, id_priv->qp_num)) id_priv 512 drivers/infiniband/core/nldev.c if (nla_put_u8(msg, RDMA_NLDEV_ATTR_RES_STATE, id_priv->state))