> pegasus_tx_timeout() unlinks the tx_urb asynchronously, as it must.
> However pegasus_start_xmit() uses this urb without checking
> for the unlinking having been done.


The upper layer will not send any packets downstream (i.e.
call pegasus_start_xmit()) because netif_wake_queue() is called
only from the completion handler.


> This looks suspicious, is there a hidden assumption that the device
> will be reset before another packet is sent ?


nope.  reseting this particular device is not easy with the existing
urb scheduling mechanism and the driver ended up just not doing it
during the normal work process. :-)


                Petko


_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to