On Thu, Nov 03, 2005 at 10:06:53AM +0200, Anssi Kolehmainen wrote:
> Pavel Roskin wrote:
>
> >Hello!
> >
> >On Sat, 2005-10-29 at 20:51 +0300, Anssi Kolehmainen wrote:
> >
> >
> >>Hi,
> >>
> >>I just upgraded to kernel 2.6.14 and noticed that orinoco-usb spewed few
> >>error messages about not being able to download firmware etc.
> >>Orinoco-usb was not working at all. Then I rememberd few "badness in
> >>usb_unlink_urb()" error messages from 2.6.13 and decided to change
> >>usb_unlink_urb() to usb_kill_urb(). With attached patch orinoco-usb
> >>works with 2.6.14 (at least it seems so after 10 minutes of quick
> >>testing). My card is Compaq Wireless LAN W200 in Compaq Evo N620c laptop.
> >
> >It looks like your patch keeps some instances of usb_unlink_urb(). Why?
> >
> >
> There is one call to usb_unlink_urb() in ezusb_request_timerfn(). When I
> replaced that with usb_kill_urb() it resulted in system freezing where
> orinoco-usb was loaded. Only way to make system happy again was to
> unplug wireless card (press Fn+F2 on keyboard which has same effect as
> removing usb device). After that system was a bit mess. My PCMCIA Wlan
> card (Zyxel G100, Prism54g) stopped working (couldn't load firmware or
> something weird). After reboot (with orinoco wlan card disconnected)
> everything was working fine.
>
> Actual reason might be that usb_kill_urb() waits until it's done and for
> some reason urb never gets done. usb_unlink_urb() on the other hand is
> asynchronous and returns immediately. It also might be that I made some
> other errors while testing which resulted in hangup but since everything
> was working fine with that usb_unlink_urb() in ezusb_request_timerfn() I
> felt there was no need for further experiments.
Yeah.. making random changes 'cos they seem to make it stop crashing
without a clear mental model of why it's correct really isn't a great
way to program. Unfortunately, of course, the orinco_usb driver is
already full of crap like this, which is exactly why it hasn't been
merged.
> I would like to see orinoco-usb getting into main kernel someday and I
> could do some coding to make that happen but with no linux kernel
> programming experience it's rather hard to know what to do.
It's my opinion that the orinoco_usb driver needs some fairly
fundamental restructuring in order to me mergable. At the moment it's
a hack on top of the general orinoco driver, and it's not a good fit.
THe differences with the USB device are sufficient that I think it
really needs to be a more separate driver - sharing substantial
library routines with other orinoco devices, but having an essentially
separate Rx and Tx path.
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/people/dgibson
-------------------------------------------------------
SF.Net email is sponsored by:
Tame your development challenges with Apache's Geronimo App Server. Download
it for free - -and be entered to win a 42" plasma tv or your very own
Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php
|