From 92d856f50a71d0376e491644894507458bc26050 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Tue, 5 Jul 2016 10:45:17 +0200 Subject: ath9k: add beacon related stability fixes Signed-off-by: Felix Fietkau --- ...e-some-defined-constants-to-decrease-verb.patch | 137 +++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 package/kernel/mac80211/patches/316-ath9k-Remove-some-defined-constants-to-decrease-verb.patch (limited to 'package/kernel/mac80211/patches/316-ath9k-Remove-some-defined-constants-to-decrease-verb.patch') diff --git a/package/kernel/mac80211/patches/316-ath9k-Remove-some-defined-constants-to-decrease-verb.patch b/package/kernel/mac80211/patches/316-ath9k-Remove-some-defined-constants-to-decrease-verb.patch new file mode 100644 index 0000000000..36aaa1030e --- /dev/null +++ b/package/kernel/mac80211/patches/316-ath9k-Remove-some-defined-constants-to-decrease-verb.patch @@ -0,0 +1,137 @@ +From: Benjamin Berg +Date: Mon, 4 Jul 2016 14:37:24 +0200 +Subject: [PATCH] ath9k: Remove some #defined constants to decrease + verbosity + +The removed ATH9K_SLOT_TIME_X constants simply map the value in microseconds +to the same integer. These constants were not used consistently, so fix the +inconsistency issue by replacing all occurances with the integer equivalent. + +Signed-off-by: Benjamin Berg +--- + +--- a/drivers/net/wireless/ath/ath9k/beacon.c ++++ b/drivers/net/wireless/ath/ath9k/beacon.c +@@ -50,7 +50,7 @@ static void ath9k_beaconq_config(struct + txq = sc->tx.txq_map[IEEE80211_AC_BE]; + ath9k_hw_get_txq_props(ah, txq->axq_qnum, &qi_be); + qi.tqi_aifs = qi_be.tqi_aifs; +- if (ah->slottime == ATH9K_SLOT_TIME_20) ++ if (ah->slottime == 20) + qi.tqi_cwmin = 2*qi_be.tqi_cwmin; + else + qi.tqi_cwmin = 4*qi_be.tqi_cwmin; +--- a/drivers/net/wireless/ath/ath9k/dynack.c ++++ b/drivers/net/wireless/ath/ath9k/dynack.c +@@ -280,7 +280,7 @@ EXPORT_SYMBOL(ath_dynack_sample_ack_ts); + void ath_dynack_node_init(struct ath_hw *ah, struct ath_node *an) + { + /* ackto = slottime + sifs + air delay */ +- u32 ackto = ATH9K_SLOT_TIME_9 + 16 + 64; ++ u32 ackto = 9 + 16 + 64; + struct ath_dynack *da = &ah->dynack; + + an->ackto = ackto; +@@ -315,7 +315,7 @@ EXPORT_SYMBOL(ath_dynack_node_deinit); + void ath_dynack_reset(struct ath_hw *ah) + { + /* ackto = slottime + sifs + air delay */ +- u32 ackto = ATH9K_SLOT_TIME_9 + 16 + 64; ++ u32 ackto = 9 + 16 + 64; + struct ath_dynack *da = &ah->dynack; + + da->lto = jiffies; +--- a/drivers/net/wireless/ath/ath9k/htc_drv_beacon.c ++++ b/drivers/net/wireless/ath/ath9k/htc_drv_beacon.c +@@ -45,7 +45,7 @@ void ath9k_htc_beaconq_config(struct ath + * Long slot time : 2x cwmin + * Short slot time : 4x cwmin + */ +- if (ah->slottime == ATH9K_SLOT_TIME_20) ++ if (ah->slottime == 20) + qi.tqi_cwmin = 2*qi_be.tqi_cwmin; + else + qi.tqi_cwmin = 4*qi_be.tqi_cwmin; +--- a/drivers/net/wireless/ath/ath9k/htc_drv_init.c ++++ b/drivers/net/wireless/ath/ath9k/htc_drv_init.c +@@ -678,7 +678,7 @@ static int ath9k_init_priv(struct ath9k_ + + for (i = 0; i < ATH9K_HTC_MAX_BCN_VIF; i++) + priv->beacon.bslot[i] = NULL; +- priv->beacon.slottime = ATH9K_SLOT_TIME_9; ++ priv->beacon.slottime = 9; + + ath9k_cmn_init_channels_rates(common); + ath9k_cmn_init_crypto(ah); +--- a/drivers/net/wireless/ath/ath9k/hw.c ++++ b/drivers/net/wireless/ath/ath9k/hw.c +@@ -454,7 +454,7 @@ static void ath9k_hw_init_defaults(struc + if (AR_SREV_9100(ah)) + ah->sta_id1_defaults |= AR_STA_ID1_AR9100_BA_FIX; + +- ah->slottime = ATH9K_SLOT_TIME_9; ++ ah->slottime = 9; + ah->globaltxtimeout = (u32) -1; + ah->power_mode = ATH9K_PM_UNDEFINED; + ah->htc_reset_init = true; +--- a/drivers/net/wireless/ath/ath9k/init.c ++++ b/drivers/net/wireless/ath/ath9k/init.c +@@ -372,7 +372,7 @@ static void ath9k_init_misc(struct ath_s + + common->last_rssi = ATH_RSSI_DUMMY_MARKER; + memcpy(common->bssidmask, ath_bcast_mac, ETH_ALEN); +- sc->beacon.slottime = ATH9K_SLOT_TIME_9; ++ sc->beacon.slottime = 9; + + for (i = 0; i < ARRAY_SIZE(sc->beacon.bslot); i++) + sc->beacon.bslot[i] = NULL; +--- a/drivers/net/wireless/ath/ath9k/mac.h ++++ b/drivers/net/wireless/ath/ath9k/mac.h +@@ -65,10 +65,6 @@ + #define INIT_SSH_RETRY 32 + #define INIT_SLG_RETRY 32 + +-#define ATH9K_SLOT_TIME_6 6 +-#define ATH9K_SLOT_TIME_9 9 +-#define ATH9K_SLOT_TIME_20 20 +- + #define ATH9K_TXERR_XRETRY 0x01 + #define ATH9K_TXERR_FILT 0x02 + #define ATH9K_TXERR_FIFO 0x04 +--- a/drivers/net/wireless/ath/ath9k/main.c ++++ b/drivers/net/wireless/ath/ath9k/main.c +@@ -926,7 +926,7 @@ static void ath9k_vif_iter(struct ath9k_ + } + + if (!vif->bss_conf.use_short_slot) +- iter_data->slottime = ATH9K_SLOT_TIME_20; ++ iter_data->slottime = 20; + + switch (vif->type) { + case NL80211_IFTYPE_AP: +@@ -999,7 +999,7 @@ void ath9k_calculate_iter_data(struct at + */ + memset(iter_data, 0, sizeof(*iter_data)); + eth_broadcast_addr(iter_data->mask); +- iter_data->slottime = ATH9K_SLOT_TIME_9; ++ iter_data->slottime = 9; + + list_for_each_entry(avp, &ctx->vifs, list) + ath9k_vif_iter(iter_data, avp->vif->addr, avp->vif); +@@ -1061,7 +1061,7 @@ static void ath9k_set_offchannel_state(s + ah->opmode = vif->type; + ah->imask &= ~ATH9K_INT_SWBA; + ah->imask &= ~ATH9K_INT_TSFOOR; +- ah->slottime = ATH9K_SLOT_TIME_9; ++ ah->slottime = 9; + + ath_hw_setbssidmask(common); + ath9k_hw_setopmode(ah); +@@ -1788,6 +1788,7 @@ static void ath9k_bss_info_changed(struc + slottime = 9; + else + slottime = 20; ++ + if (vif->type == NL80211_IFTYPE_AP) { + /* + * Defer update, so that connected stations can adjust -- cgit v1.2.3