diff --git a/wpa_supplicant/offchannel.c b/wpa_supplicant/offchannel.c index b74be7dad..77c425fac 100644 --- a/wpa_supplicant/offchannel.c +++ b/wpa_supplicant/offchannel.c @@ -226,10 +226,10 @@ void offchannel_send_action_tx_status( } #ifdef CONFIG_P2P - if (wpa_s->p2p_long_listen > 0) { + if (wpa_s->global->p2p_long_listen > 0) { /* Continue the listen */ wpa_printf(MSG_DEBUG, "P2P: Continuing long Listen state"); - wpas_p2p_listen_start(wpa_s, wpa_s->p2p_long_listen); + wpas_p2p_listen_start(wpa_s, wpa_s->global->p2p_long_listen); } #endif /* CONFIG_P2P */ } diff --git a/wpa_supplicant/p2p_supplicant.c b/wpa_supplicant/p2p_supplicant.c index a7d3b7f1d..8237242a7 100644 --- a/wpa_supplicant/p2p_supplicant.c +++ b/wpa_supplicant/p2p_supplicant.c @@ -2422,7 +2422,7 @@ static void wpas_go_neg_completed(void *ctx, struct p2p_go_neg_results *res) wpas_start_wps_enrollee(group_wpa_s, res); } - wpa_s->global->p2p_init_wpa_s->p2p_long_listen = 0; + wpa_s->global->p2p_long_listen = 0; eloop_cancel_timeout(wpas_p2p_long_listen_timeout, wpa_s, NULL); eloop_cancel_timeout(wpas_p2p_group_formation_timeout, wpa_s, NULL); @@ -4750,8 +4750,7 @@ void wpas_p2p_deinit(struct wpa_supplicant *wpa_s) eloop_cancel_timeout(wpas_p2p_psk_failure_removal, wpa_s, NULL); eloop_cancel_timeout(wpas_p2p_group_formation_timeout, wpa_s, NULL); eloop_cancel_timeout(wpas_p2p_join_scan, wpa_s, NULL); - if (wpa_s->global->p2p_init_wpa_s) - wpa_s->global->p2p_init_wpa_s->p2p_long_listen = 0; + wpa_s->global->p2p_long_listen = 0; eloop_cancel_timeout(wpas_p2p_long_listen_timeout, wpa_s, NULL); eloop_cancel_timeout(wpas_p2p_group_idle_timeout, wpa_s, NULL); wpas_p2p_remove_pending_group_interface(wpa_s); @@ -5636,7 +5635,7 @@ int wpas_p2p_connect(struct wpa_supplicant *wpa_s, const u8 *peer_addr, go_intent = wpa_s->conf->p2p_go_intent; if (!auth) - wpa_s->global->p2p_init_wpa_s->p2p_long_listen = 0; + wpa_s->global->p2p_long_listen = 0; wpa_s->p2p_wps_method = wps_method; wpa_s->p2p_persistent_group = !!persistent_group; @@ -5806,19 +5805,20 @@ void wpas_p2p_cancel_remain_on_channel_cb(struct wpa_supplicant *wpa_s, { wpa_printf(MSG_DEBUG, "P2P: Cancel remain-on-channel callback " "(p2p_long_listen=%d ms pending_action_tx=%p)", - wpa_s->p2p_long_listen, offchannel_pending_action_tx(wpa_s)); + wpa_s->global->p2p_long_listen, + offchannel_pending_action_tx(wpa_s)); wpas_p2p_listen_work_done(wpa_s); if (wpa_s->global->p2p_disabled || wpa_s->global->p2p == NULL) return; - if (wpa_s->p2p_long_listen > 0) - wpa_s->p2p_long_listen -= wpa_s->max_remain_on_chan; + if (wpa_s->global->p2p_long_listen > 0) + wpa_s->global->p2p_long_listen -= wpa_s->max_remain_on_chan; if (p2p_listen_end(wpa_s->global->p2p, freq) > 0) return; /* P2P module started a new operation */ if (offchannel_pending_action_tx(wpa_s)) return; - if (wpa_s->p2p_long_listen > 0) { + if (wpa_s->global->p2p_long_listen > 0) { wpa_printf(MSG_DEBUG, "P2P: Continuing long Listen state"); - wpas_p2p_listen_start(wpa_s, wpa_s->p2p_long_listen); + wpas_p2p_listen_start(wpa_s, wpa_s->global->p2p_long_listen); } else { /* * When listen duration is over, stop listen & update p2p_state @@ -6953,7 +6953,7 @@ int wpas_p2p_find(struct wpa_supplicant *wpa_s, unsigned int timeout, u8 seek_cnt, const char **seek_string, int freq) { wpas_p2p_clear_pending_action_tx(wpa_s); - wpa_s->global->p2p_init_wpa_s->p2p_long_listen = 0; + wpa_s->global->p2p_long_listen = 0; if (wpa_s->global->p2p_disabled || wpa_s->global->p2p == NULL || wpa_s->p2p_in_provisioning) { @@ -6998,7 +6998,7 @@ static void wpas_p2p_scan_res_ignore_search(struct wpa_supplicant *wpa_s, static void wpas_p2p_stop_find_oper(struct wpa_supplicant *wpa_s) { wpas_p2p_clear_pending_action_tx(wpa_s); - wpa_s->global->p2p_init_wpa_s->p2p_long_listen = 0; + wpa_s->global->p2p_long_listen = 0; eloop_cancel_timeout(wpas_p2p_long_listen_timeout, wpa_s, NULL); eloop_cancel_timeout(wpas_p2p_join_scan, wpa_s, NULL); @@ -7024,7 +7024,7 @@ void wpas_p2p_stop_find(struct wpa_supplicant *wpa_s) static void wpas_p2p_long_listen_timeout(void *eloop_ctx, void *timeout_ctx) { struct wpa_supplicant *wpa_s = eloop_ctx; - wpa_s->global->p2p_init_wpa_s->p2p_long_listen = 0; + wpa_s->global->p2p_long_listen = 0; } @@ -7053,7 +7053,7 @@ int wpas_p2p_listen(struct wpa_supplicant *wpa_s, unsigned int timeout) timeout = 3600; } eloop_cancel_timeout(wpas_p2p_long_listen_timeout, wpa_s, NULL); - wpa_s->global->p2p_init_wpa_s->p2p_long_listen = 0; + wpa_s->global->p2p_long_listen = 0; /* * Stop previous find/listen operation to avoid trying to request a new @@ -7065,7 +7065,7 @@ int wpas_p2p_listen(struct wpa_supplicant *wpa_s, unsigned int timeout) res = wpas_p2p_listen_start(wpa_s, timeout * 1000); if (res == 0 && timeout * 1000 > wpa_s->max_remain_on_chan) { - wpa_s->global->p2p_init_wpa_s->p2p_long_listen = timeout * 1000; + wpa_s->global->p2p_long_listen = timeout * 1000; eloop_register_timeout(timeout, 0, wpas_p2p_long_listen_timeout, wpa_s, NULL); @@ -7172,7 +7172,7 @@ static void wpas_p2p_group_deinit(struct wpa_supplicant *wpa_s) int wpas_p2p_reject(struct wpa_supplicant *wpa_s, const u8 *addr) { - wpa_s->global->p2p_init_wpa_s->p2p_long_listen = 0; + wpa_s->global->p2p_long_listen = 0; if (wpa_s->global->p2p_disabled || wpa_s->global->p2p == NULL) return -1; diff --git a/wpa_supplicant/wpa_supplicant_i.h b/wpa_supplicant/wpa_supplicant_i.h index b8313f935..7ab6ca377 100644 --- a/wpa_supplicant/wpa_supplicant_i.h +++ b/wpa_supplicant/wpa_supplicant_i.h @@ -283,6 +283,7 @@ struct wpa_global { struct dl_list p2p_srv_upnp; /* struct p2p_srv_upnp */ int p2p_disabled; int cross_connection; + int p2p_long_listen; /* remaining time in long Listen state in ms */ struct wpa_freq_range_list p2p_disallow_freq; struct wpa_freq_range_list p2p_go_avoid_freq; enum wpa_conc_pref { @@ -890,7 +891,6 @@ struct wpa_supplicant { P2P_GROUP_INTERFACE_CLIENT } p2p_group_interface; struct p2p_group *p2p_group; - int p2p_long_listen; /* remaining time in long Listen state in ms */ char p2p_pin[10]; int p2p_wps_method; u8 p2p_auth_invite[ETH_ALEN];