diff options
author | Takashi Iwai <tiwai@suse.de> | 2015-07-27 14:43:29 +0200 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2015-07-27 14:43:29 +0200 |
commit | 527c465a3c8716d93201ae34b7fc52679610596d (patch) | |
tree | e436b076df094caba9809b9c622374d396e84435 /net/ipv4/ip_tunnel.c | |
parent | ALSA: hda - Check the return value from pm_runtime_get/put*() (diff) | |
parent | ALSA: hda - Add pin quirk for the headset mic jack detection on Dell laptop (diff) | |
download | linux-527c465a3c8716d93201ae34b7fc52679610596d.tar.xz linux-527c465a3c8716d93201ae34b7fc52679610596d.zip |
Merge branch 'for-linus' into for-next
... to make easier developing HDA ext code.
Diffstat (limited to 'net/ipv4/ip_tunnel.c')
-rw-r--r-- | net/ipv4/ip_tunnel.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/net/ipv4/ip_tunnel.c b/net/ipv4/ip_tunnel.c index 4c2c3ba4ba65..626d9e56a6bd 100644 --- a/net/ipv4/ip_tunnel.c +++ b/net/ipv4/ip_tunnel.c @@ -586,7 +586,8 @@ int ip_tunnel_encap(struct sk_buff *skb, struct ip_tunnel *t, EXPORT_SYMBOL(ip_tunnel_encap); static int tnl_update_pmtu(struct net_device *dev, struct sk_buff *skb, - struct rtable *rt, __be16 df) + struct rtable *rt, __be16 df, + const struct iphdr *inner_iph) { struct ip_tunnel *tunnel = netdev_priv(dev); int pkt_size = skb->len - tunnel->hlen - dev->hard_header_len; @@ -603,7 +604,8 @@ static int tnl_update_pmtu(struct net_device *dev, struct sk_buff *skb, if (skb->protocol == htons(ETH_P_IP)) { if (!skb_is_gso(skb) && - (df & htons(IP_DF)) && mtu < pkt_size) { + (inner_iph->frag_off & htons(IP_DF)) && + mtu < pkt_size) { memset(IPCB(skb), 0, sizeof(*IPCB(skb))); icmp_send(skb, ICMP_DEST_UNREACH, ICMP_FRAG_NEEDED, htonl(mtu)); return -E2BIG; @@ -737,7 +739,7 @@ void ip_tunnel_xmit(struct sk_buff *skb, struct net_device *dev, goto tx_error; } - if (tnl_update_pmtu(dev, skb, rt, tnl_params->frag_off)) { + if (tnl_update_pmtu(dev, skb, rt, tnl_params->frag_off, inner_iph)) { ip_rt_put(rt); goto tx_error; } |