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;
        }
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to