E.4.17 fill header, E.4.17.1 issuing the command – Intel Extensible Firmware Interface User Manual
Page 948

Extensible Firmware Interface Specification
E-82
12/01/02
Version 1.10
E.4.17 Fill
Header
This command is used to fill the media header(s) in transmit packet(s).
E.4.17.1
Issuing the Command
To issue a Fill Header command, create a CDB and fill it in as shown in the table below:
CDB Field
How to initialize the CDB structure for a Fill Header command
OpCode
PXE_OPCODE_FILL_HEADER
OpFlags
Set as needed.
CPBsize
PXE_CPB_FILL_HEADER
DBsize
PXE_DBSIZE_NOT_USED
CPBaddr
Address of a
PXE_CPB_FILL_HEADER
structure.
DBaddr
PXE_DBADDR_NOT_USED
StatCode
PXE_STATCODE_INITIALIZE
StatFlags
PXE_STATFLAGS_INITIALIZE
IFnum
A valid interface number from zero to
!PXE.IFcnt
.
Control
Set as needed.
OpFlags
Select one of the OpFlags below so the UNDI knows what type of CPB is being used.
PXE_OPFLAGS_FILL_HEADER_WHOLE
PXE_OPFLAGS_FILL_HEADER_FRAGMENTED
Preparing the CPB
If multiple frames per command are supported (see
!PXE.Implementation
flags), multiple
CPBs can be packed together. The
CDB.CPBsize
field lets the UNDI know how many CPBs are
packed together.
Nonfragmented Frame
#pragma pack(1)
typedef struct s_pxe_cpb_fill_header {
// Source and destination MAC addresses. These will be copied
// into the media header without doing byte swapping.
PXE_MAC_ADDR
SrcAddr;
PXE_MAC_ADDR
DestAddr;
// Address of first byte of media header. The first byte of
// packet data follows the last byte of the media header.
PXE_UINT64
MediaHeader;