diff options
author | David S. Miller <davem@davemloft.net> | 2014-03-25 20:29:20 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-03-25 20:29:20 -0400 |
commit | 04f58c88542b6b351efb4eea01134eb672e22e6e (patch) | |
tree | 47bb617212f8c8951f35730e324bdc43487a01ca /net/ipv6/ip6_output.c | |
parent | 0fc31966035d7a540c011b6c967ce8eae1db121b (diff) | |
parent | 632b06aa2842b12c6d6a510ec080fb6ebdb38ea5 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts:
Documentation/devicetree/bindings/net/micrel-ks8851.txt
net/core/netpoll.c
The net/core/netpoll.c conflict is a bug fix in 'net' happening
to code which is completely removed in 'net-next'.
In micrel-ks8851.txt we simply have overlapping changes.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/ip6_output.c')
-rw-r--r-- | net/ipv6/ip6_output.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c index 90dd551fdd3c..6184dfa4e4d7 100644 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c | |||
@@ -1101,21 +1101,19 @@ static void ip6_append_data_mtu(unsigned int *mtu, | |||
1101 | unsigned int fragheaderlen, | 1101 | unsigned int fragheaderlen, |
1102 | struct sk_buff *skb, | 1102 | struct sk_buff *skb, |
1103 | struct rt6_info *rt, | 1103 | struct rt6_info *rt, |
1104 | bool pmtuprobe) | 1104 | unsigned int orig_mtu) |
1105 | { | 1105 | { |
1106 | if (!(rt->dst.flags & DST_XFRM_TUNNEL)) { | 1106 | if (!(rt->dst.flags & DST_XFRM_TUNNEL)) { |
1107 | if (skb == NULL) { | 1107 | if (skb == NULL) { |
1108 | /* first fragment, reserve header_len */ | 1108 | /* first fragment, reserve header_len */ |
1109 | *mtu = *mtu - rt->dst.header_len; | 1109 | *mtu = orig_mtu - rt->dst.header_len; |
1110 | 1110 | ||
1111 | } else { | 1111 | } else { |
1112 | /* | 1112 | /* |
1113 | * this fragment is not first, the headers | 1113 | * this fragment is not first, the headers |
1114 | * space is regarded as data space. | 1114 | * space is regarded as data space. |
1115 | */ | 1115 | */ |
1116 | *mtu = min(*mtu, pmtuprobe ? | 1116 | *mtu = orig_mtu; |
1117 | rt->dst.dev->mtu : | ||
1118 | dst_mtu(rt->dst.path)); | ||
1119 | } | 1117 | } |
1120 | *maxfraglen = ((*mtu - fragheaderlen) & ~7) | 1118 | *maxfraglen = ((*mtu - fragheaderlen) & ~7) |
1121 | + fragheaderlen - sizeof(struct frag_hdr); | 1119 | + fragheaderlen - sizeof(struct frag_hdr); |
@@ -1132,7 +1130,7 @@ int ip6_append_data(struct sock *sk, int getfrag(void *from, char *to, | |||
1132 | struct ipv6_pinfo *np = inet6_sk(sk); | 1130 | struct ipv6_pinfo *np = inet6_sk(sk); |
1133 | struct inet_cork *cork; | 1131 | struct inet_cork *cork; |
1134 | struct sk_buff *skb, *skb_prev = NULL; | 1132 | struct sk_buff *skb, *skb_prev = NULL; |
1135 | unsigned int maxfraglen, fragheaderlen, mtu; | 1133 | unsigned int maxfraglen, fragheaderlen, mtu, orig_mtu; |
1136 | int exthdrlen; | 1134 | int exthdrlen; |
1137 | int dst_exthdrlen; | 1135 | int dst_exthdrlen; |
1138 | int hh_len; | 1136 | int hh_len; |
@@ -1214,6 +1212,7 @@ int ip6_append_data(struct sock *sk, int getfrag(void *from, char *to, | |||
1214 | dst_exthdrlen = 0; | 1212 | dst_exthdrlen = 0; |
1215 | mtu = cork->fragsize; | 1213 | mtu = cork->fragsize; |
1216 | } | 1214 | } |
1215 | orig_mtu = mtu; | ||
1217 | 1216 | ||
1218 | hh_len = LL_RESERVED_SPACE(rt->dst.dev); | 1217 | hh_len = LL_RESERVED_SPACE(rt->dst.dev); |
1219 | 1218 | ||
@@ -1313,8 +1312,7 @@ alloc_new_skb: | |||
1313 | if (skb == NULL || skb_prev == NULL) | 1312 | if (skb == NULL || skb_prev == NULL) |
1314 | ip6_append_data_mtu(&mtu, &maxfraglen, | 1313 | ip6_append_data_mtu(&mtu, &maxfraglen, |
1315 | fragheaderlen, skb, rt, | 1314 | fragheaderlen, skb, rt, |
1316 | np->pmtudisc >= | 1315 | orig_mtu); |
1317 | IPV6_PMTUDISC_PROBE); | ||
1318 | 1316 | ||
1319 | skb_prev = skb; | 1317 | skb_prev = skb; |
1320 | 1318 | ||