From: Nick Hudson <[email protected]>, Date: Sun, 05 Apr 2015 10:12:50 +0100

> On 04/05/15 01:52, Ryo ONODERA wrote:
>> Hi,
>>
>> I believe that following patch is good for us because my USB modem
>> device
>> is bad information and it should be treated as special case.
>>
>> Index: sys/dev/usb/umodem.c
>> ===================================================================
>> RCS file: /cvsroot/src/sys/dev/usb/umodem.c,v
>> retrieving revision 1.66
>> diff -u -r1.66 umodem.c
>> --- sys/dev/usb/umodem.c     6 Apr 2014 02:01:43 -0000       1.66
>> +++ sys/dev/usb/umodem.c     5 Apr 2015 00:49:30 -0000
>> @@ -81,6 +81,11 @@
>>      NULL,
>>   };
>>   +Static const struct usb_devno umodem_devs[] = {
>> +    { 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,22 +102,24 @@
>>      struct usbif_attach_arg *uaa = aux;
>>      usb_interface_descriptor_t *id;
>>      int cm, acm;
>> +    int ret = UMATCH_NONE;
>>   -  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);
>> +    if (umodem_lookup(uaa->vendor, uaa->product))
>> +            ret = UMATCH_VENDOR_PRODUCT;
>>   +  if (uaa->class == UICLASS_CDC &&
>> +        uaa->subclass == UISUBCLASS_ABSTRACT_CONTROL_MODEL &&
>> +        uaa->proto == UIPROTO_CDC_AT)
>> +            ret = UMATCH_IFACECLASS_IFACESUBCLASS_IFACEPROTO;
> 
> Missing  uaa->proto == UIPROTO_CDC_NOCLASS, I think.

It is right.
UIPROTO_CDC_NOCLASS should be added.

> That said, I think there's a bug somewhere else that's causing
> problems here.
> 
> Can you boot with -xv flags and an updated -current kernel with
> USB_DEBUG
> and usbdebug set? I've add some more debug output to the kernel.

I will post the output later.
(I am working on pkgsrc/misc/libreoffice4 now.)

> Thanks,
> Nick

Thank you.

--
Ryo ONODERA // [email protected]
PGP fingerprint = 82A2 DC91 76E0 A10A 8ABB  FD1B F404 27FA C7D1 15F3

Reply via email to