summaryrefslogtreecommitdiffstats
path: root/package/mac80211/patches
diff options
context:
space:
mode:
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2011-03-22 21:00:58 +0000
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2011-03-22 21:00:58 +0000
commit5034ff8395447d72b427867fc3469b3601cd83f2 (patch)
tree29b1bf399c9cc9974981422b01b4db8d2034952f /package/mac80211/patches
parent2dbaa78d9184ccb2010d20c9c37b56f9e17cb96f (diff)
mac80211: update to wireless-testing 2011-03-22
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@26273 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/mac80211/patches')
-rw-r--r--package/mac80211/patches/300-ath9k_gpio_settings.patch58
-rw-r--r--package/mac80211/patches/300-ath9k_pending_work.patch (renamed from package/mac80211/patches/561-ath9k_fix_staggered_beacons.patch)195
-rw-r--r--package/mac80211/patches/310-pending_work.patch1441
-rw-r--r--package/mac80211/patches/401-ath9k-dont-register-leds-on-ar9100.patch6
-rw-r--r--package/mac80211/patches/402-ath9k_blink_default.patch2
-rw-r--r--package/mac80211/patches/403-ath9k-fix-invalid-mac-address-handling.patch2
-rw-r--r--package/mac80211/patches/407-ath9k-override-mac-address-from-platform-data.patch47
-rw-r--r--package/mac80211/patches/409-ath9k_platform_settings.patch65
-rw-r--r--package/mac80211/patches/500-ath9k_eeprom_debugfs.patch4
-rw-r--r--package/mac80211/patches/510-ath9k_intr_mitigation_tweak.patch2
-rw-r--r--package/mac80211/patches/520-mac80211_drv_tim_override.patch6
-rw-r--r--package/mac80211/patches/521-ath9k_fix_ap_ps_buffering.patch2
-rw-r--r--package/mac80211/patches/522-ath9k_remove_pending_frames_workaround.patch36
-rw-r--r--package/mac80211/patches/530-mac80211_redirect_vlan_eap_frames.patch10
-rw-r--r--package/mac80211/patches/540-ath9k_ar9100_blockack_fix.patch21
-rw-r--r--package/mac80211/patches/540-mac80211_fix_rx_reorder_timeout.patch (renamed from package/mac80211/patches/550-mac80211_fix_rx_reorder_timeout.patch)0
-rw-r--r--package/mac80211/patches/541-ath9k_ar9100_rx_chainmask_fix.patch11
-rw-r--r--package/mac80211/patches/550-ath9k_increase_bcbuf.patch (renamed from package/mac80211/patches/562-ath9k_increase_bcbuf.patch)2
-rw-r--r--package/mac80211/patches/560-ath9k_debugfs_cleanup.patch108
-rw-r--r--package/mac80211/patches/563-ath9k_reduce_bstuck_nfcal.patch12
-rw-r--r--package/mac80211/patches/570-mac80211_initialize_last_rx.patch10
-rw-r--r--package/mac80211/patches/700-mwl8k-missing-pci-id-for-WNR854T.patch2
22 files changed, 143 insertions, 1899 deletions
diff --git a/package/mac80211/patches/300-ath9k_gpio_settings.patch b/package/mac80211/patches/300-ath9k_gpio_settings.patch
deleted file mode 100644
index af2057759..000000000
--- a/package/mac80211/patches/300-ath9k_gpio_settings.patch
+++ /dev/null
@@ -1,58 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/debug.c
-+++ b/drivers/net/wireless/ath/ath9k/debug.c
-@@ -1145,6 +1145,12 @@ int ath9k_init_debug(struct ath_hw *ah)
- sc, &fops_regdump))
- goto err;
-
-+ debugfs_create_u32("gpio_mask", S_IRUSR | S_IWUSR,
-+ sc->debug.debugfs_phy, &sc->sc_ah->gpio_mask);
-+
-+ debugfs_create_u32("gpio_val", S_IRUSR | S_IWUSR,
-+ sc->debug.debugfs_phy, &sc->sc_ah->gpio_val);
-+
- sc->debug.regidx = 0;
- return 0;
- err:
---- a/drivers/net/wireless/ath/ath9k/hw.h
-+++ b/drivers/net/wireless/ath/ath9k/hw.h
-@@ -795,6 +795,8 @@ struct ath_hw {
- int initPDADC;
- int PDADCdelta;
- u8 led_pin;
-+ u32 gpio_mask;
-+ u32 gpio_val;
-
- struct ar5416IniArray iniModes;
- struct ar5416IniArray iniCommon;
---- a/drivers/net/wireless/ath/ath9k/hw.c
-+++ b/drivers/net/wireless/ath/ath9k/hw.c
-@@ -1212,6 +1212,20 @@ static bool ath9k_hw_channel_change(stru
- return true;
- }
-
-+static void ath9k_hw_apply_gpio_override(struct ath_hw *ah)
-+{
-+ u32 gpio_mask = ah->gpio_mask;
-+ int i;
-+
-+ for (i = 0; gpio_mask; i++, gpio_mask >>= 1) {
-+ if (!(gpio_mask & 1))
-+ continue;
-+
-+ ath9k_hw_cfg_output(ah, i, AR_GPIO_OUTPUT_MUX_AS_OUTPUT);
-+ ath9k_hw_set_gpio(ah, i, !!(ah->gpio_val & BIT(i)));
-+ }
-+}
-+
- bool ath9k_hw_check_alive(struct ath_hw *ah)
- {
- int count = 50;
-@@ -1500,6 +1514,8 @@ int ath9k_hw_reset(struct ath_hw *ah, st
- if (AR_SREV_9300_20_OR_LATER(ah))
- ar9003_hw_bb_watchdog_config(ah);
-
-+ ath9k_hw_apply_gpio_override(ah);
-+
- return 0;
- }
- EXPORT_SYMBOL(ath9k_hw_reset);
diff --git a/package/mac80211/patches/561-ath9k_fix_staggered_beacons.patch b/package/mac80211/patches/300-ath9k_pending_work.patch
index 08f91258f..7d4301db9 100644
--- a/package/mac80211/patches/561-ath9k_fix_staggered_beacons.patch
+++ b/package/mac80211/patches/300-ath9k_pending_work.patch
@@ -1,3 +1,23 @@
+--- a/drivers/net/wireless/ath/ath9k/ath9k.h
++++ b/drivers/net/wireless/ath/ath9k/ath9k.h
+@@ -362,7 +362,7 @@ struct ath_vif {
+ * number of BSSIDs) if a given beacon does not go out even after waiting this
+ * number of beacon intervals, the game's up.
+ */
+-#define BSTUCK_THRESH (9 * ATH_BCBUF)
++#define BSTUCK_THRESH 9
+ #define ATH_BCBUF 4
+ #define ATH_DEFAULT_BINTVAL 100 /* TU */
+ #define ATH_DEFAULT_BMISS_LIMIT 10
+@@ -386,7 +386,7 @@ struct ath_beacon {
+ u32 beaconq;
+ u32 bmisscnt;
+ u32 ast_be_xmit;
+- u64 bc_tstamp;
++ u32 bc_tstamp;
+ struct ieee80211_vif *bslot[ATH_BCBUF];
+ int slottime;
+ int slotupdate;
--- a/drivers/net/wireless/ath/ath9k/beacon.c
+++ b/drivers/net/wireless/ath/ath9k/beacon.c
@@ -57,8 +57,8 @@ int ath_beaconq_config(struct ath_softc
@@ -53,7 +73,37 @@
ath_dbg(common, ATH_DBG_BEACON,
"stagger beacons, bslot %d intval %u tsfadjust %llu\n",
-@@ -401,8 +395,9 @@ void ath_beacon_tasklet(unsigned long da
+@@ -369,12 +363,13 @@ void ath_beacon_tasklet(unsigned long da
+ if (ath9k_hw_numtxpending(ah, sc->beacon.beaconq) != 0) {
+ sc->beacon.bmisscnt++;
+
+- if (sc->beacon.bmisscnt < BSTUCK_THRESH) {
++ if (sc->beacon.bmisscnt < BSTUCK_THRESH * sc->nbcnvifs) {
+ ath_dbg(common, ATH_DBG_BSTUCK,
+ "missed %u consecutive beacons\n",
+ sc->beacon.bmisscnt);
+ ath9k_hw_stop_dma_queue(ah, sc->beacon.beaconq);
+- ath9k_hw_bstuck_nfcal(ah);
++ if (sc->beacon.bmisscnt > 4)
++ ath9k_hw_bstuck_nfcal(ah);
+ } else if (sc->beacon.bmisscnt >= BSTUCK_THRESH) {
+ ath_dbg(common, ATH_DBG_BSTUCK,
+ "beacon is officially stuck\n");
+@@ -385,13 +380,6 @@ void ath_beacon_tasklet(unsigned long da
+ return;
+ }
+
+- if (sc->beacon.bmisscnt != 0) {
+- ath_dbg(common, ATH_DBG_BSTUCK,
+- "resume beacon xmit after %u misses\n",
+- sc->beacon.bmisscnt);
+- sc->beacon.bmisscnt = 0;
+- }
+-
+ /*
+ * Generate beacon frames. we are sending frames
+ * staggered so calculate the slot for this frame based
+@@ -401,8 +389,9 @@ void ath_beacon_tasklet(unsigned long da
intval = cur_conf->beacon_interval ? : ATH_DEFAULT_BINTVAL;
tsf = ath9k_hw_gettsf64(ah);
@@ -65,7 +115,7 @@
/*
* Reverse the slot order to get slot 0 on the TBTT offset that does
* not require TSF adjustment and other slots adding
-@@ -415,7 +410,7 @@ void ath_beacon_tasklet(unsigned long da
+@@ -415,7 +404,7 @@ void ath_beacon_tasklet(unsigned long da
ath_dbg(common, ATH_DBG_BEACON,
"slot %d [tsf %llu tsftu %u intval %u] vif %p\n",
@@ -74,7 +124,21 @@
bfaddr = 0;
if (vif) {
-@@ -463,13 +458,17 @@ static void ath9k_beacon_init(struct ath
+@@ -424,6 +413,13 @@ void ath_beacon_tasklet(unsigned long da
+ bfaddr = bf->bf_daddr;
+ bc = 1;
+ }
++
++ if (sc->beacon.bmisscnt != 0) {
++ ath_dbg(common, ATH_DBG_BSTUCK,
++ "resume beacon xmit after %u misses\n",
++ sc->beacon.bmisscnt);
++ sc->beacon.bmisscnt = 0;
++ }
+ }
+
+ /*
+@@ -463,13 +459,17 @@ static void ath9k_beacon_init(struct ath
u32 next_beacon,
u32 beacon_period)
{
@@ -94,7 +158,7 @@
}
/*
-@@ -484,18 +483,14 @@ static void ath_beacon_config_ap(struct
+@@ -484,18 +484,14 @@ static void ath_beacon_config_ap(struct
u32 nexttbtt, intval;
/* NB: the beacon interval is kept internally in TU's */
@@ -114,7 +178,7 @@
ah->imask |= ATH9K_INT_SWBA;
ath_beaconq_config(sc);
-@@ -505,11 +500,6 @@ static void ath_beacon_config_ap(struct
+@@ -505,11 +501,6 @@ static void ath_beacon_config_ap(struct
ath9k_beacon_init(sc, nexttbtt, intval);
sc->beacon.bmisscnt = 0;
ath9k_hw_set_interrupts(ah, ah->imask);
@@ -126,7 +190,7 @@
}
/*
-@@ -643,25 +633,20 @@ static void ath_beacon_config_adhoc(stru
+@@ -643,25 +634,20 @@ static void ath_beacon_config_adhoc(stru
{
struct ath_hw *ah = sc->sc_ah;
struct ath_common *common = ath9k_hw_common(ah);
@@ -134,13 +198,13 @@
- u32 tsftu, intval, nexttbtt;
-
- intval = conf->beacon_interval & ATH9K_BEACON_PERIOD;
--
+ u32 tsf, delta, intval, nexttbtt;
-- /* Pull nexttbtt forward to reflect the current TSF */
+ tsf = ath9k_hw_gettsf32(ah) + TU_TO_USEC(FUDGE);
+ intval = TU_TO_USEC(conf->beacon_interval & ATH9K_BEACON_PERIOD);
+- /* Pull nexttbtt forward to reflect the current TSF */
+-
- nexttbtt = TSF_TO_TU(sc->beacon.bc_tstamp >> 32, sc->beacon.bc_tstamp);
- if (nexttbtt == 0)
- nexttbtt = intval;
@@ -164,7 +228,7 @@
ath_dbg(common, ATH_DBG_BEACON,
"IBSS nexttbtt %u intval %u (%u)\n",
-@@ -672,7 +657,6 @@ static void ath_beacon_config_adhoc(stru
+@@ -672,7 +658,6 @@ static void ath_beacon_config_adhoc(stru
* if we need to manually prepare beacon frames. Otherwise we use a
* self-linked tx descriptor and let the hardware deal with things.
*/
@@ -172,9 +236,55 @@
ah->imask |= ATH9K_INT_SWBA;
ath_beaconq_config(sc);
+--- a/drivers/net/wireless/ath/ath9k/htc_drv_beacon.c
++++ b/drivers/net/wireless/ath/ath9k/htc_drv_beacon.c
+@@ -155,7 +155,7 @@ static void ath9k_htc_beacon_config_ap(s
+ nexttbtt = intval;
+
+ if (priv->op_flags & OP_TSF_RESET) {
+- intval |= ATH9K_BEACON_RESET_TSF;
++ ath9k_hw_reset_tsf(priv->ah);
+ priv->op_flags &= ~OP_TSF_RESET;
+ } else {
+ /*
+@@ -168,8 +168,6 @@ static void ath9k_htc_beacon_config_ap(s
+ } while (nexttbtt < tsftu);
+ }
+
+- intval |= ATH9K_BEACON_ENA;
+-
+ if (priv->op_flags & OP_ENABLE_BEACON)
+ imask |= ATH9K_INT_SWBA;
+
+@@ -178,7 +176,7 @@ static void ath9k_htc_beacon_config_ap(s
+ bss_conf->beacon_interval, nexttbtt, imask);
+
+ WMI_CMD(WMI_DISABLE_INTR_CMDID);
+- ath9k_hw_beaconinit(priv->ah, nexttbtt, intval);
++ ath9k_hw_beaconinit(priv->ah, TU_TO_USEC(nexttbtt), TU_TO_USEC(intval));
+ priv->bmiss_cnt = 0;
+ htc_imask = cpu_to_be32(imask);
+ WMI_CMD_BUF(WMI_ENABLE_INTR_CMDID, &htc_imask);
+@@ -207,7 +205,6 @@ static void ath9k_htc_beacon_config_adho
+ nexttbtt += intval;
+ } while (nexttbtt < tsftu);
+
+- intval |= ATH9K_BEACON_ENA;
+ if (priv->op_flags & OP_ENABLE_BEACON)
+ imask |= ATH9K_INT_SWBA;
+
+@@ -216,7 +213,7 @@ static void ath9k_htc_beacon_config_adho
+ bss_conf->beacon_interval, nexttbtt, imask);
+
+ WMI_CMD(WMI_DISABLE_INTR_CMDID);
+- ath9k_hw_beaconinit(priv->ah, nexttbtt, intval);
++ ath9k_hw_beaconinit(priv->ah, TU_TO_USEC(nexttbtt), TU_TO_USEC(intval));
+ priv->bmiss_cnt = 0;
+ htc_imask = cpu_to_be32(imask);
+ WMI_CMD_BUF(WMI_ENABLE_INTR_CMDID, &htc_imask);
--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
-@@ -1706,21 +1706,15 @@ void ath9k_hw_beaconinit(struct ath_hw *
+@@ -1697,21 +1697,15 @@ void ath9k_hw_beaconinit(struct ath_hw *
case NL80211_IFTYPE_MESH_POINT:
REG_SET_BIT(ah, AR_TXCFG,
AR_TXCFG_ADHOC_BEACON_ATIM_TX_POLICY);
@@ -203,7 +313,7 @@
flags |=
AR_TBTT_TIMER_EN | AR_DBA_TIMER_EN | AR_SWBA_TIMER_EN;
break;
-@@ -1732,18 +1726,13 @@ void ath9k_hw_beaconinit(struct ath_hw *
+@@ -1723,18 +1717,13 @@ void ath9k_hw_beaconinit(struct ath_hw *
break;
}
@@ -226,7 +336,7 @@
REG_SET_BIT(ah, AR_TIMER_MODE, flags);
}
EXPORT_SYMBOL(ath9k_hw_beaconinit);
-@@ -2404,10 +2393,11 @@ static u32 rightmost_index(struct ath_ge
+@@ -2395,10 +2384,11 @@ static u32 rightmost_index(struct ath_ge
return timer_table->gen_timer_index[b];
}
@@ -239,20 +349,9 @@
struct ath_gen_timer *ath_gen_timer_alloc(struct ath_hw *ah,
void (*trigger)(void *),
---- a/drivers/net/wireless/ath/ath9k/ath9k.h
-+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
-@@ -392,7 +392,7 @@ struct ath_beacon {
- u32 beaconq;
- u32 bmisscnt;
- u32 ast_be_xmit;
-- u64 bc_tstamp;
-+ u32 bc_tstamp;
- struct ieee80211_vif *bslot[ATH_BCBUF];
- int slottime;
- int slotupdate;
--- a/drivers/net/wireless/ath/ath9k/hw.h
+++ b/drivers/net/wireless/ath/ath9k/hw.h
-@@ -412,8 +412,6 @@ struct ath9k_beacon_state {
+@@ -416,8 +416,6 @@ struct ath9k_beacon_state {
u32 bs_nextdtim;
u32 bs_intval;
#define ATH9K_BEACON_PERIOD 0x0000ffff
@@ -261,7 +360,7 @@
#define ATH9K_TSFOOR_THRESHOLD 0x00004240 /* 16k us */
u32 bs_dtimperiod;
u16 bs_cfpperiod;
-@@ -927,6 +925,7 @@ void ath9k_hw_setopmode(struct ath_hw *a
+@@ -930,6 +928,7 @@ void ath9k_hw_setopmode(struct ath_hw *a
void ath9k_hw_setmcastfilter(struct ath_hw *ah, u32 filter0, u32 filter1);
void ath9k_hw_setbssidmask(struct ath_hw *ah);
void ath9k_hw_write_associd(struct ath_hw *ah);
@@ -269,49 +368,3 @@
u64 ath9k_hw_gettsf64(struct ath_hw *ah);
void ath9k_hw_settsf64(struct ath_hw *ah, u64 tsf64);
void ath9k_hw_reset_tsf(struct ath_hw *ah);
---- a/drivers/net/wireless/ath/ath9k/htc_drv_beacon.c
-+++ b/drivers/net/wireless/ath/ath9k/htc_drv_beacon.c
-@@ -155,7 +155,7 @@ static void ath9k_htc_beacon_config_ap(s
- nexttbtt = intval;
-
- if (priv->op_flags & OP_TSF_RESET) {
-- intval |= ATH9K_BEACON_RESET_TSF;
-+ ath9k_hw_reset_tsf(priv->ah);
- priv->op_flags &= ~OP_TSF_RESET;
- } else {
- /*
-@@ -168,8 +168,6 @@ static void ath9k_htc_beacon_config_ap(s
- } while (nexttbtt < tsftu);
- }
-
-- intval |= ATH9K_BEACON_ENA;
--
- if (priv->op_flags & OP_ENABLE_BEACON)
- imask |= ATH9K_INT_SWBA;
-
-@@ -178,7 +176,7 @@ static void ath9k_htc_beacon_config_ap(s
- bss_conf->beacon_interval, nexttbtt, imask);
-
- WMI_CMD(WMI_DISABLE_INTR_CMDID);
-- ath9k_hw_beaconinit(priv->ah, nexttbtt, intval);
-+ ath9k_hw_beaconinit(priv->ah, TU_TO_USEC(nexttbtt), TU_TO_USEC(intval));
- priv->bmiss_cnt = 0;
- htc_imask = cpu_to_be32(imask);
- WMI_CMD_BUF(WMI_ENABLE_INTR_CMDID, &htc_imask);
-@@ -207,7 +205,6 @@ static void ath9k_htc_beacon_config_adho
- nexttbtt += intval;
- } while (nexttbtt < tsftu);
-
-- intval |= ATH9K_BEACON_ENA;
- if (priv->op_flags & OP_ENABLE_BEACON)
- imask |= ATH9K_INT_SWBA;
-
-@@ -216,7 +213,7 @@ static void ath9k_htc_beacon_config_adho
- bss_conf->beacon_interval, nexttbtt, imask);
-
- WMI_CMD(WMI_DISABLE_INTR_CMDID);
-- ath9k_hw_beaconinit(priv->ah, nexttbtt, intval);
-+ ath9k_hw_beaconinit(priv->ah, TU_TO_USEC(nexttbtt), TU_TO_USEC(intval));
- priv->bmiss_cnt = 0;
- htc_imask = cpu_to_be32(imask);
- WMI_CMD_BUF(WMI_ENABLE_INTR_CMDID, &htc_imask);
diff --git a/package/mac80211/patches/310-pending_work.patch b/package/mac80211/patches/310-pending_work.patch
deleted file mode 100644
index 0c07a8de4..000000000
--- a/package/mac80211/patches/310-pending_work.patch
+++ /dev/null
@@ -1,1441 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/ath9k.h
-+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
-@@ -189,7 +189,6 @@ struct ath_txq {
- u32 axq_ampdu_depth;
- bool stopped;
- bool axq_tx_inprogress;
-- bool txq_flush_inprogress;
- struct list_head axq_acq;
- struct list_head txq_fifo[ATH_TXFIFO_DEPTH];
- struct list_head txq_fifo_pending;
---- a/drivers/net/wireless/ath/ath9k/beacon.c
-+++ b/drivers/net/wireless/ath/ath9k/beacon.c
-@@ -373,6 +373,7 @@ void ath_beacon_tasklet(unsigned long da
- ath_dbg(common, ATH_DBG_BSTUCK,
- "missed %u consecutive beacons\n",
- sc->beacon.bmisscnt);
-+ ath9k_hw_stop_dma_queue(ah, sc->beacon.beaconq);
- ath9k_hw_bstuck_nfcal(ah);
- } else if (sc->beacon.bmisscnt >= BSTUCK_THRESH) {
- ath_dbg(common, ATH_DBG_BSTUCK,
-@@ -450,16 +451,6 @@ void ath_beacon_tasklet(unsigned long da
- sc->beacon.updateslot = OK;
- }
- if (bfaddr != 0) {
-- /*
-- * Stop any current dma and put the new frame(s) on the queue.
-- * This should never fail since we check above that no frames
-- * are still pending on the queue.
-- */
-- if (!ath9k_hw_stoptxdma(ah, sc->beacon.beaconq)) {
-- ath_err(common, "beacon queue %u did not stop?\n",
-- sc->beacon.beaconq);
-- }
--
- /* NB: cabq traffic should already be queued and primed */
- ath9k_hw_puttxbuf(ah, sc->beacon.beaconq, bfaddr);
- ath9k_hw_txstart(ah, sc->beacon.beaconq);
-@@ -780,7 +771,7 @@ void ath9k_set_beaconing_status(struct a
- ah->imask &= ~ATH9K_INT_SWBA;
- ath9k_hw_set_interrupts(ah, ah->imask);
- tasklet_kill(&sc->bcon_tasklet);
-- ath9k_hw_stoptxdma(ah, sc->beacon.beaconq);
-+ ath9k_hw_stop_dma_queue(ah, sc->beacon.beaconq);
- }
- ath9k_ps_restore(sc);
- }
---- a/drivers/net/wireless/ath/ath9k/hw.h
-+++ b/drivers/net/wireless/ath/ath9k/hw.h
-@@ -95,9 +95,9 @@
- #define REG_READ_FIELD(_a, _r, _f) \
- (((REG_READ(_a, _r) & _f) >> _f##_S))
- #define REG_SET_BIT(_a, _r, _f) \
-- REG_WRITE(_a, _r, REG_READ(_a, _r) | _f)
-+ REG_WRITE(_a, _r, REG_READ(_a, _r) | (_f))
- #define REG_CLR_BIT(_a, _r, _f) \
-- REG_WRITE(_a, _r, REG_READ(_a, _r) & ~_f)
-+ REG_WRITE(_a, _r, REG_READ(_a, _r) & ~(_f))
-
- #define DO_DELAY(x) do { \
- if ((++(x) % 64) == 0) \
---- a/drivers/net/wireless/ath/ath9k/mac.c
-+++ b/drivers/net/wireless/ath/ath9k/mac.c
-@@ -143,84 +143,59 @@ bool ath9k_hw_updatetxtriglevel(struct a
- }
- EXPORT_SYMBOL(ath9k_hw_updatetxtriglevel);
-
--bool ath9k_hw_stoptxdma(struct ath_hw *ah, u32 q)
-+void ath9k_hw_abort_tx_dma(struct ath_hw *ah)
- {
--#define ATH9K_TX_STOP_DMA_TIMEOUT 4000 /* usec */
--#define ATH9K_TIME_QUANTUM 100 /* usec */
-- struct ath_common *common = ath9k_hw_common(ah);
-- struct ath9k_hw_capabilities *pCap = &ah->caps;
-- struct ath9k_tx_queue_info *qi;
-- u32 tsfLow, j, wait;
-- u32 wait_time = ATH9K_TX_STOP_DMA_TIMEOUT / ATH9K_TIME_QUANTUM;
-+ int i, q;
-
-- if (q >= pCap->total_queues) {
-- ath_dbg(common, ATH_DBG_QUEUE,
-- "Stopping TX DMA, invalid queue: %u\n", q);
-- return false;
-- }
-+ REG_WRITE(ah, AR_Q_TXD, AR_Q_TXD_M);
-
-- qi = &ah->txq[q];
-- if (qi->tqi_type == ATH9K_TX_QUEUE_INACTIVE) {
-- ath_dbg(common, ATH_DBG_QUEUE,
-- "Stopping TX DMA, inactive queue: %u\n", q);
-- return false;
-- }
-+ REG_SET_BIT(ah, AR_PCU_MISC, AR_PCU_FORCE_QUIET_COLL | AR_PCU_CLEAR_VMF);
-+ REG_SET_BIT(ah, AR_DIAG_SW, AR_DIAG_FORCE_CH_IDLE_HIGH);
-+ REG_SET_BIT(ah, AR_D_GBL_IFS_MISC, AR_D_GBL_IFS_MISC_IGNORE_BACKOFF);
-
-- REG_WRITE(ah, AR_Q_TXD, 1 << q);
-+ for (q = 0; q < AR_NUM_QCU; q++) {
-+ for (i = 0; i < 1000; i++) {
-+ if (i)
-+ udelay(5);
-
-- for (wait = wait_time; wait != 0; wait--) {
-- if (ath9k_hw_numtxpending(ah, q) == 0)
-- break;
-- udelay(ATH9K_TIME_QUANTUM);
-+ if (!ath9k_hw_numtxpending(ah, q))
-+ break;
-+ }
- }
-
-- if (ath9k_hw_numtxpending(ah, q)) {
-- ath_dbg(common, ATH_DBG_QUEUE,
-- "%s: Num of pending TX Frames %d on Q %d\n",
-- __func__, ath9k_hw_numtxpending(ah, q), q);
--
-- for (j = 0; j < 2; j++) {
-- tsfLow = REG_READ(ah, AR_TSF_L32);
-- REG_WRITE(ah, AR_QUIET2,
-- SM(10, AR_QUIET2_QUIET_DUR));
-- REG_WRITE(ah, AR_QUIET_PERIOD, 100);
-- REG_WRITE(ah, AR_NEXT_QUIET_TIMER, tsfLow >> 10);
-- REG_SET_BIT(ah, AR_TIMER_MODE,
-- AR_QUIET_TIMER_EN);
--
-- if ((REG_READ(ah, AR_TSF_L32) >> 10) == (tsfLow >> 10))
-- break;
-+ REG_CLR_BIT(ah, AR_PCU_MISC, AR_PCU_FORCE_QUIET_COLL | AR_PCU_CLEAR_VMF);
-+ REG_CLR_BIT(ah, AR_DIAG_SW, AR_DIAG_FORCE_CH_IDLE_HIGH);
-+ REG_CLR_BIT(ah, AR_D_GBL_IFS_MISC, AR_D_GBL_IFS_MISC_IGNORE_BACKOFF);
-
-- ath_dbg(common, ATH_DBG_QUEUE,
-- "TSF has moved while trying to set quiet time TSF: 0x%08x\n",
-- tsfLow);
-- }
-+ REG_WRITE(ah, AR_Q_TXD, 0);
-+}
-+EXPORT_SYMBOL(ath9k_hw_abort_tx_dma);
-
-- REG_SET_BIT(ah, AR_DIAG_SW, AR_DIAG_FORCE_CH_IDLE_HIGH);
-+bool ath9k_hw_stop_dma_queue(struct ath_hw *ah, u32 q)
-+{
-+#define ATH9K_TX_STOP_DMA_TIMEOUT 1000 /* usec */
-+#define ATH9K_TIME_QUANTUM 100 /* usec */
-+ int wait_time = ATH9K_TX_STOP_DMA_TIMEOUT / ATH9K_TIME_QUANTUM;
-+ int wait;
-
-- udelay(200);
-- REG_CLR_BIT(ah, AR_TIMER_MODE, AR_QUIET_TIMER_EN);
-+ REG_WRITE(ah, AR_Q_TXD, 1 << q);
-
-- wait = wait_time;
-- while (ath9k_hw_numtxpending(ah, q)) {
-- if ((--wait) == 0) {
-- ath_err(common,
-- "Failed to stop TX DMA in 100 msec after killing last frame\n");
-- break;
-- }
-+ for (wait = wait_time; wait != 0; wait--) {
-+ if (wait != wait_time)
- udelay(ATH9K_TIME_QUANTUM);
-- }
-
-- REG_CLR_BIT(ah, AR_DIAG_SW, AR_DIAG_FORCE_CH_IDLE_HIGH);
-+ if (ath9k_hw_numtxpending(ah, q) == 0)
-+ break;
- }
-
- REG_WRITE(ah, AR_Q_TXD, 0);
-+
- return wait != 0;
-
- #undef ATH9K_TX_STOP_DMA_TIMEOUT
- #undef ATH9K_TIME_QUANTUM
- }
--EXPORT_SYMBOL(ath9k_hw_stoptxdma);
-+EXPORT_SYMBOL(ath9k_hw_stop_dma_queue);
-
- void ath9k_hw_gettxintrtxqs(struct ath_hw *ah, u32 *txqs)
- {
---- a/drivers/net/wireless/ath/ath9k/mac.h
-+++ b/drivers/net/wireless/ath/ath9k/mac.h
-@@ -676,7 +676,8 @@ void ath9k_hw_txstart(struct ath_hw *ah,
- void ath9k_hw_cleartxdesc(struct ath_hw *ah, void *ds);
- u32 ath9k_hw_numtxpending(struct ath_hw *ah, u32 q);
- bool ath9k_hw_updatetxtriglevel(struct ath_hw *ah, bool bIncTrigLevel);
--bool ath9k_hw_stoptxdma(struct ath_hw *ah, u32 q);
-+bool ath9k_hw_stop_dma_queue(struct ath_hw *ah, u32 q);
-+void ath9k_hw_abort_tx_dma(struct ath_hw *ah);
- void ath9k_hw_gettxintrtxqs(struct ath_hw *ah, u32 *txqs);
- bool ath9k_hw_set_txq_props(struct ath_hw *ah, int q,
- const struct ath9k_tx_queue_info *qinfo);
---- a/drivers/net/wireless/ath/ath9k/main.c
-+++ b/drivers/net/wireless/ath/ath9k/main.c
-@@ -2128,56 +2128,42 @@ static void ath9k_set_coverage_class(str
-
- static void ath9k_flush(struct ieee80211_hw *hw, bool drop)
- {
--#define ATH_FLUSH_TIMEOUT 60 /* ms */
- struct ath_softc *sc = hw->priv;
-- struct ath_txq *txq = NULL;
-- struct ath_hw *ah = sc->sc_ah;
-- struct ath_common *common = ath9k_hw_common(ah);
-- int i, j, npend = 0;
-+ int timeout = 200; /* ms */
-+ int i, j;
-
-+ ath9k_ps_wakeup(sc);
- mutex_lock(&sc->mutex);
-
- cancel_delayed_work_sync(&sc->tx_complete_work);
-
-- for (i = 0; i < ATH9K_NUM_TX_QUEUES; i++) {
-- if (!ATH_TXQ_SETUP(sc, i))
-- continue;
-- txq = &sc->tx.txq[i];
--
-- if (!drop) {
-- for (j = 0; j < ATH_FLUSH_TIMEOUT; j++) {
-- if (!ath9k_has_pending_frames(sc, txq))
-- break;
-- usleep_range(1000, 2000);
-- }
-- }
-+ if (drop)
-+ timeout = 1;
-+
-+ for (j = 0; j < timeout; j++) {
-+ int npend = 0;
-+
-+ if (j)
-+ usleep_range(1000, 2000);
-
-- if (drop || ath9k_has_pending_frames(sc, txq)) {
-- ath_dbg(common, ATH_DBG_QUEUE, "Drop frames from hw queue:%d\n",
-- txq->axq_qnum);
-- spin_lock_bh(&txq->axq_lock);
-- txq->txq_flush_inprogress = true;
-- spin_unlock_bh(&txq->axq_lock);
--
-- ath9k_ps_wakeup(sc);
-- ath9k_hw_stoptxdma(ah, txq->axq_qnum);
-- npend = ath9k_hw_numtxpending(ah, txq->axq_qnum);
-- ath9k_ps_restore(sc);
-- if (npend)
-- break;
-+ for (i = 0; i < ATH9K_NUM_TX_QUEUES; i++) {
-+ if (!ATH_TXQ_SETUP(sc, i))
-+ continue;
-
-- ath_draintxq(sc, txq, false);
-- txq->txq_flush_inprogress = false;
-+ npend += ath9k_has_pending_frames(sc, &sc->tx.txq[i]);
- }
-+
-+ if (!npend)
-+ goto out;
- }
-
-- if (npend) {
-+ if (!ath_drain_all_txq(sc, false))
- ath_reset(sc, false);
-- txq->txq_flush_inprogress = false;
-- }
-
-+out:
- ieee80211_queue_delayed_work(hw, &sc->tx_complete_work, 0);
- mutex_unlock(&sc->mutex);
-+ ath9k_ps_restore(sc);
- }
-
- struct ieee80211_ops ath9k_ops = {
---- a/drivers/net/wireless/ath/ath9k/xmit.c
-+++ b/drivers/net/wireless/ath/ath9k/xmit.c
-@@ -166,7 +166,7 @@ static void ath_tx_flush_tid(struct ath_
- fi = get_frame_info(bf->bf_mpdu);
- if (fi->retries) {
- ath_tx_update_baw(sc, tid, fi->seqno);
-- ath_tx_complete_buf(sc, bf, txq, &bf_head, &ts, 0, 0);
-+ ath_tx_complete_buf(sc, bf, txq, &bf_head, &ts, 0, 1);
- } else {
- ath_tx_send_normal(sc, txq, NULL, &bf_head);
- }
-@@ -1194,16 +1194,14 @@ bool ath_drain_all_txq(struct ath_softc
- if (sc->sc_flags & SC_OP_INVALID)
- return true;
-
-- /* Stop beacon queue */
-- ath9k_hw_stoptxdma(sc->sc_ah, sc->beacon.beaconq);
-+ ath9k_hw_abort_tx_dma(ah);
-
-- /* Stop data queues */
-+ /* Check if any queue remains active */
- for (i = 0; i < ATH9K_NUM_TX_QUEUES; i++) {
-- if (ATH_TXQ_SETUP(sc, i)) {
-- txq = &sc->tx.txq[i];
-- ath9k_hw_stoptxdma(ah, txq->axq_qnum);
-- npend += ath9k_hw_numtxpending(ah, txq->axq_qnum);
-- }
-+ if (!ATH_TXQ_SETUP(sc, i))
-+ continue;
-+
-+ npend += ath9k_hw_numtxpending(ah, sc->tx.txq[i].axq_qnum);
- }
-
- if (npend)
-@@ -2014,8 +2012,7 @@ static void ath_tx_processq(struct ath_s
- spin_lock_bh(&txq->axq_lock);
- if (list_empty(&txq->axq_q)) {
- txq->axq_link = NULL;
-- if (sc->sc_flags & SC_OP_TXAGGR &&
-- !txq->txq_flush_inprogress)
-+ if (sc->sc_flags & SC_OP_TXAGGR)
- ath_txq_schedule(sc, txq);
- spin_unlock_bh(&txq->axq_lock);
- break;
-@@ -2096,7 +2093,7 @@ static void ath_tx_processq(struct ath_s
-
- spin_lock_bh(&txq->axq_lock);
-
-- if (sc->sc_flags & SC_OP_TXAGGR && !txq->txq_flush_inprogress)
-+ if (sc->sc_flags & SC_OP_TXAGGR)
- ath_txq_schedule(sc, txq);
- spin_unlock_bh(&txq->axq_lock);
- }
-@@ -2267,18 +2264,17 @@ void ath_tx_edma_tasklet(struct ath_soft
-
- spin_lock_bh(&txq->axq_lock);
-
-- if (!txq->txq_flush_inprogress) {
-- if (!list_empty(&txq->txq_fifo_pending)) {
-- INIT_LIST_HEAD(&bf_head);
-- bf = list_first_entry(&txq->txq_fifo_pending,
-- struct ath_buf, list);
-- list_cut_position(&bf_head,
-- &txq->txq_fifo_pending,
-- &bf->bf_lastbf->list);
-- ath_tx_txqaddbuf(sc, txq, &bf_head);
-- } else if (sc->sc_flags & SC_OP_TXAGGR)
-- ath_txq_schedule(sc, txq);
-- }
-+ if (!list_empty(&txq->txq_fifo_pending)) {
-+ INIT_LIST_HEAD(&bf_head);
-+ bf = list_first_entry(&txq->txq_fifo_pending,
-+ struct ath_buf, list);
-+ list_cut_position(&bf_head,
-+ &txq->txq_fifo_pending,
-+ &bf->bf_lastbf->list);
-+ ath_tx_txqaddbuf(sc, txq, &bf_head);
-+ } else if (sc->sc_flags & SC_OP_TXAGGR)
-+ ath_txq_schedule(sc, txq);
-+
- spin_unlock_bh(&txq->axq_lock);
- }
- }
---- a/net/mac80211/chan.c
-+++ b/net/mac80211/chan.c
-@@ -77,6 +77,9 @@ bool ieee80211_set_channel_type(struct i
- switch (tmp->vif.bss_conf.channel_type) {
- case NL80211_CHAN_NO_HT:
- case NL80211_CHAN_HT20:
-+ if (superchan > tmp->vif.bss_conf.channel_type)
-+ break;
-+
- superchan = tmp->vif.bss_conf.channel_type;
- break;
- case NL80211_CHAN_HT40PLUS:
---- a/drivers/net/wireless/ath/ath9k/ar9003_hw.c
-+++ b/drivers/net/wireless/ath/ath9k/ar9003_hw.c
-@@ -88,66 +88,6 @@ static void ar9003_hw_init_mode_regs(str
- ar9485_1_1_pcie_phy_clkreq_disable_L1,
- ARRAY_SIZE(ar9485_1_1_pcie_phy_clkreq_disable_L1),
- 2);
-- } else if (AR_SREV_9485(ah)) {
-- /* mac */
-- INIT_INI_ARRAY(&ah->iniMac[ATH_INI_PRE], NULL, 0, 0);
-- INIT_INI_ARRAY(&ah->iniMac[ATH_INI_CORE],
-- ar9485_1_0_mac_core,
-- ARRAY_SIZE(ar9485_1_0_mac_core), 2);
-- INIT_INI_ARRAY(&ah->iniMac[ATH_INI_POST],
-- ar9485_1_0_mac_postamble,
-- ARRAY_SIZE(ar9485_1_0_mac_postamble), 5);
--
-- /* bb */
-- INIT_INI_ARRAY(&ah->iniBB[ATH_INI_PRE], ar9485_1_0,
-- ARRAY_SIZE(ar9485_1_0), 2);
-- INIT_INI_ARRAY(&ah->iniBB[ATH_INI_CORE],
-- ar9485_1_0_baseband_core,
-- ARRAY_SIZE(ar9485_1_0_baseband_core), 2);
-- INIT_INI_ARRAY(&ah->iniBB[ATH_INI_POST],
-- ar9485_1_0_baseband_postamble,
-- ARRAY_SIZE(ar9485_1_0_baseband_postamble), 5);
--
-- /* radio */
-- INIT_INI_ARRAY(&ah->iniRadio[ATH_INI_PRE], NULL, 0, 0);
-- INIT_INI_ARRAY(&ah->iniRadio[ATH_INI_CORE],
-- ar9485_1_0_radio_core,
-- ARRAY_SIZE(ar9485_1_0_radio_core), 2);
-- INIT_INI_ARRAY(&ah->iniRadio[ATH_INI_POST],
-- ar9485_1_0_radio_postamble,
-- ARRAY_SIZE(ar9485_1_0_radio_postamble), 2);
--
-- /* soc */
-- INIT_INI_ARRAY(&ah->iniSOC[ATH_INI_PRE],
-- ar9485_1_0_soc_preamble,
-- ARRAY_SIZE(ar9485_1_0_soc_preamble), 2);
-- INIT_INI_ARRAY(&ah->iniSOC[ATH_INI_CORE], NULL, 0, 0);
-- INIT_INI_ARRAY(&ah->iniSOC[ATH_INI_POST], NULL, 0, 0);
--
-- /* rx/tx gain */
-- INIT_INI_ARRAY(&ah->iniModesRxGain,
-- ar9485Common_rx_gain_1_0,
-- ARRAY_SIZE(ar9485Common_rx_gain_1_0), 2);
-- INIT_INI_ARRAY(&ah->iniModesTxGain,
-- ar9485Modes_lowest_ob_db_tx_gain_1_0,
-- ARRAY_SIZE(ar9485Modes_lowest_ob_db_tx_gain_1_0),
-- 5);
--
-- /* Load PCIE SERDES settings from INI */
--
-- /* Awake Setting */
--
-- INIT_INI_ARRAY(&ah->iniPcieSerdes,
-- ar9485_1_0_pcie_phy_pll_on_clkreq_disable_L1,
-- ARRAY_SIZE(ar9485_1_0_pcie_phy_pll_on_clkreq_disable_L1),
-- 2);
--
-- /* Sleep Setting */
--
-- INIT_INI_ARRAY(&ah->iniPcieSerdesLowPower,
-- ar9485_1_0_pcie_phy_pll_on_clkreq_disable_L1,
-- ARRAY_SIZE(ar9485_1_0_pcie_phy_pll_on_clkreq_disable_L1),
-- 2);
- } else {
- /* mac */
- INIT_INI_ARRAY(&ah->iniMac[ATH_INI_PRE], NULL, 0, 0);
-@@ -228,11 +168,6 @@ static void ar9003_tx_gain_table_apply(s
- ar9485_modes_lowest_ob_db_tx_gain_1_1,
- ARRAY_SIZE(ar9485_modes_lowest_ob_db_tx_gain_1_1),
- 5);
-- else if (AR_SREV_9485(ah))
-- INIT_INI_ARRAY(&ah->iniModesTxGain,
-- ar9485Modes_lowest_ob_db_tx_gain_1_0,
-- ARRAY_SIZE(ar9485Modes_lowest_ob_db_tx_gain_1_0),
-- 5);
- else
- INIT_INI_ARRAY(&ah->iniModesTxGain,
- ar9300Modes_lowest_ob_db_tx_gain_table_2p2,
-@@ -245,11 +180,6 @@ static void ar9003_tx_gain_table_apply(s
- ar9485Modes_high_ob_db_tx_gain_1_1,
- ARRAY_SIZE(ar9485Modes_high_ob_db_tx_gain_1_1),
- 5);
-- else if (AR_SREV_9485(ah))
-- INIT_INI_ARRAY(&ah->iniModesTxGain,
-- ar9485Modes_high_ob_db_tx_gain_1_0,
-- ARRAY_SIZE(ar9485Modes_high_ob_db_tx_gain_1_0),
-- 5);
- else
- INIT_INI_ARRAY(&ah->iniModesTxGain,
- ar9300Modes_high_ob_db_tx_gain_table_2p2,
-@@ -262,11 +192,6 @@ static void ar9003_tx_gain_table_apply(s
- ar9485Modes_low_ob_db_tx_gain_1_1,
- ARRAY_SIZE(ar9485Modes_low_ob_db_tx_gain_1_1),
- 5);
-- else if (AR_SREV_9485(ah))
-- INIT_INI_ARRAY(&ah->iniModesTxGain,
-- ar9485Modes_low_ob_db_tx_gain_1_0,
-- ARRAY_SIZE(ar9485Modes_low_ob_db_tx_gain_1_0),
-- 5);
- else
- INIT_INI_ARRAY(&ah->iniModesTxGain,
- ar9300Modes_low_ob_db_tx_gain_table_2p2,
-@@ -279,11 +204,6 @@ static void ar9003_tx_gain_table_apply(s
- ar9485Modes_high_power_tx_gain_1_1,
- ARRAY_SIZE(ar9485Modes_high_power_tx_gain_1_1),
- 5);
-- else if (AR_SREV_9485(ah))
-- INIT_INI_ARRAY(&ah->iniModesTxGain,
-- ar9485Modes_high_power_tx_gain_1_0,
-- ARRAY_SIZE(ar9485Modes_high_power_tx_gain_1_0),
-- 5);
- else
- INIT_INI_ARRAY(&ah->iniModesTxGain,
- ar9300Modes_high_power_tx_gain_table_2p2,
-@@ -303,11 +223,6 @@ static void ar9003_rx_gain_table_apply(s
- ar9485_common_rx_gain_1_1,
- ARRAY_SIZE(ar9485_common_rx_gain_1_1),
- 2);
-- else if (AR_SREV_9485(ah))
-- INIT_INI_ARRAY(&ah->iniModesRxGain,
-- ar9485Common_rx_gain_1_0,
-- ARRAY_SIZE(ar9485Common_rx_gain_1_0),
-- 2);
- else
- INIT_INI_ARRAY(&ah->iniModesRxGain,
- ar9300Common_rx_gain_table_2p2,
-@@ -320,11 +235,6 @@ static void ar9003_rx_gain_table_apply(s
- ar9485Common_wo_xlna_rx_gain_1_1,
- ARRAY_SIZE(ar9485Common_wo_xlna_rx_gain_1_1),
- 2);
-- else if (AR_SREV_9485(ah))
-- INIT_INI_ARRAY(&ah->iniModesRxGain,
-- ar9485Common_wo_xlna_rx_gain_1_0,
-- ARRAY_SIZE(ar9485Common_wo_xlna_rx_gain_1_0),
-- 2);
- else
- INIT_INI_ARRAY(&ah->iniModesRxGain,
- ar9300Common_wo_xlna_rx_gain_table_2p2,
---- a/drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-+++ b/drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-@@ -17,931 +17,6 @@
- #ifndef INITVALS_9485_H
- #define INITVALS_9485_H
-
--static const u32 ar9485Common_1_0[][2] = {
-- /* Addr allmodes */
-- {0x00007010, 0x00000022},
-- {0x00007020, 0x00000000},
-- {0x00007034, 0x00000002},
-- {0x00007038, 0x000004c2},
--};
--
--static const u32 ar9485_1_0_mac_postamble[][5] = {
-- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */
-- {0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160},
-- {0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c},
-- {0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38},
-- {0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00},
-- {0x0000801c, 0x128d8027, 0x128d804f, 0x12e00057, 0x12e0002b},
-- {0x00008120, 0x08f04800, 0x08f04800, 0x08f04810, 0x08f04810},
-- {0x000081d0, 0x00003210, 0x00003210, 0x0000320a, 0x0000320a},
-- {0x00008318, 0x00003e80, 0x00007d00, 0x00006880, 0x00003440},
--};
--
--static const u32 ar9485_1_0_pcie_phy_pll_on_clkreq_disable_L1[][2] = {
-- /* Addr allmodes */
-- {0x00018c00, 0x10212e5e},
-- {0x00018c04, 0x000801d8},
-- {0x00018c08, 0x0000580c},
--};
--
--static const u32 ar9485Common_wo_xlna_rx_gain_1_0[][2] = {
-- /* Addr allmodes */
-- {0x0000a000, 0x00010000},
-- {0x0000a004, 0x00030002},
-- {0x0000a008, 0x00050004},
-- {0x0000a00c, 0x00810080},
-- {0x0000a010, 0x01800082},
-- {0x0000a014, 0x01820181},
-- {0x0000a018, 0x01840183},
-- {0x0000a01c, 0x01880185},
-- {0x0000a020, 0x018a0189},
-- {0x0000a024, 0x02850284},
-- {0x0000a028, 0x02890288},
-- {0x0000a02c, 0x03850384},
-- {0x0000a030, 0x03890388},
-- {0x0000a034, 0x038b038a},
-- {0x0000a038, 0x038d038c},
-- {0x0000a03c, 0x03910390},
-- {0x0000a040, 0x03930392},
-- {0x0000a044, 0x03950394},
-- {0x0000a048, 0x00000396},
-- {0x0000a04c, 0x00000000},
-- {0x0000a050, 0x00000000},
-- {0x0000a054, 0x00000000},
-- {0x0000a058, 0x00000000},
-- {0x0000a05c, 0x00000000},
-- {0x0000a060, 0x00000000},
-- {0x0000a064, 0x00000000},
-- {0x0000a068, 0x00000000},
-- {0x0000a06c, 0x00000000},
-- {0x0000a070, 0x00000000},
-- {0x0000a074, 0x00000000},
-- {0x0000a078, 0x00000000},
-- {0x0000a07c, 0x00000000},
-- {0x0000a080, 0x28282828},
-- {0x0000a084, 0x28282828},
-- {0x0000a088, 0x28282828},
-- {0x0000a08c, 0x28282828},
-- {0x0000a090, 0x28282828},
-- {0x0000a094, 0x21212128},
-- {0x0000a098, 0x171c1c1c},
-- {0x0000a09c, 0x02020212},
-- {0x0000a0a0, 0x00000202},
-- {0x0000a0a4, 0x00000000},
-- {0x0000a0a8, 0x00000000},
-- {0x0000a0ac, 0x00000000},
-- {0x0000a0b0, 0x00000000},
-- {0x0000a0b4, 0x00000000},
-- {0x0000a0b8, 0x00000000},
-- {0x0000a0bc, 0x00000000},
-- {0x0000a0c0, 0x001f0000},
-- {0x0000a0c4, 0x111f1100},
-- {0x0000a0c8, 0x111d111e},
-- {0x0000a0cc, 0x111b111c},
-- {0x0000a0d0, 0x22032204},
-- {0x0000a0d4, 0x22012202},
-- {0x0000a0d8, 0x221f2200},
-- {0x0000a0dc, 0x221d221e},
-- {0x0000a0e0, 0x33013302},
-- {0x0000a0e4, 0x331f3300},
-- {0x0000a0e8, 0x4402331e},
-- {0x0000a0ec, 0x44004401},
-- {0x0000a0f0, 0x441e441f},
-- {0x0000a0f4, 0x55015502},
-- {0x0000a0f8, 0x551f5500},
-- {0x0000a0fc, 0x6602551e},
-- {0x0000a100, 0x66006601},
-- {0x0000a104, 0x661e661f},
-- {0x0000a108, 0x7703661d},
-- {0x0000a10c, 0x77017702},
-- {0x0000a110, 0x00007700},
-- {0x0000a114, 0x00000000},
-- {0x0000a118, 0x00000000},
-- {0x0000a11c, 0x00000000},
-- {0x0000a120, 0x00000000},
-- {0x0000a124, 0x00000000},
-- {0x0000a128, 0x00000000},
-- {0x0000a12c, 0x00000000},
-- {0x0000a130, 0x00000000},
-- {0x0000a134, 0x00000000},
-- {0x0000a138, 0x00000000},
-- {0x0000a13c, 0x00000000},
-- {0x0000a140, 0x001f0000},
-- {0x0000a144, 0x111f1100},
-- {0x0000a148, 0x111d111e},
-- {0x0000a14c, 0x111b111c},
-- {0x0000a150, 0x22032204},
-- {0x0000a154, 0x22012202},
-- {0x0000a158, 0x221f2200},
-- {0x0000a15c, 0x221d221e},
-- {0x0000a160, 0x33013302},
-- {0x0000a164, 0x331f3300},
-- {0x0000a168, 0x4402331e},
-- {0x0000a16c, 0x44004401},
-- {0x0000a170, 0x441e441f},
-- {0x0000a174, 0x55015502},
-- {0x0000a178, 0x551f5500},
-- {0x0000a17c, 0x6602551e},
-- {0x0000a180, 0x66006601},
-- {0x0000a184, 0x661e661f},
-- {0x0000a188, 0x7703661d},
-- {0x0000a18c, 0x77017702},
-- {0x0000a190, 0x00007700},
-- {0x0000a194, 0x00000000},
-- {0x0000a198, 0x00000000},
-- {0x0000a19c, 0x00000000},
-- {0x0000a1a0, 0x00000000},
-- {0x0000a1a4, 0x00000000},
-- {0x0000a1a8, 0x00000000},
-- {0x0000a1ac, 0x00000000},
-- {0x0000a1b0, 0x00000000},
-- {0x0000a1b4, 0x00000000},
-- {0x0000a1b8, 0x00000000},
-- {0x0000a1bc, 0x00000000},
-- {0x0000a1c0, 0x00000000},
-- {0x0000a1c4, 0x00000000},
-- {0x0000a1c8, 0x00000000},
-- {0x0000a1cc, 0x00000000},
-- {0x0000a1d0, 0x00000000},
-- {0x0000a1d4, 0x00000000},
-- {0x0000a1d8, 0x00000000},
-- {0x0000a1dc, 0x00000000},
-- {0x0000a1e0, 0x00000000},
-- {0x0000a1e4, 0x00000000},
-- {0x0000a1e8, 0x00000000},
-- {0x0000a1ec, 0x00000000},
-- {0x0000a1f0, 0x00000396},
-- {0x0000a1f4, 0x00000396},
-- {0x0000a1f8, 0x00000396},
-- {0x0000a1fc, 0x00000296},
--};
--
--static const u32 ar9485Modes_high_power_tx_gain_1_0[][5] = {
-- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */
-- {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d8, 0x000050d8},
-- {0x0000a500, 0x00022200, 0x00022200, 0x00000000, 0x00000000},
-- {0x0000a504, 0x05062002, 0x05062002, 0x04000002, 0x04000002},
-- {0x0000a508, 0x0c002e00, 0x0c002e00, 0x08000004, 0x08000004},
-- {0x0000a50c, 0x11062202, 0x11062202, 0x0d000200, 0x0d000200},
-- {0x0000a510, 0x17022e00, 0x17022e00, 0x11000202, 0x11000202},
-- {0x0000a514, 0x1d000ec2, 0x1d000ec2, 0x15000400, 0x15000400},
-- {0x0000a518, 0x25020ec0, 0x25020ec0, 0x19000402, 0x19000402},
-- {0x0000a51c, 0x2b020ec3, 0x2b020ec3, 0x1d000404, 0x1d000404},
-- {0x0000a520, 0x2f001f04, 0x2f001f04, 0x21000603, 0x21000603},
-- {0x0000a524, 0x35001fc4, 0x35001fc4, 0x25000605, 0x25000605},
-- {0x0000a528, 0x3c022f04, 0x3c022f04, 0x2a000a03, 0x2a000a03},
-- {0x0000a52c, 0x41023e85, 0x41023e85, 0x2c000a04, 0x2c000a04},
-- {0x0000a530, 0x48023ec6, 0x48023ec6, 0x2e000a20, 0x2e000a20},
-- {0x0000a534, 0x4d023f01, 0x4d023f01, 0x34000e20, 0x34000e20},
-- {0x0000a538, 0x53023f4b, 0x53023f4b, 0x38000e22, 0x38000e22},
-- {0x0000a53c, 0x5a027f09, 0x5a027f09, 0x3c000e24, 0x3c000e24},
-- {0x0000a540, 0x5f027fc9, 0x5f027fc9, 0x40000e26, 0x40000e26},
-- {0x0000a544, 0x6502feca, 0x6502feca, 0x43001640, 0x43001640},
-- {0x0000a548, 0x6b02ff4a, 0x6b02ff4a, 0x46001660, 0x46001660},
-- {0x0000a54c, 0x7203feca, 0x7203feca, 0x49001861, 0x49001861},
-- {0x0000a550, 0x7703ff0b, 0x7703ff0b, 0x4c001a81, 0x4c001a81},
-- {0x0000a554, 0x7d06ffcb, 0x7d06ffcb, 0x4f001a83, 0x4f001a83},
-- {0x0000a558, 0x8407ff0b, 0x8407ff0b, 0x54001c85, 0x54001c85},
-- {0x0000a55c, 0x8907ffcb, 0x8907ffcb, 0x58001ce5, 0x58001ce5},
-- {0x0000a560, 0x900fff0b, 0x900fff0b, 0x5b001ce9, 0x5b001ce9},
-- {0x0000a564, 0x960fffcb, 0x960fffcb, 0x60001eeb, 0x60001eeb},
-- {0x0000a568, 0x9c1fff0b, 0x9c1fff0b, 0x60001eeb, 0x60001eeb},
-- {0x0000a56c, 0x9c1fff0b, 0x9c1fff0b, 0x60001eeb, 0x60001eeb},
-- {0x0000a570, 0x9c1fff0b, 0x9c1fff0b, 0x60001eeb, 0x60001eeb},
-- {0x0000a574, 0x9c1fff0b, 0x9c1fff0b, 0x60001eeb, 0x60001eeb},
-- {0x0000a578, 0x9c1fff0b, 0x9c1fff0b, 0x60001eeb, 0x60001eeb},
-- {0x0000a57c, 0x9c1fff0b, 0x9c1fff0b, 0x60001eeb, 0x60001eeb},
-- {0x00016044, 0x05b6b2db, 0x05b6b2db, 0x05b6b2db, 0x05b6b2db},
--};
--
--static const u32 ar9485_1_0[][2] = {
-- /* Addr allmodes */
-- {0x0000a580, 0x00000000},
-- {0x0000a584, 0x00000000},
-- {0x0000a588, 0x00000000},
-- {0x0000a58c, 0x00000000},
-- {0x0000a590, 0x00000000},
-- {0x0000a594, 0x00000000},
-- {0x0000a598, 0x00000000},
-- {0x0000a59c, 0x00000000},
-- {0x0000a5a0, 0x00000000},
-- {0x0000a5a4, 0x00000000},
-- {0x0000a5a8, 0x00000000},
-- {0x0000a5ac, 0x00000000},
-- {0x0000a5b0, 0x00000000},
-- {0x0000a5b4, 0x00000000},
-- {0x0000a5b8, 0x00000000},
-- {0x0000a5bc, 0x00000000},
--};
--
--static const u32 ar9485_1_0_radio_core[][2] = {
-- /* Addr allmodes */
-- {0x00016000, 0x36db6db6},
-- {0x00016004, 0x6db6db40},
-- {0x00016008, 0x73800000},
-- {0x0001600c, 0x00000000},
-- {0x00016040, 0x7f80fff8},
-- {0x00016048, 0x6c92426e},
-- {0x0001604c, 0x000f0278},
-- {0x00016050, 0x6db6db6c},
-- {0x00016054, 0x6db60000},
-- {0x00016080, 0x00080000},
-- {0x00016084, 0x0e48048c},
-- {0x00016088, 0x14214514},
-- {0x0001608c, 0x119f081e},
-- {0x00016090, 0x24926490},
-- {0x00016098, 0xd28b3330},
-- {0x000160a0, 0xc2108ffe},
-- {0x000160a4, 0x812fc370},
-- {0x000160a8, 0x423c8000},
-- {0x000160b4, 0x92480040},
-- {0x000160c0, 0x006db6db},
-- {0x000160c4, 0x0186db60},
-- {0x000160c8, 0x6db6db6c},
-- {0x000160cc, 0x6de6fbe0},
-- {0x000160d0, 0xf7dfcf3c},
-- {0x00016100, 0x04cb0001},
-- {0x00016104, 0xfff80015},
-- {0x00016108, 0x00080010},
-- {0x00016144, 0x01884080},
-- {0x00016148, 0x00008040},
-- {0x00016180, 0x08453333},
-- {0x00016184, 0x18e82f01},
-- {0x00016188, 0x00000000},
-- {0x0001618c, 0x00000000},
-- {0x00016240, 0x08400000},
-- {0x00016244, 0x1bf90f00},
-- {0x00016248, 0x00000000},
-- {0x0001624c, 0x00000000},
-- {0x00016280, 0x01000015},
-- {0x00016284, 0x00d30000},
-- {0x00016288, 0x00318000},
-- {0x0001628c, 0x50000000},
-- {0x00016290, 0x4b96210f},
-- {0x00016380, 0x00000000},
-- {0x00016384, 0x00000000},
-- {0x00016388, 0x00800700},
-- {0x0001638c, 0x00800700},
-- {0x00016390, 0x00800700},
-- {0x00016394, 0x00000000},
-- {0x00016398, 0x00000000},
-- {0x0001639c, 0x00000000},
-- {0x000163a0, 0x00000001},
-- {0x000163a4, 0x00000001},
-- {0x000163a8, 0x00000000},
-- {0x000163ac, 0x00000000},
-- {0x000163b0, 0x00000000},
-- {0x000163b4, 0x00000000},
-- {0x000163b8, 0x00000000},
-- {0x000163bc, 0x00000000},
-- {0x000163c0, 0x000000a0},
-- {0x000163c4, 0x000c0000},
-- {0x000163c8, 0x14021402},
-- {0x000163cc, 0x00001402},
-- {0x000163d0, 0x00000000},
-- {0x000163d4, 0x00000000},
-- {0x00016c40, 0x1319c178},
-- {0x00016c44, 0x10000000},
--};
--
--static const u32 ar9485Modes_lowest_ob_db_tx_gain_1_0[][5] = {
-- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */
-- {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d8, 0x000050d8},
-- {0x0000a500, 0x00022200, 0x00022200, 0x00000000, 0x00000000},
-- {0x0000a504, 0x05062002, 0x05062002, 0x04000002, 0x04000002},
-- {0x0000a508, 0x0c002e00, 0x0c002e00, 0x08000004, 0x08000004},
-- {0x0000a50c, 0x11062202, 0x11062202, 0x0d000200, 0x0d000200},
-- {0x0000a510, 0x17022e00, 0x17022e00, 0x11000202, 0x11000202},
-- {0x0000a514, 0x1d000ec2, 0x1d000ec2, 0x15000400, 0x15000400},
-- {0x0000a518, 0x25020ec0, 0x25020ec0, 0x19000402, 0x19000402},
-- {0x0000a51c, 0x2b020ec3, 0x2b020ec3, 0x1d000404, 0x1d000404},
-- {0x0000a520, 0x2f001f04, 0x2f001f04, 0x21000603, 0x21000603},
-- {0x0000a524, 0x35001fc4, 0x35001fc4, 0x25000605, 0x25000605},
-- {0x0000a528, 0x3c022f04, 0x3c022f04, 0x2a000a03, 0x2a000a03},
-- {0x0000a52c, 0x41023e85, 0x41023e85, 0x2c000a04, 0x2c000a04},
-- {0x0000a530, 0x48023ec6, 0x48023ec6, 0x2e000a20, 0x2e000a20},
-- {0x0000a534, 0x4d023f01, 0x4d023f01, 0x34000e20, 0x34000e20},
-- {0x0000a538, 0x53023f4b, 0x53023f4b, 0x38000e22, 0x38000e22},
-- {0x0000a53c, 0x5a027f09, 0x5a027f09, 0x3c000e24, 0x3c000e24},
-- {0x0000a540, 0x5f027fc9, 0x5f027fc9, 0x40000e26, 0x40000e26},
-- {0x0000a544, 0x6502feca, 0x6502feca, 0x43001640, 0x43001640},
-- {0x0000a548, 0x6b02ff4a, 0x6b02ff4a, 0x46001660, 0x46001660},
-- {0x0000a54c, 0x7203feca, 0x7203feca, 0x49001861, 0x49001861},
-- {0x0000a550, 0x7703ff0b, 0x7703ff0b, 0x4c001a81, 0x4c001a81},
-- {0x0000a554, 0x7d06ffcb, 0x7d06ffcb, 0x4f001a83, 0x4f001a83},
-- {0x0000a558, 0x8407ff0b, 0x8407ff0b, 0x54001c85, 0x54001c85},
-- {0x0000a55c, 0x8907ffcb, 0x8907ffcb, 0x58001ce5, 0x58001ce5},
-- {0x0000a560, 0x900fff0b, 0x900fff0b, 0x5b001ce9, 0x5b001ce9},
-- {0x0000a564, 0x960fffcb, 0x960fffcb, 0x60001eeb, 0x60001eeb},
-- {0x0000a568, 0x9c1fff0b, 0x9c1fff0b, 0x60001eeb, 0x60001eeb},
-- {0x0000a56c, 0x9c1fff0b, 0x9c1fff0b, 0x60001eeb, 0x60001eeb},
-- {0x0000a570, 0x9c1fff0b, 0x9c1fff0b, 0x60001eeb, 0x60001eeb},
-- {0x0000a574, 0x9c1fff0b, 0x9c1fff0b, 0x60001eeb, 0x60001eeb},
-- {0x0000a578, 0x9c1fff0b, 0x9c1fff0b, 0x60001eeb, 0x60001eeb},
-- {0x0000a57c, 0x9c1fff0b, 0x9c1fff0b, 0x60001eeb, 0x60001eeb},
-- {0x00016044, 0x05b6b2db, 0x05b6b2db, 0x05b6b2db, 0x05b6b2db},
--};
--
--static const u32 ar9485_1_0_baseband_core[][2] = {
-- /* Addr allmodes */
-- {0x00009800, 0xafe68e30},
-- {0x00009804, 0xfd14e000},
-- {0x00009808, 0x9c0a8f6b},
-- {0x0000980c, 0x04800000},
-- {0x00009814, 0x9280c00a},
-- {0x00009818, 0x00000000},
-- {0x0000981c, 0x00020028},
-- {0x00009834, 0x5f3ca3de},
-- {0x00009838, 0x0108ecff},
-- {0x0000983c, 0x14750600},
-- {0x00009880, 0x201fff00},
-- {0x00009884, 0x00001042},
-- {0x000098a4, 0x00200400},
-- {0x000098b0, 0x52440bbe},
-- {0x000098bc, 0x00000002},
-- {0x000098d0, 0x004b6a8e},
-- {0x000098d4, 0x00000820},
-- {0x000098dc, 0x00000000},
-- {0x000098f0, 0x00000000},
-- {0x000098f4, 0x00000000},
-- {0x00009c04, 0x00000000},
-- {0x00009c08, 0x03200000},
-- {0x00009c0c, 0x00000000},
-- {0x00009c10, 0x00000000},
-- {0x00009c14, 0x00046384},
-- {0x00009c18, 0x05b6b440},
-- {0x00009c1c, 0x00b6b440},
-- {0x00009d00, 0xc080a333},
-- {0x00009d04, 0x40206c10},
-- {0x00009d08, 0x009c4060},
-- {0x00009d0c, 0x1883800a},
-- {0x00009d10, 0x01834061},
-- {0x00009d14, 0x00c00400},
-- {0x00009d18, 0x00000000},
-- {0x00009d1c, 0x00000000},
-- {0x00009e08, 0x0038233c},
-- {0x00009e24, 0x990bb515},
-- {0x00009e28, 0x0a6f0000},
-- {0x00009e30, 0x06336f77},
-- {0x00009e34, 0x6af6532f},
-- {0x00009e38, 0x0cc80c00},
-- {0x00009e40, 0x0d261820},
-- {0x00009e4c, 0x00001004},
-- {0x00009e50, 0x00ff03f1},
-- {0x00009fc0, 0x80be4788},
-- {0x00009fc4, 0x0001efb5},
-- {0x00009fcc, 0x40000014},
-- {0x0000a20c, 0x00000000},
-- {0x0000a210, 0x00000000},
-- {0x0000a220, 0x00000000},
-- {0x0000a224, 0x00000000},
-- {0x0000a228, 0x10002310},
-- {0x0000a23c, 0x00000000},
-- {0x0000a244, 0x0c000000},
-- {0x0000a2a0, 0x00000001},
-- {0x0000a2c0, 0x00000001},
-- {0x0000a2c8, 0x00000000},
-- {0x0000a2cc, 0x18c43433},
-- {0x0000a2d4, 0x00000000},
-- {0x0000a2dc, 0x00000000},
-- {0x0000a2e0, 0x00000000},
-- {0x0000a2e4, 0x00000000},
-- {0x0000a2e8, 0x00000000},
-- {0x0000a2ec, 0x00000000},
-- {0x0000a2f0, 0x00000000},
-- {0x0000a2f4, 0x00000000},
-- {0x0000a2f8, 0x00000000},
-- {0x0000a344, 0x00000000},
-- {0x0000a34c, 0x00000000},
-- {0x0000a350, 0x0000a000},
-- {0x0000a364, 0x00000000},
-- {0x0000a370, 0x00000000},
-- {0x0000a390, 0x00000001},
-- {0x0000a394, 0x00000444},
-- {0x0000a398, 0x001f0e0f},
-- {0x0000a39c, 0x0075393f},
-- {0x0000a3a0, 0xb79f6427},
-- {0x0000a3a4, 0x00000000},
-- {0x0000a3a8, 0xaaaaaaaa},
-- {0x0000a3ac, 0x3c466478},
-- {0x0000a3c0, 0x20202020},
-- {0x0000a3c4, 0x22222220},
-- {0x0000a3c8, 0x20200020},
-- {0x0000a3cc, 0x20202020},
-- {0x0000a3d0, 0x20202020},
-- {0x0000a3d4, 0x20202020},
-- {0x0000a3d8, 0x20202020},
-- {0x0000a3dc, 0x20202020},
-- {0x0000a3e0, 0x20202020},
-- {0x0000a3e4, 0x20202020},
-- {0x0000a3e8, 0x20202020},
-- {0x0000a3ec, 0x20202020},
-- {0x0000a3f0, 0x00000000},
-- {0x0000a3f4, 0x00000006},
-- {0x0000a3f8, 0x0cdbd380},
-- {0x0000a3fc, 0x000f0f01},
-- {0x0000a400, 0x8fa91f01},
-- {0x0000a404, 0x00000000},
-- {0x0000a408, 0x0e79e5c6},
-- {0x0000a40c, 0x00820820},
-- {0x0000a414, 0x1ce739ce},
-- {0x0000a418, 0x2d0011ce},
-- {0x0000a41c, 0x1ce739ce},
-- {0x0000a420, 0x000001ce},
-- {0x0000a424, 0x1ce739ce},
-- {0x0000a428, 0x000001ce},
-- {0x0000a42c, 0x1ce739ce},
-- {0x0000a430, 0x1ce739ce},
-- {0x0000a434, 0x00000000},
-- {0x0000a438, 0x00001801},
-- {0x0000a43c, 0x00000000},
-- {0x0000a440, 0x00000000},
-- {0x0000a444, 0x00000000},
-- {0x0000a448, 0x04000000},
-- {0x0000a44c, 0x00000001},
-- {0x0000a450, 0x00010000},
-- {0x0000a458, 0x00000000},
-- {0x0000a5c4, 0x3fad9d74},
-- {0x0000a5c8, 0x0048060a},
-- {0x0000a5cc, 0x00000637},
-- {0x0000a760, 0x03020100},
-- {0x0000a764, 0x09080504},
-- {0x0000a768, 0x0d0c0b0a},
-- {0x0000a76c, 0x13121110},
-- {0x0000a770, 0x31301514},
-- {0x0000a774, 0x35343332},
-- {0x0000a778, 0x00000036},
-- {0x0000a780, 0x00000838},
-- {0x0000a7c0, 0x00000000},
-- {0x0000a7c4, 0xfffffffc},
-- {0x0000a7c8, 0x00000000},
-- {0x0000a7cc, 0x00000000},
-- {0x0000a7d0, 0x00000000},
-- {0x0000a7d4, 0x00000004},
-- {0x0000a7dc, 0x00000001},
--};
--
--static const u32 ar9485Modes_high_ob_db_tx_gain_1_0[][5] = {
-- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */
-- {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d8, 0x000050d8},
-- {0x0000a500, 0x00022200, 0x00022200, 0x00000000, 0x00000000},
-- {0x0000a504, 0x05062002, 0x05062002, 0x04000002, 0x04000002},
-- {0x0000a508, 0x0c002e00, 0x0c002e00, 0x08000004, 0x08000004},
-- {0x0000a50c, 0x11062202, 0x11062202, 0x0d000200, 0x0d000200},
-- {0x0000a510, 0x17022e00, 0x17022e00, 0x11000202, 0x11000202},
-- {0x0000a514, 0x1d000ec2, 0x1d000ec2, 0x15000400, 0x15000400},
-- {0x0000a518, 0x25020ec0, 0x25020ec0, 0x19000402, 0x19000402},
-- {0x0000a51c, 0x2b020ec3, 0x2b020ec3, 0x1d000404, 0x1d000404},
-- {0x0000a520, 0x2f001f04, 0x2f001f04, 0x21000603, 0x21000603},
-- {0x0000a524, 0x35001fc4, 0x35001fc4, 0x25000605, 0x25000605},
-- {0x0000a528, 0x3c022f04, 0x3c022f04, 0x2a000a03, 0x2a000a03},
-- {0x0000a52c, 0x41023e85, 0x41023e85, 0x2c000a04, 0x2c000a04},
-- {0x0000a530, 0x48023ec6, 0x48023ec6, 0x2e000a20, 0x2e000a20},
-- {0x0000a534, 0x4d023f01, 0x4d023f01, 0x34000e20, 0x34000e20},
-- {0x0000a538, 0x53023f4b, 0x53023f4b, 0x38000e22, 0x38000e22},
-- {0x0000a53c, 0x5a027f09, 0x5a027f09, 0x3c000e24, 0x3c000e24},
-- {0x0000a540, 0x5f027fc9, 0x5f027fc9, 0x40000e26, 0x40000e26},
-- {0x0000a544, 0x6502feca, 0x6502feca, 0x43001640, 0x43001640},
-- {0x0000a548, 0x6b02ff4a, 0x6b02ff4a, 0x46001660, 0x46001660},
-- {0x0000a54c, 0x7203feca, 0x7203feca, 0x49001861, 0x49001861},
-- {0x0000a550, 0x7703ff0b, 0x7703ff0b, 0x4c001a81, 0x4c001a81},
-- {0x0000a554, 0x7d06ffcb, 0x7d06ffcb, 0x4f001a83, 0x4f001a83},
-- {0x0000a558, 0x8407ff0b, 0x8407ff0b, 0x54001c85, 0x54001c85},
-- {0x0000a55c, 0x8907ffcb, 0x8907ffcb, 0x58001ce5, 0x58001ce5},
-- {0x0000a560, 0x900fff0b, 0x900fff0b, 0x5b001ce9, 0x5b001ce9},
-- {0x0000a564, 0x960fffcb, 0x960fffcb, 0x60001eeb, 0x60001eeb},
-- {0x0000a568, 0x9c1fff0b, 0x9c1fff0b, 0x60001eeb, 0x60001eeb},
-- {0x0000a56c, 0x9c1fff0b, 0x9c1fff0b, 0x60001eeb, 0x60001eeb},
-- {0x0000a570, 0x9c1fff0b, 0x9c1fff0b, 0x60001eeb, 0x60001eeb},
-- {0x0000a574, 0x9c1fff0b, 0x9c1fff0b, 0x60001eeb, 0x60001eeb},
-- {0x0000a578, 0x9c1fff0b, 0x9c1fff0b, 0x60001eeb, 0x60001eeb},
-- {0x0000a57c, 0x9c1fff0b, 0x9c1fff0b, 0x60001eeb, 0x60001eeb},
-- {0x00016044, 0x05b6b2db, 0x05b6b2db, 0x05b6b2db, 0x05b6b2db},
--};
--
--static const u32 ar9485Common_rx_gain_1_0[][2] = {
-- /* Addr allmodes */
-- {0x0000a000, 0x00010000},
-- {0x0000a004, 0x00030002},
-- {0x0000a008, 0x00050004},
-- {0x0000a00c, 0x00810080},
-- {0x0000a010, 0x01800082},
-- {0x0000a014, 0x01820181},
-- {0x0000a018, 0x01840183},
-- {0x0000a01c, 0x01880185},
-- {0x0000a020, 0x018a0189},
-- {0x0000a024, 0x02850284},
-- {0x0000a028, 0x02890288},
-- {0x0000a02c, 0x03850384},
-- {0x0000a030, 0x03890388},
-- {0x0000a034, 0x038b038a},
-- {0x0000a038, 0x038d038c},
-- {0x0000a03c, 0x03910390},
-- {0x0000a040, 0x03930392},
-- {0x0000a044, 0x03950394},
-- {0x0000a048, 0x00000396},
-- {0x0000a04c, 0x00000000},
-- {0x0000a050, 0x00000000},
-- {0x0000a054, 0x00000000},
-- {0x0000a058, 0x00000000},
-- {0x0000a05c, 0x00000000},
-- {0x0000a060, 0x00000000},
-- {0x0000a064, 0x00000000},
-- {0x0000a068, 0x00000000},
-- {0x0000a06c, 0x00000000},
-- {0x0000a070, 0x00000000},
-- {0x0000a074, 0x00000000},
-- {0x0000a078, 0x00000000},
-- {0x0000a07c, 0x00000000},
-- {0x0000a080, 0x28282828},
-- {0x0000a084, 0x28282828},
-- {0x0000a088, 0x28282828},
-- {0x0000a08c, 0x28282828},
-- {0x0000a090, 0x28282828},
-- {0x0000a094, 0x21212128},
-- {0x0000a098, 0x171c1c1c},
-- {0x0000a09c, 0x02020212},
-- {0x0000a0a0, 0x00000202},
-- {0x0000a0a4, 0x00000000},
-- {0x0000a0a8, 0x00000000},
-- {0x0000a0ac, 0x00000000},
-- {0x0000a0b0, 0x00000000},
-- {0x0000a0b4, 0x00000000},
-- {0x0000a0b8, 0x00000000},
-- {0x0000a0bc, 0x00000000},
-- {0x0000a0c0, 0x001f0000},
-- {0x0000a0c4, 0x111f1100},
-- {0x0000a0c8, 0x111d111e},
-- {0x0000a0cc, 0x111b111c},
-- {0x0000a0d0, 0x22032204},
-- {0x0000a0d4, 0x22012202},
-- {0x0000a0d8, 0x221f2200},
-- {0x0000a0dc, 0x221d221e},
-- {0x0000a0e0, 0x33013302},
-- {0x0000a0e4, 0x331f3300},
-- {0x0000a0e8, 0x4402331e},
-- {0x0000a0ec, 0x44004401},
-- {0x0000a0f0, 0x441e441f},
-- {0x0000a0f4, 0x55015502},
-- {0x0000a0f8, 0x551f5500},
-- {0x0000a0fc, 0x6602551e},
-- {0x0000a100, 0x66006601},
-- {0x0000a104, 0x661e661f},
-- {0x0000a108, 0x7703661d},
-- {0x0000a10c, 0x77017702},
-- {0x0000a110, 0x00007700},
-- {0x0000a114, 0x00000000},
-- {0x0000a118, 0x00000000},
-- {0x0000a11c, 0x00000000},
-- {0x0000a120, 0x00000000},
-- {0x0000a124, 0x00000000},
-- {0x0000a128, 0x00000000},
-- {0x0000a12c, 0x00000000},
-- {0x0000a130, 0x00000000},
-- {0x0000a134, 0x00000000},
-- {0x0000a138, 0x00000000},
-- {0x0000a13c, 0x00000000},
-- {0x0000a140, 0x001f0000},
-- {0x0000a144, 0x111f1100},
-- {0x0000a148, 0x111d111e},
-- {0x0000a14c, 0x111b111c},
-- {0x0000a150, 0x22032204},
-- {0x0000a154, 0x22012202},
-- {0x0000a158, 0x221f2200},
-- {0x0000a15c, 0x221d221e},
-- {0x0000a160, 0x33013302},
-- {0x0000a164, 0x331f3300},
-- {0x0000a168, 0x4402331e},
-- {0x0000a16c, 0x44004401},
-- {0x0000a170, 0x441e441f},
-- {0x0000a174, 0x55015502},
-- {0x0000a178, 0x551f5500},
-- {0x0000a17c, 0x6602551e},
-- {0x0000a180, 0x66006601},
-- {0x0000a184, 0x661e661f},
-- {0x0000a188, 0x7703661d},
-- {0x0000a18c, 0x77017702},
-- {0x0000a190, 0x00007700},
-- {0x0000a194, 0x00000000},
-- {0x0000a198, 0x00000000},
-- {0x0000a19c, 0x00000000},
-- {0x0000a1a0, 0x00000000},
-- {0x0000a1a4, 0x00000000},
-- {0x0000a1a8, 0x00000000},
-- {0x0000a1ac, 0x00000000},
-- {0x0000a1b0, 0x00000000},
-- {0x0000a1b4, 0x00000000},
-- {0x0000a1b8, 0x00000000},
-- {0x0000a1bc, 0x00000000},
-- {0x0000a1c0, 0x00000000},
-- {0x0000a1c4, 0x00000000},
-- {0x0000a1c8, 0x00000000},
-- {0x0000a1cc, 0x00000000},
-- {0x0000a1d0, 0x00000000},
-- {0x0000a1d4, 0x00000000},
-- {0x0000a1d8, 0x00000000},
-- {0x0000a1dc, 0x00000000},
-- {0x0000a1e0, 0x00000000},
-- {0x0000a1e4, 0x00000000},
-- {0x0000a1e8, 0x00000000},
-- {0x0000a1ec, 0x00000000},
-- {0x0000a1f0, 0x00000396},
-- {0x0000a1f4, 0x00000396},
-- {0x0000a1f8, 0x00000396},
-- {0x0000a1fc, 0x00000296},
--};
--
--static const u32 ar9485_1_0_pcie_phy_pll_on_clkreq_enable_L1[][2] = {
-- /* Addr allmodes */
-- {0x00018c00, 0x10252e5e},
-- {0x00018c04, 0x000801d8},
-- {0x00018c08, 0x0000580c},
--};
--
--static const u32 ar9485_1_0_pcie_phy_clkreq_enable_L1[][2] = {
-- /* Addr allmodes */
-- {0x00018c00, 0x10253e5e},
-- {0x00018c04, 0x000801d8},
-- {0x00018c08, 0x0000580c},
--};
--
--static const u32 ar9485_1_0_soc_preamble[][2] = {
-- /* Addr allmodes */
-- {0x00004090, 0x00aa10aa},
-- {0x000040a4, 0x00a0c9c9},
-- {0x00007048, 0x00000004},
--};
--
--static const u32 ar9485_fast_clock_1_0_baseband_postamble[][3] = {
-- /* Addr 5G_HT20 5G_HT40 */
-- {0x00009e00, 0x03721821, 0x03721821},
-- {0x0000a230, 0x0000400b, 0x00004016},
-- {0x0000a254, 0x00000898, 0x00001130},
--};
--
--static const u32 ar9485_1_0_baseband_postamble[][5] = {
-- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */
-- {0x00009810, 0xd00a8005, 0xd00a8005, 0xd00a8005, 0xd00a8005},
-- {0x00009820, 0x206a002e, 0x206a002e, 0x206a002e, 0x206a002e},
-- {0x00009824, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0},
-- {0x00009828, 0x06903081, 0x06903081, 0x06903881, 0x06903881},
-- {0x0000982c, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4},
-- {0x00009830, 0x0000059c, 0x0000059c, 0x0000059c, 0x0000059c},
-- {0x00009c00, 0x00000044, 0x00000044, 0x00000044, 0x00000044},
-- {0x00009e00, 0x0372161e, 0x0372161e, 0x037216a0, 0x037216a0},
-- {0x00009e04, 0x00182020, 0x00182020, 0x00182020, 0x00182020},
-- {0x00009e0c, 0x6c4000e2, 0x6d4000e2, 0x6d4000e2, 0x6c4000e2},
-- {0x00009e10, 0x7ec88d2e, 0x7ec88d2e, 0x7ec80d2e, 0x7ec80d2e},
-- {0x00009e14, 0x31395d5e, 0x3139605e, 0x3139605e, 0x31395d5e},
-- {0x00009e18, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-- {0x00009e1c, 0x0001cf9c, 0x0001cf9c, 0x00021f9c, 0x00021f9c},
-- {0x00009e20, 0x000003b5, 0x000003b5, 0x000003ce, 0x000003ce},
-- {0x00009e2c, 0x0000001c, 0x0000001c, 0x00000021, 0x00000021},
-- {0x00009e3c, 0xcf946220, 0xcf946220, 0xcf946222, 0xcf946222},
-- {0x00009e44, 0x02321e27, 0x02321e27, 0x02282324, 0x02282324},
-- {0x00009e48, 0x5030201a, 0x5030201a, 0x50302010, 0x50302010},
-- {0x00009fc8, 0x0003f000, 0x0003f000, 0x0001a000, 0x0001a000},
-- {0x0000a204, 0x01303fc0, 0x01303fc4, 0x01303fc4, 0x01303fc0},
-- {0x0000a208, 0x00000104, 0x00000104, 0x00000004, 0x00000004},
-- {0x0000a230, 0x0000400a, 0x00004014, 0x00004016, 0x0000400b},
-- {0x0000a234, 0x10000fff, 0x10000fff, 0x10000fff, 0x10000fff},
-- {0x0000a238, 0xffb81018, 0xffb81018, 0xffb81018, 0xffb81018},
-- {0x0000a250, 0x00000000, 0x00000000, 0x00000210, 0x00000108},
-- {0x0000a254, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898},
-- {0x0000a258, 0x02020002, 0x02020002, 0x02020002, 0x02020002},
-- {0x0000a25c, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e},
-- {0x0000a260, 0x3a021501, 0x3a021501, 0x3a021501, 0x3a021501},
-- {0x0000a264, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e},
-- {0x0000a280, 0x00000007, 0x00000007, 0x0000000b, 0x0000000b},
-- {0x0000a284, 0x00000000, 0x00000000, 0x000002a0, 0x000002a0},
-- {0x0000a288, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-- {0x0000a28c, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-- {0x0000a2c4, 0x00158d18, 0x00158d18, 0x00158d18, 0x00158d18},
-- {0x0000a2d0, 0x00071981, 0x00071981, 0x00071981, 0x00071982},
-- {0x0000a2d8, 0xf999a83a, 0xf999a83a, 0xf999a83a, 0xf999a83a},
-- {0x0000a358, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
-- {0x0000be04, 0x00802020, 0x00802020, 0x00802020, 0x00802020},
-- {0x0000be18, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
--};
--
--static const u32 ar9485Modes_low_ob_db_tx_gain_1_0[][5] = {
-- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */
-- {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d8, 0x000050d8},
-- {0x0000a500, 0x00022200, 0x00022200, 0x00000000, 0x00000000},
-- {0x0000a504, 0x05062002, 0x05062002, 0x04000002, 0x04000002},
-- {0x0000a508, 0x0c002e00, 0x0c002e00, 0x08000004, 0x08000004},
-- {0x0000a50c, 0x11062202, 0x11062202, 0x0d000200, 0x0d000200},
-- {0x0000a510, 0x17022e00, 0x17022e00, 0x11000202, 0x11000202},
-- {0x0000a514, 0x1d000ec2, 0x1d000ec2, 0x15000400, 0x15000400},
-- {0x0000a518, 0x25020ec0, 0x25020ec0, 0x19000402, 0x19000402},
-- {0x0000a51c, 0x2b020ec3, 0x2b020ec3, 0x1d000404, 0x1d000404},
-- {0x0000a520, 0x2f001f04, 0x2f001f04, 0x21000603, 0x21000603},
-- {0x0000a524, 0x35001fc4, 0x35001fc4, 0x25000605, 0x25000605},
-- {0x0000a528, 0x3c022f04, 0x3c022f04, 0x2a000a03, 0x2a000a03},
-- {0x0000a52c, 0x41023e85, 0x41023e85, 0x2c000a04, 0x2c000a04},
-- {0x0000a530, 0x48023ec6, 0x48023ec6, 0x2e000a20, 0x2e000a20},
-- {0x0000a534, 0x4d023f01, 0x4d023f01, 0x34000e20, 0x34000e20},
-- {0x0000a538, 0x53023f4b, 0x53023f4b, 0x38000e22, 0x38000e22},
-- {0x0000a53c, 0x5a027f09, 0x5a027f09, 0x3c000e24, 0x3c000e24},
-- {0x0000a540, 0x5f027fc9, 0x5f027fc9, 0x40000e26, 0x40000e26},
-- {0x0000a544, 0x6502feca, 0x6502feca, 0x43001640, 0x43001640},
-- {0x0000a548, 0x6b02ff4a, 0x6b02ff4a, 0x46001660, 0x46001660},
-- {0x0000a54c, 0x7203feca, 0x7203feca, 0x49001861, 0x49001861},
-- {0x0000a550, 0x7703ff0b, 0x7703ff0b, 0x4c001a81, 0x4c001a81},
-- {0x0000a554, 0x7d06ffcb, 0x7d06ffcb, 0x4f001a83, 0x4f001a83},
-- {0x0000a558, 0x8407ff0b, 0x8407ff0b, 0x54001c85, 0x54001c85},
-- {0x0000a55c, 0x8907ffcb, 0x8907ffcb, 0x58001ce5, 0x58001ce5},
-- {0x0000a560, 0x900fff0b, 0x900fff0b, 0x5b001ce9, 0x5b001ce9},
-- {0x0000a564, 0x960fffcb, 0x960fffcb, 0x60001eeb, 0x60001eeb},
-- {0x0000a568, 0x9c1fff0b, 0x9c1fff0b, 0x60001eeb, 0x60001eeb},
-- {0x0000a56c, 0x9c1fff0b, 0x9c1fff0b, 0x60001eeb, 0x60001eeb},
-- {0x0000a570, 0x9c1fff0b, 0x9c1fff0b, 0x60001eeb, 0x60001eeb},
-- {0x0000a574, 0x9c1fff0b, 0x9c1fff0b, 0x60001eeb, 0x60001eeb},
-- {0x0000a578, 0x9c1fff0b, 0x9c1fff0b, 0x60001eeb, 0x60001eeb},
-- {0x0000a57c, 0x9c1fff0b, 0x9c1fff0b, 0x60001eeb, 0x60001eeb},
-- {0x00016044, 0x05b6b2db, 0x05b6b2db, 0x05b6b2db, 0x05b6b2db},
--};
--
--static const u32 ar9485_1_0_pcie_phy_clkreq_disable_L1[][2] = {
-- /* Addr allmodes */
-- {0x00018c00, 0x10213e5e},
-- {0x00018c04, 0x000801d8},
-- {0x00018c08, 0x0000580c},
--};
--
--static const u32 ar9485_1_0_radio_postamble[][2] = {
-- /* Addr allmodes */
-- {0x0001609c, 0x0b283f31},
-- {0x000160ac, 0x24611800},
-- {0x000160b0, 0x03284f3e},
-- {0x0001610c, 0x00170000},
-- {0x00016140, 0x10804008},
--};
--
--static const u32 ar9485_1_0_mac_core[][2] = {
-- /* Addr allmodes */
-- {0x00000008, 0x00000000},
-- {0x00000030, 0x00020085},
-- {0x00000034, 0x00000005},
-- {0x00000040, 0x00000000},
-- {0x00000044, 0x00000000},
-- {0x00000048, 0x00000008},
-- {0x0000004c, 0x00000010},
-- {0x00000050, 0x00000000},
-- {0x00001040, 0x002ffc0f},
-- {0x00001044, 0x002ffc0f},
-- {0x00001048, 0x002ffc0f},
-- {0x0000104c, 0x002ffc0f},
-- {0x00001050, 0x002ffc0f},
-- {0x00001054, 0x002ffc0f},
-- {0x00001058, 0x002ffc0f},
-- {0x0000105c, 0x002ffc0f},
-- {0x00001060, 0x002ffc0f},
-- {0x00001064, 0x002ffc0f},
-- {0x000010f0, 0x00000100},
-- {0x00001270, 0x00000000},
-- {0x000012b0, 0x00000000},
-- {0x000012f0, 0x00000000},
-- {0x0000143c, 0x00000000},
-- {0x0000147c, 0x00000000},
-- {0x00008000, 0x00000000},
-- {0x00008004, 0x00000000},
-- {0x00008008, 0x00000000},
-- {0x0000800c, 0x00000000},
-- {0x00008018, 0x00000000},
-- {0x00008020, 0x00000000},
-- {0x00008038, 0x00000000},
-- {0x0000803c, 0x00000000},
-- {0x00008040, 0x00000000},
-- {0x00008044, 0x00000000},
-- {0x00008048, 0x00000000},
-- {0x0000804c, 0xffffffff},
-- {0x00008054, 0x00000000},
-- {0x00008058, 0x00000000},
-- {0x0000805c, 0x000fc78f},
-- {0x00008060, 0x0000000f},
-- {0x00008064, 0x00000000},
-- {0x00008070, 0x00000310},
-- {0x00008074, 0x00000020},
-- {0x00008078, 0x00000000},
-- {0x0000809c, 0x0000000f},
-- {0x000080a0, 0x00000000},
-- {0x000080a4, 0x02ff0000},
-- {0x000080a8, 0x0e070605},
-- {0x000080ac, 0x0000000d},
-- {0x000080b0, 0x00000000},
-- {0x000080b4, 0x00000000},
-- {0x000080b8, 0x00000000},
-- {0x000080bc, 0x00000000},
-- {0x000080c0, 0x2a800000},
-- {0x000080c4, 0x06900168},
-- {0x000080c8, 0x13881c20},
-- {0x000080cc, 0x01f40000},
-- {0x000080d0, 0x00252500},
-- {0x000080d4, 0x00a00000},
-- {0x000080d8, 0x00400000},
-- {0x000080dc, 0x00000000},
-- {0x000080e0, 0xffffffff},
-- {0x000080e4, 0x0000ffff},
-- {0x000080e8, 0x3f3f3f3f},
-- {0x000080ec, 0x00000000},
-- {0x000080f0, 0x00000000},
-- {0x000080f4, 0x00000000},
-- {0x000080fc, 0x00020000},
-- {0x00008100, 0x00000000},
-- {0x00008108, 0x00000052},
-- {0x0000810c, 0x00000000},
-- {0x00008110, 0x00000000},
-- {0x00008114, 0x000007ff},
-- {0x00008118, 0x000000aa},
-- {0x0000811c, 0x00003210},
-- {0x00008124, 0x00000000},
-- {0x00008128, 0x00000000},
-- {0x0000812c, 0x00000000},
-- {0x00008130, 0x00000000},
-- {0x00008134, 0x00000000},
-- {0x00008138, 0x00000000},
-- {0x0000813c, 0x0000ffff},
-- {0x00008144, 0xffffffff},
-- {0x00008168, 0x00000000},
-- {0x0000816c, 0x00000000},
-- {0x00008170, 0x18486200},
-- {0x00008174, 0x33332210},
-- {0x00008178, 0x00000000},
-- {0x0000817c, 0x00020000},
-- {0x000081c0, 0x00000000},
-- {0x000081c4, 0x33332210},
-- {0x000081c8, 0x00000000},
-- {0x000081cc, 0x00000000},
-- {0x000081d4, 0x00000000},
-- {0x000081ec, 0x00000000},
-- {0x000081f0, 0x00000000},
-- {0x000081f4, 0x00000000},
-- {0x000081f8, 0x00000000},
-- {0x000081fc, 0x00000000},
-- {0x00008240, 0x00100000},
-- {0x00008244, 0x0010f400},
-- {0x00008248, 0x00000800},
-- {0x0000824c, 0x0001e800},
-- {0x00008250, 0x00000000},
-- {0x00008254, 0x00000000},
-- {0x00008258, 0x00000000},
-- {0x0000825c, 0x40000000},
-- {0x00008260, 0x00080922},
-- {0x00008264, 0x9ca00010},
-- {0x00008268, 0xffffffff},
-- {0x0000826c, 0x0000ffff},
-- {0x00008270, 0x00000000},
-- {0x00008274, 0x40000000},
-- {0x00008278, 0x003e4180},
-- {0x0000827c, 0x00000004},
-- {0x00008284, 0x0000002c},
-- {0x00008288, 0x0000002c},
-- {0x0000828c, 0x000000ff},
-- {0x00008294, 0x00000000},
-- {0x00008298, 0x00000000},
-- {0x0000829c, 0x00000000},
-- {0x00008300, 0x00000140},
-- {0x00008314, 0x00000000},
-- {0x0000831c, 0x0000010d},
-- {0x00008328, 0x00000000},
-- {0x0000832c, 0x00000007},
-- {0x00008330, 0x00000302},
-- {0x00008334, 0x00000700},
-- {0x00008338, 0x00ff0000},
-- {0x0000833c, 0x02400000},
-- {0x00008340, 0x000107ff},
-- {0x00008344, 0xa248105b},
-- {0x00008348, 0x008f0000},
-- {0x0000835c, 0x00000000},
-- {0x00008360, 0xffffffff},
-- {0x00008364, 0xffffffff},
-- {0x00008368, 0x00000000},
-- {0x00008370, 0x00000000},
-- {0x00008374, 0x000000ff},
-- {0x00008378, 0x00000000},
-- {0x0000837c, 0x00000000},
-- {0x00008380, 0xffffffff},
-- {0x00008384, 0xffffffff},
-- {0x00008390, 0xffffffff},
-- {0x00008394, 0xffffffff},
-- {0x00008398, 0x00000000},
-- {0x0000839c, 0x00000000},
-- {0x000083a0, 0x00000000},
-- {0x000083a4, 0x0000fa14},
-- {0x000083a8, 0x000f0c00},
-- {0x000083ac, 0x33332210},
-- {0x000083b0, 0x33332210},
-- {0x000083b4, 0x33332210},
-- {0x000083b8, 0x33332210},
-- {0x000083bc, 0x00000000},
-- {0x000083c0, 0x00000000},
-- {0x000083c4, 0x00000000},
-- {0x000083c8, 0x00000000},
-- {0x000083cc, 0x00000200},
-- {0x000083d0, 0x000301ff},
--};
--
- static const u32 ar9485_1_1_mac_core[][2] = {
- /* Addr allmodes */
- {0x00000008, 0x00000000},
diff --git a/package/mac80211/patches/401-ath9k-dont-register-leds-on-ar9100.patch b/package/mac80211/patches/401-ath9k-dont-register-leds-on-ar9100.patch
index 22299020a..d60be760d 100644
--- a/package/mac80211/patches/401-ath9k-dont-register-leds-on-ar9100.patch
+++ b/package/mac80211/patches/401-ath9k-dont-register-leds-on-ar9100.patch
@@ -7,6 +7,6 @@
+ if (AR_SREV_9100(sc->sc_ah))
+ return;
+
- if (AR_SREV_9287(sc->sc_ah))
- sc->sc_ah->led_pin = ATH_LED_PIN_9287;
- else if (AR_SREV_9485(sc->sc_ah))
+ if (sc->sc_ah->led_pin < 0) {
+ if (AR_SREV_9287(sc->sc_ah))
+ sc->sc_ah->led_pin = ATH_LED_PIN_9287;
diff --git a/package/mac80211/patches/402-ath9k_blink_default.patch b/package/mac80211/patches/402-ath9k_blink_default.patch
index 5f07a6da9..75e6454cc 100644
--- a/package/mac80211/patches/402-ath9k_blink_default.patch
+++ b/package/mac80211/patches/402-ath9k_blink_default.patch
@@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath9k/init.c
+++ b/drivers/net/wireless/ath/ath9k/init.c
-@@ -33,7 +33,7 @@ int ath9k_modparam_nohwcrypt;
+@@ -34,7 +34,7 @@ int ath9k_modparam_nohwcrypt;
module_param_named(nohwcrypt, ath9k_modparam_nohwcrypt, int, 0444);
MODULE_PARM_DESC(nohwcrypt, "Disable hardware encryption");
diff --git a/package/mac80211/patches/403-ath9k-fix-invalid-mac-address-handling.patch b/package/mac80211/patches/403-ath9k-fix-invalid-mac-address-handling.patch
index cf3f96bb1..e65d46319 100644
--- a/package/mac80211/patches/403-ath9k-fix-invalid-mac-address-handling.patch
+++ b/package/mac80211/patches/403-ath9k-fix-invalid-mac-address-handling.patch
@@ -8,7 +8,7 @@
#include <asm/unaligned.h>
#include "hw.h"
-@@ -431,8 +432,16 @@ static int ath9k_hw_init_macaddr(struct
+@@ -433,8 +434,16 @@ static int ath9k_hw_init_macaddr(struct
common->macaddr[2 * i] = eeval >> 8;
common->macaddr[2 * i + 1] = eeval & 0xff;
}
diff --git a/package/mac80211/patches/407-ath9k-override-mac-address-from-platform-data.patch b/package/mac80211/patches/407-ath9k-override-mac-address-from-platform-data.patch
deleted file mode 100644
index 6326649fc..000000000
--- a/package/mac80211/patches/407-ath9k-override-mac-address-from-platform-data.patch
+++ /dev/null
@@ -1,47 +0,0 @@
---- a/include/linux/ath9k_platform.h
-+++ b/include/linux/ath9k_platform.h
-@@ -23,6 +23,7 @@
-
- struct ath9k_platform_data {
- u16 eeprom_data[ATH9K_PLAT_EEP_MAX_WORDS];
-+ u8 *macaddr;
- };
-
- #endif /* _LINUX_ATH9K_PLATFORM_H */
---- a/drivers/net/wireless/ath/ath9k/init.c
-+++ b/drivers/net/wireless/ath/ath9k/init.c
-@@ -15,6 +15,7 @@
- */
-
- #include <linux/slab.h>
-+#include <linux/ath9k_platform.h>
-
- #include "ath9k.h"
-
-@@ -537,6 +538,7 @@ static void ath9k_init_misc(struct ath_s
- static int ath9k_init_softc(u16 devid, struct ath_softc *sc, u16 subsysid,
- const struct ath_bus_ops *bus_ops)
- {
-+ struct ath9k_platform_data *pdata = sc->dev->platform_data;
- struct ath_hw *ah = NULL;
- struct ath_common *common;
- int ret = 0, i;
-@@ -551,7 +553,7 @@ static int ath9k_init_softc(u16 devid, s
- ah->hw_version.subsysid = subsysid;
- sc->sc_ah = ah;
-
-- if (!sc->dev->platform_data)
-+ if (!pdata)
- ah->ah_flags |= AH_USE_EEPROM;
-
- common = ath9k_hw_common(ah);
-@@ -587,6 +589,9 @@ static int ath9k_init_softc(u16 devid, s
- if (ret)
- goto err_hw;
-
-+ if (pdata && pdata->macaddr)
-+ memcpy(common->macaddr, pdata->macaddr, ETH_ALEN);
-+
- ret = ath9k_init_queues(sc);
- if (ret)
- goto err_queues;
diff --git a/package/mac80211/patches/409-ath9k_platform_settings.patch b/package/mac80211/patches/409-ath9k_platform_settings.patch
deleted file mode 100644
index 6ce43b600..000000000
--- a/package/mac80211/patches/409-ath9k_platform_settings.patch
+++ /dev/null
@@ -1,65 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/init.c
-+++ b/drivers/net/wireless/ath/ath9k/init.c
-@@ -553,8 +553,14 @@ static int ath9k_init_softc(u16 devid, s
- ah->hw_version.subsysid = subsysid;
- sc->sc_ah = ah;
-
-- if (!pdata)
-+ if (!pdata) {
- ah->ah_flags |= AH_USE_EEPROM;
-+ sc->sc_ah->led_pin = -1;
-+ } else {
-+ sc->sc_ah->gpio_mask = pdata->gpio_mask;
-+ sc->sc_ah->gpio_val = pdata->gpio_val;
-+ sc->sc_ah->led_pin = pdata->led_pin;
-+ }
-
- common = ath9k_hw_common(ah);
- common->ops = &ath9k_common_ops;
---- a/drivers/net/wireless/ath/ath9k/hw.h
-+++ b/drivers/net/wireless/ath/ath9k/hw.h
-@@ -794,7 +794,7 @@ struct ath_hw {
- u32 originalGain[22];
- int initPDADC;
- int PDADCdelta;
-- u8 led_pin;
-+ int led_pin;
- u32 gpio_mask;
- u32 gpio_val;
-
---- a/drivers/net/wireless/ath/ath9k/gpio.c
-+++ b/drivers/net/wireless/ath/ath9k/gpio.c
-@@ -44,12 +44,14 @@ void ath_init_leds(struct ath_softc *sc)
- if (AR_SREV_9100(sc->sc_ah))
- return;
-
-- if (AR_SREV_9287(sc->sc_ah))
-- sc->sc_ah->led_pin = ATH_LED_PIN_9287;
-- else if (AR_SREV_9485(sc->sc_ah))
-- sc->sc_ah->led_pin = ATH_LED_PIN_9485;
-- else
-- sc->sc_ah->led_pin = ATH_LED_PIN_DEF;
-+ if (sc->sc_ah->led_pin < 0) {
-+ if (AR_SREV_9287(sc->sc_ah))
-+ sc->sc_ah->led_pin = ATH_LED_PIN_9287;
-+ else if (AR_SREV_9485(sc->sc_ah))
-+ sc->sc_ah->led_pin = ATH_LED_PIN_9485;
-+ else
-+ sc->sc_ah->led_pin = ATH_LED_PIN_DEF;
-+ }
-
- /* Configure gpio 1 for output */
- ath9k_hw_cfg_output(sc->sc_ah, sc->sc_ah->led_pin,
---- a/include/linux/ath9k_platform.h
-+++ b/include/linux/ath9k_platform.h
-@@ -24,6 +24,10 @@
- struct ath9k_platform_data {
- u16 eeprom_data[ATH9K_PLAT_EEP_MAX_WORDS];
- u8 *macaddr;
-+
-+ int led_pin;
-+ u32 gpio_mask;
-+ u32 gpio_val;
- };
-
- #endif /* _LINUX_ATH9K_PLATFORM_H */
diff --git a/package/mac80211/patches/500-ath9k_eeprom_debugfs.patch b/package/mac80211/patches/500-ath9k_eeprom_debugfs.patch
index 632ae96a6..9b75fb5df 100644
--- a/package/mac80211/patches/500-ath9k_eeprom_debugfs.patch
+++ b/package/mac80211/patches/500-ath9k_eeprom_debugfs.patch
@@ -54,7 +54,7 @@
int ath9k_init_debug(struct ath_hw *ah)
{
struct ath_common *common = ath9k_hw_common(ah);
-@@ -1151,6 +1198,9 @@ int ath9k_init_debug(struct ath_hw *ah)
+@@ -1125,6 +1172,9 @@ int ath9k_init_debug(struct ath_hw *ah)
debugfs_create_u32("gpio_val", S_IRUSR | S_IWUSR,
sc->debug.debugfs_phy, &sc->sc_ah->gpio_val);
@@ -63,4 +63,4 @@
+
sc->debug.regidx = 0;
return 0;
- err:
+ }
diff --git a/package/mac80211/patches/510-ath9k_intr_mitigation_tweak.patch b/package/mac80211/patches/510-ath9k_intr_mitigation_tweak.patch
index 301af3c22..322a38187 100644
--- a/package/mac80211/patches/510-ath9k_intr_mitigation_tweak.patch
+++ b/package/mac80211/patches/510-ath9k_intr_mitigation_tweak.patch
@@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
-@@ -1466,8 +1466,8 @@ int ath9k_hw_reset(struct ath_hw *ah, st
+@@ -1468,8 +1468,8 @@ int ath9k_hw_reset(struct ath_hw *ah, st
REG_WRITE(ah, AR_OBS, 8);
if (ah->config.rx_intr_mitigation) {
diff --git a/package/mac80211/patches/520-mac80211_drv_tim_override.patch b/package/mac80211/patches/520-mac80211_drv_tim_override.patch
index 535e35927..f2ec46aa6 100644
--- a/package/mac80211/patches/520-mac80211_drv_tim_override.patch
+++ b/package/mac80211/patches/520-mac80211_drv_tim_override.patch
@@ -21,7 +21,7 @@
* Call this function for all transmitted frames after they have been
--- a/net/mac80211/sta_info.c
+++ b/net/mac80211/sta_info.c
-@@ -608,7 +608,8 @@ static bool sta_info_cleanup_expire_buff
+@@ -609,7 +609,8 @@ static bool sta_info_cleanup_expire_buff
#endif
dev_kfree_skb(skb);
@@ -31,7 +31,7 @@
sta_info_clear_tim_bit(sta);
}
-@@ -899,6 +900,7 @@ void ieee80211_sta_ps_deliver_wakeup(str
+@@ -900,6 +901,7 @@ void ieee80211_sta_ps_deliver_wakeup(str
struct ieee80211_local *local = sdata->local;
int sent, buffered;
@@ -39,7 +39,7 @@
if (!(local->hw.flags & IEEE80211_HW_AP_LINK_PS))
drv_sta_notify(local, sdata, STA_NOTIFY_AWAKE, &sta->sta);
-@@ -991,3 +993,12 @@ void ieee80211_sta_block_awake(struct ie
+@@ -992,3 +994,12 @@ void ieee80211_sta_block_awake(struct ie
ieee80211_queue_work(hw, &sta->drv_unblock_wk);
}
EXPORT_SYMBOL(ieee80211_sta_block_awake);
diff --git a/package/mac80211/patches/521-ath9k_fix_ap_ps_buffering.patch b/package/mac80211/patches/521-ath9k_fix_ap_ps_buffering.patch
index 87cc2654b..4799d5f91 100644
--- a/package/mac80211/patches/521-ath9k_fix_ap_ps_buffering.patch
+++ b/package/mac80211/patches/521-ath9k_fix_ap_ps_buffering.patch
@@ -223,7 +223,7 @@
/* PHY ops */
--- a/drivers/net/wireless/ath/ath9k/hw.h
+++ b/drivers/net/wireless/ath/ath9k/hw.h
-@@ -642,6 +642,7 @@ struct ath_hw_ops {
+@@ -646,6 +646,7 @@ struct ath_hw_ops {
u32 burstDuration);
void (*set11n_virtualmorefrag)(struct ath_hw *ah, void *ds,
u32 vmf);
diff --git a/package/mac80211/patches/522-ath9k_remove_pending_frames_workaround.patch b/package/mac80211/patches/522-ath9k_remove_pending_frames_workaround.patch
deleted file mode 100644
index e368bce64..000000000
--- a/package/mac80211/patches/522-ath9k_remove_pending_frames_workaround.patch
+++ /dev/null
@@ -1,36 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/xmit.c
-+++ b/drivers/net/wireless/ath/ath9k/xmit.c
-@@ -2223,33 +2223,6 @@ static void ath_tx_complete_poll_work(st
- } else {
- txq->axq_tx_inprogress = true;
- }
-- } else {
-- /* If the queue has pending buffers, then it
-- * should be doing tx work (and have axq_depth).
-- * Shouldn't get to this state I think..but
-- * we do.
-- */
-- if (!(sc->sc_flags & (SC_OP_OFFCHANNEL)) &&
-- (txq->pending_frames > 0 ||
-- !list_empty(&txq->axq_acq) ||
-- txq->stopped)) {
-- ath_err(ath9k_hw_common(sc->sc_ah),
-- "txq: %p axq_qnum: %u,"
-- " mac80211_qnum: %i"
-- " axq_link: %p"
-- " pending frames: %i"
-- " axq_acq empty: %i"
-- " stopped: %i"
-- " axq_depth: 0 Attempting to"
-- " restart tx logic.\n",
-- txq, txq->axq_qnum,
-- txq->mac80211_qnum,
-- txq->axq_link,
-- txq->pending_frames,
-- list_empty(&txq->axq_acq),
-- txq->stopped);
-- ath_txq_schedule(sc, txq);
-- }
- }
- spin_unlock_bh(&txq->axq_lock);
- }
diff --git a/package/mac80211/patches/530-mac80211_redirect_vlan_eap_frames.patch b/package/mac80211/patches/530-mac80211_redirect_vlan_eap_frames.patch
index 03a4fe5d3..c956a2058 100644
--- a/package/mac80211/patches/530-mac80211_redirect_vlan_eap_frames.patch
+++ b/package/mac80211/patches/530-mac80211_redirect_vlan_eap_frames.patch
@@ -1,6 +1,6 @@
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
-@@ -1582,7 +1582,7 @@ ieee80211_drop_unencrypted_mgmt(struct i
+@@ -1584,7 +1584,7 @@ ieee80211_drop_unencrypted_mgmt(struct i
}
static int
@@ -9,7 +9,7 @@
{
struct ieee80211_sub_if_data *sdata = rx->sdata;
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)rx->skb->data;
-@@ -1590,6 +1590,7 @@ __ieee80211_data_to_8023(struct ieee8021
+@@ -1592,6 +1592,7 @@ __ieee80211_data_to_8023(struct ieee8021
struct ethhdr *ehdr;
int ret;
@@ -17,7 +17,7 @@
if (ieee80211_has_a4(hdr->frame_control) &&
sdata->vif.type == NL80211_IFTYPE_AP_VLAN && !sdata->u.vlan.sta)
return -1;
-@@ -1608,11 +1609,14 @@ __ieee80211_data_to_8023(struct ieee8021
+@@ -1610,11 +1611,14 @@ __ieee80211_data_to_8023(struct ieee8021
return -1;
ret = ieee80211_data_to_8023(rx->skb, sdata->vif.addr, sdata->vif.type);
@@ -34,7 +34,7 @@
return -1;
return 0;
-@@ -1913,6 +1917,7 @@ ieee80211_rx_h_data(struct ieee80211_rx_
+@@ -1915,6 +1919,7 @@ ieee80211_rx_h_data(struct ieee80211_rx_
struct net_device *dev = sdata->dev;
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)rx->skb->data;
__le16 fc = hdr->frame_control;
@@ -42,7 +42,7 @@
int err;
if (unlikely(!ieee80211_is_data(hdr->frame_control)))
-@@ -1929,13 +1934,21 @@ ieee80211_rx_h_data(struct ieee80211_rx_
+@@ -1931,13 +1936,21 @@ ieee80211_rx_h_data(struct ieee80211_rx_
sdata->vif.type == NL80211_IFTYPE_AP)
return RX_DROP_MONITOR;
diff --git a/package/mac80211/patches/540-ath9k_ar9100_blockack_fix.patch b/package/mac80211/patches/540-ath9k_ar9100_blockack_fix.patch
deleted file mode 100644
index 2a09f7fc3..000000000
--- a/package/mac80211/patches/540-ath9k_ar9100_blockack_fix.patch
+++ /dev/null
@@ -1,21 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/hw.c
-+++ b/drivers/net/wireless/ath/ath9k/hw.c
-@@ -411,6 +411,8 @@ static void ath9k_hw_init_defaults(struc
- ah->sta_id1_defaults =
- AR_STA_ID1_CRPT_MIC_ENABLE |
- AR_STA_ID1_MCAST_KSRCH;
-+ if (AR_SREV_9100(ah))
-+ ah->sta_id1_defaults |= AR_STA_ID1_AR9100_BA_FIX;
- ah->enable_32kHz_clock = DONT_USE_32KHZ;
- ah->slottime = 20;
- ah->globaltxtimeout = (u32) -1;
---- a/drivers/net/wireless/ath/ath9k/reg.h
-+++ b/drivers/net/wireless/ath/ath9k/reg.h
-@@ -1396,6 +1396,7 @@ enum {
- #define AR_STA_ID1_PCF 0x00100000
- #define AR_STA_ID1_USE_DEFANT 0x00200000
- #define AR_STA_ID1_DEFANT_UPDATE 0x00400000
-+#define AR_STA_ID1_AR9100_BA_FIX 0x00400000
- #define AR_STA_ID1_RTS_USE_DEF 0x00800000
- #define AR_STA_ID1_ACKCTS_6MB 0x01000000
- #define AR_STA_ID1_BASE_RATE_11B 0x02000000
diff --git a/package/mac80211/patches/550-mac80211_fix_rx_reorder_timeout.patch b/package/mac80211/patches/540-mac80211_fix_rx_reorder_timeout.patch
index c3532b4a3..c3532b4a3 100644
--- a/package/mac80211/patches/550-mac80211_fix_rx_reorder_timeout.patch
+++ b/package/mac80211/patches/540-mac80211_fix_rx_reorder_timeout.patch
diff --git a/package/mac80211/patches/541-ath9k_ar9100_rx_chainmask_fix.patch b/package/mac80211/patches/541-ath9k_ar9100_rx_chainmask_fix.patch
deleted file mode 100644
index fb06f01ec..000000000
--- a/package/mac80211/patches/541-ath9k_ar9100_rx_chainmask_fix.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/hw.c
-+++ b/drivers/net/wireless/ath/ath9k/hw.c
-@@ -1878,6 +1878,8 @@ int ath9k_hw_fill_cap_info(struct ath_hw
- !(AR_SREV_9271(ah)))
- /* CB71: GPIO 0 is pulled down to indicate 3 rx chains */
- pCap->rx_chainmask = ath9k_hw_gpio_get(ah, 0) ? 0x5 : 0x7;
-+ else if (AR_SREV_9100(ah))
-+ pCap->rx_chainmask = 0x7;
- else
- /* Use rx_chainmask from EEPROM. */
- pCap->rx_chainmask = ah->eep_ops->get_eeprom(ah, EEP_RX_MASK);
diff --git a/package/mac80211/patches/562-ath9k_increase_bcbuf.patch b/package/mac80211/patches/550-ath9k_increase_bcbuf.patch
index d9c6d717d..91ec1dc6d 100644
--- a/package/mac80211/patches/562-ath9k_increase_bcbuf.patch
+++ b/package/mac80211/patches/550-ath9k_increase_bcbuf.patch
@@ -3,7 +3,7 @@
@@ -369,7 +369,7 @@ struct ath_vif {
* number of beacon intervals, the game's up.
*/
- #define BSTUCK_THRESH (9 * ATH_BCBUF)
+ #define BSTUCK_THRESH 9
-#define ATH_BCBUF 4
+#define ATH_BCBUF 8
#define ATH_DEFAULT_BINTVAL 100 /* TU */
diff --git a/package/mac80211/patches/560-ath9k_debugfs_cleanup.patch b/package/mac80211/patches/560-ath9k_debugfs_cleanup.patch
deleted file mode 100644
index 70e7ac536..000000000
--- a/package/mac80211/patches/560-ath9k_debugfs_cleanup.patch
+++ /dev/null
@@ -1,108 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/debug.c
-+++ b/drivers/net/wireless/ath/ath9k/debug.c
-@@ -1135,76 +1135,43 @@ int ath9k_init_debug(struct ath_hw *ah)
- return -ENOMEM;
-
- #ifdef CONFIG_ATH_DEBUG
-- if (!debugfs_create_file("debug", S_IRUSR | S_IWUSR,
-- sc->debug.debugfs_phy, sc, &fops_debug))
-- goto err;
-+ debugfs_create_file("debug", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy,
-+ sc, &fops_debug);
- #endif
--
-- if (!debugfs_create_file("dma", S_IRUSR, sc->debug.debugfs_phy,
-- sc, &fops_dma))
-- goto err;
--
-- if (!debugfs_create_file("interrupt", S_IRUSR, sc->debug.debugfs_phy,
-- sc, &fops_interrupt))
-- goto err;
--
-- if (!debugfs_create_file("wiphy", S_IRUSR | S_IWUSR,
-- sc->debug.debugfs_phy, sc, &fops_wiphy))
-- goto err;
--
-- if (!debugfs_create_file("xmit", S_IRUSR, sc->debug.debugfs_phy,
-- sc, &fops_xmit))
-- goto err;
--
-- if (!debugfs_create_file("stations", S_IRUSR, sc->debug.debugfs_phy,
-- sc, &fops_stations))
-- goto err;
--
-- if (!debugfs_create_file("misc", S_IRUSR, sc->debug.debugfs_phy,
-- sc, &fops_misc))
-- goto err;
--
-- if (!debugfs_create_file("recv", S_IRUSR, sc->debug.debugfs_phy,
-- sc, &fops_recv))
-- goto err;
--
-- if (!debugfs_create_file("rx_chainmask", S_IRUSR | S_IWUSR,
-- sc->debug.debugfs_phy, sc, &fops_rx_chainmask))
-- goto err;
--
-- if (!debugfs_create_file("tx_chainmask", S_IRUSR | S_IWUSR,
-- sc->debug.debugfs_phy, sc, &fops_tx_chainmask))
-- goto err;
--
-- if (!debugfs_create_file("regidx", S_IRUSR | S_IWUSR,
-- sc->debug.debugfs_phy, sc, &fops_regidx))
-- goto err;
--
-- if (!debugfs_create_file("regval", S_IRUSR | S_IWUSR,
-- sc->debug.debugfs_phy, sc, &fops_regval))
-- goto err;
--
-- if (!debugfs_create_bool("ignore_extcca", S_IRUSR | S_IWUSR,
-- sc->debug.debugfs_phy, &ah->config.cwm_ignore_extcca))
-- goto err;
--
-- if (!debugfs_create_file("regdump", S_IRUSR, sc->debug.debugfs_phy,
-- sc, &fops_regdump))
-- goto err;
--
-+ debugfs_create_file("dma", S_IRUSR, sc->debug.debugfs_phy, sc,
-+ &fops_dma);
-+ debugfs_create_file("interrupt", S_IRUSR, sc->debug.debugfs_phy, sc,
-+ &fops_interrupt);
-+ debugfs_create_file("wiphy", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy,
-+ sc, &fops_wiphy);
-+ debugfs_create_file("xmit", S_IRUSR, sc->debug.debugfs_phy, sc,
-+ &fops_xmit);
-+ debugfs_create_file("stations", S_IRUSR, sc->debug.debugfs_phy, sc,
-+ &fops_stations);
-+ debugfs_create_file("misc", S_IRUSR, sc->debug.debugfs_phy, sc,
-+ &fops_misc);
-+ debugfs_create_file("recv", S_IRUSR, sc->debug.debugfs_phy, sc,
-+ &fops_recv);
-+ debugfs_create_file("rx_chainmask", S_IRUSR | S_IWUSR,
-+ sc->debug.debugfs_phy, sc, &fops_rx_chainmask);
-+ debugfs_create_file("tx_chainmask", S_IRUSR | S_IWUSR,
-+ sc->debug.debugfs_phy, sc, &fops_tx_chainmask);
-+ debugfs_create_file("regidx", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy,
-+ sc, &fops_regidx);
-+ debugfs_create_file("regval", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy,
-+ sc, &fops_regval);
-+ debugfs_create_bool("ignore_extcca", S_IRUSR | S_IWUSR,
-+ sc->debug.debugfs_phy,
-+ &ah->config.cwm_ignore_extcca);
-+ debugfs_create_file("regdump", S_IRUSR, sc->debug.debugfs_phy, sc,
-+ &fops_regdump);
- debugfs_create_u32("gpio_mask", S_IRUSR | S_IWUSR,
- sc->debug.debugfs_phy, &sc->sc_ah->gpio_mask);
--
- debugfs_create_u32("gpio_val", S_IRUSR | S_IWUSR,
- sc->debug.debugfs_phy, &sc->sc_ah->gpio_val);
--
- debugfs_create_file("eeprom", S_IRUSR, sc->debug.debugfs_phy, sc,
- &fops_eeprom);
-
- sc->debug.regidx = 0;
- return 0;
--err:
-- debugfs_remove_recursive(sc->debug.debugfs_phy);
-- sc->debug.debugfs_phy = NULL;
-- return -ENOMEM;
- }
diff --git a/package/mac80211/patches/563-ath9k_reduce_bstuck_nfcal.patch b/package/mac80211/patches/563-ath9k_reduce_bstuck_nfcal.patch
deleted file mode 100644
index b744c4cec..000000000
--- a/package/mac80211/patches/563-ath9k_reduce_bstuck_nfcal.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/beacon.c
-+++ b/drivers/net/wireless/ath/ath9k/beacon.c
-@@ -368,7 +368,8 @@ void ath_beacon_tasklet(unsigned long da
- "missed %u consecutive beacons\n",
- sc->beacon.bmisscnt);
- ath9k_hw_stop_dma_queue(ah, sc->beacon.beaconq);
-- ath9k_hw_bstuck_nfcal(ah);
-+ if (sc->beacon.bmisscnt > 4)
-+ ath9k_hw_bstuck_nfcal(ah);
- } else if (sc->beacon.bmisscnt >= BSTUCK_THRESH) {
- ath_dbg(common, ATH_DBG_BSTUCK,
- "beacon is officially stuck\n");
diff --git a/package/mac80211/patches/570-mac80211_initialize_last_rx.patch b/package/mac80211/patches/570-mac80211_initialize_last_rx.patch
deleted file mode 100644
index edcc227e9..000000000
--- a/package/mac80211/patches/570-mac80211_initialize_last_rx.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/net/mac80211/sta_info.c
-+++ b/net/mac80211/sta_info.c
-@@ -243,6 +243,7 @@ struct sta_info *sta_info_alloc(struct i
- memcpy(sta->sta.addr, addr, ETH_ALEN);
- sta->local = local;
- sta->sdata = sdata;
-+ sta->last_rx = jiffies;
-
- ewma_init(&sta->avg_signal, 1024, 8);
-
diff --git a/package/mac80211/patches/700-mwl8k-missing-pci-id-for-WNR854T.patch b/package/mac80211/patches/700-mwl8k-missing-pci-id-for-WNR854T.patch
index ebc7c6bee..b19755a45 100644
--- a/package/mac80211/patches/700-mwl8k-missing-pci-id-for-WNR854T.patch
+++ b/package/mac80211/patches/700-mwl8k-missing-pci-id-for-WNR854T.patch
@@ -1,6 +1,6 @@
--- a/drivers/net/wireless/mwl8k.c
+++ b/drivers/net/wireless/mwl8k.c
-@@ -4500,6 +4500,7 @@ MODULE_FIRMWARE("mwl8k/fmimage_8366.fw")
+@@ -5111,6 +5111,7 @@ MODULE_FIRMWARE("mwl8k/fmimage_8366.fw")
MODULE_FIRMWARE(MWL8K_8366_AP_FW(MWL8K_8366_AP_FW_API));
static DEFINE_PCI_DEVICE_TABLE(mwl8k_pci_id_table) = {