iPXE
ib_packet.h File Reference

Infiniband packet format. More...

Go to the source code of this file.

Data Structures

union  ib_guid
 An Infiniband Globally Unique Identifier. More...
union  ib_gid
 An Infiniband Global Identifier. More...
struct  ib_local_route_header
 An Infiniband Local Route Header. More...
struct  ib_global_route_header
 An Infiniband Global Route Header. More...
struct  ib_base_transport_header
 An Infiniband Base Transport Header. More...
struct  ib_datagram_extended_transport_header
 An Infiniband Datagram Extended Transport Header. More...
union  ib_headers
 All known IB header formats. More...

Macros

#define IB_GUID_FMT   "%08x:%08x"
 Infiniband Globally Unique Identifier debug message format.
#define IB_GUID_ARGS(guid)
 Infiniband Globally Unique Identifier debug message arguments.
#define IB_GID_FMT   IB_GUID_FMT ":" IB_GUID_FMT
 Infiniband Global Identifier debug message format.
#define IB_GID_ARGS(gid)
 Infiniband Global Identifier debug message arguments.
#define IB_GID_MULTICAST(gid)
 Test for multicast GID.
#define IB_LID_NONE   0xffff
 Default Infiniband LID.
#define IB_LID_MULTICAST(lid)
 Test for multicast LID.
#define IB_GRH_IPVER_IPv6   0x06
#define IB_GRH_NXTHDR_IBA   0x1b
#define IB_MAX_HEADER_SIZE   sizeof ( union ib_headers )
 Maximum size required for IB headers.

Enumerations

enum  ib_vl { IB_VL_DEFAULT = 0 , IB_VL_SMP = 15 }
 Infiniband virtual lanes. More...
enum  ib_lnh { IB_LNH_RAW = 0 , IB_LNH_IPv6 = 1 , IB_LNH_BTH = 2 , IB_LNH_GRH = 3 }
 An Infiniband Link Next Header value. More...
enum  ib_bth_opcode { BTH_OPCODE_UD_SEND = 0x64 }
 An Infiniband BTH opcode. More...

Functions

 FILE_LICENCE (GPL2_OR_LATER_OR_UBDL)
 FILE_SECBOOT (PERMITTED)
struct ib_local_route_header __attribute__ ((packed))
int ib_push (struct ib_device *ibdev, struct io_buffer *iobuf, struct ib_queue_pair *qp, size_t payload_len, const struct ib_address_vector *dest)
 Add IB headers.
int ib_pull (struct ib_device *ibdev, struct io_buffer *iobuf, struct ib_queue_pair **qp, size_t *payload_len, struct ib_address_vector *dest, struct ib_address_vector *source)
 Remove IB headers.

Variables

uint8_t vl__lver
 Virtual lane and link version.
uint8_t sl__lnh
 Service level and next link header.
uint16_t dlid
 Destination LID.
uint16_t length
 Packet length.
uint16_t slid
 Source LID.
enum ib_vl __attribute__
uint32_t ipver__tclass__flowlabel
 IP version, traffic class, and flow label.
uint16_t paylen
 Payload length.
uint8_t nxthdr
 Next header.
uint8_t hoplmt
 Hop limit.
union ib_gid sgid
 Source GID.
union ib_gid dgid
 Destiniation GID.
uint8_t opcode
 Opcode.
uint8_t se__m__padcnt__tver
 Transport header version, pad count, migration and solicitation.
uint16_t pkey
 Partition key.
uint32_t dest_qp
 Destination queue pair.
uint32_t ack__psn
 Packet sequence number and acknowledge request.
uint32_t qkey
 Queue key.
uint32_t src_qp
 Source queue pair.
struct ib_local_route_header lrh
struct ib_global_route_header grh
struct ib_base_transport_header bth
struct ib_datagram_extended_transport_header deth

Detailed Description

Infiniband packet format.

Definition in file ib_packet.h.

