diff options
author | Herbert Xu <herbert@gondor.apana.org.au> | 2007-10-18 00:30:07 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2007-10-18 00:30:07 -0400 |
commit | 7aa68cb90638ccc36559a936814e4c089892b3d9 (patch) | |
tree | f31876becacf83572c9f9f417194126d65e3d1cc /net | |
parent | 33b5ecb8f64706d1ed472dcb44162ab3a7345724 (diff) |
[IPSEC]: Move ip_summed zapping out of xfrm6_rcv_spi
Not every transform needs to zap ip_summed. For example, a pure tunnel
mode encapsulation does not affect the hardware checksum at all. In fact,
every algorithm (that needs this) other than AH6 already does its own
ip_summed zapping.
This patch moves the zapping into AH6 which is in line with what IPv4 does.
Possible future optimisation: Checksum the data as we copy them in IPComp.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/ipv6/ah6.c | 2 | ||||
-rw-r--r-- | net/ipv6/xfrm6_input.c | 1 |
2 files changed, 2 insertions, 1 deletions
diff --git a/net/ipv6/ah6.c b/net/ipv6/ah6.c index f9f689162692..a8221d1da0ff 100644 --- a/net/ipv6/ah6.c +++ b/net/ipv6/ah6.c | |||
@@ -344,6 +344,8 @@ static int ah6_input(struct xfrm_state *x, struct sk_buff *skb) | |||
344 | pskb_expand_head(skb, 0, 0, GFP_ATOMIC)) | 344 | pskb_expand_head(skb, 0, 0, GFP_ATOMIC)) |
345 | goto out; | 345 | goto out; |
346 | 346 | ||
347 | skb->ip_summed = CHECKSUM_NONE; | ||
348 | |||
347 | hdr_len = skb->data - skb_network_header(skb); | 349 | hdr_len = skb->data - skb_network_header(skb); |
348 | ah = (struct ip_auth_hdr *)skb->data; | 350 | ah = (struct ip_auth_hdr *)skb->data; |
349 | ahp = x->data; | 351 | ahp = x->data; |
diff --git a/net/ipv6/xfrm6_input.c b/net/ipv6/xfrm6_input.c index 596a730294ec..b1201c33eb12 100644 --- a/net/ipv6/xfrm6_input.c +++ b/net/ipv6/xfrm6_input.c | |||
@@ -97,7 +97,6 @@ int xfrm6_rcv_spi(struct sk_buff *skb, int nexthdr, __be32 spi) | |||
97 | memcpy(skb->sp->xvec + skb->sp->len, xfrm_vec, | 97 | memcpy(skb->sp->xvec + skb->sp->len, xfrm_vec, |
98 | xfrm_nr * sizeof(xfrm_vec[0])); | 98 | xfrm_nr * sizeof(xfrm_vec[0])); |
99 | skb->sp->len += xfrm_nr; | 99 | skb->sp->len += xfrm_nr; |
100 | skb->ip_summed = CHECKSUM_NONE; | ||
101 | 100 | ||
102 | nf_reset(skb); | 101 | nf_reset(skb); |
103 | 102 | ||