diff --git a/sys/dev/ath/ath_hal/ah_devid.h b/sys/dev/ath/ath_hal/ah_devid.h index 38e187b81795..a580700271ab 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 2b85a7a00143..79e562a5bff9 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);