[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: usb-irda and etrax usb driver or how quicky we oops

> From: owner-dev-etrax@xxxxxxx.com 
> [mailto:owner-dev-etrax@xxxxxxx.com] On Behalf Of Simon Posnjak
> I'm trying to use a irda device connected to the dev board 82 
> over usb. 
> Firstly I connected the device to a PC just to see if it 
> works under linux 
> and it did. Next i correctly compiled the kernel with PPP 
> support, etrax usb 
> driver, irda support and usb-irda driver. I loaded the kernel 
> (image) to the 
> dev board, boot it and the kernel correctly found the device:
> <---			snip				-->
> usb.c: new USB bus registered, assigned bus number 1
> hub.c: USB hub found
> hub.c: 2 ports detected
> <---			snip				-->
> usb-host.c: USB controller running.
> hub.c: new USB device ETRAX 100LX-1, assigned address 2
> rtl8150.c: eth1: rtl8150 is detected
> hub.c: new USB device ETRAX 100LX-2, assigned address 3
> IRDA-USB found at address 3, Vendor: 50f, Product: 180
> Next, I tried to attach the irda0 interface to the irda stack 
> with "irattach 
> irda0 -s", which seamed to succeed - according to the output of dmesg:
> <---                  snip                       --->
> irda_usb_parse_endpoints(), And our endpoints are : in=02, 
> out=01 (64), int=03
> irda_usb_init_qos(), dongle says speed=0x13E, size=0x20, 
> window=0x1, bofs=0x4, 
> turn=0x2
> IrDA: Registered device irda0
> <-----               snip                      --->
> But the first sign of troubles ahead was allready here. The 
> "data" LED on my 
> device did not start to blink, as it should. So the link was 
> probably not on 
> line.
> The final step was to run the pppd to set up the networking. 
> When I started 
> the pppd with correct options (the ones that worked on my PC) 
> the board 
> oopsed.
> The last thing written to the kernel buffer was:
> usb-host.c: urb->timeout specified, ignoring.

That looks ok unless you had not setup the USB driver to
print additional debug messages.
> From what I can gather from the resolved oops (which is 
> attached to this mail) 
> and from comments at the top of the irda-usb.c 
> (drivers/net/irda) the problem 
> seams to be that etrax usb driver incorrectly timeout.

Or rather the ETRAX USB host controller does not timeout at all
since that functionality is not supported in the driver.  However,
missing timeout functionality shouldn't make the driver oops in
the port status changed bottom half.  So that is either the result
of the IRDA device causing some weird state on the bus when the
host controller keeps polling it for traffic for the URB that
should have been removed, or the oops is a separate issue.
Running through the test with additional debug, say USE_DEBUG_RH
and USE_DEBUG_BULK, may give some information.

Regarding timeout functionality, please contact Fredrik Norrman
(fredrik.norrman@xxxxxxx.com) if that is something you'd want

> P.S. I'm using 2.4.26 kernel (usb driver version 1.20), but I 
> also tried with 
> 2.4.22 kernel (usb driver version 1.19), which just blocks 
> the board...

You should definitely use usb-host.c version 1.20, it has a number
of bug fixes.