OS-7990: ip_cksum() is a mess

Details

Issue Type:Bug
Priority:4 - Normal
Status:Resolved
Created at:2019-09-18T03:36:15.083Z
Updated at:2021-03-26T02:02:58.691Z

People

Created by:Former user
Reported by:Former user
Assigned to:Former user

Resolution

Duplicate: The problem is a duplicate of an existing issue.
(Resolution Date: 2021-03-26T02:02:58.684Z)

Description

Currently, the ip_cksum() function in the kernel is a rather twisted, hard to follow mess.  The reason for this is it's support of a flag STRUIO_IP.

We've been told the flag was introduced in Solaris as part of PSARC/1994/151
"Synchronous STREAMS" in an effort to increase FDDI performance:

Currently, memory to memory TCP/IP throughput between two SS10 Model 41
systems (uniprocessor 40 Mhz) connected with point-to-point FDDI
shows a 25% increase in throughput (64.7 Mbit/S vs 51.7 Mbit/S) compared
to a kernel built from the same source gate with the standard STREAMS
framework and TCP/IP.

The definition of the flag was:

STRUIO_IP - queue requires the IP (Internet Protocol) checksum
uio be used. In addition to copying data the IP checksum is done
as part of the copying process, the resulting partial checksum
is stored in the mblk datab structure.

While impressive for it's time, it does not appear to be used by any drivers in the past 2 decades, and it makes the IP checksum calculation far more complicated than is necessary. We should remove this support and simplify things accordingly.

Comments