E.4.18 transmit, E.4.18.1 issuing the command – Intel Extensible Firmware Interface User Manual

Page 951

Advertising
background image

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.

Advertising