diff options
| -rw-r--r-- | net/ipv6/ip6_tunnel.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c index db84f523656d..931c38f6ff4a 100644 --- a/net/ipv6/ip6_tunnel.c +++ b/net/ipv6/ip6_tunnel.c | |||
| @@ -1123,8 +1123,13 @@ route_lookup: | |||
| 1123 | max_headroom += 8; | 1123 | max_headroom += 8; |
| 1124 | mtu -= 8; | 1124 | mtu -= 8; |
| 1125 | } | 1125 | } |
| 1126 | if (mtu < IPV6_MIN_MTU) | 1126 | if (skb->protocol == htons(ETH_P_IPV6)) { |
| 1127 | mtu = IPV6_MIN_MTU; | 1127 | if (mtu < IPV6_MIN_MTU) |
| 1128 | mtu = IPV6_MIN_MTU; | ||
| 1129 | } else if (mtu < 576) { | ||
| 1130 | mtu = 576; | ||
| 1131 | } | ||
| 1132 | |||
| 1128 | if (skb_dst(skb) && !t->parms.collect_md) | 1133 | if (skb_dst(skb) && !t->parms.collect_md) |
| 1129 | skb_dst(skb)->ops->update_pmtu(skb_dst(skb), NULL, skb, mtu); | 1134 | skb_dst(skb)->ops->update_pmtu(skb_dst(skb), NULL, skb, mtu); |
| 1130 | if (skb->len - t->tun_hlen - eth_hlen > mtu && !skb_is_gso(skb)) { | 1135 | if (skb->len - t->tun_hlen - eth_hlen > mtu && !skb_is_gso(skb)) { |
