diff options
Diffstat (limited to 'package')
| -rw-r--r-- | package/mac80211/patches/570-ath9k_remove_noiseFloor.patch | 52 | ||||
| -rw-r--r-- | package/mac80211/patches/571-ath9k_ani_fix_weak_sig.patch | 30 | 
2 files changed, 82 insertions, 0 deletions
| diff --git a/package/mac80211/patches/570-ath9k_remove_noiseFloor.patch b/package/mac80211/patches/570-ath9k_remove_noiseFloor.patch new file mode 100644 index 000000000..fb17dc566 --- /dev/null +++ b/package/mac80211/patches/570-ath9k_remove_noiseFloor.patch @@ -0,0 +1,52 @@ +--- a/drivers/net/wireless/ath/ath9k/ani.h ++++ b/drivers/net/wireless/ath/ath9k/ani.h +@@ -128,7 +128,6 @@ struct ar5416AniState { + 	u32 listenTime; + 	int32_t rssiThrLow; + 	int32_t rssiThrHigh; +-	u32 noiseFloor; + 	u32 ofdmPhyErrCount; + 	u32 cckPhyErrCount; + 	int16_t pktRssi[2]; +--- a/drivers/net/wireless/ath/ath9k/ani.c ++++ b/drivers/net/wireless/ath/ath9k/ani.c +@@ -266,11 +266,9 @@ static void ath9k_hw_set_ofdm_nil(struct + 	const struct ani_ofdm_level_entry *entry_ofdm; + 	const struct ani_cck_level_entry *entry_cck; +  +-	aniState->noiseFloor = BEACON_RSSI(ah); +- + 	ath_dbg(common, ANI, "**** ofdmlevel %d=>%d, rssi=%d[lo=%d hi=%d]\n", + 		aniState->ofdmNoiseImmunityLevel, +-		immunityLevel, aniState->noiseFloor, ++		immunityLevel, BEACON_RSSI(ah), + 		aniState->rssiThrLow, aniState->rssiThrHigh); +  + 	if (aniState->update_ani) +@@ -292,7 +290,7 @@ static void ath9k_hw_set_ofdm_nil(struct + 				     ATH9K_ANI_FIRSTEP_LEVEL, + 				     entry_ofdm->fir_step_level); +  +-	if ((aniState->noiseFloor >= aniState->rssiThrHigh) && ++	if (BEACON_RSSI(ah) >= aniState->rssiThrHigh && + 	    (!aniState->ofdmWeakSigDetectOff != + 	     entry_ofdm->ofdm_weak_signal_on)) { + 			ath9k_hw_ani_control(ah, +@@ -329,15 +327,14 @@ static void ath9k_hw_set_cck_nil(struct  + 	const struct ani_ofdm_level_entry *entry_ofdm; + 	const struct ani_cck_level_entry *entry_cck; +  +-	aniState->noiseFloor = BEACON_RSSI(ah); + 	ath_dbg(common, ANI, "**** ccklevel %d=>%d, rssi=%d[lo=%d hi=%d]\n", + 		aniState->cckNoiseImmunityLevel, immunityLevel, +-		aniState->noiseFloor, aniState->rssiThrLow, ++		BEACON_RSSI(ah), aniState->rssiThrLow, + 		aniState->rssiThrHigh); +  + 	if ((ah->opmode == NL80211_IFTYPE_STATION || + 	     ah->opmode == NL80211_IFTYPE_ADHOC) && +-	    aniState->noiseFloor <= aniState->rssiThrLow && ++	    BEACON_RSSI(ah) <= aniState->rssiThrLow && + 	    immunityLevel > ATH9K_ANI_CCK_MAX_LEVEL_LOW_RSSI) + 		immunityLevel = ATH9K_ANI_CCK_MAX_LEVEL_LOW_RSSI; +  diff --git a/package/mac80211/patches/571-ath9k_ani_fix_weak_sig.patch b/package/mac80211/patches/571-ath9k_ani_fix_weak_sig.patch new file mode 100644 index 000000000..bfe0f0b46 --- /dev/null +++ b/package/mac80211/patches/571-ath9k_ani_fix_weak_sig.patch @@ -0,0 +1,30 @@ +--- a/drivers/net/wireless/ath/ath9k/ani.c ++++ b/drivers/net/wireless/ath/ath9k/ani.c +@@ -265,6 +265,7 @@ static void ath9k_hw_set_ofdm_nil(struct + 	struct ath_common *common = ath9k_hw_common(ah); + 	const struct ani_ofdm_level_entry *entry_ofdm; + 	const struct ani_cck_level_entry *entry_cck; ++	bool weak_sig; +  + 	ath_dbg(common, ANI, "**** ofdmlevel %d=>%d, rssi=%d[lo=%d hi=%d]\n", + 		aniState->ofdmNoiseImmunityLevel, +@@ -290,13 +291,15 @@ static void ath9k_hw_set_ofdm_nil(struct + 				     ATH9K_ANI_FIRSTEP_LEVEL, + 				     entry_ofdm->fir_step_level); +  +-	if (BEACON_RSSI(ah) >= aniState->rssiThrHigh && +-	    (!aniState->ofdmWeakSigDetectOff != +-	     entry_ofdm->ofdm_weak_signal_on)) { ++	weak_sig = entry_ofdm->ofdm_weak_signal_on; ++	if (ah->opmode == NL80211_IFTYPE_STATION && ++	    BEACON_RSSI(ah) >= aniState->rssiThrHigh) ++		weak_sig = true; ++ ++	if (!aniState->ofdmWeakSigDetectOff != weak_sig) + 			ath9k_hw_ani_control(ah, + 				ATH9K_ANI_OFDM_WEAK_SIGNAL_DETECTION, + 				entry_ofdm->ofdm_weak_signal_on); +-	} + } +  + static void ath9k_hw_ani_ofdm_err_trigger(struct ath_hw *ah) | 
