* Rx checksum offload for fragments
@ 2010-07-27 22:56 Dimitris Michailidis
0 siblings, 0 replies; only message in thread
From: Dimitris Michailidis @ 2010-07-27 22:56 UTC (permalink / raw)
To: David Miller, netdev
I am looking at a problem with the cxgb4 driver related to Rx checksum
offload and IPv6 fragments. For IP/IPv6 fragments the device provides the
L4 checksum without the pseudo-header, which the driver passes in skb->csum
and sets CHECKSUM_COMPLETE. This works for IP fragments but triggers errors
from netdev_rx_csum_fault for IPv6. The errors are because of this code
in ip6_frag_queue:
if (skb->ip_summed == CHECKSUM_COMPLETE) {
const unsigned char *nh = skb_network_header(skb);
skb->csum = csum_sub(skb->csum,
csum_partial(nh, (u8 *)(fhdr + 1) - nh,
0));
}
which subtracts the checksum for the L3 headers (that HW does not include in
the first place). AFAICS IPv4 does not make a similar adjustment to
skb->csum for its header. Am I missing something here or do IP and IPv6
interpret CHECKSUM_COMPLETE differently? And what should the driver do?
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2010-07-27 22:56 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-07-27 22:56 Rx checksum offload for fragments Dimitris Michailidis
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.