aboutsummaryrefslogtreecommitdiffstats
path: root/package/network/services/hostapd/patches/450-reload_freq_change.patch
blob: bf48fe41fbc44412b0202f2fbd7f810579640309 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
--- a/src/ap/hostapd.c
+++ b/src/ap/hostapd.c
@@ -140,6 +140,24 @@ int hostapd_reload_config(struct hostapd
 	oldconf = hapd->iconf;
 	iface->conf = newconf;
 
+	hostapd_select_hw_mode(iface);
+	iface->freq = hostapd_hw_get_freq(hapd, newconf->channel);
+
+	if (hostapd_set_freq(hapd, newconf->hw_mode, iface->freq,
+			     newconf->channel,
+			     newconf->ieee80211n,
+			     newconf->ieee80211ac,
+			     newconf->secondary_channel,
+			     newconf->vht_oper_chwidth,
+			     newconf->vht_oper_centr_freq_seg0_idx,
+			     newconf->vht_oper_centr_freq_seg1_idx)) {
+		wpa_printf(MSG_ERROR, "Could not set channel for "
+			   "kernel driver");
+	}
+
+	if (iface->current_mode)
+		hostapd_prepare_rates(iface, iface->current_mode);
+
 	for (j = 0; j < iface->num_bss; j++) {
 		hapd = iface->bss[j];
 		hapd->iconf = newconf;