1 /*
2  * IEEE 802.11v WNM related functions and structures
3  * Copyright (c) 2011-2012, Qualcomm Atheros, Inc.
4  *
5  * This software may be distributed under the terms of the BSD license.
6  * See README for more details.
7  */
8 
9 #ifndef WNM_STA_H
10 #define WNM_STA_H
11 
12 struct tsf_info {
13 	u8 present;
14 	u8 tsf_offset[2];
15 	u8 beacon_interval[2];
16 };
17 
18 struct condensed_country_string {
19 	u8 present;
20 	u8 country_string[2];
21 };
22 
23 struct bss_transition_candidate {
24 	u8 present;
25 	u8 preference;
26 };
27 
28 struct bss_termination_duration {
29 	u8 present;
30 	u8 duration[12];
31 };
32 
33 struct bearing {
34 	u8 present;
35 	u8 bearing[8];
36 };
37 
38 struct measurement_pilot {
39 	u8 present;
40 	u8 measurement_pilot;
41 	u8 num_vendor_specific;
42 	u8 vendor_specific[255];
43 };
44 
45 struct rrm_enabled_capabilities {
46 	u8 present;
47 	u8 capabilities[4];
48 };
49 
50 struct multiple_bssid {
51 	u8 present;
52 	u8 max_bssid_indicator;
53 	u8 num_vendor_specific;
54 	u8 vendor_specific[255];
55 };
56 
57 struct neighbor_report {
58 	u8 bssid[ETH_ALEN];
59 	u8 bssid_information[4];
60 	u8 regulatory_class;
61 	u8 channel_number;
62 	u8 phy_type;
63 	struct tsf_info *tsf_info;
64 	struct condensed_country_string *con_coun_str;
65 	struct bss_transition_candidate *bss_tran_can;
66 	struct bss_termination_duration *bss_term_dur;
67 	struct bearing *bearing;
68 	struct measurement_pilot *meas_pilot;
69 	struct rrm_enabled_capabilities *rrm_cap;
70 	struct multiple_bssid *mul_bssid;
71 };
72 
73 
74 int ieee802_11_send_wnmsleep_req(struct wpa_supplicant *wpa_s,
75 				 u8 action, u16 intval, struct wpabuf *tfs_req);
76 
77 void ieee802_11_rx_wnm_action(struct wpa_supplicant *wpa_s,
78 			      const struct ieee80211_mgmt *mgmt, size_t len);
79 
80 void wnm_scan_response(struct wpa_supplicant *wpa_s,
81 		       struct wpa_scan_results *scan_res);
82 
83 int wnm_send_bss_transition_mgmt_query(struct wpa_supplicant *wpa_s,
84 				       u8 query_reason);
85 void wnm_deallocate_memory(struct wpa_supplicant *wpa_s);
86 
87 #endif /* WNM_STA_H */
88