DFS: Allow wpa_supplicant AP mode to use non-offloaded DFS
This extends the hostapd-like setup of DFS-in-userspace for wpa_supplicant AP mode operations. Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
parent
02e42ab75b
commit
6e9023ea49
2 changed files with 12 additions and 1 deletions
|
@ -4301,7 +4301,8 @@ static int wpa_driver_nl80211_ap(struct wpa_driver_nl80211_data *drv,
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nl80211_set_channel(drv->first_bss, ¶ms->freq, 0)) {
|
if (params->freq.freq &&
|
||||||
|
nl80211_set_channel(drv->first_bss, ¶ms->freq, 0)) {
|
||||||
if (old_mode != nlmode)
|
if (old_mode != nlmode)
|
||||||
wpa_driver_nl80211_set_mode(drv->first_bss, old_mode);
|
wpa_driver_nl80211_set_mode(drv->first_bss, old_mode);
|
||||||
nl80211_remove_monitor_interface(drv);
|
nl80211_remove_monitor_interface(drv);
|
||||||
|
|
|
@ -166,6 +166,13 @@ static int wpa_supplicant_conf_ap(struct wpa_supplicant *wpa_s,
|
||||||
|
|
||||||
wpa_supplicant_conf_ap_ht(wpa_s, ssid, conf);
|
wpa_supplicant_conf_ap_ht(wpa_s, ssid, conf);
|
||||||
|
|
||||||
|
if (ieee80211_is_dfs(ssid->frequency) && wpa_s->conf->country[0]) {
|
||||||
|
conf->ieee80211h = 1;
|
||||||
|
conf->ieee80211d = 1;
|
||||||
|
conf->country[0] = wpa_s->conf->country[0];
|
||||||
|
conf->country[1] = wpa_s->conf->country[1];
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_P2P
|
#ifdef CONFIG_P2P
|
||||||
if (conf->hw_mode == HOSTAPD_MODE_IEEE80211G &&
|
if (conf->hw_mode == HOSTAPD_MODE_IEEE80211G &&
|
||||||
(ssid->mode == WPAS_MODE_P2P_GO ||
|
(ssid->mode == WPAS_MODE_P2P_GO ||
|
||||||
|
@ -567,6 +574,9 @@ int wpa_supplicant_create_ap(struct wpa_supplicant *wpa_s,
|
||||||
else
|
else
|
||||||
params.uapsd = -1;
|
params.uapsd = -1;
|
||||||
|
|
||||||
|
if (ieee80211_is_dfs(params.freq.freq))
|
||||||
|
params.freq.freq = 0; /* set channel after CAC */
|
||||||
|
|
||||||
if (wpa_drv_associate(wpa_s, ¶ms) < 0) {
|
if (wpa_drv_associate(wpa_s, ¶ms) < 0) {
|
||||||
wpa_msg(wpa_s, MSG_INFO, "Failed to start AP functionality");
|
wpa_msg(wpa_s, MSG_INFO, "Failed to start AP functionality");
|
||||||
return -1;
|
return -1;
|
||||||
|
|
Loading…
Reference in a new issue