27 lines
		
	
	
		
			701 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			27 lines
		
	
	
		
			701 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
| --- a/net80211/ieee80211_scan_ap.c
 | |
| +++ b/net80211/ieee80211_scan_ap.c
 | |
| @@ -595,6 +595,14 @@ ap_end(struct ieee80211_scan_state *ss, 
 | |
|  
 | |
|  	ic = vap->iv_ic;
 | |
|  
 | |
| +	/* if we're already running, switch back to the home channel */
 | |
| +	if ((vap->iv_state == IEEE80211_S_RUN) &&
 | |
| +	    (ic->ic_bsschan != IEEE80211_CHAN_ANYC)) {
 | |
| +		ic->ic_curchan = ic->ic_bsschan;
 | |
| +		ic->ic_set_channel(ic);
 | |
| +		goto out;
 | |
| +	}
 | |
| +
 | |
|  	/* record stats for the channel that was scanned last */
 | |
|  	ic->ic_set_channel(ic);
 | |
|  	spin_lock_irqsave(&channel_lock, sflags);
 | |
| @@ -648,6 +656,8 @@ ap_end(struct ieee80211_scan_state *ss, 
 | |
|  		IEEE80211_SCHEDULE_TQUEUE(&as->as_actiontq);
 | |
|  		res = 1;
 | |
|  	}
 | |
| +
 | |
| +out:
 | |
|  	SCAN_AP_UNLOCK_IRQ(as);
 | |
|  	return res;
 | |
|  }
 | 
