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))