It passes port number instead of IP address for checksuming. The udp4_hwcsum()
call is also bad, but my next patch will get rid of it anyway. The IPv6 code
does it correctly already. It also changes replaces 8 with sizeof(struct 
udphdr) 

Signed-off-by: Zoltan Kiss <[email protected]>
Cc: "David S. Miller" <[email protected]>
Cc: Thomas Graf <[email protected]>
Cc: Joe Perches <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
---
diff --git a/net/core/pktgen.c b/net/core/pktgen.c
index ba61e2b..d8905cd 100644
--- a/net/core/pktgen.c
+++ b/net/core/pktgen.c
@@ -3061,8 +3061,9 @@ static struct sk_buff *fill_packet_ipv4(struct net_device 
*odev,
                __wsum csum = udp_csum(skb);
 
                /* add protocol-dependent pseudo-header */
-               udph->check = csum_tcpudp_magic(udph->source, udph->dest,
-                                               datalen + 8, IPPROTO_UDP, csum);
+               udph->check = csum_tcpudp_magic(iph->saddr, iph->daddr,
+                                               datalen + sizeof(struct udphdr),
+                                               IPPROTO_UDP, csum);
 
                if (udph->check == 0)
                        udph->check = CSUM_MANGLED_0;
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to