summaryrefslogtreecommitdiffstats
path: root/sys/dev
diff options
context:
space:
mode:
authoradrian <adrian@FreeBSD.org>2013-06-03 19:14:29 +0000
committeradrian <adrian@FreeBSD.org>2013-06-03 19:14:29 +0000
commitd46bc8559f2db5233b3beda396ef5facd2be9712 (patch)
tree439ac0c475f5740c8a8276436bd945b4d5f220e2 /sys/dev
parent812c0e439302690bddbfa8b33d733285a3b24fe9 (diff)
downloadFreeBSD-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.c15
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 */
OpenPOWER on IntegriCloud