svn commit: r190742 - head/sys/dev/usb/serial
Andrew Thompson
thompsa at FreeBSD.org
Sun Apr 5 11:22:04 PDT 2009
Author: thompsa
Date: Sun Apr 5 18:22:03 2009
New Revision: 190742
URL: http://svn.freebsd.org/changeset/base/190742
Log:
MFp4 //depot/projects/usb at 160052
Wait until line configuration is complete before starting data transfers.
Submitted by: Hans Petter Selasky
Modified:
head/sys/dev/usb/serial/usb_serial.c
head/sys/dev/usb/serial/usb_serial.h
Modified: head/sys/dev/usb/serial/usb_serial.c
==============================================================================
--- head/sys/dev/usb/serial/usb_serial.c Sun Apr 5 18:21:51 2009 (r190741)
+++ head/sys/dev/usb/serial/usb_serial.c Sun Apr 5 18:22:03 2009 (r190742)
@@ -412,6 +412,12 @@ usb2_com_queue_command(struct usb2_com_s
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 @@ usb2_com_cfg_start_transfers(struct usb2
/* 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);
Modified: head/sys/dev/usb/serial/usb_serial.h
==============================================================================
--- head/sys/dev/usb/serial/usb_serial.h Sun Apr 5 18:21:51 2009 (r190741)
+++ head/sys/dev/usb/serial/usb_serial.h Sun Apr 5 18:22:03 2009 (r190742)
@@ -152,6 +152,8 @@ struct usb2_com_softc {
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 svn-src-head
mailing list