svn commit: r218354 - head/sys/dev/ath/ath_hal/ar5416

Adrian Chadd adrian at FreeBSD.org
Sat Feb 5 22:54:37 UTC 2011


Author: adrian
Date: Sat Feb  5 22:54:37 2011
New Revision: 218354
URL: http://svn.freebsd.org/changeset/base/218354

Log:
  Add a temporary workaround so the 11n rate scenario setup code sets a useful
  TX chainmask.
  
  since the upper layers don't (yet) know about the active TX/RX chainmasks,
  it can't tell the rate scenario functions what to use. I'll eventually sort
  this out; this restores functionality in the meantime.

Modified:
  head/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c

Modified: head/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c
==============================================================================
--- head/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c	Sat Feb  5 22:04:20 2011	(r218353)
+++ head/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c	Sat Feb  5 22:54:37 2011	(r218354)
@@ -621,6 +621,20 @@ ar5416Set11nRateScenario(struct ath_hal 
 	(void)nseries;
 
 	/*
+	 * XXX since the upper layers doesn't know the current chainmask
+	 * XXX setup, just override its decisions here.
+	 * XXX The upper layers need to be taught this!
+	 */
+	if (series[0].Tries != 0)
+		series[0].ChSel = AH5416(ah)->ah_tx_chainmask;
+	if (series[1].Tries != 0)
+		series[1].ChSel = AH5416(ah)->ah_tx_chainmask;
+	if (series[2].Tries != 0)
+		series[2].ChSel = AH5416(ah)->ah_tx_chainmask;
+	if (series[3].Tries != 0)
+		series[3].ChSel = AH5416(ah)->ah_tx_chainmask;
+
+	/*
 	 * Only one of RTS and CTS enable must be set.
 	 * If a frame has both set, just do RTS protection -
 	 * that's enough to satisfy legacy protection.
@@ -642,7 +656,6 @@ ar5416Set11nRateScenario(struct ath_hal 
 		    (ads->ds_ctl0 & ~(AR_RTSEnable | AR_CTSEnable));
 	}
 
-
 	ads->ds_ctl2 = set11nTries(series, 0)
 		     | set11nTries(series, 1)
 		     | set11nTries(series, 2)


More information about the svn-src-all mailing list