Skip to contentSkip to conversation

Is my hotplug configuration not OK for CDCEther when connecting my Ethernet device over USB ?

DISCUSSION Philippe Bertin 1 participant 1 message Jul 24, 2003

lore
Share & tools
lore
#0 lore raw

'Llo All,

I have been using CDCEther recently, a device driver that is to be driving CDC- devices (over USB, that is). It should be working (as a design goal) with a standard Linux host. However, up to now I only get it working in around 5 percent of the cases. At first, I thought that it was due to the CDCEther- module that my device didn't get started. But in the running of my tests, I've started suspecting my hotplug configuration. When it works OK (like I said, in around 5 percent of the cases), I get a log like in attachment 1 (log_OK). When it does not work, I get a log like in attachment 2 (log_NOT_OK).

What is happening, is that my Linux CDC host driver (i.e. CDCEther) does (most of the times) not come to the point of sending the USB- command 'Set Interface 1, Alternate 1'. This is needed before my CDC- device can start sending/receiving Ethernet frames. I see that CDCEther correctly claims the USB- device (see the logs), but that's all. Because all descriptors are fetched by the host (I believe that's done by the USB- generic part of the kernel, not so ?), and they are correctly answered by my device. But at the point where the host should send 'Set Intf 1 Alt 0' which should after some time be succeeded by 'Set Intf 1 Alt 1', nothing happens. I have started thinking that the host only does this once he has been able to create an eth1- device (see the logs).

