Intel 82558 Switch User Manual


 
86 Intel 8255x 10/100 Mbps Ethernet Controller Family Open Source Software Developer Manual
Host Software Interface
6.4.2.5.1 Dynamic TBD Mode
Note: Dynamic TBD mode only exists in the 82558 and 82559 devices. It is not a valid mode for the
82557.
The 82557 requires all TBDs to be setup by the driver before the device is issued the CU start or
CU resume command. However, in environments where virtual addresses must be translated to
physical addresses, TBD setup is a very time consuming process. The 82558 and 82559 support a
new configuration mode called “dynamic TBD” mode, which activates two new features in the
TBD structure. (Details regarding configuration of this mode are in Section 6.4.2.3, “Configure
(010b)”.) Each TBD, which still has two 32-bit Dwords as defined in the 82557, has the following
two features defined.
NV - Not valid pointer. When the device is configured to dynamic TBD, it checks the
transmit buffer pointer in the TBD. If it equals all zeros, it is considered to be an invalid
pointer. The device discards the TBD and attempts to read it again as soon as possible. When
this pointer is valid, the TBD is valid and the device can use the transmit buffer.
EL - End of list bit. When this bit is set, the current TBD is the last TBD associated with this
transmit frame. The EL bit does not have to be set in the last TBD as indicated by the TBD
number field in the TCB. If the device reaches the last TBD in the array as indicated in the
TBD number field, it terminates the transmission regardless of the EL bit status. However, if
the device detects a TBD with a valid pointer and its EL bit set, it terminates the frame even if
it did not reach the number of TBDs indicated in the TBD number field. If dynamic TBD
configuration is currently in use, the driver should set the value of the TBD number field in the
TCB to FFh.
These two features enable the driver to spontaneously add TBDs after issuing the CU resume
command. The goal of automatically adding transmit buffer descriptors is to reduce overall latency
by achieving more parallelism between the driver and the device. This scheme allows the driver to
issue the CU resume command after filling in the first TBD (or even before that) and, while the
device is processing the transmit command block, the first TBD, and first transmit buffer, to
continue setting up the TBD array.
The driver programs FFh in the TBD number field of the transmit command block. The driver
prepares the first TBD in the TBD array with a valid pointer, and it is considered valid. Afterwards,
the driver issues the command to hardware.
The device flow is:
1. Fetch any immediate data from TCB.
2. Fetch the first and second TBDs.
3. Fetch the first transmit buffer since the pointer is valid in the first TBD.
4. Begin transmission (depending on the transmit threshold value).
Transmit Buffer
#N
This is the starting address of the memory area that contains the data to be sent. It is an
absolute 32-bit address. It does not add the CU base value to determine the physical
address.
EL (End of List)
The EL bit is not used by the 82557 and is only valid for 82558 and later generation
devices. When it is set, the TBD is the last TBD associated with this transmit frame.
Size
(Actual Count)
This 14-bit quantity specifies the number of bytes that hold information for the current
buffer. It is set by the CPU before transmission.