svn commit: r203903 - head/sys/dev/usb/serial

Andrew Thompson thompsa at FreeBSD.org
Sun Feb 14 19:59:20 UTC 2010


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;
 	}


More information about the svn-src-all mailing list