aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorLuis R. Rodriguez <lrodriguez@atheros.com>2010-03-11 13:58:35 -0500
committerGreg Kroah-Hartman <gregkh@suse.de>2010-04-01 19:01:21 -0400
commit183407c05503edf20fa80ba1410ca5699bbd41f0 (patch)
tree5ac1e5afcdcce996773bb6e14fd988e08f20ab6d /drivers/net
parent0524bcfa80f1fffb4e1fe18a0a28900869a58a7c (diff)
ath9k: add support for 802.11n bonded out AR2427
This is a backport of of upstream commit: 5ffaf8a361b4c9025963959a744f21d8173c7669 Some single chip family devices are sold in the market with 802.11n bonded out, these have no hardware capability for 02.11n but ath9k can still support them. These are called AR2427. Reported-by: Rolf Leggewie <bugzilla.kernel.org@rolf.leggewie.biz> Tested-by: Bernhard Reiter <ockham@raz.or.at> Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/wireless/ath/ath9k/hw.c7
-rw-r--r--drivers/net/wireless/ath/ath9k/hw.h1
-rw-r--r--drivers/net/wireless/ath/ath9k/main.c4
-rw-r--r--drivers/net/wireless/ath/ath9k/pci.c1
4 files changed, 11 insertions, 2 deletions
diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c
index 7c64aa521a10..66611781dd31 100644
--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
@@ -380,7 +380,6 @@ static void ath9k_hw_init_config(struct ath_hw *ah)
380 ah->config.pcie_clock_req = 0; 380 ah->config.pcie_clock_req = 0;
381 ah->config.pcie_waen = 0; 381 ah->config.pcie_waen = 0;
382 ah->config.analog_shiftreg = 1; 382 ah->config.analog_shiftreg = 1;
383 ah->config.ht_enable = 1;
384 ah->config.ofdm_trig_low = 200; 383 ah->config.ofdm_trig_low = 200;
385 ah->config.ofdm_trig_high = 500; 384 ah->config.ofdm_trig_high = 500;
386 ah->config.cck_trig_high = 200; 385 ah->config.cck_trig_high = 200;
@@ -392,6 +391,11 @@ static void ath9k_hw_init_config(struct ath_hw *ah)
392 ah->config.spurchans[i][1] = AR_NO_SPUR; 391 ah->config.spurchans[i][1] = AR_NO_SPUR;
393 } 392 }
394 393
394 if (ah->hw_version.devid != AR2427_DEVID_PCIE)
395 ah->config.ht_enable = 1;
396 else
397 ah->config.ht_enable = 0;
398
395 ah->config.intr_mitigation = true; 399 ah->config.intr_mitigation = true;
396 400
397 /* 401 /*
@@ -590,6 +594,7 @@ static bool ath9k_hw_devid_supported(u16 devid)
590 case AR5416_DEVID_AR9287_PCI: 594 case AR5416_DEVID_AR9287_PCI:
591 case AR5416_DEVID_AR9287_PCIE: 595 case AR5416_DEVID_AR9287_PCIE:
592 case AR9271_USB: 596 case AR9271_USB:
597 case AR2427_DEVID_PCIE:
593 return true; 598 return true;
594 default: 599 default:
595 break; 600 break;
diff --git a/drivers/net/wireless/ath/ath9k/hw.h b/drivers/net/wireless/ath/ath9k/hw.h
index e2b0c73a616f..33a28ec277e4 100644
--- a/drivers/net/wireless/ath/ath9k/hw.h
+++ b/drivers/net/wireless/ath/ath9k/hw.h
@@ -40,6 +40,7 @@
40#define AR9280_DEVID_PCI 0x0029 40#define AR9280_DEVID_PCI 0x0029
41#define AR9280_DEVID_PCIE 0x002a 41#define AR9280_DEVID_PCIE 0x002a
42#define AR9285_DEVID_PCIE 0x002b 42#define AR9285_DEVID_PCIE 0x002b
43#define AR2427_DEVID_PCIE 0x002c
43 44
44#define AR5416_AR9100_DEVID 0x000b 45#define AR5416_AR9100_DEVID 0x000b
45 46
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
index 4faafbde1d0b..958d9e85fbac 100644
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -1854,11 +1854,13 @@ void ath_set_hw_capab(struct ath_softc *sc, struct ieee80211_hw *hw)
1854 hw->flags = IEEE80211_HW_RX_INCLUDES_FCS | 1854 hw->flags = IEEE80211_HW_RX_INCLUDES_FCS |
1855 IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING | 1855 IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING |
1856 IEEE80211_HW_SIGNAL_DBM | 1856 IEEE80211_HW_SIGNAL_DBM |
1857 IEEE80211_HW_AMPDU_AGGREGATION |
1858 IEEE80211_HW_SUPPORTS_PS | 1857 IEEE80211_HW_SUPPORTS_PS |
1859 IEEE80211_HW_PS_NULLFUNC_STACK | 1858 IEEE80211_HW_PS_NULLFUNC_STACK |
1860 IEEE80211_HW_SPECTRUM_MGMT; 1859 IEEE80211_HW_SPECTRUM_MGMT;
1861 1860
1861 if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_HT)
1862 hw->flags |= IEEE80211_HW_AMPDU_AGGREGATION;
1863
1862 if (AR_SREV_9160_10_OR_LATER(sc->sc_ah) || modparam_nohwcrypt) 1864 if (AR_SREV_9160_10_OR_LATER(sc->sc_ah) || modparam_nohwcrypt)
1863 hw->flags |= IEEE80211_HW_MFP_CAPABLE; 1865 hw->flags |= IEEE80211_HW_MFP_CAPABLE;
1864 1866
diff --git a/drivers/net/wireless/ath/ath9k/pci.c b/drivers/net/wireless/ath/ath9k/pci.c
index f7af5ea54753..199c54aefa01 100644
--- a/drivers/net/wireless/ath/ath9k/pci.c
+++ b/drivers/net/wireless/ath/ath9k/pci.c
@@ -25,6 +25,7 @@ static struct pci_device_id ath_pci_id_table[] __devinitdata = {
25 { PCI_VDEVICE(ATHEROS, 0x0029) }, /* PCI */ 25 { PCI_VDEVICE(ATHEROS, 0x0029) }, /* PCI */
26 { PCI_VDEVICE(ATHEROS, 0x002A) }, /* PCI-E */ 26 { PCI_VDEVICE(ATHEROS, 0x002A) }, /* PCI-E */
27 { PCI_VDEVICE(ATHEROS, 0x002B) }, /* PCI-E */ 27 { PCI_VDEVICE(ATHEROS, 0x002B) }, /* PCI-E */
28 { PCI_VDEVICE(ATHEROS, 0x002C) }, /* PCI-E 802.11n bonded out */
28 { PCI_VDEVICE(ATHEROS, 0x002D) }, /* PCI */ 29 { PCI_VDEVICE(ATHEROS, 0x002D) }, /* PCI */
29 { PCI_VDEVICE(ATHEROS, 0x002E) }, /* PCI-E */ 30 { PCI_VDEVICE(ATHEROS, 0x002E) }, /* PCI-E */
30 { 0 } 31 { 0 }