git: 6858c6b1e1a9 - main - rtwn: refactor out the TX power register power dump, condense output

From: Adrian Chadd <adrian_at_FreeBSD.org>
Date: Wed, 18 Dec 2024 23:48:58 UTC
The branch main has been updated by adrian:

URL: https://cgit.FreeBSD.org/src/commit/?id=6858c6b1e1a9b151bad31bba3d354d2414a29c68

commit 6858c6b1e1a9b151bad31bba3d354d2414a29c68
Author:     Adrian Chadd <adrian@FreeBSD.org>
AuthorDate: 2024-12-08 15:44:43 +0000
Commit:     Adrian Chadd <adrian@FreeBSD.org>
CommitDate: 2024-12-18 23:45:47 +0000

    rtwn: refactor out the TX power register power dump, condense output
    
    * Refactor out the TX power register register dump - it's done in
      a couple places and it makes sense to refactor it.
    
    * Condense the output into a few lines per transmit chain.  It's
      very long with the 8 and 16 MCS rates, and it made it difficult
      to eyeball what's going on when tweaking TX power.
    
    Differential Revision:  https://reviews.freebsd.org/D47986
    Reviewed by:    bz, imp
---
 sys/dev/rtwn/rtl8192c/r92c.h      |  1 +
 sys/dev/rtwn/rtl8192c/r92c_chan.c | 64 +++++++++++++++++++++++++++++++--------
 sys/dev/rtwn/rtl8192e/r92e_chan.c | 11 ++-----
 3 files changed, 55 insertions(+), 21 deletions(-)

diff --git a/sys/dev/rtwn/rtl8192c/r92c.h b/sys/dev/rtwn/rtl8192c/r92c.h
index f73e92f7c932..759a946dac3c 100644
--- a/sys/dev/rtwn/rtl8192c/r92c.h
+++ b/sys/dev/rtwn/rtl8192c/r92c.h
@@ -54,6 +54,7 @@ void	r92c_temp_measure(struct rtwn_softc *);
 uint8_t	r92c_temp_read(struct rtwn_softc *);
 
 /* r92c_chan.c */
