158 10/100 Mbps Ethernet Controller Family Open Source Software Developer Manual
82550 and 82551QM Specific Information
modes of operation. For instance, the driver must guarantee proper values for the Maximum TCP
Payload in Large Send mode and VLAN length inclusion.
Note: IP fragmentation is not supported by the 82550. Therefore, the driver should not request any
offload features for an IP fragment.
B.2 82550 Checksum Operation
The 82550 hardware supports an IP header (including options), UDP and TCP checksum
computation. The 82550 computes the checksum using two’s complement addition, and therefore
performs end around carry. In other words, it adds the carry generated from bit 15 to the least
significant bit in checksum computation.
Note: The 82550 is capable of computing one level of IP header and one TCP/UDP header and payload.
In case of multiple IP headers, the driver should compute all except but the outer most IP header
checksum.
Note: Per RFC768, if the computed UDP checksum is zero, it is transmitted as all ones. A UDP
checksum transmitted as all zeros means that the transmitter generated no UDP checksum.
B.2.1 Driver Interface
Software should compute the partial checksum of the pseudo header and store it in the checksum
field of the TCP or UDP header. The partial checksum is the 16-bit one’s complement sum of the 6
words in the pseudo header. It is not the one’s complement of the one’s complement sum. If this is
not done by the stack, the driver must be aware of the IP header offset and base offset and the
length of the TCP segment to compute and store the pseudo header checksum.
The IPCB structure used for the checksum offload is presented below. The fields relevant to
checksum operation are shaded.
Table 73. IPCB Structure Checksum Offload
Odd Word (D31:D16) Even Word (D15:D0) Offset
E
L
S I CID (5 bits) 000
N
C
CMD (4 bits) C X
O
K
U XXXX XXXX XXXX (12 bits)
0h
Link Address (32 bits)
4h
TBD Array Address (32 bits)
8h
Maximum TCP Payload E
O
F
0 IPCB Byte Count (14 bits)
Ch
TBD Number Transmit Threshold
IP Activation (12 bits) Scheduling (20 bits)
10h
TCP Header Offset (8 bits) IP Header Offset (8 bits) VLAN (16 bits)
14h
Transmit Buffer #0 Address (32 bits)
18h
Reserved (32 bits)
Total TCP Payload (16 bits)
E
L
0
Transmit Buffer #0 Size (14 bits)
1Ch
Reserved (14 bits)