PERFORCE change 160052 for review

Hans Petter Selasky hselasky at FreeBSD.org
Tue Mar 31 06:53:26 PDT 2009


http://perforce.freebsd.org/chv.cgi?CH=160052

Change 160052 by hselasky at hselasky_laptop001 on 2009/03/31 13:52:52

	
	USB serial:
	
	  - wait until line configuration is complete
	    before starting data transfers.
	
	Reported by Bernd Walter & more.

Affected files ...

.. //depot/projects/usb/src/sys/dev/usb/serial/usb_serial.c#2 edit
.. //depot/projects/usb/src/sys/dev/usb/serial/usb_serial.h#2 edit

Differences ...

==== //depot/projects/usb/src/sys/dev/usb/serial/usb_serial.c#2 (text+ko) ====

@@ -412,6 +412,12 @@
 	if (fn == usb2_com_cfg_close)
 		usb2_proc_mwait(&ssc->sc_tq, t0, t1);
 
+	/*
+	 * In case of multiple configure requests,
+	 * keep track of the last one!
+	 */
+	if (fn == usb2_com_cfg_start_transfers)
+		sc->sc_last_start_xfer = &task->hdr;
 }
 
 static void
@@ -458,7 +464,9 @@
 		/* TTY device closed */
 		return;
 	}
-	sc->sc_flag |= UCOM_FLAG_GP_DATA;
+
+	if (_task == sc->sc_last_start_xfer)
+		sc->sc_flag |= UCOM_FLAG_GP_DATA;
 
 	if (sc->sc_callback->usb2_com_start_read) {
 		(sc->sc_callback->usb2_com_start_read) (sc);

==== //depot/projects/usb/src/sys/dev/usb/serial/usb_serial.h#2 (text+ko) ====

@@ -152,6 +152,8 @@
 	struct usb2_com_cfg_task	sc_status_task[2];
 	struct usb2_com_param_task	sc_param_task[2];
 	struct cv sc_cv;
+	/* Used to set "UCOM_FLAG_GP_DATA" flag: */
+	struct usb2_proc_msg	*sc_last_start_xfer;
 	const struct usb2_com_callback *sc_callback;
 	struct usb2_com_super_softc *sc_super;
 	struct tty *sc_tty;


More information about the p4-projects mailing list