Extend hostapd to support setband to driver via QCA vendor command
Commit 844dfeb804
("QCA vendor command support to set band to driver")
added a vendor command to pass 'SET setband' command information to the
driver in wpa_supplicant. Add similar changes to hostapd control
interface.
Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
This commit is contained in:
parent
3c13af5573
commit
38203148e9
2 changed files with 37 additions and 0 deletions
|
@ -1326,6 +1326,33 @@ static void hostapd_disassoc_deny_mac(struct hostapd_data *hapd)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int hostapd_ctrl_iface_set_band(struct hostapd_data *hapd,
|
||||||
|
const char *band)
|
||||||
|
{
|
||||||
|
union wpa_event_data event;
|
||||||
|
enum set_band setband;
|
||||||
|
|
||||||
|
if (os_strcmp(band, "AUTO") == 0)
|
||||||
|
setband = WPA_SETBAND_AUTO;
|
||||||
|
else if (os_strcmp(band, "5G") == 0)
|
||||||
|
setband = WPA_SETBAND_5G;
|
||||||
|
else if (os_strcmp(band, "2G") == 0)
|
||||||
|
setband = WPA_SETBAND_2G;
|
||||||
|
else
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if (hostapd_drv_set_band(hapd, setband) == 0) {
|
||||||
|
os_memset(&event, 0, sizeof(event));
|
||||||
|
event.channel_list_changed.initiator = REGDOM_SET_BY_USER;
|
||||||
|
event.channel_list_changed.type = REGDOM_TYPE_UNKNOWN;
|
||||||
|
wpa_supplicant_event(hapd, EVENT_CHANNEL_LIST_CHANGED, &event);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static int hostapd_ctrl_iface_set(struct hostapd_data *hapd, char *cmd)
|
static int hostapd_ctrl_iface_set(struct hostapd_data *hapd, char *cmd)
|
||||||
{
|
{
|
||||||
char *value;
|
char *value;
|
||||||
|
@ -1409,6 +1436,8 @@ static int hostapd_ctrl_iface_set(struct hostapd_data *hapd, char *cmd)
|
||||||
os_free(hapd->dpp_configurator_params);
|
os_free(hapd->dpp_configurator_params);
|
||||||
hapd->dpp_configurator_params = os_strdup(value);
|
hapd->dpp_configurator_params = os_strdup(value);
|
||||||
#endif /* CONFIG_DPP */
|
#endif /* CONFIG_DPP */
|
||||||
|
} else if (os_strcasecmp(cmd, "setband") == 0) {
|
||||||
|
ret = hostapd_ctrl_iface_set_band(hapd, value);
|
||||||
} else {
|
} else {
|
||||||
ret = hostapd_set_iface(hapd->iconf, hapd->conf, cmd, value);
|
ret = hostapd_set_iface(hapd->iconf, hapd->conf, cmd, value);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
|
|
@ -382,4 +382,12 @@ hostapd_drv_send_external_auth_status(struct hostapd_data *hapd,
|
||||||
return hapd->driver->send_external_auth_status(hapd->drv_priv, params);
|
return hapd->driver->send_external_auth_status(hapd->drv_priv, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
hostapd_drv_set_band(struct hostapd_data *hapd, enum set_band band)
|
||||||
|
{
|
||||||
|
if (!hapd->driver || !hapd->drv_priv || !hapd->driver->set_band)
|
||||||
|
return -1;
|
||||||
|
return hapd->driver->set_band(hapd->drv_priv, band);
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* AP_DRV_OPS */
|
#endif /* AP_DRV_OPS */
|
||||||
|
|
Loading…
Reference in a new issue