ib_mcast.h File Reference

Infiniband multicast groups. More...

#include <gpxe/infiniband.h>

Go to the source code of this file.

Data Structures

struct  ib_mc_membership
 An Infiniband multicast group membership. More...

Functions

 FILE_LICENCE (GPL2_OR_LATER)
int ib_mcast_join (struct ib_device *ibdev, struct ib_queue_pair *qp, struct ib_mc_membership *membership, struct ib_gid *gid, void(*joined)(struct ib_device *ibdev, struct ib_queue_pair *qp, struct ib_mc_membership *memb, int rc, union ib_mad *mad))
void ib_mcast_leave (struct ib_device *ibdev, struct ib_queue_pair *qp, struct ib_mc_membership *membership)
 Leave multicast group.


Detailed Description

Infiniband multicast groups.

Definition in file ib_mcast.h.


Function Documentation

FILE_LICENCE ( GPL2_OR_LATER   ) 

int ib_mcast_join ( struct ib_device ibdev,
struct ib_queue_pair qp,
struct ib_mc_membership membership,
struct ib_gid gid,
void(*)(struct ib_device *ibdev, struct ib_queue_pair *qp, struct ib_mc_membership *memb, int rc, union ib_mad *mad)  joined 
)

void ib_mcast_leave ( struct ib_device ibdev,
struct ib_queue_pair qp,
struct ib_mc_membership membership 
)

Leave multicast group.

Parameters:
ibdev Infiniband device
qp Queue pair
membership Multicast group membership

Definition at line 192 of file ib_mcast.c.

References DBGC, ib_gid::dwords, ib_mc_membership::gid, ib_device::gsi, ib_destroy_madx(), ib_mcast_detach(), ib_mcast_mad(), ib_mi_send(), ib_mc_membership::madx, ntohl, NULL, ib_queue_pair::qpn, strerror(), and ib_gid::u.

Referenced by ipoib_leave_broadcast_group().

00193                                                             {
00194         struct ib_gid *gid = &membership->gid;
00195         union ib_mad mad;
00196         int rc;
00197 
00198         DBGC ( ibdev, "IBDEV %p QPN %lx leaving %08x:%08x:%08x:%08x\n",
00199                ibdev, qp->qpn, ntohl ( gid->u.dwords[0] ),
00200                ntohl ( gid->u.dwords[1] ), ntohl ( gid->u.dwords[2] ),
00201                ntohl ( gid->u.dwords[3] ) );
00202 
00203         /* Detach from multicast GID */
00204         ib_mcast_detach ( ibdev, qp, &membership->gid );
00205 
00206         /* Cancel multicast membership join, if applicable */
00207         if ( membership->madx ) {
00208                 ib_destroy_madx ( ibdev, ibdev->gsi, membership->madx );
00209                 membership->madx = NULL;
00210         }
00211 
00212         /* Send a single group leave MAD */
00213         ib_mcast_mad ( ibdev, &membership->gid, 0, &mad );
00214         if ( ( rc = ib_mi_send ( ibdev, ibdev->gsi, &mad, NULL ) ) != 0 ) {
00215                 DBGC ( ibdev, "IBDEV %p QPN %lx could not send leave request: "
00216                        "%s\n", ibdev, qp->qpn, strerror ( rc ) );
00217         }
00218 }


Generated on Tue Apr 6 20:01:50 2010 for gPXE by  doxygen 1.5.7.1