Blame IbAccess/Common/Inc/ib_pkt.h

Packit 857059
/* BEGIN_ICS_COPYRIGHT3 ****************************************
Packit 857059
Packit 857059
Copyright (c) 2015, Intel Corporation
Packit 857059
Packit 857059
Redistribution and use in source and binary forms, with or without
Packit 857059
modification, are permitted provided that the following conditions are met:
Packit 857059
Packit 857059
    * Redistributions of source code must retain the above copyright notice,
Packit 857059
      this list of conditions and the following disclaimer.
Packit 857059
    * Redistributions in binary form must reproduce the above copyright
Packit 857059
      notice, this list of conditions and the following disclaimer in the
Packit 857059
     documentation and/or other materials provided with the distribution.
Packit 857059
    * Neither the name of Intel Corporation nor the names of its contributors
Packit 857059
      may be used to endorse or promote products derived from this software
Packit 857059
      without specific prior written permission.
Packit 857059
Packit 857059
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
Packit 857059
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
Packit 857059
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
Packit 857059
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
Packit 857059
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
Packit 857059
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
Packit 857059
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
Packit 857059
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
Packit 857059
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
Packit 857059
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Packit 857059
Packit 857059
** END_ICS_COPYRIGHT3   ****************************************/
Packit 857059
Packit 857059
/* [ICS VERSION STRING: unknown] */
Packit 857059
Packit 857059
/* Infiniband low level Link, Network and Transport Layer headers.
Packit 857059
 * Generally these are handled by the CA hardware.  However in some cases
Packit 857059
 * for special QPs, the Verbs Provider must hand build these headers.
Packit 857059
 * Hence this file provides a common implementation for them
Packit 857059
 *
Packit 857059
 * The GRH header is more visible and is defined in ib_types.h
Packit 857059
 */
