diff options
author | Michael Brown <mcb30@etherboot.org> | 2009-08-09 19:29:03 +0100 |
---|---|---|
committer | Michael Brown <mcb30@etherboot.org> | 2009-08-10 22:25:02 +0100 |
commit | 419243e7f1ab37c9e7867080e17dcd745fa4f9c0 (patch) | |
tree | ca31e5d7fb1b76d225632b959d8e7309e45b75f3 /src | |
parent | 4be11f523c57a22d18a7369fbe9ec6d9f1c88022 (diff) | |
download | ipxe-419243e7f1ab37c9e7867080e17dcd745fa4f9c0.tar.gz |
[infiniband] Add find_ibdev()
Diffstat (limited to 'src')
-rw-r--r-- | src/include/gpxe/infiniband.h | 1 | ||||
-rw-r--r-- | src/net/infiniband.c | 16 |
2 files changed, 17 insertions, 0 deletions
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; +} |