Remove disconnected APs from BSS table if likely out-of-range
[mech_eap.git] / wpa_supplicant / wnm_sta.h
index 2933926..81d8153 100644 (file)
@@ -9,68 +9,43 @@
 #ifndef WNM_STA_H
 #define WNM_STA_H
 
-struct rx_action;
-struct wpa_supplicant;
-
-struct tsf_info {
-       u8 present;
-       u8 tsf_offset[2];
-       u8 beacon_interval[2];
-};
-
-struct condensed_country_string {
-       u8 present;
-       u8 country_string[2];
-};
-
-struct bss_transition_candidate {
-       u8 present;
-       u8 preference;
-};
-
-struct bss_termination_duration {
-       u8 present;
-       u8 duration[12];
-};
-
-struct bearing {
-       u8 present;
-       u8 bearing[8];
-};
-
 struct measurement_pilot {
-       u8 present;
        u8 measurement_pilot;
-       u8 num_vendor_specific;
-       u8 vendor_specific[255];
-};
-
-struct rrm_enabled_capabilities {
-       u8 present;
-       u8 capabilities[4];
+       u8 subelem_len;
+       u8 subelems[255];
 };
 
 struct multiple_bssid {
-       u8 present;
        u8 max_bssid_indicator;
-       u8 num_vendor_specific;
-       u8 vendor_specific[255];
+       u8 subelem_len;
+       u8 subelems[255];
 };
 
 struct neighbor_report {
        u8 bssid[ETH_ALEN];
-       u8 bssid_information[4];
+       u32 bssid_info;
        u8 regulatory_class;
        u8 channel_number;
        u8 phy_type;
-       struct tsf_info *tsf_info;
-       struct condensed_country_string *con_coun_str;
-       struct bss_transition_candidate *bss_tran_can;
-       struct bss_termination_duration *bss_term_dur;
-       struct bearing *bearing;
+       u8 preference; /* valid if preference_present=1 */
+       u16 tsf_offset; /* valid if tsf_present=1 */
+       u16 beacon_int; /* valid if tsf_present=1 */
+       char country[2]; /* valid if country_present=1 */
+       u8 rm_capab[5]; /* valid if rm_capab_present=1 */
+       u16 bearing; /* valid if bearing_present=1 */
+       u16 rel_height; /* valid if bearing_present=1 */
+       u32 distance; /* valid if bearing_present=1 */
+       u64 bss_term_tsf; /* valid if bss_term_present=1 */
+       u16 bss_term_dur; /* valid if bss_term_present=1 */
+       unsigned int preference_present:1;
+       unsigned int tsf_present:1;
+       unsigned int country_present:1;
+       unsigned int rm_capab_present:1;
+       unsigned int bearing_present:1;
+       unsigned int bss_term_present:1;
        struct measurement_pilot *meas_pilot;
-       struct rrm_enabled_capabilities *rrm_cap;
        struct multiple_bssid *mul_bssid;
+       int freq;
 };
 
 
@@ -78,13 +53,25 @@ int ieee802_11_send_wnmsleep_req(struct wpa_supplicant *wpa_s,
                                 u8 action, u16 intval, struct wpabuf *tfs_req);
 
 void ieee802_11_rx_wnm_action(struct wpa_supplicant *wpa_s,
-                             struct rx_action *action);
-
-void wnm_scan_response(struct wpa_supplicant *wpa_s,
-                      struct wpa_scan_results *scan_res);
+                             const struct ieee80211_mgmt *mgmt, size_t len);
 
 int wnm_send_bss_transition_mgmt_query(struct wpa_supplicant *wpa_s,
-                                      u8 query_reason);
+                                      u8 query_reason, int cand_list);
 void wnm_deallocate_memory(struct wpa_supplicant *wpa_s);
 
+
+#ifdef CONFIG_WNM
+
+int wnm_scan_process(struct wpa_supplicant *wpa_s, int reply_on_fail);
+
+#else /* CONFIG_WNM */
+
+static inline int wnm_scan_process(struct wpa_supplicant *wpa_s,
+                                  int reply_on_fail)
+{
+       return 0;
+}
+
+#endif /* CONFIG_WNM */
+
 #endif /* WNM_STA_H */