svn commit: r218436 - in head/sys/dev/ath/ath_hal: . ar5210 ar5211
ar5212 ar9002
Adrian Chadd
adrian at FreeBSD.org
Tue Feb 8 12:49:02 UTC 2011
Author: adrian
Date: Tue Feb 8 12:49:01 2011
New Revision: 218436
URL: http://svn.freebsd.org/changeset/base/218436
Log:
There's apparently a bug with Merlin (AR9280) and later chipsets where
putting descriptors (not buffers) across a 4k page boundary can cause issues.
I've not seen it in production myself but it apparently can cause problems.
So, in preparation for addressing this workaround, (re)-expose the particular
HAL capability bit which marks whether the chipset has support for cross-4k-
boundary transactions or not.
A subsequent commit will modify the descriptor allocation to avoid allocating
descriptor entries that straddle a 4k page boundary.
Modified:
head/sys/dev/ath/ath_hal/ah_internal.h
head/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c
head/sys/dev/ath/ath_hal/ar5211/ar5211_attach.c
head/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c
head/sys/dev/ath/ath_hal/ar9002/ar9280_attach.c
head/sys/dev/ath/ath_hal/ar9002/ar9285_attach.c
Modified: head/sys/dev/ath/ath_hal/ah_internal.h
==============================================================================
--- head/sys/dev/ath/ath_hal/ah_internal.h Tue Feb 8 12:12:48 2011 (r218435)
+++ head/sys/dev/ath/ath_hal/ah_internal.h Tue Feb 8 12:49:01 2011 (r218436)
@@ -195,7 +195,8 @@ typedef struct {
halForcePpmSupport : 1,
halEnhancedPmSupport : 1,
halMbssidAggrSupport : 1,
- halBssidMatchSupport : 1;
+ halBssidMatchSupport : 1,
+ hal4kbSplitTransSupport : 1;
uint32_t halWirelessModes;
uint16_t halTotalQueues;
uint16_t halKeyCacheSize;
Modified: head/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c
==============================================================================
--- head/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c Tue Feb 8 12:12:48 2011 (r218435)
+++ head/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c Tue Feb 8 12:49:01 2011 (r218436)
@@ -377,6 +377,8 @@ ar5210FillCapabilityInfo(struct ath_hal
| HAL_INT_FATAL
;
+ pCap->hal4kbSplitTransSupport = AH_TRUE;
+
ahpriv->ah_rxornIsFatal = AH_TRUE;
return AH_TRUE;
}
Modified: head/sys/dev/ath/ath_hal/ar5211/ar5211_attach.c
==============================================================================
--- head/sys/dev/ath/ath_hal/ar5211/ar5211_attach.c Tue Feb 8 12:12:48 2011 (r218435)
+++ head/sys/dev/ath/ath_hal/ar5211/ar5211_attach.c Tue Feb 8 12:49:01 2011 (r218436)
@@ -509,6 +509,8 @@ ar5211FillCapabilityInfo(struct ath_hal
| HAL_INT_TIM
;
+ pCap->hal4kbSplitTransSupport = AH_TRUE;
+
/* XXX might be ok w/ some chip revs */
ahpriv->ah_rxornIsFatal = AH_TRUE;
return AH_TRUE;
Modified: head/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c
==============================================================================
--- head/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c Tue Feb 8 12:12:48 2011 (r218435)
+++ head/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c Tue Feb 8 12:49:01 2011 (r218436)
@@ -860,6 +860,8 @@ ar5212FillCapabilityInfo(struct ath_hal
if (AH_PRIVATE(ah)->ah_macVersion < AR_SREV_VERSION_GRIFFIN)
pCap->halIntrMask &= ~HAL_INT_TBTT;
+ pCap->hal4kbSplitTransSupport = AH_TRUE;
+
return AH_TRUE;
#undef IS_COBRA
#undef IS_GRIFFIN_LITE
Modified: head/sys/dev/ath/ath_hal/ar9002/ar9280_attach.c
==============================================================================
--- head/sys/dev/ath/ath_hal/ar9002/ar9280_attach.c Tue Feb 8 12:12:48 2011 (r218435)
+++ head/sys/dev/ath/ath_hal/ar9002/ar9280_attach.c Tue Feb 8 12:49:01 2011 (r218436)
@@ -698,9 +698,7 @@ ar9280FillCapabilityInfo(struct ath_hal
pCap->halBtCoexSupport = AH_TRUE;
#endif
pCap->halAutoSleepSupport = AH_FALSE; /* XXX? */
-#if 0
pCap->hal4kbSplitTransSupport = AH_FALSE;
-#endif
pCap->halRxStbcSupport = 1;
pCap->halTxStbcSupport = 1;
Modified: head/sys/dev/ath/ath_hal/ar9002/ar9285_attach.c
==============================================================================
--- head/sys/dev/ath/ath_hal/ar9002/ar9285_attach.c Tue Feb 8 12:12:48 2011 (r218435)
+++ head/sys/dev/ath/ath_hal/ar9002/ar9285_attach.c Tue Feb 8 12:49:01 2011 (r218436)
@@ -384,9 +384,7 @@ ar9285FillCapabilityInfo(struct ath_hal
pCap->halBtCoexSupport = AH_TRUE;
#endif
pCap->halAutoSleepSupport = AH_FALSE; /* XXX? */
-#if 0
pCap->hal4kbSplitTransSupport = AH_FALSE;
-#endif
pCap->halRxStbcSupport = 1;
pCap->halTxStbcSupport = 1;
More information about the svn-src-head
mailing list