On 2011-04-05 8:07 PM, Senthil Balasubramanian wrote:
On Sat, Apr 02, 2011 at 03:39:46AM +0200, Felix Fietkau wrote:
The reported RSSI values are relative to the calibrated noise floor, not
relative to a hardcoded value of -95.
Signed-off-by: Felix Fietkau<nbd@xxxxxxxxxxx>
---
drivers/net/wireless/ath/ath9k/recv.c | 11 ++++++++++-
1 files changed, 10 insertions(+), 1 deletions(-)
diff --git a/drivers/net/wireless/ath/ath9k/recv.c b/drivers/net/wireless/ath/ath9k/recv.c
index a9c3f46..87d96c5 100644
--- a/drivers/net/wireless/ath/ath9k/recv.c
+++ b/drivers/net/wireless/ath/ath9k/recv.c
@@ -959,6 +959,9 @@ static int ath9k_rx_skb_preprocess(struct ath_common *common,
struct ieee80211_rx_status *rx_status,
bool *decrypt_error)
{
+ struct ath_hw *ah = common->ah;
+ int noise;
+
memset(rx_status, 0, sizeof(struct ieee80211_rx_status));
/*
@@ -979,7 +982,13 @@ static int ath9k_rx_skb_preprocess(struct ath_common *common,
rx_status->band = hw->conf.channel->band;
rx_status->freq = hw->conf.channel->center_freq;
- rx_status->signal = ATH_DEFAULT_NOISE_FLOOR + rx_stats->rs_rssi;
In some cases noisefloor values were not reliable and so using
default works for most of the cases. Please refer to our earlier
commit a59b5a5e684652eec035c869ab8911a1689c8f53. Let me see if i
can get more information.
Well, if the average noise floor is at -110 (which is not uncommon with
AR9280 chipsets) then that means the signal strength is off by at least
15 dBm as well.
+
+ if (ah->curchan)
+ noise = ah->curchan->noisefloor;
Even otherwise, noisefloor can be zero sometimes and so it can
return incorrect signal strengths.. Please refer to some samples.
OK, that's easy to fix, we only need to initialize the channel
noisefloor when we switch to the channel. I'll make a patch to fix it
the noisefloor values and then resend this one.
John, please drop this patch but apply the other two in the series.
- Felix
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html