All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] minstrel_ht: fixed rate mode through debugfs
@ 2011-05-20 18:29 Zefir Kurtisi
  0 siblings, 0 replies; only message in thread
From: Zefir Kurtisi @ 2011-05-20 18:29 UTC (permalink / raw)
  To: jdiq123, nbd; +Cc: linux-wireless, johannes, Zefir Kurtisi

Found several threads about fixed rate mode in minstrel_ht for test
environments, but no patches for it.

This patch provides such a mode through debugfs.

---
support fixed rate processing per RC instance
  - write static index to debugfs:ieee80211/phyX/rc/fixed_rate_idx
  - write -1 to enable RC processing again
  - setting will be applied on next update

The current MCS index mapping (with MINSTREL_MAX_STREAMS = 3) is
given by the minstrel_mcs_groups table as:

mode       streams    indices
HT20/LGI
              1        00-07
              2        08-15
              3        16-23
HT20/SGI
              1        24-31
              2        32-39
              3        40-47
HT40/LGI
              1        48-55
              2        56-63
              3        64-71
HT40/SGI
              1        72-79
              2        80-87
              3        88-95

Signed-off-by: Zefir Kurtisi <zefir.kurtisi@neratec.com>
---
 net/mac80211/rc80211_minstrel.c    |    9 +++++++++
 net/mac80211/rc80211_minstrel.h    |   12 ++++++++++++
 net/mac80211/rc80211_minstrel_ht.c |    7 +++++++
 3 files changed, 28 insertions(+), 0 deletions(-)

diff --git a/net/mac80211/rc80211_minstrel.c b/net/mac80211/rc80211_minstrel.c
index 8adac67..58a8955 100644
--- a/net/mac80211/rc80211_minstrel.c
+++ b/net/mac80211/rc80211_minstrel.c
@@ -532,12 +532,21 @@ minstrel_alloc(struct ieee80211_hw *hw, struct dentry *debugfsdir)
 	mp->hw = hw;
 	mp->update_interval = 100;
 
+#ifdef CONFIG_MAC80211_DEBUGFS
+	mp->fixed_rate_idx = (u32) -1;
+	mp->dbg_fixed_rate = debugfs_create_u32("fixed_rate_idx",
+			S_IRUGO | S_IWUGO, debugfsdir, &mp->fixed_rate_idx);
+#endif
+
 	return mp;
 }
 
 static void
 minstrel_free(void *priv)
 {
+#ifdef CONFIG_MAC80211_DEBUGFS
+	debugfs_remove(((struct minstrel_priv *)priv)->dbg_fixed_rate);
+#endif
 	kfree(priv);
 }
 
diff --git a/net/mac80211/rc80211_minstrel.h b/net/mac80211/rc80211_minstrel.h
index 0f5a833..5d278ec 100644
--- a/net/mac80211/rc80211_minstrel.h
+++ b/net/mac80211/rc80211_minstrel.h
@@ -78,6 +78,18 @@ struct minstrel_priv {
 	unsigned int update_interval;
 	unsigned int lookaround_rate;
 	unsigned int lookaround_rate_mrr;
+
+#ifdef CONFIG_MAC80211_DEBUGFS
+	/*
+	 * enable fixed rate processing per RC
+	 *   - write static index to debugfs:ieee80211/phyX/rc/fixed_rate_idx
+	 *   - write -1 to enable RC processing again
+	 *   - setting will be applied on next update
+	 */
+	u32 fixed_rate_idx;
+	struct dentry *dbg_fixed_rate;
+#endif
+
 };
 
 struct minstrel_debugfs_info {
diff --git a/net/mac80211/rc80211_minstrel_ht.c b/net/mac80211/rc80211_minstrel_ht.c
index 333b511..66a1eeb 100644
--- a/net/mac80211/rc80211_minstrel_ht.c
+++ b/net/mac80211/rc80211_minstrel_ht.c
@@ -609,6 +609,13 @@ minstrel_ht_get_rate(void *priv, struct ieee80211_sta *sta, void *priv_sta,
 
 	info->flags |= mi->tx_flags;
 	sample_idx = minstrel_get_sample_rate(mp, mi);
+
+#ifdef CONFIG_MAC80211_DEBUGFS
+	/* use fixed index if set */
+	if (mp->fixed_rate_idx != -1)
+		sample_idx = mp->fixed_rate_idx;
+#endif
+
 	if (sample_idx >= 0) {
 		sample = true;
 		minstrel_ht_set_rate(mp, mi, &ar[0], sample_idx,
-- 
1.7.1

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2011-05-20 18:29 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-05-20 18:29 [PATCH] minstrel_ht: fixed rate mode through debugfs Zefir Kurtisi

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.