# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
#	           ChangeSet	1.579.9.7 -> 1.579.9.8
#	drivers/usb/serial/usbserial.c	1.42    -> 1.43   
#	drivers/usb/serial/usb-serial.h	1.12    -> 1.13   
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 02/09/23	greg@kroah.com	1.579.9.8
# [PATCH] USB:  made port_softint global for other usb-serial drivers to use.
# 
# Based off of a patch from Stuart MacDonald <stuartm@connecttech.com>
# --------------------------------------------
#
diff -Nru a/drivers/usb/serial/usb-serial.h b/drivers/usb/serial/usb-serial.h
--- a/drivers/usb/serial/usb-serial.h	Mon Sep 23 15:15:49 2002
+++ b/drivers/usb/serial/usb-serial.h	Mon Sep 23 15:15:49 2002
@@ -232,6 +232,7 @@
 
 extern int  usb_serial_register(struct usb_serial_device_type *new_device);
 extern void usb_serial_deregister(struct usb_serial_device_type *device);
+extern void usb_serial_port_softint(void *private);
 
 extern int usb_serial_probe(struct usb_interface *iface, const struct usb_device_id *id);
 extern void usb_serial_disconnect(struct usb_interface *iface);
diff -Nru a/drivers/usb/serial/usbserial.c b/drivers/usb/serial/usbserial.c
--- a/drivers/usb/serial/usbserial.c	Mon Sep 23 15:15:49 2002
+++ b/drivers/usb/serial/usbserial.c	Mon Sep 23 15:15:49 2002
@@ -1090,6 +1090,8 @@
 		return;
 	}
 
+	usb_serial_port_softint((void *)port);
+
 	queue_task(&port->tqueue, &tq_immediate);
 	mark_bh(IMMEDIATE_BH);
 
@@ -1108,14 +1110,18 @@
 	}
 }
 
-static void port_softint(void *private)
+void usb_serial_port_softint(void *private)
 {
 	struct usb_serial_port *port = (struct usb_serial_port *)private;
-	struct usb_serial *serial = get_usb_serial (port, __FUNCTION__);
+	struct usb_serial *serial;
 	struct tty_struct *tty;
 
 	dbg("%s - port %d", __FUNCTION__, port->number);
 	
+	if (!port)
+		return;
+
+	serial = get_usb_serial (port, __FUNCTION__);
 	if (!serial)
 		return;
 
@@ -1399,7 +1405,7 @@
 		port->number = i + serial->minor;
 		port->serial = serial;
 		port->magic = USB_SERIAL_PORT_MAGIC;
-		port->tqueue.routine = port_softint;
+		port->tqueue.routine = usb_serial_port_softint;
 		port->tqueue.data = port;
 		init_MUTEX (&port->sem);
 	}
@@ -1689,6 +1695,7 @@
 EXPORT_SYMBOL(usb_serial_deregister);
 EXPORT_SYMBOL(usb_serial_probe);
 EXPORT_SYMBOL(usb_serial_disconnect);
+EXPORT_SYMBOL(usb_serial_port_softint);
 #ifdef USES_EZUSB_FUNCTIONS
 	EXPORT_SYMBOL(ezusb_writememory);
 	EXPORT_SYMBOL(ezusb_set_reset);
