On Tue, 26 May 2009, Dean Warren wrote: > Using a Sierra Wireless Compass 888 on an Embedded ARM platform. > > Kernel Version: 2.6.25.7 > Sierra Driver: v.1.6.0 > Host controller: Oxford-Semi using driver oxu210hp-hcd.c > > Driver works fine on x86 and has been tested by Sierra Wireless on an ARM > platform. So this problem is platform specific. > > Previous suggestions from this forum has suggested the problem may be with the > host controller? > > The error manifests itself after I have insmod'd usbserial.ko and sierra.ko, > inserted the modem and then send a command to the modem, for > example: 'echo 'AT' > /dev/ttyUSB3'. The kernel reports the following: > > "sierra ttyUSB3: sierra_open: submit urb 1 failed (-12) 4096 > sierra ttyUSB3: sierra_open: submit urb 2 failed (-12) 4096 > sierra ttyUSB3: sierra_open: submit urb 3 failed (-12) 4096 > sierra ttyUSB3: sierra_open: submit urb 4 failed (-12) 4096 > sierra ttyUSB3: sierra_open: submit urb 5 failed (-12) 4096 > sierra ttyUSB3: sierra_open: submit urb 6 failed (-12) 4096 > sierra ttyUSB3: sierra_open: submit urb 7 failed (-12) 4096 > sierra ttyUSB3: sierra_open: submit irq_in urb failed -12 > sierra ttyUSB3: sierra_write - usb_submit_urb(write bulk) failed with status = - > 12 > -bash: echo: write error: Cannot allocate memory" > > On investigation I can trace the failure through as follows: > > 1) sierra.c[]::sierra_open() calls hcd.c::usb_submit_urb() at line 729 > 2) hcd.c::usb_submit_urb() calls oxu210hp-hcd.c::__oxu_urb_enqueue() at line > 1325 > 3) oxu210hp-hcd.c::__oxu_urb_enqueue() calls oxu210hp-hcd.c::qh_urb_transaction > () at line 2845 and returns (-ENOMEM) > 4) oxu210hp-hcd.c::qh_urb_transaction() returns NULL at line 1358 but does not > goto cleanup. > > Can not debug at this point so progress is slow using printk :( > > Any ideas why oxu210hp-hcd.c::qh_urb_transaction() returns NULL when oxu210hp- > hcd.c::__oxu_urb_enqueue() is expecting it to return not zero to return > successfully itself? Because one of the calls to ehci_qtd_alloc(), oxu_buf_alloc(), or ehci_qtd_alloc() is failing to allocate memory. Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html