diff options
author | Thomas Huehn <thomas@net.t-labs.tu-berlin.de> | 2013-03-04 17:30:02 -0500 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2013-03-06 10:36:07 -0500 |
commit | c8ca8c2f933a516b5f4586d7dc6055b72107f246 (patch) | |
tree | 87a1285588a6dcec2926e804e52fdc4d9bf8fba6 /net/mac80211/rc80211_minstrel.c | |
parent | a512d4b543ea20ec84f712f90a5229ab88a9709c (diff) |
mac80211: merge value scaling macros of minstrel_ht and minstrel
Both minstrel versions use individual ways to scale up integer values
to perform calculations. Merge minstrel_ht's scaling macros into
minstrels header file and use them in both minstrel versions.
Acked-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: Thomas Huehn <thomas@net.t-labs.tu-berlin.de>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/rc80211_minstrel.c')
-rw-r--r-- | net/mac80211/rc80211_minstrel.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/net/mac80211/rc80211_minstrel.c b/net/mac80211/rc80211_minstrel.c index d78f629179c7..c9b990237991 100644 --- a/net/mac80211/rc80211_minstrel.c +++ b/net/mac80211/rc80211_minstrel.c | |||
@@ -86,10 +86,8 @@ minstrel_update_stats(struct minstrel_priv *mp, struct minstrel_sta_info *mi) | |||
86 | if (!usecs) | 86 | if (!usecs) |
87 | usecs = 1000000; | 87 | usecs = 1000000; |
88 | 88 | ||
89 | /* To avoid rounding issues, probabilities scale from 0 (0%) | ||
90 | * to 18000 (100%) */ | ||
91 | if (mr->attempts) { | 89 | if (mr->attempts) { |
92 | mr->cur_prob = (mr->success * 18000) / mr->attempts; | 90 | mr->cur_prob = MINSTREL_FRAC(mr->success, mr->attempts); |
93 | mr->succ_hist += mr->success; | 91 | mr->succ_hist += mr->success; |
94 | mr->att_hist += mr->attempts; | 92 | mr->att_hist += mr->attempts; |
95 | mr->probability = minstrel_ewma(mr->probability, | 93 | mr->probability = minstrel_ewma(mr->probability, |
@@ -105,7 +103,8 @@ minstrel_update_stats(struct minstrel_priv *mp, struct minstrel_sta_info *mi) | |||
105 | 103 | ||
106 | /* Sample less often below the 10% chance of success. | 104 | /* Sample less often below the 10% chance of success. |
107 | * Sample less often above the 95% chance of success. */ | 105 | * Sample less often above the 95% chance of success. */ |
108 | if ((mr->probability > 17100) || (mr->probability < 1800)) { | 106 | if (mr->probability > MINSTREL_FRAC(95, 100) || |
107 | mr->probability < MINSTREL_FRAC(10, 100)) { | ||
109 | mr->adjusted_retry_count = mr->retry_count >> 1; | 108 | mr->adjusted_retry_count = mr->retry_count >> 1; |
110 | if (mr->adjusted_retry_count > 2) | 109 | if (mr->adjusted_retry_count > 2) |
111 | mr->adjusted_retry_count = 2; | 110 | mr->adjusted_retry_count = 2; |
@@ -300,7 +299,7 @@ minstrel_get_rate(void *priv, struct ieee80211_sta *sta, | |||
300 | /* If we're not using MRR and the sampling rate already | 299 | /* If we're not using MRR and the sampling rate already |
301 | * has a probability of >95%, we shouldn't be attempting | 300 | * has a probability of >95%, we shouldn't be attempting |
302 | * to use it, as this only wastes precious airtime */ | 301 | * to use it, as this only wastes precious airtime */ |
303 | if (!mrr && sample && (mi->r[ndx].probability > 17100)) | 302 | if (!mrr && sample && (mi->r[ndx].probability > MINSTREL_FRAC(95, 100))) |
304 | ndx = mi->max_tp_rate; | 303 | ndx = mi->max_tp_rate; |
305 | 304 | ||
306 | ar[0].idx = mi->r[ndx].rix; | 305 | ar[0].idx = mi->r[ndx].rix; |