diff options
author | Eliad Peller <eliad@wizery.com> | 2012-02-29 20:45:58 +0200 |
---|---|---|
committer | Arik Nemtsov <arik@wizery.com> | 2012-08-02 13:01:43 +0300 |
commit | 75f047b9a355c164e96a5e6b94384107f59da81f (patch) | |
tree | df2ac5010a48533be531eb2976acbd3b5d2cc2c4 /src | |
parent | 6b67a94fe4edcb7d0ecc789362b705f4b58451cb (diff) | |
download | external_wpa_supplicant_8_ti-75f047b9a355c164e96a5e6b94384107f59da81f.zip external_wpa_supplicant_8_ti-75f047b9a355c164e96a5e6b94384107f59da81f.tar.gz external_wpa_supplicant_8_ti-75f047b9a355c164e96a5e6b94384107f59da81f.tar.bz2 |
P2P: update scan results
(not sure this should go upstream)
update p2p scan results (and notify) if the
listen_freq or go_state were changed.
Signed-off-by: Eliad Peller <eliad@wizery.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/p2p/p2p.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/p2p/p2p.c b/src/p2p/p2p.c index f734c73..554df33 100644 --- a/src/p2p/p2p.c +++ b/src/p2p/p2p.c @@ -585,8 +585,9 @@ int p2p_add_device(struct p2p_data *p2p, const u8 *addr, int freq, struct p2p_device *dev; struct p2p_message msg; const u8 *p2p_dev_addr; - int i; + int i, changed = 0; struct os_time time_now, time_tmp_age, entry_ts; + enum p2p_go_state old_state; os_memset(&msg, 0, sizeof(msg)); if (p2p_parse_ies(ies, ies_len, &msg)) { @@ -672,12 +673,22 @@ int p2p_add_device(struct p2p_data *p2p, const u8 *addr, int freq, "results (" MACSTR " %d -> %d MHz (DS param %d)", MAC2STR(dev->info.p2p_device_addr), dev->listen_freq, freq, msg.ds_params ? *msg.ds_params : -1); + changed = 1; } + if (scan_res) { dev->listen_freq = freq; if (msg.group_info) dev->oper_freq = freq; + + old_state = dev->go_state; + if (msg.group_info) + dev->go_state = REMOTE_GO; + else + dev->go_state = UNKNOWN_GO; + changed |= (old_state != dev->go_state); } + dev->info.level = level; p2p_copy_wps_info(dev, 0, &msg); @@ -706,7 +717,7 @@ int p2p_add_device(struct p2p_data *p2p, const u8 *addr, int freq, if (p2p_pending_sd_req(p2p, dev)) dev->flags |= P2P_DEV_SD_SCHEDULE; - if (dev->flags & P2P_DEV_REPORTED) + if ((dev->flags & P2P_DEV_REPORTED) && !changed) return 0; wpa_msg(p2p->cfg->msg_ctx, MSG_DEBUG, |