Re: ucom0: could not set data multiplex mode

Nikolay Pavlov <[email protected]>
Newsgroups gmane.os.freebsd.devel.usb,gmane.os.freebsd.devel.mobile
Message-ID <[email protected]>
On Thursday, 31 May 2007 at  1:04:36 -0600, M. Warner Losh wrote:
> 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 }},

Thanks for response Warner. I want to check the usb_quirks variant
first. Could you please advise me on what this line should be if i have
this on dmesg:

ucom0: <CMOTECH CO., LTD. CMOTECH CDMA
Technologies, class 2/0, rev 2.00/0.00, addr 2> on uhub1
ucom0: CMOTECH CO., LTD. CMOTECH CDMA
Technologies, rev 2.00/0.00, addr 2, iclass 2/2
ucom0: data interface 1, has CM over data, has break
ucom0: status change notification available


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

-- 
======================================================================  
- Best regards, Nikolay Pavlov. <<<-----------------------------------    
======================================================================
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.