IF the system comes to the point of finding the needed hotplug information (i.e., if there is not that bunch of hotplug- errors in the log), it looks like there is a valid eth1 created. But in the other case, I get a whole lot of errors in the log, and there is NO eth1- device created. In the good case, the CDCEther- driver selects Intf 1 Alt 1, and thus there can be network traffic (which I am still to debug, but then I'd at least have a working test configuration...) What is bothering me, is that it SOMETIMES works. Are there reasons to believe there are some timing issues involved here ?

I am using SuSE linux 8.2, so kernel 2.4.20. I already tried the same with the new 2.6 standard kernel (using usbnet, the replacing module for the 2.4- kernel CDCEther module). But apart from having less debug information, the phenomenon remains the same.

Thanks for any helpful answer,

Kind regards,

Philippe Bertin.

P.S. I think that this newsgroup is the most feasable for my problem, unless ... linux-usb-devel or -users ?

Jul 24 10:32:38 bvwcltbp kernel: hub.c: new USB device 00:1f.2-2, assigned address 17
Jul 24 10:32:38 bvwcltbp kernel: usb.c: kmalloc IF c2cb73a0, numif 2
Jul 24 10:32:38 bvwcltbp kernel: usb.c: skipping descriptor 0x24
Jul 24 10:32:38 bvwcltbp last message repeated 2 times
Jul 24 10:32:38 bvwcltbp kernel: usb.c: skipped 3 class/vendor specific endpoint descriptors
Jul 24 10:32:38 bvwcltbp kernel: usb.c: new device strings: Mfr=1, Product=2, SerialNumber=3
Jul 24 10:32:38 bvwcltbp kernel: usb.c: USB device number 17 default language ID 0x409
Jul 24 10:32:38 bvwcltbp kernel: Manufacturer: [correctly shown]
Jul 24 10:32:38 bvwcltbp kernel: Product: [correctly shown]
Jul 24 10:32:38 bvwcltbp kernel: SerialNumber: [correctly shown]
Jul 24 10:32:38 bvwcltbp kernel: CDCEther.c: Ethernet information found at device configuration.  Trying to use it anyway.
Jul 24 10:32:38 bvwcltbp kernel: CDCEther.c: Found Header descriptor, CDC version 110.
Jul 24 10:32:38 bvwcltbp kernel: CDCEther.c: Imperfect filtering support - need sw hashing
Jul 24 10:32:38 bvwcltbp kernel: CDCEther.c: Can't use SetEthernetMulticastFilters request
Jul 24 10:32:38 bvwcltbp kernel: CDCEther.c: detected BULK OUT packets of size 64
Jul 24 10:32:38 bvwcltbp kernel: CDCEther.c: interrupt address: 1
Jul 24 10:32:38 bvwcltbp kernel: CDCEther.c: interrupt interval: 10
Jul 24 10:32:38 bvwcltbp kernel: usb.c: ignoring set_interface for dev 17, iface 0, alt 0
Jul 24 10:32:38 bvwcltbp kernel: CDCEther.c: eth1: [Manufacturer, Product ID and Ser Nr correctly shown]
Jul 24 10:32:38 bvwcltbp kernel: CDCEther.c: eth1: [Eth MAC address correctly shown]
Jul 24 10:32:38 bvwcltbp kernel: usb.c: CDCEther driver claimed interface c2cb73b8
Jul 24 10:32:38 bvwcltbp kernel: usb.c: CDCEther driver claimed interface c2cb73a0
Jul 24 10:32:38 bvwcltbp kernel: usb.c: kusbd: /sbin/hotplug add 17
Jul 24 10:32:38 bvwcltbp kernel: usb.c: kusbd: /sbin/hotplug add 17
Jul 24 10:32:38 bvwcltbp kernel: hub.c: port 1, portstatus 303, change 0, 1.5 Mb/s
Jul 24 10:32:38 bvwcltbp kernel: hub.c: port 2, portstatus 103, change 0, 12 Mb/s
Jul 24 10:32:42 bvwcltbp /etc/hotplug/usb.agent[7613]: writing usb-1-17 to /var/run/hotplug/net
Jul 24 10:32:42 bvwcltbp /etc/hotplug/net.agent[7571]: Using HW description eth-usb-1-17 
Jul 24 10:32:42 bvwcltbp kernel: CDCEther.c: eth1: set multicast filters
Jul 24 10:32:42 bvwcltbp kernel: CDCEther.c: eth1: too many MC filters for hardware, using allmulti
Jul 24 10:32:42 bvwcltbp last message repeated 4 times
Jul 24 10:32:43 bvwcltbp /etc/hotplug/net.agent[7505]: No HW description found ... exiting
Jul 24 10:32:45 bvwcltbp /etc/hotplug/usb.agent[7706]: writing usb-1-17 to /var/run/hotplug/net
Jul 24 10:32:53 bvwcltbp kernel: eth1: no IPv6 routers present
Jul 24 10:33:02 bvwcltbp kernel: NETDEV WATCHDOG: eth1: transmit timed out
Jul 24 10:33:02 bvwcltbp kernel: CDCEther.c: eth1: Tx timed out.
Jul 24 10:33:02 bvwcltbp kernel: CDCEther.c: eth1: TX status -104
Jul 24 10:33:22 bvwcltbp kernel: NETDEV WATCHDOG: eth1: transmit timed out
Jul 24 10:33:22 bvwcltbp kernel: CDCEther.c: eth1: Tx timed out.
Jul 24 10:33:22 bvwcltbp kernel: CDCEther.c: eth1: TX status -104
Jul 24 10:33:42 bvwcltbp kernel: NETDEV WATCHDOG: eth1: transmit timed out
Jul 24 10:33:42 bvwcltbp kernel: CDCEther.c: eth1: Tx timed out.
Jul 24 10:33:42 bvwcltbp kernel: CDCEther.c: eth1: TX status -104
Jul 24 10:34:02 bvwcltbp kernel: NETDEV WATCHDOG: eth1: transmit timed out
Jul 24 10:34:02 bvwcltbp kernel: CDCEther.c: eth1: Tx timed out.
Jul 24 10:34:02 bvwcltbp kernel: CDCEther.c: eth1: TX status -104
Jul 24 10:34:22 bvwcltbp kernel: NETDEV WATCHDOG: eth1: transmit timed out
Jul 24 10:34:22 bvwcltbp kernel: CDCEther.c: eth1: Tx timed out.
Jul 24 10:34:22 bvwcltbp kernel: CDCEther.c: eth1: TX status -104
Jul 24 10:34:42 bvwcltbp kernel: NETDEV WATCHDOG: eth1: transmit timed out
Jul 24 10:34:42 bvwcltbp kernel: CDCEther.c: eth1: Tx timed out.
Jul 24 10:34:42 bvwcltbp kernel: CDCEther.c: eth1: TX status -104
Jul 24 10:35:02 bvwcltbp kernel: NETDEV WATCHDOG: eth1: transmit timed out
Jul 24 10:35:02 bvwcltbp kernel: CDCEther.c: eth1: Tx timed out.
Jul 24 10:35:02 bvwcltbp kernel: CDCEther.c: eth1: TX status -104
Jul 24 10:35:22 bvwcltbp kernel: NETDEV WATCHDOG: eth1: transmit timed out
Jul 24 10:35:22 bvwcltbp kernel: CDCEther.c: eth1: Tx timed out.
Jul 24 10:35:22 bvwcltbp kernel: CDCEther.c: eth1: TX status -104
Jul 24 10:35:42 bvwcltbp kernel: NETDEV WATCHDOG: eth1: transmit timed out
Jul 24 10:35:42 bvwcltbp kernel: CDCEther.c: eth1: Tx timed out.
Jul 24 10:35:42 bvwcltbp kernel: CDCEther.c: eth1: TX status -104
Jul 24 10:36:02 bvwcltbp kernel: NETDEV WATCHDOG: eth1: transmit timed out
Jul 24 10:36:02 bvwcltbp kernel: CDCEther.c: eth1: Tx timed out.
Jul 24 10:36:02 bvwcltbp kernel: CDCEther.c: eth1: TX status -104
Jul 24 10:36:22 bvwcltbp kernel: NETDEV WATCHDOG: eth1: transmit timed out
Jul 24 10:36:22 bvwcltbp kernel: CDCEther.c: eth1: Tx timed out.
Jul 24 10:36:22 bvwcltbp kernel: CDCEther.c: eth1: TX status -104
Jul 24 10:36:42 bvwcltbp kernel: NETDEV WATCHDOG: eth1: transmit timed out
Jul 24 10:36:42 bvwcltbp kernel: CDCEther.c: eth1: Tx timed out.
Jul 24 10:36:42 bvwcltbp kernel: CDCEther.c: eth1: TX status -104
Jul 24 10:37:00 bvwcltbp kernel: usb-uhci.c: interrupt, status 2, frame# 915
Jul 24 10:37:00 bvwcltbp kernel: CDCEther.c: rx status -84
Jul 24 10:37:00 bvwcltbp kernel: CDCEther.c: eth1: RX status -84
Jul 24 10:37:00 bvwcltbp kernel: CDCEther.c: eth1: TX status -110
Jul 24 10:37:00 bvwcltbp kernel: CDCEther.c: rx status -84
Jul 24 10:37:00 bvwcltbp kernel: CDCEther.c: eth1: RX status -84
Jul 24 10:37:00 bvwcltbp kernel: CDCEther.c: rx status -84
Jul 24 10:37:00 bvwcltbp kernel: CDCEther.c: eth1: RX status -84
Jul 24 10:37:00 bvwcltbp kernel: CDCEther.c: rx status -84
Jul 24 10:37:00 bvwcltbp kernel: CDCEther.c: eth1: RX status -84
Jul 24 10:37:00 bvwcltbp kernel: CDCEther.c: rx status -84
Jul 24 10:37:00 bvwcltbp kernel: CDCEther.c: eth1: RX status -84
Jul 24 10:37:28 bvwcltbp kernel: hub.c: new USB device 00:1f.2-2, assigned address 18
Jul 24 10:37:28 bvwcltbp kernel: usb.c: kmalloc IF c2cb73a0, numif 2
Jul 24 10:37:28 bvwcltbp kernel: usb.c: skipping descriptor 0x24
Jul 24 10:37:28 bvwcltbp last message repeated 2 times
Jul 24 10:37:28 bvwcltbp kernel: usb.c: skipped 3 class/vendor specific endpoint descriptors
Jul 24 10:37:28 bvwcltbp kernel: usb.c: new device strings: Mfr=1, Product=2, SerialNumber=3
Jul 24 10:37:28 bvwcltbp kernel: usb.c: USB device number 18 default language ID 0x409
Jul 24 10:37:28 bvwcltbp kernel: Manufacturer: ALCATEL
Jul 24 10:37:28 bvwcltbp kernel: Product: SpeedTouch 500 Series
Jul 24 10:37:28 bvwcltbp kernel: SerialNumber: 0090D05A60FF
Jul 24 10:37:28 bvwcltbp kernel: usb.c: unhandled interfaces on device
Jul 24 10:37:28 bvwcltbp kernel: usb.c: USB device 18 (vend/prod 0x6b9/0x4062) is not claimed by any active driver.
Jul 24 10:37:28 bvwcltbp kernel:   Length              = 18
Jul 24 10:37:28 bvwcltbp kernel:   DescriptorType      = 01
Jul 24 10:37:28 bvwcltbp kernel:   USB version         = 1.10
Jul 24 10:37:28 bvwcltbp kernel:   Vendor:Product      = xxxx:yyyy
Jul 24 10:37:28 bvwcltbp kernel:   MaxPacketSize0      = 64
Jul 24 10:37:28 bvwcltbp kernel:   NumConfigurations   = 1
Jul 24 10:37:28 bvwcltbp kernel:   Device version      = 3.00
Jul 24 10:37:28 bvwcltbp kernel:   Device Class:SubClass:Protocol = 02:00:00
Jul 24 10:37:28 bvwcltbp kernel:     Communications class
Jul 24 10:37:28 bvwcltbp kernel: Configuration:
Jul 24 10:37:28 bvwcltbp kernel:   bLength             =    9
Jul 24 10:37:28 bvwcltbp kernel:   bDescriptorType     =   02
Jul 24 10:37:28 bvwcltbp kernel:   wTotalLength        = 0050
Jul 24 10:37:28 bvwcltbp kernel:   bNumInterfaces      =   02
Jul 24 10:37:28 bvwcltbp kernel:   bConfigurationValue =   01
Jul 24 10:37:28 bvwcltbp kernel:   iConfiguration      =   00
Jul 24 10:37:28 bvwcltbp kernel:   bmAttributes        =   c0
Jul 24 10:37:28 bvwcltbp kernel:   MaxPower            =    0mA
Jul 24 10:37:28 bvwcltbp kernel: 
Jul 24 10:37:28 bvwcltbp kernel:   Interface: 0
Jul 24 10:37:28 bvwcltbp kernel:   Alternate Setting:  0
Jul 24 10:37:28 bvwcltbp kernel:     bLength             =    9
Jul 24 10:37:28 bvwcltbp kernel:     bDescriptorType     =   04
Jul 24 10:37:28 bvwcltbp kernel:     bInterfaceNumber    =   00
Jul 24 10:37:28 bvwcltbp kernel:     bAlternateSetting   =   00
Jul 24 10:37:28 bvwcltbp kernel:     bNumEndpoints       =   01
Jul 24 10:37:28 bvwcltbp kernel:     bInterface Class:SubClass:Protocol =   02:06:00
Jul 24 10:37:28 bvwcltbp kernel:     iInterface          =   00
Jul 24 10:37:28 bvwcltbp kernel:     Endpoint:
Jul 24 10:37:28 bvwcltbp kernel:       bLength             =    7
Jul 24 10:37:28 bvwcltbp kernel:       bDescriptorType     =   05
Jul 24 10:37:28 bvwcltbp kernel:       bEndpointAddress    =   81 (in)
Jul 24 10:37:28 bvwcltbp kernel:       bmAttributes        =   03 (Interrupt)
Jul 24 10:37:28 bvwcltbp kernel:       wMaxPacketSize      = 0008
Jul 24 10:37:28 bvwcltbp kernel:       bInterval           =   0a
Jul 24 10:37:28 bvwcltbp kernel: 
Jul 24 10:37:28 bvwcltbp kernel:   Interface: 1
Jul 24 10:37:28 bvwcltbp kernel:   Alternate Setting:  0
Jul 24 10:37:28 bvwcltbp kernel:     bLength             =    9
Jul 24 10:37:28 bvwcltbp kernel:     bDescriptorType     =   04
Jul 24 10:37:28 bvwcltbp kernel:     bInterfaceNumber    =   01
Jul 24 10:37:28 bvwcltbp kernel:     bAlternateSetting   =   00
Jul 24 10:37:28 bvwcltbp kernel:     bNumEndpoints       =   00
Jul 24 10:37:28 bvwcltbp kernel:     bInterface Class:SubClass:Protocol =   0a:00:00
Jul 24 10:37:28 bvwcltbp kernel:     iInterface          =   00
Jul 24 10:37:28 bvwcltbp kernel:   Alternate Setting:  1
Jul 24 10:37:28 bvwcltbp kernel:     bLength             =    9
Jul 24 10:37:28 bvwcltbp kernel:     bDescriptorType     =   04
Jul 24 10:37:28 bvwcltbp kernel:     bInterfaceNumber    =   01
Jul 24 10:37:28 bvwcltbp kernel:     bAlternateSetting   =   01
Jul 24 10:37:28 bvwcltbp kernel:     bNumEndpoints       =   02
Jul 24 10:37:28 bvwcltbp kernel:     bInterface Class:SubClass:Protocol =   0a:00:00
Jul 24 10:37:28 bvwcltbp kernel:     iInterface          =   00
Jul 24 10:37:28 bvwcltbp kernel:     Endpoint:
Jul 24 10:37:28 bvwcltbp kernel:       bLength             =    7
Jul 24 10:37:28 bvwcltbp kernel:       bDescriptorType     =   05
Jul 24 10:37:28 bvwcltbp kernel:       bEndpointAddress    =   04 (out)
Jul 24 10:37:28 bvwcltbp kernel:       bmAttributes        =   02 (Bulk)
Jul 24 10:37:28 bvwcltbp kernel:       wMaxPacketSize      = 0040
Jul 24 10:37:28 bvwcltbp kernel:       bInterval           =   00
Jul 24 10:37:28 bvwcltbp kernel:     Endpoint:
Jul 24 10:37:28 bvwcltbp kernel:       bLength             =    7
Jul 24 10:37:28 bvwcltbp kernel:       bDescriptorType     =   05
Jul 24 10:37:28 bvwcltbp kernel:       bEndpointAddress    =   85 (in)
Jul 24 10:37:28 bvwcltbp kernel:       bmAttributes        =   02 (Bulk)
Jul 24 10:37:28 bvwcltbp kernel:       wMaxPacketSize      = 0040
Jul 24 10:37:28 bvwcltbp kernel:       bInterval           =   00
Jul 24 10:37:28 bvwcltbp kernel: usb.c: kusbd: /sbin/hotplug add 18
Jul 24 10:37:28 bvwcltbp kernel: usb.c: kusbd: /sbin/hotplug add 18
Jul 24 10:37:28 bvwcltbp kernel: hub.c: port 1, portstatus 303, change 0, 1.5 Mb/s
Jul 24 10:37:28 bvwcltbp kernel: hub.c: port 2, portstatus 103, change 0, 12 Mb/s
Jul 24 10:37:31 bvwcltbp kernel: usb-uhci.c: ENXIO 80001280, flags 0, urb c2ea06c0, burb c2aeb8e0
Jul 24 10:37:31 bvwcltbp kernel: usbdevfs: USBDEVFS_CONTROL failed dev 18 rqt 128 rq 6 len 80 ret -6
Jul 24 10:37:31 bvwcltbp kernel: usb-uhci.c: ENXIO 80001280, flags 0, urb c2aeb8e0, burb c2ea06c0
Jul 24 10:37:31 bvwcltbp kernel: usbdevfs: USBDEVFS_CONTROL failed dev 18 rqt 128 rq 6 len 9 ret -6
Jul 24 10:37:31 bvwcltbp kernel: usb-uhci.c: ENXIO 80001280, flags 0, urb c2ea06c0, burb c2aeb8e0
Jul 24 10:37:31 bvwcltbp kernel: usbdevfs: USBDEVFS_CONTROL failed dev 18 rqt 128 rq 6 len 9 ret -6
Jul 24 10:37:31 bvwcltbp kernel: usb-uhci.c: ENXIO 80001280, flags 0, urb c2aeb8e0, burb c2ea06c0
Jul 24 10:37:31 bvwcltbp kernel: usbdevfs: USBDEVFS_CONTROL failed dev 18 rqt 128 rq 6 len 9 ret -6
Jul 24 10:37:31 bvwcltbp kernel: usb-uhci.c: ENXIO 80001280, flags 0, urb c2ea06c0, burb c2aeb8e0
Jul 24 10:37:31 bvwcltbp kernel: usbdevfs: USBDEVFS_CONTROL failed dev 18 rqt 128 rq 6 len 9 ret -6
Jul 24 10:37:31 bvwcltbp kernel: usb-uhci.c: ENXIO 80001280, flags 0, urb c2aeb8e0, burb c2ea06c0
Jul 24 10:37:31 bvwcltbp kernel: usbdevfs: USBDEVFS_CONTROL failed dev 18 rqt 128 rq 6 len 9 ret -6
Jul 24 10:37:31 bvwcltbp kernel: usb-uhci.c: ENXIO 80001280, flags 0, urb c2ea06c0, burb c2aeb8e0
Jul 24 10:37:31 bvwcltbp kernel: usbdevfs: USBDEVFS_CONTROL failed dev 18 rqt 128 rq 6 len 9 ret -6
Jul 24 10:37:31 bvwcltbp kernel: usb-uhci.c: ENXIO 80001280, flags 0, urb c2aeb8e0, burb c2ea06c0
Jul 24 10:37:31 bvwcltbp kernel: usbdevfs: USBDEVFS_CONTROL failed dev 18 rqt 128 rq 6 len 9 ret -6
Jul 24 10:37:31 bvwcltbp kernel: usb-uhci.c: ENXIO 80001280, flags 0, urb c2ea06c0, burb c2aeb8e0
Jul 24 10:37:31 bvwcltbp kernel: usbdevfs: USBDEVFS_CONTROL failed dev 18 rqt 128 rq 6 len 9 ret -6
Jul 24 10:37:31 bvwcltbp kernel: usb-uhci.c: ENXIO 80001280, flags 0, urb c2aeb8e0, burb c2ea06c0
Jul 24 10:37:31 bvwcltbp kernel: usbdevfs: USBDEVFS_CONTROL failed dev 18 rqt 128 rq 6 len 9 ret -6
Jul 24 10:37:31 bvwcltbp kernel: usb-uhci.c: ENXIO 80001280, flags 0, urb c2ea06c0, burb c2aeb8e0
Jul 24 10:37:31 bvwcltbp kernel: usbdevfs: USBDEVFS_CONTROL failed dev 18 rqt 128 rq 6 len 9 ret -6
Jul 24 10:37:31 bvwcltbp kernel: usb-uhci.c: ENXIO 80001280, flags 0, urb c2aeb8e0, burb c2ea06c0
Jul 24 10:37:31 bvwcltbp kernel: usbdevfs: USBDEVFS_CONTROL failed dev 18 rqt 128 rq 6 len 9 ret -6
Jul 24 10:37:31 bvwcltbp kernel: usb-uhci.c: ENXIO 80001280, flags 0, urb c2ea06c0, burb c2aeb8e0
Jul 24 10:37:31 bvwcltbp kernel: usbdevfs: USBDEVFS_CONTROL failed dev 18 rqt 128 rq 6 len 9 ret -6
Jul 24 10:37:31 bvwcltbp /etc/hotplug/usb.agent[7919]: cannot get config descriptor 0, No such device or address (6)
Jul 24 10:37:31 bvwcltbp last message repeated 6 times
Jul 24 10:37:31 bvwcltbp /etc/hotplug/usb.agent[7918]: cannot get config descriptor 0, No such device or address (6)
Jul 24 10:37:31 bvwcltbp last message repeated 5 times