+void	r92c_dump_txpower(struct rtwn_softc *, int, uint8_t[RTWN_RIDX_COUNT]);
 void	r92c_get_txpower(struct rtwn_softc *, int,
 	    struct ieee80211_channel *, uint8_t[RTWN_RIDX_COUNT]);
 void	r92c_write_txpower(struct rtwn_softc *, int,
diff --git a/sys/dev/rtwn/rtl8192c/r92c_chan.c b/sys/dev/rtwn/rtl8192c/r92c_chan.c
index 108fbbf16c59..5404ad4a81bf 100644
--- a/sys/dev/rtwn/rtl8192c/r92c_chan.c
+++ b/sys/dev/rtwn/rtl8192c/r92c_chan.c
@@ -53,6 +53,56 @@
 #include <dev/rtwn/rtl8192c/r92c_reg.h>
 #include <dev/rtwn/rtl8192c/r92c_var.h>
 
+void
+r92c_dump_txpower(struct rtwn_softc *sc, int chain,
+    uint8_t power[RTWN_RIDX_COUNT])
+{
+
+#ifdef RTWN_DEBUG
+	if (sc->sc_debug & RTWN_DEBUG_TXPWR) {
+		int i;
+
+		/* Print CCK */
+		RTWN_DPRINTF(sc, RTWN_DEBUG_TXPWR,
+		    "TX [%d]: CCK: 1M: %d 2M: %d 5.5M: %d 11M: %d\n",
+		    chain,
+		    power[RTWN_RIDX_CCK1],
+		    power[RTWN_RIDX_CCK2],
+		    power[RTWN_RIDX_CCK55],
+		    power[RTWN_RIDX_CCK11]);
+		/* Print OFDM */
+		RTWN_DPRINTF(sc, RTWN_DEBUG_TXPWR,
+		    "TX [%d]: OFDM: 6M: %d 9M: %d 12M: %d 18M: %d 24M: %d "
+		    "36M: %d 48M: %d 54M: %d\n",
+		    chain,
+		    power[RTWN_RIDX_OFDM6],
+		    power[RTWN_RIDX_OFDM9],
+		    power[RTWN_RIDX_OFDM12],
+		    power[RTWN_RIDX_OFDM18],
+		    power[RTWN_RIDX_OFDM24],
+		    power[RTWN_RIDX_OFDM36],
+		    power[RTWN_RIDX_OFDM48],
+		    power[RTWN_RIDX_OFDM54]);
+		/* Print HT, 1 and 2 stream */
+		for (i = 0; i < sc->ntxchains; i++) {
+			RTWN_DPRINTF(sc, RTWN_DEBUG_TXPWR,
+			    "TX [%d]: MCS%d-%d: %d %d %d %d %d %d %d %d\n",
+			    chain,
+			    i * 8,
+			    i * 8 + 7,
+			    power[RTWN_RIDX_HT_MCS(i * 8 + 0)],
+			    power[RTWN_RIDX_HT_MCS(i * 8 + 1)],
+			    power[RTWN_RIDX_HT_MCS(i * 8 + 2)],
+			    power[RTWN_RIDX_HT_MCS(i * 8 + 3)],
+			    power[RTWN_RIDX_HT_MCS(i * 8 + 4)],
+			    power[RTWN_RIDX_HT_MCS(i * 8 + 5)],
+			    power[RTWN_RIDX_HT_MCS(i * 8 + 6)],
+			    power[RTWN_RIDX_HT_MCS(i * 8 + 7)]);
+		}
+	}
+#endif
+}
+
 static int
 r92c_get_power_group(struct rtwn_softc *sc, struct ieee80211_channel *c)
 {
@@ -224,18 +274,8 @@ r92c_set_txpower(struct rtwn_softc *sc, struct ieee80211_channel *c)
 		memset(power, 0, sizeof(power));
 		/* Compute per-rate Tx power values. */
 		rtwn_r92c_get_txpower(sc, i, c, power);
-#ifdef RTWN_DEBUG
-		if (sc->sc_debug & RTWN_DEBUG_TXPWR) {
-			int max_mcs, ridx;
-
-			max_mcs = RTWN_RIDX_HT_MCS(sc->ntxchains * 8 - 1);
-
-			/* Dump per-rate Tx power values. */
-			printf("Tx power for chain %d:\n", i);
-			for (ridx = RTWN_RIDX_CCK1; ridx <= max_mcs; ridx++)
-				printf("Rate %d = %u\n", ridx, power[ridx]);
-		}
-#endif
+		/* Optionally print out the power table */
+		r92c_dump_txpower(sc, i, power);
 		/* Write per-rate Tx power values to hardware. */
 		r92c_write_txpower(sc, i, power);
 	}
diff --git a/sys/dev/rtwn/rtl8192e/r92e_chan.c b/sys/dev/rtwn/rtl8192e/r92e_chan.c
index c6e911309cd2..4c761f61809d 100644
--- a/sys/dev/rtwn/rtl8192e/r92e_chan.c
+++ b/sys/dev/rtwn/rtl8192e/r92e_chan.c
@@ -132,15 +132,6 @@ r92e_get_txpower(struct rtwn_softc *sc, int chain, struct ieee80211_channel *c,
 		if (power[ridx] > R92C_MAX_TX_PWR)
 			power[ridx] = R92C_MAX_TX_PWR;
 	}
-
-#ifdef RTWN_DEBUG
-	if (sc->sc_debug & RTWN_DEBUG_TXPWR) {
-		/* Dump per-rate Tx power values. */
-		printf("Tx power for chain %d:\n", chain);
-		for (ridx = RTWN_RIDX_CCK1; ridx < RTWN_RIDX_LEGACY_HT_COUNT; ridx++)
-			printf("Rate %d = %u\n", ridx, power[ridx]);
-	}
-#endif
 }
 
 static void
@@ -153,6 +144,8 @@ r92e_set_txpower(struct rtwn_softc *sc, struct ieee80211_channel *c)
 		memset(power, 0, sizeof(power));
 		/* Compute per-rate Tx power values. */
 		r92e_get_txpower(sc, i, c, power);
+		/* Optionally print out the power table */
+		r92c_dump_txpower(sc, i, power);
 		/* Write per-rate Tx power values to hardware. */
 		r92c_write_txpower(sc, i, power);
 	}