svn commit: r221834 - in head/sys/dev/ath/ath_hal: ar5416 ar9002
Adrian Chadd
adrian at FreeBSD.org
Fri May 13 10:36:39 UTC 2011
Author: adrian
Date: Fri May 13 10:36:38 2011
New Revision: 221834
URL: http://svn.freebsd.org/changeset/base/221834
Log:
Remove duplicate code - add a function which calculates the ratesArray[]
table which contains the per-rate target TX power.
This code is shared between the v14 eeprom board setup (AR5416, AR9160,
AR9280) and will also be used by the upcoming Kite (AR9287) support.
Modified:
head/sys/dev/ath/ath_hal/ar5416/ar5416.h
head/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c
head/sys/dev/ath/ath_hal/ar9002/ar9285_reset.c
Modified: head/sys/dev/ath/ath_hal/ar5416/ar5416.h
==============================================================================
--- head/sys/dev/ath/ath_hal/ar5416/ar5416.h Fri May 13 09:57:12 2011 (r221833)
+++ head/sys/dev/ath/ath_hal/ar5416/ar5416.h Fri May 13 10:36:38 2011 (r221834)
@@ -237,6 +237,15 @@ extern HAL_BOOL ar5416GetChipPowerLimits
struct ieee80211_channel *chan);
extern void ar5416GetChannelCenters(struct ath_hal *,
const struct ieee80211_channel *chan, CHAN_CENTERS *centers);
+extern void ar5416SetRatesArrayFromTargetPower(struct ath_hal *ah,
+ const struct ieee80211_channel *chan,
+ int16_t *ratesArray,
+ const CAL_TARGET_POWER_LEG *targetPowerCck,
+ const CAL_TARGET_POWER_LEG *targetPowerCckExt,
+ const CAL_TARGET_POWER_LEG *targetPowerOfdm,
+ const CAL_TARGET_POWER_LEG *targetPowerOfdmExt,
+ const CAL_TARGET_POWER_HT *targetPowerHt20,
+ const CAL_TARGET_POWER_HT *targetPowerHt40);
extern void ar5416GetTargetPowers(struct ath_hal *ah,
const struct ieee80211_channel *chan,
CAL_TARGET_POWER_HT *powInfo,
Modified: head/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c
==============================================================================
--- head/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c Fri May 13 09:57:12 2011 (r221833)
+++ head/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c Fri May 13 10:36:38 2011 (r221834)
@@ -1635,6 +1635,63 @@ ar5416SetBoardValues(struct ath_hal *ah,
*/
/*
+ * Set the target power array "ratesArray" from the
+ * given set of target powers.
+ *
+ * This is used by the various chipset/EEPROM TX power
+ * setup routines.
+ */
+void
+ar5416SetRatesArrayFromTargetPower(struct ath_hal *ah,
+ const struct ieee80211_channel *chan,
+ int16_t *ratesArray,
+ const CAL_TARGET_POWER_LEG *targetPowerCck,
+ const CAL_TARGET_POWER_LEG *targetPowerCckExt,
+ const CAL_TARGET_POWER_LEG *targetPowerOfdm,
+ const CAL_TARGET_POWER_LEG *targetPowerOfdmExt,
+ const CAL_TARGET_POWER_HT *targetPowerHt20,
+ const CAL_TARGET_POWER_HT *targetPowerHt40)
+{
+#define N(a) (sizeof(a)/sizeof(a[0]))
+ int i;
+
+ /* Blank the rates array, to be consistent */
+ for (i = 0; i < Ar5416RateSize; i++)
+ ratesArray[i] = 0;
+
+ /* Set rates Array from collected data */
+ ratesArray[rate6mb] = ratesArray[rate9mb] = ratesArray[rate12mb] =
+ ratesArray[rate18mb] = ratesArray[rate24mb] = targetPowerOfdm->tPow2x[0];
+ ratesArray[rate36mb] = targetPowerOfdm->tPow2x[1];
+ ratesArray[rate48mb] = targetPowerOfdm->tPow2x[2];
+ ratesArray[rate54mb] = targetPowerOfdm->tPow2x[3];
+ ratesArray[rateXr] = targetPowerOfdm->tPow2x[0];
+
+ for (i = 0; i < N(targetPowerHt20->tPow2x); i++) {
+ ratesArray[rateHt20_0 + i] = targetPowerHt20->tPow2x[i];
+ }
+
+ if (IEEE80211_IS_CHAN_2GHZ(chan)) {
+ ratesArray[rate1l] = targetPowerCck->tPow2x[0];
+ ratesArray[rate2s] = ratesArray[rate2l] = targetPowerCck->tPow2x[1];
+ ratesArray[rate5_5s] = ratesArray[rate5_5l] = targetPowerCck->tPow2x[2];
+ ratesArray[rate11s] = ratesArray[rate11l] = targetPowerCck->tPow2x[3];
+ }
+ if (IEEE80211_IS_CHAN_HT40(chan)) {
+ for (i = 0; i < N(targetPowerHt40->tPow2x); i++) {
+ ratesArray[rateHt40_0 + i] = targetPowerHt40->tPow2x[i];
+ }
+ ratesArray[rateDupOfdm] = targetPowerHt40->tPow2x[0];
+ ratesArray[rateDupCck] = targetPowerHt40->tPow2x[0];
+ ratesArray[rateExtOfdm] = targetPowerOfdmExt->tPow2x[0];
+ if (IEEE80211_IS_CHAN_2GHZ(chan)) {
+ ratesArray[rateExtCck] = targetPowerCckExt->tPow2x[0];
+ }
+ }
+#undef N
+}
+
+/*
* ar5416SetPowerPerRateTable
*
* Sets the transmit power in the baseband for the given
@@ -1855,33 +1912,13 @@ ar5416SetPowerPerRateTable(struct ath_ha
} /* end ctl mode checking */
/* Set rates Array from collected data */
- ratesArray[rate6mb] = ratesArray[rate9mb] = ratesArray[rate12mb] = ratesArray[rate18mb] = ratesArray[rate24mb] = targetPowerOfdm.tPow2x[0];
- ratesArray[rate36mb] = targetPowerOfdm.tPow2x[1];
- ratesArray[rate48mb] = targetPowerOfdm.tPow2x[2];
- ratesArray[rate54mb] = targetPowerOfdm.tPow2x[3];
- ratesArray[rateXr] = targetPowerOfdm.tPow2x[0];
-
- for (i = 0; i < N(targetPowerHt20.tPow2x); i++) {
- ratesArray[rateHt20_0 + i] = targetPowerHt20.tPow2x[i];
- }
-
- if (IEEE80211_IS_CHAN_2GHZ(chan)) {
- ratesArray[rate1l] = targetPowerCck.tPow2x[0];
- ratesArray[rate2s] = ratesArray[rate2l] = targetPowerCck.tPow2x[1];
- ratesArray[rate5_5s] = ratesArray[rate5_5l] = targetPowerCck.tPow2x[2];
- ratesArray[rate11s] = ratesArray[rate11l] = targetPowerCck.tPow2x[3];
- }
- if (IEEE80211_IS_CHAN_HT40(chan)) {
- for (i = 0; i < N(targetPowerHt40.tPow2x); i++) {
- ratesArray[rateHt40_0 + i] = targetPowerHt40.tPow2x[i];
- }
- ratesArray[rateDupOfdm] = targetPowerHt40.tPow2x[0];
- ratesArray[rateDupCck] = targetPowerHt40.tPow2x[0];
- ratesArray[rateExtOfdm] = targetPowerOfdmExt.tPow2x[0];
- if (IEEE80211_IS_CHAN_2GHZ(chan)) {
- ratesArray[rateExtCck] = targetPowerCckExt.tPow2x[0];
- }
- }
+ ar5416SetRatesArrayFromTargetPower(ah, chan, ratesArray,
+ &targetPowerCck,
+ &targetPowerCckExt,
+ &targetPowerOfdm,
+ &targetPowerOfdmExt,
+ &targetPowerHt20,
+ &targetPowerHt40);
return AH_TRUE;
#undef EXT_ADDITIVE
#undef CTL_11A_EXT
Modified: head/sys/dev/ath/ath_hal/ar9002/ar9285_reset.c
==============================================================================
--- head/sys/dev/ath/ath_hal/ar9002/ar9285_reset.c Fri May 13 09:57:12 2011 (r221833)
+++ head/sys/dev/ath/ath_hal/ar9002/ar9285_reset.c Fri May 13 10:36:38 2011 (r221834)
@@ -533,32 +533,15 @@ ar9285SetPowerPerRateTable(struct ath_ha
}
} /* end ctl mode checking */
- /* Set rates Array from collected data */
- ratesArray[rate6mb] = ratesArray[rate9mb] = ratesArray[rate12mb] = ratesArray[rate18mb] = ratesArray[rate24mb] = targetPowerOfdm.tPow2x[0];
- ratesArray[rate36mb] = targetPowerOfdm.tPow2x[1];
- ratesArray[rate48mb] = targetPowerOfdm.tPow2x[2];
- ratesArray[rate54mb] = targetPowerOfdm.tPow2x[3];
- ratesArray[rateXr] = targetPowerOfdm.tPow2x[0];
-
- for (i = 0; i < N(targetPowerHt20.tPow2x); i++) {
- ratesArray[rateHt20_0 + i] = targetPowerHt20.tPow2x[i];
- }
-
- ratesArray[rate1l] = targetPowerCck.tPow2x[0];
- ratesArray[rate2s] = ratesArray[rate2l] = targetPowerCck.tPow2x[1];
- ratesArray[rate5_5s] = ratesArray[rate5_5l] = targetPowerCck.tPow2x[2];
- ratesArray[rate11s] = ratesArray[rate11l] = targetPowerCck.tPow2x[3];
- if (IEEE80211_IS_CHAN_HT40(chan)) {
- for (i = 0; i < N(targetPowerHt40.tPow2x); i++) {
- ratesArray[rateHt40_0 + i] = targetPowerHt40.tPow2x[i];
- }
- ratesArray[rateDupOfdm] = targetPowerHt40.tPow2x[0];
- ratesArray[rateDupCck] = targetPowerHt40.tPow2x[0];
- ratesArray[rateExtOfdm] = targetPowerOfdmExt.tPow2x[0];
- if (IEEE80211_IS_CHAN_2GHZ(chan)) {
- ratesArray[rateExtCck] = targetPowerCckExt.tPow2x[0];
- }
- }
+ /* Set rates Array from collected data */
+ ar5416SetRatesArrayFromTargetPower(ah, chan, ratesArray,
+ &targetPowerCck,
+ &targetPowerCckExt,
+ &targetPowerOfdm,
+ &targetPowerOfdmExt,
+ &targetPowerHt20,
+ &targetPowerHt40);
+
return AH_TRUE;
#undef EXT_ADDITIVE
#undef CTL_11G_EXT
More information about the svn-src-all
mailing list