P2P: Allow discoverable interval for p2p_find to be configured
The new P2P_SET parameter disc_int can now be used to configure discoverable interval for p2p_find operations. The format of the command for setting the values is "P2P_SET disc_int <minDiscoverableInterval> <maxDiscoverableInterval> <max TUs for discoverable interval>". The first two parameters are given in units of 100 TUs (102.4 ms). The third parameter can be used to further limit the interval into a specific TU amount. If it is set to -1, no such additional limitation is enforced. It should be noted that the P2P specification describes the random Listen state interval to be in units of 100 TUs, so setting the max TU value to anything else than -1 is not compliant with the specification and should not be used in normal cases. The default parameters can be set with "P2P_SET disc_int 1 3 -1". Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
parent
23270cd8f5
commit
96beff11d1
5 changed files with 93 additions and 5 deletions
|
@ -4223,6 +4223,30 @@ static int p2p_ctrl_set(struct wpa_supplicant *wpa_s, char *cmd)
|
|||
if (os_strcmp(cmd, "disallow_freq") == 0)
|
||||
return p2p_ctrl_disallow_freq(wpa_s, param);
|
||||
|
||||
if (os_strcmp(cmd, "disc_int") == 0) {
|
||||
int min_disc_int, max_disc_int, max_disc_tu;
|
||||
char *pos;
|
||||
|
||||
pos = param;
|
||||
|
||||
min_disc_int = atoi(pos);
|
||||
pos = os_strchr(pos, ' ');
|
||||
if (pos == NULL)
|
||||
return -1;
|
||||
*pos++ = '\0';
|
||||
|
||||
max_disc_int = atoi(pos);
|
||||
pos = os_strchr(pos, ' ');
|
||||
if (pos == NULL)
|
||||
return -1;
|
||||
*pos++ = '\0';
|
||||
|
||||
max_disc_tu = atoi(pos);
|
||||
|
||||
return p2p_set_disc_int(wpa_s->global->p2p, min_disc_int,
|
||||
max_disc_int, max_disc_tu);
|
||||
}
|
||||
|
||||
wpa_printf(MSG_DEBUG, "CTRL_IFACE: Unknown P2P_SET field value '%s'",
|
||||
cmd);
|
||||
|
||||
|
|
|
@ -2760,6 +2760,8 @@ int wpas_p2p_init(struct wpa_global *global, struct wpa_supplicant *wpa_s)
|
|||
|
||||
p2p.p2p_intra_bss = wpa_s->conf->p2p_intra_bss;
|
||||
|
||||
p2p.max_listen = wpa_s->max_remain_on_chan;
|
||||
|
||||
global->p2p = p2p_init(&p2p);
|
||||
if (global->p2p == NULL)
|
||||
return -1;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue