From: John Crispin <john@phrozen.org>
Date: Fri, 22 Jun 2018 07:43:56 +0000 (+0200)
Subject: mac80211: drop 355-ath9k-limit-retries-for-powersave-response-frames.patch
X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=cac1a4be66f548735878beccc10dc4b1ec7ad364;p=openwrt%2Fstaging%2Fansuel.git

mac80211: drop 355-ath9k-limit-retries-for-powersave-response-frames.patch

several people reported this bug to be causing drop out issues

Signed-off-by: John Crispin <john@phrozen.org>
---

diff --git a/package/kernel/mac80211/patches/090-Revert-rt2800-use-TXOP_BACKOFF-for-probe-frames.patch b/package/kernel/mac80211/patches/090-Revert-rt2800-use-TXOP_BACKOFF-for-probe-frames.patch
index 53d1c8a094..95feffa0ee 100644
--- a/package/kernel/mac80211/patches/090-Revert-rt2800-use-TXOP_BACKOFF-for-probe-frames.patch
+++ b/package/kernel/mac80211/patches/090-Revert-rt2800-use-TXOP_BACKOFF-for-probe-frames.patch
@@ -21,11 +21,9 @@ Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
  drivers/net/wireless/ralink/rt2x00/rt2x00queue.c | 7 +++----
  1 file changed, 3 insertions(+), 4 deletions(-)
 
-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
-index a6884e73d2ab..7ddee980048b 100644
 --- a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
 +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
-@@ -372,16 +372,15 @@ static void rt2x00queue_create_tx_descriptor_ht(struct rt2x00_dev *rt2x00dev,
+@@ -372,16 +372,15 @@ static void rt2x00queue_create_tx_descri
  
  	/*
  	 * Determine IFS values
diff --git a/package/kernel/mac80211/patches/100-remove-cryptoapi-dependencies.patch b/package/kernel/mac80211/patches/100-remove-cryptoapi-dependencies.patch
index aa44149aed..8d7a39a6df 100644
--- a/package/kernel/mac80211/patches/100-remove-cryptoapi-dependencies.patch
+++ b/package/kernel/mac80211/patches/100-remove-cryptoapi-dependencies.patch
@@ -173,7 +173,8 @@
  #define AES_CCM_H
  
 -#include "aead_api.h"
--
++#include <linux/crypto.h>
+ 
 -#define CCM_AAD_LEN	32
 -
 -static inline struct crypto_aead *
@@ -201,8 +202,7 @@
 -			    be16_to_cpup((__be16 *)aad),
 -			    data, data_len, mic);
 -}
-+#include <linux/crypto.h>
- 
+-
 -static inline void ieee80211_aes_key_free(struct crypto_aead *tfm)
 -{
 -	return aead_key_free(tfm);
@@ -338,10 +338,10 @@
  #define AES_GCM_H
  
 -#include "aead_api.h"
--
--#define GCM_AAD_LEN	32
 +#include <linux/crypto.h>
  
+-#define GCM_AAD_LEN	32
+-
 -static inline int ieee80211_aes_gcm_encrypt(struct crypto_aead *tfm,
 -					    u8 *j_0, u8 *aad,  u8 *data,
 -					    size_t data_len, u8 *mic)
diff --git a/package/kernel/mac80211/patches/131-Revert-mac80211-aes-cmac-switch-to-shash-CMAC-driver.patch b/package/kernel/mac80211/patches/131-Revert-mac80211-aes-cmac-switch-to-shash-CMAC-driver.patch
index f2bee9b05c..d138b2c5ac 100644
--- a/package/kernel/mac80211/patches/131-Revert-mac80211-aes-cmac-switch-to-shash-CMAC-driver.patch
+++ b/package/kernel/mac80211/patches/131-Revert-mac80211-aes-cmac-switch-to-shash-CMAC-driver.patch
@@ -20,12 +20,9 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 -void ieee80211_aes_cmac(struct crypto_shash *tfm, const u8 *aad,
 -			const u8 *data, size_t data_len, u8 *mic)
 +void gf_mulx(u8 *pad)
- {
--	SHASH_DESC_ON_STACK(desc, tfm);
--	u8 out[AES_BLOCK_SIZE];
++{
 +	int i, carry;
- 
--	desc->tfm = tfm;
++
 +	carry = pad[0] & 0x80;
 +	for (i = 0; i < AES_BLOCK_SIZE - 1; i++)
 +		pad[i] = (pad[i] << 1) | (pad[i + 1] >> 7);
@@ -33,20 +30,17 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 +	if (carry)
 +		pad[AES_BLOCK_SIZE - 1] ^= 0x87;
 +}
- 
--	crypto_shash_init(desc);
--	crypto_shash_update(desc, aad, AAD_LEN);
--	crypto_shash_update(desc, data, data_len - CMAC_TLEN);
--	crypto_shash_finup(desc, zero, CMAC_TLEN, out);
++
 +void aes_cmac_vector(struct crypto_cipher *tfm, size_t num_elem,
 +		     const u8 *addr[], const size_t *len, u8 *mac,
 +		     size_t mac_len)
-+{
+ {
+-	SHASH_DESC_ON_STACK(desc, tfm);
+-	u8 out[AES_BLOCK_SIZE];
 +	u8 cbc[AES_BLOCK_SIZE], pad[AES_BLOCK_SIZE];
 +	const u8 *pos, *end;
 +	size_t i, e, left, total_len;
- 
--	memcpy(mic, out, CMAC_TLEN);
++
 +	memset(cbc, 0, AES_BLOCK_SIZE);
 +
 +	total_len = 0;
@@ -93,10 +87,14 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 +		pad[i] ^= cbc[i];
 +	crypto_cipher_encrypt_one(tfm, pad, pad);
 +	memcpy(mac, pad, mac_len);
- }
++}
  
--void ieee80211_aes_cmac_256(struct crypto_shash *tfm, const u8 *aad,
-+
+-	desc->tfm = tfm;
+ 
+-	crypto_shash_init(desc);
+-	crypto_shash_update(desc, aad, AAD_LEN);
+-	crypto_shash_update(desc, data, data_len - CMAC_TLEN);
+-	crypto_shash_finup(desc, zero, CMAC_TLEN, out);
 +void ieee80211_aes_cmac(struct crypto_cipher *tfm, const u8 *aad,
 +			const u8 *data, size_t data_len, u8 *mic)
 +{
@@ -111,10 +109,12 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 +	len[1] = data_len - CMAC_TLEN;
 +	addr[2] = zero;
 +	len[2] = CMAC_TLEN;
-+
+ 
+-	memcpy(mic, out, CMAC_TLEN);
 +	aes_cmac_vector(tfm, 3, addr, len, mic, CMAC_TLEN);
-+}
-+
+ }
+ 
+-void ieee80211_aes_cmac_256(struct crypto_shash *tfm, const u8 *aad,
 +void ieee80211_aes_cmac_256(struct crypto_cipher *tfm, const u8 *aad,
  			    const u8 *data, size_t data_len, u8 *mic)
  {
@@ -122,8 +122,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 +	const u8 *addr[3];
 +	size_t len[3];
 +	u8 zero[CMAC_TLEN_256];
- 
--	desc->tfm = tfm;
++
 +	memset(zero, 0, CMAC_TLEN_256);
 +	addr[0] = aad;
 +	len[0] = AAD_LEN;
@@ -132,6 +131,8 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 +	addr[2] = zero;
 +	len[2] = CMAC_TLEN_256;
  
+-	desc->tfm = tfm;
+-
 -	crypto_shash_init(desc);
 -	crypto_shash_update(desc, aad, AAD_LEN);
 -	crypto_shash_update(desc, data, data_len - CMAC_TLEN_256);
diff --git a/package/kernel/mac80211/patches/303-v4.15-0003-brcmfmac-cleanup-brcmf_cfg80211_escan-function.patch b/package/kernel/mac80211/patches/303-v4.15-0003-brcmfmac-cleanup-brcmf_cfg80211_escan-function.patch
index ffd2db7620..b6f3d0c697 100644
--- a/package/kernel/mac80211/patches/303-v4.15-0003-brcmfmac-cleanup-brcmf_cfg80211_escan-function.patch
+++ b/package/kernel/mac80211/patches/303-v4.15-0003-brcmfmac-cleanup-brcmf_cfg80211_escan-function.patch
@@ -88,7 +88,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
 -			spec_scan = true;
 -		} else
 -			brcmf_dbg(SCAN, "Broadcast scan\n");
- 
+-
 -		passive_scan = cfg->active_scan ? 0 : 1;
 -		err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_PASSIVE_SCAN,
 -					    passive_scan);
@@ -105,15 +105,17 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
 -					  ssid_le.SSID);
 -			else
 -				brcmf_err("WLC_SCAN error (%d)\n", err);
-+	cfg->escan_info.run = brcmf_run_escan;
-+	err = brcmf_p2p_scan_prep(wiphy, request, vif);
-+	if (err)
-+		goto scan_out;
- 
+-
 -			brcmf_scan_config_mpc(ifp, 1);
 -			goto scan_out;
 -		}
 -	}
++
++	cfg->escan_info.run = brcmf_run_escan;
++	err = brcmf_p2p_scan_prep(wiphy, request, vif);
++	if (err)
++		goto scan_out;
++
 +	err = brcmf_do_escan(vif->ifp, request);
 +	if (err)
 +		goto scan_out;
diff --git a/package/kernel/mac80211/patches/311-v4.16-0007-brcmfmac-Remove-brcmf_sdiod_request_data.patch b/package/kernel/mac80211/patches/311-v4.16-0007-brcmfmac-Remove-brcmf_sdiod_request_data.patch
index beaa4d3a29..552f9fb443 100644
--- a/package/kernel/mac80211/patches/311-v4.16-0007-brcmfmac-Remove-brcmf_sdiod_request_data.patch
+++ b/package/kernel/mac80211/patches/311-v4.16-0007-brcmfmac-Remove-brcmf_sdiod_request_data.patch
@@ -141,12 +141,12 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
 -		func = SDIO_FUNC_0;
 -	else
 -		func = SDIO_FUNC_1;
- 
+-
 -	do {
 -		/* for retry wait for 1 ms till bus get settled down */
 -		if (retry)
 -			usleep_range(1000, 2000);
--
+ 
 -		ret = brcmf_sdiod_request_data(sdiodev, func, addr, regsz,
 -					       data, true);
 -
diff --git a/package/kernel/mac80211/patches/312-v4.16-0004-brcmfmac-Rename-replace-old-IO-functions-with-simple.patch b/package/kernel/mac80211/patches/312-v4.16-0004-brcmfmac-Rename-replace-old-IO-functions-with-simple.patch
index 7aa3de929f..7c27e17775 100644
--- a/package/kernel/mac80211/patches/312-v4.16-0004-brcmfmac-Rename-replace-old-IO-functions-with-simple.patch
+++ b/package/kernel/mac80211/patches/312-v4.16-0004-brcmfmac-Rename-replace-old-IO-functions-with-simple.patch
@@ -198,14 +198,14 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
  	int retval;
  
 -	retval = brcmf_sdiod_reg_read(sdiodev, addr, 1, &data);
-+	retval = brcmf_sdiod_addrprep(sdiodev, &addr);
- 
+-
 -	if (ret)
 -		*ret = retval;
 -
 -	return data;
 -}
