summaryrefslogtreecommitdiffstats
path: root/src/include
diff options
context:
space:
mode:
Diffstat (limited to 'src/include')
-rw-r--r--src/include/gpxe/ib_gma.h2
-rw-r--r--src/include/gpxe/ib_mad.h3
-rw-r--r--src/include/gpxe/ib_sma.h43
-rw-r--r--src/include/gpxe/infiniband.h12
4 files changed, 21 insertions, 39 deletions
diff --git a/src/include/gpxe/ib_gma.h b/src/include/gpxe/ib_gma.h
index 04955e5cf..d24b32dbe 100644
--- a/src/include/gpxe/ib_gma.h
+++ b/src/include/gpxe/ib_gma.h
@@ -23,6 +23,8 @@ struct ib_gma;
struct ib_gma_handler {
/** Management class */
uint8_t mgmt_class;
+ /** Management class don't-care bits */
+ uint8_t mgmt_class_ignore;
/** Class version */
uint8_t class_version;
/** Method */
diff --git a/src/include/gpxe/ib_mad.h b/src/include/gpxe/ib_mad.h
index d4582c342..75bf271e8 100644
--- a/src/include/gpxe/ib_mad.h
+++ b/src/include/gpxe/ib_mad.h
@@ -30,6 +30,9 @@ 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_sma.h b/src/include/gpxe/ib_sma.h
index dadcdff2e..38cb6a2d0 100644
--- a/src/include/gpxe/ib_sma.h
+++ b/src/include/gpxe/ib_sma.h
@@ -10,50 +10,15 @@
FILE_LICENCE ( GPL2_OR_LATER );
#include <gpxe/infiniband.h>
-
-/** Infiniband Subnet Management Agent operations */
-struct ib_sma_operations {
- /** Set port information
- *
- * @v ibdev Infiniband device
- * @v port_info New port information
- */
- int ( * set_port_info ) ( struct ib_device *ibdev,
- const struct ib_port_info *port_info );
-};
+#include <gpxe/ib_gma.h>
/** An Infiniband Subnet Management Agent */
struct ib_sma {
- /** Infiniband device */
- struct ib_device *ibdev;
- /** SMA operations */
- struct ib_sma_operations *op;
- /** SMA completion queue */
- struct ib_completion_queue *cq;
- /** SMA queue pair */
- struct ib_queue_pair *qp;
+ /** General management agent */
+ struct ib_gma gma;
};
-/** SMA number of send WQEs
- *
- * This is a policy decision.
- */
-#define IB_SMA_NUM_SEND_WQES 4
-
-/** SMA number of receive WQEs
- *
- * This is a policy decision.
- */
-#define IB_SMA_NUM_RECV_WQES 2
-
-/** SMA number of completion queue entries
- *
- * This is a policy decision
- */
-#define IB_SMA_NUM_CQES 8
-
-extern int ib_create_sma ( struct ib_sma *sma, struct ib_device *ibdev,
- struct ib_sma_operations *op );
+extern int ib_create_sma ( struct ib_sma *sma, struct ib_device *ibdev );
extern void ib_destroy_sma ( struct ib_sma *sma );
#endif /* _GPXE_IB_SMA_H */
diff --git a/src/include/gpxe/infiniband.h b/src/include/gpxe/infiniband.h
index 3ffd5e665..c00388e58 100644
--- a/src/include/gpxe/infiniband.h
+++ b/src/include/gpxe/infiniband.h
@@ -327,6 +327,16 @@ struct ib_device_operations {
void ( * mcast_detach ) ( struct ib_device *ibdev,
struct ib_queue_pair *qp,
struct ib_gid *gid );
+ /** Set port information
+ *
+ * @v ibdev Infiniband device
+ * @v port_info New port information
+ *
+ * This method is required only by adapters that do not have
+ * an embedded SMA.
+ */
+ int ( * set_port_info ) ( struct ib_device *ibdev,
+ const struct ib_port_info *port_info );
};
/** An Infiniband device */
@@ -420,6 +430,8 @@ extern void ib_mcast_detach ( struct ib_device *ibdev,
struct ib_queue_pair *qp, struct ib_gid *gid );
extern int ib_get_hca_info ( struct ib_device *ibdev,
struct ib_gid_half *hca_guid );
+extern int ib_set_port_info ( struct ib_device *ibdev,
+ const struct ib_port_info *port_info );
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 );