Lines Matching refs:mc

261 	struct cma_multicast	*mc;  member
357 struct cma_multicast *mc = container_of(kref, struct cma_multicast, mcref); in release_mc() local
359 kfree(mc->multicast.ib); in release_mc()
360 kfree(mc); in release_mc()
1430 struct cma_multicast *mc; in cma_leave_mc_groups() local
1433 mc = container_of(id_priv->mc_list.next, in cma_leave_mc_groups()
1435 list_del(&mc->list); in cma_leave_mc_groups()
1438 ib_sa_free_multicast(mc->multicast.ib); in cma_leave_mc_groups()
1439 kfree(mc); in cma_leave_mc_groups()
1441 kref_put(&mc->mcref, release_mc); in cma_leave_mc_groups()
3516 struct cma_multicast *mc = multicast->context; in cma_ib_mc_handler() local
3520 id_priv = mc->id_priv; in cma_ib_mc_handler()
3535 event.param.ud.private_data = mc->context; in cma_ib_mc_handler()
3589 struct cma_multicast *mc) in cma_join_ib_multicast() argument
3606 cma_set_mgid(id_priv, (struct sockaddr *) &mc->addr, &rec.mgid); in cma_join_ib_multicast()
3625 mc->multicast.ib = ib_sa_join_multicast(&sa_client, id_priv->id.device, in cma_join_ib_multicast()
3628 cma_ib_mc_handler, mc); in cma_join_ib_multicast()
3629 return PTR_ERR_OR_ZERO(mc->multicast.ib); in cma_join_ib_multicast()
3635 struct cma_multicast *mc = mw->mc; in iboe_mcast_work_handler() local
3636 struct ib_sa_multicast *m = mc->multicast.ib; in iboe_mcast_work_handler()
3638 mc->multicast.ib->context = mc; in iboe_mcast_work_handler()
3640 kref_put(&mc->mcref, release_mc); in iboe_mcast_work_handler()
3671 struct cma_multicast *mc) in cma_iboe_join_multicast() argument
3676 struct sockaddr *addr = (struct sockaddr *)&mc->addr; in cma_iboe_join_multicast()
3679 if (cma_zero_addr((struct sockaddr *)&mc->addr)) in cma_iboe_join_multicast()
3686 mc->multicast.ib = kzalloc(sizeof(struct ib_sa_multicast), GFP_KERNEL); in cma_iboe_join_multicast()
3687 if (!mc->multicast.ib) { in cma_iboe_join_multicast()
3692 cma_iboe_set_mgid(addr, &mc->multicast.ib->rec.mgid); in cma_iboe_join_multicast()
3694 mc->multicast.ib->rec.pkey = cpu_to_be16(0xffff); in cma_iboe_join_multicast()
3696 mc->multicast.ib->rec.qkey = cpu_to_be32(RDMA_UDP_QKEY); in cma_iboe_join_multicast()
3704 mc->multicast.ib->rec.rate = iboe_get_rate(ndev); in cma_iboe_join_multicast()
3705 mc->multicast.ib->rec.hop_limit = 1; in cma_iboe_join_multicast()
3706 mc->multicast.ib->rec.mtu = iboe_get_mtu(ndev->mtu); in cma_iboe_join_multicast()
3708 if (!mc->multicast.ib->rec.mtu) { in cma_iboe_join_multicast()
3713 &mc->multicast.ib->rec.port_gid); in cma_iboe_join_multicast()
3715 work->mc = mc; in cma_iboe_join_multicast()
3717 kref_get(&mc->mcref); in cma_iboe_join_multicast()
3723 kfree(mc->multicast.ib); in cma_iboe_join_multicast()
3733 struct cma_multicast *mc; in rdma_join_multicast() local
3741 mc = kmalloc(sizeof *mc, GFP_KERNEL); in rdma_join_multicast()
3742 if (!mc) in rdma_join_multicast()
3745 memcpy(&mc->addr, addr, rdma_addr_size(addr)); in rdma_join_multicast()
3746 mc->context = context; in rdma_join_multicast()
3747 mc->id_priv = id_priv; in rdma_join_multicast()
3750 list_add(&mc->list, &id_priv->mc_list); in rdma_join_multicast()
3754 kref_init(&mc->mcref); in rdma_join_multicast()
3755 ret = cma_iboe_join_multicast(id_priv, mc); in rdma_join_multicast()
3757 ret = cma_join_ib_multicast(id_priv, mc); in rdma_join_multicast()
3763 list_del(&mc->list); in rdma_join_multicast()
3765 kfree(mc); in rdma_join_multicast()
3774 struct cma_multicast *mc; in rdma_leave_multicast() local
3778 list_for_each_entry(mc, &id_priv->mc_list, list) { in rdma_leave_multicast()
3779 if (!memcmp(&mc->addr, addr, rdma_addr_size(addr))) { in rdma_leave_multicast()
3780 list_del(&mc->list); in rdma_leave_multicast()
3785 &mc->multicast.ib->rec.mgid, in rdma_leave_multicast()
3786 be16_to_cpu(mc->multicast.ib->rec.mlid)); in rdma_leave_multicast()
3791 ib_sa_free_multicast(mc->multicast.ib); in rdma_leave_multicast()
3792 kfree(mc); in rdma_leave_multicast()
3794 kref_put(&mc->mcref, release_mc); in rdma_leave_multicast()