summaryrefslogtreecommitdiffstats
path: root/freebsd/sys/dev/rtwn
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2018-08-09 13:04:41 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-09-21 10:29:37 +0200
commite4a8065910cd6b2e7e0448cc6431ca2906322389 (patch)
tree73492991cfa40f994c20d761d476e6bc16304536 /freebsd/sys/dev/rtwn
parentUpdate to FreeBSD head 2017-08-01 (diff)
downloadrtems-libbsd-e4a8065910cd6b2e7e0448cc6431ca2906322389.tar.bz2
Update to FreeBSD head 2017-10-01
Git mirror commit b2f0376b45428f13151d229c5ae9d4d8f74acbd1. Update #3472.
Diffstat (limited to 'freebsd/sys/dev/rtwn')
-rw-r--r--freebsd/sys/dev/rtwn/if_rtwn_ridx.h6
-rw-r--r--freebsd/sys/dev/rtwn/if_rtwn_rx.c2
-rw-r--r--freebsd/sys/dev/rtwn/rtl8188e/r88e.h2
-rw-r--r--freebsd/sys/dev/rtwn/rtl8188e/r88e_chan.c6
-rw-r--r--freebsd/sys/dev/rtwn/rtl8192c/r92c.h4
-rw-r--r--freebsd/sys/dev/rtwn/rtl8192c/r92c_chan.c46
-rw-r--r--freebsd/sys/dev/rtwn/rtl8192c/r92c_fw.c2
-rw-r--r--freebsd/sys/dev/rtwn/rtl8192c/r92c_priv.h2
-rw-r--r--freebsd/sys/dev/rtwn/rtl8192c/r92c_rx.c6
-rw-r--r--freebsd/sys/dev/rtwn/rtl8192c/r92c_tx.c4
-rw-r--r--freebsd/sys/dev/rtwn/rtl8192c/r92c_var.h2
-rw-r--r--freebsd/sys/dev/rtwn/rtl8192e/r92e_chan.c71
-rw-r--r--freebsd/sys/dev/rtwn/rtl8812a/r12a_chan.c38
-rw-r--r--freebsd/sys/dev/rtwn/rtl8812a/r12a_rx.c6
-rw-r--r--freebsd/sys/dev/rtwn/rtl8812a/r12a_tx.c4
15 files changed, 71 insertions, 130 deletions
diff --git a/freebsd/sys/dev/rtwn/if_rtwn_ridx.h b/freebsd/sys/dev/rtwn/if_rtwn_ridx.h
index eef43898..76f87aab 100644
--- a/freebsd/sys/dev/rtwn/if_rtwn_ridx.h
+++ b/freebsd/sys/dev/rtwn/if_rtwn_ridx.h
@@ -36,7 +36,7 @@
#define RTWN_RIDX_OFDM36 9
#define RTWN_RIDX_OFDM48 10
#define RTWN_RIDX_OFDM54 11
-#define RTWN_RIDX_MCS(i) (12 + (i))
+#define RTWN_RIDX_HT_MCS(i) (12 + (i))
#define RTWN_RIDX_COUNT 28
#define RTWN_RIDX_UNKNOWN (uint8_t)-1
@@ -82,10 +82,10 @@ rtwn_ctl_mcsrate(const struct ieee80211_rate_table *rt, uint8_t ridx)
uint8_t cix, rate;
/* Check if we are using MCS rate. */
- KASSERT(ridx >= RTWN_RIDX_MCS(0) && ridx != RTWN_RIDX_UNKNOWN,
+ KASSERT(ridx >= RTWN_RIDX_HT_MCS(0) && ridx != RTWN_RIDX_UNKNOWN,
("bad mcs rate index %d", ridx));
- rate = (ridx - RTWN_RIDX_MCS(0)) | IEEE80211_RATE_MCS;
+ rate = (ridx - RTWN_RIDX_HT_MCS(0)) | IEEE80211_RATE_MCS;
cix = rt->info[rt->rateCodeToIndex[rate]].ctlRateIndex;
KASSERT(cix != (uint8_t)-1, ("rate %d (%d) has no info", rate, ridx));
return rt->info[cix].dot11Rate;
diff --git a/freebsd/sys/dev/rtwn/if_rtwn_rx.c b/freebsd/sys/dev/rtwn/if_rtwn_rx.c
index 7b3f1c2e..fb260596 100644
--- a/freebsd/sys/dev/rtwn/if_rtwn_rx.c
+++ b/freebsd/sys/dev/rtwn/if_rtwn_rx.c
@@ -90,7 +90,7 @@ rtwn_get_rates(struct rtwn_softc *sc, const struct ieee80211_rateset *rs,
if ((rs_ht->rs_rates[i] & 0x7f) > 0xf)
continue;
/* 11n rates start at index 12 */
- ridx = RTWN_RIDX_MCS((rs_ht->rs_rates[i]) & 0xf);
+ ridx = RTWN_RIDX_HT_MCS((rs_ht->rs_rates[i]) & 0xf);
rates |= (1 << ridx);
/* Guard against the rate table being oddly ordered */
diff --git a/freebsd/sys/dev/rtwn/rtl8188e/r88e.h b/freebsd/sys/dev/rtwn/rtl8188e/r88e.h
index 1c03ddd3..3a3c0865 100644
--- a/freebsd/sys/dev/rtwn/rtl8188e/r88e.h
+++ b/freebsd/sys/dev/rtwn/rtl8188e/r88e.h
@@ -49,7 +49,7 @@ uint8_t r88e_temp_read(struct rtwn_softc *);
/* r88e_chan.c */
void r88e_get_txpower(struct rtwn_softc *, int,
- struct ieee80211_channel *, uint16_t[]);
+ struct ieee80211_channel *, uint8_t[]);
void r88e_set_bw20(struct rtwn_softc *, uint8_t);
void r88e_set_gain(struct rtwn_softc *, uint8_t);
diff --git a/freebsd/sys/dev/rtwn/rtl8188e/r88e_chan.c b/freebsd/sys/dev/rtwn/rtl8188e/r88e_chan.c
index 903398a4..530df320 100644
--- a/freebsd/sys/dev/rtwn/rtl8188e/r88e_chan.c
+++ b/freebsd/sys/dev/rtwn/rtl8188e/r88e_chan.c
@@ -87,7 +87,7 @@ r88e_get_power_group(struct rtwn_softc *sc, struct ieee80211_channel *c)
void
r88e_get_txpower(struct rtwn_softc *sc, int chain,
- struct ieee80211_channel *c, uint16_t power[RTWN_RIDX_COUNT])
+ struct ieee80211_channel *c, uint8_t power[RTWN_RIDX_COUNT])
{
struct r92c_softc *rs = sc->sc_priv;
const struct rtwn_r88e_txpwr *rt = rs->rs_txpwr;
@@ -103,7 +103,7 @@ r88e_get_txpower(struct rtwn_softc *sc, int chain,
/* XXX net80211 regulatory */
- max_mcs = RTWN_RIDX_MCS(sc->ntxchains * 8 - 1);
+ max_mcs = RTWN_RIDX_HT_MCS(sc->ntxchains * 8 - 1);
KASSERT(max_mcs <= RTWN_RIDX_COUNT, ("increase ridx limit\n"));
memset(power, 0, max_mcs * sizeof(power[0]));
@@ -123,7 +123,7 @@ r88e_get_txpower(struct rtwn_softc *sc, int chain,
power[ridx] = ofdmpow;
bw20pow = htpow + rt->bw20_tx_pwr_diff;
- for (ridx = RTWN_RIDX_MCS(0); ridx <= max_mcs; ridx++)
+ for (ridx = RTWN_RIDX_HT_MCS(0); ridx <= max_mcs; ridx++)
power[ridx] = bw20pow;
/* Apply max limit. */
diff --git a/freebsd/sys/dev/rtwn/rtl8192c/r92c.h b/freebsd/sys/dev/rtwn/rtl8192c/r92c.h
index 5ac666d0..d8f7afc8 100644
--- a/freebsd/sys/dev/rtwn/rtl8192c/r92c.h
+++ b/freebsd/sys/dev/rtwn/rtl8192c/r92c.h
@@ -55,7 +55,9 @@ uint8_t r92c_temp_read(struct rtwn_softc *);
/* r92c_chan.c */
void r92c_get_txpower(struct rtwn_softc *, int,
- struct ieee80211_channel *, uint16_t[]);
+ struct ieee80211_channel *, uint8_t[]);
+void r92c_write_txpower(struct rtwn_softc *, int,
+ uint8_t power[]);
void r92c_set_bw20(struct rtwn_softc *, uint8_t);
void r92c_set_chan(struct rtwn_softc *, struct ieee80211_channel *);
void r92c_set_gain(struct rtwn_softc *, uint8_t);
diff --git a/freebsd/sys/dev/rtwn/rtl8192c/r92c_chan.c b/freebsd/sys/dev/rtwn/rtl8192c/r92c_chan.c
index c5d72f87..2e50daf1 100644
--- a/freebsd/sys/dev/rtwn/rtl8192c/r92c_chan.c
+++ b/freebsd/sys/dev/rtwn/rtl8192c/r92c_chan.c
@@ -84,7 +84,7 @@ r92c_get_power_group(struct rtwn_softc *sc, struct ieee80211_channel *c)
/* XXX recheck */
void
r92c_get_txpower(struct rtwn_softc *sc, int chain,
- struct ieee80211_channel *c, uint16_t power[RTWN_RIDX_COUNT])
+ struct ieee80211_channel *c, uint8_t power[RTWN_RIDX_COUNT])
{
struct r92c_softc *rs = sc->sc_priv;
struct rtwn_r92c_txpwr *rt = rs->rs_txpwr;
@@ -101,7 +101,7 @@ r92c_get_txpower(struct rtwn_softc *sc, int chain,
/* XXX net80211 regulatory */
- max_mcs = RTWN_RIDX_MCS(sc->ntxchains * 8 - 1);
+ max_mcs = RTWN_RIDX_HT_MCS(sc->ntxchains * 8 - 1);
KASSERT(max_mcs <= RTWN_RIDX_COUNT, ("increase ridx limit\n"));
memset(power, 0, max_mcs * sizeof(power[0]));
@@ -148,7 +148,7 @@ r92c_get_txpower(struct rtwn_softc *sc, int chain,
diff = rt->ht20_tx_pwr_diff[chain][group];
htpow += diff; /* HT40->HT20 correction. */
}
- for (ridx = RTWN_RIDX_MCS(0); ridx <= max_mcs; ridx++)
+ for (ridx = RTWN_RIDX_HT_MCS(0); ridx <= max_mcs; ridx++)
power[ridx] += htpow;
/* Apply max limit. */
@@ -158,9 +158,9 @@ r92c_get_txpower(struct rtwn_softc *sc, int chain,
}
}
-static void
+void
r92c_write_txpower(struct rtwn_softc *sc, int chain,
- uint16_t power[RTWN_RIDX_COUNT])
+ uint8_t power[RTWN_RIDX_COUNT])
{
uint32_t reg;
@@ -197,33 +197,33 @@ r92c_write_txpower(struct rtwn_softc *sc, int chain,
SM(R92C_TXAGC_RATE54, power[RTWN_RIDX_OFDM54]));
/* Write per-MCS Tx power. */
rtwn_bb_write(sc, R92C_TXAGC_MCS03_MCS00(chain),
- SM(R92C_TXAGC_MCS00, power[RTWN_RIDX_MCS(0)]) |
- SM(R92C_TXAGC_MCS01, power[RTWN_RIDX_MCS(1)]) |
- SM(R92C_TXAGC_MCS02, power[RTWN_RIDX_MCS(2)]) |
- SM(R92C_TXAGC_MCS03, power[RTWN_RIDX_MCS(3)]));
+ SM(R92C_TXAGC_MCS00, power[RTWN_RIDX_HT_MCS(0)]) |
+ SM(R92C_TXAGC_MCS01, power[RTWN_RIDX_HT_MCS(1)]) |
+ SM(R92C_TXAGC_MCS02, power[RTWN_RIDX_HT_MCS(2)]) |
+ SM(R92C_TXAGC_MCS03, power[RTWN_RIDX_HT_MCS(3)]));
rtwn_bb_write(sc, R92C_TXAGC_MCS07_MCS04(chain),
- SM(R92C_TXAGC_MCS04, power[RTWN_RIDX_MCS(4)]) |
- SM(R92C_TXAGC_MCS05, power[RTWN_RIDX_MCS(5)]) |
- SM(R92C_TXAGC_MCS06, power[RTWN_RIDX_MCS(6)]) |
- SM(R92C_TXAGC_MCS07, power[RTWN_RIDX_MCS(7)]));
+ SM(R92C_TXAGC_MCS04, power[RTWN_RIDX_HT_MCS(4)]) |
+ SM(R92C_TXAGC_MCS05, power[RTWN_RIDX_HT_MCS(5)]) |
+ SM(R92C_TXAGC_MCS06, power[RTWN_RIDX_HT_MCS(6)]) |
+ SM(R92C_TXAGC_MCS07, power[RTWN_RIDX_HT_MCS(7)]));
if (sc->ntxchains >= 2) {
rtwn_bb_write(sc, R92C_TXAGC_MCS11_MCS08(chain),
- SM(R92C_TXAGC_MCS08, power[RTWN_RIDX_MCS(8)]) |
- SM(R92C_TXAGC_MCS09, power[RTWN_RIDX_MCS(9)]) |
- SM(R92C_TXAGC_MCS10, power[RTWN_RIDX_MCS(10)]) |
- SM(R92C_TXAGC_MCS11, power[RTWN_RIDX_MCS(11)]));
+ SM(R92C_TXAGC_MCS08, power[RTWN_RIDX_HT_MCS(8)]) |
+ SM(R92C_TXAGC_MCS09, power[RTWN_RIDX_HT_MCS(9)]) |
+ SM(R92C_TXAGC_MCS10, power[RTWN_RIDX_HT_MCS(10)]) |
+ SM(R92C_TXAGC_MCS11, power[RTWN_RIDX_HT_MCS(11)]));
rtwn_bb_write(sc, R92C_TXAGC_MCS15_MCS12(chain),
- SM(R92C_TXAGC_MCS12, power[RTWN_RIDX_MCS(12)]) |
- SM(R92C_TXAGC_MCS13, power[RTWN_RIDX_MCS(13)]) |
- SM(R92C_TXAGC_MCS14, power[RTWN_RIDX_MCS(14)]) |
- SM(R92C_TXAGC_MCS15, power[RTWN_RIDX_MCS(15)]));
+ SM(R92C_TXAGC_MCS12, power[RTWN_RIDX_HT_MCS(12)]) |
+ SM(R92C_TXAGC_MCS13, power[RTWN_RIDX_HT_MCS(13)]) |
+ SM(R92C_TXAGC_MCS14, power[RTWN_RIDX_HT_MCS(14)]) |
+ SM(R92C_TXAGC_MCS15, power[RTWN_RIDX_HT_MCS(15)]));
}
}
static void
r92c_set_txpower(struct rtwn_softc *sc, struct ieee80211_channel *c)
{
- uint16_t power[RTWN_RIDX_COUNT];
+ uint8_t power[RTWN_RIDX_COUNT];
int i;
for (i = 0; i < sc->ntxchains; i++) {
@@ -233,7 +233,7 @@ r92c_set_txpower(struct rtwn_softc *sc, struct ieee80211_channel *c)
if (sc->sc_debug & RTWN_DEBUG_TXPWR) {
int max_mcs, ridx;
- max_mcs = RTWN_RIDX_MCS(sc->ntxchains * 8 - 1);
+ max_mcs = RTWN_RIDX_HT_MCS(sc->ntxchains * 8 - 1);
/* Dump per-rate Tx power values. */
printf("Tx power for chain %d:\n", i);
diff --git a/freebsd/sys/dev/rtwn/rtl8192c/r92c_fw.c b/freebsd/sys/dev/rtwn/rtl8192c/r92c_fw.c
index ab8b4989..e6c09eb2 100644
--- a/freebsd/sys/dev/rtwn/rtl8192c/r92c_fw.c
+++ b/freebsd/sys/dev/rtwn/rtl8192c/r92c_fw.c
@@ -200,7 +200,7 @@ r92c_send_ra_cmd(struct rtwn_softc *sc, int macid, uint32_t rates,
#endif
/* Set rates mask for unicast frames. */
- if (maxrate >= RTWN_RIDX_MCS(0))
+ if (maxrate >= RTWN_RIDX_HT_MCS(0))
mode = R92C_RAID_11GN;
else if (maxrate >= RTWN_RIDX_OFDM6)
mode = R92C_RAID_11BG;
diff --git a/freebsd/sys/dev/rtwn/rtl8192c/r92c_priv.h b/freebsd/sys/dev/rtwn/rtl8192c/r92c_priv.h
index 13c38fb2..80f05828 100644
--- a/freebsd/sys/dev/rtwn/rtl8192c/r92c_priv.h
+++ b/freebsd/sys/dev/rtwn/rtl8192c/r92c_priv.h
@@ -333,7 +333,7 @@ static const struct rtwn_rf_prog rtl8192c_rf[] = {
struct rtwn_r92c_txagc {
- uint8_t pwr[R92C_GROUP_2G][28]; /* RTWN_RIDX_MCS(15) + 1 */
+ uint8_t pwr[R92C_GROUP_2G][28]; /* RTWN_RIDX_HT_MCS(15) + 1 */
};
/*
diff --git a/freebsd/sys/dev/rtwn/rtl8192c/r92c_rx.c b/freebsd/sys/dev/rtwn/rtl8192c/r92c_rx.c
index b877fb88..80d2859c 100644
--- a/freebsd/sys/dev/rtwn/rtl8192c/r92c_rx.c
+++ b/freebsd/sys/dev/rtwn/rtl8192c/r92c_rx.c
@@ -119,7 +119,7 @@ r92c_get_rx_stats(struct rtwn_softc *sc, struct ieee80211_rx_stats *rxs,
rxs->c_pktflags |= IEEE80211_RX_F_AMPDU;
else if (rxdw1 & R92C_RXDW1_AMPDU_MORE)
rxs->c_pktflags |= IEEE80211_RX_F_AMPDU_MORE;
- if ((rxdw3 & R92C_RXDW3_SPLCP) && rate >= RTWN_RIDX_MCS(0))
+ if ((rxdw3 & R92C_RXDW3_SPLCP) && rate >= RTWN_RIDX_HT_MCS(0))
rxs->c_pktflags |= IEEE80211_RX_F_SHORTGI;
if (rxdw3 & R92C_RXDW3_HT40)
@@ -129,13 +129,13 @@ r92c_get_rx_stats(struct rtwn_softc *sc, struct ieee80211_rx_stats *rxs,
if (RTWN_RATE_IS_CCK(rate))
rxs->c_phytype = IEEE80211_RX_FP_11B;
- else if (rate < RTWN_RIDX_MCS(0))
+ else if (rate < RTWN_RIDX_HT_MCS(0))
rxs->c_phytype = IEEE80211_RX_FP_11G;
else
rxs->c_phytype = IEEE80211_RX_FP_11NG;
/* Map HW rate index to 802.11 rate. */
- if (rate < RTWN_RIDX_MCS(0)) {
+ if (rate < RTWN_RIDX_HT_MCS(0)) {
rxs->c_rate = ridx2rate[rate];
if (RTWN_RATE_IS_CCK(rate))
rxs->c_pktflags |= IEEE80211_RX_F_CCK;
diff --git a/freebsd/sys/dev/rtwn/rtl8192c/r92c_tx.c b/freebsd/sys/dev/rtwn/rtl8192c/r92c_tx.c
index c2a6eab0..5c80af90 100644
--- a/freebsd/sys/dev/rtwn/rtl8192c/r92c_tx.c
+++ b/freebsd/sys/dev/rtwn/rtl8192c/r92c_tx.c
@@ -101,7 +101,7 @@ r92c_tx_protection(struct rtwn_softc *sc, struct r92c_tx_desc *txd,
if (mode == IEEE80211_PROT_CTSONLY ||
mode == IEEE80211_PROT_RTSCTS) {
- if (ridx >= RTWN_RIDX_MCS(0))
+ if (ridx >= RTWN_RIDX_HT_MCS(0))
rate = rtwn_ctl_mcsrate(ic->ic_rt, ridx);
else
rate = ieee80211_ctl_rate(ic->ic_rt, ridx2rate[ridx]);
@@ -287,7 +287,7 @@ r92c_fill_tx_desc(struct rtwn_softc *sc, struct ieee80211_node *ni,
txd->txdw4 |= htole32(R92C_TXDW4_DATA_SHPRE);
prot = IEEE80211_PROT_NONE;
- if (ridx >= RTWN_RIDX_MCS(0)) {
+ if (ridx >= RTWN_RIDX_HT_MCS(0)) {
r92c_tx_set_ht40(sc, txd, ni);
r92c_tx_set_sgi(sc, txd, ni);
prot = ic->ic_htprotmode;
diff --git a/freebsd/sys/dev/rtwn/rtl8192c/r92c_var.h b/freebsd/sys/dev/rtwn/rtl8192c/r92c_var.h
index c48318d9..79592449 100644
--- a/freebsd/sys/dev/rtwn/rtl8192c/r92c_var.h
+++ b/freebsd/sys/dev/rtwn/rtl8192c/r92c_var.h
@@ -53,7 +53,7 @@ struct r92c_softc {
void (*rs_set_bw20)(struct rtwn_softc *, uint8_t);
void (*rs_get_txpower)(struct rtwn_softc *, int,
- struct ieee80211_channel *, uint16_t[]);
+ struct ieee80211_channel *, uint8_t[]);
void (*rs_set_gain)(struct rtwn_softc *, uint8_t);
void (*rs_tx_enable_ampdu)(void *, int);
void (*rs_tx_setup_hwseq)(void *);
diff --git a/freebsd/sys/dev/rtwn/rtl8192e/r92e_chan.c b/freebsd/sys/dev/rtwn/rtl8192e/r92e_chan.c
index 130ac5ca..0046b9f0 100644
--- a/freebsd/sys/dev/rtwn/rtl8192e/r92e_chan.c
+++ b/freebsd/sys/dev/rtwn/rtl8192e/r92e_chan.c
@@ -59,6 +59,8 @@ __FBSDID("$FreeBSD$");
#include <dev/rtwn/if_rtwn_ridx.h>
#include <dev/rtwn/if_rtwn_rx.h>
+#include <dev/rtwn/rtl8192c/r92c.h>
+
#include <dev/rtwn/rtl8192e/r92e.h>
#include <dev/rtwn/rtl8192e/r92e_reg.h>
#include <dev/rtwn/rtl8192e/r92e_var.h>
@@ -102,7 +104,7 @@ r92e_get_txpower(struct rtwn_softc *sc, int chain, struct ieee80211_channel *c,
return;
}
- max_mcs = RTWN_RIDX_MCS(sc->ntxchains * 8 - 1);
+ max_mcs = RTWN_RIDX_HT_MCS(sc->ntxchains * 8 - 1);
/* XXX regulatory */
/* XXX net80211 regulatory */
@@ -124,7 +126,7 @@ r92e_get_txpower(struct rtwn_softc *sc, int chain, struct ieee80211_channel *c,
else
pwr_diff = rs->bw20_tx_pwr_diff_2g[chain][i];
- min_mcs = RTWN_RIDX_MCS(i * 8);
+ min_mcs = RTWN_RIDX_HT_MCS(i * 8);
for (ridx = min_mcs; ridx <= max_mcs; ridx++)
power[ridx] += pwr_diff;
@@ -146,69 +148,6 @@ r92e_get_txpower(struct rtwn_softc *sc, int chain, struct ieee80211_channel *c,
#endif
}
-
-static void
-r92e_write_txpower(struct rtwn_softc *sc, int chain,
- uint8_t power[RTWN_RIDX_COUNT])
-{
- uint32_t reg;
-
- /* Write per-CCK rate Tx power. */
- if (chain == 0) {
- reg = rtwn_bb_read(sc, R92C_TXAGC_A_CCK1_MCS32);
- reg = RW(reg, R92C_TXAGC_A_CCK1, power[RTWN_RIDX_CCK1]);
- rtwn_bb_write(sc, R92C_TXAGC_A_CCK1_MCS32, reg);
- reg = rtwn_bb_read(sc, R92C_TXAGC_B_CCK11_A_CCK2_11);
- reg = RW(reg, R92C_TXAGC_A_CCK2, power[RTWN_RIDX_CCK2]);
- reg = RW(reg, R92C_TXAGC_A_CCK55, power[RTWN_RIDX_CCK55]);
- reg = RW(reg, R92C_TXAGC_A_CCK11, power[RTWN_RIDX_CCK11]);
- rtwn_bb_write(sc, R92C_TXAGC_B_CCK11_A_CCK2_11, reg);
- } else {
- reg = rtwn_bb_read(sc, R92C_TXAGC_B_CCK1_55_MCS32);
- reg = RW(reg, R92C_TXAGC_B_CCK1, power[RTWN_RIDX_CCK1]);
- reg = RW(reg, R92C_TXAGC_B_CCK2, power[RTWN_RIDX_CCK2]);
- reg = RW(reg, R92C_TXAGC_B_CCK55, power[RTWN_RIDX_CCK55]);
- rtwn_bb_write(sc, R92C_TXAGC_B_CCK1_55_MCS32, reg);
- reg = rtwn_bb_read(sc, R92C_TXAGC_B_CCK11_A_CCK2_11);
- reg = RW(reg, R92C_TXAGC_B_CCK11, power[RTWN_RIDX_CCK11]);
- rtwn_bb_write(sc, R92C_TXAGC_B_CCK11_A_CCK2_11, reg);
- }
- /* Write per-OFDM rate Tx power. */
- rtwn_bb_write(sc, R92C_TXAGC_RATE18_06(chain),
- SM(R92C_TXAGC_RATE06, power[RTWN_RIDX_OFDM6]) |
- SM(R92C_TXAGC_RATE09, power[RTWN_RIDX_OFDM9]) |
- SM(R92C_TXAGC_RATE12, power[RTWN_RIDX_OFDM12]) |
- SM(R92C_TXAGC_RATE18, power[RTWN_RIDX_OFDM18]));
- rtwn_bb_write(sc, R92C_TXAGC_RATE54_24(chain),
- SM(R92C_TXAGC_RATE24, power[RTWN_RIDX_OFDM24]) |
- SM(R92C_TXAGC_RATE36, power[RTWN_RIDX_OFDM36]) |
- SM(R92C_TXAGC_RATE48, power[RTWN_RIDX_OFDM48]) |
- SM(R92C_TXAGC_RATE54, power[RTWN_RIDX_OFDM54]));
- /* Write per-MCS Tx power. */
- rtwn_bb_write(sc, R92C_TXAGC_MCS03_MCS00(chain),
- SM(R92C_TXAGC_MCS00, power[RTWN_RIDX_MCS(0)]) |
- SM(R92C_TXAGC_MCS01, power[RTWN_RIDX_MCS(1)]) |
- SM(R92C_TXAGC_MCS02, power[RTWN_RIDX_MCS(2)]) |
- SM(R92C_TXAGC_MCS03, power[RTWN_RIDX_MCS(3)]));
- rtwn_bb_write(sc, R92C_TXAGC_MCS07_MCS04(chain),
- SM(R92C_TXAGC_MCS04, power[RTWN_RIDX_MCS(4)]) |
- SM(R92C_TXAGC_MCS05, power[RTWN_RIDX_MCS(5)]) |
- SM(R92C_TXAGC_MCS06, power[RTWN_RIDX_MCS(6)]) |
- SM(R92C_TXAGC_MCS07, power[RTWN_RIDX_MCS(7)]));
- if (sc->ntxchains >= 2) {
- rtwn_bb_write(sc, R92C_TXAGC_MCS11_MCS08(chain),
- SM(R92C_TXAGC_MCS08, power[RTWN_RIDX_MCS(8)]) |
- SM(R92C_TXAGC_MCS09, power[RTWN_RIDX_MCS(9)]) |
- SM(R92C_TXAGC_MCS10, power[RTWN_RIDX_MCS(10)]) |
- SM(R92C_TXAGC_MCS11, power[RTWN_RIDX_MCS(11)]));
- rtwn_bb_write(sc, R92C_TXAGC_MCS15_MCS12(chain),
- SM(R92C_TXAGC_MCS12, power[RTWN_RIDX_MCS(12)]) |
- SM(R92C_TXAGC_MCS13, power[RTWN_RIDX_MCS(13)]) |
- SM(R92C_TXAGC_MCS14, power[RTWN_RIDX_MCS(14)]) |
- SM(R92C_TXAGC_MCS15, power[RTWN_RIDX_MCS(15)]));
- }
-}
-
static void
r92e_set_txpower(struct rtwn_softc *sc, struct ieee80211_channel *c)
{
@@ -220,7 +159,7 @@ r92e_set_txpower(struct rtwn_softc *sc, struct ieee80211_channel *c)
/* Compute per-rate Tx power values. */
r92e_get_txpower(sc, i, c, power);
/* Write per-rate Tx power values to hardware. */
- r92e_write_txpower(sc, i, power);
+ r92c_write_txpower(sc, i, power);
}
}
diff --git a/freebsd/sys/dev/rtwn/rtl8812a/r12a_chan.c b/freebsd/sys/dev/rtwn/rtl8812a/r12a_chan.c
index 27a71bd9..1f18bf56 100644
--- a/freebsd/sys/dev/rtwn/rtl8812a/r12a_chan.c
+++ b/freebsd/sys/dev/rtwn/rtl8812a/r12a_chan.c
@@ -91,26 +91,26 @@ r12a_write_txpower(struct rtwn_softc *sc, int chain,
SM(R12A_TXAGC_OFDM54, power[RTWN_RIDX_OFDM54]));
/* Write per-MCS Tx power. */
rtwn_bb_write(sc, R12A_TXAGC_MCS3_0(chain),
- SM(R12A_TXAGC_MCS0, power[RTWN_RIDX_MCS(0)]) |
- SM(R12A_TXAGC_MCS1, power[RTWN_RIDX_MCS(1)]) |
- SM(R12A_TXAGC_MCS2, power[RTWN_RIDX_MCS(2)]) |
- SM(R12A_TXAGC_MCS3, power[RTWN_RIDX_MCS(3)]));
+ SM(R12A_TXAGC_MCS0, power[RTWN_RIDX_HT_MCS(0)]) |
+ SM(R12A_TXAGC_MCS1, power[RTWN_RIDX_HT_MCS(1)]) |
+ SM(R12A_TXAGC_MCS2, power[RTWN_RIDX_HT_MCS(2)]) |
+ SM(R12A_TXAGC_MCS3, power[RTWN_RIDX_HT_MCS(3)]));
rtwn_bb_write(sc, R12A_TXAGC_MCS7_4(chain),
- SM(R12A_TXAGC_MCS4, power[RTWN_RIDX_MCS(4)]) |
- SM(R12A_TXAGC_MCS5, power[RTWN_RIDX_MCS(5)]) |
- SM(R12A_TXAGC_MCS6, power[RTWN_RIDX_MCS(6)]) |
- SM(R12A_TXAGC_MCS7, power[RTWN_RIDX_MCS(7)]));
+ SM(R12A_TXAGC_MCS4, power[RTWN_RIDX_HT_MCS(4)]) |
+ SM(R12A_TXAGC_MCS5, power[RTWN_RIDX_HT_MCS(5)]) |
+ SM(R12A_TXAGC_MCS6, power[RTWN_RIDX_HT_MCS(6)]) |
+ SM(R12A_TXAGC_MCS7, power[RTWN_RIDX_HT_MCS(7)]));
if (sc->ntxchains >= 2) {
rtwn_bb_write(sc, R12A_TXAGC_MCS11_8(chain),
- SM(R12A_TXAGC_MCS8, power[RTWN_RIDX_MCS(8)]) |
- SM(R12A_TXAGC_MCS9, power[RTWN_RIDX_MCS(9)]) |
- SM(R12A_TXAGC_MCS10, power[RTWN_RIDX_MCS(10)]) |
- SM(R12A_TXAGC_MCS11, power[RTWN_RIDX_MCS(11)]));
+ SM(R12A_TXAGC_MCS8, power[RTWN_RIDX_HT_MCS(8)]) |
+ SM(R12A_TXAGC_MCS9, power[RTWN_RIDX_HT_MCS(9)]) |
+ SM(R12A_TXAGC_MCS10, power[RTWN_RIDX_HT_MCS(10)]) |
+ SM(R12A_TXAGC_MCS11, power[RTWN_RIDX_HT_MCS(11)]));
rtwn_bb_write(sc, R12A_TXAGC_MCS15_12(chain),
- SM(R12A_TXAGC_MCS12, power[RTWN_RIDX_MCS(12)]) |
- SM(R12A_TXAGC_MCS13, power[RTWN_RIDX_MCS(13)]) |
- SM(R12A_TXAGC_MCS14, power[RTWN_RIDX_MCS(14)]) |
- SM(R12A_TXAGC_MCS15, power[RTWN_RIDX_MCS(15)]));
+ SM(R12A_TXAGC_MCS12, power[RTWN_RIDX_HT_MCS(12)]) |
+ SM(R12A_TXAGC_MCS13, power[RTWN_RIDX_HT_MCS(13)]) |
+ SM(R12A_TXAGC_MCS14, power[RTWN_RIDX_HT_MCS(14)]) |
+ SM(R12A_TXAGC_MCS15, power[RTWN_RIDX_HT_MCS(15)]));
}
/* TODO: VHT rates */
@@ -178,7 +178,7 @@ r12a_get_txpower(struct rtwn_softc *sc, int chain,
}
/* TODO: VHT rates. */
- max_mcs = RTWN_RIDX_MCS(sc->ntxchains * 8 - 1);
+ max_mcs = RTWN_RIDX_HT_MCS(sc->ntxchains * 8 - 1);
/* XXX regulatory */
/* XXX net80211 regulatory */
@@ -207,7 +207,7 @@ r12a_get_txpower(struct rtwn_softc *sc, int chain,
else
pwr_diff = rs->bw20_tx_pwr_diff_2g[chain][i];
- min_mcs = RTWN_RIDX_MCS(i * 8);
+ min_mcs = RTWN_RIDX_HT_MCS(i * 8);
for (ridx = min_mcs; ridx <= max_mcs; ridx++)
power[ridx] += pwr_diff;
}
@@ -233,7 +233,7 @@ r12a_get_txpower(struct rtwn_softc *sc, int chain,
else
pwr_diff = rs->bw20_tx_pwr_diff_5g[chain][i];
- min_mcs = RTWN_RIDX_MCS(i * 8);
+ min_mcs = RTWN_RIDX_HT_MCS(i * 8);
for (ridx = min_mcs; ridx <= max_mcs; ridx++)
power[ridx] += pwr_diff;
}
diff --git a/freebsd/sys/dev/rtwn/rtl8812a/r12a_rx.c b/freebsd/sys/dev/rtwn/rtl8812a/r12a_rx.c
index dd90d7e9..c2dc4c3a 100644
--- a/freebsd/sys/dev/rtwn/rtl8812a/r12a_rx.c
+++ b/freebsd/sys/dev/rtwn/rtl8812a/r12a_rx.c
@@ -264,7 +264,7 @@ r12a_get_rx_stats(struct rtwn_softc *sc, struct ieee80211_rx_stats *rxs,
rxs->c_pktflags |= IEEE80211_RX_F_AMPDU_MORE;
}
- if ((rxdw4 & R12A_RXDW4_SPLCP) && rate >= RTWN_RIDX_MCS(0))
+ if ((rxdw4 & R12A_RXDW4_SPLCP) && rate >= RTWN_RIDX_HT_MCS(0))
rxs->c_pktflags |= IEEE80211_RX_F_SHORTGI;
switch (MS(rxdw4, R12A_RXDW4_BW)) {
@@ -290,7 +290,7 @@ r12a_get_rx_stats(struct rtwn_softc *sc, struct ieee80211_rx_stats *rxs,
/* XXX check with RTL8812AU */
is5ghz = (physt->cfosho[2] != 0x01);
- if (rate < RTWN_RIDX_MCS(0)) {
+ if (rate < RTWN_RIDX_HT_MCS(0)) {
if (is5ghz)
rxs->c_phytype = IEEE80211_RX_FP_11A;
else
@@ -304,7 +304,7 @@ r12a_get_rx_stats(struct rtwn_softc *sc, struct ieee80211_rx_stats *rxs,
}
/* Map HW rate index to 802.11 rate. */
- if (rate < RTWN_RIDX_MCS(0)) {
+ if (rate < RTWN_RIDX_HT_MCS(0)) {
rxs->c_rate = ridx2rate[rate];
if (RTWN_RATE_IS_CCK(rate))
rxs->c_pktflags |= IEEE80211_RX_F_CCK;
diff --git a/freebsd/sys/dev/rtwn/rtl8812a/r12a_tx.c b/freebsd/sys/dev/rtwn/rtl8812a/r12a_tx.c
index 895f71e4..77e9e423 100644
--- a/freebsd/sys/dev/rtwn/rtl8812a/r12a_tx.c
+++ b/freebsd/sys/dev/rtwn/rtl8812a/r12a_tx.c
@@ -109,7 +109,7 @@ r12a_tx_protection(struct rtwn_softc *sc, struct r12a_tx_desc *txd,
if (mode == IEEE80211_PROT_CTSONLY ||
mode == IEEE80211_PROT_RTSCTS) {
- if (ridx >= RTWN_RIDX_MCS(0))
+ if (ridx >= RTWN_RIDX_HT_MCS(0))
rate = rtwn_ctl_mcsrate(ic->ic_rt, ridx);
else
rate = ieee80211_ctl_rate(ic->ic_rt, ridx2rate[ridx]);
@@ -294,7 +294,7 @@ r12a_fill_tx_desc(struct rtwn_softc *sc, struct ieee80211_node *ni,
txd->txdw5 |= htole32(R12A_TXDW5_DATA_SHORT);
prot = IEEE80211_PROT_NONE;
- if (ridx >= RTWN_RIDX_MCS(0)) {
+ if (ridx >= RTWN_RIDX_HT_MCS(0)) {
r12a_tx_set_ht40(sc, txd, ni);
r12a_tx_set_sgi(sc, txd, ni);
r12a_tx_set_ldpc(sc, txd, ni);