NetBSD Problem Report #48715

From ryo_on@yk.rim.or.jp  Sun Apr  6 01:39:02 2014
Return-Path: <ryo_on@yk.rim.or.jp>
Received: from mail.netbsd.org (mail.netbsd.org [149.20.53.66])
	(using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
	(Client CN "mail.netbsd.org", Issuer "Postmaster NetBSD.org" (verified OK))
	by mollari.NetBSD.org (Postfix) with ESMTPS id 0C721A5807
	for <gnats-bugs@gnats.NetBSD.org>; Sun,  6 Apr 2014 01:39:02 +0000 (UTC)
Message-Id: <20140406013857.E5B81B9FA7@mail.SiriusCloud.jp>
Date: Sun,  6 Apr 2014 10:38:57 +0900 (JST)
From: ryoon@NetBSD.org
Reply-To: ryoon@NetBSD.org
To: gnats-bugs@gnats.NetBSD.org
Subject: Please support more USB modems
X-Send-Pr-Version: 3.95

>Number:         48715
>Category:       kern
>Synopsis:       Please support more USB modems
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Apr 06 01:40:00 +0000 2014
>Last-Modified:  Sat Jun 25 08:25:01 +0000 2016
>Originator:     Ryo ONODERA
>Release:        NetBSD 6.99.39
>Organization:

>Environment:


System: NetBSD tellurium.elements.tetera.org 6.99.39 NetBSD 6.99.39 (DTRACE2) #3: Sun Apr 6 07:55:43 JST 2014 ryo_on@tellurium.elements.tetera.org:/usr/obj/amd64/sys/arch/amd64/compile/DTRACE2 amd64
Architecture: x86_64
Machine: amd64
>Description:
Some USB modems (umodem(4) devices that has non-standard class) do not work
with "no pointer to data interface" message, and they cannot use as modem
as described in
http://mail-index.netbsd.org/current-users/2014/01/20/msg024119.html .

Following patch enable this kind of umodem(4) devices.


Index: umodem.c
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/umodem.c,v
retrieving revision 1.65
diff -u -r1.65 umodem.c
--- umodem.c	3 Oct 2012 07:07:04 -0000	1.65
+++ umodem.c	6 Apr 2014 01:30:53 -0000
@@ -98,12 +98,17 @@
 	usb_interface_descriptor_t *id;
 	int cm, acm;

+	id = usbd_get_interface_descriptor(uaa->iface);
+	if (uaa->subclass != UISUBCLASS_ABSTRACT_CONTROL_MODEL &&
+	    (id->bInterfaceClass == UICLASS_CDC_DATA &&
+	     id->bInterfaceSubClass == UISUBCLASS_DATA))
+		return (UMATCH_IFACECLASS_IFACESUBCLASS);
+
 	if (uaa->class != UICLASS_CDC ||
 	    uaa->subclass != UISUBCLASS_ABSTRACT_CONTROL_MODEL ||
 	    !(uaa->proto == UIPROTO_CDC_NOCLASS || uaa->proto == UIPROTO_CDC_AT))
 		return (UMATCH_NONE);

-	id = usbd_get_interface_descriptor(uaa->iface);
 	if (umodem_get_caps(uaa->device, &cm, &acm, id) == -1)
 		return (UMATCH_NONE);




>How-To-Repeat:
Plug cheap USB modem to NetBSD machine.


>Fix:

See above.

>Audit-Trail:
From: "Christos Zoulas" <christos@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/48715 CVS commit: src/sys/dev/usb
Date: Sat, 5 Apr 2014 22:01:43 -0400

 Module Name:	src
 Committed By:	christos
 Date:		Sun Apr  6 02:01:43 UTC 2014

 Modified Files:
 	src/sys/dev/usb: umodem.c

 Log Message:
 PR/48715: Ryo ONODERA: Please support more USB modems


 To generate a diff of this commit:
 cvs rdiff -u -r1.65 -r1.66 src/sys/dev/usb/umodem.c

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

From: David Holland <dholland-bugs@netbsd.org>
To: gnats-bugs@NetBSD.org
Cc: 
Subject: Re: kern/48715: Please support more USB modems
Date: Sat, 26 Apr 2014 03:53:25 +0000

 On Sun, Apr 06, 2014 at 01:40:00AM +0000, ryoon@NetBSD.org wrote:
  > +	id = usbd_get_interface_descriptor(uaa->iface);
  > +	if (uaa->subclass != UISUBCLASS_ABSTRACT_CONTROL_MODEL &&
  > +	    (id->bInterfaceClass == UICLASS_CDC_DATA &&
  > +	     id->bInterfaceSubClass == UISUBCLASS_DATA))
  > +		return (UMATCH_IFACECLASS_IFACESUBCLASS);
  > +

 Can this go into -6? It seems like a good candidate.

 -- 
 David A. Holland
 dholland@netbsd.org

From: "Nick Hudson" <skrll@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/48715 CVS commit: src/sys/dev/usb
Date: Sun, 5 Jul 2015 15:51:55 +0000

 Module Name:	src
 Committed By:	skrll
 Date:		Sun Jul  5 15:51:55 UTC 2015

 Modified Files:
 	src/sys/dev/usb: umodem.c

 Log Message:
 Revert patch from PR/48715 as it is incorrect.


 To generate a diff of this commit:
 cvs rdiff -u -r1.66 -r1.67 src/sys/dev/usb/umodem.c

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

From: David Holland <dholland-bugs@netbsd.org>
To: gnats-bugs@netbsd.org
Cc: 
Subject: Re: kern/48715: Please support more USB modems
Date: Sun, 5 Jul 2015 16:18:39 +0000

 On Sat, Apr 26, 2014 at 03:55:01AM +0000, David Holland wrote:
  >  Can this go into -6? It seems like a good candidate.

 Guess not :-/

 -- 
 David A. Holland
 dholland@netbsd.org

From: Ryo ONODERA <ryo_on@yk.rim.or.jp>
To: gnats-bugs@NetBSD.org
Cc: 
Subject: Re: kern/48715: Please support more USB modems
Date: Thu, 09 Jul 2015 22:02:50 +0900 (JST)

 Hi,

 My previous patch is incorrect.
 It has side effect to cdce(4).

 This should have no side effect.

 Index: umodem.c
 ===================================================================
 RCS file: /cvsroot/src/sys/dev/usb/umodem.c,v
 retrieving revision 1.67
 diff -u -r1.67 umodem.c
 --- umodem.c	5 Jul 2015 15:51:55 -0000	1.67
 +++ umodem.c	9 Jul 2015 13:00:36 -0000
 @@ -81,6 +81,12 @@
  	NULL,
  };

 +static const struct usb_devno umodem_devs[] = {
 +	/* Conexant USB Modem */
 +	{ USB_VENDOR_CONEXANT, USB_PRODUCT_CONEXANT_MODEM_1 },
 +};
 +#define	umodem_lookup(v, p) usb_lookup(umodem_devs, v, p)
 +
  int             umodem_match(device_t, cfdata_t, void *);
  void            umodem_attach(device_t, device_t, void *);
  int             umodem_detach(device_t, int);
 @@ -97,13 +103,17 @@
  	struct usbif_attach_arg *uaa = aux;
  	usb_interface_descriptor_t *id;
  	int cm, acm;
 +	id = usbd_get_interface_descriptor(uaa->iface);
 +
 +	if (umodem_lookup(uaa->vendor, uaa->product) &&
 +	    id->bInterfaceNumber == 1)
 +		return (UMATCH_VENDOR_PRODUCT);

  	if (uaa->class != UICLASS_CDC ||
  	    uaa->subclass != UISUBCLASS_ABSTRACT_CONTROL_MODEL ||
  	    !(uaa->proto == UIPROTO_CDC_NOCLASS || uaa->proto == UIPROTO_CDC_AT))
  		return (UMATCH_NONE);

 -	id = usbd_get_interface_descriptor(uaa->iface);
  	if (umodem_get_caps(uaa->device, &cm, &acm, id) == -1)
  		return (UMATCH_NONE);


 --
 Ryo ONODERA // ryo_on@yk.rim.or.jp
 PGP fingerprint = 82A2 DC91 76E0 A10A 8ABB  FD1B F404 27FA C7D1 15F3

