G.4.18 Transmit - Intel Extensible Firmware Interface Specification

Intel extensible firmware interface specification
Table of Contents

Advertisement

Extensible Firmware Interface Specification
G.4.17.3
Checking Command Execution Results
After command execution completes, either successfully or not, the
contains the result of the command execution.
StatCode
SUCCESS
INVALID_CDB
INVALID_CPB
BUSY
QUEUE_FULL
NOT_STARTED
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
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
OpCode
OpFlags
CPBsize
DBsize
CPBaddr
DBaddr
StatCode
StatFlags
IFnum
Control
460
Reason
Command completed successfully. Frame is ready to transmit.
One of the CDB fields was not set correctly.
One of the CPB fields was not set correctly.
UNDI is already processing commands. Try again later.
Command queue is full. Try again later.
The UNDI is not started.
The UNDI is not initialized.
!PXE.Implementation
How to initialize the CDB structure for a Transmit command
PXE_OPCODE_TRANSMIT
Set as needed.
sizeof(PXE_CPB_TRANSMIT)
PXE_DBSIZE_NOT_USED
Address of a
PXE_CPB_TRANSMIT
PXE_DBADDR_NOT_USED
PXE_STATCODE_INITIALIZE
PXE_STATFLAGS_INITIALIZE
A valid interface number from zero to !PXE.IFcnt.
Set as needed.
12/12/00
CDB.StatCode
flags), the UNDI will have to copy the
structure.
field
Version 1.02

Advertisement

Table of Contents
loading
Need help?

Need help?

Do you have a question about the Extensible Firmware Interface and is the answer not in the manual?

Subscribe to Our Youtube Channel

Table of Contents