Module Name: src
Committed By: christos
Date: Fri Jul 8 01:24:53 UTC 2016
Modified Files:
src/sys/dev/ic: rt2860.c rt2860reg.h rt2860var.h
Log Message:
more fixes.
To generate a diff of this commit:
cvs rdiff -u -r1.19 -r1.20 src/sys/dev/ic/rt2860.c
cvs rdiff -u -r1.4 -r1.5 src/sys/dev/ic/rt2860reg.h
cvs rdiff -u -r1.2 -r1.3 src/sys/dev/ic/rt2860var.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/dev/ic/rt2860.c
diff -u src/sys/dev/ic/rt2860.c:1.19 src/sys/dev/ic/rt2860.c:1.20
--- src/sys/dev/ic/rt2860.c:1.19 Wed Jul 6 22:18:05 2016
+++ src/sys/dev/ic/rt2860.c Thu Jul 7 21:24:53 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: rt2860.c,v 1.19 2016/07/07 02:18:05 christos Exp $ */
+/* $NetBSD: rt2860.c,v 1.20 2016/07/08 01:24:53 christos Exp $ */
/* $OpenBSD: rt2860.c,v 1.90 2016/04/13 10:49:26 mpi Exp $ */
/* $FreeBSD: head/sys/dev/ral/rt2860.c 297793 2016-04-10 23:07:00Z pfg $ */
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rt2860.c,v 1.19 2016/07/07 02:18:05 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rt2860.c,v 1.20 2016/07/08 01:24:53 christos Exp $");
#include <sys/param.h>
#include <sys/sockio.h>
@@ -63,10 +63,13 @@ __KERNEL_RCSID(0, "$NetBSD: rt2860.c,v 1
#include <dev/pci/pcidevs.h>
+#ifndef RAL_DEBUG
+#define RAL_DEBUG
+#endif
#ifdef RAL_DEBUG
#define DPRINTF(x) do { if (rt2860_debug > 0) printf x; } while (0)
#define DPRINTFN(n, x) do { if (rt2860_debug >= (n)) printf x; } while (0)
-int rt2860_debug = 4;
+int rt2860_debug = 0;
#else
#define DPRINTF(x)
#define DPRINTFN(n, x)
@@ -92,6 +95,7 @@ static struct ieee80211_node *rt2860_nod
static int rt2860_media_change(struct ifnet *);
static void rt2860_iter_func(void *, struct ieee80211_node *);
static void rt2860_updatestats(struct rt2860_softc *);
+static void rt2860_update_promisc(struct ifnet *);
static void rt2860_newassoc(struct ieee80211_node *,
int);
#ifdef notyet
@@ -142,6 +146,7 @@ static void rt2860_set_macaddr(struct rt
static void rt2860_updateslot(struct ifnet *);
static void rt2860_updateprot(struct ieee80211com *);
static int rt2860_updateedca(struct ieee80211com *);
+
#ifdef HW_CRYPTO
static int rt2860_set_key(struct ieee80211com *,
const struct ieee80211_key *, const uint8_t *);
@@ -149,7 +154,7 @@ static int rt2860_delete_key(struct ieee
const struct ieee80211_key *);
#endif
static int8_t rt2860_rssi2dbm(struct rt2860_softc *, uint8_t, uint8_t);
-static const char * rt2860_get_rf(uint8_t);
+static const char * rt2860_get_rf(uint32_t);
static int rt2860_read_eeprom(struct rt2860_softc *);
static int rt2860_bbp_init(struct rt2860_softc *);
static int rt5390_bbp_init(struct rt2860_softc *);
@@ -404,11 +409,11 @@ rt2860_attachhook(device_t self)
bpf_attach2(ifp, DLT_IEEE802_11_RADIO,
sizeof (struct ieee80211_frame) + 64, &sc->sc_drvbpf);
- sc->sc_rxtap_len = sizeof sc->sc_rxtapu;
+ sc->sc_rxtap_len = roundup(sizeof(sc->sc_rxtap), sizeof(u_int32_t));
sc->sc_rxtap.wr_ihdr.it_len = htole16(sc->sc_rxtap_len);
sc->sc_rxtap.wr_ihdr.it_present = htole32(RT2860_RX_RADIOTAP_PRESENT);
- sc->sc_txtap_len = sizeof sc->sc_txtapu;
+ sc->sc_txtap_len = roundup(sizeof(sc->sc_txtap), sizeof(u_int32_t));
sc->sc_txtap.wt_ihdr.it_len = htole16(sc->sc_txtap_len);
sc->sc_txtap.wt_ihdr.it_present = htole32(RT2860_TX_RADIOTAP_PRESENT);
@@ -821,9 +826,9 @@ rt2860_free_rx_ring(struct rt2860_softc
static struct ieee80211_node *
rt2860_node_alloc(struct ieee80211_node_table *nt)
{
- struct rt2860_node *rn =
- malloc(sizeof (struct rt2860_node), M_DEVBUF, M_NOWAIT | M_ZERO);
- return (rn) ? &rn->ni : NULL;
+ struct rt2860_node *rn = malloc(sizeof(*rn), M_80211_NODE,
+ M_NOWAIT | M_ZERO);
+ return rn ? &rn->ni : NULL;
}
static int
@@ -1006,7 +1011,7 @@ rt2860_newstate(struct ieee80211com *ic,
break;
case IEEE80211_S_SCAN:
- rt2860_switch_chan(sc, ic->ic_bss->ni_chan);
+ rt2860_switch_chan(sc, ic->ic_curchan);
if (ostate != IEEE80211_S_SCAN)
rt2860_set_gp_timer(sc, 150);
break;
@@ -1014,12 +1019,12 @@ rt2860_newstate(struct ieee80211com *ic,
case IEEE80211_S_AUTH:
case IEEE80211_S_ASSOC:
rt2860_set_gp_timer(sc, 0);
- rt2860_switch_chan(sc, ic->ic_bss->ni_chan);
+ rt2860_switch_chan(sc, ic->ic_curchan);
break;
case IEEE80211_S_RUN:
rt2860_set_gp_timer(sc, 0);
- rt2860_switch_chan(sc, ic->ic_bss->ni_chan);
+ rt2860_switch_chan(sc, ic->ic_curchan);
if (ic->ic_opmode != IEEE80211_M_MONITOR) {
rt2860_updateslot(ic->ic_ifp);
@@ -1308,15 +1313,6 @@ rt2860_rx_intr(struct rt2860_softc *sc)
goto skip;
}
-#ifdef HW_CRYPTO
- if (__predict_false(rxd->flags & htole32(RT2860_RX_MICERR))) {
- /* report MIC failures to net80211 for TKIP */
- ieee80211_notify_michael_failure(ic, wh, 0/* XXX */);
- DPRINTF(("error2 %#x\n", rxd->flags));
- ifp->if_ierrors++;
- goto skip;
- }
-#endif
MGETHDR(m1, M_DONTWAIT, MT_DATA);
if (__predict_false(m1 == NULL)) {
@@ -1388,6 +1384,15 @@ rt2860_rx_intr(struct rt2860_softc *sc)
wh = mtod(m, struct ieee80211_frame *);
}
+#ifdef HW_CRYPTO
+ if (__predict_false(rxd->flags & htole32(RT2860_RX_MICERR))) {
+ /* report MIC failures to net80211 for TKIP */
+ ieee80211_notify_michael_failure(ic, wh, 0/* XXX */);
+ DPRINTF(("error2 %#x\n", rxd->flags));
+ ifp->if_ierrors++;
+ goto skip;
+ }
+#endif
ant = rt2860_maxrssi_chain(sc, rxwi);
rssi = rxwi->rssi[ant];
@@ -1573,6 +1578,19 @@ rt2860_tx(struct rt2860_softc *sc, struc
data = SLIST_FIRST(&sc->data_pool);
wh = mtod(m, struct ieee80211_frame *);
+#if 0
+ if (wh->i_fc[1] & IEEE80211_FC1_WEP) {
+ struct ieee80211_key *k = ieee80211_crypto_encap(ic, ni, m);
+ if (k == NULL) {
+ m_freem(m);
+ return ENOBUFS;
+ }
+
+ /* packet header may have moved, reset our local pointer */
+ wh = mtod(m, struct ieee80211_frame *);
+ }
+#endif
+
hdrlen = ieee80211_hdrspace(ic, wh);
type = wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK;
@@ -1705,7 +1723,8 @@ rt2860_tx(struct rt2860_softc *sc, struc
/* first segment is TXWI + 802.11 header */
txd = &ring->txd[ring->cur];
txd->sdp0 = htole32(data->paddr);
- txd->sdl0 = htole16(sizeof (struct rt2860_txwi) + hdrlen);
+ int pad = (hdrlen + 3) & ~3;
+ txd->sdl0 = htole16(sizeof (struct rt2860_txwi) + pad);
txd->flags = qsel;
/* setup payload segments */
@@ -1863,6 +1882,7 @@ rt2860_ioctl(struct ifnet *ifp, u_long c
break;
switch (ifp->if_flags & (IFF_UP|IFF_RUNNING)) {
case IFF_UP|IFF_RUNNING:
+ rt2860_update_promisc(ifp);
break;
case IFF_UP:
rt2860_init(ifp);
@@ -2846,10 +2866,12 @@ rt3090_rf_setup(struct rt2860_softc *sc)
RAL_WRITE(sc, RT2860_TX_SW_CFG2, 0);
/* initialize RF registers from ROM */
- for (i = 0; i < 10; i++) {
- if (sc->rf[i].reg == 0 || sc->rf[i].reg == 0xff)
- continue;
- rt3090_rf_write(sc, sc->rf[i].reg, sc->rf[i].val);
+ if (sc->mac_ver < 0x5390) {
+ for (i = 0; i < 10; i++) {
+ if (sc->rf[i].reg == 0 || sc->rf[i].reg == 0xff)
+ continue;
+ rt3090_rf_write(sc, sc->rf[i].reg, sc->rf[i].val);
+ }
}
}
@@ -2941,6 +2963,19 @@ rt2860_updateprot(struct ieee80211com *i
RAL_WRITE(sc, RT2860_OFDM_PROT_CFG, tmp);
}
+static void
+rt2860_update_promisc(struct ifnet *ifp)
+{
+ struct rt2860_softc *sc = ifp->if_softc;
+ uint32_t tmp;
+
+ tmp = RAL_READ(sc, RT2860_RX_FILTR_CFG);
+ tmp &= ~RT2860_DROP_NOT_MYBSS;
+ if (!(ifp->if_flags & IFF_PROMISC))
+ tmp |= RT2860_DROP_NOT_MYBSS;
+ RAL_WRITE(sc, RT2860_RX_FILTR_CFG, tmp);
+}
+
static int
rt2860_updateedca(struct ieee80211com *ic)
{
@@ -2993,11 +3028,6 @@ rt2860_set_key(struct ieee80211com *ic,
uint8_t mode, wcid, iv[8];
struct ieee80211_key *k = __UNCONST(ck); /* XXX */
- /* defer setting of WEP keys until interface is brought up */
- if ((ic->ic_if.if_flags & (IFF_UP | IFF_RUNNING)) !=
- (IFF_UP | IFF_RUNNING))
- return 0;
-
/* map net80211 cipher to RT2860 security mode */
switch (k->wk_cipher->ic_cipher) {
case IEEE80211_CIPHER_WEP:
@@ -3084,7 +3114,7 @@ rt2860_set_key(struct ieee80211com *ic,
attr = (attr & ~0xf) | (mode << 1) | RT2860_RX_PKEY_EN;
RAL_WRITE(sc, RT2860_WCID_ATTR(wcid), attr);
}
- return 1;
+ return 0;
}
static int
@@ -3158,7 +3188,7 @@ b4inc(uint32_t b32, int8_t delta)
}
static const char *
-rt2860_get_rf(uint8_t rev)
+rt2860_get_rf(uint32_t rev)
{
switch (rev) {
case RT2860_RF_2820: return "RT2820";
@@ -3172,6 +3202,7 @@ rt2860_get_rf(uint8_t rev)
case RT3070_RF_3052: return "RT3052";
case RT3070_RF_3320: return "RT3320";
case RT3070_RF_3053: return "RT3053";
+ case RT5390_RF_5360: return "RT5360";
case RT5390_RF_5390: return "RT5390";
default: return "unknown";
}
@@ -3254,7 +3285,11 @@ rt2860_read_eeprom(struct rt2860_softc *
/* read RF information */
val = rt2860_srom_read(sc, RT2860_EEPROM_ANTENNA);
- if (val == 0xffff) {
+ if (sc->mac_ver >= 0x5390) {
+ sc->rf_rev = rt2860_srom_read(sc, RT2860_EEPROM_CHIPID);
+ sc->ntxchains = (val >> 4) & 0xf;
+ sc->nrxchains = val & 0xf;
+ } else if (val == 0xffff) {
DPRINTF(("invalid EEPROM antenna info, using default\n"));
if (sc->mac_ver == 0x3593) {
/* default to RF3053 3T3R */
@@ -3274,13 +3309,8 @@ rt2860_read_eeprom(struct rt2860_softc *
}
} else {
sc->rf_rev = (val >> 8) & 0xf;
- if (sc->mac_ver >= 0x5390) {
- sc->ntxchains = (sc->mac_ver == 0x5392) ? 2 : 1;
- sc->nrxchains = (sc->mac_ver == 0x5392) ? 2 : 1;
- } else {
- sc->ntxchains = (val >> 4) & 0xf;
- sc->nrxchains = val & 0xf;
- }
+ sc->ntxchains = (val >> 4) & 0xf;
+ sc->nrxchains = val & 0xf;
}
DPRINTF(("EEPROM RF rev=0x%02x chains=%dT%dR\n",
sc->rf_rev, sc->ntxchains, sc->nrxchains));
@@ -3295,7 +3325,7 @@ rt2860_read_eeprom(struct rt2860_softc *
sc->ext_5ghz_lna = (val >> 3) & 1;
sc->ext_2ghz_lna = (val >> 2) & 1;
/* check if RF supports automatic Tx access gain control */
- sc->calib_2ghz = sc->calib_5ghz = 0; /* XXX (val >> 1) & 1 */;
+ sc->calib_2ghz = sc->calib_5ghz = 0; /* XXX (val >> 1) & 1 */
/* check if we have a hardware radio switch */
sc->rfswitch = val & 1;
}
@@ -3332,7 +3362,7 @@ rt2860_read_eeprom(struct rt2860_softc *
sc->txpow1[i] = 5;
if (sc->mac_ver != 0x5390) {
if (sc->txpow2[i] < 0 ||
- sc->txpow2[i] > ((sc->mac_ver >= 0x5390) ? 39 : 31))
+ sc->txpow2[i] > ((sc->mac_ver >= 0x5392) ? 39 : 31))
sc->txpow2[i] = 5;
}
DPRINTF(("chan %d: power1=%d, power2=%d\n",
@@ -3664,9 +3694,16 @@ rt2860_init(struct ifnet *ifp)
/* disable DMA */
tmp = RAL_READ(sc, RT2860_WPDMA_GLO_CFG);
- tmp &= 0xff0;
+ tmp &= ~(RT2860_RX_DMA_BUSY | RT2860_RX_DMA_EN | RT2860_TX_DMA_BUSY |
+ RT2860_TX_DMA_EN);
+ tmp |= RT2860_TX_WB_DDONE;
RAL_WRITE(sc, RT2860_WPDMA_GLO_CFG, tmp);
+ /* reset DMA indexes */
+ RAL_WRITE(sc, RT2860_WPDMA_RST_IDX, RT2860_RST_DRX_IDX0 |
+ RT2860_RST_DTX_IDX5 | RT2860_RST_DTX_IDX4 | RT2860_RST_DTX_IDX3 |
+ RT2860_RST_DTX_IDX2 | RT2860_RST_DTX_IDX1 | RT2860_RST_DTX_IDX0);
+
/* PBF hardware reset */
RAL_WRITE(sc, RT2860_SYS_CTRL, 0xe1f);
RAL_BARRIER_WRITE(sc);
@@ -3701,7 +3738,9 @@ rt2860_init(struct ifnet *ifp)
rt2860_stop(ifp, 1);
return ETIMEDOUT;
}
- tmp &= 0xff0;
+ tmp &= ~(RT2860_RX_DMA_BUSY | RT2860_RX_DMA_EN | RT2860_TX_DMA_BUSY |
+ RT2860_TX_DMA_EN);
+ tmp |= RT2860_TX_WB_DDONE;
RAL_WRITE(sc, RT2860_WPDMA_GLO_CFG, tmp);
/* reset Rx ring and all 6 Tx rings */
@@ -3818,7 +3857,8 @@ rt2860_init(struct ifnet *ifp)
/* select Main antenna for 1T1R devices */
if (sc->rf_rev == RT3070_RF_2020 ||
sc->rf_rev == RT3070_RF_3020 ||
- sc->rf_rev == RT3070_RF_3320)
+ sc->rf_rev == RT3070_RF_3320 ||
+ sc->mac_ver == 0x5390)
rt3090_set_rx_antenna(sc, 0);
/* send LEDs operating mode to microcontroller */
@@ -4041,15 +4081,25 @@ rt3090_set_rx_antenna(struct rt2860_soft
uint32_t tmp;
if (aux) {
- tmp = RAL_READ(sc, RT2860_PCI_EECTRL);
- RAL_WRITE(sc, RT2860_PCI_EECTRL, tmp & ~RT2860_C);
- tmp = RAL_READ(sc, RT2860_GPIO_CTRL);
- RAL_WRITE(sc, RT2860_GPIO_CTRL, (tmp & ~0x0808) | 0x08);
+ if (sc->mac_ver == 0x5390) {
+ rt2860_mcu_bbp_write(sc, 152,
+ rt2860_mcu_bbp_read(sc, 152) & ~0x80);
+ } else {
+ tmp = RAL_READ(sc, RT2860_PCI_EECTRL);
+ RAL_WRITE(sc, RT2860_PCI_EECTRL, tmp & ~RT2860_C);
+ tmp = RAL_READ(sc, RT2860_GPIO_CTRL);
+ RAL_WRITE(sc, RT2860_GPIO_CTRL, (tmp & ~0x0808) | 0x08);
+ }
} else {
- tmp = RAL_READ(sc, RT2860_PCI_EECTRL);
- RAL_WRITE(sc, RT2860_PCI_EECTRL, tmp | RT2860_C);
- tmp = RAL_READ(sc, RT2860_GPIO_CTRL);
- RAL_WRITE(sc, RT2860_GPIO_CTRL, tmp & ~0x0808);
+ if (sc->mac_ver == 0x5390) {
+ rt2860_mcu_bbp_write(sc, 152,
+ rt2860_mcu_bbp_read(sc, 152) | 0x80);
+ } else {
+ tmp = RAL_READ(sc, RT2860_PCI_EECTRL);
+ RAL_WRITE(sc, RT2860_PCI_EECTRL, tmp | RT2860_C);
+ tmp = RAL_READ(sc, RT2860_GPIO_CTRL);
+ RAL_WRITE(sc, RT2860_GPIO_CTRL, tmp & ~0x0808);
+ }
}
}
@@ -4060,6 +4110,7 @@ rt2860_switch_chan(struct rt2860_softc *
u_int chan, group;
chan = ieee80211_chan2ieee(ic, c);
+ DPRINTF(("switch channel %u\n", chan));
if (chan == 0 || chan == IEEE80211_CHAN_ANY)
return;
Index: src/sys/dev/ic/rt2860reg.h
diff -u src/sys/dev/ic/rt2860reg.h:1.4 src/sys/dev/ic/rt2860reg.h:1.5
--- src/sys/dev/ic/rt2860reg.h:1.4 Wed Jul 6 21:24:16 2016
+++ src/sys/dev/ic/rt2860reg.h Thu Jul 7 21:24:53 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: rt2860reg.h,v 1.4 2016/07/07 01:24:16 christos Exp $ */
+/* $NetBSD: rt2860reg.h,v 1.5 2016/07/08 01:24:53 christos Exp $ */
/* $OpenBSD: rt2860reg.h,v 1.32 2014/05/24 10:10:17 stsp Exp $ */
/*-
@@ -18,6 +18,8 @@
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
+#define RT2860_NOISE_FLOOR -95
+
/* PCI registers */
#define RT2860_PCI_CFG 0x0000
#define RT2860_PCI_EECTRL 0x0004
@@ -214,50 +216,59 @@
/* possible flags for RT2860_PCI_CFG */
-#define RT2860_PCI_CFG_USB (1 << 17)
-#define RT2860_PCI_CFG_PCI (1 << 16)
+#define RT2860_PCI_CFG_USB (1U << 17)
+#define RT2860_PCI_CFG_PCI (1U << 16)
/* possible flags for register RT2860_PCI_EECTRL */
-#define RT2860_C (1 << 0)
-#define RT2860_S (1 << 1)
-#define RT2860_D (1 << 2)
+#define RT2860_C (1U << 0)
+#define RT2860_S (1U << 1)
+#define RT2860_D (1U << 2)
#define RT2860_SHIFT_D 2
-#define RT2860_Q (1 << 3)
+#define RT2860_Q (1U << 3)
#define RT2860_SHIFT_Q 3
/* possible flags for registers INT_STATUS/INT_MASK */
-#define RT2860_TX_COHERENT (1 << 17)
-#define RT2860_RX_COHERENT (1 << 16)
-#define RT2860_MAC_INT_4 (1 << 15)
-#define RT2860_MAC_INT_3 (1 << 14)
-#define RT2860_MAC_INT_2 (1 << 13)
-#define RT2860_MAC_INT_1 (1 << 12)
-#define RT2860_MAC_INT_0 (1 << 11)
-#define RT2860_TX_RX_COHERENT (1 << 10)
-#define RT2860_MCU_CMD_INT (1 << 9)
-#define RT2860_TX_DONE_INT5 (1 << 8)
-#define RT2860_TX_DONE_INT4 (1 << 7)
-#define RT2860_TX_DONE_INT3 (1 << 6)
-#define RT2860_TX_DONE_INT2 (1 << 5)
-#define RT2860_TX_DONE_INT1 (1 << 4)
-#define RT2860_TX_DONE_INT0 (1 << 3)
-#define RT2860_RX_DONE_INT (1 << 2)
-#define RT2860_TX_DLY_INT (1 << 1)
-#define RT2860_RX_DLY_INT (1 << 0)
+#define RT2860_TX_COHERENT (1U << 17)
+#define RT2860_RX_COHERENT (1U << 16)
+#define RT2860_MAC_INT_4 (1U << 15)
+#define RT2860_MAC_INT_3 (1U << 14)
+#define RT2860_MAC_INT_2 (1U << 13)
+#define RT2860_MAC_INT_1 (1U << 12)
+#define RT2860_MAC_INT_0 (1U << 11)
+#define RT2860_TX_RX_COHERENT (1U << 10)
+#define RT2860_MCU_CMD_INT (1U << 9)
+#define RT2860_TX_DONE_INT5 (1U << 8)
+#define RT2860_TX_DONE_INT4 (1U << 7)
+#define RT2860_TX_DONE_INT3 (1U << 6)
+#define RT2860_TX_DONE_INT2 (1U << 5)
+#define RT2860_TX_DONE_INT1 (1U << 4)
+#define RT2860_TX_DONE_INT0 (1U << 3)
+#define RT2860_RX_DONE_INT (1U << 2)
+#define RT2860_TX_DLY_INT (1U << 1)
+#define RT2860_RX_DLY_INT (1U << 0)
/* possible flags for register WPDMA_GLO_CFG */
#define RT2860_HDR_SEG_LEN_SHIFT 8
-#define RT2860_BIG_ENDIAN (1 << 7)
-#define RT2860_TX_WB_DDONE (1 << 6)
+#define RT2860_BIG_ENDIAN (1U << 7)
+#define RT2860_TX_WB_DDONE (1U << 6)
#define RT2860_WPDMA_BT_SIZE_SHIFT 4
#define RT2860_WPDMA_BT_SIZE16 0
#define RT2860_WPDMA_BT_SIZE32 1
#define RT2860_WPDMA_BT_SIZE64 2
#define RT2860_WPDMA_BT_SIZE128 3
-#define RT2860_RX_DMA_BUSY (1 << 3)
-#define RT2860_RX_DMA_EN (1 << 2)
-#define RT2860_TX_DMA_BUSY (1 << 1)
-#define RT2860_TX_DMA_EN (1 << 0)
+#define RT2860_RX_DMA_BUSY (1U << 3)
+#define RT2860_RX_DMA_EN (1U << 2)
+#define RT2860_TX_DMA_BUSY (1U << 1)
+#define RT2860_TX_DMA_EN (1U << 0)
+
+/* flags for register WPDMA_RST_IDX */
+#define RT2860_RST_DRX_IDX0 (1U << 16)
+#define RT2860_RST_DTX_IDX5 (1U << 5)
+#define RT2860_RST_DTX_IDX4 (1U << 4)
+#define RT2860_RST_DTX_IDX3 (1U << 3)
+#define RT2860_RST_DTX_IDX2 (1U << 2)
+#define RT2860_RST_DTX_IDX1 (1U << 1)
+#define RT2860_RST_DTX_IDX0 (1U << 0)
/* possible flags for register DELAY_INT_CFG */
#define RT2860_TXDLY_INT_EN (1U << 31)
@@ -286,25 +297,25 @@
#define RT2860_USB_RX_AGG_TO(x) ((x) & 0xff) /* in unit of 33ns */
/* possible flags for register US_CYC_CNT */
-#define RT2860_TEST_EN (1 << 24)
+#define RT2860_TEST_EN (1U << 24)
#define RT2860_TEST_SEL_SHIFT 16
-#define RT2860_BT_MODE_EN (1 << 8)
+#define RT2860_BT_MODE_EN (1U << 8)
#define RT2860_US_CYC_CNT_SHIFT 0
/* possible flags for register SYS_CTRL */
-#define RT2860_HST_PM_SEL (1 << 16)
-#define RT2860_CAP_MODE (1 << 14)
-#define RT2860_PME_OEN (1 << 13)
-#define RT2860_CLKSELECT (1 << 12)
-#define RT2860_PBF_CLK_EN (1 << 11)
-#define RT2860_MAC_CLK_EN (1 << 10)
-#define RT2860_DMA_CLK_EN (1 << 9)
-#define RT2860_MCU_READY (1 << 7)
-#define RT2860_ASY_RESET (1 << 4)
-#define RT2860_PBF_RESET (1 << 3)
-#define RT2860_MAC_RESET (1 << 2)
-#define RT2860_DMA_RESET (1 << 1)
-#define RT2860_MCU_RESET (1 << 0)
+#define RT2860_HST_PM_SEL (1U << 16)
+#define RT2860_CAP_MODE (1U << 14)
+#define RT2860_PME_OEN (1U << 13)
+#define RT2860_CLKSELECT (1U << 12)
+#define RT2860_PBF_CLK_EN (1U << 11)
+#define RT2860_MAC_CLK_EN (1U << 10)
+#define RT2860_DMA_CLK_EN (1U << 9)
+#define RT2860_MCU_READY (1U << 7)
+#define RT2860_ASY_RESET (1U << 4)
+#define RT2860_PBF_RESET (1U << 3)
+#define RT2860_MAC_RESET (1U << 2)
+#define RT2860_DMA_RESET (1U << 1)
+#define RT2860_MCU_RESET (1U << 0)
/* possible values for register HOST_CMD */
#define RT2860_MCU_CMD_SLEEP 0x30
@@ -322,48 +333,48 @@
/* possible flags for register PBF_CFG */
#define RT2860_TX1Q_NUM_SHIFT 21
#define RT2860_TX2Q_NUM_SHIFT 16
-#define RT2860_NULL0_MODE (1 << 15)
-#define RT2860_NULL1_MODE (1 << 14)
-#define RT2860_RX_DROP_MODE (1 << 13)
-#define RT2860_TX0Q_MANUAL (1 << 12)
-#define RT2860_TX1Q_MANUAL (1 << 11)
-#define RT2860_TX2Q_MANUAL (1 << 10)
-#define RT2860_RX0Q_MANUAL (1 << 9)
-#define RT2860_HCCA_EN (1 << 8)
-#define RT2860_TX0Q_EN (1 << 4)
-#define RT2860_TX1Q_EN (1 << 3)
-#define RT2860_TX2Q_EN (1 << 2)
-#define RT2860_RX0Q_EN (1 << 1)
+#define RT2860_NULL0_MODE (1U << 15)
+#define RT2860_NULL1_MODE (1U << 14)
+#define RT2860_RX_DROP_MODE (1U << 13)
+#define RT2860_TX0Q_MANUAL (1U << 12)
+#define RT2860_TX1Q_MANUAL (1U << 11)
+#define RT2860_TX2Q_MANUAL (1U << 10)
+#define RT2860_RX0Q_MANUAL (1U << 9)
+#define RT2860_HCCA_EN (1U << 8)
+#define RT2860_TX0Q_EN (1U << 4)
+#define RT2860_TX1Q_EN (1U << 3)
+#define RT2860_TX2Q_EN (1U << 2)
+#define RT2860_RX0Q_EN (1U << 1)
/* possible flags for register BUF_CTRL */
-#define RT2860_WRITE_TXQ(qid) (1 << (11 - (qid)))
-#define RT2860_NULL0_KICK (1 << 7)
-#define RT2860_NULL1_KICK (1 << 6)
-#define RT2860_BUF_RESET (1 << 5)
-#define RT2860_READ_TXQ(qid) (1 << (3 - (qid))
-#define RT2860_READ_RX0Q (1 << 0)
+#define RT2860_WRITE_TXQ(qid) (1U << (11 - (qid)))
+#define RT2860_NULL0_KICK (1U << 7)
+#define RT2860_NULL1_KICK (1U << 6)
+#define RT2860_BUF_RESET (1U << 5)
+#define RT2860_READ_TXQ(qid) (1U << (3 - (qid))
+#define RT2860_READ_RX0Q (1U << 0)
/* possible flags for registers MCU_INT_STA/MCU_INT_ENA */
-#define RT2860_MCU_MAC_INT_8 (1 << 24)
-#define RT2860_MCU_MAC_INT_7 (1 << 23)
-#define RT2860_MCU_MAC_INT_6 (1 << 22)
-#define RT2860_MCU_MAC_INT_4 (1 << 20)
-#define RT2860_MCU_MAC_INT_3 (1 << 19)
-#define RT2860_MCU_MAC_INT_2 (1 << 18)
-#define RT2860_MCU_MAC_INT_1 (1 << 17)
-#define RT2860_MCU_MAC_INT_0 (1 << 16)
-#define RT2860_DTX0_INT (1 << 11)
-#define RT2860_DTX1_INT (1 << 10)
-#define RT2860_DTX2_INT (1 << 9)
-#define RT2860_DRX0_INT (1 << 8)
-#define RT2860_HCMD_INT (1 << 7)
-#define RT2860_N0TX_INT (1 << 6)
-#define RT2860_N1TX_INT (1 << 5)
-#define RT2860_BCNTX_INT (1 << 4)
-#define RT2860_MTX0_INT (1 << 3)
-#define RT2860_MTX1_INT (1 << 2)
-#define RT2860_MTX2_INT (1 << 1)
-#define RT2860_MRX0_INT (1 << 0)
+#define RT2860_MCU_MAC_INT_8 (1U << 24)
+#define RT2860_MCU_MAC_INT_7 (1U << 23)
+#define RT2860_MCU_MAC_INT_6 (1U << 22)
+#define RT2860_MCU_MAC_INT_4 (1U << 20)
+#define RT2860_MCU_MAC_INT_3 (1U << 19)
+#define RT2860_MCU_MAC_INT_2 (1U << 18)
+#define RT2860_MCU_MAC_INT_1 (1U << 17)
+#define RT2860_MCU_MAC_INT_0 (1U << 16)
+#define RT2860_DTX0_INT (1U << 11)
+#define RT2860_DTX1_INT (1U << 10)
+#define RT2860_DTX2_INT (1U << 9)
+#define RT2860_DRX0_INT (1U << 8)
+#define RT2860_HCMD_INT (1U << 7)
+#define RT2860_N0TX_INT (1U << 6)
+#define RT2860_N1TX_INT (1U << 5)
+#define RT2860_BCNTX_INT (1U << 4)
+#define RT2860_MTX0_INT (1U << 3)
+#define RT2860_MTX1_INT (1U << 2)
+#define RT2860_MTX2_INT (1U << 1)
+#define RT2860_MRX0_INT (1U << 0)
/* possible flags for register TXRXQ_PCNT */
#define RT2860_RX0Q_PCNT_MASK 0xff000000
@@ -379,8 +390,8 @@
#define RT2860_START_ADDR_SHIFT 0
/* possible flags for register RF_CSR_CFG */
-#define RT3070_RF_KICK (1 << 17)
-#define RT3070_RF_WRITE (1 << 16)
+#define RT3070_RF_KICK (1U << 17)
+#define RT3070_RF_WRITE (1U << 16)
/* possible flags for register EFUSE_CTRL */
#define RT3070_SEL_EFUSE (1U << 31)
@@ -394,14 +405,14 @@
#define RT5592_SEL_XTAL (1U << 31)
/* possible flags for register MAC_SYS_CTRL */
-#define RT2860_RX_TS_EN (1 << 7)
-#define RT2860_WLAN_HALT_EN (1 << 6)
-#define RT2860_PBF_LOOP_EN (1 << 5)
-#define RT2860_CONT_TX_TEST (1 << 4)
-#define RT2860_MAC_RX_EN (1 << 3)
-#define RT2860_MAC_TX_EN (1 << 2)
-#define RT2860_BBP_HRST (1 << 1)
-#define RT2860_MAC_SRST (1 << 0)
+#define RT2860_RX_TS_EN (1U << 7)
+#define RT2860_WLAN_HALT_EN (1U << 6)
+#define RT2860_PBF_LOOP_EN (1U << 5)
+#define RT2860_CONT_TX_TEST (1U << 4)
+#define RT2860_MAC_RX_EN (1U << 3)
+#define RT2860_MAC_TX_EN (1U << 2)
+#define RT2860_BBP_HRST (1U << 1)
+#define RT2860_MAC_SRST (1U << 0)
/* possible flags for register MAC_BSSID_DW1 */
#define RT2860_MULTI_BCN_NUM_SHIFT 18
@@ -417,10 +428,10 @@
#define RT2860_MAX_MPDU_LEN_SHIFT 0
/* possible flags for registers BBP_CSR_CFG/H2M_BBPAGENT */
-#define RT2860_BBP_RW_PARALLEL (1 << 19)
-#define RT2860_BBP_PAR_DUR_112_5 (1 << 18)
-#define RT2860_BBP_CSR_KICK (1 << 17)
-#define RT2860_BBP_CSR_READ (1 << 16)
+#define RT2860_BBP_RW_PARALLEL (1U << 19)
+#define RT2860_BBP_PAR_DUR_112_5 (1U << 18)
+#define RT2860_BBP_CSR_KICK (1U << 17)
+#define RT2860_BBP_CSR_READ (1U << 16)
#define RT2860_BBP_ADDR_SHIFT 8
#define RT2860_BBP_DATA_SHIFT 0
@@ -432,11 +443,11 @@
#define RT2860_RF_REG_0_SHIFT 0
/* possible flags for register RF_CSR_CFG1 */
-#define RT2860_RF_DUR_5 (1 << 24)
+#define RT2860_RF_DUR_5 (1U << 24)
#define RT2860_RF_REG_1_SHIFT 0
/* possible flags for register LED_CFG */
-#define RT2860_LED_POL (1 << 30)
+#define RT2860_LED_POL (1U << 30)
#define RT2860_Y_LED_MODE_SHIFT 28
#define RT2860_G_LED_MODE_SHIFT 26
#define RT2860_R_LED_MODE_SHIFT 24
@@ -449,7 +460,7 @@
#define RT2860_LED_ON_TIME_SHIFT 0
/* possible flags for register XIFS_TIME_CFG */
-#define RT2860_BB_RXEND_EN (1 << 29)
+#define RT2860_BB_RXEND_EN (1U << 29)
#define RT2860_EIFS_TIME_SHIFT 20
#define RT2860_OFDM_XIFS_TIME_SHIFT 16
#define RT2860_OFDM_SIFS_TIME_SHIFT 8
@@ -466,22 +477,22 @@
#define RT2860_NAV_TIMER_SHIFT 0
/* possible flags for register CH_TIME_CFG */
-#define RT2860_EIFS_AS_CH_BUSY (1 << 4)
-#define RT2860_NAV_AS_CH_BUSY (1 << 3)
-#define RT2860_RX_AS_CH_BUSY (1 << 2)
-#define RT2860_TX_AS_CH_BUSY (1 << 1)
-#define RT2860_CH_STA_TIMER_EN (1 << 0)
+#define RT2860_EIFS_AS_CH_BUSY (1U << 4)
+#define RT2860_NAV_AS_CH_BUSY (1U << 3)
+#define RT2860_RX_AS_CH_BUSY (1U << 2)
+#define RT2860_TX_AS_CH_BUSY (1U << 1)
+#define RT2860_CH_STA_TIMER_EN (1U << 0)
/* possible values for register BCN_TIME_CFG */
#define RT2860_TSF_INS_COMP_SHIFT 24
-#define RT2860_BCN_TX_EN (1 << 20)
-#define RT2860_TBTT_TIMER_EN (1 << 19)
+#define RT2860_BCN_TX_EN (1U << 20)
+#define RT2860_TBTT_TIMER_EN (1U << 19)
#define RT2860_TSF_SYNC_MODE_SHIFT 17
#define RT2860_TSF_SYNC_MODE_DIS 0
#define RT2860_TSF_SYNC_MODE_STA 1
#define RT2860_TSF_SYNC_MODE_IBSS 2
#define RT2860_TSF_SYNC_MODE_HOSTAP 3
-#define RT2860_TSF_TIMER_EN (1 << 16)
+#define RT2860_TSF_TIMER_EN (1U << 16)
#define RT2860_BCN_INTVAL_SHIFT 0
/* possible flags for register TBTT_SYNC_CFG */
@@ -495,21 +506,21 @@
#define RT2860_PRE_TBTT_TIMER_SHIFT 0
/* possible flags for register INT_TIMER_EN */
-#define RT2860_GP_TIMER_EN (1 << 1)
-#define RT2860_PRE_TBTT_INT_EN (1 << 0)
+#define RT2860_GP_TIMER_EN (1U << 1)
+#define RT2860_PRE_TBTT_INT_EN (1U << 0)
/* possible flags for register MAC_STATUS_REG */
-#define RT2860_RX_STATUS_BUSY (1 << 1)
-#define RT2860_TX_STATUS_BUSY (1 << 0)
+#define RT2860_RX_STATUS_BUSY (1U << 1)
+#define RT2860_TX_STATUS_BUSY (1U << 0)
/* possible flags for register PWR_PIN_CFG */
-#define RT2860_IO_ADDA_PD (1 << 3)
-#define RT2860_IO_PLL_PD (1 << 2)
-#define RT2860_IO_RA_PE (1 << 1)
-#define RT2860_IO_RF_PE (1 << 0)
+#define RT2860_IO_ADDA_PD (1U << 3)
+#define RT2860_IO_PLL_PD (1U << 2)
+#define RT2860_IO_RA_PE (1U << 1)
+#define RT2860_IO_RF_PE (1U << 0)
/* possible flags for register AUTO_WAKEUP_CFG */
-#define RT2860_AUTO_WAKEUP_EN (1 << 15)
+#define RT2860_AUTO_WAKEUP_EN (1U << 15)
#define RT2860_SLEEP_TBTT_NUM_SHIFT 8
#define RT2860_WAKEUP_LEAD_TIME_SHIFT 0
@@ -547,9 +558,9 @@
#define RT2860_PA_PE_A0_EN (1U << 0)
/* possible flags for register TX_BAND_CFG */
-#define RT2860_5G_BAND_SEL_N (1 << 2)
-#define RT2860_5G_BAND_SEL_P (1 << 1)
-#define RT2860_TX_BAND_SEL (1 << 0)
+#define RT2860_5G_BAND_SEL_N (1U << 2)
+#define RT2860_5G_BAND_SEL_P (1U << 1)
+#define RT2860_TX_BAND_SEL (1U << 0)
/* possible flags for register TX_SW_CFG0 */
#define RT2860_DLY_RFTR_EN_SHIFT 24
@@ -577,16 +588,16 @@
/* possible flags for register TXOP_CTRL_CFG */
#define RT2860_EXT_CW_MIN_SHIFT 16
#define RT2860_EXT_CCA_DLY_SHIFT 8
-#define RT2860_EXT_CCA_EN (1 << 7)
-#define RT2860_LSIG_TXOP_EN (1 << 6)
-#define RT2860_TXOP_TRUN_EN_MIMOPS (1 << 4)
-#define RT2860_TXOP_TRUN_EN_TXOP (1 << 3)
-#define RT2860_TXOP_TRUN_EN_RATE (1 << 2)
-#define RT2860_TXOP_TRUN_EN_AC (1 << 1)
-#define RT2860_TXOP_TRUN_EN_TIMEOUT (1 << 0)
+#define RT2860_EXT_CCA_EN (1U << 7)
+#define RT2860_LSIG_TXOP_EN (1U << 6)
+#define RT2860_TXOP_TRUN_EN_MIMOPS (1U << 4)
+#define RT2860_TXOP_TRUN_EN_TXOP (1U << 3)
+#define RT2860_TXOP_TRUN_EN_RATE (1U << 2)
+#define RT2860_TXOP_TRUN_EN_AC (1U << 1)
+#define RT2860_TXOP_TRUN_EN_TIMEOUT (1U << 0)
/* possible flags for register TX_RTS_CFG */
-#define RT2860_RTS_FBK_EN (1 << 24)
+#define RT2860_RTS_FBK_EN (1U << 24)
#define RT2860_RTS_THRES_SHIFT 8
#define RT2860_RTS_RTY_LIMIT_SHIFT 0
@@ -596,9 +607,9 @@
#define RT2860_MPDU_LIFE_TIME_SHIFT 4
/* possible flags for register TX_RTY_CFG */
-#define RT2860_TX_AUTOFB_EN (1 << 30)
-#define RT2860_AGG_RTY_MODE_TIMER (1 << 29)
-#define RT2860_NAG_RTY_MODE_TIMER (1 << 28)
+#define RT2860_TX_AUTOFB_EN (1U << 30)
+#define RT2860_AGG_RTY_MODE_TIMER (1U << 29)
+#define RT2860_NAG_RTY_MODE_TIMER (1U << 28)
#define RT2860_LONG_RTY_THRES_SHIFT 16
#define RT2860_LONG_RTY_LIMIT_SHIFT 8
#define RT2860_SHORT_RTY_LIMIT_SHIFT 0
@@ -606,25 +617,25 @@
/* possible flags for register TX_LINK_CFG */
#define RT2860_REMOTE_MFS_SHIFT 24
#define RT2860_REMOTE_MFB_SHIFT 16
-#define RT2860_TX_CFACK_EN (1 << 12)
-#define RT2860_TX_RDG_EN (1 << 11)
-#define RT2860_TX_MRQ_EN (1 << 10)
-#define RT2860_REMOTE_UMFS_EN (1 << 9)
-#define RT2860_TX_MFB_EN (1 << 8)
+#define RT2860_TX_CFACK_EN (1U << 12)
+#define RT2860_TX_RDG_EN (1U << 11)
+#define RT2860_TX_MRQ_EN (1U << 10)
+#define RT2860_REMOTE_UMFS_EN (1U << 9)
+#define RT2860_TX_MFB_EN (1U << 8)
#define RT2860_REMOTE_MFB_LT_SHIFT 0
/* possible flags for registers *_PROT_CFG */
-#define RT2860_RTSTH_EN (1 << 26)
-#define RT2860_TXOP_ALLOW_GF40 (1 << 25)
-#define RT2860_TXOP_ALLOW_GF20 (1 << 24)
-#define RT2860_TXOP_ALLOW_MM40 (1 << 23)
-#define RT2860_TXOP_ALLOW_MM20 (1 << 22)
-#define RT2860_TXOP_ALLOW_OFDM (1 << 21)
-#define RT2860_TXOP_ALLOW_CCK (1 << 20)
+#define RT2860_RTSTH_EN (1U << 26)
+#define RT2860_TXOP_ALLOW_GF40 (1U << 25)
+#define RT2860_TXOP_ALLOW_GF20 (1U << 24)
+#define RT2860_TXOP_ALLOW_MM40 (1U << 23)
+#define RT2860_TXOP_ALLOW_MM20 (1U << 22)
+#define RT2860_TXOP_ALLOW_OFDM (1U << 21)
+#define RT2860_TXOP_ALLOW_CCK (1U << 20)
#define RT2860_TXOP_ALLOW_ALL (0x3f << 20)
-#define RT2860_PROT_NAV_SHORT (1 << 18)
+#define RT2860_PROT_NAV_SHORT (1U << 18)
#define RT2860_PROT_NAV_LONG (2 << 18)
-#define RT2860_PROT_CTRL_RTS_CTS (1 << 16)
+#define RT2860_PROT_CTRL_RTS_CTS (1U << 16)
#define RT2860_PROT_CTRL_CTS (2 << 16)
/* possible flags for registers EXP_{CTS,ACK}_TIME */
@@ -632,53 +643,53 @@
#define RT2860_EXP_CCK_TIME_SHIFT 0
/* possible flags for register RX_FILTR_CFG */
-#define RT2860_DROP_CTRL_RSV (1 << 16)
-#define RT2860_DROP_BAR (1 << 15)
-#define RT2860_DROP_BA (1 << 14)
-#define RT2860_DROP_PSPOLL (1 << 13)
-#define RT2860_DROP_RTS (1 << 12)
-#define RT2860_DROP_CTS (1 << 11)
-#define RT2860_DROP_ACK (1 << 10)
-#define RT2860_DROP_CFEND (1 << 9)
-#define RT2860_DROP_CFACK (1 << 8)
-#define RT2860_DROP_DUPL (1 << 7)
-#define RT2860_DROP_BC (1 << 6)
-#define RT2860_DROP_MC (1 << 5)
-#define RT2860_DROP_VER_ERR (1 << 4)
-#define RT2860_DROP_NOT_MYBSS (1 << 3)
-#define RT2860_DROP_UC_NOME (1 << 2)
-#define RT2860_DROP_PHY_ERR (1 << 1)
-#define RT2860_DROP_CRC_ERR (1 << 0)
+#define RT2860_DROP_CTRL_RSV (1U << 16)
+#define RT2860_DROP_BAR (1U << 15)
+#define RT2860_DROP_BA (1U << 14)
+#define RT2860_DROP_PSPOLL (1U << 13)
+#define RT2860_DROP_RTS (1U << 12)
+#define RT2860_DROP_CTS (1U << 11)
+#define RT2860_DROP_ACK (1U << 10)
+#define RT2860_DROP_CFEND (1U << 9)
+#define RT2860_DROP_CFACK (1U << 8)
+#define RT2860_DROP_DUPL (1U << 7)
+#define RT2860_DROP_BC (1U << 6)
+#define RT2860_DROP_MC (1U << 5)
+#define RT2860_DROP_VER_ERR (1U << 4)
+#define RT2860_DROP_NOT_MYBSS (1U << 3)
+#define RT2860_DROP_UC_NOME (1U << 2)
+#define RT2860_DROP_PHY_ERR (1U << 1)
+#define RT2860_DROP_CRC_ERR (1U << 0)
/* possible flags for register AUTO_RSP_CFG */
-#define RT2860_CTRL_PWR_BIT (1 << 7)
-#define RT2860_BAC_ACK_POLICY (1 << 6)
-#define RT2860_CCK_SHORT_EN (1 << 4)
-#define RT2860_CTS_40M_REF_EN (1 << 3)
-#define RT2860_CTS_40M_MODE_EN (1 << 2)
-#define RT2860_BAC_ACKPOLICY_EN (1 << 1)
-#define RT2860_AUTO_RSP_EN (1 << 0)
+#define RT2860_CTRL_PWR_BIT (1U << 7)
+#define RT2860_BAC_ACK_POLICY (1U << 6)
+#define RT2860_CCK_SHORT_EN (1U << 4)
+#define RT2860_CTS_40M_REF_EN (1U << 3)
+#define RT2860_CTS_40M_MODE_EN (1U << 2)
+#define RT2860_BAC_ACKPOLICY_EN (1U << 1)
+#define RT2860_AUTO_RSP_EN (1U << 0)
/* possible flags for register SIFS_COST_CFG */
#define RT2860_OFDM_SIFS_COST_SHIFT 8
#define RT2860_CCK_SIFS_COST_SHIFT 0
/* possible flags for register TXOP_HLDR_ET */
-#define RT2860_TXOP_ETM1_EN (1 << 25)
-#define RT2860_TXOP_ETM0_EN (1 << 24)
+#define RT2860_TXOP_ETM1_EN (1U << 25)
+#define RT2860_TXOP_ETM0_EN (1U << 24)
#define RT2860_TXOP_ETM_THRES_SHIFT 16
-#define RT2860_TXOP_ETO_EN (1 << 8)
+#define RT2860_TXOP_ETO_EN (1U << 8)
#define RT2860_TXOP_ETO_THRES_SHIFT 1
-#define RT2860_PER_RX_RST_EN (1 << 0)
+#define RT2860_PER_RX_RST_EN (1U << 0)
/* possible flags for register TX_STAT_FIFO */
#define RT2860_TXQ_MCS_SHIFT 16
#define RT2860_TXQ_WCID_SHIFT 8
-#define RT2860_TXQ_ACKREQ (1 << 7)
-#define RT2860_TXQ_AGG (1 << 6)
-#define RT2860_TXQ_OK (1 << 5)
+#define RT2860_TXQ_ACKREQ (1U << 7)
+#define RT2860_TXQ_AGG (1U << 6)
+#define RT2860_TXQ_OK (1U << 5)
#define RT2860_TXQ_PID_SHIFT 1
-#define RT2860_TXQ_VLD (1 << 0)
+#define RT2860_TXQ_VLD (1U << 0)
/* possible flags for register WCID_ATTR */
#define RT2860_MODE_NOSEC 0
@@ -689,62 +700,62 @@
#define RT2860_MODE_CKIP40 5
#define RT2860_MODE_CKIP104 6
#define RT2860_MODE_CKIP128 7
-#define RT2860_RX_PKEY_EN (1 << 0)
+#define RT2860_RX_PKEY_EN (1U << 0)
/* possible flags for register H2M_MAILBOX */
-#define RT2860_H2M_BUSY (1 << 24)
+#define RT2860_H2M_BUSY (1U << 24)
#define RT2860_TOKEN_NO_INTR 0xff
/* possible flags for MCU command RT2860_MCU_CMD_LEDS */
-#define RT2860_LED_RADIO (1 << 13)
-#define RT2860_LED_LINK_2GHZ (1 << 14)
-#define RT2860_LED_LINK_5GHZ (1 << 15)
+#define RT2860_LED_RADIO (1U << 13)
+#define RT2860_LED_LINK_2GHZ (1U << 14)
+#define RT2860_LED_LINK_5GHZ (1U << 15)
/* possible flags for RT3020 RF register 1 */
-#define RT3070_RF_BLOCK (1 << 0)
-#define RT3070_PLL_PD (1 << 1)
-#define RT3070_RX0_PD (1 << 2)
-#define RT3070_TX0_PD (1 << 3)
-#define RT3070_RX1_PD (1 << 4)
-#define RT3070_TX1_PD (1 << 5)
-#define RT3070_RX2_PD (1 << 6)
-#define RT3070_TX2_PD (1 << 7)
+#define RT3070_RF_BLOCK (1U << 0)
+#define RT3070_PLL_PD (1U << 1)
+#define RT3070_RX0_PD (1U << 2)
+#define RT3070_TX0_PD (1U << 3)
+#define RT3070_RX1_PD (1U << 4)
+#define RT3070_TX1_PD (1U << 5)
+#define RT3070_RX2_PD (1U << 6)
+#define RT3070_TX2_PD (1U << 7)
/* possible flags for RT3020 RF register 7 */
-#define RT3070_TUNE (1 << 0)
+#define RT3070_TUNE (1U << 0)
/* possible flags for RT3020 RF register 15 */
-#define RT3070_TX_LO2 (1 << 3)
+#define RT3070_TX_LO2 (1U << 3)
/* possible flags for RT3020 RF register 17 */
-#define RT3070_TX_LO1 (1 << 3)
+#define RT3070_TX_LO1 (1U << 3)
/* possible flags for RT3020 RF register 20 */
-#define RT3070_RX_LO1 (1 << 3)
+#define RT3070_RX_LO1 (1U << 3)
/* possible flags for RT3020 RF register 21 */
-#define RT3070_RX_LO2 (1 << 3)
-#define RT3070_RX_CTB (1 << 7)
+#define RT3070_RX_LO2 (1U << 3)
+#define RT3070_RX_CTB (1U << 7)
/* possible flags for RT3020 RF register 22 */
-#define RT3070_BB_LOOPBACK (1 << 0)
+#define RT3070_BB_LOOPBACK (1U << 0)
/* possible flags for RT3053 RF register 1 */
-#define RT3593_VCO (1 << 0)
+#define RT3593_VCO (1U << 0)
/* possible flags for RT3053 RF register 2 */
-#define RT3593_RESCAL (1 << 7)
+#define RT3593_RESCAL (1U << 7)
/* possible flags for RT3053 RF register 3 */
-#define RT3593_VCOCAL (1 << 7)
+#define RT3593_VCOCAL (1U << 7)
/* possible flags for RT3053 RF register 6 */
-#define RT3593_VCO_IC (1 << 6)
+#define RT3593_VCO_IC (1U << 6)
/* possible flags for RT3053 RF register 18 */
-#define RT3593_AUTOTUNE_BYPASS (1 << 6)
+#define RT3593_AUTOTUNE_BYPASS (1U << 6)
/* possible flags for RT3053 RF register 20 */
#define RT3593_LDO_PLL_VC_MASK 0x0e
@@ -755,29 +766,29 @@
#define RT3593_CP_IC_SHIFT 5
/* possible flags for RT5390 RF register 38. */
-#define RT5390_RX_LO1 (1 << 5)
+#define RT5390_RX_LO1 (1U << 5)
/* possible flags for RT5390 RF register 39. */
-#define RT5390_RX_LO2 (1 << 7)
+#define RT5390_RX_LO2 (1U << 7)
/* possible flags for RT5390 RF register 42 */
-#define RT5390_RX_CTB (1 << 6)
+#define RT5390_RX_CTB (1U << 6)
/* possible flags for RT3053 RF register 46 */
-#define RT3593_RX_CTB (1 << 5)
+#define RT3593_RX_CTB (1U << 5)
/* possible flags for RT3053 RF register 50 */
-#define RT3593_TX_LO2 (1 << 4)
+#define RT3593_TX_LO2 (1U << 4)
/* possible flags for RT3053 RF register 51 */
-#define RT3593_TX_LO1 (1 << 4)
+#define RT3593_TX_LO1 (1U << 4)
/* Possible flags for RT5390 BBP register 4. */
-#define RT5390_MAC_IF_CTRL (1 << 6)
+#define RT5390_MAC_IF_CTRL (1U << 6)
/* possible flags for RT5390 BBP register 105. */
-#define RT5390_MLD (1 << 2)
-#define RT5390_EN_SIG_MODULATION (1 << 3)
+#define RT5390_MLD (1U << 2)
+#define RT5390_EN_SIG_MODULATION (1U << 3)
#define RT3090_DEF_LNA 10
@@ -785,21 +796,21 @@
struct rt2860_txd {
uint32_t sdp0; /* Segment Data Pointer 0 */
uint16_t sdl1; /* Segment Data Length 1 */
-#define RT2860_TX_BURST (1 << 15)
-#define RT2860_TX_LS1 (1 << 14) /* SDP1 is the last segment */
+#define RT2860_TX_BURST (1U << 15)
+#define RT2860_TX_LS1 (1U << 14) /* SDP1 is the last segment */
uint16_t sdl0; /* Segment Data Length 0 */
-#define RT2860_TX_DDONE (1 << 15)
-#define RT2860_TX_LS0 (1 << 14) /* SDP0 is the last segment */
+#define RT2860_TX_DDONE (1U << 15)
+#define RT2860_TX_LS0 (1U << 14) /* SDP0 is the last segment */
uint32_t sdp1; /* Segment Data Pointer 1 */
uint8_t reserved[3];
uint8_t flags;
#define RT2860_TX_QSEL_SHIFT 1
#define RT2860_TX_QSEL_MGMT (0 << 1)
-#define RT2860_TX_QSEL_HCCA (1 << 1)
+#define RT2860_TX_QSEL_HCCA (1U << 1)
#define RT2860_TX_QSEL_EDCA (2 << 1)
-#define RT2860_TX_WIV (1 << 0)
+#define RT2860_TX_WIV (1U << 0)
} __packed;
/* RT2870 TX descriptor */
@@ -813,11 +824,11 @@ struct rt2870_txd {
struct rt2860_txwi {
uint8_t flags;
#define RT2860_TX_MPDU_DSITY_SHIFT 5
-#define RT2860_TX_AMPDU (1 << 4)
-#define RT2860_TX_TS (1 << 3)
-#define RT2860_TX_CFACK (1 << 2)
-#define RT2860_TX_MMPS (1 << 1)
-#define RT2860_TX_FRAG (1 << 0)
+#define RT2860_TX_AMPDU (1U << 4)
+#define RT2860_TX_TS (1U << 3)
+#define RT2860_TX_CFACK (1U << 2)
+#define RT2860_TX_MMPS (1U << 1)
+#define RT2860_TX_FRAG (1U << 0)
uint8_t txop;
#define RT2860_TX_TXOP_HT 0
@@ -828,18 +839,18 @@ struct rt2860_txwi {
uint16_t phy;
#define RT2860_PHY_MODE 0xc000
#define RT2860_PHY_CCK (0 << 14)
-#define RT2860_PHY_OFDM (1 << 14)
+#define RT2860_PHY_OFDM (1U << 14)
#define RT2860_PHY_HT (2 << 14)
#define RT2860_PHY_HT_GF (3 << 14)
-#define RT2860_PHY_SGI (1 << 8)
-#define RT2860_PHY_BW40 (1 << 7)
+#define RT2860_PHY_SGI (1U << 8)
+#define RT2860_PHY_BW40 (1U << 7)
#define RT2860_PHY_MCS 0x7f
-#define RT2860_PHY_SHPRE (1 << 3)
+#define RT2860_PHY_SHPRE (1U << 3)
uint8_t xflags;
#define RT2860_TX_BAWINSIZE_SHIFT 2
-#define RT2860_TX_NSEQ (1 << 1)
-#define RT2860_TX_ACK (1 << 0)
+#define RT2860_TX_NSEQ (1U << 1)
+#define RT2860_TX_ACK (1U << 0)
uint8_t wcid; /* Wireless Client ID */
uint16_t len;
@@ -854,28 +865,28 @@ struct rt2860_rxd {
uint32_t sdp0;
uint16_t sdl1; /* unused */
uint16_t sdl0;
-#define RT2860_RX_DDONE (1 << 15)
-#define RT2860_RX_LS0 (1 << 14)
+#define RT2860_RX_DDONE (1U << 15)
+#define RT2860_RX_LS0 (1U << 14)
uint32_t sdp1; /* unused */
uint32_t flags;
-#define RT2860_RX_DEC (1 << 16)
-#define RT2860_RX_AMPDU (1 << 15)
-#define RT2860_RX_L2PAD (1 << 14)
-#define RT2860_RX_RSSI (1 << 13)
-#define RT2860_RX_HTC (1 << 12)
-#define RT2860_RX_AMSDU (1 << 11)
-#define RT2860_RX_MICERR (1 << 10)
-#define RT2860_RX_ICVERR (1 << 9)
-#define RT2860_RX_CRCERR (1 << 8)
-#define RT2860_RX_MYBSS (1 << 7)
-#define RT2860_RX_BC (1 << 6)
-#define RT2860_RX_MC (1 << 5)
-#define RT2860_RX_UC2ME (1 << 4)
-#define RT2860_RX_FRAG (1 << 3)
-#define RT2860_RX_NULL (1 << 2)
-#define RT2860_RX_DATA (1 << 1)
-#define RT2860_RX_BA (1 << 0)
+#define RT2860_RX_DEC (1U << 16)
+#define RT2860_RX_AMPDU (1U << 15)
+#define RT2860_RX_L2PAD (1U << 14)
+#define RT2860_RX_RSSI (1U << 13)
+#define RT2860_RX_HTC (1U << 12)
+#define RT2860_RX_AMSDU (1U << 11)
+#define RT2860_RX_MICERR (1U << 10)
+#define RT2860_RX_ICVERR (1U << 9)
+#define RT2860_RX_CRCERR (1U << 8)
+#define RT2860_RX_MYBSS (1U << 7)
+#define RT2860_RX_BC (1U << 6)
+#define RT2860_RX_MC (1U << 5)
+#define RT2860_RX_UC2ME (1U << 4)
+#define RT2860_RX_FRAG (1U << 3)
+#define RT2860_RX_NULL (1U << 2)
+#define RT2860_RX_DATA (1U << 1)
+#define RT2860_RX_BA (1U << 0)
} __packed;
/* RT2870 RX descriptor */
@@ -914,21 +925,22 @@ struct rt2860_rxwi {
#define RT2860_RF3 1
#define RT2860_RF4 3
-#define RT2860_RF_2820 1 /* 2T3R */
-#define RT2860_RF_2850 2 /* dual-band 2T3R */
-#define RT2860_RF_2720 3 /* 1T2R */
-#define RT2860_RF_2750 4 /* dual-band 1T2R */
-#define RT3070_RF_3020 5 /* 1T1R */
-#define RT3070_RF_2020 6 /* b/g */
-#define RT3070_RF_3021 7 /* 1T2R */
-#define RT3070_RF_3022 8 /* 2T2R */
-#define RT3070_RF_3052 9 /* dual-band 2T2R */
-#define RT3070_RF_3320 11 /* 1T1R */
-#define RT3070_RF_3053 13 /* dual-band 3T3R */
-#define RT5390_RF_5390 15 /* b/g/n */
+#define RT2860_RF_2820 0x0001 /* 2T3R */
+#define RT2860_RF_2850 0x0002 /* dual-band 2T3R */
+#define RT2860_RF_2720 0x0003 /* 1T2R */
+#define RT2860_RF_2750 0x0004 /* dual-band 1T2R */
+#define RT3070_RF_3020 0x0005 /* 1T1R */
+#define RT3070_RF_2020 0x0006 /* b/g */
+#define RT3070_RF_3021 0x0007 /* 1T2R */
+#define RT3070_RF_3022 0x0008 /* 2T2R */
+#define RT3070_RF_3052 0x0009 /* dual-band 2T2R */
+#define RT3070_RF_3320 0x000b /* 1T1R */
+#define RT3070_RF_3053 0x000d /* dual-band 3T3R */
#define RT5592_RF_5592 0x000f /* dual-band 2T2R */
+#define RT5390_RF_5360 0x5360 /* 1T1R */
#define RT5390_RF_5370 0x5370 /* 1T1R */
#define RT5390_RF_5372 0x5372 /* 2T2R */
+#define RT5390_RF_5390 0x5390 /* 1T1R */
/* USB commands for RT2870 only */
@@ -940,6 +952,7 @@ struct rt2860_rxwi {
#define RT2860_EEPROM_DELAY 1 /* minimum hold time (microsecond) */
+#define RT2860_EEPROM_CHIPID 0x00
#define RT2860_EEPROM_VERSION 0x01
#define RT2860_EEPROM_MAC01 0x02
#define RT2860_EEPROM_MAC23 0x03
@@ -1083,14 +1096,17 @@ static const struct rt2860_rate {
*/
#define RT2860_DEF_MAC \
{ RT2860_BCN_OFFSET0, 0xf8f0e8e0 }, \
+ { RT2860_BCN_OFFSET1, 0x6f77d0c8 }, \
{ RT2860_LEGACY_BASIC_RATE, 0x0000013f }, \
{ RT2860_HT_BASIC_RATE, 0x00008003 }, \
{ RT2860_MAC_SYS_CTRL, 0x00000000 }, \
+ { RT2860_RX_FILTR_CFG, 0x00017f97 }, \
{ RT2860_BKOFF_SLOT_CFG, 0x00000209 }, \
{ RT2860_TX_SW_CFG0, 0x00000000 }, \
{ RT2860_TX_SW_CFG1, 0x00080606 }, \
{ RT2860_TX_LINK_CFG, 0x00001020 }, \
{ RT2860_TX_TIMEOUT_CFG, 0x000a2090 }, \
+ { RT2860_MAX_LEN_CFG, 0x00001f00 }, \
{ RT2860_LED_CFG, 0x7f031e46 }, \
{ RT2860_WMM_AIFSN_CFG, 0x00002273 }, \
{ RT2860_WMM_CWMIN_CFG, 0x00002344 }, \
@@ -1150,6 +1166,7 @@ static const struct rt2860_rate {
#define RT2860_DEF_BBP \
{ 65, 0x2c }, \
{ 66, 0x38 }, \
+ { 68, 0x0b }, \
{ 69, 0x12 }, \
{ 70, 0x0a }, \
{ 73, 0x10 }, \
@@ -1169,8 +1186,8 @@ static const struct rt2860_rate {
{ 65, 0x2c }, \
{ 66, 0x38 }, \
{ 68, 0x0b }, \
- { 69, 0x0d }, \
- { 70, 0x06 }, \
+ { 69, 0x12 }, \
+ { 70, 0x0a }, \
{ 73, 0x13 }, \
{ 75, 0x46 }, \
{ 76, 0x28 }, \
@@ -1178,7 +1195,7 @@ static const struct rt2860_rate {
{ 81, 0x37 }, \
{ 82, 0x62 }, \
{ 83, 0x7a }, \
- { 84, 0x9a }, \
+ { 84, 0x19 }, \
{ 86, 0x38 }, \
{ 91, 0x04 }, \
{ 92, 0x02 }, \
@@ -1447,7 +1464,7 @@ static const struct rt2860_rate {
{ 4, 0x40 }, \
{ 5, 0x03 }, \
{ 6, 0x02 }, \
- { 7, 0x70 }, \
+ { 7, 0x60 }, \
{ 9, 0x0f }, \
{ 10, 0x41 }, \
{ 11, 0x21 }, \
@@ -1461,82 +1478,15 @@ static const struct rt2860_rate {
{ 20, 0xba }, \
{ 21, 0xdb }, \
{ 24, 0x16 }, \
- { 25, 0x01 }, \
+ { 25, 0x03 }, \
{ 29, 0x1f }
-#define RT3572_DEF_RF \
- { 0, 0x70 }, \
- { 1, 0x81 }, \
- { 2, 0xf1 }, \
- { 3, 0x02 }, \
- { 4, 0x4c }, \
- { 5, 0x05 }, \
- { 6, 0x4a }, \
- { 7, 0xd8 }, \
- { 9, 0xc3 }, \
- { 10, 0xf1 }, \
- { 11, 0xb9 }, \
- { 12, 0x70 }, \
- { 13, 0x65 }, \
- { 14, 0xa0 }, \
- { 15, 0x53 }, \
- { 16, 0x4c }, \
- { 17, 0x23 }, \
- { 18, 0xac }, \
- { 19, 0x93 }, \
- { 20, 0xb3 }, \
- { 21, 0xd0 }, \
- { 22, 0x00 }, \
- { 23, 0x3c }, \
- { 24, 0x16 }, \
- { 25, 0x15 }, \
- { 26, 0x85 }, \
- { 27, 0x00 }, \
- { 28, 0x00 }, \
- { 29, 0x9b }, \
- { 30, 0x09 }, \
- { 31, 0x10 }
-
-#define RT3593_DEF_RF \
- { 1, 0x03 }, \
- { 3, 0x80 }, \
- { 5, 0x00 }, \
- { 6, 0x40 }, \
- { 8, 0xf1 }, \
- { 9, 0x02 }, \
- { 10, 0xd3 }, \
- { 11, 0x40 }, \
- { 12, 0x4e }, \
- { 13, 0x12 }, \
- { 18, 0x40 }, \
- { 22, 0x20 }, \
- { 30, 0x10 }, \
- { 31, 0x80 }, \
- { 32, 0x78 }, \
- { 33, 0x3b }, \
- { 34, 0x3c }, \
- { 35, 0xe0 }, \
- { 38, 0x86 }, \
- { 39, 0x23 }, \
- { 44, 0xd3 }, \
- { 45, 0xbb }, \
- { 46, 0x60 }, \
- { 49, 0x81 }, \
- { 50, 0x86 }, \
- { 51, 0x75 }, \
- { 52, 0x45 }, \
- { 53, 0x18 }, \
- { 54, 0x18 }, \
- { 55, 0x18 }, \
- { 56, 0xdb }, \
- { 57, 0x6e }
-
#define RT5390_DEF_RF \
{ 1, 0x0f }, \
{ 2, 0x80 }, \
{ 3, 0x88 }, \
{ 5, 0x10 }, \
- { 6, 0xa0 }, \
+ { 6, 0xe0 }, \
{ 7, 0x00 }, \
{ 10, 0x53 }, \
{ 11, 0x4a }, \
@@ -1549,10 +1499,10 @@ static const struct rt2860_rate {
{ 19, 0x00 }, \
{ 20, 0x00 }, \
{ 21, 0x00 }, \
- { 22, 0x20 }, \
+ { 22, 0x20 }, \
{ 23, 0x00 }, \
{ 24, 0x00 }, \
- { 25, 0xc0 }, \
+ { 25, 0x80 }, \
{ 26, 0x00 }, \
{ 27, 0x09 }, \
{ 28, 0x00 }, \
@@ -1573,25 +1523,26 @@ static const struct rt2860_rate {
{ 43, 0x9a }, \
{ 44, 0x0e }, \
{ 45, 0xa2 }, \
- { 46, 0x7b }, \
+ { 46, 0x73 }, \
{ 47, 0x00 }, \
{ 48, 0x10 }, \
{ 49, 0x94 }, \
{ 52, 0x38 }, \
- { 53, 0x84 }, \
+ { 53, 0x00 }, \
{ 54, 0x78 }, \
- { 55, 0x44 }, \
+ { 55, 0x23 }, \
{ 56, 0x22 }, \
{ 57, 0x80 }, \
{ 58, 0x7f }, \
- { 59, 0x8f }, \
+ { 59, 0x07 }, \
{ 60, 0x45 }, \
- { 61, 0xdd }, \
+ { 61, 0xd1 }, \
{ 62, 0x00 }, \
{ 63, 0x00 }
#define RT5392_DEF_RF \
{ 1, 0x17 }, \
+ { 2, 0x80 }, \
{ 3, 0x88 }, \
{ 5, 0x10 }, \
{ 6, 0xe0 }, \
@@ -1607,7 +1558,7 @@ static const struct rt2860_rate {
{ 19, 0x4d }, \
{ 20, 0x00 }, \
{ 21, 0x8d }, \
- { 22, 0x20 }, \
+ { 22, 0x20 }, \
{ 23, 0x0b }, \
{ 24, 0x44 }, \
{ 25, 0x80 }, \
@@ -1617,7 +1568,7 @@ static const struct rt2860_rate {
{ 29, 0x10 }, \
{ 30, 0x10 }, \
{ 31, 0x80 }, \
- { 32, 0x20 }, \
+ { 32, 0x80 }, \
{ 33, 0xc0 }, \
{ 34, 0x07 }, \
{ 35, 0x12 }, \
@@ -1648,7 +1599,74 @@ static const struct rt2860_rate {
{ 60, 0x45 }, \
{ 61, 0x91 }, \
{ 62, 0x39 }, \
- { 63, 0x07 }
+ { 63, 0x00 }
+
+#define RT3572_DEF_RF \
+ { 0, 0x70 }, \
+ { 1, 0x81 }, \
+ { 2, 0xf1 }, \
+ { 3, 0x02 }, \
+ { 4, 0x4c }, \
+ { 5, 0x05 }, \
+ { 6, 0x4a }, \
+ { 7, 0xd8 }, \
+ { 9, 0xc3 }, \
+ { 10, 0xf1 }, \
+ { 11, 0xb9 }, \
+ { 12, 0x70 }, \
+ { 13, 0x65 }, \
+ { 14, 0xa0 }, \
+ { 15, 0x53 }, \
+ { 16, 0x4c }, \
+ { 17, 0x23 }, \
+ { 18, 0xac }, \
+ { 19, 0x93 }, \
+ { 20, 0xb3 }, \
+ { 21, 0xd0 }, \
+ { 22, 0x00 }, \
+ { 23, 0x3c }, \
+ { 24, 0x16 }, \
+ { 25, 0x15 }, \
+ { 26, 0x85 }, \
+ { 27, 0x00 }, \
+ { 28, 0x00 }, \
+ { 29, 0x9b }, \
+ { 30, 0x09 }, \
+ { 31, 0x10 }
+
+#define RT3593_DEF_RF \
+ { 1, 0x03 }, \
+ { 3, 0x80 }, \
+ { 5, 0x00 }, \
+ { 6, 0x40 }, \
+ { 8, 0xf1 }, \
+ { 9, 0x02 }, \
+ { 10, 0xd3 }, \
+ { 11, 0x40 }, \
+ { 12, 0x4e }, \
+ { 13, 0x12 }, \
+ { 18, 0x40 }, \
+ { 22, 0x20 }, \
+ { 30, 0x10 }, \
+ { 31, 0x80 }, \
+ { 32, 0x78 }, \
+ { 33, 0x3b }, \
+ { 34, 0x3c }, \
+ { 35, 0xe0 }, \
+ { 38, 0x86 }, \
+ { 39, 0x23 }, \
+ { 44, 0xd3 }, \
+ { 45, 0xbb }, \
+ { 46, 0x60 }, \
+ { 49, 0x81 }, \
+ { 50, 0x86 }, \
+ { 51, 0x75 }, \
+ { 52, 0x45 }, \
+ { 53, 0x18 }, \
+ { 54, 0x18 }, \
+ { 55, 0x18 }, \
+ { 56, 0xdb }, \
+ { 57, 0x6e }
#define RT5592_DEF_RF \
{ 1, 0x3f }, \
Index: src/sys/dev/ic/rt2860var.h
diff -u src/sys/dev/ic/rt2860var.h:1.2 src/sys/dev/ic/rt2860var.h:1.3
--- src/sys/dev/ic/rt2860var.h:1.2 Wed Apr 27 15:49:26 2016
+++ src/sys/dev/ic/rt2860var.h Thu Jul 7 21:24:53 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: rt2860var.h,v 1.2 2016/04/27 19:49:26 christos Exp $ */
+/* $NetBSD: rt2860var.h,v 1.3 2016/07/08 01:24:53 christos Exp $ */
/* $OpenBSD: rt2860var.h,v 1.23 2016/03/21 21:16:30 stsp Exp $ */
/*-
@@ -42,7 +42,7 @@ struct rt2860_rx_radiotap_header {
uint8_t wr_dbm_antsignal;
uint8_t wr_antenna;
uint8_t wr_antsignal;
-} __packed;
+} __packed __aligned(8);
#define RT2860_RX_RADIOTAP_PRESENT \
(1 << IEEE80211_RADIOTAP_FLAGS | \
@@ -59,7 +59,7 @@ struct rt2860_tx_radiotap_header {
uint16_t wt_chan_freq;
uint16_t wt_chan_flags;
uint8_t wt_hwqueue;
-} __packed;
+} __packed __aligned(8);
#define RT2860_TX_RADIOTAP_PRESENT \
(1 << IEEE80211_RADIOTAP_FLAGS | \
@@ -131,6 +131,7 @@ struct rt2860_softc {
#define RT2860_ENABLED (1 << 0)
#define RT2860_ADVANCED_PS (1 << 1)
#define RT2860_PCIE (1 << 2)
+#define RT2860_RUNNING (1 << 3)
struct ieee80211_amrr amrr;
@@ -156,7 +157,7 @@ struct rt2860_softc {
uint16_t mac_ver;
uint16_t mac_rev;
- uint8_t rf_rev;
+ uint32_t rf_rev;
uint8_t freq;
uint8_t ntxchains;
uint8_t nrxchains;