On 17 September 2015 at 00:53, Hans Petter Selasky <[email protected]> wrote:
> Hi Adrian,
>
> On 09/17/15 09:43, Adrian Chadd wrote:
>>
>> .. I'm likely going to do exactly that as part of "making" if_rsu do
>> 11n and behave correctly. Right now it does neither.
>
>
> Thank you for helping out with the USB WLAN drivers. Yes, USB requests sleep
> and don't spin until they're done.
>
>>
>> But this is a pretty big design pattern flaw; all of the wifi drivers
>> use the usb library like this and .. well, unless you look under the
>> hood, you don't really realise that serialiser lock is being dropped
>> for you... :(
>
>
> Right. If you need any help test, code or review, let me know.
>
> Not dropping the mutex inside USB sleeping functions would force all USB
> drivers to use SX locks or lower in the locking hierherachy, for
> synchronization, which would not be so good.

Well, that's a big design warning alert. Same as NICs that do
UNLOCK;input;LOCK and chunks of the wifi stack I inherited which do
the same thing - you suddenly can't guarantee consistency in any way.

So, we need some way to serialise management accesses and TX/RX
accesses and we need to use that design pattern for all drivers. Right
now it's "use mutex to serialize hardware state" which people then
break with unlock;stackwork;lock or unlock;sleep;lock. I can't point
to a specific USB device that does it correctly (and most PCI wifi
drivers don't do it either. Sigh.)



-adrian
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to