]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - build-utilities/hostap.git/commitdiff
P2P: update scan results
authorEliad Peller <eliad@wizery.com>
Wed, 29 Feb 2012 18:45:58 +0000 (20:45 +0200)
committerEyal Shapira <eyal@wizery.com>
Thu, 15 Mar 2012 16:42:17 +0000 (18:42 +0200)
(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>
src/p2p/p2p.c

index cc6e25e7a2d54dc98d06b75f7cd3ae23f15b38a0..784c974e53bde88eaf745db529ace12bd99554ae 100644 (file)
@@ -565,7 +565,8 @@ int p2p_add_device(struct p2p_data *p2p, const u8 *addr, int freq, int level,
        struct p2p_device *dev;
        struct p2p_message msg;
        const u8 *p2p_dev_addr;
-       int i;
+       int i, changed = 0;
+       enum p2p_go_state old_state;
 
        os_memset(&msg, 0, sizeof(msg));
        if (p2p_parse_ies(ies, ies_len, &msg)) {
@@ -635,8 +636,17 @@ int p2p_add_device(struct p2p_data *p2p, const u8 *addr, int freq, int level,
                        "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;
        }
        dev->listen_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);
+
        if (msg.group_info)
                dev->oper_freq = freq;
        dev->info.level = level;
@@ -665,7 +675,7 @@ int p2p_add_device(struct p2p_data *p2p, const u8 *addr, int freq, int level,
        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,