Intel 82559 用户手册

下载
页码 175
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 
.) 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.