From 1f69aa52ea2e0a73ac502565df8c666ee49cab6a Mon Sep 17 00:00:00 2001 From: Dmitry Shmidt Date: Tue, 24 Jan 2012 16:10:04 -0800 Subject: Update to new version 0.8.16 from BRCM Sync with main tree commit b8349523e460493fa0b4de36c689595109e45e91 Author: Neeraj Kumar Garg Date: Tue Dec 27 23:21:45 2011 +0200 P2P: Reject p2p_group_add if forced frequency is not acceptable Change-Id: Icb4541a371b05c270e80440d7a7fdea7f33ff61e Signed-off-by: Dmitry Shmidt --- wpa_supplicant/wpa_supplicant_i.h | 179 +++++++++++++++----------------------- 1 file changed, 68 insertions(+), 111 deletions(-) (limited to 'wpa_supplicant/wpa_supplicant_i.h') diff --git a/wpa_supplicant/wpa_supplicant_i.h b/wpa_supplicant/wpa_supplicant_i.h index 62c111d..8a66a80 100644 --- a/wpa_supplicant/wpa_supplicant_i.h +++ b/wpa_supplicant/wpa_supplicant_i.h @@ -228,98 +228,11 @@ struct wpa_global { }; -struct wpa_client_mlme { -#ifdef CONFIG_CLIENT_MLME - enum { - IEEE80211_DISABLED, IEEE80211_AUTHENTICATE, - IEEE80211_ASSOCIATE, IEEE80211_ASSOCIATED, - IEEE80211_IBSS_SEARCH, IEEE80211_IBSS_JOINED - } state; - u8 prev_bssid[ETH_ALEN]; - u8 ssid[32]; - size_t ssid_len; - u16 aid; - u16 ap_capab, capab; - u8 *extra_ie; /* to be added to the end of AssocReq */ - size_t extra_ie_len; - u8 *extra_probe_ie; /* to be added to the end of ProbeReq */ - size_t extra_probe_ie_len; - enum wpa_key_mgmt key_mgmt; - - /* The last AssocReq/Resp IEs */ - u8 *assocreq_ies, *assocresp_ies; - size_t assocreq_ies_len, assocresp_ies_len; - - int auth_tries, assoc_tries; - - unsigned int ssid_set:1; - unsigned int bssid_set:1; - unsigned int prev_bssid_set:1; - unsigned int authenticated:1; - unsigned int associated:1; - unsigned int probereq_poll:1; - unsigned int use_protection:1; - unsigned int create_ibss:1; - unsigned int mixed_cell:1; - unsigned int wmm_enabled:1; - - struct os_time last_probe; - - unsigned int auth_algs; /* bitfield of allowed auth algs - * (WPA_AUTH_ALG_*) */ - int auth_alg; /* currently used IEEE 802.11 authentication algorithm */ - int auth_transaction; - - struct os_time ibss_join_req; - u8 *probe_resp; /* ProbeResp template for IBSS */ - size_t probe_resp_len; - u32 supp_rates_bits; - - int wmm_last_param_set; - - int sta_scanning; - int scan_hw_mode_idx; - int scan_channel_idx; - enum { SCAN_SET_CHANNEL, SCAN_SEND_PROBE } scan_state; - struct os_time last_scan_completed; - int scan_oper_channel; - int scan_oper_freq; - int scan_oper_phymode; - u8 scan_ssid[32]; - size_t scan_ssid_len; - int scan_skip_11b; - int *scan_freqs; - - struct ieee80211_sta_bss *sta_bss_list; -#define STA_HASH_SIZE 256 -#define STA_HASH(sta) (sta[5]) - struct ieee80211_sta_bss *sta_bss_hash[STA_HASH_SIZE]; - - int cts_protect_erp_frames; - - enum hostapd_hw_mode phymode; /* current mode */ - struct hostapd_hw_modes *modes; - size_t num_modes; - unsigned int hw_modes; /* bitfield of allowed hardware modes; - * (1 << HOSTAPD_MODE_*) */ - int num_curr_rates; - int *curr_rates; - int freq; /* The current frequency in MHz */ - int channel; /* The current IEEE 802.11 channel number */ - -#ifdef CONFIG_IEEE80211R - u8 current_md[6]; - u8 *ft_ies; - size_t ft_ies_len; -#endif /* CONFIG_IEEE80211R */ - - void (*public_action_cb)(void *ctx, const u8 *buf, size_t len, - int freq); - void *public_action_cb_ctx; - -#else /* CONFIG_CLIENT_MLME */ - int dummy; /* to keep MSVC happy */ -#endif /* CONFIG_CLIENT_MLME */ +enum offchannel_send_action_result { + OFFCHANNEL_SEND_ACTION_SUCCESS /* Frame was send and acknowledged */, + OFFCHANNEL_SEND_ACTION_NO_ACK /* Frame was sent, but not acknowledged + */, + OFFCHANNEL_SEND_ACTION_FAILED /* Frame was not sent due to a failure */ }; /** @@ -353,7 +266,7 @@ struct wpa_supplicant { os_time_t last_michael_mic_error; u8 bssid[ETH_ALEN]; u8 pending_bssid[ETH_ALEN]; /* If wpa_state == WPA_ASSOCIATING, this - * field contains the targer BSSID. */ + * field contains the target BSSID. */ int reassociate; /* reassociation requested */ int disconnected; /* all connections disabled; i.e., do no reassociate * before this has been cleared */ @@ -366,6 +279,7 @@ struct wpa_supplicant { int pairwise_cipher; int group_cipher; int key_mgmt; + int wpa_proto; int mgmt_group_cipher; void *drv_priv; /* private data used by driver_ops */ @@ -379,6 +293,12 @@ struct wpa_supplicant { */ #define WILDCARD_SSID_SCAN ((struct wpa_ssid *) 1) + struct wpa_ssid *prev_sched_ssid; /* last SSID used in sched scan */ + int sched_scan_timeout; + int sched_scan_interval; + int first_sched_scan; + int sched_scan_timed_out; + void (*scan_res_handler)(struct wpa_supplicant *wpa_s, struct wpa_scan_results *scan_res); struct dl_list bss; /* struct wpa_bss::list */ @@ -397,6 +317,7 @@ struct wpa_supplicant { enum wpa_states wpa_state; int scanning; + int sched_scanning; int new_connection; int reassociated_connection; @@ -416,10 +337,20 @@ struct wpa_supplicant { int scan_runs; /* number of scan runs since WPS was started */ int *next_scan_freqs; int scan_interval; /* time in sec between scans to find suitable AP */ + int normal_scans; /* normal scans run before sched_scan */ - struct wpa_client_mlme mlme; unsigned int drv_flags; + + /* + * A bitmap of supported protocols for probe response offload. See + * struct wpa_driver_capa in driver.h + */ + unsigned int probe_resp_offloads; + int max_scan_ssids; + int max_sched_scan_ssids; + int sched_scan_supported; + unsigned int max_match_sets; unsigned int max_remain_on_chan; unsigned int max_stations; @@ -458,6 +389,7 @@ struct wpa_supplicant { u8 prev_bssid[ETH_ALEN]; int prev_bssid_set; int auth_alg; + int proto; int sa_query_count; /* number of pending SA Query requests; * 0 = no SA Query in progress */ @@ -476,20 +408,30 @@ struct wpa_supplicant { void *ap_configured_cb_data; #endif /* CONFIG_AP */ -#ifdef CONFIG_P2P - struct p2p_go_neg_results *go_params; - int create_p2p_iface; - u8 pending_interface_addr[ETH_ALEN]; - char pending_interface_name[100]; - int pending_interface_type; - int p2p_group_idx; unsigned int off_channel_freq; struct wpabuf *pending_action_tx; u8 pending_action_src[ETH_ALEN]; u8 pending_action_dst[ETH_ALEN]; u8 pending_action_bssid[ETH_ALEN]; unsigned int pending_action_freq; + int pending_action_no_cck; int pending_action_without_roc; + void (*pending_action_tx_status_cb)(struct wpa_supplicant *wpa_s, + unsigned int freq, const u8 *dst, + const u8 *src, const u8 *bssid, + const u8 *data, size_t data_len, + enum offchannel_send_action_result + result); + unsigned int roc_waiting_drv_freq; + int action_tx_wait_time; + +#ifdef CONFIG_P2P + struct p2p_go_neg_results *go_params; + int create_p2p_iface; + u8 pending_interface_addr[ETH_ALEN]; + char pending_interface_name[100]; + int pending_interface_type; + int p2p_group_idx; unsigned int pending_listen_freq; unsigned int pending_listen_duration; enum { @@ -513,8 +455,6 @@ struct wpa_supplicant { u8 pending_join_dev_addr[ETH_ALEN]; int pending_join_wps_method; int p2p_join_scan_count; - unsigned int roc_waiting_drv_freq; - int action_tx_wait_time; int force_long_sd; /* @@ -544,6 +484,8 @@ struct wpa_supplicant { P2P_GROUP_REMOVAL_IDLE_TIMEOUT, P2P_GROUP_REMOVAL_UNAVAILABLE } removal_reason; + + unsigned int p2p_cb_on_scan_complete:1; #endif /* CONFIG_P2P */ struct wpa_ssid *bgscan_ssid; @@ -561,6 +503,23 @@ struct wpa_supplicant { int best_24_freq; int best_5_freq; int best_overall_freq; + + struct gas_query *gas; + +#ifdef CONFIG_INTERWORKING + unsigned int fetch_anqp_in_progress:1; + unsigned int network_select:1; + unsigned int auto_select:1; +#endif /* CONFIG_INTERWORKING */ + unsigned int drv_capa_known; + + struct { + struct hostapd_hw_modes *modes; + u16 num_modes; + u16 flags; + } hw; + + int pno; }; @@ -570,6 +529,7 @@ int wpa_set_wep_keys(struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid); int wpa_supplicant_reload_configuration(struct wpa_supplicant *wpa_s); const char * wpa_supplicant_state_txt(enum wpa_states state); +int wpa_supplicant_update_mac_addr(struct wpa_supplicant *wpa_s); int wpa_supplicant_driver_init(struct wpa_supplicant *wpa_s); int wpa_supplicant_set_suites(struct wpa_supplicant *wpa_s, struct wpa_bss *bss, struct wpa_ssid *ssid, @@ -631,19 +591,16 @@ enum wpa_key_mgmt key_mgmt2driver(int key_mgmt); enum wpa_cipher cipher_suite2driver(int cipher); void wpa_supplicant_update_config(struct wpa_supplicant *wpa_s); void wpa_supplicant_clear_status(struct wpa_supplicant *wpa_s); -void ieee80211_sta_free_hw_features(struct hostapd_hw_modes *hw_features, - size_t num_hw_features); void wpas_connection_failed(struct wpa_supplicant *wpa_s, const u8 *bssid); +int wpas_driver_bss_selection(struct wpa_supplicant *wpa_s); /* events.c */ void wpa_supplicant_mark_disassoc(struct wpa_supplicant *wpa_s); -#ifdef ANDROID_BRCM_P2P_PATCH int wpa_supplicant_connect(struct wpa_supplicant *wpa_s, -#else -void wpa_supplicant_connect(struct wpa_supplicant *wpa_s, -#endif /* ANDROID_BRCM_P2P_PATCH */ - struct wpa_bss *selected, - struct wpa_ssid *ssid); + struct wpa_bss *selected, + struct wpa_ssid *ssid); +void wpa_supplicant_stop_countermeasures(void *eloop_ctx, void *sock_ctx); +void wpa_supplicant_delayed_mic_error_report(void *eloop_ctx, void *sock_ctx); /* eap_register.c */ int eap_register_methods(void); -- cgit v1.1