From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752052AbcAGIwr (ORCPT ); Thu, 7 Jan 2016 03:52:47 -0500 Received: from mail.actia.se ([193.41.119.134]:49499 "EHLO mail.actia.se" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750852AbcAGIwp convert rfc822-to-8bit (ORCPT ); Thu, 7 Jan 2016 03:52:45 -0500 From: John Ernberg To: Johan Hovold CC: "linux-kernel@vger.kernel.org" , "linux-usb@vger.kernel.org" Subject: Re: [PATCH] usb: option.c: Fix Cinterion AHxx enumeration. Thread-Topic: [PATCH] usb: option.c: Fix Cinterion AHxx enumeration. Thread-Index: AQHRPKa33hqDlh+0F0GhozuV9o3mP57Ww3qAgACFiICAGH5xAA== Date: Thu, 7 Jan 2016 08:52:38 +0000 Message-ID: <568E2756.2040205@actia.se> References: <1450781515-12250-1-git-send-email-john.ernberg@actia.se> <1450781515-12250-2-git-send-email-john.ernberg@actia.se> <20151222184951.GD29167@localhost> In-Reply-To: <20151222184951.GD29167@localhost> Accept-Language: en-US, sv-SE Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [192.168.15.50] x-esetresult: clean, is OK x-esetid: 360D0A390C662C37614A50 Content-Type: text/plain; charset="Windows-1252" Content-ID: Content-Transfer-Encoding: 8BIT MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Johan, Apologies for the late reply, I was out of office. Below is the 'lsusb -v' output for the AH3 modem. For the mailing lists: Please CC me directly, I did not sign up for the mailing lists. Thank you. Best regards // John Ernberg Bus 001 Device 002: ID 1e2d:0055 Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 239 Miscellaneous Device bDeviceSubClass 2 ? bDeviceProtocol 1 Interface Association bMaxPacketSize0 64 idVendor 0x1e2d idProduct 0x0055 bcdDevice 0.00 iManufacturer 4 Cinterion iProduct 3 AHx iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 187 bNumInterfaces 6 bConfigurationValue 1 iConfiguration 2 Qualcomm Configuration bmAttributes 0xe0 Self Powered Remote Wakeup MaxPower 10mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 255 Vendor Specific Subclass bInterfaceProtocol 255 Vendor Specific Protocol iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 32 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x01 EP 1 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 32 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 255 Vendor Specific Subclass bInterfaceProtocol 255 Vendor Specific Protocol iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 32 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 32 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 2 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 255 Vendor Specific Subclass bInterfaceProtocol 255 Vendor Specific Protocol iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 32 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x03 EP 3 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 32 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 3 bAlternateSetting 0 bNumEndpoints 3 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 255 Vendor Specific Subclass bInterfaceProtocol 255 Vendor Specific Protocol iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x84 EP 4 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 5 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x85 EP 5 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 32 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x04 EP 4 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 32 Interface Association: bLength 8 bDescriptorType 11 bFirstInterface 4 bInterfaceCount 2 bFunctionClass 2 Communications bFunctionSubClass 0 bFunctionProtocol 0 iFunction 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 4 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 2 Communications bInterfaceSubClass 6 Ethernet Networking bInterfaceProtocol 0 iInterface 0 CDC Header: bcdCDC 1.10 CDC Ethernet: iMacAddress 1 00A0C6294080 bmEthernetStatistics 0x00000000 wMaxSegmentSize 8192 wNumberMCFilters 0x0001 bNumberPowerFilters 0 CDC Union: bMasterInterface 4 bSlaveInterface 5 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x86 EP 6 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 5 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 5 bAlternateSetting 0 bNumEndpoints 0 bInterfaceClass 10 CDC Data bInterfaceSubClass 0 Unused bInterfaceProtocol 0 iInterface 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 5 bAlternateSetting 1 bNumEndpoints 2 bInterfaceClass 10 CDC Data bInterfaceSubClass 0 Unused bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x87 EP 7 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 32 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x05 EP 5 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 32 Device Qualifier (for other device speed): bLength 10 bDescriptorType 6 bcdUSB 2.00 bDeviceClass 239 Miscellaneous Device bDeviceSubClass 2 ? bDeviceProtocol 1 Interface Association bMaxPacketSize0 64 bNumConfigurations 1 Device Status: 0x0000 (Bus Powered) On 12/22/2015 07:49 PM, Johan Hovold wrote: > [ +CC: linux-usb ] > > On Tue, Dec 22, 2015 at 10:51:32AM +0000, John Ernberg wrote: >> From: John Ernberg >> >> In certain kernel configurations where the cdc_ether and option drivers >> are compiled as modules there can occur a race condition in enumeration. >> This causes the option driver to enumerate the ethernet(wwan) interface >> as usb-serial interfaces. >> >> In dmesg it may look like this: >> [ 18.380585] usb 1-1: new high-speed USB device number 2 using ci_hdrc >> [ 18.592290] usbcore: registered new interface driver usbserial >> [ 18.606636] usbcore: registered new interface driver usbserial_generic >> [ 18.614815] usbserial: USB Serial support registered for generic >> [ 18.652111] usbcore: registered new interface driver option >> [ 18.659745] usbserial: USB Serial support registered for GSM modem (1-port) >> [ 18.667600] option 1-1:1.0: GSM modem (1-port) converter detected >> [ 18.676906] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB0 >> [ 18.686725] cdc_ether 1-1:1.4 wwan0: register 'cdc_ether' at usb-ci_hdrc.1-1, Mobile Broadband Network Device >> [ 18.705587] option 1-1:1.1: GSM modem (1-port) converter detected >> [ 18.713468] usbcore: registered new interface driver cdc_ether >> [ 18.719930] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB1 >> [ 18.729770] option 1-1:1.2: GSM modem (1-port) converter detected >> [ 18.737421] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB2 >> [ 18.745232] option 1-1:1.3: GSM modem (1-port) converter detected >> [ 18.752838] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB3 >> [ 43.422579] option1 ttyUSB3: option_instat_callback: error -71 >> [ 43.622575] option1 ttyUSB3: option_instat_callback: error -71 >> [ 43.822579] option1 ttyUSB3: option_instat_callback: error -71 >> [ 44.022575] option1 ttyUSB3: option_instat_callback: error -71 >> [ 44.222569] option1 ttyUSB3: option_instat_callback: error -71 >> [ 44.398490] usb 1-1: USB disconnect, device number 2 >> [ 44.405414] option1 ttyUSB0: GSM modem (1-port) converter now disconnected from ttyUSB0 >> [ 44.417200] option 1-1:1.0: device disconnected >> [ 44.424903] option1 ttyUSB1: GSM modem (1-port) converter now disconnected from ttyUSB1 >> [ 44.434249] option 1-1:1.1: device disconnected >> [ 44.438824] option1 ttyUSB3: option_instat_callback: error -71 >> [ 44.448436] option1 ttyUSB2: GSM modem (1-port) converter now disconnected from ttyUSB2 >> [ 44.457736] option 1-1:1.2: device disconnected >> [ 44.465204] option1 ttyUSB3: GSM modem (1-port) converter now disconnected from ttyUSB3 >> [ 44.474480] option 1-1:1.3: device disconnected >> [ 44.479754] cdc_ether 1-1:1.4 wwan0: unregister 'cdc_ether' usb-ci_hdrc.1-1, Mobile Broadband Network Device >> [ 48.960593] usb 1-1: new high-speed USB device number 3 using ci_hdrc >> [ 49.116118] option 1-1:1.0: GSM modem (1-port) converter detected >> [ 49.123853] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB0 >> [ 49.132029] option 1-1:1.1: GSM modem (1-port) converter detected >> [ 49.138778] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB1 >> [ 49.147432] option 1-1:1.2: GSM modem (1-port) converter detected >> [ 49.154924] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB2 >> [ 49.162940] option 1-1:1.3: GSM modem (1-port) converter detected >> [ 49.169724] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB3 >> [ 49.178440] option 1-1:1.4: GSM modem (1-port) converter detected >> [ 49.185979] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB4 >> [ 49.193985] option 1-1:1.5: GSM modem (1-port) converter detected >> [ 49.201458] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB5 >> --- >> drivers/usb/serial/option.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c >> index f228060..4e483f2 100644 >> --- a/drivers/usb/serial/option.c >> +++ b/drivers/usb/serial/option.c >> @@ -1679,7 +1679,7 @@ static const struct usb_device_id option_ids[] = { >> { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_EU3_P) }, >> { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_PH8), >> .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, >> - { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_AHXX) }, >> + { USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_AHXX, 0xff) }, >> { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_PLXX), >> .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, >> { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_HC28_MDM) }, > Thanks for the patch. > > Could you provide the output of lsusb -v for this device? > > Thanks, > Johan