Merge branch 'master' of /home/trondmy/kernel/linux-2.6/
[powerpc.git] / net / ipv6 / tcp_ipv6.c
index 2f8975e..a50eb30 100644 (file)
@@ -1218,8 +1218,16 @@ process:
        bh_lock_sock(sk);
        ret = 0;
        if (!sock_owned_by_user(sk)) {
-               if (!tcp_prequeue(sk, skb))
-                       ret = tcp_v6_do_rcv(sk, skb);
+#ifdef CONFIG_NET_DMA
+                struct tcp_sock *tp = tcp_sk(sk);
+                if (tp->ucopy.dma_chan)
+                        ret = tcp_v6_do_rcv(sk, skb);
+                else
+#endif
+               {
+                       if (!tcp_prequeue(sk, skb))
+                               ret = tcp_v6_do_rcv(sk, skb);
+               }
        } else
                sk_add_backlog(sk, skb);
        bh_unlock_sock(sk);
@@ -1298,22 +1306,21 @@ static int tcp_v6_remember_stamp(struct sock *sk)
 }
 
 static struct inet_connection_sock_af_ops ipv6_specific = {
-       .queue_xmit     =       inet6_csk_xmit,
-       .send_check     =       tcp_v6_send_check,
-       .rebuild_header =       inet6_sk_rebuild_header,
-       .conn_request   =       tcp_v6_conn_request,
-       .syn_recv_sock  =       tcp_v6_syn_recv_sock,
-       .remember_stamp =       tcp_v6_remember_stamp,
-       .net_header_len =       sizeof(struct ipv6hdr),
-
-       .setsockopt     =       ipv6_setsockopt,
-       .getsockopt     =       ipv6_getsockopt,
+       .queue_xmit        = inet6_csk_xmit,
+       .send_check        = tcp_v6_send_check,
+       .rebuild_header    = inet6_sk_rebuild_header,
+       .conn_request      = tcp_v6_conn_request,
+       .syn_recv_sock     = tcp_v6_syn_recv_sock,
+       .remember_stamp    = tcp_v6_remember_stamp,
+       .net_header_len    = sizeof(struct ipv6hdr),
+       .setsockopt        = ipv6_setsockopt,
+       .getsockopt        = ipv6_getsockopt,
+       .addr2sockaddr     = inet6_csk_addr2sockaddr,
+       .sockaddr_len      = sizeof(struct sockaddr_in6),
 #ifdef CONFIG_COMPAT
-       .compat_setsockopt      = compat_ipv6_setsockopt,
-       .compat_getsockopt      = compat_ipv6_getsockopt,
+       .compat_setsockopt = compat_ipv6_setsockopt,
+       .compat_getsockopt = compat_ipv6_getsockopt,
 #endif
-       .addr2sockaddr  =       inet6_csk_addr2sockaddr,
-       .sockaddr_len   =       sizeof(struct sockaddr_in6)
 };
 
 /*
@@ -1321,26 +1328,23 @@ static struct inet_connection_sock_af_ops ipv6_specific = {
  */
 
 static struct inet_connection_sock_af_ops ipv6_mapped = {
-       .queue_xmit     =       ip_queue_xmit,
-       .send_check     =       tcp_v4_send_check,
-       .rebuild_header =       inet_sk_rebuild_header,
-       .conn_request   =       tcp_v6_conn_request,
-       .syn_recv_sock  =       tcp_v6_syn_recv_sock,
-       .remember_stamp =       tcp_v4_remember_stamp,
-       .net_header_len =       sizeof(struct iphdr),
-
-       .setsockopt     =       ipv6_setsockopt,
-       .getsockopt     =       ipv6_getsockopt,
+       .queue_xmit        = ip_queue_xmit,
+       .send_check        = tcp_v4_send_check,
+       .rebuild_header    = inet_sk_rebuild_header,
+       .conn_request      = tcp_v6_conn_request,
+       .syn_recv_sock     = tcp_v6_syn_recv_sock,
+       .remember_stamp    = tcp_v4_remember_stamp,
+       .net_header_len    = sizeof(struct iphdr),
+       .setsockopt        = ipv6_setsockopt,
+       .getsockopt        = ipv6_getsockopt,
+       .addr2sockaddr     = inet6_csk_addr2sockaddr,
+       .sockaddr_len      = sizeof(struct sockaddr_in6),
 #ifdef CONFIG_COMPAT
-       .compat_setsockopt      = compat_ipv6_setsockopt,
-       .compat_getsockopt      = compat_ipv6_getsockopt,
+       .compat_setsockopt = compat_ipv6_setsockopt,
+       .compat_getsockopt = compat_ipv6_getsockopt,
 #endif
-       .addr2sockaddr  =       inet6_csk_addr2sockaddr,
-       .sockaddr_len   =       sizeof(struct sockaddr_in6)
 };
 
-
-
 /* NOTE: A lot of things set to zero explicitly by call to
  *       sk_alloc() so need not be done here.
  */
@@ -1574,10 +1578,6 @@ struct proto tcpv6_prot = {
        .shutdown               = tcp_shutdown,
        .setsockopt             = tcp_setsockopt,
        .getsockopt             = tcp_getsockopt,
-#ifdef CONFIG_COMPAT
-       .compat_setsockopt      = compat_tcp_setsockopt,
-       .compat_getsockopt      = compat_tcp_getsockopt,
-#endif
        .sendmsg                = tcp_sendmsg,
        .recvmsg                = tcp_recvmsg,
        .backlog_rcv            = tcp_v6_do_rcv,
@@ -1596,6 +1596,10 @@ struct proto tcpv6_prot = {
        .obj_size               = sizeof(struct tcp6_sock),
        .twsk_prot              = &tcp6_timewait_sock_ops,
        .rsk_prot               = &tcp6_request_sock_ops,
+#ifdef CONFIG_COMPAT
+       .compat_setsockopt      = compat_tcp_setsockopt,
+       .compat_getsockopt      = compat_tcp_getsockopt,
+#endif
 };
 
 static struct inet6_protocol tcpv6_protocol = {