Macro Definition Documentation

◆ IB_GUID_FMT

◆ IB_GUID_ARGS

#define IB_GUID_ARGS ( guid)
Value:
ntohl ( (guid)->dwords[0] ), ntohl ( (guid)->dwords[1] )
uint64_t guid
GUID.
Definition edd.h:1
#define ntohl(value)
Definition byteswap.h:135

Infiniband Globally Unique Identifier debug message arguments.

Definition at line 30 of file ib_packet.h.

30#define IB_GUID_ARGS( guid ) \
31 ntohl ( (guid)->dwords[0] ), ntohl ( (guid)->dwords[1] )

Referenced by ib_create_conn(), ib_srp_open(), ibstat(), linda_read_eeprom(), qib7322_read_eeprom(), xcm_create(), xsigo_ib_probe(), xsigo_xds_complete(), xsmp_rx_xve_delete(), xsmp_rx_xve_install(), xsmp_rx_xve_modify(), xsmp_rx_xve_oper_req(), xsmp_rx_xve_ready(), xsmp_rx_xve_update(), xsmp_tx_session_register(), and xve_create().

◆ IB_GID_FMT

◆ IB_GID_ARGS

#define IB_GID_ARGS ( gid)
Value:
IB_GUID_ARGS ( &(gid)->s.prefix ), IB_GUID_ARGS ( &(gid)->s.guid )
u8 gid[16]
Definition CIB_PRM.h:3
#define IB_GUID_ARGS(guid)
Infiniband Globally Unique Identifier debug message arguments.
Definition ib_packet.h:30

Infiniband Global Identifier debug message arguments.

Definition at line 49 of file ib_packet.h.

49#define IB_GID_ARGS( gid ) \
50 IB_GUID_ARGS ( &(gid)->s.prefix ), IB_GUID_ARGS ( &(gid)->s.guid )

Referenced by eoib_create(), eoib_rx_av(), eoib_set_gateway(), eoib_tx_av(), ib_create_conn(), ib_mcast_complete(), ib_mcast_join(), ib_mcast_leave(), ib_path_complete(), ib_pull(), ib_resolve_path(), ib_smc_get(), ib_srp_open(), xcm_reopen(), and xve_update_tca().

◆ IB_GID_MULTICAST

#define IB_GID_MULTICAST ( gid)
Value:
( (gid)->bytes[0] == 0xff )

Test for multicast GID.

Definition at line 53 of file ib_packet.h.

Referenced by ipoib_complete_recv().

◆ IB_LID_NONE

#define IB_LID_NONE   0xffff

Default Infiniband LID.

Definition at line 84 of file ib_packet.h.

Referenced by alloc_ibdev().

◆ IB_LID_MULTICAST

#define IB_LID_MULTICAST ( lid)
Value:
( ( (lid) >= 0xc000 ) && ( (lid) <= 0xfffe ) )
__be16 lid
Definition CIB_PRM.h:26

Test for multicast LID.

Definition at line 87 of file ib_packet.h.

Referenced by ib_pull().

◆ IB_GRH_IPVER_IPv6

#define IB_GRH_IPVER_IPv6   0x06

Definition at line 110 of file ib_packet.h.

Referenced by ib_push().

◆ IB_GRH_NXTHDR_IBA

#define IB_GRH_NXTHDR_IBA   0x1b

Definition at line 111 of file ib_packet.h.

Referenced by ib_push().

◆ IB_MAX_HEADER_SIZE

#define IB_MAX_HEADER_SIZE   sizeof ( union ib_headers )

Maximum size required for IB headers.

Definition at line 157 of file ib_packet.h.

Referenced by linda_post_send(), and qib7322_post_send().

Enumeration Type Documentation

◆ ib_vl

enum ib_vl

Infiniband virtual lanes.

Enumerator
IB_VL_DEFAULT 
IB_VL_SMP 

