Lines Matching refs:mc

179 	struct cma_multicast	*mc;  member
266 struct cma_multicast *mc = container_of(kref, struct cma_multicast, mcref); in release_mc() local
268 kfree(mc->multicast.ib); in release_mc()
269 kfree(mc); in release_mc()
1020 struct cma_multicast *mc; in cma_leave_mc_groups() local
1023 mc = container_of(id_priv->mc_list.next, in cma_leave_mc_groups()
1025 list_del(&mc->list); in cma_leave_mc_groups()
1028 ib_sa_free_multicast(mc->multicast.ib); in cma_leave_mc_groups()
1029 kfree(mc); in cma_leave_mc_groups()
1032 kref_put(&mc->mcref, release_mc); in cma_leave_mc_groups()
3143 struct cma_multicast *mc = multicast->context; in cma_ib_mc_handler() local
3147 id_priv = mc->id_priv; in cma_ib_mc_handler()
3162 event.param.ud.private_data = mc->context; in cma_ib_mc_handler()
3216 struct cma_multicast *mc) in cma_join_ib_multicast() argument
3233 cma_set_mgid(id_priv, (struct sockaddr *) &mc->addr, &rec.mgid); in cma_join_ib_multicast()
3252 mc->multicast.ib = ib_sa_join_multicast(&sa_client, id_priv->id.device, in cma_join_ib_multicast()
3255 cma_ib_mc_handler, mc); in cma_join_ib_multicast()
3256 return PTR_ERR_OR_ZERO(mc->multicast.ib); in cma_join_ib_multicast()
3262 struct cma_multicast *mc = mw->mc; in iboe_mcast_work_handler() local
3263 struct ib_sa_multicast *m = mc->multicast.ib; in iboe_mcast_work_handler()
3265 mc->multicast.ib->context = mc; in iboe_mcast_work_handler()
3267 kref_put(&mc->mcref, release_mc); in iboe_mcast_work_handler()
3298 struct cma_multicast *mc) in cma_iboe_join_multicast() argument
3303 struct sockaddr *addr = (struct sockaddr *)&mc->addr; in cma_iboe_join_multicast()
3306 if (cma_zero_addr((struct sockaddr *)&mc->addr)) in cma_iboe_join_multicast()
3313 mc->multicast.ib = kzalloc(sizeof(struct ib_sa_multicast), GFP_KERNEL); in cma_iboe_join_multicast()
3314 if (!mc->multicast.ib) { in cma_iboe_join_multicast()
3319 cma_iboe_set_mgid(addr, &mc->multicast.ib->rec.mgid); in cma_iboe_join_multicast()
3321 mc->multicast.ib->rec.pkey = cpu_to_be16(0xffff); in cma_iboe_join_multicast()
3323 mc->multicast.ib->rec.qkey = cpu_to_be32(RDMA_UDP_QKEY); in cma_iboe_join_multicast()
3331 mc->multicast.ib->rec.rate = iboe_get_rate(ndev); in cma_iboe_join_multicast()
3332 mc->multicast.ib->rec.hop_limit = 1; in cma_iboe_join_multicast()
3333 mc->multicast.ib->rec.mtu = iboe_get_mtu(ndev->mtu); in cma_iboe_join_multicast()
3335 if (!mc->multicast.ib->rec.mtu) { in cma_iboe_join_multicast()
3340 &mc->multicast.ib->rec.port_gid); in cma_iboe_join_multicast()
3342 work->mc = mc; in cma_iboe_join_multicast()
3344 kref_get(&mc->mcref); in cma_iboe_join_multicast()
3350 kfree(mc->multicast.ib); in cma_iboe_join_multicast()
3360 struct cma_multicast *mc; in rdma_join_multicast() local
3368 mc = kmalloc(sizeof *mc, GFP_KERNEL); in rdma_join_multicast()
3369 if (!mc) in rdma_join_multicast()
3372 memcpy(&mc->addr, addr, rdma_addr_size(addr)); in rdma_join_multicast()
3373 mc->context = context; in rdma_join_multicast()
3374 mc->id_priv = id_priv; in rdma_join_multicast()
3377 list_add(&mc->list, &id_priv->mc_list); in rdma_join_multicast()
3384 ret = cma_join_ib_multicast(id_priv, mc); in rdma_join_multicast()
3387 kref_init(&mc->mcref); in rdma_join_multicast()
3388 ret = cma_iboe_join_multicast(id_priv, mc); in rdma_join_multicast()
3401 list_del(&mc->list); in rdma_join_multicast()
3403 kfree(mc); in rdma_join_multicast()
3412 struct cma_multicast *mc; in rdma_leave_multicast() local
3416 list_for_each_entry(mc, &id_priv->mc_list, list) { in rdma_leave_multicast()
3417 if (!memcmp(&mc->addr, addr, rdma_addr_size(addr))) { in rdma_leave_multicast()
3418 list_del(&mc->list); in rdma_leave_multicast()
3423 &mc->multicast.ib->rec.mgid, in rdma_leave_multicast()
3424 be16_to_cpu(mc->multicast.ib->rec.mlid)); in rdma_leave_multicast()
3428 ib_sa_free_multicast(mc->multicast.ib); in rdma_leave_multicast()
3429 kfree(mc); in rdma_leave_multicast()
3432 kref_put(&mc->mcref, release_mc); in rdma_leave_multicast()