linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] wl1251: add get_survey callback in order to get channel noise
@ 2010-07-28 19:25 John W. Linville
  2010-07-28 20:36 ` Kalle Valo
  0 siblings, 1 reply; 2+ messages in thread
From: John W. Linville @ 2010-07-28 19:25 UTC (permalink / raw)
  To: linux-wireless; +Cc: Kalle Valo, John W. Linville

Signed-off-by: John W. Linville <linville@tuxdriver.com>
---
The calculation of the noise value looks a bit strange to me, but this
is the same calculation from commit 446cfaa412beef0dd6cb0edf3b4eaed34d824537,
some hopefully it was/is correct (or good enough)...

 drivers/net/wireless/wl12xx/wl1251.h      |    3 +++
 drivers/net/wireless/wl12xx/wl1251_main.c |   17 +++++++++++++++++
 drivers/net/wireless/wl12xx/wl1251_rx.c   |    6 ++++++
 3 files changed, 26 insertions(+), 0 deletions(-)

diff --git a/drivers/net/wireless/wl12xx/wl1251.h b/drivers/net/wireless/wl12xx/wl1251.h
index 4f5f02a..6b942a2 100644
--- a/drivers/net/wireless/wl12xx/wl1251.h
+++ b/drivers/net/wireless/wl12xx/wl1251.h
@@ -381,6 +381,9 @@ struct wl1251 {
 
 	u32 chip_id;
 	char fw_ver[21];
+
+	/* Most recently reported noise in dBm */
+	s8 noise;
 };
 
 int wl1251_plt_start(struct wl1251 *wl);
diff --git a/drivers/net/wireless/wl12xx/wl1251_main.c b/drivers/net/wireless/wl12xx/wl1251_main.c
index 38f72f4..a6d8d1a 100644
--- a/drivers/net/wireless/wl12xx/wl1251_main.c
+++ b/drivers/net/wireless/wl12xx/wl1251_main.c
@@ -1172,6 +1172,22 @@ out:
 	return ret;
 }
 
+static int wl1251_op_get_survey(struct ieee80211_hw *hw, int idx,
+				struct survey_info *survey)
+{
+	struct wl1251 *wl = hw->priv;
+	struct ieee80211_conf *conf = &hw->conf;
+ 
+	if (idx != 0)
+		return -ENOENT;
+ 
+	survey->channel = conf->channel;
+	survey->filled = SURVEY_INFO_NOISE_DBM;
+	survey->noise = wl->noise;
+ 
+	return 0;
+}
+
 /* can't be const, mac80211 writes to this */
 static struct ieee80211_supported_band wl1251_band_2ghz = {
 	.channels = wl1251_channels,
@@ -1193,6 +1209,7 @@ static const struct ieee80211_ops wl1251_ops = {
 	.bss_info_changed = wl1251_op_bss_info_changed,
 	.set_rts_threshold = wl1251_op_set_rts_threshold,
 	.conf_tx = wl1251_op_conf_tx,
+	.get_survey = wl1251_op_get_survey,
 };
 
 static int wl1251_read_eeprom_byte(struct wl1251 *wl, off_t offset, u8 *data)
diff --git a/drivers/net/wireless/wl12xx/wl1251_rx.c b/drivers/net/wireless/wl12xx/wl1251_rx.c
index 8515158..1b6294b 100644
--- a/drivers/net/wireless/wl12xx/wl1251_rx.c
+++ b/drivers/net/wireless/wl12xx/wl1251_rx.c
@@ -74,6 +74,12 @@ static void wl1251_rx_status(struct wl1251 *wl,
 
 	status->signal = desc->rssi;
 
+	/*
+	 * FIXME: guessing that snr needs to be divided by two, otherwise
+	 * the values don't make any sense
+	 */
+	wl->noise = desc->rssi - desc->snr / 2;
+
 	status->freq = ieee80211_channel_to_frequency(desc->channel);
 
 	status->flag |= RX_FLAG_TSFT;
-- 
1.7.1.1


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

* Re: [PATCH] wl1251: add get_survey callback in order to get channel noise
  2010-07-28 19:25 [PATCH] wl1251: add get_survey callback in order to get channel noise John W. Linville
@ 2010-07-28 20:36 ` Kalle Valo
  0 siblings, 0 replies; 2+ messages in thread
From: Kalle Valo @ 2010-07-28 20:36 UTC (permalink / raw)
  To: John W. Linville; +Cc: linux-wireless

On 07/28/2010 10:25 PM, John W. Linville wrote:
> Signed-off-by: John W. Linville <linville@tuxdriver.com>
> ---
> The calculation of the noise value looks a bit strange to me, but this
> is the same calculation from commit 446cfaa412beef0dd6cb0edf3b4eaed34d824537,
> some hopefully it was/is correct (or good enough)...

I never was able to find out proper way to measure noise with wl1251.
The algorithm I came up and included in this patch is most likely
incorrect. But as having support for noise survey doesn't do any harm,
and hopefully we even might motivate someone to fix the algorithm, I
think it's safe to have this patch.

Acked-by: Kalle Valo <kvalo@adurom.com>

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

end of thread, other threads:[~2010-07-28 20:44 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-07-28 19:25 [PATCH] wl1251: add get_survey callback in order to get channel noise John W. Linville
2010-07-28 20:36 ` Kalle Valo

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).