#ifndef _IPXE_IB_MCAST_H #define _IPXE_IB_MCAST_H /** @file * * Infiniband multicast groups * */ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include struct ib_mad_transaction; /** An Infiniband multicast group membership */ struct ib_mc_membership { /** Queue pair */ struct ib_queue_pair *qp; /** Address vector */ struct ib_address_vector *av; /** Attached to multicast GID */ int attached; /** Multicast group join transaction */ struct ib_mad_transaction *madx; /** Handle join success/failure * * @v membership Multicast group membership * @v rc Status code */ void ( * complete ) ( struct ib_mc_membership *membership, int rc ); }; extern int ib_mcast_join ( struct ib_device *ibdev, struct ib_queue_pair *qp, struct ib_mc_membership *membership, struct ib_address_vector *av, unsigned int mask, void ( * joined ) ( struct ib_mc_membership *memb, int rc ) ); extern void ib_mcast_leave ( struct ib_device *ibdev, struct ib_queue_pair *qp, struct ib_mc_membership *membership ); #endif /* _IPXE_IB_MCAST_H */