On 2012-11-09 6:09 PM, Bernhard Urban wrote: > 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@xxxxxxxx> > Tested-by: Markus Krainz <markus@xxxxxxxx> > Signed-off-by: Bernhard Urban <lewurm@xxxxxxxxx> > --- > drivers/net/wireless/ath/ath9k/htc_drv_txrx.c | 27 ++++++++++++++----------- > 1 file changed, 15 insertions(+), 12 deletions(-) > > diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c b/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c > index 47e61d0..d0d329c 100644 > --- a/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c > +++ b/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c > @@ -1060,22 +1060,25 @@ 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); > + if (priv->num_sta_assoc_vif != 0) { > + if (rxbuf->rxstatus.rs_rssi != ATH9K_RSSI_BAD && > + !rxbuf->rxstatus.rs_moreaggr) > + ATH_RSSI_LPF(priv->rx.last_rssi, > + rxbuf->rxstatus.rs_rssi); > > - last_rssi = priv->rx.last_rssi; > + last_rssi = priv->rx.last_rssi; > > - if (likely(last_rssi != ATH_RSSI_DUMMY_MARKER)) > - rxbuf->rxstatus.rs_rssi = ATH_EP_RND(last_rssi, > - ATH_RSSI_EP_MULTIPLIER); > + 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 (rxbuf->rxstatus.rs_rssi < 0) > + rxbuf->rxstatus.rs_rssi = 0; > > - if (ieee80211_is_beacon(fc)) > - priv->ah->stats.avgbrssi = rxbuf->rxstatus.rs_rssi; > + 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; > 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. - 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