ath9k_hw: do not lower ANI setting below default on AR913x
When the amount of noise fluctuates strongly, low immunity settings can sometimes disrupt signal detection on AR913x chips. When that happens, no OFDM/CCK errors are reported anymore, and ANI tunes the radio to the lowest immunity settings. Usually rx/tx fails as well in that case. To fix this, keep noise immunity settings at or above ANI default level, which will keep radio parameters at or above INI values. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
		
					parent
					
						
							
								38f3106a9b
							
						
					
				
			
			
				commit
				
					
						ae9c25a182
					
				
			
		
					 1 changed files with 6 additions and 0 deletions
				
			
		| 
						 | 
					@ -155,6 +155,9 @@ static void ath9k_hw_set_ofdm_nil(struct ath_hw *ah, u8 immunityLevel,
 | 
				
			||||||
		ATH9K_ANI_RSSI_THR_LOW,
 | 
							ATH9K_ANI_RSSI_THR_LOW,
 | 
				
			||||||
		ATH9K_ANI_RSSI_THR_HIGH);
 | 
							ATH9K_ANI_RSSI_THR_HIGH);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (AR_SREV_9100(ah) && immunityLevel < ATH9K_ANI_OFDM_DEF_LEVEL)
 | 
				
			||||||
 | 
							immunityLevel = ATH9K_ANI_OFDM_DEF_LEVEL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!scan)
 | 
						if (!scan)
 | 
				
			||||||
		aniState->ofdmNoiseImmunityLevel = immunityLevel;
 | 
							aniState->ofdmNoiseImmunityLevel = immunityLevel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -235,6 +238,9 @@ static void ath9k_hw_set_cck_nil(struct ath_hw *ah, u_int8_t immunityLevel,
 | 
				
			||||||
		BEACON_RSSI(ah), ATH9K_ANI_RSSI_THR_LOW,
 | 
							BEACON_RSSI(ah), ATH9K_ANI_RSSI_THR_LOW,
 | 
				
			||||||
		ATH9K_ANI_RSSI_THR_HIGH);
 | 
							ATH9K_ANI_RSSI_THR_HIGH);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (AR_SREV_9100(ah) && immunityLevel < ATH9K_ANI_CCK_DEF_LEVEL)
 | 
				
			||||||
 | 
							immunityLevel = ATH9K_ANI_CCK_DEF_LEVEL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (ah->opmode == NL80211_IFTYPE_STATION &&
 | 
						if (ah->opmode == NL80211_IFTYPE_STATION &&
 | 
				
			||||||
	    BEACON_RSSI(ah) <= ATH9K_ANI_RSSI_THR_LOW &&
 | 
						    BEACON_RSSI(ah) <= ATH9K_ANI_RSSI_THR_LOW &&
 | 
				
			||||||
	    immunityLevel > ATH9K_ANI_CCK_MAX_LEVEL_LOW_RSSI)
 | 
						    immunityLevel > ATH9K_ANI_CCK_MAX_LEVEL_LOW_RSSI)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue