On Mon, Feb 18, 2013 at 06:33:02 -0800, Johannes Berg wrote: > On Mon, 2013-02-18 at 15:30 +0100, Johannes Berg wrote: > > On Fri, 2013-02-15 at 18:19 +0100, Simon Wunderlich wrote: > > > > > Commands we would like to propose are: > > > * start collecting - this feature should not run by default to avoid bloating memory for users who > > > don't even need this > > > * stop collecting > > > * read - dumps the data for all stations > > > * read + reset - dump the data and reset information for all stations. This should also clean up stations, > > > at least those which are not connected to the BSS, to not bloat the station table. > > > > > > I guess the right position to implement this is mac80211 receive path. Our intended platform > > > is ath9k/ath5k, but that feature should work with any mac80211 driver. We don't care if sta_info > > > structs are allocated or custom structures are used, as long as we can receive a list of stations > > > which includes peer and non-peer stations, along with their statistics. > > > > > > We are looking forward to your thoughts. :) > > > > I would argue that since most of the sta_info struct is used for > > operational stuff, you shouldn't use it, but have a separate struct and > > maybe embed that separate struct in sta_info for its statistics. > > > > I'd also not use the existing nl80211 station APIs since this could be > > an optional feature for many things, and it will likely break existing > > expectations, e.g. that all stations listed by "iw wlan0 station dump" > > are clients connected to an AP interface. > > > > It could be argued that this API then should also not even include the > > connected stations when listing ones, i.e. explicitly be non-connected > > stations. > > Or maybe use the APIs, but require including a special attribute in the > dump/get request message in order to dump/get the/a non-connected > station(s), and only include those attributes that are relevant. In my current implementation I created a "twin hash-table". It contains statistics for *all* the stations (peer and non-peer). I think that instead of embedding this new struct (let's call it sta_stats) into the sta_info one, it would be easier to let them be independent (this is why I created the twin hash) and then create a pointer from the sta_info to the related sta_stats. For the API I think we should create a new nl80211 command. If we simply add a flag to the normal "station dump" command, we would not have all the attributes to print (keep in mind station dump prints attributes that are in sta_info and that are not in sta_stats). Cheers, -- Antonio Quartulli ..each of us alone is worth nothing.. Ernesto "Che" Guevara
Attachment:
pgpCraNBrzFNU.pgp
Description: PGP signature