* ATH9K Bug fixes @ 2009-06-17 4:27 Senthil Balasubramanian 2009-06-17 4:27 ` [PATCH 1/1] ath9k: Handle different TX and RX streams properly Senthil Balasubramanian 2009-06-17 19:00 ` ATH9K Bug fixes John W. Linville 0 siblings, 2 replies; 4+ messages in thread From: Senthil Balasubramanian @ 2009-06-17 4:27 UTC (permalink / raw) To: linville; +Cc: Jouni.Malinen, Luis.Rodriguez, linux-wireless This series address issues with Atheros hardware that supports different TX and RX streams and also bogus RSSI report from hardware. Senthil ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 1/1] ath9k: Handle different TX and RX streams properly. 2009-06-17 4:27 ATH9K Bug fixes Senthil Balasubramanian @ 2009-06-17 4:27 ` Senthil Balasubramanian 2009-06-17 4:27 ` [PATCH 2/2] ath9k: Fix bogus RSSI report from Hardware during RX Senthil Balasubramanian 2009-06-17 19:00 ` ATH9K Bug fixes John W. Linville 1 sibling, 1 reply; 4+ messages in thread From: Senthil Balasubramanian @ 2009-06-17 4:27 UTC (permalink / raw) To: linville Cc: Jouni.Malinen, Luis.Rodriguez, linux-wireless, Senthil Balasubramanian This patch fixes an issue when the TX and RX streams are different. Signed-off-by: Senthil Balasubramanian <senthilkumar@atheros.com> --- drivers/net/wireless/ath/ath9k/main.c | 26 ++++++++++++++------------ 1 files changed, 14 insertions(+), 12 deletions(-) diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c index 2ebd0ed..ebe559c 100644 --- a/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c @@ -874,6 +874,7 @@ static void setup_ht_cap(struct ath_softc *sc, { #define ATH9K_HT_CAP_MAXRXAMPDU_65536 0x3 /* 2 ^ 16 */ #define ATH9K_HT_CAP_MPDUDENSITY_8 0x6 /* 8 usec */ + u8 tx_streams, rx_streams; ht_info->ht_supported = true; ht_info->cap = IEEE80211_HT_CAP_SUP_WIDTH_20_40 | @@ -886,21 +887,22 @@ static void setup_ht_cap(struct ath_softc *sc, /* set up supported mcs set */ memset(&ht_info->mcs, 0, sizeof(ht_info->mcs)); + tx_streams = !(sc->tx_chainmask & (sc->tx_chainmask - 1)) ? 1 : 2; + rx_streams = !(sc->rx_chainmask & (sc->rx_chainmask - 1)) ? 1 : 2; - switch(sc->rx_chainmask) { - case 1: - ht_info->mcs.rx_mask[0] = 0xff; - break; - case 3: - case 5: - case 7: - default: - ht_info->mcs.rx_mask[0] = 0xff; - ht_info->mcs.rx_mask[1] = 0xff; - break; + if (tx_streams != rx_streams) { + DPRINTF(sc, ATH_DBG_CONFIG, "TX streams %d, RX streams: %d\n", + tx_streams, rx_streams); + ht_info->mcs.tx_params |= IEEE80211_HT_MCS_TX_RX_DIFF; + ht_info->mcs.tx_params |= ((tx_streams - 1) << + IEEE80211_HT_MCS_TX_MAX_STREAMS_SHIFT); } - ht_info->mcs.tx_params = IEEE80211_HT_MCS_TX_DEFINED; + ht_info->mcs.rx_mask[0] = 0xff; + if (rx_streams >= 2) + ht_info->mcs.rx_mask[1] = 0xff; + + ht_info->mcs.tx_params |= IEEE80211_HT_MCS_TX_DEFINED; } static void ath9k_bss_assoc_info(struct ath_softc *sc, -- 1.6.0.4 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/2] ath9k: Fix bogus RSSI report from Hardware during RX. 2009-06-17 4:27 ` [PATCH 1/1] ath9k: Handle different TX and RX streams properly Senthil Balasubramanian @ 2009-06-17 4:27 ` Senthil Balasubramanian 0 siblings, 0 replies; 4+ messages in thread From: Senthil Balasubramanian @ 2009-06-17 4:27 UTC (permalink / raw) To: linville Cc: Jouni.Malinen, Luis.Rodriguez, linux-wireless, Senthil Balasubramanian The hardware may report errorneous RSSI in some cases. Detect it and don't use them for reporting the signal strength to the stack. Signed-off-by: Senthil Balasubramanian <senthilkumar@atheros.com> --- drivers/net/wireless/ath/ath9k/ath9k.h | 5 +++-- drivers/net/wireless/ath/ath9k/recv.c | 21 +++++++++++++-------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/drivers/net/wireless/ath/ath9k/ath9k.h b/drivers/net/wireless/ath/ath9k/ath9k.h index 3939396..93245dd 100644 --- a/drivers/net/wireless/ath/ath9k/ath9k.h +++ b/drivers/net/wireless/ath/ath9k/ath9k.h @@ -300,8 +300,9 @@ struct ath_tx_control { #define ATH_TX_XRETRY 0x02 #define ATH_TX_BAR 0x04 -#define ATH_RSSI_LPF_LEN 10 -#define RSSI_LPF_THRESHOLD -20 +#define ATH_RSSI_LPF_LEN 10 +#define RSSI_LPF_THRESHOLD -20 +#define ATH9K_RSSI_BAD 0x80 #define ATH_RSSI_EP_MULTIPLIER (1<<7) #define ATH_EP_MUL(x, mul) ((x) * (mul)) #define ATH_RSSI_IN(x) (ATH_EP_MUL((x), ATH_RSSI_EP_MULTIPLIER)) diff --git a/drivers/net/wireless/ath/ath9k/recv.c b/drivers/net/wireless/ath/ath9k/recv.c index 0f62795..889d0c9 100644 --- a/drivers/net/wireless/ath/ath9k/recv.c +++ b/drivers/net/wireless/ath/ath9k/recv.c @@ -147,6 +147,7 @@ static int ath_rx_prepare(struct sk_buff *skb, struct ath_desc *ds, struct ieee80211_hw *hw; struct ieee80211_sta *sta; struct ath_node *an; + int last_rssi = ATH_RSSI_DUMMY_MARKER; hdr = (struct ieee80211_hdr *)skb->data; @@ -236,17 +237,21 @@ static int ath_rx_prepare(struct sk_buff *skb, struct ath_desc *ds, sta = ieee80211_find_sta(sc->hw, hdr->addr2); if (sta) { an = (struct ath_node *) sta->drv_priv; - ATH_RSSI_LPF(an->last_rssi, ds->ds_rxstat.rs_rssi); - if (likely(an->last_rssi != ATH_RSSI_DUMMY_MARKER)) - ds->ds_rxstat.rs_rssi = ATH_EP_RND(an->last_rssi, - ATH_RSSI_EP_MULTIPLIER); - if (ds->ds_rxstat.rs_rssi < 0) - ds->ds_rxstat.rs_rssi = 0; - else if (ds->ds_rxstat.rs_rssi > 127) - ds->ds_rxstat.rs_rssi = 127; + if (ds->ds_rxstat.rs_rssi != ATH9K_RSSI_BAD && + !ds->ds_rxstat.rs_moreaggr) + ATH_RSSI_LPF(an->last_rssi, ds->ds_rxstat.rs_rssi); + last_rssi = an->last_rssi; } rcu_read_unlock(); + if (likely(last_rssi != ATH_RSSI_DUMMY_MARKER)) + ds->ds_rxstat.rs_rssi = ATH_EP_RND(last_rssi, + ATH_RSSI_EP_MULTIPLIER); + if (ds->ds_rxstat.rs_rssi < 0) + ds->ds_rxstat.rs_rssi = 0; + else if (ds->ds_rxstat.rs_rssi > 127) + ds->ds_rxstat.rs_rssi = 127; + rx_status->mactime = ath_extend_tsf(sc, ds->ds_rxstat.rs_tstamp); rx_status->band = hw->conf.channel->band; rx_status->freq = hw->conf.channel->center_freq; -- 1.6.0.4 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: ATH9K Bug fixes 2009-06-17 4:27 ATH9K Bug fixes Senthil Balasubramanian 2009-06-17 4:27 ` [PATCH 1/1] ath9k: Handle different TX and RX streams properly Senthil Balasubramanian @ 2009-06-17 19:00 ` John W. Linville 1 sibling, 0 replies; 4+ messages in thread From: John W. Linville @ 2009-06-17 19:00 UTC (permalink / raw) To: Senthil Balasubramanian; +Cc: Jouni.Malinen, Luis.Rodriguez, linux-wireless On Wed, Jun 17, 2009 at 09:57:06AM +0530, Senthil Balasubramanian wrote: > This series address issues with Atheros hardware that supports different > TX and RX streams and also bogus RSSI report from hardware. Just as the other series, these changelog entries are too terse and vague. They are particularly terse and vague for consideration as bugfixes for 2.6.31. John -- John W. Linville Someday the world will need a hero, and you linville@tuxdriver.com might be all we have. Be ready. ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2009-06-17 19:15 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2009-06-17 4:27 ATH9K Bug fixes Senthil Balasubramanian 2009-06-17 4:27 ` [PATCH 1/1] ath9k: Handle different TX and RX streams properly Senthil Balasubramanian 2009-06-17 4:27 ` [PATCH 2/2] ath9k: Fix bogus RSSI report from Hardware during RX Senthil Balasubramanian 2009-06-17 19:00 ` ATH9K Bug fixes John W. Linville
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.