From 669f5554cb75b36c42fb42b49d6c4e2d35eb3e62 Mon Sep 17 00:00:00 2001 From: nbd Date: Sat, 10 Mar 2012 12:59:24 +0000 Subject: mac80211: reorganize patches, fold in patches that were merged upstream git-svn-id: svn://svn.openwrt.org/openwrt/trunk@30863 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/mac80211/patches/300-pending_work.patch | 304 ++++++++++++++++++++- .../440-ath5k_calibrate_no_queue_stop.patch | 31 --- .../patches/441-ath5k_no_agc_recalibration.patch | 42 --- .../patches/510-ath9k_intr_mitigation_tweak.patch | 2 +- .../patches/513-ath9k_channelbw_debugfs.patch | 2 +- .../patches/530-mac80211_cur_txpower.patch | 2 +- .../patches/541-ath9k_ar9280_cold_reset.patch | 23 -- .../mac80211/patches/545-ath9k_fix_initvals.patch | 208 ++++++++++++++ .../551-ath9k_per_chain_signal_strength.patch | 22 +- .../mac80211/patches/570-ath9k_fix_initvals.patch | 208 -------------- .../mac80211/patches/571-ath9k_beacon_fix.patch | 113 -------- .../580-mac80211_ignore_bad_signal_values.patch | 44 --- .../patches/581-ath9k_report_missing_signal.patch | 37 --- 13 files changed, 516 insertions(+), 522 deletions(-) delete mode 100644 package/mac80211/patches/440-ath5k_calibrate_no_queue_stop.patch delete mode 100644 package/mac80211/patches/441-ath5k_no_agc_recalibration.patch delete mode 100644 package/mac80211/patches/541-ath9k_ar9280_cold_reset.patch create mode 100644 package/mac80211/patches/545-ath9k_fix_initvals.patch delete mode 100644 package/mac80211/patches/570-ath9k_fix_initvals.patch delete mode 100644 package/mac80211/patches/571-ath9k_beacon_fix.patch delete mode 100644 package/mac80211/patches/580-mac80211_ignore_bad_signal_values.patch delete mode 100644 package/mac80211/patches/581-ath9k_report_missing_signal.patch diff --git a/package/mac80211/patches/300-pending_work.patch b/package/mac80211/patches/300-pending_work.patch index 8bb89422e..b96e15488 100644 --- a/package/mac80211/patches/300-pending_work.patch +++ b/package/mac80211/patches/300-pending_work.patch @@ -1,6 +1,35 @@ --- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c +++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c -@@ -510,7 +510,11 @@ int ath9k_hw_process_rxdesc_edma(struct +@@ -326,7 +326,6 @@ static bool ar9003_hw_get_isr(struct ath + static int ar9003_hw_proc_txdesc(struct ath_hw *ah, void *ds, + struct ath_tx_status *ts) + { +- struct ar9003_txc *txc = (struct ar9003_txc *) ds; + struct ar9003_txs *ads; + u32 status; + +@@ -336,11 +335,7 @@ static int ar9003_hw_proc_txdesc(struct + if ((status & AR_TxDone) == 0) + return -EINPROGRESS; + +- ts->qid = MS(ads->ds_info, AR_TxQcuNum); +- if (!txc || (MS(txc->info, AR_TxQcuNum) == ts->qid)) +- ah->ts_tail = (ah->ts_tail + 1) % ah->ts_size; +- else +- return -ENOENT; ++ ah->ts_tail = (ah->ts_tail + 1) % ah->ts_size; + + if ((MS(ads->ds_info, AR_DescId) != ATHEROS_VENDOR_ID) || + (MS(ads->ds_info, AR_TxRxDesc) != 1)) { +@@ -354,6 +349,7 @@ static int ar9003_hw_proc_txdesc(struct + ts->ts_seqnum = MS(status, AR_SeqNum); + ts->tid = MS(status, AR_TxTid); + ++ ts->qid = MS(ads->ds_info, AR_TxQcuNum); + ts->desc_id = MS(ads->status1, AR_TxDescId); + ts->ts_tstamp = ads->status4; + ts->ts_status = 0; +@@ -510,7 +506,11 @@ int ath9k_hw_process_rxdesc_edma(struct */ if (rxsp->status11 & AR_CRCErr) rxs->rs_status |= ATH9K_RXERR_CRC; @@ -13,7 +42,7 @@ phyerr = MS(rxsp->status11, AR_PHYErrCode); /* * If we reach a point here where AR_PostDelimCRCErr is -@@ -532,11 +536,7 @@ int ath9k_hw_process_rxdesc_edma(struct +@@ -532,11 +532,7 @@ int ath9k_hw_process_rxdesc_edma(struct rxs->rs_status |= ATH9K_RXERR_PHY; rxs->rs_phyerr = phyerr; } @@ -130,7 +159,24 @@ IEEE80211_TX_CTL_MORE_FRAMES | IEEE80211_TX_CTL_LDPC | \ IEEE80211_TX_CTL_STBC | IEEE80211_TX_STATUS_EOSP) -@@ -1634,7 +1634,7 @@ void ieee80211_free_txskb(struct ieee802 +@@ -659,6 +659,8 @@ ieee80211_tx_info_clear_status(struct ie + * @RX_FLAG_HT: HT MCS was used and rate_idx is MCS index + * @RX_FLAG_40MHZ: HT40 (40 MHz) was used + * @RX_FLAG_SHORT_GI: Short guard interval was used ++ * @RX_FLAG_NO_SIGNAL_VAL: The signal strength value is not present. ++ * Valid only for data frames (mainly A-MPDU) + */ + enum mac80211_rx_flags { + RX_FLAG_MMIC_ERROR = 1<<0, +@@ -672,6 +674,7 @@ enum mac80211_rx_flags { + RX_FLAG_HT = 1<<9, + RX_FLAG_40MHZ = 1<<10, + RX_FLAG_SHORT_GI = 1<<11, ++ RX_FLAG_NO_SIGNAL_VAL = 1<<12, + }; + + /** +@@ -1634,7 +1637,7 @@ void ieee80211_free_txskb(struct ieee802 * the station sends a PS-Poll or a uAPSD trigger frame, mac80211 * will inform the driver of this with the @allow_buffered_frames * callback; this callback is optional. mac80211 will then transmit @@ -139,7 +185,7 @@ * on each frame. The last frame in the service period (or the only * response to a PS-Poll) also has %IEEE80211_TX_STATUS_EOSP set to * indicate that it ends the service period; as this frame must have -@@ -1642,6 +1642,9 @@ void ieee80211_free_txskb(struct ieee802 +@@ -1642,6 +1645,9 @@ void ieee80211_free_txskb(struct ieee802 * When TX status is reported for this frame, the service period is * marked has having ended and a new one can be started by the peer. * @@ -149,7 +195,7 @@ * Another race condition can happen on some devices like iwlwifi * when there are frames queued for the station and it wakes up * or polls; the frames that are already queued could end up being -@@ -2140,7 +2143,7 @@ enum ieee80211_frame_release_type { +@@ -2140,7 +2146,7 @@ enum ieee80211_frame_release_type { * @allow_buffered_frames: Prepare device to allow the given number of frames * to go out to the given station. The frames will be sent by mac80211 * via the usual TX path after this call. The TX information for frames @@ -337,7 +383,17 @@ break; --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c -@@ -489,12 +489,12 @@ ieee80211_rx_mesh_check(struct ieee80211 +@@ -177,7 +177,8 @@ ieee80211_add_rx_radiotap_header(struct + pos += 2; + + /* IEEE80211_RADIOTAP_DBM_ANTSIGNAL */ +- if (local->hw.flags & IEEE80211_HW_SIGNAL_DBM) { ++ if (local->hw.flags & IEEE80211_HW_SIGNAL_DBM && ++ !(status->flag & RX_FLAG_NO_SIGNAL_VAL)) { + *pos = status->signal; + rthdr->it_present |= + cpu_to_le32(1 << IEEE80211_RADIOTAP_DBM_ANTSIGNAL); +@@ -489,12 +490,12 @@ ieee80211_rx_mesh_check(struct ieee80211 if (ieee80211_has_tods(hdr->frame_control) || !ieee80211_has_fromds(hdr->frame_control)) return RX_DROP_MONITOR; @@ -352,7 +408,20 @@ return RX_DROP_MONITOR; } } -@@ -2282,6 +2282,7 @@ ieee80211_rx_h_action(struct ieee80211_r +@@ -1309,8 +1310,10 @@ ieee80211_rx_h_sta_process(struct ieee80 + + sta->rx_fragments++; + sta->rx_bytes += rx->skb->len; +- sta->last_signal = status->signal; +- ewma_add(&sta->avg_signal, -status->signal); ++ if (!(status->flag & RX_FLAG_NO_SIGNAL_VAL)) { ++ sta->last_signal = status->signal; ++ ewma_add(&sta->avg_signal, -status->signal); ++ } + + /* + * Change STA power saving mode only at the end of a frame +@@ -2282,6 +2285,7 @@ ieee80211_rx_h_action(struct ieee80211_r sdata->vif.type != NL80211_IFTYPE_MESH_POINT && sdata->vif.type != NL80211_IFTYPE_AP_VLAN && sdata->vif.type != NL80211_IFTYPE_AP && @@ -360,7 +429,7 @@ sdata->vif.type != NL80211_IFTYPE_ADHOC) break; -@@ -2336,7 +2337,7 @@ ieee80211_rx_h_action(struct ieee80211_r +@@ -2336,7 +2340,7 @@ ieee80211_rx_h_action(struct ieee80211_r if (sdata->vif.type != NL80211_IFTYPE_STATION) break; @@ -369,7 +438,7 @@ break; goto queue; -@@ -2492,14 +2493,15 @@ ieee80211_rx_h_mgmt(struct ieee80211_rx_ +@@ -2492,14 +2496,15 @@ ieee80211_rx_h_mgmt(struct ieee80211_rx_ if (!ieee80211_vif_is_mesh(&sdata->vif) && sdata->vif.type != NL80211_IFTYPE_ADHOC && @@ -387,7 +456,7 @@ break; case cpu_to_le16(IEEE80211_STYPE_ASSOC_RESP): case cpu_to_le16(IEEE80211_STYPE_REASSOC_RESP): -@@ -2853,10 +2855,16 @@ static int prepare_for_handlers(struct i +@@ -2853,10 +2858,16 @@ static int prepare_for_handlers(struct i } break; case NL80211_IFTYPE_WDS: @@ -1140,3 +1209,218 @@ tasklet_init(&sc->intr_tq, ath9k_tasklet, (unsigned long)sc); tasklet_init(&sc->bcon_tasklet, ath_beacon_tasklet, (unsigned long)sc); +--- a/drivers/net/wireless/ath/ath9k/hw.c ++++ b/drivers/net/wireless/ath/ath9k/hw.c +@@ -1386,10 +1386,16 @@ static bool ath9k_hw_set_reset_reg(struc + static bool ath9k_hw_chip_reset(struct ath_hw *ah, + struct ath9k_channel *chan) + { +- if (AR_SREV_9280(ah) && ah->eep_ops->get_eeprom(ah, EEP_OL_PWRCTRL)) { +- if (!ath9k_hw_set_reset_reg(ah, ATH9K_RESET_POWER_ON)) +- return false; +- } else if (!ath9k_hw_set_reset_reg(ah, ATH9K_RESET_WARM)) ++ int reset_type = ATH9K_RESET_WARM; ++ ++ if (AR_SREV_9280(ah)) { ++ if (ah->eep_ops->get_eeprom(ah, EEP_OL_PWRCTRL)) ++ reset_type = ATH9K_RESET_POWER_ON; ++ else ++ reset_type = ATH9K_RESET_COLD; ++ } ++ ++ if (!ath9k_hw_set_reset_reg(ah, reset_type)) + return false; + + if (!ath9k_hw_setpower(ah, ATH9K_PM_AWAKE)) +--- a/drivers/net/wireless/ath/ath5k/base.c ++++ b/drivers/net/wireless/ath/ath5k/base.c +@@ -2330,15 +2330,6 @@ ath5k_calibrate_work(struct work_struct + "got new rfgain, resetting\n"); + ieee80211_queue_work(ah->hw, &ah->reset_work); + } +- +- /* TODO: On full calibration we should stop TX here, +- * so that it doesn't interfere (mostly due to gain_f +- * calibration that messes with tx packets -see phy.c). +- * +- * NOTE: Stopping the queues from above is not enough +- * to stop TX but saves us from disconecting (at least +- * we don't lose packets). */ +- ieee80211_stop_queues(ah->hw); + } else + ah->ah_cal_mask |= AR5K_CALIBRATION_SHORT; + +@@ -2353,10 +2344,9 @@ ath5k_calibrate_work(struct work_struct + ah->curchan->center_freq)); + + /* Clear calibration flags */ +- if (ah->ah_cal_mask & AR5K_CALIBRATION_FULL) { +- ieee80211_wake_queues(ah->hw); ++ if (ah->ah_cal_mask & AR5K_CALIBRATION_FULL) + ah->ah_cal_mask &= ~AR5K_CALIBRATION_FULL; +- } else if (ah->ah_cal_mask & AR5K_CALIBRATION_SHORT) ++ else if (ah->ah_cal_mask & AR5K_CALIBRATION_SHORT) + ah->ah_cal_mask &= ~AR5K_CALIBRATION_SHORT; + } + +--- a/drivers/net/wireless/ath/ath5k/phy.c ++++ b/drivers/net/wireless/ath/ath5k/phy.c +@@ -1871,31 +1871,15 @@ ath5k_hw_phy_calibrate(struct ath5k_hw * + ret = 0; + } + +- /* On full calibration do an AGC calibration and +- * request a PAPD probe for gainf calibration if +- * needed */ +- if (ah->ah_cal_mask & AR5K_CALIBRATION_FULL) { ++ /* On full calibration request a PAPD probe for ++ * gainf calibration if needed */ ++ if ((ah->ah_cal_mask & AR5K_CALIBRATION_FULL) && ++ (ah->ah_radio == AR5K_RF5111 || ++ ah->ah_radio == AR5K_RF5112) && ++ channel->hw_value != AR5K_MODE_11B) ++ ath5k_hw_request_rfgain_probe(ah); + +- AR5K_REG_ENABLE_BITS(ah, AR5K_PHY_AGCCTL, +- AR5K_PHY_AGCCTL_CAL); +- +- ret = ath5k_hw_register_timeout(ah, AR5K_PHY_AGCCTL, +- AR5K_PHY_AGCCTL_CAL | AR5K_PHY_AGCCTL_NF, +- 0, false); +- if (ret) { +- ATH5K_ERR(ah, +- "gain calibration timeout (%uMHz)\n", +- channel->center_freq); +- } +- +- if ((ah->ah_radio == AR5K_RF5111 || +- ah->ah_radio == AR5K_RF5112) +- && (channel->hw_value != AR5K_MODE_11B)) +- ath5k_hw_request_rfgain_probe(ah); +- } +- +- /* Update noise floor +- * XXX: Only do this after AGC calibration */ ++ /* Update noise floor */ + if (!(ah->ah_cal_mask & AR5K_CALIBRATION_NF)) + ath5k_hw_update_noise_floor(ah); + +--- a/drivers/net/wireless/ath/ath9k/recv.c ++++ b/drivers/net/wireless/ath/ath9k/recv.c +@@ -954,6 +954,7 @@ static void ath9k_process_rssi(struct at + struct ath_softc *sc = hw->priv; + struct ath_hw *ah = common->ah; + int last_rssi; ++ int rssi = rx_stats->rs_rssi; + + if (!rx_stats->is_mybeacon || + ((ah->opmode != NL80211_IFTYPE_STATION) && +@@ -965,13 +966,12 @@ static void ath9k_process_rssi(struct at + + last_rssi = sc->last_rssi; + if (likely(last_rssi != ATH_RSSI_DUMMY_MARKER)) +- rx_stats->rs_rssi = ATH_EP_RND(last_rssi, +- ATH_RSSI_EP_MULTIPLIER); +- if (rx_stats->rs_rssi < 0) +- rx_stats->rs_rssi = 0; ++ rssi = ATH_EP_RND(last_rssi, ATH_RSSI_EP_MULTIPLIER); ++ if (rssi < 0) ++ rssi = 0; + + /* Update Beacon RSSI, this is used by ANI. */ +- ah->stats.avgbrssi = rx_stats->rs_rssi; ++ ah->stats.avgbrssi = rssi; + } + + /* +@@ -1011,6 +1011,8 @@ static int ath9k_rx_skb_preprocess(struc + rx_status->signal = ah->noise + rx_stats->rs_rssi; + rx_status->antenna = rx_stats->rs_antenna; + rx_status->flag |= RX_FLAG_MACTIME_MPDU; ++ if (rx_stats->rs_moreaggr) ++ rx_status->flag |= RX_FLAG_NO_SIGNAL_VAL; + + return 0; + } +--- a/drivers/net/wireless/ath/ath9k/beacon.c ++++ b/drivers/net/wireless/ath/ath9k/beacon.c +@@ -91,7 +91,7 @@ static void ath_beacon_setup(struct ath_ + info.txpower = MAX_RATE_POWER; + info.keyix = ATH9K_TXKEYIX_INVALID; + info.keytype = ATH9K_KEY_TYPE_CLEAR; +- info.flags = ATH9K_TXDESC_NOACK; ++ info.flags = ATH9K_TXDESC_NOACK | ATH9K_TXDESC_INTREQ; + + info.buf_addr[0] = bf->bf_buf_addr; + info.buf_len[0] = roundup(skb->len, 4); +@@ -355,7 +355,6 @@ void ath_beacon_tasklet(unsigned long da + struct ath_common *common = ath9k_hw_common(ah); + struct ath_buf *bf = NULL; + struct ieee80211_vif *vif; +- struct ath_tx_status ts; + bool edma = !!(ah->caps.hw_caps & ATH9K_HW_CAP_EDMA); + int slot; + u32 bfaddr, bc = 0; +@@ -462,11 +461,6 @@ void ath_beacon_tasklet(unsigned long da + ath9k_hw_txstart(ah, sc->beacon.beaconq); + + sc->beacon.ast_be_xmit += bc; /* XXX per-vif? */ +- if (edma) { +- spin_lock_bh(&sc->sc_pcu_lock); +- ath9k_hw_txprocdesc(ah, bf->bf_desc, (void *)&ts); +- spin_unlock_bh(&sc->sc_pcu_lock); +- } + } + } + +--- a/drivers/net/wireless/ath/ath9k/mac.c ++++ b/drivers/net/wireless/ath/ath9k/mac.c +@@ -745,7 +745,11 @@ int ath9k_hw_beaconq_setup(struct ath_hw + qi.tqi_aifs = 1; + qi.tqi_cwmin = 0; + qi.tqi_cwmax = 0; +- /* NB: don't enable any interrupts */ ++ ++ if (ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) ++ qi.tqi_qflags = TXQ_FLAG_TXOKINT_ENABLE | ++ TXQ_FLAG_TXERRINT_ENABLE; ++ + return ath9k_hw_setuptxqueue(ah, ATH9K_TX_QUEUE_BEACON, &qi); + } + EXPORT_SYMBOL(ath9k_hw_beaconq_setup); +--- a/drivers/net/wireless/ath/ath9k/main.c ++++ b/drivers/net/wireless/ath/ath9k/main.c +@@ -2300,6 +2300,7 @@ static int ath9k_tx_last_beacon(struct i + struct ath_vif *avp; + struct ath_buf *bf; + struct ath_tx_status ts; ++ bool edma = !!(ah->caps.hw_caps & ATH9K_HW_CAP_EDMA); + int status; + + vif = sc->beacon.bslot[0]; +@@ -2310,7 +2311,7 @@ static int ath9k_tx_last_beacon(struct i + if (!avp->is_bslot_active) + return 0; + +- if (!sc->beacon.tx_processed) { ++ if (!sc->beacon.tx_processed && !edma) { + tasklet_disable(&sc->bcon_tasklet); + + bf = avp->av_bcbuf; +--- a/drivers/net/wireless/ath/ath9k/xmit.c ++++ b/drivers/net/wireless/ath/ath9k/xmit.c +@@ -2296,9 +2296,12 @@ void ath_tx_edma_tasklet(struct ath_soft + break; + } + +- /* Skip beacon completions */ +- if (ts.qid == sc->beacon.beaconq) ++ /* Process beacon completions separately */ ++ if (ts.qid == sc->beacon.beaconq) { ++ sc->beacon.tx_processed = true; ++ sc->beacon.tx_last = !(ts.ts_status & ATH9K_TXERR_MASK); + continue; ++ } + + txq = &sc->tx.txq[ts.qid]; + diff --git a/package/mac80211/patches/440-ath5k_calibrate_no_queue_stop.patch b/package/mac80211/patches/440-ath5k_calibrate_no_queue_stop.patch deleted file mode 100644 index 3751c531b..000000000 --- a/package/mac80211/patches/440-ath5k_calibrate_no_queue_stop.patch +++ /dev/null @@ -1,31 +0,0 @@ ---- a/drivers/net/wireless/ath/ath5k/base.c -+++ b/drivers/net/wireless/ath/ath5k/base.c -@@ -2330,15 +2330,6 @@ ath5k_calibrate_work(struct work_struct - "got new rfgain, resetting\n"); - ieee80211_queue_work(ah->hw, &ah->reset_work); - } -- -- /* TODO: On full calibration we should stop TX here, -- * so that it doesn't interfere (mostly due to gain_f -- * calibration that messes with tx packets -see phy.c). -- * -- * NOTE: Stopping the queues from above is not enough -- * to stop TX but saves us from disconecting (at least -- * we don't lose packets). */ -- ieee80211_stop_queues(ah->hw); - } else - ah->ah_cal_mask |= AR5K_CALIBRATION_SHORT; - -@@ -2353,10 +2344,9 @@ ath5k_calibrate_work(struct work_struct - ah->curchan->center_freq)); - - /* Clear calibration flags */ -- if (ah->ah_cal_mask & AR5K_CALIBRATION_FULL) { -- ieee80211_wake_queues(ah->hw); -+ if (ah->ah_cal_mask & AR5K_CALIBRATION_FULL) - ah->ah_cal_mask &= ~AR5K_CALIBRATION_FULL; -- } else if (ah->ah_cal_mask & AR5K_CALIBRATION_SHORT) -+ else if (ah->ah_cal_mask & AR5K_CALIBRATION_SHORT) - ah->ah_cal_mask &= ~AR5K_CALIBRATION_SHORT; - } - diff --git a/package/mac80211/patches/441-ath5k_no_agc_recalibration.patch b/package/mac80211/patches/441-ath5k_no_agc_recalibration.patch deleted file mode 100644 index 87d0743d3..000000000 --- a/package/mac80211/patches/441-ath5k_no_agc_recalibration.patch +++ /dev/null @@ -1,42 +0,0 @@ ---- a/drivers/net/wireless/ath/ath5k/phy.c -+++ b/drivers/net/wireless/ath/ath5k/phy.c -@@ -1871,31 +1871,15 @@ ath5k_hw_phy_calibrate(struct ath5k_hw * - ret = 0; - } - -- /* On full calibration do an AGC calibration and -- * request a PAPD probe for gainf calibration if -- * needed */ -- if (ah->ah_cal_mask & AR5K_CALIBRATION_FULL) { -+ /* On full calibration request a PAPD probe for -+ * gainf calibration if needed */ -+ if ((ah->ah_cal_mask & AR5K_CALIBRATION_FULL) && -+ (ah->ah_radio == AR5K_RF5111 || -+ ah->ah_radio == AR5K_RF5112) && -+ channel->hw_value != AR5K_MODE_11B) -+ ath5k_hw_request_rfgain_probe(ah); - -- AR5K_REG_ENABLE_BITS(ah, AR5K_PHY_AGCCTL, -- AR5K_PHY_AGCCTL_CAL); -- -- ret = ath5k_hw_register_timeout(ah, AR5K_PHY_AGCCTL, -- AR5K_PHY_AGCCTL_CAL | AR5K_PHY_AGCCTL_NF, -- 0, false); -- if (ret) { -- ATH5K_ERR(ah, -- "gain calibration timeout (%uMHz)\n", -- channel->center_freq); -- } -- -- if ((ah->ah_radio == AR5K_RF5111 || -- ah->ah_radio == AR5K_RF5112) -- && (channel->hw_value != AR5K_MODE_11B)) -- ath5k_hw_request_rfgain_probe(ah); -- } -- -- /* Update noise floor -- * XXX: Only do this after AGC calibration */ -+ /* Update noise floor */ - if (!(ah->ah_cal_mask & AR5K_CALIBRATION_NF)) - ath5k_hw_update_noise_floor(ah); - diff --git a/package/mac80211/patches/510-ath9k_intr_mitigation_tweak.patch b/package/mac80211/patches/510-ath9k_intr_mitigation_tweak.patch index 092ab5714..aee38d167 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 -@@ -1745,8 +1745,8 @@ int ath9k_hw_reset(struct ath_hw *ah, st +@@ -1751,8 +1751,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/513-ath9k_channelbw_debugfs.patch b/package/mac80211/patches/513-ath9k_channelbw_debugfs.patch index 99ba153c5..34e5ea160 100644 --- a/package/mac80211/patches/513-ath9k_channelbw_debugfs.patch +++ b/package/mac80211/patches/513-ath9k_channelbw_debugfs.patch @@ -128,7 +128,7 @@ return -EINVAL; --- a/drivers/net/wireless/ath/ath9k/hw.c +++ b/drivers/net/wireless/ath/ath9k/hw.c -@@ -1570,6 +1570,10 @@ int ath9k_hw_reset(struct ath_hw *ah, st +@@ -1576,6 +1576,10 @@ int ath9k_hw_reset(struct ath_hw *ah, st caldata->rtt_hist.num_readings) allow_fbs = true; diff --git a/package/mac80211/patches/530-mac80211_cur_txpower.patch b/package/mac80211/patches/530-mac80211_cur_txpower.patch index c7f901bfa..3363fe27e 100644 --- a/package/mac80211/patches/530-mac80211_cur_txpower.patch +++ b/package/mac80211/patches/530-mac80211_cur_txpower.patch @@ -1,6 +1,6 @@ --- a/include/net/mac80211.h +++ b/include/net/mac80211.h -@@ -816,7 +816,7 @@ enum ieee80211_smps_mode { +@@ -819,7 +819,7 @@ enum ieee80211_smps_mode { */ struct ieee80211_conf { u32 flags; diff --git a/package/mac80211/patches/541-ath9k_ar9280_cold_reset.patch b/package/mac80211/patches/541-ath9k_ar9280_cold_reset.patch deleted file mode 100644 index d6146e50a..000000000 --- a/package/mac80211/patches/541-ath9k_ar9280_cold_reset.patch +++ /dev/null @@ -1,23 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/hw.c -+++ b/drivers/net/wireless/ath/ath9k/hw.c -@@ -1395,10 +1395,16 @@ static bool ath9k_hw_set_reset_reg(struc - static bool ath9k_hw_chip_reset(struct ath_hw *ah, - struct ath9k_channel *chan) - { -- if (AR_SREV_9280(ah) && ah->eep_ops->get_eeprom(ah, EEP_OL_PWRCTRL)) { -- if (!ath9k_hw_set_reset_reg(ah, ATH9K_RESET_POWER_ON)) -- return false; -- } else if (!ath9k_hw_set_reset_reg(ah, ATH9K_RESET_WARM)) -+ int reset_type = ATH9K_RESET_WARM; -+ -+ if (AR_SREV_9280(ah)) { -+ if (ah->eep_ops->get_eeprom(ah, EEP_OL_PWRCTRL)) -+ reset_type = ATH9K_RESET_POWER_ON; -+ else -+ reset_type = ATH9K_RESET_COLD; -+ } -+ -+ if (!ath9k_hw_set_reset_reg(ah, reset_type)) - return false; - - if (!ath9k_hw_setpower(ah, ATH9K_PM_AWAKE)) diff --git a/package/mac80211/patches/545-ath9k_fix_initvals.patch b/package/mac80211/patches/545-ath9k_fix_initvals.patch new file mode 100644 index 000000000..664fa1e89 --- /dev/null +++ b/package/mac80211/patches/545-ath9k_fix_initvals.patch @@ -0,0 +1,208 @@ +--- a/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h ++++ b/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h +@@ -835,108 +835,108 @@ static const u32 ar9300_2p2_baseband_cor + + static const u32 ar9300Modes_high_power_tx_gain_table_2p2[][5] = { + /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ +- {0x0000a2dc, 0x000cfff0, 0x000cfff0, 0x03aaa352, 0x03aaa352}, +- {0x0000a2e0, 0x000f0000, 0x000f0000, 0x03ccc584, 0x03ccc584}, +- {0x0000a2e4, 0x03f00000, 0x03f00000, 0x03f0f800, 0x03f0f800}, ++ {0x0000a2dc, 0x0380c7fc, 0x0380c7fc, 0x03aaa352, 0x03aaa352}, ++ {0x0000a2e0, 0x0000f800, 0x0000f800, 0x03ccc584, 0x03ccc584}, ++ {0x0000a2e4, 0x03ff0000, 0x03ff0000, 0x03f0f800, 0x03f0f800}, + {0x0000a2e8, 0x00000000, 0x00000000, 0x03ff0000, 0x03ff0000}, +- {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d9, 0x000050d9}, +- {0x0000a500, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, +- {0x0000a504, 0x06000003, 0x06000003, 0x04000002, 0x04000002}, +- {0x0000a508, 0x0a000020, 0x0a000020, 0x08000004, 0x08000004}, +- {0x0000a50c, 0x10000023, 0x10000023, 0x0b000200, 0x0b000200}, +- {0x0000a510, 0x15000028, 0x15000028, 0x0f000202, 0x0f000202}, +- {0x0000a514, 0x1b00002b, 0x1b00002b, 0x12000400, 0x12000400}, +- {0x0000a518, 0x1f020028, 0x1f020028, 0x16000402, 0x16000402}, +- {0x0000a51c, 0x2502002b, 0x2502002b, 0x19000404, 0x19000404}, +- {0x0000a520, 0x2a04002a, 0x2a04002a, 0x1c000603, 0x1c000603}, +- {0x0000a524, 0x2e06002a, 0x2e06002a, 0x21000a02, 0x21000a02}, +- {0x0000a528, 0x3302202d, 0x3302202d, 0x25000a04, 0x25000a04}, +- {0x0000a52c, 0x3804202c, 0x3804202c, 0x28000a20, 0x28000a20}, +- {0x0000a530, 0x3c06202c, 0x3c06202c, 0x2c000e20, 0x2c000e20}, +- {0x0000a534, 0x4108202d, 0x4108202d, 0x30000e22, 0x30000e22}, +- {0x0000a538, 0x4506402d, 0x4506402d, 0x34000e24, 0x34000e24}, +- {0x0000a53c, 0x4906222d, 0x4906222d, 0x38001640, 0x38001640}, +- {0x0000a540, 0x4d062231, 0x4d062231, 0x3c001660, 0x3c001660}, +- {0x0000a544, 0x50082231, 0x50082231, 0x3f001861, 0x3f001861}, +- {0x0000a548, 0x5608422e, 0x5608422e, 0x43001a81, 0x43001a81}, +- {0x0000a54c, 0x5a08442e, 0x5a08442e, 0x47001a83, 0x47001a83}, +- {0x0000a550, 0x5e0a4431, 0x5e0a4431, 0x4a001c84, 0x4a001c84}, +- {0x0000a554, 0x640a4432, 0x640a4432, 0x4e001ce3, 0x4e001ce3}, +- {0x0000a558, 0x680a4434, 0x680a4434, 0x52001ce5, 0x52001ce5}, +- {0x0000a55c, 0x6c0a6434, 0x6c0a6434, 0x56001ce9, 0x56001ce9}, +- {0x0000a560, 0x6f0a6633, 0x6f0a6633, 0x5a001ceb, 0x5a001ceb}, +- {0x0000a564, 0x730c6634, 0x730c6634, 0x5d001eec, 0x5d001eec}, +- {0x0000a568, 0x730c6634, 0x730c6634, 0x5d001eec, 0x5d001eec}, +- {0x0000a56c, 0x730c6634, 0x730c6634, 0x5d001eec, 0x5d001eec}, +- {0x0000a570, 0x730c6634, 0x730c6634, 0x5d001eec, 0x5d001eec}, +- {0x0000a574, 0x730c6634, 0x730c6634, 0x5d001eec, 0x5d001eec}, +- {0x0000a578, 0x730c6634, 0x730c6634, 0x5d001eec, 0x5d001eec}, +- {0x0000a57c, 0x730c6634, 0x730c6634, 0x5d001eec, 0x5d001eec}, +- {0x0000a580, 0x00800000, 0x00800000, 0x00800000, 0x00800000}, +- {0x0000a584, 0x06800003, 0x06800003, 0x04800002, 0x04800002}, +- {0x0000a588, 0x0a800020, 0x0a800020, 0x08800004, 0x08800004}, +- {0x0000a58c, 0x10800023, 0x10800023, 0x0b800200, 0x0b800200}, +- {0x0000a590, 0x15800028, 0x15800028, 0x0f800202, 0x0f800202}, +- {0x0000a594, 0x1b80002b, 0x1b80002b, 0x12800400, 0x12800400}, +- {0x0000a598, 0x1f820028, 0x1f820028, 0x16800402, 0x16800402}, +- {0x0000a59c, 0x2582002b, 0x2582002b, 0x19800404, 0x19800404}, +- {0x0000a5a0, 0x2a84002a, 0x2a84002a, 0x1c800603, 0x1c800603}, +- {0x0000a5a4, 0x2e86002a, 0x2e86002a, 0x21800a02, 0x21800a02}, +- {0x0000a5a8, 0x3382202d, 0x3382202d, 0x25800a04, 0x25800a04}, +- {0x0000a5ac, 0x3884202c, 0x3884202c, 0x28800a20, 0x28800a20}, +- {0x0000a5b0, 0x3c86202c, 0x3c86202c, 0x2c800e20, 0x2c800e20}, +- {0x0000a5b4, 0x4188202d, 0x4188202d, 0x30800e22, 0x30800e22}, +- {0x0000a5b8, 0x4586402d, 0x4586402d, 0x34800e24, 0x34800e24}, +- {0x0000a5bc, 0x4986222d, 0x4986222d, 0x38801640, 0x38801640}, +- {0x0000a5c0, 0x4d862231, 0x4d862231, 0x3c801660, 0x3c801660}, +- {0x0000a5c4, 0x50882231, 0x50882231, 0x3f801861, 0x3f801861}, +- {0x0000a5c8, 0x5688422e, 0x5688422e, 0x43801a81, 0x43801a81}, +- {0x0000a5cc, 0x5a88442e, 0x5a88442e, 0x47801a83, 0x47801a83}, +- {0x0000a5d0, 0x5e8a4431, 0x5e8a4431, 0x4a801c84, 0x4a801c84}, +- {0x0000a5d4, 0x648a4432, 0x648a4432, 0x4e801ce3, 0x4e801ce3}, +- {0x0000a5d8, 0x688a4434, 0x688a4434, 0x52801ce5, 0x52801ce5}, +- {0x0000a5dc, 0x6c8a6434, 0x6c8a6434, 0x56801ce9, 0x56801ce9}, +- {0x0000a5e0, 0x6f8a6633, 0x6f8a6633, 0x5a801ceb, 0x5a801ceb}, +- {0x0000a5e4, 0x738c6634, 0x738c6634, 0x5d801eec, 0x5d801eec}, +- {0x0000a5e8, 0x738c6634, 0x738c6634, 0x5d801eec, 0x5d801eec}, +- {0x0000a5ec, 0x738c6634, 0x738c6634, 0x5d801eec, 0x5d801eec}, +- {0x0000a5f0, 0x738c6634, 0x738c6634, 0x5d801eec, 0x5d801eec}, +- {0x0000a5f4, 0x738c6634, 0x738c6634, 0x5d801eec, 0x5d801eec}, +- {0x0000a5f8, 0x738c6634, 0x738c6634, 0x5d801eec, 0x5d801eec}, +- {0x0000a5fc, 0x738c6634, 0x738c6634, 0x5d801eec, 0x5d801eec}, ++ {0x0000a410, 0x000050d8, 0x000050d8, 0x000050d9, 0x000050d9}, ++ {0x0000a500, 0x00002220, 0x00002220, 0x00000000, 0x00000000}, ++ {0x0000a504, 0x04002222, 0x04002222, 0x04000002, 0x04000002}, ++ {0x0000a508, 0x09002421, 0x09002421, 0x08000004, 0x08000004}, ++ {0x0000a50c, 0x0d002621, 0x0d002621, 0x0b000200, 0x0b000200}, ++ {0x0000a510, 0x13004620, 0x13004620, 0x0f000202, 0x0f000202}, ++ {0x0000a514, 0x19004a20, 0x19004a20, 0x11000400, 0x11000400}, ++ {0x0000a518, 0x1d004e20, 0x1d004e20, 0x15000402, 0x15000402}, ++ {0x0000a51c, 0x21005420, 0x21005420, 0x19000404, 0x19000404}, ++ {0x0000a520, 0x26005e20, 0x26005e20, 0x1b000603, 0x1b000603}, ++ {0x0000a524, 0x2b005e40, 0x2b005e40, 0x1f000a02, 0x1f000a02}, ++ {0x0000a528, 0x2f005e42, 0x2f005e42, 0x23000a04, 0x23000a04}, ++ {0x0000a52c, 0x33005e44, 0x33005e44, 0x26000a20, 0x26000a20}, ++ {0x0000a530, 0x38005e65, 0x38005e65, 0x2a000e20, 0x2a000e20}, ++ {0x0000a534, 0x3c005e69, 0x3c005e69, 0x2e000e22, 0x2e000e22}, ++ {0x0000a538, 0x40005e6b, 0x40005e6b, 0x31000e24, 0x31000e24}, ++ {0x0000a53c, 0x44005e6d, 0x44005e6d, 0x34001640, 0x34001640}, ++ {0x0000a540, 0x49005e72, 0x49005e72, 0x38001660, 0x38001660}, ++ {0x0000a544, 0x4e005eb2, 0x4e005eb2, 0x3b001861, 0x3b001861}, ++ {0x0000a548, 0x53005f12, 0x53005f12, 0x3e001a81, 0x3e001a81}, ++ {0x0000a54c, 0x59025eb2, 0x59025eb2, 0x42001a83, 0x42001a83}, ++ {0x0000a550, 0x5e025f12, 0x5e025f12, 0x44001c84, 0x44001c84}, ++ {0x0000a554, 0x61027f12, 0x61027f12, 0x48001ce3, 0x48001ce3}, ++ {0x0000a558, 0x6702bf12, 0x6702bf12, 0x4c001ce5, 0x4c001ce5}, ++ {0x0000a55c, 0x6b02bf14, 0x6b02bf14, 0x50001ce9, 0x50001ce9}, ++ {0x0000a560, 0x6f02bf16, 0x6f02bf16, 0x54001ceb, 0x54001ceb}, ++ {0x0000a564, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, ++ {0x0000a568, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, ++ {0x0000a56c, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, ++ {0x0000a570, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, ++ {0x0000a574, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, ++ {0x0000a578, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, ++ {0x0000a57c, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, ++ {0x0000a580, 0x00802220, 0x00802220, 0x00800000, 0x00800000}, ++ {0x0000a584, 0x04802222, 0x04802222, 0x04800002, 0x04800002}, ++ {0x0000a588, 0x09802421, 0x09802421, 0x08800004, 0x08800004}, ++ {0x0000a58c, 0x0d802621, 0x0d802621, 0x0b800200, 0x0b800200}, ++ {0x0000a590, 0x13804620, 0x13804620, 0x0f800202, 0x0f800202}, ++ {0x0000a594, 0x19804a20, 0x19804a20, 0x11800400, 0x11800400}, ++ {0x0000a598, 0x1d804e20, 0x1d804e20, 0x15800402, 0x15800402}, ++ {0x0000a59c, 0x21805420, 0x21805420, 0x19800404, 0x19800404}, ++ {0x0000a5a0, 0x26805e20, 0x26805e20, 0x1b800603, 0x1b800603}, ++ {0x0000a5a4, 0x2b805e40, 0x2b805e40, 0x1f800a02, 0x1f800a02}, ++ {0x0000a5a8, 0x2f805e42, 0x2f805e42, 0x23800a04, 0x23800a04}, ++ {0x0000a5ac, 0x33805e44, 0x33805e44, 0x26800a20, 0x26800a20}, ++ {0x0000a5b0, 0x38805e65, 0x38805e65, 0x2a800e20, 0x2a800e20}, ++ {0x0000a5b4, 0x3c805e69, 0x3c805e69, 0x2e800e22, 0x2e800e22}, ++ {0x0000a5b8, 0x40805e6b, 0x40805e6b, 0x31800e24, 0x31800e24}, ++ {0x0000a5bc, 0x44805e6d, 0x44805e6d, 0x34801640, 0x34801640}, ++ {0x0000a5c0, 0x49805e72, 0x49805e72, 0x38801660, 0x38801660}, ++ {0x0000a5c4, 0x4e805eb2, 0x4e805eb2, 0x3b801861, 0x3b801861}, ++ {0x0000a5c8, 0x53805f12, 0x53805f12, 0x3e801a81, 0x3e801a81}, ++ {0x0000a5cc, 0x59825eb2, 0x59825eb2, 0x42801a83, 0x42801a83}, ++ {0x0000a5d0, 0x5e825f12, 0x5e825f12, 0x44801c84, 0x44801c84}, ++ {0x0000a5d4, 0x61827f12, 0x61827f12, 0x48801ce3, 0x48801ce3}, ++ {0x0000a5d8, 0x6782bf12, 0x6782bf12, 0x4c801ce5, 0x4c801ce5}, ++ {0x0000a5dc, 0x6b82bf14, 0x6b82bf14, 0x50801ce9, 0x50801ce9}, ++ {0x0000a5e0, 0x6f82bf16, 0x6f82bf16, 0x54801ceb, 0x54801ceb}, ++ {0x0000a5e4, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, ++ {0x0000a5e8, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, ++ {0x0000a5ec, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, ++ {0x0000a5f0, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, ++ {0x0000a5f4, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, ++ {0x0000a5f8, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, ++ {0x0000a5fc, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, + {0x0000a600, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, + {0x0000a604, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, +- {0x0000a608, 0x01804601, 0x01804601, 0x00000000, 0x00000000}, +- {0x0000a60c, 0x01804601, 0x01804601, 0x00000000, 0x00000000}, +- {0x0000a610, 0x01804601, 0x01804601, 0x00000000, 0x00000000}, +- {0x0000a614, 0x01804601, 0x01804601, 0x01404000, 0x01404000}, +- {0x0000a618, 0x01804601, 0x01804601, 0x01404501, 0x01404501}, +- {0x0000a61c, 0x01804601, 0x01804601, 0x02008501, 0x02008501}, +- {0x0000a620, 0x03408d02, 0x03408d02, 0x0280ca03, 0x0280ca03}, +- {0x0000a624, 0x0300cc03, 0x0300cc03, 0x03010c04, 0x03010c04}, +- {0x0000a628, 0x03410d04, 0x03410d04, 0x04014c04, 0x04014c04}, +- {0x0000a62c, 0x03410d04, 0x03410d04, 0x04015005, 0x04015005}, +- {0x0000a630, 0x03410d04, 0x03410d04, 0x04015005, 0x04015005}, +- {0x0000a634, 0x03410d04, 0x03410d04, 0x04015005, 0x04015005}, +- {0x0000a638, 0x03410d04, 0x03410d04, 0x04015005, 0x04015005}, +- {0x0000a63c, 0x03410d04, 0x03410d04, 0x04015005, 0x04015005}, +- {0x0000b2dc, 0x000cfff0, 0x000cfff0, 0x03aaa352, 0x03aaa352}, +- {0x0000b2e0, 0x000f0000, 0x000f0000, 0x03ccc584, 0x03ccc584}, +- {0x0000b2e4, 0x03f00000, 0x03f00000, 0x03f0f800, 0x03f0f800}, ++ {0x0000a608, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x0000a60c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ++ {0x0000a610, 0x00804000, 0x00804000, 0x00000000, 0x00000000}, ++ {0x0000a614, 0x00804201, 0x00804201, 0x01404000, 0x01404000}, ++ {0x0000a618, 0x0280c802, 0x0280c802, 0x01404501, 0x01404501}, ++ {0x0000a61c, 0x0280ca03, 0x0280ca03, 0x02008501, 0x02008501}, ++ {0x0000a620, 0x04c15104, 0x04c15104, 0x0280ca03, 0x0280ca03}, ++ {0x0000a624, 0x04c15305, 0x04c15305, 0x03010c04, 0x03010c04}, ++ {0x0000a628, 0x04c15305, 0x04c15305, 0x04014c04, 0x04014c04}, ++ {0x0000a62c, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, ++ {0x0000a630, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, ++ {0x0000a634, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, ++ {0x0000a638, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, ++ {0x0000a63c, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, ++ {0x0000b2dc, 0x0380c7fc, 0x0380c7fc, 0x03aaa352, 0x03aaa352}, ++ {0x0000b2e0, 0x0000f800, 0x0000f800, 0x03ccc584, 0x03ccc584}, ++ {0x0000b2e4, 0x03ff0000, 0x03ff0000, 0x03f0f800, 0x03f0f800}, + {0x0000b2e8, 0x00000000, 0x00000000, 0x03ff0000, 0x03ff0000}, +- {0x0000c2dc, 0x000cfff0, 0x000cfff0, 0x03aaa352, 0x03aaa352}, +- {0x0000c2e0, 0x000f0000, 0x000f0000, 0x03ccc584, 0x03ccc584}, +- {0x0000c2e4, 0x03f00000, 0x03f00000, 0x03f0f800, 0x03f0f800}, ++ {0x0000c2dc, 0x0380c7fc, 0x0380c7fc, 0x03aaa352, 0x03aaa352}, ++ {0x0000c2e0, 0x0000f800, 0x0000f800, 0x03ccc584, 0x03ccc584}, ++ {0x0000c2e4, 0x03ff0000, 0x03ff0000, 0x03f0f800, 0x03f0f800}, + {0x0000c2e8, 0x00000000, 0x00000000, 0x03ff0000, 0x03ff0000}, +- {0x00016044, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4}, +- {0x00016048, 0x61200001, 0x61200001, 0x66480001, 0x66480001}, +- {0x00016068, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, +- {0x00016444, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4}, +- {0x00016448, 0x61200001, 0x61200001, 0x66480001, 0x66480001}, +- {0x00016468, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, +- {0x00016844, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4}, +- {0x00016848, 0x61200001, 0x61200001, 0x66480001, 0x66480001}, +- {0x00016868, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, ++ {0x00016044, 0x056db2e6, 0x056db2e6, 0x056db2e6, 0x056db2e6}, ++ {0x00016048, 0xae480001, 0xae480001, 0xae480001, 0xae480001}, ++ {0x00016068, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c}, ++ {0x00016444, 0x056db2e6, 0x056db2e6, 0x056db2e6, 0x056db2e6}, ++ {0x00016448, 0xae480001, 0xae480001, 0xae480001, 0xae480001}, ++ {0x00016468, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c}, ++ {0x00016844, 0x056db2e6, 0x056db2e6, 0x056db2e6, 0x056db2e6}, ++ {0x00016848, 0xae480001, 0xae480001, 0xae480001, 0xae480001}, ++ {0x00016868, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c}, + }; + + static const u32 ar9300Modes_high_ob_db_tx_gain_table_2p2[][5] = { diff --git a/package/mac80211/patches/551-ath9k_per_chain_signal_strength.patch b/package/mac80211/patches/551-ath9k_per_chain_signal_strength.patch index 6b4857ba1..75d2a34e5 100644 --- a/package/mac80211/patches/551-ath9k_per_chain_signal_strength.patch +++ b/package/mac80211/patches/551-ath9k_per_chain_signal_strength.patch @@ -1,6 +1,6 @@ --- a/include/net/mac80211.h +++ b/include/net/mac80211.h -@@ -684,6 +684,9 @@ enum mac80211_rx_flags { +@@ -687,6 +687,9 @@ enum mac80211_rx_flags { * @mactime: value in microseconds of the 64-bit Time Synchronization Function * (TSF) timer when the first data symbol (MPDU) arrived at the hardware. * @band: the active band when this frame was received @@ -10,7 +10,7 @@ * @freq: frequency the radio was tuned to when receiving this frame, in MHz * @signal: signal strength when receiving this frame, either in dBm, in dB or * unspecified depending on the hardware capabilities flags -@@ -697,6 +700,10 @@ enum mac80211_rx_flags { +@@ -700,6 +703,10 @@ enum mac80211_rx_flags { struct ieee80211_rx_status { u64 mactime; enum ieee80211_band band; @@ -37,7 +37,7 @@ --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c -@@ -1270,6 +1270,7 @@ ieee80211_rx_h_sta_process(struct ieee80 +@@ -1271,6 +1271,7 @@ ieee80211_rx_h_sta_process(struct ieee80 struct sk_buff *skb = rx->skb; struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; @@ -45,9 +45,9 @@ if (!sta) return RX_CONTINUE; -@@ -1312,6 +1313,19 @@ ieee80211_rx_h_sta_process(struct ieee80 - sta->last_signal = status->signal; - ewma_add(&sta->avg_signal, -status->signal); +@@ -1315,6 +1316,19 @@ ieee80211_rx_h_sta_process(struct ieee80 + ewma_add(&sta->avg_signal, -status->signal); + } + if (status->chains) { + sta->chains = status->chains; @@ -147,9 +147,9 @@ memset(rx_status, 0, sizeof(struct ieee80211_rx_status)); -@@ -1012,6 +1013,20 @@ static int ath9k_rx_skb_preprocess(struc - rx_status->antenna = rx_stats->rs_antenna; - rx_status->flag |= RX_FLAG_MACTIME_MPDU; +@@ -1014,6 +1015,20 @@ static int ath9k_rx_skb_preprocess(struc + if (rx_stats->rs_moreaggr) + rx_status->flag |= RX_FLAG_NO_SIGNAL_VAL; + for (i = 0, j = 0; i < ARRAY_SIZE(rx_stats->rs_rssi_ctl); i++) { + s8 rssi; @@ -168,7 +168,7 @@ return 0; } -@@ -1542,14 +1557,14 @@ static void ath_ant_comb_scan(struct ath +@@ -1544,14 +1559,14 @@ static void ath_ant_comb_scan(struct ath struct ath_ant_comb *antcomb = &sc->ant_comb; int alt_ratio = 0, alt_rssi_avg = 0, main_rssi_avg = 0, curr_alt_set; int curr_main_set; @@ -189,7 +189,7 @@ /* Record packet only when both main_rssi and alt_rssi is positive */ --- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c +++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c -@@ -463,12 +463,12 @@ int ath9k_hw_process_rxdesc_edma(struct +@@ -459,12 +459,12 @@ int ath9k_hw_process_rxdesc_edma(struct /* XXX: Keycache */ rxs->rs_rssi = MS(rxsp->status5, AR_RxRSSICombined); diff --git a/package/mac80211/patches/570-ath9k_fix_initvals.patch b/package/mac80211/patches/570-ath9k_fix_initvals.patch deleted file mode 100644 index 664fa1e89..000000000 --- a/package/mac80211/patches/570-ath9k_fix_initvals.patch +++ /dev/null @@ -1,208 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h -+++ b/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h -@@ -835,108 +835,108 @@ static const u32 ar9300_2p2_baseband_cor - - static const u32 ar9300Modes_high_power_tx_gain_table_2p2[][5] = { - /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ -- {0x0000a2dc, 0x000cfff0, 0x000cfff0, 0x03aaa352, 0x03aaa352}, -- {0x0000a2e0, 0x000f0000, 0x000f0000, 0x03ccc584, 0x03ccc584}, -- {0x0000a2e4, 0x03f00000, 0x03f00000, 0x03f0f800, 0x03f0f800}, -+ {0x0000a2dc, 0x0380c7fc, 0x0380c7fc, 0x03aaa352, 0x03aaa352}, -+ {0x0000a2e0, 0x0000f800, 0x0000f800, 0x03ccc584, 0x03ccc584}, -+ {0x0000a2e4, 0x03ff0000, 0x03ff0000, 0x03f0f800, 0x03f0f800}, - {0x0000a2e8, 0x00000000, 0x00000000, 0x03ff0000, 0x03ff0000}, -- {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d9, 0x000050d9}, -- {0x0000a500, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000a504, 0x06000003, 0x06000003, 0x04000002, 0x04000002}, -- {0x0000a508, 0x0a000020, 0x0a000020, 0x08000004, 0x08000004}, -- {0x0000a50c, 0x10000023, 0x10000023, 0x0b000200, 0x0b000200}, -- {0x0000a510, 0x15000028, 0x15000028, 0x0f000202, 0x0f000202}, -- {0x0000a514, 0x1b00002b, 0x1b00002b, 0x12000400, 0x12000400}, -- {0x0000a518, 0x1f020028, 0x1f020028, 0x16000402, 0x16000402}, -- {0x0000a51c, 0x2502002b, 0x2502002b, 0x19000404, 0x19000404}, -- {0x0000a520, 0x2a04002a, 0x2a04002a, 0x1c000603, 0x1c000603}, -- {0x0000a524, 0x2e06002a, 0x2e06002a, 0x21000a02, 0x21000a02}, -- {0x0000a528, 0x3302202d, 0x3302202d, 0x25000a04, 0x25000a04}, -- {0x0000a52c, 0x3804202c, 0x3804202c, 0x28000a20, 0x28000a20}, -- {0x0000a530, 0x3c06202c, 0x3c06202c, 0x2c000e20, 0x2c000e20}, -- {0x0000a534, 0x4108202d, 0x4108202d, 0x30000e22, 0x30000e22}, -- {0x0000a538, 0x4506402d, 0x4506402d, 0x34000e24, 0x34000e24}, -- {0x0000a53c, 0x4906222d, 0x4906222d, 0x38001640, 0x38001640}, -- {0x0000a540, 0x4d062231, 0x4d062231, 0x3c001660, 0x3c001660}, -- {0x0000a544, 0x50082231, 0x50082231, 0x3f001861, 0x3f001861}, -- {0x0000a548, 0x5608422e, 0x5608422e, 0x43001a81, 0x43001a81}, -- {0x0000a54c, 0x5a08442e, 0x5a08442e, 0x47001a83, 0x47001a83}, -- {0x0000a550, 0x5e0a4431, 0x5e0a4431, 0x4a001c84, 0x4a001c84}, -- {0x0000a554, 0x640a4432, 0x640a4432, 0x4e001ce3, 0x4e001ce3}, -- {0x0000a558, 0x680a4434, 0x680a4434, 0x52001ce5, 0x52001ce5}, -- {0x0000a55c, 0x6c0a6434, 0x6c0a6434, 0x56001ce9, 0x56001ce9}, -- {0x0000a560, 0x6f0a6633, 0x6f0a6633, 0x5a001ceb, 0x5a001ceb}, -- {0x0000a564, 0x730c6634, 0x730c6634, 0x5d001eec, 0x5d001eec}, -- {0x0000a568, 0x730c6634, 0x730c6634, 0x5d001eec, 0x5d001eec}, -- {0x0000a56c, 0x730c6634, 0x730c6634, 0x5d001eec, 0x5d001eec}, -- {0x0000a570, 0x730c6634, 0x730c6634, 0x5d001eec, 0x5d001eec}, -- {0x0000a574, 0x730c6634, 0x730c6634, 0x5d001eec, 0x5d001eec}, -- {0x0000a578, 0x730c6634, 0x730c6634, 0x5d001eec, 0x5d001eec}, -- {0x0000a57c, 0x730c6634, 0x730c6634, 0x5d001eec, 0x5d001eec}, -- {0x0000a580, 0x00800000, 0x00800000, 0x00800000, 0x00800000}, -- {0x0000a584, 0x06800003, 0x06800003, 0x04800002, 0x04800002}, -- {0x0000a588, 0x0a800020, 0x0a800020, 0x08800004, 0x08800004}, -- {0x0000a58c, 0x10800023, 0x10800023, 0x0b800200, 0x0b800200}, -- {0x0000a590, 0x15800028, 0x15800028, 0x0f800202, 0x0f800202}, -- {0x0000a594, 0x1b80002b, 0x1b80002b, 0x12800400, 0x12800400}, -- {0x0000a598, 0x1f820028, 0x1f820028, 0x16800402, 0x16800402}, -- {0x0000a59c, 0x2582002b, 0x2582002b, 0x19800404, 0x19800404}, -- {0x0000a5a0, 0x2a84002a, 0x2a84002a, 0x1c800603, 0x1c800603}, -- {0x0000a5a4, 0x2e86002a, 0x2e86002a, 0x21800a02, 0x21800a02}, -- {0x0000a5a8, 0x3382202d, 0x3382202d, 0x25800a04, 0x25800a04}, -- {0x0000a5ac, 0x3884202c, 0x3884202c, 0x28800a20, 0x28800a20}, -- {0x0000a5b0, 0x3c86202c, 0x3c86202c, 0x2c800e20, 0x2c800e20}, -- {0x0000a5b4, 0x4188202d, 0x4188202d, 0x30800e22, 0x30800e22}, -- {0x0000a5b8, 0x4586402d, 0x4586402d, 0x34800e24, 0x34800e24}, -- {0x0000a5bc, 0x4986222d, 0x4986222d, 0x38801640, 0x38801640}, -- {0x0000a5c0, 0x4d862231, 0x4d862231, 0x3c801660, 0x3c801660}, -- {0x0000a5c4, 0x50882231, 0x50882231, 0x3f801861, 0x3f801861}, -- {0x0000a5c8, 0x5688422e, 0x5688422e, 0x43801a81, 0x43801a81}, -- {0x0000a5cc, 0x5a88442e, 0x5a88442e, 0x47801a83, 0x47801a83}, -- {0x0000a5d0, 0x5e8a4431, 0x5e8a4431, 0x4a801c84, 0x4a801c84}, -- {0x0000a5d4, 0x648a4432, 0x648a4432, 0x4e801ce3, 0x4e801ce3}, -- {0x0000a5d8, 0x688a4434, 0x688a4434, 0x52801ce5, 0x52801ce5}, -- {0x0000a5dc, 0x6c8a6434, 0x6c8a6434, 0x56801ce9, 0x56801ce9}, -- {0x0000a5e0, 0x6f8a6633, 0x6f8a6633, 0x5a801ceb, 0x5a801ceb}, -- {0x0000a5e4, 0x738c6634, 0x738c6634, 0x5d801eec, 0x5d801eec}, -- {0x0000a5e8, 0x738c6634, 0x738c6634, 0x5d801eec, 0x5d801eec}, -- {0x0000a5ec, 0x738c6634, 0x738c6634, 0x5d801eec, 0x5d801eec}, -- {0x0000a5f0, 0x738c6634, 0x738c6634, 0x5d801eec, 0x5d801eec}, -- {0x0000a5f4, 0x738c6634, 0x738c6634, 0x5d801eec, 0x5d801eec}, -- {0x0000a5f8, 0x738c6634, 0x738c6634, 0x5d801eec, 0x5d801eec}, -- {0x0000a5fc, 0x738c6634, 0x738c6634, 0x5d801eec, 0x5d801eec}, -+ {0x0000a410, 0x000050d8, 0x000050d8, 0x000050d9, 0x000050d9}, -+ {0x0000a500, 0x00002220, 0x00002220, 0x00000000, 0x00000000}, -+ {0x0000a504, 0x04002222, 0x04002222, 0x04000002, 0x04000002}, -+ {0x0000a508, 0x09002421, 0x09002421, 0x08000004, 0x08000004}, -+ {0x0000a50c, 0x0d002621, 0x0d002621, 0x0b000200, 0x0b000200}, -+ {0x0000a510, 0x13004620, 0x13004620, 0x0f000202, 0x0f000202}, -+ {0x0000a514, 0x19004a20, 0x19004a20, 0x11000400, 0x11000400}, -+ {0x0000a518, 0x1d004e20, 0x1d004e20, 0x15000402, 0x15000402}, -+ {0x0000a51c, 0x21005420, 0x21005420, 0x19000404, 0x19000404}, -+ {0x0000a520, 0x26005e20, 0x26005e20, 0x1b000603, 0x1b000603}, -+ {0x0000a524, 0x2b005e40, 0x2b005e40, 0x1f000a02, 0x1f000a02}, -+ {0x0000a528, 0x2f005e42, 0x2f005e42, 0x23000a04, 0x23000a04}, -+ {0x0000a52c, 0x33005e44, 0x33005e44, 0x26000a20, 0x26000a20}, -+ {0x0000a530, 0x38005e65, 0x38005e65, 0x2a000e20, 0x2a000e20}, -+ {0x0000a534, 0x3c005e69, 0x3c005e69, 0x2e000e22, 0x2e000e22}, -+ {0x0000a538, 0x40005e6b, 0x40005e6b, 0x31000e24, 0x31000e24}, -+ {0x0000a53c, 0x44005e6d, 0x44005e6d, 0x34001640, 0x34001640}, -+ {0x0000a540, 0x49005e72, 0x49005e72, 0x38001660, 0x38001660}, -+ {0x0000a544, 0x4e005eb2, 0x4e005eb2, 0x3b001861, 0x3b001861}, -+ {0x0000a548, 0x53005f12, 0x53005f12, 0x3e001a81, 0x3e001a81}, -+ {0x0000a54c, 0x59025eb2, 0x59025eb2, 0x42001a83, 0x42001a83}, -+ {0x0000a550, 0x5e025f12, 0x5e025f12, 0x44001c84, 0x44001c84}, -+ {0x0000a554, 0x61027f12, 0x61027f12, 0x48001ce3, 0x48001ce3}, -+ {0x0000a558, 0x6702bf12, 0x6702bf12, 0x4c001ce5, 0x4c001ce5}, -+ {0x0000a55c, 0x6b02bf14, 0x6b02bf14, 0x50001ce9, 0x50001ce9}, -+ {0x0000a560, 0x6f02bf16, 0x6f02bf16, 0x54001ceb, 0x54001ceb}, -+ {0x0000a564, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, -+ {0x0000a568, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, -+ {0x0000a56c, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, -+ {0x0000a570, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, -+ {0x0000a574, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, -+ {0x0000a578, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, -+ {0x0000a57c, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, -+ {0x0000a580, 0x00802220, 0x00802220, 0x00800000, 0x00800000}, -+ {0x0000a584, 0x04802222, 0x04802222, 0x04800002, 0x04800002}, -+ {0x0000a588, 0x09802421, 0x09802421, 0x08800004, 0x08800004}, -+ {0x0000a58c, 0x0d802621, 0x0d802621, 0x0b800200, 0x0b800200}, -+ {0x0000a590, 0x13804620, 0x13804620, 0x0f800202, 0x0f800202}, -+ {0x0000a594, 0x19804a20, 0x19804a20, 0x11800400, 0x11800400}, -+ {0x0000a598, 0x1d804e20, 0x1d804e20, 0x15800402, 0x15800402}, -+ {0x0000a59c, 0x21805420, 0x21805420, 0x19800404, 0x19800404}, -+ {0x0000a5a0, 0x26805e20, 0x26805e20, 0x1b800603, 0x1b800603}, -+ {0x0000a5a4, 0x2b805e40, 0x2b805e40, 0x1f800a02, 0x1f800a02}, -+ {0x0000a5a8, 0x2f805e42, 0x2f805e42, 0x23800a04, 0x23800a04}, -+ {0x0000a5ac, 0x33805e44, 0x33805e44, 0x26800a20, 0x26800a20}, -+ {0x0000a5b0, 0x38805e65, 0x38805e65, 0x2a800e20, 0x2a800e20}, -+ {0x0000a5b4, 0x3c805e69, 0x3c805e69, 0x2e800e22, 0x2e800e22}, -+ {0x0000a5b8, 0x40805e6b, 0x40805e6b, 0x31800e24, 0x31800e24}, -+ {0x0000a5bc, 0x44805e6d, 0x44805e6d, 0x34801640, 0x34801640}, -+ {0x0000a5c0, 0x49805e72, 0x49805e72, 0x38801660, 0x38801660}, -+ {0x0000a5c4, 0x4e805eb2, 0x4e805eb2, 0x3b801861, 0x3b801861}, -+ {0x0000a5c8, 0x53805f12, 0x53805f12, 0x3e801a81, 0x3e801a81}, -+ {0x0000a5cc, 0x59825eb2, 0x59825eb2, 0x42801a83, 0x42801a83}, -+ {0x0000a5d0, 0x5e825f12, 0x5e825f12, 0x44801c84, 0x44801c84}, -+ {0x0000a5d4, 0x61827f12, 0x61827f12, 0x48801ce3, 0x48801ce3}, -+ {0x0000a5d8, 0x6782bf12, 0x6782bf12, 0x4c801ce5, 0x4c801ce5}, -+ {0x0000a5dc, 0x6b82bf14, 0x6b82bf14, 0x50801ce9, 0x50801ce9}, -+ {0x0000a5e0, 0x6f82bf16, 0x6f82bf16, 0x54801ceb, 0x54801ceb}, -+ {0x0000a5e4, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, -+ {0x0000a5e8, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, -+ {0x0000a5ec, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, -+ {0x0000a5f0, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, -+ {0x0000a5f4, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, -+ {0x0000a5f8, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, -+ {0x0000a5fc, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, - {0x0000a600, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, - {0x0000a604, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -- {0x0000a608, 0x01804601, 0x01804601, 0x00000000, 0x00000000}, -- {0x0000a60c, 0x01804601, 0x01804601, 0x00000000, 0x00000000}, -- {0x0000a610, 0x01804601, 0x01804601, 0x00000000, 0x00000000}, -- {0x0000a614, 0x01804601, 0x01804601, 0x01404000, 0x01404000}, -- {0x0000a618, 0x01804601, 0x01804601, 0x01404501, 0x01404501}, -- {0x0000a61c, 0x01804601, 0x01804601, 0x02008501, 0x02008501}, -- {0x0000a620, 0x03408d02, 0x03408d02, 0x0280ca03, 0x0280ca03}, -- {0x0000a624, 0x0300cc03, 0x0300cc03, 0x03010c04, 0x03010c04}, -- {0x0000a628, 0x03410d04, 0x03410d04, 0x04014c04, 0x04014c04}, -- {0x0000a62c, 0x03410d04, 0x03410d04, 0x04015005, 0x04015005}, -- {0x0000a630, 0x03410d04, 0x03410d04, 0x04015005, 0x04015005}, -- {0x0000a634, 0x03410d04, 0x03410d04, 0x04015005, 0x04015005}, -- {0x0000a638, 0x03410d04, 0x03410d04, 0x04015005, 0x04015005}, -- {0x0000a63c, 0x03410d04, 0x03410d04, 0x04015005, 0x04015005}, -- {0x0000b2dc, 0x000cfff0, 0x000cfff0, 0x03aaa352, 0x03aaa352}, -- {0x0000b2e0, 0x000f0000, 0x000f0000, 0x03ccc584, 0x03ccc584}, -- {0x0000b2e4, 0x03f00000, 0x03f00000, 0x03f0f800, 0x03f0f800}, -+ {0x0000a608, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a60c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, -+ {0x0000a610, 0x00804000, 0x00804000, 0x00000000, 0x00000000}, -+ {0x0000a614, 0x00804201, 0x00804201, 0x01404000, 0x01404000}, -+ {0x0000a618, 0x0280c802, 0x0280c802, 0x01404501, 0x01404501}, -+ {0x0000a61c, 0x0280ca03, 0x0280ca03, 0x02008501, 0x02008501}, -+ {0x0000a620, 0x04c15104, 0x04c15104, 0x0280ca03, 0x0280ca03}, -+ {0x0000a624, 0x04c15305, 0x04c15305, 0x03010c04, 0x03010c04}, -+ {0x0000a628, 0x04c15305, 0x04c15305, 0x04014c04, 0x04014c04}, -+ {0x0000a62c, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, -+ {0x0000a630, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, -+ {0x0000a634, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, -+ {0x0000a638, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, -+ {0x0000a63c, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, -+ {0x0000b2dc, 0x0380c7fc, 0x0380c7fc, 0x03aaa352, 0x03aaa352}, -+ {0x0000b2e0, 0x0000f800, 0x0000f800, 0x03ccc584, 0x03ccc584}, -+ {0x0000b2e4, 0x03ff0000, 0x03ff0000, 0x03f0f800, 0x03f0f800}, - {0x0000b2e8, 0x00000000, 0x00000000, 0x03ff0000, 0x03ff0000}, -- {0x0000c2dc, 0x000cfff0, 0x000cfff0, 0x03aaa352, 0x03aaa352}, -- {0x0000c2e0, 0x000f0000, 0x000f0000, 0x03ccc584, 0x03ccc584}, -- {0x0000c2e4, 0x03f00000, 0x03f00000, 0x03f0f800, 0x03f0f800}, -+ {0x0000c2dc, 0x0380c7fc, 0x0380c7fc, 0x03aaa352, 0x03aaa352}, -+ {0x0000c2e0, 0x0000f800, 0x0000f800, 0x03ccc584, 0x03ccc584}, -+ {0x0000c2e4, 0x03ff0000, 0x03ff0000, 0x03f0f800, 0x03f0f800}, - {0x0000c2e8, 0x00000000, 0x00000000, 0x03ff0000, 0x03ff0000}, -- {0x00016044, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4}, -- {0x00016048, 0x61200001, 0x61200001, 0x66480001, 0x66480001}, -- {0x00016068, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, -- {0x00016444, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4}, -- {0x00016448, 0x61200001, 0x61200001, 0x66480001, 0x66480001}, -- {0x00016468, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, -- {0x00016844, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4}, -- {0x00016848, 0x61200001, 0x61200001, 0x66480001, 0x66480001}, -- {0x00016868, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, -+ {0x00016044, 0x056db2e6, 0x056db2e6, 0x056db2e6, 0x056db2e6}, -+ {0x00016048, 0xae480001, 0xae480001, 0xae480001, 0xae480001}, -+ {0x00016068, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c}, -+ {0x00016444, 0x056db2e6, 0x056db2e6, 0x056db2e6, 0x056db2e6}, -+ {0x00016448, 0xae480001, 0xae480001, 0xae480001, 0xae480001}, -+ {0x00016468, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c}, -+ {0x00016844, 0x056db2e6, 0x056db2e6, 0x056db2e6, 0x056db2e6}, -+ {0x00016848, 0xae480001, 0xae480001, 0xae480001, 0xae480001}, -+ {0x00016868, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c}, - }; - - static const u32 ar9300Modes_high_ob_db_tx_gain_table_2p2[][5] = { diff --git a/package/mac80211/patches/571-ath9k_beacon_fix.patch b/package/mac80211/patches/571-ath9k_beacon_fix.patch deleted file mode 100644 index 96b80600f..000000000 --- a/package/mac80211/patches/571-ath9k_beacon_fix.patch +++ /dev/null @@ -1,113 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c -+++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c -@@ -326,7 +326,6 @@ static bool ar9003_hw_get_isr(struct ath - static int ar9003_hw_proc_txdesc(struct ath_hw *ah, void *ds, - struct ath_tx_status *ts) - { -- struct ar9003_txc *txc = (struct ar9003_txc *) ds; - struct ar9003_txs *ads; - u32 status; - -@@ -336,11 +335,7 @@ static int ar9003_hw_proc_txdesc(struct - if ((status & AR_TxDone) == 0) - return -EINPROGRESS; - -- ts->qid = MS(ads->ds_info, AR_TxQcuNum); -- if (!txc || (MS(txc->info, AR_TxQcuNum) == ts->qid)) -- ah->ts_tail = (ah->ts_tail + 1) % ah->ts_size; -- else -- return -ENOENT; -+ ah->ts_tail = (ah->ts_tail + 1) % ah->ts_size; - - if ((MS(ads->ds_info, AR_DescId) != ATHEROS_VENDOR_ID) || - (MS(ads->ds_info, AR_TxRxDesc) != 1)) { -@@ -354,6 +349,7 @@ static int ar9003_hw_proc_txdesc(struct - ts->ts_seqnum = MS(status, AR_SeqNum); - ts->tid = MS(status, AR_TxTid); - -+ ts->qid = MS(ads->ds_info, AR_TxQcuNum); - ts->desc_id = MS(ads->status1, AR_TxDescId); - ts->ts_tstamp = ads->status4; - ts->ts_status = 0; ---- a/drivers/net/wireless/ath/ath9k/beacon.c -+++ b/drivers/net/wireless/ath/ath9k/beacon.c -@@ -91,7 +91,7 @@ static void ath_beacon_setup(struct ath_ - info.txpower = MAX_RATE_POWER; - info.keyix = ATH9K_TXKEYIX_INVALID; - info.keytype = ATH9K_KEY_TYPE_CLEAR; -- info.flags = ATH9K_TXDESC_NOACK; -+ info.flags = ATH9K_TXDESC_NOACK | ATH9K_TXDESC_INTREQ; - - info.buf_addr[0] = bf->bf_buf_addr; - info.buf_len[0] = roundup(skb->len, 4); -@@ -355,7 +355,6 @@ void ath_beacon_tasklet(unsigned long da - struct ath_common *common = ath9k_hw_common(ah); - struct ath_buf *bf = NULL; - struct ieee80211_vif *vif; -- struct ath_tx_status ts; - bool edma = !!(ah->caps.hw_caps & ATH9K_HW_CAP_EDMA); - int slot; - u32 bfaddr, bc = 0; -@@ -462,11 +461,6 @@ void ath_beacon_tasklet(unsigned long da - ath9k_hw_txstart(ah, sc->beacon.beaconq); - - sc->beacon.ast_be_xmit += bc; /* XXX per-vif? */ -- if (edma) { -- spin_lock_bh(&sc->sc_pcu_lock); -- ath9k_hw_txprocdesc(ah, bf->bf_desc, (void *)&ts); -- spin_unlock_bh(&sc->sc_pcu_lock); -- } - } - } - ---- a/drivers/net/wireless/ath/ath9k/mac.c -+++ b/drivers/net/wireless/ath/ath9k/mac.c -@@ -745,7 +745,11 @@ int ath9k_hw_beaconq_setup(struct ath_hw - qi.tqi_aifs = 1; - qi.tqi_cwmin = 0; - qi.tqi_cwmax = 0; -- /* NB: don't enable any interrupts */ -+ -+ if (ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) -+ qi.tqi_qflags = TXQ_FLAG_TXOKINT_ENABLE | -+ TXQ_FLAG_TXERRINT_ENABLE; -+ - return ath9k_hw_setuptxqueue(ah, ATH9K_TX_QUEUE_BEACON, &qi); - } - EXPORT_SYMBOL(ath9k_hw_beaconq_setup); ---- a/drivers/net/wireless/ath/ath9k/main.c -+++ b/drivers/net/wireless/ath/ath9k/main.c -@@ -2303,6 +2303,7 @@ static int ath9k_tx_last_beacon(struct i - struct ath_vif *avp; - struct ath_buf *bf; - struct ath_tx_status ts; -+ bool edma = !!(ah->caps.hw_caps & ATH9K_HW_CAP_EDMA); - int status; - - vif = sc->beacon.bslot[0]; -@@ -2313,7 +2314,7 @@ static int ath9k_tx_last_beacon(struct i - if (!avp->is_bslot_active) - return 0; - -- if (!sc->beacon.tx_processed) { -+ if (!sc->beacon.tx_processed && !edma) { - tasklet_disable(&sc->bcon_tasklet); - - bf = avp->av_bcbuf; ---- a/drivers/net/wireless/ath/ath9k/xmit.c -+++ b/drivers/net/wireless/ath/ath9k/xmit.c -@@ -2317,9 +2317,12 @@ void ath_tx_edma_tasklet(struct ath_soft - break; - } - -- /* Skip beacon completions */ -- if (ts.qid == sc->beacon.beaconq) -+ /* Process beacon completions separately */ -+ if (ts.qid == sc->beacon.beaconq) { -+ sc->beacon.tx_processed = true; -+ sc->beacon.tx_last = !(ts.ts_status & ATH9K_TXERR_MASK); - continue; -+ } - - txq = &sc->tx.txq[ts.qid]; - diff --git a/package/mac80211/patches/580-mac80211_ignore_bad_signal_values.patch b/package/mac80211/patches/580-mac80211_ignore_bad_signal_values.patch deleted file mode 100644 index cfc151629..000000000 --- a/package/mac80211/patches/580-mac80211_ignore_bad_signal_values.patch +++ /dev/null @@ -1,44 +0,0 @@ ---- a/include/net/mac80211.h -+++ b/include/net/mac80211.h -@@ -659,6 +659,8 @@ ieee80211_tx_info_clear_status(struct ie - * @RX_FLAG_HT: HT MCS was used and rate_idx is MCS index - * @RX_FLAG_40MHZ: HT40 (40 MHz) was used - * @RX_FLAG_SHORT_GI: Short guard interval was used -+ * @RX_FLAG_NO_SIGNAL_VAL: The signal strength value is not present. -+ * Valid only for data frames (mainly A-MPDU) - */ - enum mac80211_rx_flags { - RX_FLAG_MMIC_ERROR = 1<<0, -@@ -672,6 +674,7 @@ enum mac80211_rx_flags { - RX_FLAG_HT = 1<<9, - RX_FLAG_40MHZ = 1<<10, - RX_FLAG_SHORT_GI = 1<<11, -+ RX_FLAG_NO_SIGNAL_VAL = 1<<12, - }; - - /** ---- a/net/mac80211/rx.c -+++ b/net/mac80211/rx.c -@@ -177,7 +177,8 @@ ieee80211_add_rx_radiotap_header(struct - pos += 2; - - /* IEEE80211_RADIOTAP_DBM_ANTSIGNAL */ -- if (local->hw.flags & IEEE80211_HW_SIGNAL_DBM) { -+ if (local->hw.flags & IEEE80211_HW_SIGNAL_DBM && -+ !(status->flag & RX_FLAG_NO_SIGNAL_VAL)) { - *pos = status->signal; - rthdr->it_present |= - cpu_to_le32(1 << IEEE80211_RADIOTAP_DBM_ANTSIGNAL); -@@ -1310,8 +1311,10 @@ ieee80211_rx_h_sta_process(struct ieee80 - - sta->rx_fragments++; - sta->rx_bytes += rx->skb->len; -- sta->last_signal = status->signal; -- ewma_add(&sta->avg_signal, -status->signal); -+ if (!(status->flag & RX_FLAG_NO_SIGNAL_VAL)) { -+ sta->last_signal = status->signal; -+ ewma_add(&sta->avg_signal, -status->signal); -+ } - - if (status->chains) { - sta->chains = status->chains; diff --git a/package/mac80211/patches/581-ath9k_report_missing_signal.patch b/package/mac80211/patches/581-ath9k_report_missing_signal.patch deleted file mode 100644 index 7bf12ebd6..000000000 --- a/package/mac80211/patches/581-ath9k_report_missing_signal.patch +++ /dev/null @@ -1,37 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/recv.c -+++ b/drivers/net/wireless/ath/ath9k/recv.c -@@ -954,6 +954,7 @@ static void ath9k_process_rssi(struct at - struct ath_softc *sc = hw->priv; - struct ath_hw *ah = common->ah; - int last_rssi; -+ int rssi = rx_stats->rs_rssi; - - if (!rx_stats->is_mybeacon || - ((ah->opmode != NL80211_IFTYPE_STATION) && -@@ -965,13 +966,12 @@ static void ath9k_process_rssi(struct at - - last_rssi = sc->last_rssi; - if (likely(last_rssi != ATH_RSSI_DUMMY_MARKER)) -- rx_stats->rs_rssi = ATH_EP_RND(last_rssi, -- ATH_RSSI_EP_MULTIPLIER); -- if (rx_stats->rs_rssi < 0) -- rx_stats->rs_rssi = 0; -+ rssi = ATH_EP_RND(last_rssi, ATH_RSSI_EP_MULTIPLIER); -+ if (rssi < 0) -+ rssi = 0; - - /* Update Beacon RSSI, this is used by ANI. */ -- ah->stats.avgbrssi = rx_stats->rs_rssi; -+ ah->stats.avgbrssi = rssi; - } - - /* -@@ -1012,6 +1012,8 @@ static int ath9k_rx_skb_preprocess(struc - rx_status->signal = ah->noise + rx_stats->rs_rssi; - rx_status->antenna = rx_stats->rs_antenna; - rx_status->flag |= RX_FLAG_MACTIME_MPDU; -+ if (rx_stats->rs_moreaggr) -+ rx_status->flag |= RX_FLAG_NO_SIGNAL_VAL; - - for (i = 0, j = 0; i < ARRAY_SIZE(rx_stats->rs_rssi_ctl); i++) { - s8 rssi; -- cgit v1.2.3