P2P: Allow immediate group idle timeout configuration
A special value p2p_group_idle=-1 can now be used to configure the P2P group idle mechanism to terminate a P2P client group immediately on any disconnection after the completion of the initial 4-way handshake. Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
parent
361cdf3400
commit
5f482d55fd
2 changed files with 13 additions and 3 deletions
|
@ -526,9 +526,12 @@ struct wpa_config {
|
||||||
* state indefinitely until explicitly removed. As a P2P client, the
|
* state indefinitely until explicitly removed. As a P2P client, the
|
||||||
* maximum idle time of P2P_MAX_CLIENT_IDLE seconds is enforced, i.e.,
|
* maximum idle time of P2P_MAX_CLIENT_IDLE seconds is enforced, i.e.,
|
||||||
* this parameter is mainly meant for GO use and for P2P client, it can
|
* this parameter is mainly meant for GO use and for P2P client, it can
|
||||||
* only be used to reduce the default timeout to smaller value.
|
* only be used to reduce the default timeout to smaller value. A
|
||||||
|
* special value -1 can be used to configure immediate removal of the
|
||||||
|
* group for P2P client role on any disconnection after the data
|
||||||
|
* connection has been established.
|
||||||
*/
|
*/
|
||||||
unsigned int p2p_group_idle;
|
int p2p_group_idle;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* bss_max_count - Maximum number of BSS entries to keep in memory
|
* bss_max_count - Maximum number of BSS entries to keep in memory
|
||||||
|
|
|
@ -4124,7 +4124,7 @@ static void wpas_p2p_group_idle_timeout(void *eloop_ctx, void *timeout_ctx)
|
||||||
|
|
||||||
static void wpas_p2p_set_group_idle_timeout(struct wpa_supplicant *wpa_s)
|
static void wpas_p2p_set_group_idle_timeout(struct wpa_supplicant *wpa_s)
|
||||||
{
|
{
|
||||||
unsigned int timeout;
|
int timeout;
|
||||||
|
|
||||||
if (eloop_cancel_timeout(wpas_p2p_group_idle_timeout, wpa_s, NULL) > 0)
|
if (eloop_cancel_timeout(wpas_p2p_group_idle_timeout, wpa_s, NULL) > 0)
|
||||||
wpa_printf(MSG_DEBUG, "P2P: Cancelled P2P group idle timeout");
|
wpa_printf(MSG_DEBUG, "P2P: Cancelled P2P group idle timeout");
|
||||||
|
@ -4140,6 +4140,13 @@ static void wpas_p2p_set_group_idle_timeout(struct wpa_supplicant *wpa_s)
|
||||||
if (timeout == 0)
|
if (timeout == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (timeout < 0) {
|
||||||
|
if (wpa_s->current_ssid->mode == WPAS_MODE_INFRA)
|
||||||
|
timeout = 0; /* special client mode no-timeout */
|
||||||
|
else
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (wpa_s->p2p_in_provisioning) {
|
if (wpa_s->p2p_in_provisioning) {
|
||||||
/*
|
/*
|
||||||
* Use the normal group formation timeout during the
|
* Use the normal group formation timeout during the
|
||||||
|
|
Loading…
Reference in a new issue