ath9k: set 5/10 MHz supported channels and fix bitrate

Signed-off-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de>
Signed-off-by: Mathias Kretschmer <mathias.kretschmer@fokus.fraunhofer.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
Simon Wunderlich 2013-08-14 08:01:33 +02:00 committed by John W. Linville
parent f819c0e729
commit 67a5533015
2 changed files with 21 additions and 8 deletions

View File

@ -146,14 +146,22 @@ static struct ieee80211_rate ath9k_legacy_rates[] = {
RATE(20, 0x1a, IEEE80211_RATE_SHORT_PREAMBLE), RATE(20, 0x1a, IEEE80211_RATE_SHORT_PREAMBLE),
RATE(55, 0x19, IEEE80211_RATE_SHORT_PREAMBLE), RATE(55, 0x19, IEEE80211_RATE_SHORT_PREAMBLE),
RATE(110, 0x18, IEEE80211_RATE_SHORT_PREAMBLE), RATE(110, 0x18, IEEE80211_RATE_SHORT_PREAMBLE),
RATE(60, 0x0b, 0), RATE(60, 0x0b, (IEEE80211_RATE_SUPPORTS_5MHZ |
RATE(90, 0x0f, 0), IEEE80211_RATE_SUPPORTS_10MHZ)),
RATE(120, 0x0a, 0), RATE(90, 0x0f, (IEEE80211_RATE_SUPPORTS_5MHZ |
RATE(180, 0x0e, 0), IEEE80211_RATE_SUPPORTS_10MHZ)),
RATE(240, 0x09, 0), RATE(120, 0x0a, (IEEE80211_RATE_SUPPORTS_5MHZ |
RATE(360, 0x0d, 0), IEEE80211_RATE_SUPPORTS_10MHZ)),
RATE(480, 0x08, 0), RATE(180, 0x0e, (IEEE80211_RATE_SUPPORTS_5MHZ |
RATE(540, 0x0c, 0), IEEE80211_RATE_SUPPORTS_10MHZ)),
RATE(240, 0x09, (IEEE80211_RATE_SUPPORTS_5MHZ |
IEEE80211_RATE_SUPPORTS_10MHZ)),
RATE(360, 0x0d, (IEEE80211_RATE_SUPPORTS_5MHZ |
IEEE80211_RATE_SUPPORTS_10MHZ)),
RATE(480, 0x08, (IEEE80211_RATE_SUPPORTS_5MHZ |
IEEE80211_RATE_SUPPORTS_10MHZ)),
RATE(540, 0x0c, (IEEE80211_RATE_SUPPORTS_5MHZ |
IEEE80211_RATE_SUPPORTS_10MHZ)),
}; };
#ifdef CONFIG_MAC80211_LEDS #ifdef CONFIG_MAC80211_LEDS

View File

@ -1282,9 +1282,14 @@ static void ath_rate_init(void *priv, struct ieee80211_supported_band *sband,
struct ath_common *common = ath9k_hw_common(sc->sc_ah); struct ath_common *common = ath9k_hw_common(sc->sc_ah);
struct ath_rate_priv *ath_rc_priv = priv_sta; struct ath_rate_priv *ath_rc_priv = priv_sta;
int i, j = 0; int i, j = 0;
u32 rate_flags = ieee80211_chandef_rate_flags(&sc->hw->conf.chandef);
for (i = 0; i < sband->n_bitrates; i++) { for (i = 0; i < sband->n_bitrates; i++) {
if (sta->supp_rates[sband->band] & BIT(i)) { if (sta->supp_rates[sband->band] & BIT(i)) {
if ((rate_flags & sband->bitrates[i].flags)
!= rate_flags)
continue;
ath_rc_priv->neg_rates.rs_rates[j] ath_rc_priv->neg_rates.rs_rates[j]
= (sband->bitrates[i].bitrate * 2) / 10; = (sband->bitrates[i].bitrate * 2) / 10;
j++; j++;