In message: <[EMAIL PROTECTED]>
            Nikolay Pavlov <[EMAIL PROTECTED]> writes:
: On Monday, 28 May 2007 at 12:39:44 +0300, Nikolay Pavlov wrote:
: > Hi folks. 
: > I have an issue with CCU-550 CDMA modem
: > (http://www.cmotech.com/eproduct6-1.htm) on recent current. 
: > Every time i am reattaching it i see this error:
: > ucom0: could not set data multiplex mode 
: > 
: > So in order to work with it i have to reboot after each detache
: > procedure. The only known workaround for this is to delete the 
: > "goto bad;" code in /usr/src/sys/dev/usb/umodem.c:
: > 
: >         printf("%s: could not set data multiplex mode\n",
: >             devname);
: >         goto bad;
: > 
: > Could someone comment on this?
: > 
: > P.S. Please cc me, becuase i am not subscribe to freebsd-usb or
: > freebsd-mobile
: > 
: 
: May be i should send this to maintainer..?

I thought that NetBSD did something clever in this condition, but it
doesn't.  Try adding the device to usb_quirks.c.  You'll need an entry
like the following:

 { USB_VENDOR_METRICOM, USB_PRODUCT_METRICOM_RICOCHET_GS,
        0x100, { UQ_ASSUME_CM_OVER_DATA }},

for whatever values your CCU-550 CDMA modem has.  alternatively, you
could try the following patch, which may be lame:

Index: umodem.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/usb/umodem.c,v
retrieving revision 1.60
diff -u -r1.60 umodem.c
--- umodem.c    7 Sep 2006 00:06:42 -0000       1.60
+++ umodem.c    31 May 2007 07:03:49 -0000
@@ -279,7 +279,6 @@
        usb_cdc_cm_descriptor_t *cmd;
        char *devinfo = NULL;
        const char *devname;
-       usbd_status err;
        int data_ifcno;
        int i;
        struct ucom_softc *ucom;
@@ -373,16 +372,8 @@
        } else {
                if (sc->sc_cm_cap & USB_CDC_CM_OVER_DATA) {
                        if (sc->sc_acm_cap & USB_CDC_ACM_HAS_FEATURE)
-                               err = umodem_set_comm_feature(sc,
-                                   UCDC_ABSTRACT_STATE, UCDC_DATA_MULTIPLEXED);
-                       else
-                               err = 0;
-                       if (err) {
-                               printf("%s: could not set data multiplex 
mode\n",
-                                   devname);
-                               goto bad;
-                       }
-                       sc->sc_cm_over_data = 1;
+                               umodem_set_comm_feature(sc,
+                                   UCDC_ABSTRACT_STATE, 
UCDC_DATA_MULTIPLEXED);                        sc->sc_cm_over_data = 1;
                }
        }
 

this patch just feels wrong to me, but I suspect it will just work.


Warner
_______________________________________________
freebsd-usb@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-usb
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to