hostapd: enter DFS state if no available channel is found
Previously hostapd would not stop transmitting when a DFS event was detected and no available channel to switch to was available. Disable and re-enable the interface to enter DFS state. This way, TX does not happen until the kernel notifies hostapd about the NOP expiring. Signed-off-by: David Bauer <mail@david-bauer.net>
This commit is contained in:
		| @@ -0,0 +1,37 @@ | ||||
| From cefc52e6b93731c713f1bba1cb5e7e92105b758b Mon Sep 17 00:00:00 2001 | ||||
| From: David Bauer <mail@david-bauer.net> | ||||
| Date: Fri, 3 Jul 2020 23:00:34 +0200 | ||||
| Subject: [PATCH] dfs: enter DFS state if no available channel is found | ||||
|  | ||||
| Previously hostapd would not stop transmitting when a DFS event was | ||||
| detected and no available channel to switch to was available. | ||||
|  | ||||
| Disable and re-enable the interface to enter DFS state. This way, TX | ||||
| does not happen until the kernel notifies hostapd about the NOP | ||||
| expiring. | ||||
|  | ||||
| Signed-off-by: David Bauer <mail@david-bauer.net> | ||||
| --- | ||||
|  src/ap/dfs.c | 11 +++++++++-- | ||||
|  1 file changed, 9 insertions(+), 2 deletions(-) | ||||
|  | ||||
| --- a/src/ap/dfs.c | ||||
| +++ b/src/ap/dfs.c | ||||
| @@ -1066,8 +1066,15 @@ static int hostapd_dfs_start_channel_swi | ||||
|  						  &oper_centr_freq_seg0_idx, | ||||
|  						  &oper_centr_freq_seg1_idx, | ||||
|  						  &skip_radar); | ||||
| -		if (!channel) | ||||
| -			return err; | ||||
| +		if (!channel) { | ||||
| +			/* | ||||
| +			 * Toggle interface state to enter DFS state | ||||
| +			 * until NOP is finished. | ||||
| +			 */ | ||||
| +			hostapd_disable_iface(iface); | ||||
| +			hostapd_enable_iface(iface); | ||||
| +			return 0; | ||||
| +		} | ||||
|  		if (!skip_radar) { | ||||
|  			iface->freq = channel->freq; | ||||
|  			iface->conf->channel = channel->chan; | ||||
		Reference in New Issue
	
	Block a user
	 David Bauer
					David Bauer