mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-31 14:04:26 -04:00 
			
		
		
		
	ath9k: fix rate control fallback rate selection - improves throughput and link stability
SVN-Revision: 19716
This commit is contained in:
		
							parent
							
								
									b3caca3677
								
							
						
					
					
						commit
						b47efaaf4d
					
				
							
								
								
									
										55
									
								
								package/mac80211/patches/530-ath9k_rc_fallback.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								package/mac80211/patches/530-ath9k_rc_fallback.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,55 @@ | ||||
| --- a/drivers/net/wireless/ath/ath9k/rc.c
 | ||||
| +++ b/drivers/net/wireless/ath/ath9k/rc.c
 | ||||
| @@ -668,7 +668,7 @@ static void ath_get_rate(void *priv, str
 | ||||
|  	struct ieee80211_tx_rate *rates = tx_info->control.rates; | ||||
|  	struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; | ||||
|  	__le16 fc = hdr->frame_control; | ||||
| -	u8 try_per_rate, i = 0, rix, nrix;
 | ||||
| +	u8 try_per_rate, i = 0, rix;
 | ||||
|  	int is_probe = 0; | ||||
|   | ||||
|  	if (rate_control_send_low(sta, priv_sta, txrc)) | ||||
| @@ -688,26 +688,25 @@ static void ath_get_rate(void *priv, str
 | ||||
|   | ||||
|  	rate_table = sc->cur_rate_table; | ||||
|  	rix = ath_rc_get_highest_rix(sc, ath_rc_priv, rate_table, &is_probe); | ||||
| -	nrix = rix;
 | ||||
|   | ||||
|  	if (is_probe) { | ||||
|  		/* set one try for probe rates. For the | ||||
|  		 * probes don't enable rts */ | ||||
|  		ath_rc_rate_set_series(rate_table, &rates[i++], txrc, | ||||
| -				       1, nrix, 0);
 | ||||
| +				       1, rix, 0);
 | ||||
|   | ||||
|  		/* Get the next tried/allowed rate. No RTS for the next series | ||||
|  		 * after the probe rate | ||||
|  		 */ | ||||
| -		ath_rc_get_lower_rix(rate_table, ath_rc_priv, rix, &nrix);
 | ||||
| +		ath_rc_get_lower_rix(rate_table, ath_rc_priv, rix, &rix);
 | ||||
|  		ath_rc_rate_set_series(rate_table, &rates[i++], txrc, | ||||
| -				       try_per_rate, nrix, 0);
 | ||||
| +				       try_per_rate, rix, 0);
 | ||||
|   | ||||
|  		tx_info->flags |= IEEE80211_TX_CTL_RATE_CTRL_PROBE; | ||||
|  	} else { | ||||
|  		/* Set the choosen rate. No RTS for first series entry. */ | ||||
|  		ath_rc_rate_set_series(rate_table, &rates[i++], txrc, | ||||
| -				       try_per_rate, nrix, 0);
 | ||||
| +				       try_per_rate, rix, 0);
 | ||||
|  	} | ||||
|   | ||||
|  	/* Fill in the other rates for multirate retry */ | ||||
| @@ -716,10 +715,10 @@ static void ath_get_rate(void *priv, str
 | ||||
|  		if (i + 1 == 4) | ||||
|  			try_per_rate = 8; | ||||
|   | ||||
| -		ath_rc_get_lower_rix(rate_table, ath_rc_priv, rix, &nrix);
 | ||||
| +		ath_rc_get_lower_rix(rate_table, ath_rc_priv, rix, &rix);
 | ||||
|  		/* All other rates in the series have RTS enabled */ | ||||
|  		ath_rc_rate_set_series(rate_table, &rates[i], txrc, | ||||
| -				       try_per_rate, nrix, 1);
 | ||||
| +				       try_per_rate, rix, 1);
 | ||||
|  	} | ||||
|   | ||||
|  	/* | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user