diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/ipv4/ip_output.c | 4 | ||||
-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 |
5 files changed, 6 insertions, 12 deletions
diff --git a/net/ipv4/ip_output.c b/net/ipv4/ip_output.c index 7624fd1d8f9f..243d2a763363 100644 --- a/net/ipv4/ip_output.c +++ b/net/ipv4/ip_output.c | |||
@@ -744,7 +744,7 @@ static inline int ip_ufo_append_data(struct sock *sk, | |||
744 | if (!err) { | 744 | if (!err) { |
745 | /* specify the length of each IP datagram fragment*/ | 745 | /* specify the length of each IP datagram fragment*/ |
746 | skb_shinfo(skb)->gso_size = mtu - fragheaderlen; | 746 | skb_shinfo(skb)->gso_size = mtu - fragheaderlen; |
747 | skb_shinfo(skb)->gso_type = SKB_GSO_UDPV4; | 747 | skb_shinfo(skb)->gso_type = SKB_GSO_UDP; |
748 | __skb_queue_tail(&sk->sk_write_queue, skb); | 748 | __skb_queue_tail(&sk->sk_write_queue, skb); |
749 | 749 | ||
750 | return 0; | 750 | return 0; |
@@ -1089,7 +1089,7 @@ ssize_t ip_append_page(struct sock *sk, struct page *page, | |||
1089 | if ((sk->sk_protocol == IPPROTO_UDP) && | 1089 | if ((sk->sk_protocol == IPPROTO_UDP) && |
1090 | (rt->u.dst.dev->features & NETIF_F_UFO)) { | 1090 | (rt->u.dst.dev->features & NETIF_F_UFO)) { |
1091 | skb_shinfo(skb)->gso_size = mtu - fragheaderlen; | 1091 | skb_shinfo(skb)->gso_size = mtu - fragheaderlen; |
1092 | skb_shinfo(skb)->gso_type = SKB_GSO_UDPV4; | 1092 | skb_shinfo(skb)->gso_type = SKB_GSO_UDP; |
1093 | } | 1093 | } |
1094 | 1094 | ||
1095 | 1095 | ||
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; |