+#else /* 2.1.23 or later */
+
+static unsigned int
+ppp_tty_poll (struct tty_struct *tty, struct file *filp, poll_table * wait)
+{
+ struct ppp *ppp = tty2ppp (tty);
+ unsigned int mask = 0;
+
+ if (ppp && ppp->magic == PPP_MAGIC && tty == ppp->tty) {
+ CHECK_PPP (0);
+
+ poll_wait(&ppp->read_wait, wait);
+ poll_wait(&ppp->write_wait, wait);
+
+ /* Must lock the user buffer area while checking. */
+ if(test_and_set_bit(0, &ppp->ubuf->locked) == 0) {
+ if(ppp->ubuf->head != ppp->ubuf->tail)
+ mask |= POLLIN | POLLRDNORM;
+ clear_bit(0, &ppp->ubuf->locked);
+ }
+ if(tty->flags & (1 << TTY_OTHER_CLOSED))
+ mask |= POLLHUP;
+ if(tty_hung_up_p(filp))
+ mask |= POLLHUP;
+ if(ppp->tbuf->locked == 0)
+ mask |= POLLOUT | POLLWRNORM;
+ }
+ return mask;
+}
+
+#endif
+