Add chan_switch to ctrl interface of wpa_supplicant and hostapd
Add chan_switch to the control interface of wpa_supplicant and hostapd, and also to wpa_cli and hostapd_cli. Signed-hostap: Andrei Otcheretianski <andrei.otcheretianski@intel.com>
This commit is contained in:
parent
bf281c129f
commit
334bf36ac5
8 changed files with 133 additions and 0 deletions
|
@ -1072,6 +1072,18 @@ int ap_switch_channel(struct wpa_supplicant *wpa_s,
|
|||
}
|
||||
|
||||
|
||||
int ap_ctrl_iface_chanswitch(struct wpa_supplicant *wpa_s, const char *pos)
|
||||
{
|
||||
struct csa_settings settings;
|
||||
int ret = hostapd_parse_csa_settings(pos, &settings);
|
||||
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
return ap_switch_channel(wpa_s, &settings);
|
||||
}
|
||||
|
||||
|
||||
void wpas_ap_ch_switch(struct wpa_supplicant *wpa_s, int freq, int ht,
|
||||
int offset)
|
||||
{
|
||||
|
|
|
@ -52,6 +52,7 @@ int wpa_supplicant_ap_mac_addr_filter(struct wpa_supplicant *wpa_s,
|
|||
void wpa_supplicant_ap_pwd_auth_fail(struct wpa_supplicant *wpa_s);
|
||||
int ap_switch_channel(struct wpa_supplicant *wpa_s,
|
||||
struct csa_settings *settings);
|
||||
int ap_ctrl_iface_chanswitch(struct wpa_supplicant *wpa_s, const char *txtaddr);
|
||||
void wpas_ap_ch_switch(struct wpa_supplicant *wpa_s, int freq, int ht,
|
||||
int offset);
|
||||
struct wpabuf * wpas_ap_wps_nfc_config_token(struct wpa_supplicant *wpa_s,
|
||||
|
|
|
@ -5701,6 +5701,9 @@ char * wpa_supplicant_ctrl_iface_process(struct wpa_supplicant *wpa_s,
|
|||
} else if (os_strncmp(buf, "DISASSOCIATE ", 13) == 0) {
|
||||
if (ap_ctrl_iface_sta_disassociate(wpa_s, buf + 13))
|
||||
reply_len = -1;
|
||||
} else if (os_strncmp(buf, "CHAN_SWITCH ", 12) == 0) {
|
||||
if (ap_ctrl_iface_chanswitch(wpa_s, buf + 12))
|
||||
reply_len = -1;
|
||||
#endif /* CONFIG_AP */
|
||||
} else if (os_strcmp(buf, "SUSPEND") == 0) {
|
||||
wpas_notify_suspend(wpa_s->global);
|
||||
|
|
|
@ -1723,6 +1723,13 @@ static int wpa_cli_cmd_disassociate(struct wpa_ctrl *ctrl, int argc,
|
|||
{
|
||||
return wpa_cli_cmd(ctrl, "DISASSOCIATE", 1, argc, argv);
|
||||
}
|
||||
|
||||
static int wpa_cli_cmd_chanswitch(struct wpa_ctrl *ctrl, int argc,
|
||||
char *argv[])
|
||||
{
|
||||
return wpa_cli_cmd(ctrl, "CHAN_SWITCH", 2, argc, argv);
|
||||
}
|
||||
|
||||
#endif /* CONFIG_AP */
|
||||
|
||||
|
||||
|
@ -2704,6 +2711,11 @@ static struct wpa_cli_cmd wpa_cli_commands[] = {
|
|||
{ "disassociate", wpa_cli_cmd_disassociate, NULL,
|
||||
cli_cmd_flag_none,
|
||||
"<addr> = disassociate a station" },
|
||||
{ "chan_switch", wpa_cli_cmd_chanswitch, NULL,
|
||||
cli_cmd_flag_none,
|
||||
"<cs_count> <freq> [sec_channel_offset=] [center_freq1=]"
|
||||
" [center_freq2=] [bandwidth=] [blocktx] [ht|vht]"
|
||||
" = CSA parameters" },
|
||||
#endif /* CONFIG_AP */
|
||||
{ "suspend", wpa_cli_cmd_suspend, NULL, cli_cmd_flag_none,
|
||||
"= notification of suspend/hibernate" },
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue