12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- #ifndef _IPXE_IB_MCAST_H
- #define _IPXE_IB_MCAST_H
-
- /** @file
- *
- * Infiniband multicast groups
- *
- */
-
- FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
-
- #include <ipxe/infiniband.h>
-
- 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 */
|