[infiniband] Always create an SMA and a GMA

This commit is contained in:
Michael Brown
2009-07-09 03:49:37 +01:00
parent 80c41b90d2
commit 92cf240020
9 changed files with 299 additions and 390 deletions

View File

@@ -12,13 +12,9 @@ FILE_LICENCE ( GPL2_OR_LATER );
#include <gpxe/list.h>
#include <gpxe/retry.h>
#include <gpxe/tables.h>
#include <gpxe/infiniband.h>
struct ib_device;
struct ib_completion_queue;
struct ib_queue_pair;
union ib_mad;
struct ib_gma;
enum ib_queue_pair_type;
/** A GMA attribute handler */
struct ib_gma_handler {
@@ -68,8 +64,8 @@ struct ib_gma {
extern int ib_gma_request ( struct ib_gma *gma, union ib_mad *mad,
struct ib_address_vector *av, int retry );
extern int ib_create_gma ( struct ib_gma *gma, struct ib_device *ibdev,
enum ib_queue_pair_type type );
extern struct ib_gma * ib_create_gma ( struct ib_device *ibdev,
enum ib_queue_pair_type type );
extern void ib_destroy_gma ( struct ib_gma *gma );
#endif /* _GPXE_IB_GMA_H */

View File

@@ -1,24 +0,0 @@
#ifndef _GPXE_IB_SMA_H
#define _GPXE_IB_SMA_H
/** @file
*
* Infiniband Subnet Management Agent
*
*/
FILE_LICENCE ( GPL2_OR_LATER );
#include <gpxe/infiniband.h>
#include <gpxe/ib_gma.h>
/** An Infiniband Subnet Management Agent */
struct ib_sma {
/** General management agent */
struct ib_gma gma;
};
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 */

View File

@@ -14,7 +14,6 @@ FILE_LICENCE ( GPL2_OR_LATER );
#include <gpxe/device.h>
#include <gpxe/ib_packet.h>
#include <gpxe/ib_mad.h>
#include <gpxe/ib_gma.h>
/** Subnet management QPN */
#define IB_QPN_SMA 0
@@ -46,6 +45,7 @@ struct ib_device;
struct ib_queue_pair;
struct ib_address_vector;
struct ib_completion_queue;
struct ib_gma;
/** An Infiniband Work Queue */
struct ib_work_queue {
@@ -387,8 +387,10 @@ struct ib_device {
/** Outbound packet sequence number */
uint32_t psn;
/** Subnet management agent */
struct ib_gma *sma;
/** General management agent */
struct ib_gma gma;
struct ib_gma *gma;
/** Driver private data */
void *drv_priv;