diff options
Diffstat (limited to 'net/ipv6')
-rw-r--r-- | net/ipv6/af_inet6.c | 2 | ||||
-rw-r--r-- | net/ipv6/inet6_connection_sock.c | 2 | ||||
-rw-r--r-- | net/ipv6/ip6_output.c | 4 | ||||
-rw-r--r-- | net/ipv6/tcp_ipv6.c | 6 |
4 files changed, 4 insertions, 10 deletions
diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c index e19457fe4f6e..0f26073117a3 100644 --- a/net/ipv6/af_inet6.c +++ b/net/ipv6/af_inet6.c | |||
@@ -660,8 +660,6 @@ int inet6_sk_rebuild_header(struct sock *sk) | |||
660 | } | 660 | } |
661 | 661 | ||
662 | ip6_dst_store(sk, dst, NULL); | 662 | ip6_dst_store(sk, dst, NULL); |
663 | sk->sk_route_caps = dst->dev->features & | ||
664 | ~(NETIF_F_IP_CSUM | NETIF_F_TSO); | ||
665 | } | 663 | } |
666 | 664 | ||
667 | return 0; | 665 | return 0; |
diff --git a/net/ipv6/inet6_connection_sock.c b/net/ipv6/inet6_connection_sock.c index eb2865d5ae28..5624f373164d 100644 --- a/net/ipv6/inet6_connection_sock.c +++ b/net/ipv6/inet6_connection_sock.c | |||
@@ -187,8 +187,6 @@ int inet6_csk_xmit(struct sk_buff *skb, int ipfragok) | |||
187 | } | 187 | } |
188 | 188 | ||
189 | ip6_dst_store(sk, dst, NULL); | 189 | ip6_dst_store(sk, dst, NULL); |
190 | sk->sk_route_caps = dst->dev->features & | ||
191 | ~(NETIF_F_IP_CSUM | NETIF_F_TSO); | ||
192 | } | 190 | } |
193 | 191 | ||
194 | skb->dst = dst_clone(dst); | 192 | skb->dst = dst_clone(dst); |
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); |
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c index bf7f8c26c488..7ea5bea49aa9 100644 --- a/net/ipv6/tcp_ipv6.c +++ b/net/ipv6/tcp_ipv6.c | |||
@@ -270,9 +270,8 @@ static int tcp_v6_connect(struct sock *sk, struct sockaddr *uaddr, | |||
270 | ipv6_addr_copy(&np->saddr, saddr); | 270 | ipv6_addr_copy(&np->saddr, saddr); |
271 | inet->rcv_saddr = LOOPBACK4_IPV6; | 271 | inet->rcv_saddr = LOOPBACK4_IPV6; |
272 | 272 | ||
273 | sk->sk_gso_type = SKB_GSO_TCPV6; | ||
273 | ip6_dst_store(sk, dst, NULL); | 274 | ip6_dst_store(sk, dst, NULL); |
274 | sk->sk_route_caps = dst->dev->features & | ||
275 | ~(NETIF_F_IP_CSUM | NETIF_F_TSO); | ||
276 | 275 | ||
277 | icsk->icsk_ext_hdr_len = 0; | 276 | icsk->icsk_ext_hdr_len = 0; |
278 | if (np->opt) | 277 | if (np->opt) |
@@ -930,9 +929,8 @@ static struct sock * tcp_v6_syn_recv_sock(struct sock *sk, struct sk_buff *skb, | |||
930 | * comment in that function for the gory details. -acme | 929 | * comment in that function for the gory details. -acme |
931 | */ | 930 | */ |
932 | 931 | ||
932 | sk->sk_gso_type = SKB_GSO_TCPV6; | ||
933 | ip6_dst_store(newsk, dst, NULL); | 933 | ip6_dst_store(newsk, dst, NULL); |
934 | newsk->sk_route_caps = dst->dev->features & | ||
935 | ~(NETIF_F_IP_CSUM | NETIF_F_TSO); | ||
936 | 934 | ||
937 | newtcp6sk = (struct tcp6_sock *)newsk; | 935 | newtcp6sk = (struct tcp6_sock *)newsk; |
938 | inet_sk(newsk)->pinet6 = &newtcp6sk->inet6; | 936 | inet_sk(newsk)->pinet6 = &newtcp6sk->inet6; |