Packit 857059
Packit 857059
#ifndef _IBA_IB_PKT_H_
Packit 857059
#define _IBA_IB_PKT_H_	(1)
Packit 857059
Packit 857059
#include "iba/public/datatypes.h"
Packit 857059
#include "iba/stl_types.h"
Packit 857059
#include "iba/stl_helper.h"
Packit 857059
#include "iba/public/ibyteswap.h"
Packit 857059
#include "iba/public/imemory.h"
Packit 857059
#include "iba/public/ispinlock.h"
Packit 857059
Packit 857059
#if defined (__cplusplus)
Packit 857059
extern "C" {
Packit 857059
#endif
Packit 857059
Packit 857059
	
Packit 857059
#include "iba/public/ipackon.h"
Packit 857059
Packit 857059
/*
Packit 857059
 * IB packet headers
Packit 857059
 */
Packit 857059
Packit 857059
/*
Packit 857059
 * Local Route Header
Packit 857059
 */
Packit 857059
typedef struct _IB_LRH {
Packit 857059
	struct _IB_LRH_V { IB_BITFIELD2(uint8,
Packit 857059
		VL:				4,	/* Virtual lane */
Packit 857059
		LinkVersion:	4)	/* Link version */
Packit 857059
	} v;
Packit 857059
Packit 857059
	struct _IB_LRH_LNH { IB_BITFIELD3(uint8,
Packit 857059
		ServiceLevel:	4,	/* service level */
Packit 857059
		Reserved:		2,
Packit 857059
		LNH:			2)	/* this field identifies the headers  */
Packit 857059
							/* that follow LRH */
Packit 857059
	} l;
Packit 857059
Packit 857059
	IB_LID		DestLID;			/* destination LID */
Packit 857059
Packit 857059
	union _IB_LRH_PKT {
Packit 857059
		uint16	AsUINT16;
Packit 857059
Packit 857059
		struct _IB_LRH_PKT_S {IB_BITFIELD2(uint16,
Packit 857059
			Reserved:	5,
Packit 857059
			Length:		11)	/* Packet length. Identifies sizeof */
Packit 857059
							/* packet in 4 byte increments. */
Packit 857059
							/* This field includes first byte */
Packit 857059
							/* of LRH to last byte before the  */
Packit 857059
							/* variant CRC. */
Packit 857059
		} s;
Packit 857059
	} Packet;
Packit 857059
Packit 857059
	IB_LID		SrcLID;			/* source LID */
Packit 857059
} PACK_SUFFIX IB_LRH;
Packit 857059
Packit 857059
/*
Packit 857059
 * Link Next Header types (LRH.l.LNH)
Packit 857059
 */
Packit 857059
typedef enum {
Packit 857059
	LNH_RAW_ETHERTYPE = 0,
Packit 857059
	LNH_RAW_GRH,
Packit 857059
	LNH_BTH,
Packit 857059
	LNH_GRH
Packit 857059
} LNH;
Packit 857059
Packit 857059
#define LRH_IS_GLOBAL(lrh)	(lrh->l.LNH == LNH_GRH)
Packit 857059
Packit 857059
static __inline void
Packit 857059
BSWAP_IB_LRH(
Packit 857059
	IB_LRH		*Header
Packit 857059
	)
Packit 857059
{
Packit 857059
	Header->DestLID = ntoh16(Header->DestLID);
Packit 857059
	Header->Packet.AsUINT16 = ntoh16(Header->Packet.AsUINT16);
Packit 857059
	Header->SrcLID = ntoh16(Header->SrcLID);
Packit 857059
}
Packit 857059
Packit 857059
Packit 857059
/* Network Header (IB_GRH) is defined in ib_types.h
Packit 857059
 * The IB_GRH structure is more visible since it is the 1st 40 bytes of all
Packit 857059
 * UD receive buffers
Packit 857059
 */
Packit 857059
Packit 857059
/*
Packit 857059
 * Base Transport Header
Packit 857059
 */
Packit 857059
typedef struct _IB_BTH {
Packit 857059
	uint8		OpCode;
Packit 857059
Packit 857059
	struct _IB_BTH_V {IB_BITFIELD4(uint8,
Packit 857059
		SolicitedEvent:	1,
Packit 857059
		Migrate:		1,
Packit 857059
		PadCount:		2,
Packit 857059
		HeaderVersion:	4)	/* Transport Header version */
Packit 857059
	} v;
Packit 857059
Packit 857059
	IB_P_KEY	Pkey;
Packit 857059
Packit 857059
	union _IB_BTH_QP {
Packit 857059
		uint32	AsUINT32;
Packit 857059
Packit 857059
		struct _IB_BTH_QP_S {IB_BITFIELD2(uint32,
Packit 857059
			Reserved:		8,
Packit 857059
			DestQPNumber:	24)
Packit 857059
		} s;
Packit 857059
	} Qp;
Packit 857059
Packit 857059
	union _IB_BTH_PSN {
Packit 857059
		uint32	AsUINT32;
Packit 857059
Packit 857059
		struct _IB_BTH_PSN_S {IB_BITFIELD3(uint32,
Packit 857059
			AckReq:			1,
Packit 857059
			Reserved:		7,
Packit 857059
			PSN:			24)
Packit 857059
		} s;
Packit 857059
	} Psn;
Packit 857059
Packit 857059
} PACK_SUFFIX IB_BTH;
Packit 857059
Packit 857059
/* opcode is composed of a 3 bit QP TYPE and a 5 bit message type */
Packit 857059
#define BTH_OPCODE_QP_TYPE_MASK 0xE0
Packit 857059
#define BTH_OPCODE_MSG_TYPE_MASK 0x1F
Packit 857059
Packit 857059
/* value for upper 3 bits of BTH_OPCODE */
Packit 857059
typedef enum {
Packit 857059
	BTH_OPCODE_RC = 0x00,
Packit 857059
	BTH_OPCODE_UC = 0x20,
Packit 857059
	BTH_OPCODE_RD = 0x40,
Packit 857059
	BTH_OPCODE_UD = 0x60
Packit 857059
	/* 0x80, 0xA0 reserved */
Packit 857059
	/* 0xC0, 0xE0 manufacturer specific opcodes */
Packit 857059
} BTH_OPCODE_QP_TYPE;
Packit 857059
Packit 857059
Packit 857059
/* value for low 5 bits of BTH_OPCODE */
Packit 857059
typedef enum {
Packit 857059
	BTH_OPCODE_SEND_FIRST=0x00,
Packit 857059
	BTH_OPCODE_SEND_MIDDLE=0x01,
Packit 857059
	BTH_OPCODE_SEND_LAST=0x02,
Packit 857059
	BTH_OPCODE_SEND_LAST_IMMED=0x03,
Packit 857059
	BTH_OPCODE_SEND_ONLY=0x04,
Packit 857059
	BTH_OPCODE_SEND_ONLY_IMMED=0x05,
Packit 857059
	BTH_OPCODE_RDMA_WRITE_FIRST=0x06,
Packit 857059
	BTH_OPCODE_RDMA_WRITE_MIDDLE=0x07,
Packit 857059
	BTH_OPCODE_RDMA_WRITE_LAST=0x08,
Packit 857059
	BTH_OPCODE_RDMA_WRITE_LAST_IMMED=0x09,
Packit 857059
	BTH_OPCODE_RDMA_WRITE_ONLY=0x0A,
Packit 857059
	BTH_OPCODE_RDMA_WRITE_ONLY_IMMED=0x0B,
Packit 857059
	BTH_OPCODE_RDMA_READ_REQ=0x0C,
Packit 857059
	BTH_OPCODE_RDMA_READ_RESP_FIRST=0x0D,
Packit 857059
	BTH_OPCODE_RDMA_READ_RESP_MIDDLE=0x0E,
Packit 857059
	BTH_OPCODE_RDMA_READ_RESP_LAST=0x0F,
Packit 857059
	BTH_OPCODE_RDMA_READ_RESP_ONLY=0x10,
Packit 857059
	BTH_OPCODE_ACK=0x11,
Packit 857059
	BTH_OPCODE_ATOMIC_ACK=0x12,
Packit 857059
	BTH_OPCODE_CMP_SWAP=0x13,
Packit 857059
	BTH_OPCODE_FETCH_ADD=0x14,
Packit 857059
	BTH_OPCODE_RESYNC=0x15,
Packit 857059
	/* 0x15 - 0x1f reserved */
Packit 857059
} BTH_OPCODE_MSG_TYPE;
Packit 857059
Packit 857059
/*
Packit 857059
 * OpCode (BTH.OpCode)
Packit 857059
 * Note not all combinations of QP_TYPE and MSG_TYPE are valid
Packit 857059
 */
Packit 857059
#define BTH_OPCODE_RC_SEND_FIRST (BTH_OPCODE_RC|BTH_OPCODE_SEND_FIRST)
Packit 857059
#define BTH_OPCODE_RC_SEND_MIDDLE (BTH_OPCODE_RC|BTH_OPCODE_SEND_MIDDLE)
Packit 857059
#define BTH_OPCODE_RC_SEND_LAST (BTH_OPCODE_RC|BTH_OPCODE_SEND_LAST)
Packit 857059
#define BTH_OPCODE_RC_SEND_LAST_IMMED (BTH_OPCODE_RC|BTH_OPCODE_SEND_LAST_IMMED)
Packit 857059
#define BTH_OPCODE_RC_SEND_ONLY (BTH_OPCODE_RC|BTH_OPCODE_SEND_ONLY)
Packit 857059
#define BTH_OPCODE_RC_SEND_ONLY_IMMED (BTH_OPCODE_RC | BTH_OPCODE_SEND_ONLY_IMMED)
Packit 857059
#define BTH_OPCODE_RC_RDMA_WRITE_FIRST (BTH_OPCODE_RC | BTH_OPCODE_RDMA_WRITE_FIRST)
Packit 857059
#define BTH_OPCODE_RC_RDMA_WRITE_MIDDLE (BTH_OPCODE_RC | BTH_OPCODE_RDMA_WRITE_MIDDLE)
Packit 857059
#define BTH_OPCODE_RC_RDMA_WRITE_LAST (BTH_OPCODE_RC | BTH_OPCODE_RDMA_WRITE_LAST)
Packit 857059
#define BTH_OPCODE_RC_RDMA_WRITE_LAST_IMMED (BTH_OPCODE_RC | BTH_OPCODE_RDMA_WRITE_LAST_IMMED)
Packit 857059
#define BTH_OPCODE_RC_RDMA_WRITE_ONLY (BTH_OPCODE_RC | BTH_OPCODE_RDMA_WRITE_ONLY)
Packit 857059
#define BTH_OPCODE_RC_RDMA_WRITE_ONLY_IMMED (BTH_OPCODE_RC | BTH_OPCODE_RDMA_WRITE_ONLY_IMMED)
Packit 857059
#define BTH_OPCODE_RC_RDMA_READ_REQ (BTH_OPCODE_RC | BTH_OPCODE_RDMA_READ_REQ)
Packit 857059
#define BTH_OPCODE_RC_RDMA_READ_RESP_FIRST (BTH_OPCODE_RC | BTH_OPCODE_RDMA_READ_RESP_FIRST)
Packit 857059
#define BTH_OPCODE_RC_RDMA_READ_RESP_MIDDLE (BTH_OPCODE_RC | BTH_OPCODE_RDMA_READ_RESP_MIDDLE)
Packit 857059
#define BTH_OPCODE_RC_RDMA_READ_RESP_LAST (BTH_OPCODE_RC | BTH_OPCODE_RDMA_READ_RESP_LAST)
Packit 857059
#define BTH_OPCODE_RC_RDMA_READ_RESP_ONLY (BTH_OPCODE_RC | BTH_OPCODE_RDMA_READ_RESP_ONLY)
Packit 857059
#define BTH_OPCODE_RC_ACK (BTH_OPCODE_RC | BTH_OPCODE_ACK)
Packit 857059
#define BTH_OPCODE_RC_ATOMIC_ACK (BTH_OPCODE_RC | BTH_OPCODE_ATOMIC_ACK)
Packit 857059
#define BTH_OPCODE_RC_CMP_SWAP (BTH_OPCODE_RC | BTH_OPCODE_CMP_SWAP)
Packit 857059
#define BTH_OPCODE_RC_FETCH_ADD (BTH_OPCODE_RC | BTH_OPCODE_FETCH_ADD)
Packit 857059
	/* 0x15 - 0x1f reserved */
Packit 857059
#define BTH_OPCODE_UC_SEND_FIRST	(BTH_OPCODE_UC | BTH_OPCODE_SEND_FIRST)
Packit 857059
#define BTH_OPCODE_UC_SEND_MIDDLE	(BTH_OPCODE_UC | BTH_OPCODE_SEND_MIDDLE)
Packit 857059
#define BTH_OPCODE_UC_SEND_LAST	(BTH_OPCODE_UC | BTH_OPCODE_SEND_LAST)
Packit 857059
#define BTH_OPCODE_UC_SEND_LAST_IMMED	(BTH_OPCODE_UC | BTH_OPCODE_SEND_LAST_IMMED)
Packit 857059
#define BTH_OPCODE_UC_SEND_ONLY	(BTH_OPCODE_UC | BTH_OPCODE_SEND_ONLY)
Packit 857059
#define BTH_OPCODE_UC_SEND_ONLY_IMMED	(BTH_OPCODE_UC | BTH_OPCODE_SEND_ONLY_IMMED)
Packit 857059
#define BTH_OPCODE_UC_RDMA_WRITE_FIRST	(BTH_OPCODE_UC | BTH_OPCODE_RDMA_WRITE_FIRST)
Packit 857059
#define BTH_OPCODE_UC_RDMA_WRITE_MIDDLE	(BTH_OPCODE_UC | BTH_OPCODE_RDMA_WRITE_MIDDLE)
Packit 857059
#define BTH_OPCODE_UC_RDMA_WRITE_LAST	(BTH_OPCODE_UC | BTH_OPCODE_RDMA_WRITE_LAST)
Packit 857059
#define BTH_OPCODE_UC_RDMA_WRITE_LAST_IMMED	(BTH_OPCODE_UC | BTH_OPCODE_RDMA_WRITE_LAST_IMMED)
Packit 857059
#define BTH_OPCODE_UC_RDMA_WRITE_ONLY	(BTH_OPCODE_UC | BTH_OPCODE_RDMA_WRITE_ONLY)
Packit 857059
#define BTH_OPCODE_UC_RDMA_WRITE_ONLY_IMMED	(BTH_OPCODE_UC | BTH_OPCODE_RDMA_WRITE_ONLY_IMMED)
Packit 857059
	/* 0x2C - 0x3f reserved */
Packit 857059
#define BTH_OPCODE_RD_SEND_FIRST	(BTH_OPCODE_RD | BTH_OPCODE_SEND_FIRST)
Packit 857059
#define BTH_OPCODE_RD_SEND_MIDDLE	(BTH_OPCODE_RD | BTH_OPCODE_SEND_MIDDLE)
Packit 857059
#define BTH_OPCODE_RD_SEND_LAST	(BTH_OPCODE_RD | BTH_OPCODE_SEND_LAST)
Packit 857059
#define BTH_OPCODE_RD_SEND_LAST_IMMED	(BTH_OPCODE_RD | BTH_OPCODE_SEND_LAST_IMMED)
Packit 857059
#define BTH_OPCODE_RD_SEND_ONLY	(BTH_OPCODE_RD | BTH_OPCODE_SEND_ONLY)
Packit 857059
#define BTH_OPCODE_RD_SEND_ONLY_IMMED	(BTH_OPCODE_RD | BTH_OPCODE_SEND_ONLY_IMMED)
Packit 857059
#define BTH_OPCODE_RD_RDMA_WRITE_FIRST	(BTH_OPCODE_RD | BTH_OPCODE_RDMA_WRITE_FIRST)
Packit 857059
#define BTH_OPCODE_RD_RDMA_WRITE_MIDDLE	(BTH_OPCODE_RD | BTH_OPCODE_RDMA_WRITE_MIDDLE)
Packit 857059
#define BTH_OPCODE_RD_RDMA_WRITE_LAST	(BTH_OPCODE_RD | BTH_OPCODE_RDMA_WRITE_LAST)
Packit 857059
#define BTH_OPCODE_RD_RDMA_WRITE_LAST_IMMED	(BTH_OPCODE_RD | BTH_OPCODE_RDMA_WRITE_LAST_IMMED)
Packit 857059
#define BTH_OPCODE_RD_RDMA_WRITE_ONLY	(BTH_OPCODE_RD | BTH_OPCODE_RDMA_WRITE_ONLY)
Packit 857059
#define BTH_OPCODE_RD_RDMA_WRITE_ONLY_IMMED	(BTH_OPCODE_RD | BTH_OPCODE_RDMA_WRITE_ONLY_IMMED)
Packit 857059
#define BTH_OPCODE_RD_RDMA_READ_REQ	(BTH_OPCODE_RD | BTH_OPCODE_RDMA_READ_REQ)
Packit 857059
#define BTH_OPCODE_RD_RDMA_READ_RESP_FIRST	(BTH_OPCODE_RD | BTH_OPCODE_RDMA_READ_RESP_FIRST)
Packit 857059
#define BTH_OPCODE_RD_RDMA_READ_RESP_MIDDLE	(BTH_OPCODE_RD | BTH_OPCODE_RDMA_READ_RESP_MIDDLE)
Packit 857059
#define BTH_OPCODE_RD_RDMA_READ_RESP_LAST	(BTH_OPCODE_RD | BTH_OPCODE_RDMA_READ_RESP_LAST)
Packit 857059
#define BTH_OPCODE_RD_RDMA_READ_RESP_ONLY	(BTH_OPCODE_RD | BTH_OPCODE_RDMA_READ_RESP_ONLY)
Packit 857059
#define BTH_OPCODE_RD_ACK	(BTH_OPCODE_RD | BTH_OPCODE_ACK)
Packit 857059
#define BTH_OPCODE_RD_ATOMIC_ACK	(BTH_OPCODE_RD | BTH_OPCODE_ATOMIC_ACK)
Packit 857059
#define BTH_OPCODE_RD_CMP_SWAP	(BTH_OPCODE_RD | BTH_OPCODE_CMP_SWAP)
Packit 857059
#define BTH_OPCODE_RD_FETCH_ADD	(BTH_OPCODE_RD | BTH_OPCODE_FETCH_ADD)
Packit 857059
#define BTH_OPCODE_RD_RESYNC	(BTH_OPCODE_RD | BTH_OPCODE_RESYNC)
Packit 857059
	/* 0x56 - 0x5f reserved */
Packit 857059
	/* 0x60 - 0x63 reserved */
Packit 857059
#define BTH_OPCODE_UD_SEND_ONLY	(BTH_OPCODE_UD | BTH_OPCODE_SEND_ONLY)
Packit 857059
#define BTH_OPCODE_UD_SEND_ONLY_IMMED	(BTH_OPCODE_UD | BTH_OPCODE_SEND_ONLY_IMMED)
Packit 857059
	/* 0x66 - 0x7f reserved */
Packit 857059
	/* 0x80 - 0xBF reserved */
Packit 857059
	/* 0xC0 - 0xFF manufacturer specific codes */
Packit 857059
Packit 857059
static __inline void
Packit 857059
BSWAP_IB_BTH(
Packit 857059
	IB_BTH		*Header
Packit 857059
	)
Packit 857059
{
Packit 857059
	Header->Pkey = ntoh16(Header->Pkey);
Packit 857059
	Header->Qp.AsUINT32 = ntoh32(Header->Qp.AsUINT32);
Packit 857059
	Header->Psn.AsUINT32 = ntoh32(Header->Psn.AsUINT32);
Packit 857059
}
Packit 857059
Packit 857059
/*
Packit 857059
 * Datagram Extended Transport Header
Packit 857059
 */
Packit 857059
typedef struct _IB_DETH {
Packit 857059
	IB_Q_KEY	Qkey;
Packit 857059
Packit 857059
	union _IB_DETH_QP {
Packit 857059
		uint32	AsUINT32;
Packit 857059
Packit 857059
		struct _IB_DETH_QP_S {IB_BITFIELD2(uint32,
Packit 857059
			Reserved:		8,
Packit 857059
			SrcQPNumber:	24)
Packit 857059
			
Packit 857059
		} s;
Packit 857059
	} Qp;
Packit 857059
Packit 857059
} PACK_SUFFIX IB_DETH;
Packit 857059
Packit 857059
static __inline void
Packit 857059
BSWAP_IB_DETH(
Packit 857059
	IB_DETH		*Header
Packit 857059
	)
Packit 857059
{
Packit 857059
	Header->Qkey = ntoh32(Header->Qkey);
Packit 857059
	Header->Qp.AsUINT32 = ntoh32(Header->Qp.AsUINT32);
Packit 857059
}
Packit 857059
Packit 857059
/*
Packit 857059
 * Swap Immediate Data
Packit 857059
 */
Packit 857059
static __inline void
Packit 857059
BSWAP_IMMED_DATA(
Packit 857059
	uint32		*ImmDt
Packit 857059
	)
Packit 857059
{
Packit 857059
	*ImmDt = ntoh32(*ImmDt);
Packit 857059
}
Packit 857059
Packit 857059
typedef struct _IB_LOCAL_PKT_HEADERS {
Packit 857059
	IB_LRH	Lrh;
Packit 857059
	IB_BTH	Bth;
Packit 857059
} PACK_SUFFIX IB_LOCAL_PKT_HEADERS;
Packit 857059
Packit 857059
typedef struct _IB_GLOBAL_PKT_HEADERS {
Packit 857059
	IB_LRH	Lrh;
Packit 857059
	IB_GRH	Grh;
Packit 857059
	IB_BTH	Bth;
Packit 857059
} PACK_SUFFIX IB_GLOBAL_PKT_HEADERS;
Packit 857059
Packit 857059
typedef struct _IB_LOCAL_UD_HEADERS {
Packit 857059
	IB_LRH	Lrh;
Packit 857059
	IB_BTH	Bth;
Packit 857059
	IB_DETH	Deth;
Packit 857059
} PACK_SUFFIX IB_LOCAL_UD_HEADERS;
Packit 857059
Packit 857059
typedef struct _IB_GLOBAL_UD_HEADERS {
Packit 857059
	IB_LRH	Lrh;
Packit 857059
	IB_GRH	Grh;
Packit 857059
	IB_BTH	Bth;
Packit 857059
	IB_DETH	Deth;
Packit 857059
} PACK_SUFFIX IB_GLOBAL_UD_HEADERS;
Packit 857059
Packit 857059
typedef struct _IB_LOCAL_UD_IMM_HEADERS {
Packit 857059
	IB_LRH	Lrh;
Packit 857059
	IB_BTH	Bth;
Packit 857059
	IB_DETH	Deth;
Packit 857059
	uint32	ImmDt;
Packit 857059
} PACK_SUFFIX IB_LOCAL_UD_IMM_HEADERS;
Packit 857059
Packit 857059
typedef struct _IB_GLOBAL_UD_IMM_HEADERS {
Packit 857059
	IB_LRH	Lrh;
Packit 857059
	IB_GRH	Grh;
Packit 857059
	IB_BTH	Bth;
Packit 857059
	IB_DETH	Deth;
Packit 857059
	uint32	ImmDt;
Packit 857059
} PACK_SUFFIX IB_GLOBAL_UD_IMM_HEADERS;
Packit 857059
Packit 857059
Packit 857059
#include "iba/public/ipackoff.h"
Packit 857059
Packit 857059
#if defined (__cplusplus)
Packit 857059
};
Packit 857059
#endif
Packit 857059
Packit 857059
#endif /* _IBA_IB_PKT_H_ */