Add p2p_go_max_inactivity config option
This enables setting a different max inactivity timeout for P2P GO. This timeout is used to detect inactive clients. In some scenarios it may be useful to have control over this and set a shorter timeout than the default 300s. For example when running STA and P2P GO interfaces concurrently, the STA interface may perform scans which may cause the GO to miss a disassoc / deauth frames from a client and keep assuming that the client is connected until the inactivity detection kicks in. 300 secs is a bit too long for such scenarios and creates a bad user experience. Signed-hostap: Eyal Shapira <eyal@wizery.com>
This commit is contained in:
parent
03a6a2e972
commit
462a7439e1
5 changed files with 23 additions and 1 deletions
|
@ -2558,6 +2558,7 @@ struct wpa_config * wpa_config_alloc_empty(const char *ctrl_interface,
|
||||||
config->fast_reauth = DEFAULT_FAST_REAUTH;
|
config->fast_reauth = DEFAULT_FAST_REAUTH;
|
||||||
config->p2p_go_intent = DEFAULT_P2P_GO_INTENT;
|
config->p2p_go_intent = DEFAULT_P2P_GO_INTENT;
|
||||||
config->p2p_intra_bss = DEFAULT_P2P_INTRA_BSS;
|
config->p2p_intra_bss = DEFAULT_P2P_INTRA_BSS;
|
||||||
|
config->p2p_go_max_inactivity = DEFAULT_P2P_GO_MAX_INACTIVITY;
|
||||||
config->bss_max_count = DEFAULT_BSS_MAX_COUNT;
|
config->bss_max_count = DEFAULT_BSS_MAX_COUNT;
|
||||||
config->bss_expiration_age = DEFAULT_BSS_EXPIRATION_AGE;
|
config->bss_expiration_age = DEFAULT_BSS_EXPIRATION_AGE;
|
||||||
config->bss_expiration_scan_count = DEFAULT_BSS_EXPIRATION_SCAN_COUNT;
|
config->bss_expiration_scan_count = DEFAULT_BSS_EXPIRATION_SCAN_COUNT;
|
||||||
|
@ -2984,7 +2985,8 @@ static const struct global_parse_data global_fields[] = {
|
||||||
{ BIN(wps_nfc_dh_pubkey), 0 },
|
{ BIN(wps_nfc_dh_pubkey), 0 },
|
||||||
{ BIN(wps_nfc_dh_privkey), 0 },
|
{ BIN(wps_nfc_dh_privkey), 0 },
|
||||||
{ BIN(wps_nfc_dev_pw), 0 },
|
{ BIN(wps_nfc_dev_pw), 0 },
|
||||||
{ STR(ext_password_backend), CFG_CHANGED_EXT_PW_BACKEND }
|
{ STR(ext_password_backend), CFG_CHANGED_EXT_PW_BACKEND },
|
||||||
|
{ INT(p2p_go_max_inactivity), 0 },
|
||||||
};
|
};
|
||||||
|
|
||||||
#undef FUNC
|
#undef FUNC
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
#define DEFAULT_FAST_REAUTH 1
|
#define DEFAULT_FAST_REAUTH 1
|
||||||
#define DEFAULT_P2P_GO_INTENT 7
|
#define DEFAULT_P2P_GO_INTENT 7
|
||||||
#define DEFAULT_P2P_INTRA_BSS 1
|
#define DEFAULT_P2P_INTRA_BSS 1
|
||||||
|
#define DEFAULT_P2P_GO_MAX_INACTIVITY (5 * 60)
|
||||||
#define DEFAULT_BSS_MAX_COUNT 200
|
#define DEFAULT_BSS_MAX_COUNT 200
|
||||||
#define DEFAULT_BSS_EXPIRATION_AGE 180
|
#define DEFAULT_BSS_EXPIRATION_AGE 180
|
||||||
#define DEFAULT_BSS_EXPIRATION_SCAN_COUNT 2
|
#define DEFAULT_BSS_EXPIRATION_SCAN_COUNT 2
|
||||||
|
@ -723,6 +724,15 @@ struct wpa_config {
|
||||||
* format: <backend name>[:<optional backend parameters>]
|
* format: <backend name>[:<optional backend parameters>]
|
||||||
*/
|
*/
|
||||||
char *ext_password_backend;
|
char *ext_password_backend;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* p2p_go_max_inactivity - Timeout in seconds to detect STA inactivity
|
||||||
|
*
|
||||||
|
* This timeout value is used in P2P GO mode to clean up
|
||||||
|
* inactive stations.
|
||||||
|
* By default: 300 seconds.
|
||||||
|
*/
|
||||||
|
int p2p_go_max_inactivity;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -881,6 +881,9 @@ static void wpa_config_write_global(FILE *f, struct wpa_config *config)
|
||||||
if (config->ext_password_backend)
|
if (config->ext_password_backend)
|
||||||
fprintf(f, "ext_password_backend=%s\n",
|
fprintf(f, "ext_password_backend=%s\n",
|
||||||
config->ext_password_backend);
|
config->ext_password_backend);
|
||||||
|
if (config->p2p_go_max_inactivity != DEFAULT_P2P_GO_MAX_INACTIVITY)
|
||||||
|
fprintf(f, "p2p_go_max_inactivity=%d\n",
|
||||||
|
config->p2p_go_max_inactivity);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* CONFIG_NO_CONFIG_WRITE */
|
#endif /* CONFIG_NO_CONFIG_WRITE */
|
||||||
|
|
|
@ -807,6 +807,7 @@ static void wpas_start_wps_go(struct wpa_supplicant *wpa_s,
|
||||||
ssid->proto = WPA_PROTO_RSN;
|
ssid->proto = WPA_PROTO_RSN;
|
||||||
ssid->pairwise_cipher = WPA_CIPHER_CCMP;
|
ssid->pairwise_cipher = WPA_CIPHER_CCMP;
|
||||||
ssid->passphrase = os_strdup(params->passphrase);
|
ssid->passphrase = os_strdup(params->passphrase);
|
||||||
|
ssid->ap_max_inactivity = wpa_s->parent->conf->p2p_go_max_inactivity;
|
||||||
|
|
||||||
wpa_s->ap_configured_cb = p2p_go_configured;
|
wpa_s->ap_configured_cb = p2p_go_configured;
|
||||||
wpa_s->ap_configured_cb_ctx = wpa_s;
|
wpa_s->ap_configured_cb_ctx = wpa_s;
|
||||||
|
|
|
@ -259,6 +259,12 @@ fast_reauth=1
|
||||||
# format: <backend name>[:<optional backend parameters>]
|
# format: <backend name>[:<optional backend parameters>]
|
||||||
#ext_password_backend=test:pw1=password|pw2=testing
|
#ext_password_backend=test:pw1=password|pw2=testing
|
||||||
|
|
||||||
|
# Timeout in seconds to detect STA inactivity (default: 300 seconds)
|
||||||
|
#
|
||||||
|
# This timeout value is used in P2P GO mode to clean up
|
||||||
|
# inactive stations.
|
||||||
|
#p2p_go_max_inactivity=300
|
||||||
|
|
||||||
|
|
||||||
# Interworking (IEEE 802.11u)
|
# Interworking (IEEE 802.11u)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue