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

Page 948

Advertising
background image

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;

Advertising