P2P: Make the default p2p_find delay value configurable
This makes the p2p_find default delay value configurable as p2p_search_delay parameter through the configuration file (and through control interface "SET p2p_search_delay <value>" on the P2P management interface. This parameter controls the number milliseconds of extra delay that is added between search iterations when there is a concurrent operation in progress. This can be used, e.g., p2p_search_delay=100 to make p2p_find friendlier to concurrent operations by avoiding it from taking 100% of the radio resources. The default value is the previous default, i.e., 500 ms. Smaller values can be used to find peers more quickly at the cost of larger effect to concurrent operations while a larger value leaves more time for the concurrent operations at the cost of making device discovery take longer time. The optional p2p_find delay argument can still be used to override the search delay for each search operation. Since the P2P_CONCURRENT_SEARCH_DELAY macro is not used anymore, the driver specific build parameter for bcmdhd from Android.mk is also removed. Similar configuration can now be achieved with p2p_search_delay=0 in the p2p0 interface configuration file. Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
parent
3dacd3ece7
commit
d3b204694a
9 changed files with 45 additions and 13 deletions
|
@ -38,10 +38,6 @@ ifdef CONFIG_NO_ROAMING
|
||||||
L_CFLAGS += -DCONFIG_NO_ROAMING
|
L_CFLAGS += -DCONFIG_NO_ROAMING
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(BOARD_WLAN_DEVICE), bcmdhd)
|
|
||||||
L_CFLAGS += -DP2P_CONCURRENT_SEARCH_DELAY=0
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Use Android specific directory for control interface sockets
|
# Use Android specific directory for control interface sockets
|
||||||
L_CFLAGS += -DCONFIG_CTRL_IFACE_CLIENT_DIR=\"/data/misc/wifi/sockets\"
|
L_CFLAGS += -DCONFIG_CTRL_IFACE_CLIENT_DIR=\"/data/misc/wifi/sockets\"
|
||||||
L_CFLAGS += -DCONFIG_CTRL_IFACE_DIR=\"/data/system/wpa_supplicant\"
|
L_CFLAGS += -DCONFIG_CTRL_IFACE_DIR=\"/data/system/wpa_supplicant\"
|
||||||
|
|
|
@ -554,6 +554,13 @@ set country <two character country code>
|
||||||
|
|
||||||
Set country code (this is included in some P2P messages).
|
Set country code (this is included in some P2P messages).
|
||||||
|
|
||||||
|
set p2p_search_delay <delay>
|
||||||
|
|
||||||
|
Set p2p_search_delay which adds extra delay in milliseconds between
|
||||||
|
concurrent search iterations to make p2p_find friendlier to concurrent
|
||||||
|
operations by avoiding it from taking 100% of radio resources. The
|
||||||
|
default value is 500 ms.
|
||||||
|
|
||||||
Status
|
Status
|
||||||
|
|
||||||
p2p_peers [discovered]
|
p2p_peers [discovered]
|
||||||
|
|
|
@ -3266,6 +3266,7 @@ struct wpa_config * wpa_config_alloc_empty(const char *ctrl_interface,
|
||||||
config->wmm_ac_params[1] = ac_bk;
|
config->wmm_ac_params[1] = ac_bk;
|
||||||
config->wmm_ac_params[2] = ac_vi;
|
config->wmm_ac_params[2] = ac_vi;
|
||||||
config->wmm_ac_params[3] = ac_vo;
|
config->wmm_ac_params[3] = ac_vo;
|
||||||
|
config->p2p_search_delay = DEFAULT_P2P_SEARCH_DELAY;
|
||||||
|
|
||||||
if (ctrl_interface)
|
if (ctrl_interface)
|
||||||
config->ctrl_interface = os_strdup(ctrl_interface);
|
config->ctrl_interface = os_strdup(ctrl_interface);
|
||||||
|
@ -3884,6 +3885,7 @@ static const struct global_parse_data global_fields[] = {
|
||||||
{ INT(tdls_external_control), 0},
|
{ INT(tdls_external_control), 0},
|
||||||
{ STR(osu_dir), 0 },
|
{ STR(osu_dir), 0 },
|
||||||
{ STR(wowlan_triggers), 0 },
|
{ STR(wowlan_triggers), 0 },
|
||||||
|
{ INT(p2p_search_delay), 0},
|
||||||
};
|
};
|
||||||
|
|
||||||
#undef FUNC
|
#undef FUNC
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
#define DEFAULT_MAX_NUM_STA 128
|
#define DEFAULT_MAX_NUM_STA 128
|
||||||
#define DEFAULT_ACCESS_NETWORK_TYPE 15
|
#define DEFAULT_ACCESS_NETWORK_TYPE 15
|
||||||
#define DEFAULT_SCAN_CUR_FREQ 0
|
#define DEFAULT_SCAN_CUR_FREQ 0
|
||||||
|
#define DEFAULT_P2P_SEARCH_DELAY 500
|
||||||
|
|
||||||
#include "config_ssid.h"
|
#include "config_ssid.h"
|
||||||
#include "wps/wps.h"
|
#include "wps/wps.h"
|
||||||
|
@ -1029,6 +1030,16 @@ struct wpa_config {
|
||||||
* If set, these wowlan triggers will be configured.
|
* If set, these wowlan triggers will be configured.
|
||||||
*/
|
*/
|
||||||
char *wowlan_triggers;
|
char *wowlan_triggers;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* p2p_search_delay - Extra delay between concurrent search iterations
|
||||||
|
*
|
||||||
|
* Add extra delay (in milliseconds) between search iterations when
|
||||||
|
* there is a concurrent operation to make p2p_find friendlier to
|
||||||
|
* concurrent operations by avoiding it from taking 100% of radio
|
||||||
|
* resources.
|
||||||
|
*/
|
||||||
|
unsigned int p2p_search_delay;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1165,6 +1165,10 @@ static void wpa_config_write_global(FILE *f, struct wpa_config *config)
|
||||||
|
|
||||||
if (config->bgscan)
|
if (config->bgscan)
|
||||||
fprintf(f, "bgscan=\"%s\"\n", config->bgscan);
|
fprintf(f, "bgscan=\"%s\"\n", config->bgscan);
|
||||||
|
|
||||||
|
if (config->p2p_search_delay != DEFAULT_P2P_SEARCH_DELAY)
|
||||||
|
fprintf(f, "p2p_search_delay=%u\n",
|
||||||
|
config->p2p_search_delay);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* CONFIG_NO_CONFIG_WRITE */
|
#endif /* CONFIG_NO_CONFIG_WRITE */
|
||||||
|
|
|
@ -834,6 +834,11 @@ dbus_bool_t wpas_dbus_getter_p2p_device_config(DBusMessageIter *iter,
|
||||||
!dbus_message_iter_close_container(iter, &variant_iter))
|
!dbus_message_iter_close_container(iter, &variant_iter))
|
||||||
goto err_no_mem;
|
goto err_no_mem;
|
||||||
|
|
||||||
|
/* P2P Search Delay */
|
||||||
|
if (!wpa_dbus_dict_append_uint32(&dict_iter, "p2p_search_delay",
|
||||||
|
wpa_s->conf->p2p_search_delay))
|
||||||
|
goto err_no_mem;
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
err_no_mem:
|
err_no_mem:
|
||||||
|
@ -982,6 +987,9 @@ dbus_bool_t wpas_dbus_setter_p2p_device_config(DBusMessageIter *iter,
|
||||||
else if (os_strcmp(entry.key, "NoGroupIface") == 0 &&
|
else if (os_strcmp(entry.key, "NoGroupIface") == 0 &&
|
||||||
entry.type == DBUS_TYPE_BOOLEAN)
|
entry.type == DBUS_TYPE_BOOLEAN)
|
||||||
wpa_s->conf->p2p_no_group_iface = entry.bool_value;
|
wpa_s->conf->p2p_no_group_iface = entry.bool_value;
|
||||||
|
else if (os_strcmp(entry.key, "p2p_search_delay") == 0 &&
|
||||||
|
entry.type == DBUS_TYPE_UINT32)
|
||||||
|
wpa_s->conf->p2p_search_delay = entry.uint32_value;
|
||||||
else
|
else
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
|
|
|
@ -82,10 +82,6 @@
|
||||||
#define P2P_MAX_INITIAL_CONN_WAIT_GO_REINVOKE 15
|
#define P2P_MAX_INITIAL_CONN_WAIT_GO_REINVOKE 15
|
||||||
#endif /* P2P_MAX_INITIAL_CONN_WAIT_GO_REINVOKE */
|
#endif /* P2P_MAX_INITIAL_CONN_WAIT_GO_REINVOKE */
|
||||||
|
|
||||||
#ifndef P2P_CONCURRENT_SEARCH_DELAY
|
|
||||||
#define P2P_CONCURRENT_SEARCH_DELAY 500
|
|
||||||
#endif /* P2P_CONCURRENT_SEARCH_DELAY */
|
|
||||||
|
|
||||||
#define P2P_MGMT_DEVICE_PREFIX "p2p-dev-"
|
#define P2P_MGMT_DEVICE_PREFIX "p2p-dev-"
|
||||||
|
|
||||||
enum p2p_group_removal_reason {
|
enum p2p_group_removal_reason {
|
||||||
|
@ -6764,8 +6760,8 @@ unsigned int wpas_p2p_search_delay(struct wpa_supplicant *wpa_s)
|
||||||
if (wpa_s->wpa_state > WPA_SCANNING) {
|
if (wpa_s->wpa_state > WPA_SCANNING) {
|
||||||
wpa_dbg(wpa_s, MSG_DEBUG, "P2P: Use %u ms search delay due to "
|
wpa_dbg(wpa_s, MSG_DEBUG, "P2P: Use %u ms search delay due to "
|
||||||
"concurrent operation",
|
"concurrent operation",
|
||||||
P2P_CONCURRENT_SEARCH_DELAY);
|
wpa_s->conf->p2p_search_delay);
|
||||||
return P2P_CONCURRENT_SEARCH_DELAY;
|
return wpa_s->conf->p2p_search_delay;
|
||||||
}
|
}
|
||||||
|
|
||||||
dl_list_for_each(ifs, &wpa_s->radio->ifaces, struct wpa_supplicant,
|
dl_list_for_each(ifs, &wpa_s->radio->ifaces, struct wpa_supplicant,
|
||||||
|
@ -6774,8 +6770,9 @@ unsigned int wpas_p2p_search_delay(struct wpa_supplicant *wpa_s)
|
||||||
wpa_dbg(wpa_s, MSG_DEBUG, "P2P: Use %u ms search "
|
wpa_dbg(wpa_s, MSG_DEBUG, "P2P: Use %u ms search "
|
||||||
"delay due to concurrent operation on "
|
"delay due to concurrent operation on "
|
||||||
"interface %s",
|
"interface %s",
|
||||||
P2P_CONCURRENT_SEARCH_DELAY, ifs->ifname);
|
wpa_s->conf->p2p_search_delay,
|
||||||
return P2P_CONCURRENT_SEARCH_DELAY;
|
ifs->ifname);
|
||||||
|
return wpa_s->conf->p2p_search_delay;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -628,7 +628,7 @@ static char ** wpa_cli_complete_set(const char *str, int pos)
|
||||||
"p2p_go_max_inactivity", "auto_interworking", "okc", "pmf",
|
"p2p_go_max_inactivity", "auto_interworking", "okc", "pmf",
|
||||||
"sae_groups", "dtim_period", "beacon_int", "ap_vendor_elements",
|
"sae_groups", "dtim_period", "beacon_int", "ap_vendor_elements",
|
||||||
"ignore_old_scan_res", "freq_list", "external_sim",
|
"ignore_old_scan_res", "freq_list", "external_sim",
|
||||||
"tdls_external_control"
|
"tdls_external_control", "p2p_search_delay"
|
||||||
};
|
};
|
||||||
int i, num_fields = ARRAY_SIZE(fields);
|
int i, num_fields = ARRAY_SIZE(fields);
|
||||||
|
|
||||||
|
|
|
@ -269,6 +269,13 @@ fast_reauth=1
|
||||||
# inactive stations.
|
# inactive stations.
|
||||||
#p2p_go_max_inactivity=300
|
#p2p_go_max_inactivity=300
|
||||||
|
|
||||||
|
# Extra delay between concurrent P2P search iterations
|
||||||
|
#
|
||||||
|
# This value adds extra delay in milliseconds between concurrent search
|
||||||
|
# iterations to make p2p_find friendlier to concurrent operations by avoiding
|
||||||
|
# it from taking 100% of radio resources. The default value is 500 ms.
|
||||||
|
#p2p_search_delay=500
|
||||||
|
|
||||||
# Opportunistic Key Caching (also known as Proactive Key Caching) default
|
# Opportunistic Key Caching (also known as Proactive Key Caching) default
|
||||||
# This parameter can be used to set the default behavior for the
|
# This parameter can be used to set the default behavior for the
|
||||||
# proactive_key_caching parameter. By default, OKC is disabled unless enabled
|
# proactive_key_caching parameter. By default, OKC is disabled unless enabled
|
||||||
|
|
Loading…
Reference in a new issue