diff options
Diffstat (limited to 'net/ipv4/inet_lro.c')
-rw-r--r-- | net/ipv4/inet_lro.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/net/ipv4/inet_lro.c b/net/ipv4/inet_lro.c index cc280a3f4f96..1975f52933c5 100644 --- a/net/ipv4/inet_lro.c +++ b/net/ipv4/inet_lro.c | |||
@@ -29,6 +29,7 @@ | |||
29 | #include <linux/module.h> | 29 | #include <linux/module.h> |
30 | #include <linux/if_vlan.h> | 30 | #include <linux/if_vlan.h> |
31 | #include <linux/inet_lro.h> | 31 | #include <linux/inet_lro.h> |
32 | #include <net/checksum.h> | ||
32 | 33 | ||
33 | MODULE_LICENSE("GPL"); | 34 | MODULE_LICENSE("GPL"); |
34 | MODULE_AUTHOR("Jan-Bernd Themann <themann@de.ibm.com>"); | 35 | MODULE_AUTHOR("Jan-Bernd Themann <themann@de.ibm.com>"); |
@@ -114,11 +115,9 @@ static void lro_update_tcp_ip_header(struct net_lro_desc *lro_desc) | |||
114 | *(p+2) = lro_desc->tcp_rcv_tsecr; | 115 | *(p+2) = lro_desc->tcp_rcv_tsecr; |
115 | } | 116 | } |
116 | 117 | ||
118 | csum_replace2(&iph->check, iph->tot_len, htons(lro_desc->ip_tot_len)); | ||
117 | iph->tot_len = htons(lro_desc->ip_tot_len); | 119 | iph->tot_len = htons(lro_desc->ip_tot_len); |
118 | 120 | ||
119 | iph->check = 0; | ||
120 | iph->check = ip_fast_csum((u8 *)lro_desc->iph, iph->ihl); | ||
121 | |||
122 | tcph->check = 0; | 121 | tcph->check = 0; |
123 | tcp_hdr_csum = csum_partial(tcph, TCP_HDR_LEN(tcph), 0); | 122 | tcp_hdr_csum = csum_partial(tcph, TCP_HDR_LEN(tcph), 0); |
124 | lro_desc->data_csum = csum_add(lro_desc->data_csum, tcp_hdr_csum); | 123 | lro_desc->data_csum = csum_add(lro_desc->data_csum, tcp_hdr_csum); |