![Intel Extensible Firmware Interface Specification Download Page 478](http://html1.mh-extra.com/html/intel/extensible-firmware-interface/extensible-firmware-interface_specification_2073117478.webp)
Extensible Firmware Interface Specification
460
12/12/00
Version 1.02
G.4.17.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. Frame is ready to transmit.
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.
G.4.18 Transmit
The Transmit command is used to place a packet into the transmit queue. The data buffers given to
this command are to be considered locked and the application or universal network driver loses the
ownership of those buffers and must not free or relocate them until the ownership returns.
When the packets are transmitted, a transmit complete interrupt is generated (if interrupts are
disabled, the transmit interrupt status is still set and can be checked using the Get Status command).
Some UNDI implementations and network adapters support transmitting multiple packets with one
transmit command. If this feature is supported, multiple transmit CPBs can be linked in one
transmit command.
Though all UNDIs support fragmented frames, the same cannot be said for all network devices or
protocols. If a fragmented frame CPB is given to UNDI and the network device does not support
fragmented frames (see
!PXE.Implementation
flags), the UNDI will have to copy the
fragments into a local buffer before transmitting.
G.4.18.1
Issuing the Command
To issue a Transmit command, create a CDB and fill it in as shows in the table below:
CDB Field
How to initialize the CDB structure for a Transmit command
OpCode
PXE_OPCODE_TRANSMIT
OpFlags
Set as needed.
CPBsize
sizeof(PXE_CPB_TRANSMIT)
DBsize
PXE_DBSIZE_NOT_USED
CPBaddr
Address of a
PXE_CPB_TRANSMIT
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.
Summary of Contents for Extensible Firmware Interface
Page 1: ...Extensible Firmware Interface Specification Version 1 02 December 12 2000...
Page 4: ...Extensible Firmware Interface Specification iv 12 12 00 Version 1 02...
Page 42: ...Extensible Firmware Interface Specification 24 12 01 00 Version 1 02...
Page 190: ...Extensible Firmware Interface Specification 172 12 12 00 Version 1 02...
Page 200: ...Extensible Firmware Interface Specification 182 12 12 00 Version 1 02...
Page 226: ...Extensible Firmware Interface Specification 208 12 12 00 Version 1 02...
Page 230: ...Extensible Firmware Interface Specification 212 12 12 00 Version 1 02...
Page 252: ...Extensible Firmware Interface Specification 234 12 12 00 Version 1 02...
Page 294: ...Extensible Firmware Interface Specification 276 12 12 00 Version 1 02...
Page 348: ...Extensible Firmware Interface Specification 330 12 01 00 Version 1 01...
Page 350: ...Extensible Firmware Interface Specification 332 12 12 00 Version 1 02...
Page 354: ...Extensible Firmware Interface Specification 336 12 12 00 Version 1 02...
Page 362: ...Extensible Firmware Interface Specification 344 12 12 00 Version 1 02...
Page 486: ...Extensible Firmware Interface Specification 468 12 12 00 Version 1 02...
Page 494: ...Extensible Firmware Interface Specification 476 12 12 00 Version 1 02...