Intel 82559 Switch User Manual


 
10/100 Mbps Ethernet Controller Family Open Source Software Developer Manual 161
82550 and 82551QM Specific Information
Note: The partial checksum required by the 82550 is not the partial checksum passed by the Microsoft*
IP stack per Microsoft offloading specification, v0.106.
For TCP/UDP checksum computation, the 82550 requires that the whole frame is copied into its
internal FIFO. The result is stored in the proper header fields and only then can the frame be
cleared for transmission or further processing. The 82550 pipelines transmission of frame N-1 and
the checksum computation of frame N such that back-to-back frames on the transmit queue will
flow at maximal DMA rate and checksum operation and transmission are at wire speed. This
minimizes the performance hit to “first frames events,” where the 82550 transmit FIFO was empty
prior to the transmission command.
B.2.4 Tunneling Support
The 82550 and 82551 provide one level of IPv4 header and TCP/UDP checksum computation. In
IP tunnel mode, the driver is expected to compute all IP headers checksum except one that may be
handled by the device. As these frame formats are not supported in autonomous mode, the driver is
expected to provide the semi-autonomous mode parameters to the 82550.
B.3 Large Send
B.3.1 Rationale
Large Send (also known as TCP Segmentation Offload [TSO]) allows the stack to transfer a frame
(larger than the MTU for that media) to the driver. (The maximum frame size for 10/100 Mbps
Ethernet is 1518 bytes.) For TCP/IP, a typical frame size may be the transmit window (the default
is 8760 bytes, which is approximately 6 full size frames). The 82550 supports Large Send of
frames up to 64 Kbytes. Performance increases would result from:
Stack computes only one header per block.
Stack does not segment the block to fit the MTU size. This decreases the overhead of multiple
virtual address mapping and linked list management.
The 82550 loads the prototype header from host memory only once (and stores it in the device) to
reduce PCI overhead.
The Large Send operation is supported for TCP only (not for UDP). Since servers are typically
more involved in transmission than client systems, the Large Send feature primarily benefits these
server systems. The estimated reduction in CPU utilization is 20%.
B.3.2 Driver interface
The IPCB structure used for Large Send operation is presented below. The fields relevant for the
Large Send feature are shaded. The driver must ensure that the TCP payload of a Large Send frame
is greater than the maximum TCP payload. In other words, there must be more than one frame in a
Large Send.