From 419243e7f1ab37c9e7867080e17dcd745fa4f9c0 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Sun, 9 Aug 2009 19:29:03 +0100 Subject: [infiniband] Add find_ibdev() --- src/include/gpxe/infiniband.h | 1 + src/net/infiniband.c | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/src/include/gpxe/infiniband.h b/src/include/gpxe/infiniband.h index c4bc2ff4..771d2a07 100644 --- a/src/include/gpxe/infiniband.h +++ b/src/include/gpxe/infiniband.h @@ -472,6 +472,7 @@ extern int ib_set_pkey_table ( struct ib_device *ibdev, union ib_mad *mad ); extern struct ib_device * alloc_ibdev ( size_t priv_size ); extern int register_ibdev ( struct ib_device *ibdev ); extern void unregister_ibdev ( struct ib_device *ibdev ); +extern struct ib_device * find_ibdev ( struct ib_gid *gid ); extern void ib_link_state_changed ( struct ib_device *ibdev ); extern void ib_poll_eq ( struct ib_device *ibdev ); extern struct list_head ib_devices; diff --git a/src/net/infiniband.c b/src/net/infiniband.c index 539c5290..45f38d9c 100644 --- a/src/net/infiniband.c +++ b/src/net/infiniband.c @@ -882,3 +882,19 @@ void unregister_ibdev ( struct ib_device *ibdev ) { ibdev_put ( ibdev ); DBGC ( ibdev, "IBDEV %p unregistered\n", ibdev ); } + +/** + * Find Infiniband device by GID + * + * @v gid GID + * @ret ibdev Infiniband device, or NULL + */ +struct ib_device * find_ibdev ( struct ib_gid *gid ) { + struct ib_device *ibdev; + + for_each_ibdev ( ibdev ) { + if ( memcmp ( gid, &ibdev->gid, sizeof ( *gid ) ) == 0 ) + return ibdev; + } + return NULL; +} -- cgit v1.2.3-55-g7522