svn commit: r320055 - in head/sys/dev/rtwn: rtl8188e rtl8188e/usb rtl8192c
Kevin Lo
kevlo at FreeBSD.org
Sat Jun 17 14:39:27 UTC 2017
Author: kevlo
Date: Sat Jun 17 14:39:25 2017
New Revision: 320055
URL: https://svnweb.freebsd.org/changeset/base/320055
Log:
- Fix incorrect values in the computation of CCK and OFDM transmit power
for the rtl8188eu chipset
- Rename struct r92c_rom member names: s/channel_plan/reserved5/,
s/xtal_calib/channel_plan to be compliant with definitions of the efuse
in vendor hal_pg.h
Modified:
head/sys/dev/rtwn/rtl8188e/r88e_chan.c
head/sys/dev/rtwn/rtl8188e/r88e_priv.h
head/sys/dev/rtwn/rtl8188e/usb/r88eu_attach.c
head/sys/dev/rtwn/rtl8192c/r92c_rom_image.h
Modified: head/sys/dev/rtwn/rtl8188e/r88e_chan.c
==============================================================================
--- head/sys/dev/rtwn/rtl8188e/r88e_chan.c Sat Jun 17 14:36:25 2017 (r320054)
+++ head/sys/dev/rtwn/rtl8188e/r88e_chan.c Sat Jun 17 14:39:25 2017 (r320055)
@@ -89,8 +89,7 @@ r88e_get_txpower(struct rtwn_softc *sc, int chain,
{
struct r92c_softc *rs = sc->sc_priv;
const struct rtwn_r88e_txpwr *rt = rs->rs_txpwr;
- const struct rtwn_r88e_txagc *base = rs->rs_txagc;
- uint16_t cckpow, ofdmpow, bw20pow, htpow;
+ uint8_t cckpow, ofdmpow, bw20pow, htpow = 0;
int max_mcs, ridx, group;
/* Determine channel group. */
@@ -106,35 +105,24 @@ r88e_get_txpower(struct rtwn_softc *sc, int chain,
KASSERT(max_mcs <= RTWN_RIDX_COUNT, ("increase ridx limit\n"));
memset(power, 0, max_mcs * sizeof(power[0]));
- if (rs->regulatory == 0) {
- for (ridx = RTWN_RIDX_CCK1; ridx <= RTWN_RIDX_CCK11; ridx++)
- power[ridx] = base->pwr[0][ridx];
- }
- for (ridx = RTWN_RIDX_OFDM6; ridx <= max_mcs; ridx++) {
- if (rs->regulatory == 3)
- power[ridx] = base->pwr[0][ridx];
- else if (rs->regulatory == 1) {
- if (!IEEE80211_IS_CHAN_HT40(c))
- power[ridx] = base->pwr[group][ridx];
- } else if (rs->regulatory != 2)
- power[ridx] = base->pwr[0][ridx];
- }
/* Compute per-CCK rate Tx power. */
cckpow = rt->cck_tx_pwr[group];
- for (ridx = RTWN_RIDX_CCK1; ridx <= RTWN_RIDX_CCK11; ridx++)
- power[ridx] += cckpow;
+ for (ridx = RTWN_RIDX_CCK1; ridx <= RTWN_RIDX_CCK11; ridx++) {
+ power[ridx] = (ridx == RTWN_RIDX_CCK2) ? cckpow - 9 : cckpow;
+ }
- htpow = rt->ht40_tx_pwr[group];
+ if (group < 5)
+ htpow = rt->ht40_tx_pwr[group];
/* Compute per-OFDM rate Tx power. */
ofdmpow = htpow + rt->ofdm_tx_pwr_diff;
for (ridx = RTWN_RIDX_OFDM6; ridx <= RTWN_RIDX_OFDM54; ridx++)
- power[ridx] += ofdmpow;
+ power[ridx] = ofdmpow;
bw20pow = htpow + rt->bw20_tx_pwr_diff;
for (ridx = RTWN_RIDX_MCS(0); ridx <= max_mcs; ridx++)
- power[ridx] += bw20pow;
+ power[ridx] = bw20pow;
/* Apply max limit. */
for (ridx = RTWN_RIDX_CCK1; ridx <= max_mcs; ridx++) {
Modified: head/sys/dev/rtwn/rtl8188e/r88e_priv.h
==============================================================================
--- head/sys/dev/rtwn/rtl8188e/r88e_priv.h Sat Jun 17 14:36:25 2017 (r320054)
+++ head/sys/dev/rtwn/rtl8188e/r88e_priv.h Sat Jun 17 14:39:25 2017 (r320055)
@@ -227,47 +227,4 @@ static const struct rtwn_rf_prog rtl8188eu_rf[] = {
{ 0, NULL, NULL, { 0 }, NULL }
};
-
-struct rtwn_r88e_txagc {
- uint8_t pwr[R88E_GROUP_2G][20]; /* RTWN_RIDX_MCS(7) + 1 */
-};
-
-/*
- * Per RF chain/group/rate Tx gain values.
- */
-static const struct rtwn_r88e_txagc r88e_txagc[] = {
- { { /* Chain 0. */
- { /* Group 0. */
- 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */
- },
- { /* Group 1. */
- 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */
- },
- { /* Group 2. */
- 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */
- },
- { /* Group 3. */
- 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */
- },
- { /* Group 4. */
- 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */
- },
- { /* Group 5. */
- 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */
- }
- } }
-};
-
#endif /* R88E_PRIV_H */
Modified: head/sys/dev/rtwn/rtl8188e/usb/r88eu_attach.c
==============================================================================
--- head/sys/dev/rtwn/rtl8188e/usb/r88eu_attach.c Sat Jun 17 14:36:25 2017 (r320054)
+++ head/sys/dev/rtwn/rtl8188e/usb/r88eu_attach.c Sat Jun 17 14:39:25 2017 (r320055)
@@ -85,7 +85,7 @@ r88eu_attach_private(struct rtwn_softc *sc)
rs = malloc(sizeof(struct r92c_softc), M_RTWN_PRIV, M_WAITOK | M_ZERO);
rs->rs_txpwr = &r88e_txpwr;
- rs->rs_txagc = &r88e_txagc;
+ rs->rs_txagc = NULL;
rs->rs_set_bw20 = r88e_set_bw20;
rs->rs_get_txpower = r88e_get_txpower;
Modified: head/sys/dev/rtwn/rtl8192c/r92c_rom_image.h
==============================================================================
--- head/sys/dev/rtwn/rtl8192c/r92c_rom_image.h Sat Jun 17 14:36:25 2017 (r320054)
+++ head/sys/dev/rtwn/rtl8192c/r92c_rom_image.h Sat Jun 17 14:39:25 2017 (r320055)
@@ -48,7 +48,7 @@ struct r92c_rom {
uint8_t ofdm_tx_pwr_diff[R92C_GROUP_2G];
uint8_t ht40_max_pwr[R92C_GROUP_2G];
uint8_t ht20_max_pwr[R92C_GROUP_2G];
- uint8_t xtal_calib;
+ uint8_t channel_plan;
uint8_t tssi[R92C_MAX_CHAINS];
uint8_t thermal_meter;
#define R92C_ROM_THERMAL_METER_M 0x1f
@@ -58,9 +58,7 @@ struct r92c_rom {
uint8_t rf_opt2;
uint8_t rf_opt3;
uint8_t rf_opt4;
- uint8_t channel_plan;
-#define R92C_CHANNEL_PLAN_BY_HW 0x80
-
+ uint8_t reserved5;
uint8_t version;
uint8_t customer_id;
} __packed;
More information about the svn-src-head
mailing list