wnm_sta.h revision 44c957860ca714a86357591f39aff0bfa904c743
161d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt/*
261d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt * IEEE 802.11v WNM related functions and structures
361d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt * Copyright (c) 2011-2012, Qualcomm Atheros, Inc.
461d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt *
561d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt * This software may be distributed under the terms of the BSD license.
661d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt * See README for more details.
761d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt */
861d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt
961d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt#ifndef WNM_STA_H
1061d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt#define WNM_STA_H
1161d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt
1261d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidtstruct rx_action;
1361d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidtstruct wpa_supplicant;
1461d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt
1544c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidtstruct tsf_info {
1644c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	u8 present;
1744c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	u8 tsf_offset[2];
1844c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	u8 beacon_interval[2];
1944c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt};
2044c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt
2144c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidtstruct condensed_country_string {
2244c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	u8 present;
2344c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	u8 country_string[2];
2444c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt};
2544c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt
2644c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidtstruct bss_transition_candidate {
2744c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	u8 present;
2844c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	u8 preference;
2944c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt};
3044c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt
3144c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidtstruct bss_termination_duration {
3244c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	u8 present;
3344c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	u8 duration[12];
3444c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt};
3544c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt
3644c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidtstruct bearing {
3744c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	u8 present;
3844c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	u8 bearing[8];
3944c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt};
4044c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt
4144c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidtstruct measurement_pilot {
4244c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	u8 present;
4344c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	u8 measurement_pilot;
4444c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	u8 num_vendor_specific;
4544c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	u8 vendor_specific[255];
4644c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt};
4744c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt
4844c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidtstruct rrm_enabled_capabilities {
4944c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	u8 present;
5044c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	u8 capabilities[4];
5144c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt};
5244c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt
5344c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidtstruct multiple_bssid {
5444c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	u8 present;
5544c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	u8 max_bssid_indicator;
5644c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	u8 num_vendor_specific;
5744c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	u8 vendor_specific[255];
5844c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt};
5944c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt
6044c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidtstruct neighbor_report {
6144c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	u8 bssid[ETH_ALEN];
6244c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	u8 bssid_information[4];
6344c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	u8 regulatory_class;
6444c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	u8 channel_number;
6544c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	u8 phy_type;
6644c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	struct tsf_info *tsf_info;
6744c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	struct condensed_country_string *con_coun_str;
6844c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	struct bss_transition_candidate *bss_tran_can;
6944c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	struct bss_termination_duration *bss_term_dur;
7044c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	struct bearing *bearing;
7144c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	struct measurement_pilot *meas_pilot;
7244c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	struct rrm_enabled_capabilities *rrm_cap;
7344c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	struct multiple_bssid *mul_bssid;
7444c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt};
7544c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt
7644c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt
7761d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidtint ieee802_11_send_wnmsleep_req(struct wpa_supplicant *wpa_s,
78a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt				 u8 action, u16 intval, struct wpabuf *tfs_req);
7961d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt
8061d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidtvoid ieee802_11_rx_wnm_action(struct wpa_supplicant *wpa_s,
8161d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt			      struct rx_action *action);
8261d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt
8344c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidtvoid wnm_scan_response(struct wpa_supplicant *wpa_s,
8444c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt		       struct wpa_scan_results *scan_res);
8544c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt
8644c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidtint wnm_send_bss_transition_mgmt_query(struct wpa_supplicant *wpa_s,
8744c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt				       u8 query_reason);
8844c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidtvoid wnm_deallocate_memory(struct wpa_supplicant *wpa_s);
8944c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt
9061d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt#endif /* WNM_STA_H */
91