Hi,

Linux 2.4.18-4GB Suse distribution ( i checked also redhat and mandrake latest kernels)

I'm writing some driver that inside attach routine i perform a lot of transfers to control pipe
So far so good and all works fine, but some times i get an error :
line 1662 usb-uhci: err("ENXIO %08x, flags %x, urb %p, burb %p",urb->pipe,urb->transfer_flags,urb,queued_urb);

This mean if i understand correctly the code that there is already queued urb on this pipe, so i started to debug
this and found that there is a race between my transfers to control pipe and proc_control
from devio.c
As i understand the race come from usb.c :

/* now that the basic setup is over, add a /proc/bus/usb entry */
usbdevfs_add_device(dev); <---------------- this generate something i didn't find what that cause proc_control

/* find drivers willing to handle this device */
usb_find_drivers(dev); <----------------------- this cause my attach and firmware download mechanism

I can easily avoid it by delaying transfers for a while, it's not a problem, but the options that any user application
can send control request while i holding the device and i can't synchronize with it really bother me.
I can't find any way to avoid this raise.
Any input on subject ? Did i miss something ?

Regards Ilya.



-------------------------------------------------------
This sf.net email is sponsored by:
With Great Power, Comes Great Responsibility Learn to use your power at OSDN's High Performance Computing Channel
http://hpc.devchannel.org/
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to