From: Ryo ONODERA <ryo_on@yk.rim.or.jp>
To: gnats-bugs@NetBSD.org
Cc: 
Subject: Re: kern/48715: Please support more USB modems
Date: Tue, 06 Oct 2015 00:09:49 +0900 (JST)

 Hi,

 Could you give me comments on my patch?

 --
 Ryo ONODERA // ryo_on@yk.rim.or.jp
 PGP fingerprint = 82A2 DC91 76E0 A10A 8ABB  FD1B F404 27FA C7D1 15F3

From: Nick Hudson <skrll@netbsd.org>
To: gnats-bugs@NetBSD.org, kern-bug-people@netbsd.org, 
 gnats-admin@netbsd.org, netbsd-bugs@netbsd.org, ryoon@NetBSD.org
Cc: 
Subject: Re: kern/48715: Please support more USB modems
Date: Mon, 05 Oct 2015 16:16:30 +0100

 On 10/05/15 16:10, Ryo ONODERA wrote:
 > The following reply was made to PR kern/48715; it has been noted by GNATS.
 >
 > From: Ryo ONODERA <ryo_on@yk.rim.or.jp>
 > To: gnats-bugs@NetBSD.org
 > Cc:
 > Subject: Re: kern/48715: Please support more USB modems
 > Date: Tue, 06 Oct 2015 00:09:49 +0900 (JST)
 >
 >   Hi,
 >   
 >   Could you give me comments on my patch?

 I request more information about your device.

 Can you provide, please?

 Thanks,
 Nick

