summaryrefslogtreecommitdiffstats
path: root/src/include/ipxe
diff options
context:
space:
mode:
authorMichael Brown2010-09-15 20:25:05 +0200
committerMichael Brown2010-09-15 20:25:05 +0200
commit52e54a8c69351ee1455f8fbf2a9cd5d27d42f7ab (patch)
treed8b88315c25088f824ee97b0b0faf4945311445a /src/include/ipxe
parent[e1000] Strip the Ethernet CRC from received packets (diff)
downloadipxe-52e54a8c69351ee1455f8fbf2a9cd5d27d42f7ab.tar.gz
ipxe-52e54a8c69351ee1455f8fbf2a9cd5d27d42f7ab.tar.xz
ipxe-52e54a8c69351ee1455f8fbf2a9cd5d27d42f7ab.zip
[infiniband] Match GID/GUID terminology as used in the IBA
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/include/ipxe')
-rw-r--r--src/include/ipxe/ib_cm.h4
-rw-r--r--src/include/ipxe/ib_cmrc.h4
-rw-r--r--src/include/ipxe/ib_mad.h24
-rw-r--r--src/include/ipxe/ib_mcast.h4
-rw-r--r--src/include/ipxe/ib_packet.h45
-rw-r--r--src/include/ipxe/ib_srp.h14
-rw-r--r--src/include/ipxe/infiniband.h20
-rw-r--r--src/include/ipxe/ipoib.h2
8 files changed, 65 insertions, 52 deletions
diff --git a/src/include/ipxe/ib_cm.h b/src/include/ipxe/ib_cm.h
index 136e4943b..7d08cd9b1 100644
--- a/src/include/ipxe/ib_cm.h
+++ b/src/include/ipxe/ib_cm.h
@@ -42,7 +42,7 @@ struct ib_connection {
/** Remote communication ID */
uint32_t remote_id;
/** Target service ID */
- struct ib_gid_half service_id;
+ union ib_guid service_id;
/** Connection operations */
struct ib_connection_operations *op;
@@ -62,7 +62,7 @@ struct ib_connection {
extern struct ib_connection *
ib_create_conn ( struct ib_device *ibdev, struct ib_queue_pair *qp,
- struct ib_gid *dgid, struct ib_gid_half *service_id,
+ union ib_gid *dgid, union ib_guid *service_id,
void *req_private_data, size_t req_private_data_len,
struct ib_connection_operations *op );
extern void ib_destroy_conn ( struct ib_device *ibdev,
diff --git a/src/include/ipxe/ib_cmrc.h b/src/include/ipxe/ib_cmrc.h
index 4f2eae69e..47ad27fa6 100644
--- a/src/include/ipxe/ib_cmrc.h
+++ b/src/include/ipxe/ib_cmrc.h
@@ -14,7 +14,7 @@ FILE_LICENCE ( BSD2 );
extern int ib_cmrc_open ( struct interface *xfer,
struct ib_device *ibdev,
- struct ib_gid *dgid,
- struct ib_gid_half *service_id );
+ union ib_gid *dgid,
+ union ib_guid *service_id );
#endif /* _IPXE_IB_CMRC_H */
diff --git a/src/include/ipxe/ib_mad.h b/src/include/ipxe/ib_mad.h
index 23c2657ca..b8694833e 100644
--- a/src/include/ipxe/ib_mad.h
+++ b/src/include/ipxe/ib_mad.h
@@ -75,9 +75,9 @@ struct ib_node_info {
uint8_t class_version;
uint8_t node_type;
uint8_t num_ports;
- struct ib_gid_half sys_guid;
- struct ib_gid_half node_guid;
- struct ib_gid_half port_guid;
+ union ib_guid sys_guid;
+ union ib_guid node_guid;
+ union ib_guid port_guid;
uint16_t partition_cap;
uint16_t device_id;
uint32_t revision;
@@ -221,8 +221,8 @@ struct ib_sa_hdr {
struct ib_path_record {
uint32_t reserved0[2];
- struct ib_gid dgid;
- struct ib_gid sgid;
+ union ib_gid dgid;
+ union ib_gid sgid;
uint16_t dlid;
uint16_t slid;
uint32_t hop_limit__flow_label__raw_traffic;
@@ -239,8 +239,8 @@ struct ib_path_record {
#define IB_SA_PATH_REC_SGID (1<<3)
struct ib_mc_member_record {
- struct ib_gid mgid;
- struct ib_gid port_gid;
+ union ib_gid mgid;
+ union ib_gid port_gid;
uint32_t qkey;
uint16_t mlid;
uint8_t mtu_selector__mtu;
@@ -320,9 +320,9 @@ struct ib_cm_path {
/** Remote port LID */
uint16_t remote_lid;
/** Local port GID */
- struct ib_gid local_gid;
+ union ib_gid local_gid;
/** Remote port GID */
- struct ib_gid remote_gid;
+ union ib_gid remote_gid;
/** Flow label and rate */
uint32_t flow_label__rate;
/** Traffic class */
@@ -345,9 +345,9 @@ struct ib_cm_connect_request {
/** Reserved */
uint32_t reserved0[1];
/** Service ID */
- struct ib_gid_half service_id;
+ union ib_guid service_id;
/** Local CA GUID */
- struct ib_gid_half local_ca;
+ union ib_guid local_ca;
/** Reserved */
uint32_t reserved1[1];
/** Local queue key */
@@ -433,7 +433,7 @@ struct ib_cm_connect_reply {
/** RNR retry count, SRQ */
uint8_t rnr_retry__srq;
/** Local CA GUID */
- struct ib_gid_half local_ca;
+ union ib_guid local_ca;
/** Private data */
uint8_t private_data[196];
} __attribute__ (( packed ));
diff --git a/src/include/ipxe/ib_mcast.h b/src/include/ipxe/ib_mcast.h
index 86d570908..a5c22a03e 100644
--- a/src/include/ipxe/ib_mcast.h
+++ b/src/include/ipxe/ib_mcast.h
@@ -18,7 +18,7 @@ struct ib_mc_membership {
/** Queue pair */
struct ib_queue_pair *qp;
/** Multicast GID */
- struct ib_gid gid;
+ union ib_gid gid;
/** Multicast group join transaction */
struct ib_mad_transaction *madx;
/** Handle join success/failure
@@ -36,7 +36,7 @@ struct ib_mc_membership {
extern int ib_mcast_join ( struct ib_device *ibdev, struct ib_queue_pair *qp,
struct ib_mc_membership *membership,
- struct ib_gid *gid,
+ union ib_gid *gid,
void ( * joined ) ( struct ib_device *ibdev,
struct ib_queue_pair *qp,
struct ib_mc_membership *memb,
diff --git a/src/include/ipxe/ib_packet.h b/src/include/ipxe/ib_packet.h
index 09042957b..4bd335764 100644
--- a/src/include/ipxe/ib_packet.h
+++ b/src/include/ipxe/ib_packet.h
@@ -14,25 +14,38 @@ struct ib_queue_pair;
struct ib_address_vector;
struct io_buffer;
-/** Half of an Infiniband Global Identifier */
-struct ib_gid_half {
- union {
- uint8_t bytes[8];
- uint16_t words[4];
- uint32_t dwords[2];
- } u;
+/** An Infiniband Globally Unique Identifier */
+union ib_guid {
+ uint8_t bytes[8];
+ uint16_t words[4];
+ uint32_t dwords[2];
};
+/** Infiniband Globally Unique Identifier debug message format */
+#define IB_GUID_FMT "%08x:%08x"
+
+/** Infiniband Globally Unique Identifier debug message arguments */
+#define IB_GUID_ARGS( guid ) \
+ ntohl ( (guid)->dwords[0] ), ntohl ( (guid)->dwords[1] )
+
/** An Infiniband Global Identifier */
-struct ib_gid {
- union {
- uint8_t bytes[16];
- uint16_t words[8];
- uint32_t dwords[4];
- struct ib_gid_half half[2];
- } u;
+union ib_gid {
+ uint8_t bytes[16];
+ uint16_t words[8];
+ uint32_t dwords[4];
+ struct {
+ union ib_guid prefix;
+ union ib_guid guid;
+ } s;
};
+/** Infiniband Global Identifier debug message format */
+#define IB_GID_FMT IB_GUID_FMT ":" IB_GUID_FMT
+
+/** Infiniband Global Identifier debug message arguments */
+#define IB_GID_ARGS( gid ) \
+ IB_GUID_ARGS ( &(gid)->s.prefix ), IB_GUID_ARGS ( &(gid)->s.guid )
+
/** An Infiniband Local Route Header */
struct ib_local_route_header {
/** Virtual lane and link version */
@@ -83,9 +96,9 @@ struct ib_global_route_header {
/** Hop limit */
uint8_t hoplmt;
/** Source GID */
- struct ib_gid sgid;
+ union ib_gid sgid;
/** Destiniation GID */
- struct ib_gid dgid;
+ union ib_gid dgid;
} __attribute__ (( packed ));
#define IB_GRH_IPVER_IPv6 0x06
diff --git a/src/include/ipxe/ib_srp.h b/src/include/ipxe/ib_srp.h
index 902bef562..ad407b0cf 100644
--- a/src/include/ipxe/ib_srp.h
+++ b/src/include/ipxe/ib_srp.h
@@ -20,9 +20,9 @@ union ib_srp_initiator_port_id {
/** Infiniband version of port identifier */
struct {
/** Identifier extension */
- struct ib_gid_half id_ext;
+ union ib_guid id_ext;
/** IB channel adapter GUID */
- struct ib_gid_half hca_guid;
+ union ib_guid hca_guid;
} __attribute__ (( packed )) ib;
};
@@ -33,9 +33,9 @@ union ib_srp_target_port_id {
/** Infiniband version of port identifier */
struct {
/** Identifier extension */
- struct ib_gid_half id_ext;
+ union ib_guid id_ext;
/** I/O controller GUID */
- struct ib_gid_half ioc_guid;
+ union ib_guid ioc_guid;
} __attribute__ (( packed )) ib;
};
@@ -44,11 +44,11 @@ union ib_srp_target_port_id {
*/
struct sbft_ib_subtable {
/** Source GID */
- struct ib_gid sgid;
+ union ib_gid sgid;
/** Destination GID */
- struct ib_gid dgid;
+ union ib_gid dgid;
/** Service ID */
- struct ib_gid_half service_id;
+ union ib_guid service_id;
/** Partition key */
uint16_t pkey;
/** Reserved */
diff --git a/src/include/ipxe/infiniband.h b/src/include/ipxe/infiniband.h
index edcce371c..aa67dd4ab 100644
--- a/src/include/ipxe/infiniband.h
+++ b/src/include/ipxe/infiniband.h
@@ -88,7 +88,7 @@ struct ib_address_vector {
/** GID is present */
unsigned int gid_present;
/** GID, if present */
- struct ib_gid gid;
+ union ib_gid gid;
};
/** An Infiniband Work Queue */
@@ -126,7 +126,7 @@ struct ib_multicast_gid {
/** List of multicast GIDs on this QP */
struct list_head list;
/** Multicast GID */
- struct ib_gid gid;
+ union ib_gid gid;
};
/** An Infiniband queue pair type */
@@ -338,7 +338,7 @@ struct ib_device_operations {
*/
int ( * mcast_attach ) ( struct ib_device *ibdev,
struct ib_queue_pair *qp,
- struct ib_gid *gid );
+ union ib_gid *gid );
/** Detach from multicast group
*
* @v ibdev Infiniband device
@@ -347,7 +347,7 @@ struct ib_device_operations {
*/
void ( * mcast_detach ) ( struct ib_device *ibdev,
struct ib_queue_pair *qp,
- struct ib_gid *gid );
+ union ib_gid *gid );
/** Set port information
*
* @v ibdev Infiniband device
@@ -405,7 +405,7 @@ struct ib_device {
/** Link speed active */
uint8_t link_speed_active;
/** Port GID */
- struct ib_gid gid;
+ union ib_gid gid;
/** Port LID */
uint16_t lid;
/** Subnet manager LID */
@@ -479,7 +479,7 @@ extern void ib_destroy_qp ( struct ib_device *ibdev,
extern struct ib_queue_pair * ib_find_qp_qpn ( struct ib_device *ibdev,
unsigned long qpn );
extern struct ib_queue_pair * ib_find_qp_mgid ( struct ib_device *ibdev,
- struct ib_gid *gid );
+ union ib_gid *gid );
extern struct ib_work_queue * ib_find_wq ( struct ib_completion_queue *cq,
unsigned long qpn, int is_send );
extern int ib_post_send ( struct ib_device *ibdev, struct ib_queue_pair *qp,
@@ -500,17 +500,17 @@ extern int ib_open ( struct ib_device *ibdev );
extern void ib_close ( struct ib_device *ibdev );
extern int ib_link_rc ( struct ib_device *ibdev );
extern int ib_mcast_attach ( struct ib_device *ibdev, struct ib_queue_pair *qp,
- struct ib_gid *gid );
+ union ib_gid *gid );
extern void ib_mcast_detach ( struct ib_device *ibdev,
- struct ib_queue_pair *qp, struct ib_gid *gid );
+ struct ib_queue_pair *qp, union ib_gid *gid );
extern int ib_get_hca_info ( struct ib_device *ibdev,
- struct ib_gid_half *hca_guid );
+ union ib_guid *hca_guid );
extern int ib_set_port_info ( struct ib_device *ibdev, union ib_mad *mad );
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 struct ib_device * find_ibdev ( union ib_gid *gid );
extern struct ib_device * last_opened_ibdev ( void );
extern void ib_link_state_changed ( struct ib_device *ibdev );
extern void ib_poll_eq ( struct ib_device *ibdev );
diff --git a/src/include/ipxe/ipoib.h b/src/include/ipxe/ipoib.h
index 6a3fd607a..e8f12dc5d 100644
--- a/src/include/ipxe/ipoib.h
+++ b/src/include/ipxe/ipoib.h
@@ -22,7 +22,7 @@ struct ipoib_mac {
*/
uint32_t flags__qpn;
/** Port GID */
- struct ib_gid gid;
+ union ib_gid gid;
} __attribute__ (( packed ));
/** IPoIB link-layer header length */