diff options
author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2012-06-25 13:06:12 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2012-06-25 13:10:36 -0400 |
commit | 7b0cfee1a24efdfe0235bac62e53f686fe8a8e24 (patch) | |
tree | eeeb8cc3bf7be5ec0e54b7c4f3808ef88ecca012 /net/ipv6/esp6.c | |
parent | 9756fe38d10b2bf90c81dc4d2f17d5632e135364 (diff) | |
parent | 6b16351acbd415e66ba16bf7d473ece1574cf0bc (diff) |
Merge tag 'v3.5-rc4' into drm-intel-next-queued
I want to merge the "no more fake agp on gen6+" patches into
drm-intel-next (well, the last pieces). But a patch in 3.5-rc4 also
adds a new use of dev->agp. Hence the backmarge to sort this out, for
otherwise drm-intel-next merged into Linus' tree would conflict in the
relevant code, things would compile but nicely OOPS at driver load :(
Conflicts in this merge are just simple cases of "both branches
changed/added lines at the same place". The only tricky part is to
keep the order correct wrt the unwind code in case of errors in
intel_ringbuffer.c (and the MI_DISPLAY_FLIP #defines in i915_reg.h
together, obviously).
Conflicts:
drivers/gpu/drm/i915/i915_reg.h
drivers/gpu/drm/i915/intel_ringbuffer.c
Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'net/ipv6/esp6.c')
-rw-r--r-- | net/ipv6/esp6.c | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/net/ipv6/esp6.c b/net/ipv6/esp6.c index 1e62b7557b00..db1521fcda5b 100644 --- a/net/ipv6/esp6.c +++ b/net/ipv6/esp6.c | |||
@@ -413,19 +413,15 @@ static u32 esp6_get_mtu(struct xfrm_state *x, int mtu) | |||
413 | struct esp_data *esp = x->data; | 413 | struct esp_data *esp = x->data; |
414 | u32 blksize = ALIGN(crypto_aead_blocksize(esp->aead), 4); | 414 | u32 blksize = ALIGN(crypto_aead_blocksize(esp->aead), 4); |
415 | u32 align = max_t(u32, blksize, esp->padlen); | 415 | u32 align = max_t(u32, blksize, esp->padlen); |
416 | u32 rem; | 416 | unsigned int net_adj; |
417 | 417 | ||
418 | mtu -= x->props.header_len + crypto_aead_authsize(esp->aead); | 418 | if (x->props.mode != XFRM_MODE_TUNNEL) |
419 | rem = mtu & (align - 1); | 419 | net_adj = sizeof(struct ipv6hdr); |
420 | mtu &= ~(align - 1); | 420 | else |
421 | 421 | net_adj = 0; | |
422 | if (x->props.mode != XFRM_MODE_TUNNEL) { | ||
423 | u32 padsize = ((blksize - 1) & 7) + 1; | ||
424 | mtu -= blksize - padsize; | ||
425 | mtu += min_t(u32, blksize - padsize, rem); | ||
426 | } | ||
427 | 422 | ||
428 | return mtu - 2; | 423 | return ((mtu - x->props.header_len - crypto_aead_authsize(esp->aead) - |
424 | net_adj) & ~(align - 1)) + (net_adj - 2); | ||
429 | } | 425 | } |
430 | 426 | ||
431 | static void esp6_err(struct sk_buff *skb, struct inet6_skb_parm *opt, | 427 | static void esp6_err(struct sk_buff *skb, struct inet6_skb_parm *opt, |