Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 13 May 2011 10:36:38 +0000 (UTC)
From:      Adrian Chadd <adrian@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r221834 - in head/sys/dev/ath/ath_hal: ar5416 ar9002
Message-ID:  <201105131036.p4DAac1o068717@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201105131036.p4DAac1o068717>