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;