ucom/uftdi dropping bytes, with debug logs FIXED

Geoffrey Mainland mainland at apeiron.net
Sun Jun 18 22:33:00 UTC 2006


M. Warner Losh wrote:
> In message: <e6vefe$5bq$1 at sea.gmane.org>
>             Geoffrey Mainland <mainland at apeiron.net> writes:
> : The fact that this runs fine under VMWare makes me strongly suspect a
> : timing issue that is fixed by some sort of buffering at the VMWare
> : level. Where should I start to look to hack something in to test this?
> : The ucom driver seems to be setting up the read transfers that don't
> : complete on time.
> 
> I'd start looking into ucom.c and uftdi.c.
> 
> Warner

Here's a diff against ucom.c version 1.57 that fixes the problem for me.
  I'm sure this is not the "correct" fix, but it stops bytes from being
dropped :). I assume aborting the read and immediately restarting it
flushes some pending data. Why is ucomstop is called so frequently by
the tty code?

Geoff

Index: ucom.c
===================================================================
--- ucom.c	(revision 3)
+++ ucom.c	(working copy)
@@ -622,10 +622,12 @@

 	DPRINTF(("ucomstop: %d\n", flag));

+#if 0
 	if ((flag & FREAD) && (sc->sc_state & UCS_RXSTOP) == 0) {
 		DPRINTF(("ucomstop: read\n"));
 		ucomstopread(sc);
 		ucomstartread(sc);
+#endif
 	}

 	if (flag & FWRITE) {



More information about the freebsd-usb mailing list