Intel 82550 Switch User Manual


 
Intel 8255x 10/100 Mbps Ethernet Controller Family Open Source Software Developer Manual 87
Host Software Interface
5. Fetch data if the transmit buffer pointer is zero (invalid) in the second TBD or poll the TBD.
6. Finish the transmission if the EL bit is set.
6.4.2.5.2 Transmit Command Operation
The execution of a transmit command causes frame transmission. If the frame experiences
collisions, the device automatically attempts to re-transmit the frame up to 15 times. If it still
experiences collisions after 16 tries, the device increments the maximum collisions counter. The
following sequence outlines a general transmit command operation for the flexible memory
structure (TCBs and TBDs).
1. Place the transmit command opcode (100b) in the command word.
2. Place the destination address and length field in the appropriate transmit structure.
The TBD array address should point to the first TBD in the array. When the simplified
memory structure is used, the TBD array address is not used.
3. Configure the transmit buffer address and size (actual count) for each buffer. The last buffer in
the TBD array is determined by the TBD number field in the TCB.
The flow of events for transmitting a single frame using a flexible TCB is:
1. The CPU creates a TCB and TBD array in system memory. The transmit buffer address
pointers in the TBDs point to valid data buffers in host memory.
2. The CPU writes a CU start command (or CU resume if the CU is suspended) into the SCB.
The write event causes the device to read the CUC field, and the device notices that it should
start the CU.
3. The device processes the SCB, reads the SCB general pointer, and clears the SCB command
word.
4. The device reads the first TCB in the CBL and the first TBD from the TBD array.
5. If the TCB size field does not equal zero, the TCB holds data to be transmitted and the device
reads this data first.
6. The controller reads the first transmit data buffer from host memory at the address provided in
the transmit buffer #0 address field of the transmit buffer array.
7. After the transmit threshold bytes are read (either from one or multiple transmit buffers), the
controller begins frame transmission to the PHY interface.
8. If there are multiple TBDs, the controller reads the next TBD from the TBD array.
9. After the first buffer has been completely read, the device starts reading the transmit data from
the next buffer.
10. After the last buffer is completely read, the device sets the C bit in the TCB, enabling the
driver to re-use reuse the TCB, TBDs, and transmit buffers. The controller posts the underrun
bit in the TCB if an underrun occurred since the last TCB status was reported.
11. The device completes the frame transmission to the serial interface (for the 82557, either MII
or 82503).
12. The controller updates its internal transmit status counters.
The transmit command differs from other action commands. Generally, the action commands have
parameters in one memory block. However, the transmit command may have parts of the
parameters scattered in a linked list of buffers. The CU spontaneously pre-fetches the buffers in the
list.