ath lor

Adrian Chadd adrian.chadd at gmail.com
Sun Jul 29 02:36:38 UTC 2012


Hm, if someone's up for a bit of coding, here's my suggestIon:

* create an iterator struct which just contains an array of
ieee80211_node entries;
* write an iterator function that _just_ populates that iterator
struct with ieee80211 node entries, but after having locked them;
* then, once the call to ieee80211_iterate_node() is done, the
iterator struct will have a list of nodes to iterate over;
* then just call the original callback over each member of that
iterator struct node array, derefing nodes as you go along.

That avoids calling any callbacks with the iterator node table lock held.

It's dirty and I would prefer the use of something more modern, like
transactional memory or generation counts, but I'd really like this
bug squished so kim and others can continue hacking/testing this
stuff. It'd also eliminate a rather annoying LOR from the TODO list.

So, the hard bit is done. Can someone please do the easy bit for me? :)



Adrian


More information about the freebsd-wireless mailing list