diff options
Diffstat (limited to 'package/mac80211')
4 files changed, 26 insertions, 19 deletions
| diff --git a/package/mac80211/patches/571-ath9k_fix_dma_stop.patch b/package/mac80211/patches/571-ath9k_fix_dma_stop.patch index 072e657e2..9f7cfa82e 100644 --- a/package/mac80211/patches/571-ath9k_fix_dma_stop.patch +++ b/package/mac80211/patches/571-ath9k_fix_dma_stop.patch @@ -25,7 +25,7 @@   	if (npend)  --- a/drivers/net/wireless/ath/ath9k/mac.c  +++ b/drivers/net/wireless/ath/ath9k/mac.c -@@ -143,6 +143,33 @@ bool ath9k_hw_updatetxtriglevel(struct a +@@ -143,6 +143,34 @@ bool ath9k_hw_updatetxtriglevel(struct a   }   EXPORT_SYMBOL(ath9k_hw_updatetxtriglevel); @@ -40,11 +40,12 @@  +	REG_SET_BIT(ah, AR_D_GBL_IFS_MISC, AR_D_GBL_IFS_MISC_IGNORE_BACKOFF);  +  +	for (q = 0; q < AR_NUM_QCU; q++) { -+		for (i = 1000; i > 0; i--) { ++		for (i = 0; i < 1000; i++) { ++			if (i) ++				udelay(5); ++  +			if (!ath9k_hw_numtxpending(ah, q))  +				break; -+ -+			udelay(5);  +		}  +	}  + diff --git a/package/mac80211/patches/572-ath9k_fix_tx_flush.patch b/package/mac80211/patches/572-ath9k_fix_tx_flush.patch index ddeeb145b..630abc6fd 100644 --- a/package/mac80211/patches/572-ath9k_fix_tx_flush.patch +++ b/package/mac80211/patches/572-ath9k_fix_tx_flush.patch @@ -1,6 +1,6 @@  --- a/drivers/net/wireless/ath/ath9k/main.c  +++ b/drivers/net/wireless/ath/ath9k/main.c -@@ -2149,56 +2149,40 @@ static void ath9k_set_coverage_class(str +@@ -2149,56 +2149,42 @@ static void ath9k_set_coverage_class(str   static void ath9k_flush(struct ieee80211_hw *hw, bool drop)   { @@ -32,6 +32,12 @@  -		}  +	if (drop)  +		timeout = 1; ++ ++	for (j = 0; j < timeout; j++) { ++		int npend = 0; ++ ++		if (j) ++			usleep_range(1000, 2000);  -		if (drop || ath9k_has_pending_frames(sc, txq)) {  -			ath_dbg(common, ATH_DBG_QUEUE, "Drop frames from hw queue:%d\n", @@ -46,8 +52,6 @@  -			ath9k_ps_restore(sc);  -			if (npend)  -				break; -+	for (j = 0; j < timeout; j++) { -+		int npend = 0;  +		for (i = 0; i < ATH9K_NUM_TX_QUEUES; i++) {  +			if (!ATH_TXQ_SETUP(sc, i))  +				continue; @@ -59,8 +63,6 @@  +  +		if (!npend)  +		    goto out; -+ -+		usleep_range(1000, 2000);   	}  -	if (npend) { diff --git a/package/mac80211/patches/573-ath9k_beacon_stop.patch b/package/mac80211/patches/573-ath9k_beacon_stop.patch index 7a9f63fc7..5574d1716 100644 --- a/package/mac80211/patches/573-ath9k_beacon_stop.patch +++ b/package/mac80211/patches/573-ath9k_beacon_stop.patch @@ -1,6 +1,6 @@  --- a/drivers/net/wireless/ath/ath9k/mac.c  +++ b/drivers/net/wireless/ath/ath9k/mac.c -@@ -170,84 +170,30 @@ void ath9k_hw_abort_tx_dma(struct ath_hw +@@ -171,84 +171,31 @@ void ath9k_hw_abort_tx_dma(struct ath_hw   }   EXPORT_SYMBOL(ath9k_hw_abort_tx_dma); @@ -34,11 +34,11 @@   	REG_WRITE(ah, AR_Q_TXD, 1 << q);   	for (wait = wait_time; wait != 0; wait--) { - 		if (ath9k_hw_numtxpending(ah, q) == 0) - 			break; +-		if (ath9k_hw_numtxpending(ah, q) == 0) +-			break;  -		udelay(ATH9K_TIME_QUANTUM);  -	} -  +-  -	if (ath9k_hw_numtxpending(ah, q)) {  -		ath_dbg(common, ATH_DBG_QUEUE,  -			"%s: Num of pending TX Frames %d on Q %d\n", @@ -73,11 +73,13 @@  -					"Failed to stop TX DMA in 100 msec after killing last frame\n");  -				break;  -			} --			udelay(ATH9K_TIME_QUANTUM); ++		if (wait != wait_time) + 			udelay(ATH9K_TIME_QUANTUM);  -		} -- +   -		REG_CLR_BIT(ah, AR_DIAG_SW, AR_DIAG_FORCE_CH_IDLE_HIGH); -+		udelay(ATH9K_TIME_QUANTUM); ++		if (ath9k_hw_numtxpending(ah, q) == 0) ++			break;   	}   	REG_WRITE(ah, AR_Q_TXD, 0); diff --git a/package/mac80211/patches/581-mac80211_chantype_change_fix.patch b/package/mac80211/patches/581-mac80211_chantype_change_fix.patch index 87e277298..b855d1d80 100644 --- a/package/mac80211/patches/581-mac80211_chantype_change_fix.patch +++ b/package/mac80211/patches/581-mac80211_chantype_change_fix.patch @@ -1,10 +1,12 @@  --- a/net/mac80211/chan.c  +++ b/net/mac80211/chan.c -@@ -76,6 +76,7 @@ bool ieee80211_set_channel_type(struct i -  +@@ -77,6 +77,9 @@ bool ieee80211_set_channel_type(struct i   		switch (tmp->vif.bss_conf.channel_type) {   		case NL80211_CHAN_NO_HT: -+			break;   		case NL80211_CHAN_HT20: ++			if (superchan > tmp->vif.bss_conf.channel_type) ++				break; ++   			superchan = tmp->vif.bss_conf.channel_type;   			break; + 		case NL80211_CHAN_HT40PLUS: | 