Definition at line 70 of file ib_packet.h.

70 {
71 IB_VL_DEFAULT = 0,
72 IB_VL_SMP = 15,
73};
@ IB_VL_DEFAULT
Definition ib_packet.h:71
@ IB_VL_SMP
Definition ib_packet.h:72

◆ ib_lnh

enum ib_lnh

An Infiniband Link Next Header value.

Enumerator
IB_LNH_RAW 
IB_LNH_IPv6 
IB_LNH_BTH 
IB_LNH_GRH 

Definition at line 76 of file ib_packet.h.

76 {
77 IB_LNH_RAW = 0,
78 IB_LNH_IPv6 = 1,
79 IB_LNH_BTH = 2,
80 IB_LNH_GRH = 3
81};
@ IB_LNH_BTH
Definition ib_packet.h:79
@ IB_LNH_RAW
Definition ib_packet.h:77
@ IB_LNH_IPv6
Definition ib_packet.h:78
@ IB_LNH_GRH
Definition ib_packet.h:80

◆ ib_bth_opcode

An Infiniband BTH opcode.

Enumerator
BTH_OPCODE_UD_SEND 

Definition at line 128 of file ib_packet.h.

128 {
129 BTH_OPCODE_UD_SEND = 0x64,
130};
@ BTH_OPCODE_UD_SEND
Definition ib_packet.h:129

Function Documentation

◆ FILE_LICENCE()

FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL )

◆ FILE_SECBOOT()

FILE_SECBOOT ( PERMITTED )

◆ __attribute__()

struct ib_local_route_header __attribute__ ( (packed) )

◆ ib_push()

int ib_push ( struct ib_device * ibdev,
struct io_buffer * iobuf,
struct ib_queue_pair * qp,
size_t payload_len,
const struct ib_address_vector * dest )
extern

Add IB headers.

Parameters
ibdevInfiniband device
iobufI/O buffer to contain headers
qpQueue pair
payload_lenPayload length
destDestination address vector
Return values
rcReturn status code

Definition at line 52 of file ib_packet.c.

