View | Details | Raw Unified | Return to bug 183644
Collapse All | Expand All

(-)sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c (+35 lines)
Lines 27-32 Link Here
27
#include "ar5416/ar5416phy.h"
27
#include "ar5416/ar5416phy.h"
28
#include "ar5416/ar5416desc.h"
28
#include "ar5416/ar5416desc.h"
29
29
30
#define TU_TO_USEC(_tu)         ((_tu) << 10)
31
30
/*
32
/*
31
 * Stop transmit on the specified queue
33
 * Stop transmit on the specified queue
32
 */
34
 */
Lines 1039-1045 Link Here
1039
					ah->ah_config.ah_dma_beacon_response_time)
1041
					ah->ah_config.ah_dma_beacon_response_time)
1040
				- ah->ah_config.ah_additional_swba_backoff) * 1024;
1042
				- ah->ah_config.ah_additional_swba_backoff) * 1024;
1041
			OS_REG_WRITE(ah, AR_QRDYTIMECFG(q), value | AR_Q_RDYTIMECFG_ENA);
1043
			OS_REG_WRITE(ah, AR_QRDYTIMECFG(q), value | AR_Q_RDYTIMECFG_ENA);
1044
		} else {
1045
			int value;
1046
			/*
1047
			 * NB: don't set default ready time if driver
1048
			 * has explicitly specified something.  This is
1049
			 * here solely for backwards compatibility.
1050
			 */
1051
			/*
1052
			 * XXX for now, hard-code a CAB interval of 70%
1053
			 * XXX of the total beacon interval.
1054
			 *
1055
			 * XXX This keeps Merlin and later based MACs
1056
			 * XXX quite a bit happier (stops stuck beacons,
1057
			 * XXX which I gather is because of such a long
1058
			 * XXX cabq time.)
1059
			 */
1060
			value = (ahp->ah_beaconInterval * 70 / 100)
1061
				- (ah->ah_config.ah_sw_beacon_response_time
1062
				+ ah->ah_config.ah_dma_beacon_response_time)
1063
				- ah->ah_config.ah_additional_swba_backoff;
1064
			/*
1065
			 * XXX Ensure it isn't too low - nothing lower
1066
			 * XXX than 10 TU
1067
			 */
1068
			if (value < 10)
1069
				value = 10;
1070
			HALDEBUG(ah, HAL_DEBUG_TXQUEUE,
1071
			    "%s: defaulting to rdytime = %d uS\n",
1072
			    __func__, value);
1073
			OS_REG_WRITE(ah, AR_QRDYTIMECFG(q),
1074
			    SM(TU_TO_USEC(value), AR_Q_RDYTIMECFG_INT) |
1075
			    AR_Q_RDYTIMECFG_ENA);
1042
		}
1076
		}
1077
1043
		dmisc |= SM(AR_D_MISC_ARB_LOCKOUT_CNTRL_GLOBAL,
1078
		dmisc |= SM(AR_D_MISC_ARB_LOCKOUT_CNTRL_GLOBAL,
1044
			    AR_D_MISC_ARB_LOCKOUT_CNTRL);
1079
			    AR_D_MISC_ARB_LOCKOUT_CNTRL);
1045
		break;
1080
		break;

Return to bug 183644