#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. | |
Definition in file ib_mcast.h.
| 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.
| 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 }
1.5.7.1