From: Bernhard Urban <lewurm@gmail.com>
To: Felix Fietkau <nbd@openwrt.org>
Cc: linux-wireless@vger.kernel.org, ath9k-devel@lists.ath9k.org,
c_manoha@qca.qualcomm.com, Sujith.Manoharan@atheros.com,
linville@tuxdriver.com, markus@indoo.rs, m.sujith@gmail.com
Subject: Re: [PATCH] ath9k_htc: update RSSI values only when the device is associated
Date: Sat, 17 Nov 2012 20:12:44 +0100 [thread overview]
Message-ID: <20121117191244.GA18782@phenom> (raw)
In-Reply-To: <509E1B47.3050107@openwrt.org>
Thanks for the reviews!
On Sat, Nov 10, 2012 at 9:42 AM, Sujith <m.sujith@gmail.com> wrote:
> Looks good, but a cleaner fix would be to update the RSSI only for
> beacons that are destined for the station.
You mean like in recv.c? There's a `is_mybeacon' field, which is computed in
`ath_rx_tasklet(...)' and used in `ath9k_process_rssi(...)'.
Adding this check to the if-guard changes nothing at the result, so I think
it's fine if you consider it as cleaner. See attached patch.
Btw, could you please elaborate what `is_mybeacon' represents?
On Sat, Nov 10, 2012 at 10:15 AM, Felix Fietkau <nbd@openwrt.org> wrote:
> Please check how RSSI is handled in ath9k, and use that as reference.
> The per-packet RSSI should not be set from some internal average, it
> should contain the real RSSI value of the packet. This change disables
> RSSI reporting for anything but station mode, which is not a good idea.
Replacing
if (priv->num_sta_assoc_vif != 0)
with
if (priv->ah->opmode == NL80211_IFTYPE_STATION)
works out well (which makes sense to me). However, adding
`&& priv->ah->opmode == NL80211_IFTYPE_ADHOC' (like in ath9k/recv.c) produces
bad results like before. I don't understand the effect, as my device is always
in "managed mode" according to `iw wlan0 info'. I'm right by assuming "managed
mode" is the same as NL80211_IFTYPE_STATION?
Also, I don't know what you mean with "some internal average". Can you please
elaborate that?
Thanks for your help,
Bernhard
>From fc14c46ce75044485229be5bb12682a8fffcf178 Mon Sep 17 00:00:00 2001
From: Bernhard Urban <lewurm@gmail.com>
Date: Sat, 17 Nov 2012 00:22:16 +0100
Subject: [PATCH] ath9k_htc: update RSSI values only when the device is
associated
add an if-guard, otherwise iw(8) reports weird signal strengths.
The behaviour was fine before this commit:
7c277349ecbd66e19fad3d949fa6ef6c131a3b62
This patch is therefore a partially revert of it.
Tested with "TP-Link TL-WN722N"
Thanks to indoo.rs http://indoo.rs/ for sponsoring
Reported-by: Markus Krainz <markus@indoo.rs>
Tested-by: Markus Krainz <markus@indoo.rs>
Signed-off-by: Bernhard Urban <lewurm@gmail.com>
---
drivers/net/wireless/ath/ath9k/htc.h | 1 +
drivers/net/wireless/ath/ath9k/htc_drv_txrx.c | 29 +++++++++++++++----------
2 files changed, 19 insertions(+), 11 deletions(-)
diff --git a/drivers/net/wireless/ath/ath9k/htc.h b/drivers/net/wireless/ath/ath9k/htc.h
index 936e920..00ebf1c 100644
--- a/drivers/net/wireless/ath/ath9k/htc.h
+++ b/drivers/net/wireless/ath/ath9k/htc.h
@@ -22,6 +22,7 @@
#include <linux/firmware.h>
#include <linux/skbuff.h>
#include <linux/netdevice.h>
+#include <linux/etherdevice.h>
#include <linux/leds.h>
#include <linux/slab.h>
#include <net/mac80211.h>
diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c b/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c
index 47e61d0..8b4da3d 100644
--- a/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c
+++ b/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c
@@ -969,6 +969,7 @@ static bool ath9k_rx_prepare(struct ath9k_htc_priv *priv,
int hdrlen, padpos, padsize;
int last_rssi = ATH_RSSI_DUMMY_MARKER;
__le16 fc;
+ u8 is_mybeacon;
if (skb->len < HTC_RX_FRAME_HEADER_SIZE) {
ath_err(common, "Corrupted RX frame, dropping (len: %d)\n",
@@ -1060,22 +1061,28 @@ static bool ath9k_rx_prepare(struct ath9k_htc_priv *priv,
ath9k_process_rate(hw, rx_status, rxbuf->rxstatus.rs_rate,
rxbuf->rxstatus.rs_flags);
- if (rxbuf->rxstatus.rs_rssi != ATH9K_RSSI_BAD &&
- !rxbuf->rxstatus.rs_moreaggr)
- ATH_RSSI_LPF(priv->rx.last_rssi,
- rxbuf->rxstatus.rs_rssi);
+ is_mybeacon = ieee80211_is_beacon(fc) &&
+ !is_zero_ether_addr(common->curbssid) &&
+ ether_addr_equal(hdr->addr3, common->curbssid);
- last_rssi = priv->rx.last_rssi;
+ if (is_mybeacon && priv->ah->opmode == NL80211_IFTYPE_STATION) {
+ if (rxbuf->rxstatus.rs_rssi != ATH9K_RSSI_BAD &&
+ !rxbuf->rxstatus.rs_moreaggr)
+ ATH_RSSI_LPF(priv->rx.last_rssi,
+ rxbuf->rxstatus.rs_rssi);
- if (likely(last_rssi != ATH_RSSI_DUMMY_MARKER))
- rxbuf->rxstatus.rs_rssi = ATH_EP_RND(last_rssi,
- ATH_RSSI_EP_MULTIPLIER);
+ last_rssi = priv->rx.last_rssi;
- if (rxbuf->rxstatus.rs_rssi < 0)
- rxbuf->rxstatus.rs_rssi = 0;
+ if (likely(last_rssi != ATH_RSSI_DUMMY_MARKER)) {
+ s8 rssi = ATH_EP_RND(last_rssi, ATH_RSSI_EP_MULTIPLIER);
+ rxbuf->rxstatus.rs_rssi = rssi;
+ }
+
+ if (rxbuf->rxstatus.rs_rssi < 0)
+ rxbuf->rxstatus.rs_rssi = 0;
- if (ieee80211_is_beacon(fc))
priv->ah->stats.avgbrssi = rxbuf->rxstatus.rs_rssi;
+ }
rx_status->mactime = be64_to_cpu(rxbuf->rxstatus.rs_tstamp);
rx_status->band = hw->conf.channel->band;
--
1.7.9.5
next prev parent reply other threads:[~2012-11-17 19:12 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-09 17:09 [PATCH] ath9k_htc: update RSSI values only when the device is associated Bernhard Urban
2012-11-10 8:42 ` Sujith
2012-11-10 9:15 ` Felix Fietkau
2012-11-17 19:12 ` Bernhard Urban [this message]
-- strict thread matches above, loose matches on Subject: below --
2012-12-01 20:21 Bernhard Urban
2012-12-01 20:26 ` Bernhard Urban
2012-12-03 6:41 ` Mohammed Shafi
2012-12-05 22:13 ` Bernhard Urban
2013-02-01 12:50 Bernhard Urban
2013-02-05 22:05 ` Felix Fietkau
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20121117191244.GA18782@phenom \
--to=lewurm@gmail.com \
--cc=Sujith.Manoharan@atheros.com \
--cc=ath9k-devel@lists.ath9k.org \
--cc=c_manoha@qca.qualcomm.com \
--cc=linux-wireless@vger.kernel.org \
--cc=linville@tuxdriver.com \
--cc=m.sujith@gmail.com \
--cc=markus@indoo.rs \
--cc=nbd@openwrt.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).