Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 28 Jul 2012 19:36:38 -0700
From:      Adrian Chadd <adrian.chadd@gmail.com>
To:        Kim Culhan <w8hdkim@gmail.com>
Cc:        freebsd-wireless@freebsd.org
Subject:   Re: ath lor
Message-ID:  <CAJ-VmonVdu8QEETKeBF6HOY5DTzxT4OH6z8xJecUGZgmQ58grw@mail.gmail.com>
In-Reply-To: <CAJ-Vmo=GctRSXwy4R7Zt-1a0dS7WhL4K_urAfhyQDF41uxBptA@mail.gmail.com>
References:  <CAKZxVQUcuk=Bw0rBkOLmy1ie%2BZYqn5uNkEndW_sEOH5u-Ef04w@mail.gmail.com> <CAJ-VmomuBC0CFTkDRh8gRVAb080rc8upTif4KDAkeiG5imcoqw@mail.gmail.com> <CAJ-Vmo=ynY_kFxa4id2wu3h5C1OSarOzVJ32G3avFDWHg1dybQ@mail.gmail.com> <CAJ-VmomEvn9MPu-j8TBc9dtUzVyXtpcN-p45ZuHTR8xTDfGJ9Q@mail.gmail.com> <CAJ-Vmo=GctRSXwy4R7Zt-1a0dS7WhL4K_urAfhyQDF41uxBptA@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-VmonVdu8QEETKeBF6HOY5DTzxT4OH6z8xJecUGZgmQ58grw>