This couple of patches add/fix fixed_rate management of minstrel/minstrel_ht
rate controller. In particular:
*[PATCH 1/2]: add the capability to use a particular rate to minstrel rate
controller
*[PATCH 2/2]: restore the mcs index configured according to fixed_rate value
since it has been overridden in minstrel_ht_update_stats throughput computation
Regards,
Lorenzo
Lorenzo Bianconi (2):
mac80211: add fixed_rate management to minstrel rc
mac80211: do not override fixed_rate_idx in minstrel_ht_update_stats
net/mac80211/rc80211_minstrel.c | 14 ++++++++++++++
net/mac80211/rc80211_minstrel_ht.c | 23 +++++++++++++----------
2 files changed, 27 insertions(+), 10 deletions(-)
--
1.8.1.2
On 2013-08-27 4:59 PM, Lorenzo Bianconi wrote:
> This couple of patches add/fix fixed_rate management of minstrel/minstrel_ht
> rate controller. In particular:
> *[PATCH 1/2]: add the capability to use a particular rate to minstrel rate
> controller
> *[PATCH 2/2]: restore the mcs index configured according to fixed_rate value
> since it has been overridden in minstrel_ht_update_stats throughput computation
>
> Regards,
> Lorenzo
>
> Lorenzo Bianconi (2):
> mac80211: add fixed_rate management to minstrel rc
> mac80211: do not override fixed_rate_idx in minstrel_ht_update_stats
>
> net/mac80211/rc80211_minstrel.c | 14 ++++++++++++++
> net/mac80211/rc80211_minstrel_ht.c | 23 +++++++++++++----------
> 2 files changed, 27 insertions(+), 10 deletions(-)
Acked-by: Felix Fietkau <[email protected]>
On Fri, 2013-08-30 at 13:06 +0200, Felix Fietkau wrote:
> On 2013-08-27 4:59 PM, Lorenzo Bianconi wrote:
> > This couple of patches add/fix fixed_rate management of minstrel/minstrel_ht
> > rate controller. In particular:
> > *[PATCH 1/2]: add the capability to use a particular rate to minstrel rate
> > controller
> > *[PATCH 2/2]: restore the mcs index configured according to fixed_rate value
> > since it has been overridden in minstrel_ht_update_stats throughput computation
> >
> > Regards,
> > Lorenzo
> >
> > Lorenzo Bianconi (2):
> > mac80211: add fixed_rate management to minstrel rc
> > mac80211: do not override fixed_rate_idx in minstrel_ht_update_stats
> >
> > net/mac80211/rc80211_minstrel.c | 14 ++++++++++++++
> > net/mac80211/rc80211_minstrel_ht.c | 23 +++++++++++++----------
> > 2 files changed, 27 insertions(+), 10 deletions(-)
> Acked-by: Felix Fietkau <[email protected]>
Applied.
johannes
Add the capability to use a fixed modulation rate to minstrel rate controller
Signed-off-by: Lorenzo Bianconi <[email protected]>
---
net/mac80211/rc80211_minstrel.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/net/mac80211/rc80211_minstrel.c b/net/mac80211/rc80211_minstrel.c
index 8b5f7ef..7fa1b36 100644
--- a/net/mac80211/rc80211_minstrel.c
+++ b/net/mac80211/rc80211_minstrel.c
@@ -203,6 +203,15 @@ minstrel_update_stats(struct minstrel_priv *mp, struct minstrel_sta_info *mi)
memcpy(mi->max_tp_rate, tmp_tp_rate, sizeof(mi->max_tp_rate));
mi->max_prob_rate = tmp_prob_rate;
+#ifdef CONFIG_MAC80211_DEBUGFS
+ /* use fixed index if set */
+ if (mp->fixed_rate_idx != -1) {
+ mi->max_tp_rate[0] = mp->fixed_rate_idx;
+ mi->max_tp_rate[1] = mp->fixed_rate_idx;
+ mi->max_prob_rate = mp->fixed_rate_idx;
+ }
+#endif
+
/* Reset update timer */
mi->stats_update = jiffies;
@@ -310,6 +319,11 @@ minstrel_get_rate(void *priv, struct ieee80211_sta *sta,
/* increase sum packet counter */
mi->packet_count++;
+#ifdef CONFIG_MAC80211_DEBUGFS
+ if (mp->fixed_rate_idx != -1)
+ return;
+#endif
+
delta = (mi->packet_count * sampling_ratio / 100) -
(mi->sample_count + mi->sample_deferred / 2);
--
1.8.1.2
Do not override max_tp_rate, max_tp_rate2 and max_prob_rate configured
according to fixed_rate in minstrel_ht_update_stats throughput computation
Signed-off-by: Lorenzo Bianconi <[email protected]>
---
net/mac80211/rc80211_minstrel_ht.c | 23 +++++++++++++----------
1 file changed, 13 insertions(+), 10 deletions(-)
diff --git a/net/mac80211/rc80211_minstrel_ht.c b/net/mac80211/rc80211_minstrel_ht.c
index 339a6b8..597e09a 100644
--- a/net/mac80211/rc80211_minstrel_ht.c
+++ b/net/mac80211/rc80211_minstrel_ht.c
@@ -365,6 +365,14 @@ minstrel_ht_update_stats(struct minstrel_priv *mp, struct minstrel_ht_sta *mi)
}
}
+#ifdef CONFIG_MAC80211_DEBUGFS
+ /* use fixed index if set */
+ if (mp->fixed_rate_idx != -1) {
+ mi->max_tp_rate = mp->fixed_rate_idx;
+ mi->max_tp_rate2 = mp->fixed_rate_idx;
+ mi->max_prob_rate = mp->fixed_rate_idx;
+ }
+#endif
mi->stats_update = jiffies;
}
@@ -775,6 +783,11 @@ minstrel_ht_get_rate(void *priv, struct ieee80211_sta *sta, void *priv_sta,
info->flags |= mi->tx_flags;
minstrel_ht_check_cck_shortpreamble(mp, mi, txrc->short_preamble);
+#ifdef CONFIG_MAC80211_DEBUGFS
+ if (mp->fixed_rate_idx != -1)
+ return;
+#endif
+
/* Don't use EAPOL frames for sampling on non-mrr hw */
if (mp->hw->max_rates == 1 &&
(info->control.flags & IEEE80211_TX_CTRL_PORT_CTRL_PROTO))
@@ -782,16 +795,6 @@ minstrel_ht_get_rate(void *priv, struct ieee80211_sta *sta, void *priv_sta,
else
sample_idx = minstrel_get_sample_rate(mp, mi);
-#ifdef CONFIG_MAC80211_DEBUGFS
- /* use fixed index if set */
- if (mp->fixed_rate_idx != -1) {
- mi->max_tp_rate = mp->fixed_rate_idx;
- mi->max_tp_rate2 = mp->fixed_rate_idx;
- mi->max_prob_rate = mp->fixed_rate_idx;
- sample_idx = -1;
- }
-#endif
-
mi->total_packets++;
/* wraparound */
--
1.8.1.2