From cc7b47dd1b846c75cd02fcc71fefdd7edb4f1d8c Mon Sep 17 00:00:00 2001 From: Adrian Chadd Date: Mon, 3 Jun 2013 19:14:29 +0000 Subject: [PATCH] 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 --- sys/dev/ath/ath_hal/ar5416/ar5416_reset.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c b/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c index 41d63e25587..bc45ea420ae 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 */