/* deactivate interrupts */
                ark3116_write_reg(serial, UART_IER, 0);
 
-               /* shutdown any bulk reads that might be going on */
-               if (serial->num_bulk_out)
-                       usb_kill_urb(port->write_urb);
-               if (serial->num_bulk_in)
-                       usb_kill_urb(port->read_urb);
+               usb_serial_generic_close(port);
                if (serial->num_interrupt_in)
                        usb_kill_urb(port->interrupt_in_urb);
        }
+
 }
 
 static int ark3116_open(struct tty_struct *tty, struct usb_serial_port *port)
 
 {
        dbg("%s port %d", __func__, port->number);
 
-       /* shutdown our bulk reads and writes */
-       usb_kill_urb(port->write_urb);
-       usb_kill_urb(port->read_urb);
+       usb_serial_generic_close(port);
        usb_kill_urb(port->interrupt_in_urb);
 } /* belkin_sa_close */
 
 
 {
        dbg("%s - port %d", __func__, port->number);
 
-       /* shutdown our urbs */
-       dbg("%s - shutting down urbs", __func__);
-       usb_kill_urb(port->write_urb);
-       usb_kill_urb(port->read_urb);
+       usb_serial_generic_close(port);
        usb_kill_urb(port->interrupt_in_urb);
 }
 
 
 {
        dbg("%s - port %d", __func__, port->number);
 
-       /* shutdown our urbs */
-       dbg("%s - shutting down urbs", __func__);
-       usb_kill_urb(port->write_urb);
-       usb_kill_urb(port->read_urb);
+       usb_serial_generic_close(port);
 
        mutex_lock(&port->serial->disc_mutex);
        if (!port->serial->disconnected)
 
        dbg("%s - port %d", __func__, port->number);
        generic_cleanup(port);
 }
+EXPORT_SYMBOL_GPL(usb_serial_generic_close);
 
 static int usb_serial_multi_urb_write(struct tty_struct *tty,
        struct usb_serial_port *port, const unsigned char *buf, int count)
 
 {
        dbg("%s port %d", __func__, port->number);
 
-       if (port->serial->dev) {
-               /* shutdown our urbs */
-               usb_kill_urb(port->write_urb);
-               usb_kill_urb(port->read_urb);
+       usb_serial_generic_close(port);
+       if (port->serial->dev)
                usb_kill_urb(port->interrupt_in_urb);
-       }
 } /* mct_u232_close */