54 {
59 size_t orig_iob_len = iob_len ( iobuf );
60 size_t pad_len;
61 size_t lrh_len;
62 size_t grh_len;
63 unsigned int vl;
64 unsigned int lnh;
65
66 DBGC2 ( ibdev, "IBDEV %s TX %04x:%08lx => %04x:%08lx (key %08lx)\n",
67 ibdev->name, ibdev->lid, qp->ext_qpn, dest->lid, dest->qpn,
68 dest->qkey );
69
70 /* Calculate packet length */
71 pad_len = ( (-payload_len) & 0x3 );
72 payload_len += pad_len;
73 payload_len += 4; /* ICRC */
74
75 /* Reserve space for headers */
76 orig_iob_len = iob_len ( iobuf );
77 deth = iob_push ( iobuf, sizeof ( *deth ) );
78 bth = iob_push ( iobuf, sizeof ( *bth ) );
79 grh_len = ( payload_len + iob_len ( iobuf ) - orig_iob_len );
80 grh = ( dest->gid_present ?
81 iob_push ( iobuf, sizeof ( *grh ) ) : NULL );
82 lrh = iob_push ( iobuf, sizeof ( *lrh ) );
83 lrh_len = ( payload_len + iob_len ( iobuf ) - orig_iob_len );
84
85 /* Construct LRH */
86 vl = ( ( qp->ext_qpn == IB_QPN_SMI ) ? IB_VL_SMP : IB_VL_DEFAULT );
87 lrh->vl__lver = ( vl << 4 );
88 lnh = ( grh ? IB_LNH_GRH : IB_LNH_BTH );
89 lrh->sl__lnh = ( ( dest->sl << 4 ) | lnh );
90 lrh->dlid = htons ( dest->lid );
91 lrh->length = htons ( lrh_len >> 2 );
92 lrh->slid = htons ( ibdev->lid );
93
94 /* Construct GRH, if required */
95 if ( grh ) {
96 grh->ipver__tclass__flowlabel =
97 htonl ( IB_GRH_IPVER_IPv6 << 28 );
98 grh->paylen = htons ( grh_len );
99 grh->nxthdr = IB_GRH_NXTHDR_IBA;
100 grh->hoplmt = 0;
101 memcpy ( &grh->sgid, &ibdev->gid, sizeof ( grh->sgid ) );
102 memcpy ( &grh->dgid, &dest->gid, sizeof ( grh->dgid ) );
103 }
104
105 /* Construct BTH */
106 bth->opcode = BTH_OPCODE_UD_SEND;
107 bth->se__m__padcnt__tver = ( pad_len << 4 );
108 bth->pkey = htons ( ibdev->pkey );
109 bth->dest_qp = htonl ( dest->qpn );
110 bth->ack__psn = htonl ( ( qp->send.psn++ ) & 0xffffffUL );
111
112 /* Construct DETH */
113 deth->qkey = htonl ( dest->qkey );
114 deth->src_qp = htonl ( qp->ext_qpn );
115
116 DBGCP_HDA ( ibdev, 0, iobuf->data,
117 ( iob_len ( iobuf ) - orig_iob_len ) );
118
119 return 0;
120}
#define NULL
NULL pointer (VOID *)
Definition Base.h:322
struct arbelprm_qp_db_record qp
Definition arbel.h:2
long pad_len
Definition bigint.h:31
if(len >=6 *4) __asm__ __volatile__("movsl" if(len >=5 *4) __asm__ __volatile__("movsl" if(len >=4 *4) __asm__ __volatile__("movsl" if(len >=3 *4) __asm__ __volatile__("movsl" if(len >=2 *4) __asm__ __volatile__("movsl" if(len >=1 *4) __asm__ __volatile__("movsl" if((len % 4) >=2) __asm__ __volatile__("movsw" if((len % 2) >=1) __asm__ __volatile__("movsb" retur dest)
Definition string.h:151
#define DBGCP_HDA(...)
Definition compiler.h:540
#define DBGC2(...)
Definition compiler.h:522
struct ib_datagram_extended_transport_header deth
Definition ib_packet.h:3
#define IB_GRH_IPVER_IPv6
Definition ib_packet.h:110
#define IB_GRH_NXTHDR_IBA
Definition ib_packet.h:111
struct ib_global_route_header grh
Definition ib_packet.h:1
struct ib_base_transport_header bth
Definition ib_packet.h:2
struct ib_local_route_header lrh
Definition ib_packet.h:0
#define htonl(value)
Definition byteswap.h:134
#define htons(value)
Definition byteswap.h:136
void * memcpy(void *dest, const void *src, size_t len) __nonnull
#define IB_QPN_SMI
Subnet management interface QPN.
Definition infiniband.h:22
#define iob_push(iobuf, len)
Definition iobuf.h:89
static size_t iob_len(struct io_buffer *iobuf)
Calculate length of data in an I/O buffer.
Definition iobuf.h:160
An Infiniband Base Transport Header.
Definition ib_packet.h:114
An Infiniband Datagram Extended Transport Header.
Definition ib_packet.h:133
char name[IBDEV_NAME_LEN]
Name of this Infiniband device.
Definition infiniband.h:409
uint16_t pkey
Partition key.
Definition infiniband.h:450
uint16_t lid
Port LID.
Definition infiniband.h:444
union ib_gid gid
Port GID (comprising GID prefix and port GUID)
Definition infiniband.h:442
An Infiniband Global Route Header.
Definition ib_packet.h:90
An Infiniband Local Route Header.
Definition ib_packet.h:56
void * data
Start of data.
Definition iobuf.h:53

References bth, BTH_OPCODE_UD_SEND, io_buffer::data, DBGC2, DBGCP_HDA, dest, deth, ib_device::gid, grh, htonl, htons, IB_GRH_IPVER_IPv6, IB_GRH_NXTHDR_IBA, IB_LNH_BTH, IB_LNH_GRH, IB_QPN_SMI, IB_VL_DEFAULT, IB_VL_SMP, iob_len(), iob_push, ib_device::lid, lrh, memcpy(), ib_device::name, NULL, pad_len, ib_device::pkey, and qp.

Referenced by arbel_fill_mlx_send_wqe(), hermon_fill_mlx_send_wqe(), linda_post_send(), and qib7322_post_send().

◆ ib_pull()

int ib_pull ( struct ib_device * ibdev,
struct io_buffer * iobuf,
struct ib_queue_pair ** qp,
size_t * payload_len,
struct ib_address_vector * dest,
struct ib_address_vector * source )
extern

Remove IB headers.

Parameters
ibdevInfiniband device
iobufI/O buffer containing headers
qpQueue pair to fill in, or NULL
payload_lenPayload length to fill in, or NULL
destDestination address vector to fill in
sourceSource address vector to fill in
Return values
rcReturn status code

Definition at line 133 of file ib_packet.c.

136 {
141 size_t orig_iob_len = iob_len ( iobuf );
142 unsigned int lnh;
143 size_t pad_len;
144
145 /* Clear return values */
146 if ( qp )
147 *qp = NULL;
148 if ( payload_len )
149 *payload_len = 0;
150 memset ( dest, 0, sizeof ( *dest ) );
151 memset ( source, 0, sizeof ( *source ) );
152
153 /* Extract LRH */
154 if ( iob_len ( iobuf ) < sizeof ( *lrh ) ) {
155 DBGC ( ibdev, "IBDEV %s RX too short (%zd bytes) for LRH\n",
156 ibdev->name, iob_len ( iobuf ) );
157 return -EINVAL;
158 }
159 lrh = iobuf->data;
160 iob_pull ( iobuf, sizeof ( *lrh ) );
161 dest->lid = ntohs ( lrh->dlid );
162 dest->sl = ( lrh->sl__lnh >> 4 );
163 source->lid = ntohs ( lrh->slid );
164 source->sl = ( lrh->sl__lnh >> 4 );
165 lnh = ( lrh->sl__lnh & 0x3 );
166
167 /* Reject unsupported packets */
168 if ( ! ( ( lnh == IB_LNH_BTH ) || ( lnh == IB_LNH_GRH ) ) ) {
169 DBGC ( ibdev, "IBDEV %s RX unsupported LNH %x\n",
170 ibdev->name, lnh );
171 return -ENOTSUP;
172 }
173
174 /* Extract GRH, if present */
175 if ( lnh == IB_LNH_GRH ) {
176 if ( iob_len ( iobuf ) < sizeof ( *grh ) ) {
177 DBGC ( ibdev, "IBDEV %s RX too short (%zd bytes) "
178 "for GRH\n", ibdev->name, iob_len ( iobuf ) );
179 return -EINVAL;
180 }
181 grh = iobuf->data;
182 iob_pull ( iobuf, sizeof ( *grh ) );
183 dest->gid_present = 1;
184 memcpy ( &dest->gid, &grh->dgid, sizeof ( dest->gid ) );
185 source->gid_present = 1;
186 memcpy ( &source->gid, &grh->sgid, sizeof ( source->gid ) );
187 } else {
188 grh = NULL;
189 }
190
191 /* Extract BTH */
192 if ( iob_len ( iobuf ) < sizeof ( *bth ) ) {
193 DBGC ( ibdev, "IBDEV %s RX too short (%zd bytes) for BTH\n",
194 ibdev->name, iob_len ( iobuf ) );
195 return -EINVAL;
196 }
197 bth = iobuf->data;
198 iob_pull ( iobuf, sizeof ( *bth ) );
199 if ( bth->opcode != BTH_OPCODE_UD_SEND ) {
200 DBGC ( ibdev, "IBDEV %s unsupported BTH opcode %x\n",
201 ibdev->name, bth->opcode );
202 return -ENOTSUP;
203 }
204 dest->qpn = ntohl ( bth->dest_qp );
205
206 /* Extract DETH */
207 if ( iob_len ( iobuf ) < sizeof ( *deth ) ) {
208 DBGC ( ibdev, "IBDEV %s RX too short (%zd bytes) for DETH\n",
209 ibdev->name, iob_len ( iobuf ) );
210 return -EINVAL;
211 }
212 deth = iobuf->data;
213 iob_pull ( iobuf, sizeof ( *deth ) );
214 source->qpn = ntohl ( deth->src_qp );
215 source->qkey = ntohl ( deth->qkey );
216
217 /* Calculate payload length, if applicable */
218 if ( payload_len ) {
219 pad_len = ( ( bth->se__m__padcnt__tver >> 4 ) & 0x3 );
220 *payload_len = ( ( ntohs ( lrh->length ) << 2 )
221 - ( orig_iob_len - iob_len ( iobuf ) )
222 - pad_len - 4 /* ICRC */ );
223 }
224
225 /* Determine destination QP, if applicable */
226 if ( qp ) {
227 if ( IB_LID_MULTICAST ( dest->lid ) && grh ) {
228 if ( ! ( *qp = ib_find_qp_mgid ( ibdev, &grh->dgid ))){
229 DBGC ( ibdev, "IBDEV %s RX for unknown MGID "
230 IB_GID_FMT "\n", ibdev->name,
231 IB_GID_ARGS ( &grh->dgid ) );
232 return -ENODEV;
233 }
234 } else {
235 if ( ! ( *qp = ib_find_qp_qpn ( ibdev, dest->qpn ) ) ) {
236 DBGC ( ibdev, "IBDEV %s RX for nonexistent "
237 "QPN %#lx\n", ibdev->name, dest->qpn );
238 return -ENODEV;
239 }
240 }
241 assert ( *qp );
242 }
243
244 DBGC2 ( ibdev, "IBDEV %s RX %04x:%08lx <= %04x:%08lx (key %08x)\n",
245 ibdev->name, dest->lid,
246 ( IB_LID_MULTICAST ( dest->lid ) ?
247 ( qp ? (*qp)->ext_qpn : -1UL ) : dest->qpn ),
248 source->lid, source->qpn, ntohl ( deth->qkey ) );
249 DBGCP_HDA ( ibdev, 0,
250 ( iobuf->data - ( orig_iob_len - iob_len ( iobuf ) ) ),
251 ( orig_iob_len - iob_len ( iobuf ) ) );
252
253 return 0;
254}
#define assert(condition)
Assert a condition at run-time.
Definition assert.h:50
#define DBGC(...)
Definition compiler.h:505
#define EINVAL
Invalid argument.
Definition errno.h:429
#define ENOTSUP
Operation not supported.
Definition errno.h:590
#define ENODEV
No such device.
Definition errno.h:510
#define IB_GID_ARGS(gid)
Infiniband Global Identifier debug message arguments.
Definition ib_packet.h:49
#define IB_GID_FMT
Infiniband Global Identifier debug message format.
Definition ib_packet.h:46
#define IB_LID_MULTICAST(lid)
Test for multicast LID.
Definition ib_packet.h:87
#define ntohs(value)
Definition byteswap.h:137
void * memset(void *dest, int character, size_t len) __nonnull
struct ib_queue_pair * ib_find_qp_mgid(struct ib_device *ibdev, union ib_gid *gid)
Find queue pair by multicast GID.
Definition infiniband.c:372
struct ib_queue_pair * ib_find_qp_qpn(struct ib_device *ibdev, unsigned long qpn)
Find queue pair by QPN.
Definition infiniband.c:354
#define iob_pull(iobuf, len)
Definition iobuf.h:107
unsigned int sl
Service level.
Definition infiniband.h:89
unsigned long qkey
Queue key.
Definition infiniband.h:80
unsigned int gid_present
GID is present.
Definition infiniband.h:91
unsigned int lid
Local ID.
Definition infiniband.h:82
union ib_gid gid
GID, if present.
Definition infiniband.h:93
unsigned long qpn
Queue Pair Number.
Definition infiniband.h:75

References assert, bth, BTH_OPCODE_UD_SEND, io_buffer::data, DBGC, DBGC2, DBGCP_HDA, dest, deth, EINVAL, ENODEV, ENOTSUP, ib_address_vector::gid, ib_address_vector::gid_present, grh, ib_find_qp_mgid(), ib_find_qp_qpn(), IB_GID_ARGS, IB_GID_FMT, IB_LID_MULTICAST, IB_LNH_BTH, IB_LNH_GRH, iob_len(), iob_pull, ib_address_vector::lid, lrh, memcpy(), memset(), ib_device::name, ntohl, ntohs, NULL, pad_len, ib_address_vector::qkey, qp, ib_address_vector::qpn, and ib_address_vector::sl.

Referenced by linda_complete_recv(), and qib7322_complete_recv().

Variable Documentation

◆ vl__lver

uint8_t vl__lver

Virtual lane and link version.

Definition at line 1 of file ib_packet.h.

◆ sl__lnh

uint8_t sl__lnh

Service level and next link header.

Definition at line 3 of file ib_packet.h.

◆ dlid

uint16_t dlid

Destination LID.

Definition at line 5 of file ib_packet.h.

◆ length

uint16_t length

Packet length.

Definition at line 7 of file ib_packet.h.

◆ slid

uint16_t slid

Source LID.

Definition at line 9 of file ib_packet.h.

◆ ipver__tclass__flowlabel

uint32_t ipver__tclass__flowlabel

IP version, traffic class, and flow label.

4 bits : Version of the GRH 8 bits : Traffic class 20 bits : Flow label

Definition at line 6 of file ib_packet.h.

◆ paylen

uint16_t paylen

Payload length.

Definition at line 8 of file ib_packet.h.

◆ nxthdr

uint8_t nxthdr

Next header.

Definition at line 10 of file ib_packet.h.

◆ hoplmt

uint8_t hoplmt

Hop limit.

Definition at line 12 of file ib_packet.h.

◆ sgid

union ib_gid sgid

Source GID.

Definition at line 14 of file ib_packet.h.

◆ dgid

union ib_gid dgid

Destiniation GID.

Definition at line 16 of file ib_packet.h.

◆ opcode

uint8_t opcode

Opcode.

Definition at line 1 of file ib_packet.h.

◆ se__m__padcnt__tver

uint8_t se__m__padcnt__tver

Transport header version, pad count, migration and solicitation.

Definition at line 3 of file ib_packet.h.

◆ pkey

uint16_t pkey

Partition key.

Definition at line 5 of file ib_packet.h.

◆ dest_qp

uint32_t dest_qp

Destination queue pair.

Definition at line 7 of file ib_packet.h.

◆ ack__psn

uint32_t ack__psn

Packet sequence number and acknowledge request.

Definition at line 9 of file ib_packet.h.

◆ qkey

uint32_t qkey

Queue key.

Definition at line 1 of file ib_packet.h.

◆ src_qp

uint32_t src_qp

Source queue pair.

Definition at line 3 of file ib_packet.h.

◆ lrh

Definition at line 0 of file ib_packet.h.

Referenced by ib_pull(), and ib_push().

◆ grh

◆ bth

Definition at line 2 of file ib_packet.h.

Referenced by ib_pull(), and ib_push().

◆ deth

Definition at line 3 of file ib_packet.h.

Referenced by ib_pull(), and ib_push().