 4bd7689d85
			
		
	
	4bd7689d85
	
	
	
		
			
			Reset the connection monitor on all acked frames Signed-off-by: Felix Fietkau <nbd@nbd.name>
		
			
				
	
	
		
			39 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From: Felix Fietkau <nbd@nbd.name>
 | |
| Date: Mon, 21 Sep 2020 17:43:06 +0200
 | |
| Subject: [PATCH] mac80211: fix regression in sta connection monitor
 | |
| 
 | |
| When a frame was acked and probe frames were sent, the connection monitoring
 | |
| needs to be reset, otherwise it will keep probing until the connection is
 | |
| considered dead, even though frames have been acked in the mean time.
 | |
| 
 | |
| Fixes: 9abf4e49830d ("mac80211: optimize station connection monitor")
 | |
| Reported-by: Georgi Valkov <gvalkov@abv.bg>
 | |
| Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | |
| ---
 | |
| 
 | |
| --- a/net/mac80211/status.c
 | |
| +++ b/net/mac80211/status.c
 | |
| @@ -1129,6 +1129,8 @@ void ieee80211_tx_status_ext(struct ieee
 | |
|  	noack_success = !!(info->flags & IEEE80211_TX_STAT_NOACK_TRANSMITTED);
 | |
|  
 | |
|  	if (pubsta) {
 | |
| +		struct ieee80211_sub_if_data *sdata = sta->sdata;
 | |
| +
 | |
|  		if (!acked && !noack_success)
 | |
|  			sta->status_stats.retry_failed++;
 | |
|  		sta->status_stats.retry_count += retry_count;
 | |
| @@ -1143,6 +1145,13 @@ void ieee80211_tx_status_ext(struct ieee
 | |
|  				/* Track when last packet was ACKed */
 | |
|  				sta->status_stats.last_pkt_time = jiffies;
 | |
|  
 | |
| +				/* Reset connection monitor */
 | |
| +				if (sdata->vif.type == NL80211_IFTYPE_STATION &&
 | |
| +				    unlikely(sdata->u.mgd.probe_send_count > 0)) {
 | |
| +					sdata->u.mgd.probe_send_count = 0;
 | |
| +					ieee80211_queue_work(&local->hw, &sdata->work);
 | |
| +				}
 | |
| +
 | |
|  				if (info->status.is_valid_ack_signal) {
 | |
|  					sta->status_stats.last_ack_signal =
 | |
|  							 (s8)info->status.ack_signal;
 |