--
++	retval = brcmf_sdiod_addrprep(sdiodev, &addr);
+ 
 -u32 brcmf_sdiod_regrl(struct brcmf_sdio_dev *sdiodev, u32 addr, int *ret)
 -{
 -	u32 data;
diff --git a/package/kernel/mac80211/patches/312-v4.16-0006-brcmfmac-Remove-brcmf_sdiod_addrprep.patch b/package/kernel/mac80211/patches/312-v4.16-0006-brcmfmac-Remove-brcmf_sdiod_addrprep.patch
index 44303fa410..dc598aa471 100644
--- a/package/kernel/mac80211/patches/312-v4.16-0006-brcmfmac-Remove-brcmf_sdiod_addrprep.patch
+++ b/package/kernel/mac80211/patches/312-v4.16-0006-brcmfmac-Remove-brcmf_sdiod_addrprep.patch
@@ -62,10 +62,10 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
 +	if (!err)
  		sdiodev->sbwad = bar0;
 -	}
--
+ 
 -	*addr &= SBSDIO_SB_OFT_ADDR_MASK;
 -	*addr |= SBSDIO_SB_ACCESS_2_4B_FLAG;
- 
+-
 -	return 0;
 +	return err;
  }
@@ -99,14 +99,14 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
 +	retval = brcmf_sdiod_set_backplane_window(sdiodev, addr);
 +	if (retval)
 +		goto out;
-+
-+	addr &= SBSDIO_SB_OFT_ADDR_MASK;
-+	addr |= SBSDIO_SB_ACCESS_2_4B_FLAG;
  
 -	if (!retval)
 -		sdio_writel(sdiodev->func[1], data, addr, &retval);
-+	sdio_writel(sdiodev->func[1], data, addr, &retval);
++	addr &= SBSDIO_SB_OFT_ADDR_MASK;
++	addr |= SBSDIO_SB_ACCESS_2_4B_FLAG;
  
++	sdio_writel(sdiodev->func[1], data, addr, &retval);
++
 +out:
  	if (ret)
  		*ret = retval;
diff --git a/package/kernel/mac80211/patches/351-ath9k_hw-issue-external-reset-for-QCA955x.patch b/package/kernel/mac80211/patches/351-ath9k_hw-issue-external-reset-for-QCA955x.patch
index 34d7d3b1cf..5eb69b898d 100644
--- a/package/kernel/mac80211/patches/351-ath9k_hw-issue-external-reset-for-QCA955x.patch
+++ b/package/kernel/mac80211/patches/351-ath9k_hw-issue-external-reset-for-QCA955x.patch
@@ -29,6 +29,21 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 -		npend = ath9k_hw_numtxpending(ah, i);
 -		if (npend)
 -			break;
+-	}
+-
+-	if (ah->external_reset &&
+-	    (npend || type == ATH9K_RESET_COLD)) {
+-		int reset_err = 0;
+-
+-		ath_dbg(ath9k_hw_common(ah), RESET,
+-			"reset MAC via external reset\n");
+-
+-		reset_err = ah->external_reset();
+-		if (reset_err) {
+-			ath_err(ath9k_hw_common(ah),
+-				"External reset failed, err=%d\n",
+-				reset_err);
+-			return false;
 +	if (type == ATH9K_RESET_COLD)
 +		return true;
 +
@@ -44,47 +59,35 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 +		for (i = 0; i < AR_NUM_QCU; i++) {
 +			if (ath9k_hw_numtxpending(ah, i))
 +				return true;
-+		}
- 	}
- 
--	if (ah->external_reset &&
--	    (npend || type == ATH9K_RESET_COLD)) {
--		int reset_err = 0;
+ 		}
++	}
++
 +	return false;
 +}
- 
--		ath_dbg(ath9k_hw_common(ah), RESET,
--			"reset MAC via external reset\n");
++
 +static bool ath9k_hw_external_reset(struct ath_hw *ah, int type)
 +{
 +	int err;
- 
--		reset_err = ah->external_reset();
--		if (reset_err) {
--			ath_err(ath9k_hw_common(ah),
--				"External reset failed, err=%d\n",
--				reset_err);
--			return false;
--		}
++
 +	if (!ah->external_reset || !ath9k_hw_need_external_reset(ah, type))
 +		return true;
- 
--		REG_WRITE(ah, AR_RTC_RESET, 1);
++
 +	ath_dbg(ath9k_hw_common(ah), RESET,
 +		"reset MAC via external reset\n");
-+
+ 
+-		REG_WRITE(ah, AR_RTC_RESET, 1);
 +	err = ah->external_reset();
 +	if (err) {
 +		ath_err(ath9k_hw_common(ah),
 +			"External reset failed, err=%d\n", err);
 +		return false;
-+	}
-+
+ 	}
+ 
 +	if (AR_SREV_9550(ah)) {
 +		REG_WRITE(ah, AR_RTC_RESET, 0);
 +		udelay(10);
- 	}
- 
++	}
++
 +	REG_WRITE(ah, AR_RTC_RESET, 1);
 +	udelay(10);
 +
