From 44251ebb9a9689329dd8f0cf571324cf07ad7e75 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Mon, 3 Aug 2009 17:47:55 +0100 Subject: [infiniband] Update subnet management agent to use a management interface --- src/include/gpxe/ib_mad.h | 3 --- src/include/gpxe/ib_packet.h | 6 +++++- src/include/gpxe/ib_sma.h | 20 ++++++++++++++++++++ src/include/gpxe/infiniband.h | 5 +++-- 4 files changed, 28 insertions(+), 6 deletions(-) create mode 100644 src/include/gpxe/ib_sma.h (limited to 'src/include') diff --git a/src/include/gpxe/ib_mad.h b/src/include/gpxe/ib_mad.h index cfd8ef9aa..ac9a1d4b0 100644 --- a/src/include/gpxe/ib_mad.h +++ b/src/include/gpxe/ib_mad.h @@ -30,9 +30,6 @@ struct ib_smp_hdr { uint8_t reserved[28]; } __attribute__ (( packed )); -/** Bits to ignore in the management class for subnet management MADs */ -#define IB_SMP_CLASS_IGNORE 0x80 - /** Subnet management class version */ #define IB_SMP_CLASS_VERSION 1 diff --git a/src/include/gpxe/ib_packet.h b/src/include/gpxe/ib_packet.h index a014352ea..d46885969 100644 --- a/src/include/gpxe/ib_packet.h +++ b/src/include/gpxe/ib_packet.h @@ -16,7 +16,11 @@ struct io_buffer; /** Half of an Infiniband Global Identifier */ struct ib_gid_half { - uint8_t bytes[8]; + union { + uint8_t bytes[8]; + uint16_t words[4]; + uint32_t dwords[2]; + } u; }; /** An Infiniband Global Identifier */ diff --git a/src/include/gpxe/ib_sma.h b/src/include/gpxe/ib_sma.h new file mode 100644 index 000000000..78fc67295 --- /dev/null +++ b/src/include/gpxe/ib_sma.h @@ -0,0 +1,20 @@ +#ifndef _GPXE_IB_SMA_H +#define _GPXE_IB_SMA_H + +/** @file + * + * Infiniband subnet management agent + * + */ + +FILE_LICENCE ( GPL2_OR_LATER ); + +struct ib_device; +struct ib_mad_interface; + +extern int ib_create_sma ( struct ib_device *ibdev, + struct ib_mad_interface *mi ); +extern void ib_destroy_sma ( struct ib_device *ibdev, + struct ib_mad_interface *mi ); + +#endif /* _GPXE_IB_SMA_H */ diff --git a/src/include/gpxe/infiniband.h b/src/include/gpxe/infiniband.h index 2581b17bc..d300a77bb 100644 --- a/src/include/gpxe/infiniband.h +++ b/src/include/gpxe/infiniband.h @@ -45,6 +45,7 @@ struct ib_device; struct ib_queue_pair; struct ib_address_vector; struct ib_completion_queue; +struct ib_mad_interface; struct ib_gma; /** Infiniband transmission rates */ @@ -413,8 +414,8 @@ struct ib_device { */ uint32_t rdma_key; - /** Subnet management agent */ - struct ib_gma *sma; + /** Subnet management interface */ + struct ib_mad_interface *smi; /** General management agent */ struct ib_gma *gma; -- cgit v1.2.3-55-g7522