On Tue, 30 Jul 2002, Donald Becker wrote:
> int csum_bits = rx_status & 0xee000000;
> if (csum_bits &&
> (csum_bits == (IPChksumValid | TCPChksumValid) ||
> csum_bits == (IPChksumValid | UDPChksumValid))) {
> skb->ip_summed = CHECKSUM_UNNECESSARY;
>
> Note that this relies on the kernel to make the final decision that the
> checksum is invalid.
>
> [[ This is the correct semantics: the driver might indicate that a protocol
> level checksum is correct, but it should not discard packets based
> on its (necessarily limited) understanding of higher level protocols.
> ]]
>
Nod.
So is CHECKSUM_WRONG needed to give a hint to the stack? It is possible
IPcsum is right but not the transport; Maybe ip_summed needs to be a
bitmap then?
You could use the information to move packets out of the stack fastpath
for example.
cheers,
jamal
|