diff --git a/package/kernel/mac80211/patches/355-ath9k-limit-retries-for-powersave-response-frames.patch b/package/kernel/mac80211/patches/355-ath9k-limit-retries-for-powersave-response-frames.patch
deleted file mode 100644
index 31825b819c..0000000000
--- a/package/kernel/mac80211/patches/355-ath9k-limit-retries-for-powersave-response-frames.patch
+++ /dev/null
@@ -1,96 +0,0 @@
-From: Felix Fietkau <nbd@openwrt.org>
-Date: Thu, 2 Jul 2015 15:20:56 +0200
-Subject: [PATCH] ath9k: limit retries for powersave response frames
-
-In some cases, the channel might be busy enough that an ath9k AP's
-response to PS-Poll frames might be too slow and the station has already
-gone to sleep. To avoid wasting too much airtime on this, limit the
-number of retries on such frames and ensure that no sample rate gets
-used.
-
-Signed-off-by: Felix Fietkau <nbd@openwrt.org>
----
-
---- a/drivers/net/wireless/ath/ath9k/xmit.c
-+++ b/drivers/net/wireless/ath/ath9k/xmit.c
-@@ -188,10 +188,25 @@ static void ath_send_bar(struct ath_atx_
- }
- 
- static void ath_set_rates(struct ieee80211_vif *vif, struct ieee80211_sta *sta,
--			  struct ath_buf *bf)
-+			  struct ath_buf *bf, bool ps)
- {
-+	struct ieee80211_tx_info *info = IEEE80211_SKB_CB(bf->bf_mpdu);
-+
-+	if (ps) {
-+		/* Clear the first rate to avoid using a sample rate for PS frames */
-+		info->control.rates[0].idx = -1;
-+		info->control.rates[0].count = 0;
-+	}
-+
- 	ieee80211_get_tx_rates(vif, sta, bf->bf_mpdu, bf->rates,
- 			       ARRAY_SIZE(bf->rates));
-+	if (!ps)
-+		return;
-+
-+	if (bf->rates[0].count > 2)
-+		bf->rates[0].count = 2;
-+
-+	bf->rates[1].idx = -1;
- }
- 
- static void ath_txq_skb_done(struct ath_softc *sc, struct ath_txq *txq,
-@@ -1502,7 +1517,7 @@ ath_tx_form_burst(struct ath_softc *sc,
- 			break;
- 		}
- 
--		ath_set_rates(tid->an->vif, tid->an->sta, bf);
-+		ath_set_rates(tid->an->vif, tid->an->sta, bf, false);
- 	} while (1);
- }
- 
-@@ -1532,7 +1547,7 @@ static bool ath_tx_sched_aggr(struct ath
- 		return false;
- 	}
- 
--	ath_set_rates(tid->an->vif, tid->an->sta, bf);
-+	ath_set_rates(tid->an->vif, tid->an->sta, bf, false);
- 	if (aggr)
- 		aggr_len = ath_tx_form_aggr(sc, txq, tid, &bf_q, bf);
- 	else
-@@ -1690,7 +1705,7 @@ void ath9k_release_buffered_frames(struc
- 				break;
- 
- 			list_add_tail(&bf->list, &bf_q);
--			ath_set_rates(tid->an->vif, tid->an->sta, bf);
-+			ath_set_rates(tid->an->vif, tid->an->sta, bf, true);
- 			if (bf_isampdu(bf)) {
- 				ath_tx_addto_baw(sc, tid, bf);
- 				bf->bf_state.bf_type &= ~BUF_AGGR;
-@@ -2390,7 +2405,7 @@ int ath_tx_start(struct ieee80211_hw *hw
- 	if (txctl->paprd)
- 		bf->bf_state.bfs_paprd_timestamp = jiffies;
- 
--	ath_set_rates(vif, sta, bf);
-+	ath_set_rates(vif, sta, bf, ps_resp);
- 	ath_tx_send_normal(sc, txq, tid, skb);
- 
- out:
-@@ -2429,7 +2444,7 @@ void ath_tx_cabq(struct ieee80211_hw *hw
- 			break;
- 
- 		bf->bf_lastbf = bf;
--		ath_set_rates(vif, NULL, bf);
-+		ath_set_rates(vif, NULL, bf, false);
- 		ath_buf_set_rate(sc, bf, &info, fi->framelen, false);
- 		duration += info.rates[0].PktDuration;
- 		if (bf_tail)
-@@ -2946,7 +2961,7 @@ int ath9k_tx99_send(struct ath_softc *sc
- 		return -EINVAL;
- 	}
- 
--	ath_set_rates(sc->tx99_vif, NULL, bf);
-+	ath_set_rates(sc->tx99_vif, NULL, bf, false);
- 
- 	ath9k_hw_set_desc_link(sc->sc_ah, bf->bf_desc, bf->bf_daddr);
- 	ath9k_hw_tx99_start(sc->sc_ah, txctl->txq->axq_qnum);
diff --git a/package/kernel/mac80211/patches/360-ath9k-fix-moredata-bit-in-PS-buffered-frame-release.patch b/package/kernel/mac80211/patches/360-ath9k-fix-moredata-bit-in-PS-buffered-frame-release.patch
index c9c74bb836..d651e6ce30 100644
--- a/package/kernel/mac80211/patches/360-ath9k-fix-moredata-bit-in-PS-buffered-frame-release.patch
+++ b/package/kernel/mac80211/patches/360-ath9k-fix-moredata-bit-in-PS-buffered-frame-release.patch
@@ -7,7 +7,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/drivers/net/wireless/ath/ath9k/xmit.c
 +++ b/drivers/net/wireless/ath/ath9k/xmit.c
-@@ -1674,6 +1674,22 @@ void ath_tx_aggr_wakeup(struct ath_softc
+@@ -1659,6 +1659,22 @@ void ath_tx_aggr_wakeup(struct ath_softc
  	}
  }
  
@@ -30,15 +30,15 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  void ath9k_release_buffered_frames(struct ieee80211_hw *hw,
  				   struct ieee80211_sta *sta,
  				   u16 tids, int nframes,
-@@ -1704,6 +1720,7 @@ void ath9k_release_buffered_frames(struc
+@@ -1689,6 +1705,7 @@ void ath9k_release_buffered_frames(struc
  			if (!bf)
  				break;
  
 +			ath9k_set_moredata(sc, bf, true);
  			list_add_tail(&bf->list, &bf_q);
- 			ath_set_rates(tid->an->vif, tid->an->sta, bf, true);
+ 			ath_set_rates(tid->an->vif, tid->an->sta, bf);
  			if (bf_isampdu(bf)) {
-@@ -1727,6 +1744,9 @@ void ath9k_release_buffered_frames(struc
+@@ -1712,6 +1729,9 @@ void ath9k_release_buffered_frames(struc
  	if (list_empty(&bf_q))
  		return;
  
diff --git a/package/kernel/mac80211/patches/361-ath9k-clear-potentially-stale-EOSP-status-bit-in-int.patch b/package/kernel/mac80211/patches/361-ath9k-clear-potentially-stale-EOSP-status-bit-in-int.patch
index 1893187e8a..319de2a767 100644
--- a/package/kernel/mac80211/patches/361-ath9k-clear-potentially-stale-EOSP-status-bit-in-int.patch
+++ b/package/kernel/mac80211/patches/361-ath9k-clear-potentially-stale-EOSP-status-bit-in-int.patch
@@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/drivers/net/wireless/ath/ath9k/xmit.c
 +++ b/drivers/net/wireless/ath/ath9k/xmit.c
-@@ -984,7 +984,8 @@ ath_tx_get_tid_subframe(struct ath_softc
+@@ -969,7 +969,8 @@ ath_tx_get_tid_subframe(struct ath_softc
  		bf->bf_lastbf = bf;
  
  		tx_info = IEEE80211_SKB_CB(skb);
diff --git a/package/kernel/mac80211/patches/363-ath9k-fix-block-ack-window-tracking-issues.patch b/package/kernel/mac80211/patches/363-ath9k-fix-block-ack-window-tracking-issues.patch
index 59de1dfe1a..e25e92dda9 100644
--- a/package/kernel/mac80211/patches/363-ath9k-fix-block-ack-window-tracking-issues.patch
+++ b/package/kernel/mac80211/patches/363-ath9k-fix-block-ack-window-tracking-issues.patch
@@ -21,7 +21,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  static struct ath_buf *ath_tx_setup_buffer(struct ath_softc *sc,
  					   struct ath_txq *txq,
  					   struct ath_atx_tid *tid,
-@@ -311,7 +311,7 @@ static void ath_tx_flush_tid(struct ath_
+@@ -296,7 +296,7 @@ static void ath_tx_flush_tid(struct ath_
  		}
  
  		if (fi->baw_tracked) {
@@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  			sendbar = true;
  		}
  
-@@ -327,10 +327,15 @@ static void ath_tx_flush_tid(struct ath_
+@@ -312,10 +312,15 @@ static void ath_tx_flush_tid(struct ath_
  }
  
  static void ath_tx_update_baw(struct ath_softc *sc, struct ath_atx_tid *tid,
@@ -47,7 +47,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	index  = ATH_BA_INDEX(tid->seq_start, seqno);
  	cindex = (tid->baw_head + index) & (ATH_TID_MAX_BUFS - 1);
  
-@@ -351,6 +356,9 @@ static void ath_tx_addto_baw(struct ath_
+@@ -336,6 +341,9 @@ static void ath_tx_addto_baw(struct ath_
  	u16 seqno = bf->bf_state.seqno;
  	int index, cindex;
  
@@ -57,7 +57,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	index  = ATH_BA_INDEX(tid->seq_start, seqno);
  	cindex = (tid->baw_head + index) & (ATH_TID_MAX_BUFS - 1);
  	__set_bit(cindex, tid->tx_buf);
-@@ -627,7 +635,7 @@ static void ath_tx_complete_aggr(struct
+@@ -612,7 +620,7 @@ static void ath_tx_complete_aggr(struct
  			 * complete the acked-ones/xretried ones; update
  			 * block-ack window
  			 */
@@ -66,7 +66,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
  			if (rc_update && (acked_cnt == 1 || txfail_cnt == 1)) {
  				memcpy(tx_info->control.rates, rates, sizeof(rates));
-@@ -657,7 +665,7 @@ static void ath_tx_complete_aggr(struct
+@@ -642,7 +650,7 @@ static void ath_tx_complete_aggr(struct
  				 * run out of tx buf.
  				 */
  				if (!tbf) {
@@ -75,7 +75,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
  					ath_tx_complete_buf(sc, bf, txq,
  							    &bf_head, NULL, ts,
-@@ -1026,11 +1034,14 @@ ath_tx_get_tid_subframe(struct ath_softc
+@@ -1011,11 +1019,14 @@ ath_tx_get_tid_subframe(struct ath_softc
  
  			INIT_LIST_HEAD(&bf_head);
  			list_add(&bf->list, &bf_head);
@@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  		return bf;
  	}
  
-@@ -1088,8 +1099,6 @@ ath_tx_form_aggr(struct ath_softc *sc, s
+@@ -1073,8 +1084,6 @@ ath_tx_form_aggr(struct ath_softc *sc, s
  		bf->bf_next = NULL;
  
  		/* link buffers of this frame to the aggregate */
@@ -100,10 +100,10 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  		bf->bf_state.ndelim = ndelim;
  
  		list_add_tail(&bf->list, bf_q);
-@@ -1725,10 +1734,8 @@ void ath9k_release_buffered_frames(struc
+@@ -1710,10 +1719,8 @@ void ath9k_release_buffered_frames(struc
  			ath9k_set_moredata(sc, bf, true);
  			list_add_tail(&bf->list, &bf_q);
- 			ath_set_rates(tid->an->vif, tid->an->sta, bf, true);
+ 			ath_set_rates(tid->an->vif, tid->an->sta, bf);
 -			if (bf_isampdu(bf)) {
 -				ath_tx_addto_baw(sc, tid, bf);
 +			if (bf_isampdu(bf))
diff --git a/package/kernel/mac80211/patches/366-ath9k-fix-more-data-flag-for-buffered-multicast-pack.patch b/package/kernel/mac80211/patches/366-ath9k-fix-more-data-flag-for-buffered-multicast-pack.patch
index 096eb56a2d..0f3120d671 100644
--- a/package/kernel/mac80211/patches/366-ath9k-fix-more-data-flag-for-buffered-multicast-pack.patch
+++ b/package/kernel/mac80211/patches/366-ath9k-fix-more-data-flag-for-buffered-multicast-pack.patch
@@ -12,7 +12,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/drivers/net/wireless/ath/ath9k/xmit.c
 +++ b/drivers/net/wireless/ath/ath9k/xmit.c
-@@ -2451,7 +2451,6 @@ void ath_tx_cabq(struct ieee80211_hw *hw
+@@ -2436,7 +2436,6 @@ void ath_tx_cabq(struct ieee80211_hw *hw
  		.txq = sc->beacon.cabq
  	};
  	struct ath_tx_info info = {};
@@ -20,7 +20,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	struct ath_buf *bf_tail = NULL;
  	struct ath_buf *bf;
  	LIST_HEAD(bf_q);
-@@ -2495,15 +2494,10 @@ void ath_tx_cabq(struct ieee80211_hw *hw
+@@ -2480,15 +2479,10 @@ void ath_tx_cabq(struct ieee80211_hw *hw
  	if (list_empty(&bf_q))
  		return;
  
diff --git a/package/kernel/mac80211/patches/372-mac80211-minstrel-reduce-minstrel_mcs_groups-size.patch b/package/kernel/mac80211/patches/372-mac80211-minstrel-reduce-minstrel_mcs_groups-size.patch
index fa51f1be7e..02a0ca0a52 100644
--- a/package/kernel/mac80211/patches/372-mac80211-minstrel-reduce-minstrel_mcs_groups-size.patch
+++ b/package/kernel/mac80211/patches/372-mac80211-minstrel-reduce-minstrel_mcs_groups-size.patch
@@ -136,72 +136,82 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 -	MCS_GROUP(1, 0, BW_20),
 -	MCS_GROUP(2, 0, BW_20),
 -	MCS_GROUP(3, 0, BW_20),
-+	MCS_GROUP(1, 0, BW_20, 5),
-+	MCS_GROUP(2, 0, BW_20, 4),
-+	MCS_GROUP(3, 0, BW_20, 4),
- 
+-
 -	MCS_GROUP(1, 1, BW_20),
 -	MCS_GROUP(2, 1, BW_20),
 -	MCS_GROUP(3, 1, BW_20),
-+	MCS_GROUP(1, 1, BW_20, 5),
-+	MCS_GROUP(2, 1, BW_20, 4),
-+	MCS_GROUP(3, 1, BW_20, 4),
- 
+-
 -	MCS_GROUP(1, 0, BW_40),
 -	MCS_GROUP(2, 0, BW_40),
 -	MCS_GROUP(3, 0, BW_40),
-+	MCS_GROUP(1, 0, BW_40, 4),
-+	MCS_GROUP(2, 0, BW_40, 4),
-+	MCS_GROUP(3, 0, BW_40, 4),
- 
+-
 -	MCS_GROUP(1, 1, BW_40),
 -	MCS_GROUP(2, 1, BW_40),
 -	MCS_GROUP(3, 1, BW_40),
-+	MCS_GROUP(1, 1, BW_40, 4),
-+	MCS_GROUP(2, 1, BW_40, 4),
-+	MCS_GROUP(3, 1, BW_40, 4),
- 
+-
 -	CCK_GROUP,
-+	CCK_GROUP(8),
- 
+-
 -	VHT_GROUP(1, 0, BW_20),
 -	VHT_GROUP(2, 0, BW_20),
 -	VHT_GROUP(3, 0, BW_20),
-+	VHT_GROUP(1, 0, BW_20, 5),
-+	VHT_GROUP(2, 0, BW_20, 4),
-+	VHT_GROUP(3, 0, BW_20, 4),
- 
+-
 -	VHT_GROUP(1, 1, BW_20),
 -	VHT_GROUP(2, 1, BW_20),
 -	VHT_GROUP(3, 1, BW_20),
-+	VHT_GROUP(1, 1, BW_20, 5),
-+	VHT_GROUP(2, 1, BW_20, 4),
-+	VHT_GROUP(3, 1, BW_20, 4),
- 
+-
 -	VHT_GROUP(1, 0, BW_40),
 -	VHT_GROUP(2, 0, BW_40),
 -	VHT_GROUP(3, 0, BW_40),
-+	VHT_GROUP(1, 0, BW_40, 4),
-+	VHT_GROUP(2, 0, BW_40, 4),
-+	VHT_GROUP(3, 0, BW_40, 4),
- 
+-
 -	VHT_GROUP(1, 1, BW_40),
 -	VHT_GROUP(2, 1, BW_40),
 -	VHT_GROUP(3, 1, BW_40),
-+	VHT_GROUP(1, 1, BW_40, 4),
-+	VHT_GROUP(2, 1, BW_40, 4),
-+	VHT_GROUP(3, 1, BW_40, 4),
- 
+-
 -	VHT_GROUP(1, 0, BW_80),
 -	VHT_GROUP(2, 0, BW_80),
 -	VHT_GROUP(3, 0, BW_80),
-+	VHT_GROUP(1, 0, BW_80, 4),
-+	VHT_GROUP(2, 0, BW_80, 4),
-+	VHT_GROUP(3, 0, BW_80, 4),
- 
+-
 -	VHT_GROUP(1, 1, BW_80),
 -	VHT_GROUP(2, 1, BW_80),
 -	VHT_GROUP(3, 1, BW_80),
++	MCS_GROUP(1, 0, BW_20, 5),
++	MCS_GROUP(2, 0, BW_20, 4),
++	MCS_GROUP(3, 0, BW_20, 4),
++
++	MCS_GROUP(1, 1, BW_20, 5),
++	MCS_GROUP(2, 1, BW_20, 4),
++	MCS_GROUP(3, 1, BW_20, 4),
++
++	MCS_GROUP(1, 0, BW_40, 4),
++	MCS_GROUP(2, 0, BW_40, 4),
++	MCS_GROUP(3, 0, BW_40, 4),
++
++	MCS_GROUP(1, 1, BW_40, 4),
++	MCS_GROUP(2, 1, BW_40, 4),
++	MCS_GROUP(3, 1, BW_40, 4),
++
++	CCK_GROUP(8),
++
++	VHT_GROUP(1, 0, BW_20, 5),
++	VHT_GROUP(2, 0, BW_20, 4),
++	VHT_GROUP(3, 0, BW_20, 4),
++
++	VHT_GROUP(1, 1, BW_20, 5),
++	VHT_GROUP(2, 1, BW_20, 4),
++	VHT_GROUP(3, 1, BW_20, 4),
++
++	VHT_GROUP(1, 0, BW_40, 4),
++	VHT_GROUP(2, 0, BW_40, 4),
++	VHT_GROUP(3, 0, BW_40, 4),
++
++	VHT_GROUP(1, 1, BW_40, 4),
++	VHT_GROUP(2, 1, BW_40, 4),
++	VHT_GROUP(3, 1, BW_40, 4),
++
++	VHT_GROUP(1, 0, BW_80, 4),
++	VHT_GROUP(2, 0, BW_80, 4),
++	VHT_GROUP(3, 0, BW_80, 4),
++
 +	VHT_GROUP(1, 1, BW_80, 4),
 +	VHT_GROUP(2, 1, BW_80, 4),
 +	VHT_GROUP(3, 1, BW_80, 4),
diff --git a/package/kernel/mac80211/patches/374-ath9k-Protect-queue-draining-by-rcu_read_lock.patch b/package/kernel/mac80211/patches/374-ath9k-Protect-queue-draining-by-rcu_read_lock.patch
index 9970574e14..0b599b73ac 100644
--- a/package/kernel/mac80211/patches/374-ath9k-Protect-queue-draining-by-rcu_read_lock.patch
+++ b/package/kernel/mac80211/patches/374-ath9k-Protect-queue-draining-by-rcu_read_lock.patch
@@ -23,7 +23,7 @@ Signed-off-by: Toke Høiland-Jørgensen <toke@toke.dk>
 
 --- a/drivers/net/wireless/ath/ath9k/xmit.c
 +++ b/drivers/net/wireless/ath/ath9k/xmit.c
-@@ -2930,6 +2930,8 @@ void ath_tx_node_cleanup(struct ath_soft
+@@ -2915,6 +2915,8 @@ void ath_tx_node_cleanup(struct ath_soft
  	struct ath_txq *txq;
  	int tidno;
  
@@ -32,7 +32,7 @@ Signed-off-by: Toke Høiland-Jørgensen <toke@toke.dk>
  	for (tidno = 0; tidno < IEEE80211_NUM_TIDS; tidno++) {
  		tid = ath_node_to_tid(an, tidno);
  		txq = tid->txq;
-@@ -2947,6 +2949,8 @@ void ath_tx_node_cleanup(struct ath_soft
+@@ -2932,6 +2934,8 @@ void ath_tx_node_cleanup(struct ath_soft
  		if (!an->sta)
  			break; /* just one multicast ath_atx_tid */
  	}
diff --git a/package/kernel/mac80211/patches/530-ath9k_extra_leds.patch b/package/kernel/mac80211/patches/530-ath9k_extra_leds.patch
index 9084ea7db3..8ea2f79a20 100644
--- a/package/kernel/mac80211/patches/530-ath9k_extra_leds.patch
+++ b/package/kernel/mac80211/patches/530-ath9k_extra_leds.patch
@@ -103,8 +103,7 @@
 +		      GFP_KERNEL);
 +	if (!led)
 +		return -ENOMEM;
- 
--	ath9k_hw_set_gpio(sc->sc_ah, sc->sc_ah->led_pin, val);
++
 +	led->gpio = gpio = (struct gpio_led *) (led + 1);
 +	_name = (char *) (led->gpio + 1);
 +
@@ -117,7 +116,8 @@
 +	ret = ath_add_led(sc, led);
 +	if (unlikely(ret < 0))
 +		kfree(led);
-+
+ 
+-	ath9k_hw_set_gpio(sc->sc_ah, sc->sc_ah->led_pin, val);
 +	return ret;
  }
  
@@ -125,11 +125,11 @@
  {
 -	if (!sc->led_registered)
 -		return;
--
--	ath_led_brightness(&sc->led_cdev, LED_OFF);
--	led_classdev_unregister(&sc->led_cdev);
 +	struct ath_led *led;
  
+-	ath_led_brightness(&sc->led_cdev, LED_OFF);
+-	led_classdev_unregister(&sc->led_cdev);
+-
 -	ath9k_hw_gpio_free(sc->sc_ah, sc->sc_ah->led_pin);
 +	while (!list_empty(&sc->leds)) {
 +		led = list_first_entry(&sc->leds, struct ath_led, list);
diff --git a/package/kernel/mac80211/patches/552-ahb_of.patch b/package/kernel/mac80211/patches/552-ahb_of.patch
index 1af1f44b7f..8c20b00dd4 100644
--- a/package/kernel/mac80211/patches/552-ahb_of.patch
+++ b/package/kernel/mac80211/patches/552-ahb_of.patch
@@ -1,7 +1,5 @@
-Index: backports-2017-11-01/drivers/net/wireless/ath/ath9k/ahb.c
-===================================================================
---- backports-2017-11-01.orig/drivers/net/wireless/ath/ath9k/ahb.c
-+++ backports-2017-11-01/drivers/net/wireless/ath/ath9k/ahb.c
+--- a/drivers/net/wireless/ath/ath9k/ahb.c
++++ b/drivers/net/wireless/ath/ath9k/ahb.c
 @@ -19,7 +19,15 @@
  #include <linux/nl80211.h>
  #include <linux/platform_device.h>
@@ -310,10 +308,8 @@ Index: backports-2017-11-01/drivers/net/wireless/ath/ath9k/ahb.c
  	},
  	.id_table    = ath9k_platform_id_table,
  };
-Index: backports-2017-11-01/drivers/net/wireless/ath/ath9k/ath9k.h
-===================================================================
---- backports-2017-11-01.orig/drivers/net/wireless/ath/ath9k/ath9k.h
-+++ backports-2017-11-01/drivers/net/wireless/ath/ath9k/ath9k.h
+--- a/drivers/net/wireless/ath/ath9k/ath9k.h
++++ b/drivers/net/wireless/ath/ath9k/ath9k.h
 @@ -25,6 +25,7 @@
  #include <linux/time.h>
  #include <linux/hw_random.h>
diff --git a/package/kernel/mac80211/patches/973-ath10k_fix-band_center_freq-handling-for-VHT160-in-recent-firmwares.patch b/package/kernel/mac80211/patches/973-ath10k_fix-band_center_freq-handling-for-VHT160-in-recent-firmwares.patch
index c8f79b815a..657b31f5a8 100644
--- a/package/kernel/mac80211/patches/973-ath10k_fix-band_center_freq-handling-for-VHT160-in-recent-firmwares.patch
+++ b/package/kernel/mac80211/patches/973-ath10k_fix-band_center_freq-handling-for-VHT160-in-recent-firmwares.patch
@@ -10,7 +10,7 @@ consider that this patch will not work with older firmwares anymore. to avoid un
  2 files changed, 8 insertions(+), 10 deletions(-)
 --- a/drivers/net/wireless/ath/ath10k/mac.c
 +++ b/drivers/net/wireless/ath/ath10k/mac.c
-@@ -4416,13 +4416,6 @@ static struct ieee80211_sta_vht_cap ath1
+@@ -4415,13 +4415,6 @@ static struct ieee80211_sta_vht_cap ath1
  		vht_cap.cap |= val;
  	}
  
diff --git a/package/kernel/mac80211/patches/974-ath10k_add-LED-and-GPIO-controlling-support-for-various-chipsets.patch b/package/kernel/mac80211/patches/974-ath10k_add-LED-and-GPIO-controlling-support-for-various-chipsets.patch
index cb9ecb8574..7b17e111ab 100644
--- a/package/kernel/mac80211/patches/974-ath10k_add-LED-and-GPIO-controlling-support-for-various-chipsets.patch
+++ b/package/kernel/mac80211/patches/974-ath10k_add-LED-and-GPIO-controlling-support-for-various-chipsets.patch
@@ -475,7 +475,7 @@ v13:
  static const struct wmi_peer_flags_map wmi_tlv_peer_flags_map = {
 --- a/drivers/net/wireless/ath/ath10k/wmi.c
 +++ b/drivers/net/wireless/ath/ath10k/wmi.c
-@@ -6575,6 +6575,49 @@ ath10k_wmi_op_gen_peer_set_param(struct
+@@ -6580,6 +6580,49 @@ ath10k_wmi_op_gen_peer_set_param(struct
  	return skb;
  }
  
@@ -525,7 +525,7 @@ v13:
  static struct sk_buff *
  ath10k_wmi_op_gen_set_psmode(struct ath10k *ar, u32 vdev_id,
  			     enum wmi_sta_ps_mode psmode)
-@@ -8076,6 +8119,9 @@ static const struct wmi_ops wmi_ops = {
+@@ -8081,6 +8124,9 @@ static const struct wmi_ops wmi_ops = {
  	.fw_stats_fill = ath10k_wmi_main_op_fw_stats_fill,
  	.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
  	.gen_echo = ath10k_wmi_op_gen_echo,
@@ -535,7 +535,7 @@ v13:
  	/* .gen_bcn_tmpl not implemented */
  	/* .gen_prb_tmpl not implemented */
  	/* .gen_p2p_go_bcn_ie not implemented */
-@@ -8146,6 +8192,8 @@ static const struct wmi_ops wmi_10_1_ops
+@@ -8151,6 +8197,8 @@ static const struct wmi_ops wmi_10_1_ops
  	.fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill,
  	.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
  	.gen_echo = ath10k_wmi_op_gen_echo,
@@ -544,7 +544,7 @@ v13:
  	/* .gen_bcn_tmpl not implemented */
  	/* .gen_prb_tmpl not implemented */
  	/* .gen_p2p_go_bcn_ie not implemented */
-@@ -8217,6 +8265,8 @@ static const struct wmi_ops wmi_10_2_ops
+@@ -8222,6 +8270,8 @@ static const struct wmi_ops wmi_10_2_ops
  	.gen_delba_send = ath10k_wmi_op_gen_delba_send,
  	.fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill,
  	.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
@@ -553,7 +553,7 @@ v13:
  	/* .gen_pdev_enable_adaptive_cca not implemented */
  };
  
-@@ -8287,6 +8337,8 @@ static const struct wmi_ops wmi_10_2_4_o
+@@ -8292,6 +8342,8 @@ static const struct wmi_ops wmi_10_2_4_o
  	.gen_pdev_enable_adaptive_cca =
  		ath10k_wmi_op_gen_pdev_enable_adaptive_cca,
  	.get_vdev_subtype = ath10k_wmi_10_2_4_op_get_vdev_subtype,
@@ -562,7 +562,7 @@ v13:
  	/* .gen_bcn_tmpl not implemented */
  	/* .gen_prb_tmpl not implemented */
  	/* .gen_p2p_go_bcn_ie not implemented */
-@@ -8362,6 +8414,8 @@ static const struct wmi_ops wmi_10_4_ops
+@@ -8367,6 +8419,8 @@ static const struct wmi_ops wmi_10_4_ops
  	.gen_pdev_bss_chan_info_req = ath10k_wmi_10_2_op_gen_pdev_bss_chan_info,
  	.gen_echo = ath10k_wmi_op_gen_echo,
  	.gen_pdev_get_tpc_config = ath10k_wmi_10_2_4_op_gen_pdev_get_tpc_config,