Intel Extensible Firmware Interface Network Router User Manual


  Open as PDF
of 1084
 
32/64-Bit UNDI Specification
Version 1.10 12/01/02 E-85
E.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.
E.4.18.1 Issuing the Command
To issue a Transmit command, create a CDB and fill it in as shown 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.