Intel 82551 Switch User Manual


 
10/100 Mbps Ethernet Controller Family Open Source Software Developer Manual 165
82550 and 82551QM Specific Information
When the headers are finished, they are subject to checksum for processing. The rest of the
transmission process is similar to transmission of a small send. This process repeats itself until the
last frame is about to be transmitted.
B.3.4.4 Handling the Last Frame
The number of bytes left for transmission after the first frame is calculated by subtracting the N *
Maximum TCP Payload from the Total TCP/UDP Payload. In other words:
(N * MAX TCP PAYLOAD) – (TOTAL TCP/UDP PAYLOAD)
To obtain the last frame TCP payload size, the above calculation is performed. The last frame TCP
payload size is less than or equal to the maximum TCP payload. The last frame is processed using
the rules listed below.
L2 header is processed. If SNAP is used, the SNAP length field is calculated using the IP total
length computations for the IP total length.
SNAP length field = (SNAP length of first packet) – (maximum TCP payload - TCP
payload of last packet)
IP header is processed:
IP total length equals the IP total length of the first packet.
(MAX TCP PAYLOAD) – (TCP payload of last packet)
IP identification is incremented from the last value.
IP options are not altered by hardware if they are present.
IP header checksum is calculated by checksum hardware if the IP checksum bit is set in
the IPCB.
TCP header is processed:
Sequence number is updated for outgoing packets. The previous frame size (TCP payload
only) is added to the previous frame sequence number (modulo 2
32
).
ACK, URG, RST and SYN flag values are transmitted as in the prototype header.
If the FIN flag equals 1 in the prototype header, it should also be set in this last frame.
If the PSH flag equals 1 in the prototype header, it should also be set it in this last frame.
Urgent pointer is left intact as in the first frame.
Pseudo header checksum is fixed with the TCP length as above.
TCP options are not altered by hardware if they are present.
TCP checksum is calculated by checksum hardware if the TCP checksum bit is set in the
IPCB.
The 82550 reports the transmit status in the IPCB upon completion for all data in the Large Send.
This enables the whole Large Send buffer to be reclaimed. In the case of a transmission failure (for
example, the maximum collision was exceeded), the Large Send session is not terminated and the
transmit operation proceeds with the next Large Send packet.
Note: The stack is responsible for maintaining the TCP sequence number and IP identification integrity.
Note: The 82550 is configured to use dynamic TBDs for Large Send since TBDs are read from host
memory in pairs and the number of TBDs is not known in advance. When it is configured in this