2013-08-27 14:59:51

by Lorenzo Bianconi

[permalink] [raw]
Subject: [PATCH 0/2] mac80211: fix minstrel fixed_rate management

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



2013-08-30 11:06:56

by Felix Fietkau

[permalink] [raw]
Subject: Re: [PATCH 0/2] mac80211: fix minstrel fixed_rate management

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]>


2013-08-30 11:29:53

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH 0/2] mac80211: fix minstrel fixed_rate management

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


2013-08-27 14:59:52

by Lorenzo Bianconi

[permalink] [raw]
Subject: [PATCH 1/2] mac80211: add fixed_rate management to minstrel rc

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


2013-08-27 14:59:54

by Lorenzo Bianconi

[permalink] [raw]
Subject: [PATCH 2/2] mac80211: do not override fixed_rate_idx in minstrel_ht_update_stats

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