linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / net / decnet / dn_nsp_in.c
index 05d84ed..44bda85 100644 (file)
@@ -60,7 +60,7 @@
 #include <linux/inet.h>
 #include <linux/route.h>
 #include <net/sock.h>
-#include <net/tcp.h>
+#include <net/tcp_states.h>
 #include <asm/system.h>
 #include <linux/fcntl.h>
 #include <linux/mm.h>
@@ -324,7 +324,7 @@ err_out:
 
 static void dn_nsp_conn_init(struct sock *sk, struct sk_buff *skb)
 {
-       if (sk->sk_ack_backlog >= sk->sk_max_ack_backlog) {
+       if (sk_acceptq_is_full(sk)) {
                kfree_skb(skb);
                return;
        }
@@ -419,6 +419,7 @@ static void dn_nsp_disc_init(struct sock *sk, struct sk_buff *skb)
                case DN_CI:
                case DN_CD:
                        scp->state = DN_RJ;
+                       sk->sk_err = ECONNREFUSED;
                        break;
                case DN_RUN:
                        sk->sk_shutdown |= SHUTDOWN_MASK;
@@ -792,7 +793,6 @@ static int dn_nsp_rx_packet(struct sk_buff *skb)
 got_it:
        if (sk != NULL) {
                struct dn_scp *scp = DN_SK(sk);
-               int ret;
 
                /* Reset backoff */
                scp->nsp_rxtshift = 0;
@@ -806,21 +806,7 @@ got_it:
                                goto free_out;
                }
 
-               bh_lock_sock(sk);
-               ret = NET_RX_SUCCESS;
-               if (decnet_debug_level & 8)
-                       printk(KERN_DEBUG "NSP: 0x%02x 0x%02x 0x%04x 0x%04x %d\n",
-                               (int)cb->rt_flags, (int)cb->nsp_flags, 
-                               (int)cb->src_port, (int)cb->dst_port, 
-                               !!sock_owned_by_user(sk));
-               if (!sock_owned_by_user(sk))
-                       ret = dn_nsp_backlog_rcv(sk, skb);
-               else
-                       sk_add_backlog(sk, skb);
-               bh_unlock_sock(sk);
-               sock_put(sk);
-
-               return ret;
+               return sk_receive_skb(sk, skb);
        }
 
        return dn_nsp_no_socket(skb, reason);