E.3.5 compound types – Intel Extensible Firmware Interface User Manual
Page 899
32/64-Bit UNDI Specification
Version 1.10
12/01/02
E-33
E.3.5 Compound
Types
All PXE structures must be byte packed.
E.3.5.1 PXE_HW_UNDI
This section defines the C structures and #defines for the !PXE H/W UNDI interface.
#pragma pack(1)
typedef struct s_pxe_hw_undi {
PXE_UINT32
Signature; //
PXE_ROMID_SIGNATURE
PXE_UINT8
Len; //
sizeof(PXE_HW_UNDI)
PXE_UINT8
Fudge;
// makes 8-bit cksum equal zero
PXE_UINT8
Rev; //
PXE_ROMID_REV
PXE_UINT8
IFcnt;
// physical connector count
PXE_UINT8
MajorVer; //
PXE_ROMID_MAJORVER
PXE_UINT8
MinorVer;
//
PXE_ROMID_MINORVER
PXE_UINT16
reserved;
// zero, not used
PXE_UINT32
Implementation; // implementation flags
} PXE_HW_UNDI;
#pragma pack()
// Status port bit definitions
// UNDI operation state
#define
PXE_HWSTAT_STATE_MASK
0xC0000000
#define
PXE_HWSTAT_BUSY
0xC0000000
#define
PXE_HWSTAT_INITIALIZED
0x80000000
#define
PXE_HWSTAT_STARTED
0x40000000
#define
PXE_HWSTAT_STOPPED
0x00000000
// If set, last command failed
#define
PXE_HWSTAT_COMMAND_FAILED 0x20000000
// If set, identifies enabled receive filters
#define PXE_HWSTAT_PROMISCUOUS_MULTICAST_RX_ENABLED
0x00001000
#define
PXE_HWSTAT_PROMISCUOUS_RX_ENABLED
0x00000800
#define
PXE_HWSTAT_BROADCAST_RX_ENABLED
0x00000400
#define
PXE_HWSTAT_MULTICAST_RX_ENABLED
0x00000200
#define
PXE_HWSTAT_UNICAST_RX_ENABLED
0x00000100