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
1244c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidtstruct measurement_pilot {
1344c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	u8 measurement_pilot;
14f940fbdc849eba19de7b63a74ced85e550bf4572Dmitry Shmidt	u8 subelem_len;
15f940fbdc849eba19de7b63a74ced85e550bf4572Dmitry Shmidt	u8 subelems[255];
1644c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt};
1744c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt
1844c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidtstruct multiple_bssid {
1944c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	u8 max_bssid_indicator;
20f940fbdc849eba19de7b63a74ced85e550bf4572Dmitry Shmidt	u8 subelem_len;
21f940fbdc849eba19de7b63a74ced85e550bf4572Dmitry Shmidt	u8 subelems[255];
2244c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt};
2344c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt
2444c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidtstruct neighbor_report {
2544c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	u8 bssid[ETH_ALEN];
26fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt	u32 bssid_info;
2744c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	u8 regulatory_class;
2844c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	u8 channel_number;
2944c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	u8 phy_type;
30fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt	u8 preference; /* valid if preference_present=1 */
31fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt	u16 tsf_offset; /* valid if tsf_present=1 */
32fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt	u16 beacon_int; /* valid if tsf_present=1 */
33fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt	char country[2]; /* valid if country_present=1 */
34fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt	u8 rm_capab[5]; /* valid if rm_capab_present=1 */
35fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt	u16 bearing; /* valid if bearing_present=1 */
36fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt	u16 rel_height; /* valid if bearing_present=1 */
37fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt	u32 distance; /* valid if bearing_present=1 */
38fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt	u64 bss_term_tsf; /* valid if bss_term_present=1 */
39fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt	u16 bss_term_dur; /* valid if bss_term_present=1 */
40fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt	unsigned int preference_present:1;
41fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt	unsigned int tsf_present:1;
42fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt	unsigned int country_present:1;
43fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt	unsigned int rm_capab_present:1;
44fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt	unsigned int bearing_present:1;
45fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt	unsigned int bss_term_present:1;
4644c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	struct measurement_pilot *meas_pilot;
4744c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt	struct multiple_bssid *mul_bssid;
48fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt	int freq;
4944c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt};
5044c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt
5144c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt
5261d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidtint ieee802_11_send_wnmsleep_req(struct wpa_supplicant *wpa_s,
53a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt				 u8 action, u16 intval, struct wpabuf *tfs_req);
5461d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt
5561d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidtvoid ieee802_11_rx_wnm_action(struct wpa_supplicant *wpa_s,
56fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt			      const struct ieee80211_mgmt *mgmt, size_t len);
5761d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt
5844c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidtint wnm_send_bss_transition_mgmt_query(struct wpa_supplicant *wpa_s,
5944c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt				       u8 query_reason);
6044c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidtvoid wnm_deallocate_memory(struct wpa_supplicant *wpa_s);
6144c957860ca714a86357591f39aff0bfa904c743Dmitry Shmidt
62fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt
63fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt#ifdef CONFIG_WNM
64fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt
65fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidtint wnm_scan_process(struct wpa_supplicant *wpa_s, int reply_on_fail);
66fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt
67fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt#else /* CONFIG_WNM */
68fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt
69fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidtstatic inline int wnm_scan_process(struct wpa_supplicant *wpa_s,
70fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt				   int reply_on_fail)
71fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt{
72fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt	return 0;
73fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt}
74fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt
75fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt#endif /* CONFIG_WNM */
76fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt
7761d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt#endif /* WNM_STA_H */
78