diff options
Diffstat (limited to 'net/ipv6/ip6_output.c')
-rw-r--r-- | net/ipv6/ip6_output.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c index abb94de33768..11007c75ae02 100644 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c | |||
@@ -230,7 +230,7 @@ int ip6_xmit(struct sock *sk, struct sk_buff *skb, struct flowi *fl, | |||
230 | skb->priority = sk->sk_priority; | 230 | skb->priority = sk->sk_priority; |
231 | 231 | ||
232 | mtu = dst_mtu(dst); | 232 | mtu = dst_mtu(dst); |
233 | if ((skb->len <= mtu) || ipfragok) { | 233 | if ((skb->len <= mtu) || ipfragok || skb_shinfo(skb)->gso_size) { |
234 | IP6_INC_STATS(IPSTATS_MIB_OUTREQUESTS); | 234 | IP6_INC_STATS(IPSTATS_MIB_OUTREQUESTS); |
235 | return NF_HOOK(PF_INET6, NF_IP6_LOCAL_OUT, skb, NULL, dst->dev, | 235 | return NF_HOOK(PF_INET6, NF_IP6_LOCAL_OUT, skb, NULL, dst->dev, |
236 | dst_output); | 236 | dst_output); |
@@ -835,7 +835,7 @@ static inline int ip6_ufo_append_data(struct sock *sk, | |||
835 | /* specify the length of each IP datagram fragment*/ | 835 | /* specify the length of each IP datagram fragment*/ |
836 | skb_shinfo(skb)->gso_size = mtu - fragheaderlen - | 836 | skb_shinfo(skb)->gso_size = mtu - fragheaderlen - |
837 | sizeof(struct frag_hdr); | 837 | sizeof(struct frag_hdr); |
838 | skb_shinfo(skb)->gso_type = SKB_GSO_UDPV4; | 838 | skb_shinfo(skb)->gso_type = SKB_GSO_UDP; |
839 | ipv6_select_ident(skb, &fhdr); | 839 | ipv6_select_ident(skb, &fhdr); |
840 | skb_shinfo(skb)->ip6_frag_id = fhdr.identification; | 840 | skb_shinfo(skb)->ip6_frag_id = fhdr.identification; |
841 | __skb_queue_tail(&sk->sk_write_queue, skb); | 841 | __skb_queue_tail(&sk->sk_write_queue, skb); |