On Fri, 2020-05-29 at 19:23 +0800, Wang Li wrote: > diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c [] > @@ -798,7 +798,6 @@ void udp_set_csum(bool nocheck, struct sk_buff *skb, > } else if (skb_is_gso(skb)) { > uh->check = ~udp_v4_check(len, saddr, daddr, 0); > } else if (skb->ip_summed == CHECKSUM_PARTIAL) { > - uh->check = 0; > uh->check = udp_v4_check(len, saddr, daddr, lco_csum(skb));
Why do you think this is redundant? Where does uh point? (struct udphdr *uh = udp_hdr(skb);) What is lco_csum(skb) doing?