diff options
author | adrian <adrian@FreeBSD.org> | 2013-06-03 19:14:29 +0000 |
---|---|---|
committer | adrian <adrian@FreeBSD.org> | 2013-06-03 19:14:29 +0000 |
commit | d46bc8559f2db5233b3beda396ef5facd2be9712 (patch) | |
tree | 439ac0c475f5740c8a8276436bd945b4d5f220e2 /sys/dev | |
parent | 812c0e439302690bddbfa8b33d733285a3b24fe9 (diff) | |
download | FreeBSD-src-d46bc8559f2db5233b3beda396ef5facd2be9712.zip FreeBSD-src-d46bc8559f2db5233b3beda396ef5facd2be9712.tar.gz |
Fix receive on the AR9285 (Kite) with only one antenna connected.
The main problem here is that fast and driver RX diversity isn't actually
configured; I need to figure out why that is. That said, this makes
the single-antenna connected AR9285 and AR2427 (AR9285 w/ no 11n) work
correctly.
PR: kern/179269
Diffstat (limited to 'sys/dev')
-rw-r--r-- | sys/dev/ath/ath_hal/ar5416/ar5416_reset.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c b/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c index 41d63e2..bc45ea4 100644 --- a/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c +++ b/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c @@ -136,7 +136,20 @@ ar5416Reset(struct ath_hal *ah, HAL_OPMODE opmode, * Preserve the antenna on a channel change */ saveDefAntenna = OS_REG_READ(ah, AR_DEF_ANTENNA); - if (saveDefAntenna == 0) /* XXX magic constants */ + + /* + * Don't do this for the AR9285 - it breaks RX for single + * antenna designs when diversity is disabled. + * + * I'm not sure what this was working around; it may be + * something to do with the AR5416. Certainly this register + * isn't supposed to be used by the MIMO chips for anything + * except for defining the default antenna when an external + * phase array / smart antenna is connected. + * + * See PR: kern/179269 . + */ + if ((! AR_SREV_KITE(ah)) && saveDefAntenna == 0) /* XXX magic constants */ saveDefAntenna = 1; /* Save hardware flag before chip reset clears the register */ |