summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoradrian <adrian@FreeBSD.org>2011-01-20 09:37:53 +0000
committeradrian <adrian@FreeBSD.org>2011-01-20 09:37:53 +0000
commita55d6f1de501912c63ec170b22690d2531f494bf (patch)
treee2a319da76bc19373ac55f9585a7446fe2a3f0e4
parentec46d68e0c6b6e6f0148a09973e67db0e806379f (diff)
downloadFreeBSD-src-a55d6f1de501912c63ec170b22690d2531f494bf.zip
FreeBSD-src-a55d6f1de501912c63ec170b22690d2531f494bf.tar.gz
Include the device ids for the AR2427.
This is apparently an AR9285 with the 802.11n specific bits disabled. This code is completely untested; I'm doing this in response to users who wish to test the functionality out. It's likely as buggy as the AR9285 support is in FreeBSD at the moment.
-rw-r--r--sys/dev/ath/ath_hal/ah_devid.h1
-rw-r--r--sys/dev/ath/ath_hal/ar9002/ar9285_attach.c7
2 files changed, 8 insertions, 0 deletions
diff --git a/sys/dev/ath/ath_hal/ah_devid.h b/sys/dev/ath/ath_hal/ah_devid.h
index 38e187b..a5807002 100644
--- a/sys/dev/ath/ath_hal/ah_devid.h
+++ b/sys/dev/ath/ath_hal/ah_devid.h
@@ -78,6 +78,7 @@
#define AR9280_DEVID_PCI 0x0029 /* AR9280 PCI Merlin */
#define AR9280_DEVID_PCIE 0x002a /* AR9280 PCI-E Merlin */
#define AR9285_DEVID_PCIE 0x002b /* AR9285 PCI-E Kite */
+#define AR2427_DEVID_PCIE 0x002c /* AR2427 PCI-E w/ 802.11n bonded out */
#define AR_SUBVENDOR_ID_NOG 0x0e11 /* No 11G subvendor ID */
#define AR_SUBVENDOR_ID_NEW_A 0x7065 /* Update device to new RD */
diff --git a/sys/dev/ath/ath_hal/ar9002/ar9285_attach.c b/sys/dev/ath/ath_hal/ar9002/ar9285_attach.c
index 2b85a7a..79e562a 100644
--- a/sys/dev/ath/ath_hal/ar9002/ar9285_attach.c
+++ b/sys/dev/ath/ath_hal/ar9002/ar9285_attach.c
@@ -244,6 +244,10 @@ ar9285Attach(uint16_t devid, HAL_SOFTC sc,
goto bad;
}
+ /* Disable 11n for the AR2427 */
+ if (devid == AR2427_DEVID_PCIE)
+ AH_PRIVATE(ah)->ah_caps.halHTSupport = AH_FALSE;
+
ecode = ath_hal_eepromGet(ah, AR_EEP_MACADDR, ahp->ah_macaddr);
if (ecode != HAL_OK) {
HALDEBUG(ah, HAL_DEBUG_ANY,
@@ -403,6 +407,9 @@ ar9285Probe(uint16_t vendorid, uint16_t devid)
{
if (vendorid == ATHEROS_VENDOR_ID && devid == AR9285_DEVID_PCIE)
return "Atheros 9285";
+ if (vendorid == ATHEROS_VENDOR_ID && (devid == AR2427_DEVID_PCIE))
+ return "Atheros 2427";
+
return AH_NULL;
}
AH_CHIP(AR9285, ar9285Probe, ar9285Attach);
OpenPOWER on IntegriCloud