]>
Commit | Line | Data |
---|---|---|
75cad1a0 XC |
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 | ||
e27d20bb | 12 | struct measurement_pilot { |
e27d20bb | 13 | u8 measurement_pilot; |
f6ce70dc JM |
14 | u8 subelem_len; |
15 | u8 subelems[255]; | |
e27d20bb VK |
16 | }; |
17 | ||
e27d20bb | 18 | struct multiple_bssid { |
e27d20bb | 19 | u8 max_bssid_indicator; |
f6ce70dc JM |
20 | u8 subelem_len; |
21 | u8 subelems[255]; | |
e27d20bb VK |
22 | }; |
23 | ||
24 | struct neighbor_report { | |
25 | u8 bssid[ETH_ALEN]; | |
4c381f0d | 26 | u32 bssid_info; |
e27d20bb VK |
27 | u8 regulatory_class; |
28 | u8 channel_number; | |
29 | u8 phy_type; | |
09322678 JM |
30 | u8 preference; /* valid if preference_present=1 */ |
31 | u16 tsf_offset; /* valid if tsf_present=1 */ | |
32 | u16 beacon_int; /* valid if tsf_present=1 */ | |
33 | char country[2]; /* valid if country_present=1 */ | |
34 | u8 rm_capab[5]; /* valid if rm_capab_present=1 */ | |
35 | u16 bearing; /* valid if bearing_present=1 */ | |
36 | u16 rel_height; /* valid if bearing_present=1 */ | |
37 | u32 distance; /* valid if bearing_present=1 */ | |
38 | u64 bss_term_tsf; /* valid if bss_term_present=1 */ | |
39 | u16 bss_term_dur; /* valid if bss_term_present=1 */ | |
40 | unsigned int preference_present:1; | |
41 | unsigned int tsf_present:1; | |
42 | unsigned int country_present:1; | |
43 | unsigned int rm_capab_present:1; | |
44 | unsigned int bearing_present:1; | |
45 | unsigned int bss_term_present:1; | |
af8bc24d KV |
46 | unsigned int acceptable:1; |
47 | #ifdef CONFIG_MBO | |
48 | unsigned int is_first:1; | |
49 | #endif /* CONFIG_MBO */ | |
e27d20bb | 50 | struct measurement_pilot *meas_pilot; |
e27d20bb | 51 | struct multiple_bssid *mul_bssid; |
e1117c1c | 52 | int freq; |
e27d20bb VK |
53 | }; |
54 | ||
55 | ||
75cad1a0 | 56 | int ieee802_11_send_wnmsleep_req(struct wpa_supplicant *wpa_s, |
cd0ef657 | 57 | u8 action, u16 intval, struct wpabuf *tfs_req); |
75cad1a0 XC |
58 | |
59 | void ieee802_11_rx_wnm_action(struct wpa_supplicant *wpa_s, | |
dbfb8e82 | 60 | const struct ieee80211_mgmt *mgmt, size_t len); |
75cad1a0 | 61 | |
65bcd0a9 | 62 | int wnm_send_bss_transition_mgmt_query(struct wpa_supplicant *wpa_s, |
15ab61ed AS |
63 | u8 query_reason, |
64 | const char *btm_candidates, | |
65 | int cand_list); | |
66 | ||
e27d20bb | 67 | void wnm_deallocate_memory(struct wpa_supplicant *wpa_s); |
d514b502 JM |
68 | int wnm_send_coloc_intf_report(struct wpa_supplicant *wpa_s, u8 dialog_token, |
69 | const struct wpabuf *elems); | |
70 | void wnm_set_coloc_intf_elems(struct wpa_supplicant *wpa_s, | |
71 | struct wpabuf *elems); | |
e27d20bb | 72 | |
d0b9ab69 JM |
73 | |
74 | #ifdef CONFIG_WNM | |
75 | ||
75d65857 | 76 | int wnm_scan_process(struct wpa_supplicant *wpa_s, int reply_on_fail); |
d514b502 | 77 | void wnm_clear_coloc_intf_reporting(struct wpa_supplicant *wpa_s); |
d0b9ab69 JM |
78 | |
79 | #else /* CONFIG_WNM */ | |
80 | ||
75d65857 JM |
81 | static inline int wnm_scan_process(struct wpa_supplicant *wpa_s, |
82 | int reply_on_fail) | |
d0b9ab69 JM |
83 | { |
84 | return 0; | |
85 | } | |
86 | ||
d514b502 JM |
87 | static inline void wnm_clear_coloc_intf_reporting(struct wpa_supplicant *wpa_s) |
88 | { | |
89 | } | |
90 | ||
d0b9ab69 JM |
91 | #endif /* CONFIG_WNM */ |
92 | ||
75cad1a0 | 93 | #endif /* WNM_STA_H */ |