[Winpcap-users] TCP CHECKSUM OFFLOAD

Sabbiolina sabbiolina at gmail.com
Tue Aug 16 19:52:24 GMT 2005


I found this on m$ site:


TCP/IP Task Offload in NDIS 5

Network adapters with appropriate NDIS 5 (and later) miniport drivers
can increase the system performance by supporting hardware offload of
Transmission Control Protocol/Internet Protocol (TCP/IP) CPU-intensive
tasks. For example, with TCP/IP checksum offload alone, up to 30
percent performance gain in CPU utilization has been seen in testing
at Microsoft. The NDIS interface and the TCP/IP transport have been
enhanced to allow miniport drivers to indicate hardware support for
performing:
•	

TCP/IP checksum calculation.
•	

TCP/IP segmentation.
•	

Internet Protocol Security (IPSec) Encryption Ciphers and Message Digests.

During initialization or when an interface appears as a Plug and Play
event, the TCP/IP driver will query the miniport through the
NdisRequest() mechanism with an object ID (OID) of
OID_TCP_TASK_OFFLOAD in order to find out which offload capabilities
the network adapter supports.

For each task the network adapter can offload, it will return an
NDIS_TASK_OFFLOAD structure that contains an indication of the task
supported and parameters specific to that task. The protocol then
enables the appropriate tasks by submitting a set request containing
the NDIS_TASK_OFFLOAD structures for those tasks. At this point, these
tasks are enabled for offload. The network adapter will receive
information specific to the task on a per-packet basis, along with
each packet.
Top of pageTop of page
Checksum Offload

On the send side, the network adapter that supports this offload will
calculate checksums that are needed and for which it has indicated the
capability of performing. For the TCP checksum, the Microsoft
transport will calculate the TCP pseudo header checksum and place this
value in the checksum field, so that the network adapter can calculate
the correct TCP checksum without touching the IP header.

On the receive side, the network adapter will fill in a
NDIS_TCP_IP_CHECKSUM_PACKET_INFO structure and set the appropriate
bits. If for any reason the network adapter cannot perform the
checksum, it will not set any bits and indicate the packet. TCP/IP
will then look at this and calculate the appropriate checksum itself.



What about implementations ?


Tnx
Sabbiolina



More information about the Winpcap-users mailing list