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:
(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.