beautypg.com

E.4.12.2 waiting for the command to execute, E.4.12.3 checking command execution results – Intel Extensible Firmware Interface User Manual

Page 936

background image

Extensible Firmware Interface Specification

E-70

12/01/02

Version 1.10

E.4.12.2

Waiting for the Command to Execute

Monitor the upper two bits (14 & 15) in the

CDB.StatFlags

field. Until these bits change to

report

PXE_STATFLAGS_COMMAND_COMPLETE

or

PXE_STATFLAGS_COMMAND_FAILED

,

the command has not been executed by the UNDI.

StatFlags Reason

COMMAND_COMPLETE

Command completed successfully. DB is written.

COMMAND_FAILED

Command failed. StatCode field contains error code.

COMMAND_QUEUED

Command has been queued.

INITIALIZE

Command has been not executed or queued.

E.4.12.3

Checking Command Execution Results

After command execution completes, either successfully or not, the

CDB.StatCode

field

contains the result of the command execution.

StatCode Reason

SUCCESS

Command completed successfully.

INVALID_CDB

One of the CDB fields was not set correctly.

INVALID_CPB

One of the CPB fields was not set correctly.

BUSY

UNDI is already processing commands. Try again later.

QUEUE_FULL

Command queue is full. Try again later.

NOT_STARTED

The UNDI is not started.

NOT_INITIALIZED

The UNDI is not initialized.

UNSUPPORTED

The requested operation is not supported.

Before Using the DB

The DB is used to read the current station, broadcast and permanent station MAC addresses. The

CDB.DBsize

and

CDB.DBaddr

fields can be set to

PXE_DBSIZE_NOT_USED

and

PXE_DBADDR_NOT_USED

if these addresses do not need to be read.

typedef struct s_pxe_db_station_address {

// Current station MAC address.

PXE_MAC_ADDR

StationAddr;

// Station broadcast MAC address.

PXE_MAC_ADDR

BroadcastAddr;

// Permanent station MAC address.

PXE_MAC_ADDR

PermanentAddr;

} PXE_DB_STATION_ADDRESS;