Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 14 Feb 2010 19:59:19 +0000 (UTC)
From:      Andrew Thompson <thompsa@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r203903 - head/sys/dev/usb/serial
Message-ID:  <201002141959.o1EJxJxQ070762@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: thompsa
Date: Sun Feb 14 19:59:19 2010
New Revision: 203903
URL: http://svn.freebsd.org/changeset/base/203903

Log:
  Make umodem more tolerant for devices which modem descriptors are misplaced.
  
  Reported by:	Erick Wales
  Submitted by:	Hans Petter Selasky

Modified:
  head/sys/dev/usb/serial/umodem.c

Modified: head/sys/dev/usb/serial/umodem.c
==============================================================================
--- head/sys/dev/usb/serial/umodem.c	Sun Feb 14 19:59:06 2010	(r203902)
+++ head/sys/dev/usb/serial/umodem.c	Sun Feb 14 19:59:19 2010	(r203903)
@@ -312,11 +312,16 @@ umodem_attach(device_t dev)
 		    0 - 1, UDESCSUB_CDC_UNION, 0 - 1);
 
 		if ((cud == NULL) || (cud->bLength < sizeof(*cud))) {
-			device_printf(dev, "no CM or union descriptor\n");
-			goto detach;
+			device_printf(dev, "Missing descriptor. "
+			    "Assuming data interface is next.\n");
+			if (sc->sc_ctrl_iface_no == 0xFF)
+				goto detach;
+			else
+				sc->sc_data_iface_no = 
+				    sc->sc_ctrl_iface_no + 1;
+		} else {
+			sc->sc_data_iface_no = cud->bSlaveInterface[0];
 		}
-
-		sc->sc_data_iface_no = cud->bSlaveInterface[0];
 	} else {
 		sc->sc_data_iface_no = cmd->bDataInterface;
 	}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201002141959.o1EJxJxQ070762>