]> err.no Git - linux-2.6/blobdiff - net/ipv6/tcp_ipv6.c
Merge master.kernel.org:/home/rmk/linux-2.6-serial
[linux-2.6] / net / ipv6 / tcp_ipv6.c
index 301eee726b0ff64eb8e3dc24b4432550e28de876..a50eb306e9e277605e4202cc14cacdf026357b59 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);