From: Ryo ONODERA <ryo_on@yk.rim.or.jp>
To: skrll@netbsd.org, gnats-bugs@NetBSD.org
Cc: 
Subject: Re: kern/48715: Please support more USB modems
Date: Tue, 06 Oct 2015 00:22:12 +0900 (JST)

 From: Nick Hudson <skrll@netbsd.org>, Date: Mon, 05 Oct 2015 16:16:30 +0100

 > On 10/05/15 16:10, Ryo ONODERA wrote:
 >> The following reply was made to PR kern/48715; it has been noted by
 >> GNATS.
 >>
 >> From: Ryo ONODERA <ryo_on@yk.rim.or.jp>
 >> To: gnats-bugs@NetBSD.org
 >> Cc:
 >> Subject: Re: kern/48715: Please support more USB modems
 >> Date: Tue, 06 Oct 2015 00:09:49 +0900 (JST)
 >>
 >>   Hi,
 >>     Could you give me comments on my patch?
 > 
 > I request more information about your device.
 > 
 > Can you provide, please?
 > 
 > Thanks,
 > Nick

 Here is the information.

 length: 9
 descriptor type: 2
 total length: -9114
 num interface: 2
 config value: 1
 configuration: 0
 Attributes: (0x80) 
 max power: 100 mA

 Interface 0:
   Length: 9
   Descriptor Type: 4
   Interface No: 0
   Alt Setting: 0
   Num Endpoints: 1
   Interface Class: 2
   Interface SubClass: 2
   Interface Protocol: 1
   Interface: 0
   Endpoint 0:
     Length: 7
     Length: 5
     Length: (0x81) 1 (in)
     Attributes: (0x3) interrupt 
     Max Packet Size: -9164
     Interval: 128

 Interface 1:
   Length: 9
   Descriptor Type: 4
   Interface No: 1
   Alt Setting: 0
   Num Endpoints: 2
   Interface Class: 10
   Interface SubClass: 0
   Interface Protocol: 0
   Interface: 0
   Endpoint 0:
     Length: 7
     Length: 5
     Length: (0x82) 2 (in)
     Attributes: (0x2) bulk 
     Max Packet Size: -9164
     Interval: 1
   Endpoint 1:
     Length: 7
     Length: 5
     Length: (0x2) 2 (out)
     Attributes: (0x2) bulk 
     Max Packet Size: -9164
     Interval: 1

 --
 Ryo ONODERA // ryo_on@yk.rim.or.jp
 PGP fingerprint = 82A2 DC91 76E0 A10A 8ABB  FD1B F404 27FA C7D1 15F3

