Hi Thomas,
[added batman-adv mailing list to the CC]
On 21/01/14 14:52, Thomas Hühn wrote:
Hi Antonio,
I like you idea of making use of information from different layers to try to enhance wireless communication. It seems reasonable for me to start exporting and further using/experimenting with that rate, where minstrel estimates the maximum throughput. But on closer inspection, it might also be of certain interest (maybe not batman in particular) to use the most robust rate, which both Minstrels version do also have an estimate. So what do you think about exporting the whole sorted rate table structure (struct ieee80211_sta_rates) instead of extracting the single max thr. rate ?
Thank you very much for your feedback!
I like your idea about opening this change a bit more and allow other modules to use the same information.
However the ieee80211_sta_rates structure you mentioned is mac80211 private and it does not carry any data about the probability of success (which is a Minstrel specific value and for this reason it is not present in this ieee80211 generic structure).
Assuming that we want to keep the new exported data Minstrel specific (we really want this), we could extend the station_info to carry a *set* of "cfg80211_minstrel_rate_info" objects (new struct introduced within this patchset) which could represent the sorted rate table.
However I am not sure how this table can be used once exported, since the only thing having a meaning is the order. Other than that I don't see what a module could do with it (other than choosing the first entry).
Instead of exporting the whole rate table, should we only report those rates that have a particular meaning for Minstrel? I think Minstrel is the only component having enough information about which rate is meaningful and which not. What do you think?
This could be done by exporting several cfg80211_minstrel_rate_info, e.g. - max_throughput_rate - most_robust_rate - ...
(I used random names here)
Cheers,
Greetings Thomas
On 21.01.2014, at 12:09, Antonio Quartulli antonio@meshcoding.com wrote:
Hello list,
we (as batman-adv developers) are currently working on a new version of the our routing protocol which is going to use some Minstrel internal information to compute the metric. In particular I am interested in the currently selected bitrate (which Minstrel selected because it "maximises the throughput") and it's probability of success.
To achieve so I am proposing here a change to the get_station API. This change is supposed to export the needed information only if the current driver is using the Minstrel (or Minstrel HT) RC algorithm.
Patch 1 introduced the change in get_station() Patch 2 add a new rate_control API used to query the RC algorithm and retrieve the information. Then it fills the sinfo object. Patch 3 and 4 are implementing this rate_control API in minstrel and minstrel_ht Patch 5 exports the get_station API in order to allow other modules to use it.
I already had a discussion with Johannes about this patch being not generic enough and really focussed on Minstrel only.
However this change will just introduce a new exported capability in the station_info object: if the driver does not support it (e.g. it does not use Minstrel) then we simply won't have this information (like we already do with other capabilities).
Cheers,
p.s. I may need to add some more kerneldoc
Antonio Quartulli (5): cfg80211: export minstrel best rate information through get_station() mac80211: export minstrel best rate information in set_sta_info() mac80211: minstrel - implement get_minstrel_best_rate() API mac80211: minstrel_ht - implement get_minstrel_best_rate() API cfg80211: implement cfg80211_get_station
include/net/cfg80211.h | 28 ++++++++++++++++++++++++++++ include/net/mac80211.h | 15 +++++++++++++++ net/mac80211/cfg.c | 15 +++++++++++++++ net/mac80211/rc80211_minstrel.c | 12 ++++++++++++ net/mac80211/rc80211_minstrel_ht.c | 30 ++++++++++++++++++++++++++++++ net/wireless/nl80211.c | 22 ++++++++++++++++++++++ 6 files changed, 122 insertions(+)
-- 1.8.5.3
-- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html