The changes to how hardware receive checksums are handled broke
the netpoll checksum code (for CHECKSUM_HW). Since this is not at
all performance critical, try this patch. It changes to always to
normal software checksum.
--- linux-2.6.orig/net/core/netpoll.c 2006-03-22 09:30:56.000000000 -0800
+++ linux-2.6/net/core/netpoll.c 2006-04-19 10:30:13.000000000 -0700
@@ -102,20 +102,11 @@
static int checksum_udp(struct sk_buff *skb, struct udphdr *uh,
unsigned short ulen, u32 saddr, u32 daddr)
{
- unsigned int psum;
-
if (uh->check == 0 || skb->ip_summed == CHECKSUM_UNNECESSARY)
return 0;
- psum = csum_tcpudp_nofold(saddr, daddr, ulen, IPPROTO_UDP, 0);
-
- if (skb->ip_summed == CHECKSUM_HW &&
- !(u16)csum_fold(csum_add(psum, skb->csum)))
- return 0;
-
- skb->csum = psum;
-
- return __skb_checksum_complete(skb);
+ skb->csum = csum_tcpudp_nofold(saddr, daddr, ulen, IPPROTO_UDP, 0);
+ return (u16) csum_fold(skb_checksum(skb, 0, skb->len, skb->csum));
}
/*
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html