From: Ryo ONODERA <ryo_on@yk.rim.or.jp>
To: gnats-bugs@NetBSD.org
Cc: skrll@NetBSD.org
Subject: Re: kern/48715: Please support more USB modems
Date: Sun, 13 Dec 2015 09:44:01 +0900 (JST)

 Hi,

 Ping?

 --
 Ryo ONODERA // ryo_on@yk.rim.or.jp
 PGP fingerprint = 82A2 DC91 76E0 A10A 8ABB  FD1B F404 27FA C7D1 15F3

From: Ryo ONODERA <ryo_on@yk.rim.or.jp>
To: gnats-bugs@NetBSD.org
Cc: 
Subject: Re: kern/48715: Please support more USB modems
Date: Sat, 25 Jun 2016 12:02:32 +0900 (JST)

 Hi,

 I have renewed my patch for latest current.
 Could anyone review this?
 I think that it has no side effect.

 Index: umodem.c
 ===================================================================
 RCS file: /cvsroot/src/sys/dev/usb/umodem.c,v
 retrieving revision 1.68
 diff -u -r1.68 umodem.c
 --- umodem.c	23 Apr 2016 10:15:32 -0000	1.68
 +++ umodem.c	23 Jun 2016 20:24:09 -0000
 @@ -81,6 +81,12 @@
  	.ucom_write = NULL,
  };

 +static const struct usb_devno umodem_devs[] = {
 +	/* Conexant USB Modem */
 +	{ USB_VENDOR_CONEXANT, USB_PRODUCT_CONEXANT_MODEM_1 },
 +};
 +#define	umodem_lookup(v, p) usb_lookup(umodem_devs, v, p)
 +
  int             umodem_match(device_t, cfdata_t, void *);
  void            umodem_attach(device_t, device_t, void *);
  int             umodem_detach(device_t, int);
 @@ -97,13 +103,17 @@
  	struct usbif_attach_arg *uiaa = aux;
  	usb_interface_descriptor_t *id;
  	int cm, acm;
 +	id = usbd_get_interface_descriptor(uiaa->uiaa_iface);
 +
 +	if (umodem_lookup(uiaa->uiaa_vendor, uiaa->uiaa_product) &&
 +	    id->bInterfaceNumber == 1)
 +		return (UMATCH_VENDOR_PRODUCT);

  	if (uiaa->uiaa_class != UICLASS_CDC ||
  	    uiaa->uiaa_subclass != UISUBCLASS_ABSTRACT_CONTROL_MODEL ||
  	    !(uiaa->uiaa_proto == UIPROTO_CDC_NOCLASS || uiaa->uiaa_proto == UIPROTO_CDC_AT))
  		return UMATCH_NONE;

 -	id = usbd_get_interface_descriptor(uiaa->uiaa_iface);
  	if (umodem_get_caps(uiaa->uiaa_device, &cm, &acm, id) == -1)
  		return UMATCH_NONE;


From: matthew green <mrg@eterna.com.au>
To: gnats-bugs@NetBSD.org
Cc: kern-bug-people@netbsd.org, gnats-admin@netbsd.org,
    netbsd-bugs@netbsd.org, ryoon@NetBSD.org
