]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - net/phonet/socket.c
Phonet: implement GPRS virtual interface over PEP socket
[karo-tx-linux.git] / net / phonet / socket.c
index cea1136cbe4679beb7a0f8898e1499b5cda929ca..d81740187fb4982981490ba6718c6081513af1f0 100644 (file)
@@ -220,7 +220,9 @@ static unsigned int pn_socket_poll(struct file *file, struct socket *sock,
 
        if (!skb_queue_empty(&sk->sk_receive_queue))
                mask |= POLLIN | POLLRDNORM;
-       else if (sk->sk_state == TCP_CLOSE_WAIT)
+       if (!skb_queue_empty(&pn->ctrlreq_queue))
+               mask |= POLLPRI;
+       if (!mask && sk->sk_state == TCP_CLOSE_WAIT)
                return POLLHUP;
 
        if (sk->sk_state == TCP_ESTABLISHED && pn->tx_credits)
@@ -340,11 +342,11 @@ const struct proto_ops phonet_stream_ops = {
        .ioctl          = pn_socket_ioctl,
        .listen         = pn_socket_listen,
        .shutdown       = sock_no_shutdown,
-       .setsockopt     = sock_no_setsockopt,
-       .getsockopt     = sock_no_getsockopt,
+       .setsockopt     = sock_common_setsockopt,
+       .getsockopt     = sock_common_getsockopt,
 #ifdef CONFIG_COMPAT
-       .compat_setsockopt = sock_no_setsockopt,
-       .compat_getsockopt = compat_sock_no_getsockopt,
+       .compat_setsockopt = compat_sock_common_setsockopt,
+       .compat_getsockopt = compat_sock_common_getsockopt,
 #endif
        .sendmsg        = pn_socket_sendmsg,
        .recvmsg        = sock_common_recvmsg,