Lines Matching refs:grp
16 struct rxe_mc_grp *grp; in create_grp() local
18 grp = rxe_alloc_locked(&rxe->mc_grp_pool); in create_grp()
19 if (!grp) in create_grp()
22 INIT_LIST_HEAD(&grp->qp_list); in create_grp()
23 spin_lock_init(&grp->mcg_lock); in create_grp()
24 grp->rxe = rxe; in create_grp()
25 rxe_add_key_locked(grp, mgid); in create_grp()
29 rxe_drop_key_locked(grp); in create_grp()
30 rxe_drop_ref(grp); in create_grp()
34 return grp; in create_grp()
41 struct rxe_mc_grp *grp; in rxe_mcast_get_grp() local
50 grp = rxe_pool_get_key_locked(pool, mgid); in rxe_mcast_get_grp()
51 if (grp) in rxe_mcast_get_grp()
54 grp = create_grp(rxe, pool, mgid); in rxe_mcast_get_grp()
55 if (IS_ERR(grp)) { in rxe_mcast_get_grp()
57 err = PTR_ERR(grp); in rxe_mcast_get_grp()
63 *grp_p = grp; in rxe_mcast_get_grp()
68 struct rxe_mc_grp *grp) in rxe_mcast_add_grp_elem() argument
75 spin_lock_bh(&grp->mcg_lock); in rxe_mcast_add_grp_elem()
76 list_for_each_entry(elem, &grp->qp_list, qp_list) { in rxe_mcast_add_grp_elem()
83 if (grp->num_qp >= rxe->attr.max_mcast_qp_attach) { in rxe_mcast_add_grp_elem()
95 rxe_add_ref(grp); in rxe_mcast_add_grp_elem()
97 grp->num_qp++; in rxe_mcast_add_grp_elem()
99 elem->grp = grp; in rxe_mcast_add_grp_elem()
101 list_add(&elem->qp_list, &grp->qp_list); in rxe_mcast_add_grp_elem()
106 spin_unlock_bh(&grp->mcg_lock); in rxe_mcast_add_grp_elem()
114 struct rxe_mc_grp *grp; in rxe_mcast_drop_grp_elem() local
117 grp = rxe_pool_get_key(&rxe->mc_grp_pool, mgid); in rxe_mcast_drop_grp_elem()
118 if (!grp) in rxe_mcast_drop_grp_elem()
122 spin_lock_bh(&grp->mcg_lock); in rxe_mcast_drop_grp_elem()
124 list_for_each_entry_safe(elem, tmp, &grp->qp_list, qp_list) { in rxe_mcast_drop_grp_elem()
128 grp->num_qp--; in rxe_mcast_drop_grp_elem()
130 spin_unlock_bh(&grp->mcg_lock); in rxe_mcast_drop_grp_elem()
133 rxe_drop_ref(grp); /* ref held by QP */ in rxe_mcast_drop_grp_elem()
134 rxe_drop_ref(grp); /* ref from get_key */ in rxe_mcast_drop_grp_elem()
139 spin_unlock_bh(&grp->mcg_lock); in rxe_mcast_drop_grp_elem()
141 rxe_drop_ref(grp); /* ref from get_key */ in rxe_mcast_drop_grp_elem()
148 struct rxe_mc_grp *grp; in rxe_drop_all_mcast_groups() local
162 grp = elem->grp; in rxe_drop_all_mcast_groups()
163 spin_lock_bh(&grp->mcg_lock); in rxe_drop_all_mcast_groups()
165 grp->num_qp--; in rxe_drop_all_mcast_groups()
166 spin_unlock_bh(&grp->mcg_lock); in rxe_drop_all_mcast_groups()
167 rxe_drop_ref(grp); in rxe_drop_all_mcast_groups()
174 struct rxe_mc_grp *grp = container_of(arg, typeof(*grp), pelem); in rxe_mc_cleanup() local
175 struct rxe_dev *rxe = grp->rxe; in rxe_mc_cleanup()
177 rxe_drop_key(grp); in rxe_mc_cleanup()
178 rxe_mcast_delete(rxe, &grp->mgid); in rxe_mc_cleanup()