return 0;
 }
 
+/* Set the packet mode on a pty */
+static int pty_set_pktmode(struct tty_struct *tty, int __user *arg)
+{
+       unsigned long flags;
+       int pktmode;
+
+       if (get_user(pktmode, arg))
+               return -EFAULT;
+
+       spin_lock_irqsave(&tty->ctrl_lock, flags);
+       if (pktmode) {
+               if (!tty->packet) {
+                       tty->packet = 1;
+                       tty->link->ctrl_status = 0;
+               }
+       } else
+               tty->packet = 0;
+       spin_unlock_irqrestore(&tty->ctrl_lock, flags);
+
+       return 0;
+}
+
 /* Send a signal to the slave */
 static int pty_signal(struct tty_struct *tty, int sig)
 {
        switch (cmd) {
        case TIOCSPTLCK: /* Set PT Lock (disallow slave open) */
                return pty_set_lock(tty, (int __user *) arg);
+       case TIOCPKT: /* Set PT packet mode */
+               return pty_set_pktmode(tty, (int __user *)arg);
        case TIOCSIG:    /* Send signal to other side of pty */
                return pty_signal(tty, (int) arg);
        }
        switch (cmd) {
        case TIOCSPTLCK: /* Set PT Lock (disallow slave open) */
                return pty_set_lock(tty, (int __user *)arg);
+       case TIOCPKT: /* Set PT packet mode */
+               return pty_set_pktmode(tty, (int __user *)arg);
        case TIOCGPTN: /* Get PT Number */
                return put_user(tty->index, (unsigned int __user *)arg);
        case TIOCSIG:    /* Send signal to other side of pty */
 
 int n_tty_ioctl_helper(struct tty_struct *tty, struct file *file,
                       unsigned int cmd, unsigned long arg)
 {
-       unsigned long flags;
        int retval;
 
        switch (cmd) {
                return 0;
        case TCFLSH:
                return tty_perform_flush(tty, arg);
-       case TIOCPKT:
-       {
-               int pktmode;
-
-               if (tty->driver->type != TTY_DRIVER_TYPE_PTY ||
-                   tty->driver->subtype != PTY_TYPE_MASTER)
-                       return -ENOTTY;
-               if (get_user(pktmode, (int __user *) arg))
-                       return -EFAULT;
-               spin_lock_irqsave(&tty->ctrl_lock, flags);
-               if (pktmode) {
-                       if (!tty->packet) {
-                               tty->packet = 1;
-                               tty->link->ctrl_status = 0;
-                       }
-               } else
-                       tty->packet = 0;
-               spin_unlock_irqrestore(&tty->ctrl_lock, flags);
-               return 0;
-       }
        default:
                /* Try the mode commands */
                return tty_mode_ioctl(tty, file, cmd, arg);