iPXE
ib_mcast.h
Go to the documentation of this file.
00001 #ifndef _IPXE_IB_MCAST_H
00002 #define _IPXE_IB_MCAST_H
00003 
00004 /** @file
00005  *
00006  * Infiniband multicast groups
00007  *
00008  */
00009 
00010 FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
00011 
00012 #include <ipxe/infiniband.h>
00013 
00014 struct ib_mad_transaction;
00015 
00016 /** An Infiniband multicast group membership */
00017 struct ib_mc_membership {
00018         /** Queue pair */
00019         struct ib_queue_pair *qp;
00020         /** Address vector */
00021         struct ib_address_vector *av;
00022         /** Attached to multicast GID */
00023         int attached;
00024         /** Multicast group join transaction */
00025         struct ib_mad_transaction *madx;
00026         /** Handle join success/failure
00027          *
00028          * @v membership        Multicast group membership
00029          * @v rc                Status code
00030          */
00031         void ( * complete ) ( struct ib_mc_membership *membership, int rc );
00032 };
00033 
00034 extern int ib_mcast_join ( struct ib_device *ibdev, struct ib_queue_pair *qp,
00035                            struct ib_mc_membership *membership,
00036                            struct ib_address_vector *av, unsigned int mask,
00037                            void ( * joined ) ( struct ib_mc_membership *memb,
00038                                                int rc ) );
00039 
00040 extern void ib_mcast_leave ( struct ib_device *ibdev, struct ib_queue_pair *qp,
00041                              struct ib_mc_membership *membership );
00042 
00043 #endif /* _IPXE_IB_MCAST_H */