1 #ifndef _IPXE_IB_SRP_H
2 #define _IPXE_IB_SRP_H
3 
4 /** @file
5  *
6  * SCSI RDMA Protocol over Infiniband
7  *
8  */
9 
10 FILE_LICENCE ( BSD2 );
11 
12 #include <stdint.h>
13 #include <ipxe/infiniband.h>
14 #include <ipxe/srp.h>
15 
16 /** SRP initiator port identifier for Infiniband */
17 union ib_srp_initiator_port_id {
18 	/** SRP version of port identifier */
19 	union srp_port_id srp;
20 	/** Infiniband version of port identifier */
21 	struct {
22 		/** Identifier extension */
23 		union ib_guid id_ext;
24 		/** IB channel adapter GUID */
25 		union ib_guid hca_guid;
26 	} __attribute__ (( packed )) ib;
27 };
28 
29 /** SRP target port identifier for Infiniband */
30 union ib_srp_target_port_id {
31 	/** SRP version of port identifier */
32 	union srp_port_id srp;
33 	/** Infiniband version of port identifier */
34 	struct {
35 		/** Identifier extension */
36 		union ib_guid id_ext;
37 		/** I/O controller GUID */
38 		union ib_guid ioc_guid;
39 	} __attribute__ (( packed )) ib;
40 };
41 
42 /**
43  * sBFT Infiniband subtable
44  */
45 struct sbft_ib_subtable {
46 	/** Source GID */
47 	union ib_gid sgid;
48 	/** Destination GID */
49 	union ib_gid dgid;
50 	/** Service ID */
51 	union ib_guid service_id;
52 	/** Partition key */
53 	uint16_t pkey;
54 	/** Reserved */
55 	uint8_t reserved[6];
56 } __attribute__ (( packed ));
57 
58 #endif /* _IPXE_IB_SRP_H */
59