--- linux-2.6.23-rc1.orig/net/ipv4/inet_lro.c 2007-07-30 13:10:49.000000000 -0400 +++ linux-2.6.23-rc1/net/ipv4/inet_lro.c 2007-07-30 15:17:51.000000000 -0400 @@ -126,6 +126,7 @@ static void lro_update_tcp_ip_header(str htons(lro_desc->ip_tot_len) - IP_HDR_LEN(iph), IPPROTO_TCP, lro_desc->data_csum); + lro_desc->parent->ip_summed = CHECKSUM_UNNECESSARY; } static __wsum lro_tcp_data_csum(struct iphdr *iph, struct tcphdr *tcph, int len) @@ -396,6 +397,9 @@ static struct sk_buff *lro_gen_skb(struc if (!skb) return NULL; + if (hlen > len) + hlen = len; + skb->len = len; skb->data_len = len - hlen; skb->truesize += true_size;