All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC] design discussion: Collecting information for (non-peer) stations
@ 2013-02-15 17:19 Simon Wunderlich
  2013-02-18 14:30 ` Johannes Berg
                   ` (3 more replies)
  0 siblings, 4 replies; 30+ messages in thread
From: Simon Wunderlich @ 2013-02-15 17:19 UTC (permalink / raw)
  To: linux-wireless
  Cc: Thomas Pedersen, johannes, antonio, marek, Mathias Kretschmer

[-- Attachment #1: Type: text/plain, Size: 2875 bytes --]

Hello wireless folks,

Mathias Kretschmer and me would like to bring another new feature to the kernel:
Collecting information for (non-peer) stations. As far as I know, at least
Antonio and Thomas are interested in a similar feature as well, and it seems
Antonio has already prepared some code. I'd like to present our ideas and
requirements to this feature and would like to ask Antonio and Thomas, and everyone
else interested in this feature, to do the same. Then we can hopefully come up
with a design which is acceptable for upstream kernels and useful for everyone.

We would like to gather statistics for all peers, both connected and not connected
to our current IBSS. We do the same in userspace currently using a monitor interface,
but reading every packet from this monitor interface has a huge thoughput limitation
on our routers, and is therefore not acceptable for productive use. The statistics are
then used to evaluate link quality and make some higher level decisions.

The statistics we are interested in are, per station (identified by sender MAC address), for
both peer and non-peer stations:
 * RSSI (*)
 * sequence number gap size (*) - monitors the sequence number of a 80211 packet, per queue
 * bad frame count (badFCS and such)
 * total frame count
 * bytes received
 * last seen - timestamp

Fields marked with (*) should capture min, max, avg, count, sum, sum_square. Other
statistics (stddev, rms) can then be calculated in userspace using floating point numbers.
The other fields can be normal counters. Some of the fields are already accesible for connected
peers (like RSSI, last seen -> iw station dump), some of them are new, and none of them are currently
available for non-peer stations. We probably don't need all of them integrated
in mainline as they might be only interesting for us, but this is just to give you an idea.

Regarding the kernel interface, we don't have any requirements, from nl80211 to debugfs, everything
would be fine. We will access the data with a custom program.

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. :)

Cheers,
        Simon

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 30+ messages in thread

end of thread, other threads:[~2013-03-25 14:43 UTC | newest]

Thread overview: 30+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-02-15 17:19 [RFC] design discussion: Collecting information for (non-peer) stations Simon Wunderlich
2013-02-18 14:30 ` Johannes Berg
2013-02-18 14:33   ` Johannes Berg
2013-02-18 14:46     ` Antonio Quartulli
2013-02-18 15:29       ` Johannes Berg
2013-02-18 15:38         ` Antonio Quartulli
2013-02-18 15:43           ` Johannes Berg
2013-02-18 15:49             ` Antonio Quartulli
2013-02-18 15:58               ` Johannes Berg
2013-02-18 16:07                 ` Antonio Quartulli
2013-02-18 16:51                   ` Johannes Berg
2013-02-18 19:36                     ` Mathias Kretschmer
2013-02-20 17:19                     ` Simon Wunderlich
2013-02-20 19:10                       ` Thomas Pedersen
2013-02-21 17:19                         ` Simon Wunderlich
2013-02-19  9:32 ` Thomas Hühn
2013-02-20 17:49   ` Simon Wunderlich
2013-02-20 18:04   ` Mathias Kretschmer
2013-02-22 10:07 ` Zefir Kurtisi
2013-02-22 11:43   ` Simon Wunderlich
2013-02-22 12:34     ` Zefir Kurtisi
2013-02-22 16:21 ` Felix Fietkau
2013-02-22 16:36   ` Antonio Quartulli
2013-02-22 17:03     ` Felix Fietkau
2013-02-22 17:42       ` Adrian Chadd
2013-02-25 10:28         ` Simon Wunderlich
2013-03-08 14:13           ` Simon Wunderlich
2013-03-11 12:01             ` Zefir Kurtisi
2013-03-25 14:43               ` Simon Wunderlich
2013-02-22 17:42       ` Thomas Pedersen

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.