Subject: re: kern/48715: Please support more USB modems
Date: Sat, 25 Jun 2016 13:30:45 +1000

 hi Ryoon,

 no comment about the general change, but ..

 >  +static const struct usb_devno umodem_devs[] = {
 >  +	/* Conexant USB Modem */
 >  +	{ USB_VENDOR_CONEXANT, USB_PRODUCT_CONEXANT_MODEM_1 },
 >  +};
 >  +#define	umodem_lookup(v, p) usb_lookup(umodem_devs, v, p)
 >  +
 >   int             umodem_match(device_t, cfdata_t, void *);
 >   void            umodem_attach(device_t, device_t, void *);
 >   int             umodem_detach(device_t, int);
 >  @@ -97,13 +103,17 @@
 >   	struct usbif_attach_arg *uiaa = aux;
 >   	usb_interface_descriptor_t *id;
 >   	int cm, acm;
 >  +	id = usbd_get_interface_descriptor(uiaa->uiaa_iface);
 >  +
 >  +	if (umodem_lookup(uiaa->uiaa_vendor, uiaa->uiaa_product) &&
 >  +	    id->bInterfaceNumber == 1)
 >  +		return (UMATCH_VENDOR_PRODUCT);

 what's this magic "1" about?


 .mrg.

From: Ryo ONODERA <ryo_on@yk.rim.or.jp>
To: mrg@eterna.com.au, gnats-bugs@NetBSD.org
Cc: 
Subject: Re: kern/48715: Please support more USB modems
Date: Sat, 25 Jun 2016 15:22:55 +0900 (JST)

 Hi,

 From: matthew green <mrg@eterna.com.au>, Date: Sat, 25 Jun 2016 13:30:45 +1000

 > hi Ryoon,
 > 
 > no comment about the general change, but ..
 > 
 >>  +static const struct usb_devno umodem_devs[] = {
 >>  +	/* Conexant USB Modem */
 >>  +	{ USB_VENDOR_CONEXANT, USB_PRODUCT_CONEXANT_MODEM_1 },
 >>  +};
 >>  +#define	umodem_lookup(v, p) usb_lookup(umodem_devs, v, p)
 >>  +
 >>   int             umodem_match(device_t, cfdata_t, void *);
 >>   void            umodem_attach(device_t, device_t, void *);
 >>   int             umodem_detach(device_t, int);
 >>  @@ -97,13 +103,17 @@
 >>   	struct usbif_attach_arg *uiaa = aux;
 >>   	usb_interface_descriptor_t *id;
 >>   	int cm, acm;
 >>  +	id = usbd_get_interface_descriptor(uiaa->uiaa_iface);
 >>  +
 >>  +	if (umodem_lookup(uiaa->uiaa_vendor, uiaa->uiaa_product) &&
 >>  +	    id->bInterfaceNumber == 1)
 >>  +		return (UMATCH_VENDOR_PRODUCT);
 > 
 > what's this magic "1" about?

 Thanks for your review.

 It is working interface number.
 However hardcoding it is bad idea.

 The following new patch may useful for other USB modems.
 And usbif_attach_arg is used.

 Index: umodem.c
 ===================================================================
 RCS file: /cvsroot/src/sys/dev/usb/umodem.c,v
 retrieving revision 1.68
 diff -u -r1.68 umodem.c
 --- umodem.c	23 Apr 2016 10:15:32 -0000	1.68
 +++ umodem.c	25 Jun 2016 06:18:50 -0000
 @@ -81,6 +81,27 @@
  	.ucom_write = NULL,
  };

 +static const struct umodem_devno {
 +	int	vendor;
 +	int	product;
 +	int	interface;
 +	int	match;
 +} umodem_devs[] = {
 +	/* Conexant USB Modem */
 +	{ /* Ignore interface 0 */
 +		USB_VENDOR_CONEXANT,
 +		USB_PRODUCT_CONEXANT_MODEM_1,
 +		0,
 +		UMATCH_NONE
 +	},
 +	{ /* Detect interface 1 only */
 +		USB_VENDOR_CONEXANT,
 +		USB_PRODUCT_CONEXANT_MODEM_1,
 +		1,
 +		UMATCH_VENDOR_PRODUCT
 +	},
 +};
 +
  int             umodem_match(device_t, cfdata_t, void *);
  void            umodem_attach(device_t, device_t, void *);
  int             umodem_detach(device_t, int);
 @@ -97,6 +118,21 @@
  	struct usbif_attach_arg *uiaa = aux;
  	usb_interface_descriptor_t *id;
  	int cm, acm;
 +	size_t i;
 +
 +	for (i = 0; i < __arraycount(umodem_devs); i++) {
 +		if (umodem_devs[i].vendor != -1
 +		    && umodem_devs[i].vendor != uiaa->uiaa_vendor)
 +                        continue;
 +		if (umodem_devs[i].product != -1
 +		    && umodem_devs[i].product != uiaa->uiaa_product)
 +                        continue;
 +		if (umodem_devs[i].interface != -1
 +		    && umodem_devs[i].interface != uiaa->uiaa_ifaceno)
 +                        continue;
 +
 +                return umodem_devs[i].match;
 +        }

  	if (uiaa->uiaa_class != UICLASS_CDC ||
  	    uiaa->uiaa_subclass != UISUBCLASS_ABSTRACT_CONTROL_MODEL ||

 --
 Ryo ONODERA // ryo_on@yk.rim.or.jp
 PGP fingerprint = 82A2 DC91 76E0 A10A 8ABB  FD1B F404 27FA C7D1 15F3

From: Nick Hudson <skrll@netbsd.org>
To: gnats-bugs@NetBSD.org, kern-bug-people@netbsd.org,
 gnats-admin@netbsd.org, netbsd-bugs@netbsd.org, ryoon@NetBSD.org
Cc: 
Subject: Re: kern/48715: Please support more USB modems
Date: Sat, 25 Jun 2016 07:42:07 +0100

 On 06/25/16 04:05, Ryo ONODERA wrote:
 > The following reply was made to PR kern/48715; it has been noted by GNATS.
 >
 > From: Ryo ONODERA <ryo_on@yk.rim.or.jp>
 > To: gnats-bugs@NetBSD.org
 > Cc:
 > Subject: Re: kern/48715: Please support more USB modems
 > Date: Sat, 25 Jun 2016 12:02:32 +0900 (JST)
 >
 >   Hi,
 >   
 >   I have renewed my patch for latest current.
 >   Could anyone review this?
 >   I think that it has no side effect.
 >   

 Hi,

 I still think there are problems with this patch due to bugs elsewhere 
 in sys/dev/usb

 It's still on my list

 Nick

From: Ryo ONODERA <ryo_on@yk.rim.or.jp>
To: skrll@netbsd.org
Cc: gnats-bugs@NetBSD.org, kern-bug-people@netbsd.org,
 gnats-admin@netbsd.org, netbsd-bugs@netbsd.org
Subject: Re: kern/48715: Please support more USB modems
Date: Sat, 25 Jun 2016 17:23:55 +0900 (JST)

 Hi,

 From: Nick Hudson <skrll@netbsd.org>, Date: Sat, 25 Jun 2016 07:42:07 +0100

 > On 06/25/16 04:05, Ryo ONODERA wrote:
 >> The following reply was made to PR kern/48715; it has been noted by
 >> GNATS.
 >>
 >> From: Ryo ONODERA <ryo_on@yk.rim.or.jp>
 >> To: gnats-bugs@NetBSD.org
 >> Cc:
 >> Subject: Re: kern/48715: Please support more USB modems
 >> Date: Sat, 25 Jun 2016 12:02:32 +0900 (JST)
 >>
 >>   Hi,
 >>     I have renewed my patch for latest current.
 >>   Could anyone review this?
 >>   I think that it has no side effect.
 >>   
 > 
 > Hi,
 > 
 > I still think there are problems with this patch due to bugs elsewhere
 > in sys/dev/usb
 > 
 > It's still on my list

 I see.
 Can I provide more information about this device?

 --
 Ryo ONODERA // ryo_on@yk.rim.or.jp
 PGP fingerprint = 82A2 DC91 76E0 A10A 8ABB  FD1B F404 27FA C7D1 15F3

>Unformatted:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2014 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.