Intel PCI User Manual

Page of 406
Receive and Transmit Description
58
Software Developer’s Manual
TCP with options
UDP with limitations.
UDP (unlike TCP) is not a “reliable protocol”, and fragmentation is not supported at the UDP 
level. UDP messages that are larger than the MTU size of the given network medium are normally 
fragmented at the IP layer. This is different from TCP, where large TCP messages can be 
fragmented at either the IP or TCP layers depending on the software implementation. The Ethernet 
controller has the ability to segment UDP traffic (in addition to TCP traffic). This process has 
limited usefulness.
IP tunneled packets are not supported for TCP Segmentation operation
1
.
3.5.5
TCP Segmentation Indication
Software indicates a TCP Segmentation transmission context to the hardware by setting up a TCP/
IP Context Transmit Descriptor. The purpose of this descriptor is to provide information to the 
hardware to be used during the TCP segmentation offload process. The layout of this descriptor is 
reproduced in 
Figure 3-6. TCP/IP Context Transmit Descriptor & Command Layout
Setting the TSE bit in the Command field to 1b indicates that this descriptor refers to the TCP 
Segmentation context (as opposed to the normal checksum offloading context). This causes the 
checksum offloading, packet length, header length, and maximum segment size parameters to be 
loaded from the descriptor into the Ethernet controller.
The TCP Segmentation prototype header is taken from the packet data itself. Software must 
identity the type of packet that is being sent (IP/TCP, IP/UDP, other), calculate appropriate 
checksum offloading values for the desired checksums, and calculate the length of the header 
which is pre-pended. The header may be up to 240 bytes in length.
Once the TCP Segmentation context has been set, the next descriptor provides the initial data to 
transfer. This first descriptor(s) must point to a packet of the type indicated. Furthermore, the data it 
points to may need to be modified by software as it serves as the prototype header for all packets 
within the TCP Segmentation context. The following sections describe the supported packet types 
and the various updates which are performed by hardware. This should be used as a guide to 
determine what must be modified in the original packet header to make it a suitable prototype 
header. 
The following summarizes the fields considered by the driver for modification in constructing the 
prototype header:
63
48 47
40 39
32 31
16 15
8 7
0
0
TUCSE
TUCS0
TUCSS
IPCSE
IPCS0
IPCSS
8
MSS
HDRLEN
RSV
STA
TUCMD
DTYP
PAYLEN
63
48 47
40 3936 35 32 31
24 23
20 19
0
7           
6
5
4
3
2
0
IDE
RSV
DEXT
RSV
RS
TSE
IP
TCP