linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC] ath9k: optimize rate control statistics
@ 2011-08-08 15:17 Mohammed Shafi Shajakhan
  2011-08-09 15:51 ` mohammed
  0 siblings, 1 reply; 2+ messages in thread
From: Mohammed Shafi Shajakhan @ 2011-08-08 15:17 UTC (permalink / raw)
  To: linville
  Cc: linux-wireless, rodrigue, senthilb, Mohammed Shafi Shajakhan,
	Vasanthakumar Thiagarajan

From: Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>

for ease of debugging, the optimization is done such that the rate
control stats are shown only for rate's that might be possibly used.
for instance if static HT20 is configured, showing HT40 rate control
stats is unnecessary. for dynamic HT40/HT20 i had made it such that the
stats will be displayed till HT40. double streams/ triple usage was
also considered. did some basic testing.

Cc: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Cc: "Balasubramanian, senthilkumar" <senthilb@qca.qualcomm.com>
Signed-off-by: Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>
---
 drivers/net/wireless/ath/ath9k/rc.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/rc.c b/drivers/net/wireless/ath/ath9k/rc.c
index c04a6c3..f964473 100644
--- a/drivers/net/wireless/ath/ath9k/rc.c
+++ b/drivers/net/wireless/ath/ath9k/rc.c
@@ -1478,13 +1478,15 @@ static ssize_t read_file_rcstat(struct file *file, char __user *user_buf,
 	struct ath_rate_priv *rc = file->private_data;
 	char *buf;
 	unsigned int len = 0, max;
-	int i = 0;
+	u8 i = 0;
+	static u8 max_rate_table_size;
 	ssize_t retval;
 
 	if (rc->rate_table == NULL)
 		return 0;
+	max_rate_table_size = max(max_rate_table_size, rc->rate_table_size);
 
-	max = 80 + rc->rate_table->rate_cnt * 1024 + 1;
+	max = 80 + max_rate_table_size * 1024 + 1;
 	buf = kmalloc(max, GFP_KERNEL);
 	if (buf == NULL)
 		return -ENOMEM;
@@ -1494,7 +1496,7 @@ static ssize_t read_file_rcstat(struct file *file, char __user *user_buf,
 		       "HT", "MCS", "Rate",
 		       "Success", "Retries", "XRetries", "PER");
 
-	for (i = 0; i < rc->rate_table->rate_cnt; i++) {
+	for (i = 0; i < max_rate_table_size; i++) {
 		u32 ratekbps = rc->rate_table->info[i].ratekbps;
 		struct ath_rc_stats *stats = &rc->rcstats[i];
 		char mcs[5];
-- 
1.7.0.4


^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2011-08-09 15:52 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-08-08 15:17 [RFC] ath9k: optimize rate control statistics Mohammed Shafi Shajakhan
2011-08-09 15:51 ` mohammed

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).