Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
8fc8598e JC |
2 | #ifndef __INC_DOT11D_H |
3 | #define __INC_DOT11D_H | |
4 | ||
8fc8598e JC |
5 | #include "ieee80211.h" |
6 | ||
1f1590f2 | 7 | struct chnl_txpower_triple { |
85f24df0 | 8 | u8 first_channel; |
321639a7 | 9 | u8 num_channels; |
8132962a | 10 | u8 max_tx_pwr_dbm; |
1f1590f2 | 11 | }; |
8fc8598e | 12 | |
e24411b3 | 13 | enum dot11d_state { |
8fc8598e JC |
14 | DOT11D_STATE_NONE = 0, |
15 | DOT11D_STATE_LEARNED, | |
16 | DOT11D_STATE_DONE, | |
e24411b3 | 17 | }; |
8fc8598e | 18 | |
3c22fbaf | 19 | struct rt_dot11d_info { |
18ee7be9 | 20 | u16 country_ie_len; /* > 0 if country_ie_buf[] contains valid country information element. */ |
9391bea9 JW |
21 | |
22 | /* country_ie_src_addr u16 aligned for comparison and copy */ | |
51e1eb74 | 23 | u8 country_ie_src_addr[ETH_ALEN]; /* Source AP of the country IE. */ |
9391bea9 | 24 | u8 country_ie_buf[MAX_IE_LEN]; |
6963fe99 | 25 | u8 country_ie_watchdog; |
8fc8598e | 26 | |
6a2e1905 JW |
27 | u8 channel_map[MAX_CHANNEL_NUMBER + 1]; /* !Value 0: Invalid, 1: Valid (active scan), 2: Valid (passive scan) */ |
28 | u8 max_tx_pwr_dbm_list[MAX_CHANNEL_NUMBER + 1]; | |
8fc8598e | 29 | |
2aa608bc | 30 | enum dot11d_state state; |
d0679000 | 31 | u8 dot11d_enabled; /* dot11MultiDomainCapabilityEnabled */ |
3c22fbaf JW |
32 | }; |
33 | ||
b972c798 | 34 | #define GET_DOT11D_INFO(ieee_dev) ((struct rt_dot11d_info *)((ieee_dev)->dot11d_info)) |
8fc8598e | 35 | |
d0679000 | 36 | #define IS_DOT11D_ENABLE(ieee_dev) (GET_DOT11D_INFO(ieee_dev)->dot11d_enabled) |
abdc4cae | 37 | #define IS_COUNTRY_IE_VALID(ieee_dev) (GET_DOT11D_INFO(ieee_dev)->country_ie_len > 0) |
8fc8598e | 38 | |
bc3ae241 JW |
39 | #define IS_EQUAL_CIE_SRC(ieee_dev, addr) ether_addr_equal(GET_DOT11D_INFO(ieee_dev)->country_ie_src_addr, addr) |
40 | #define UPDATE_CIE_SRC(ieee_dev, addr) ether_addr_copy(GET_DOT11D_INFO(ieee_dev)->country_ie_src_addr, addr) | |
8fc8598e | 41 | |
abdc4cae JW |
42 | #define GET_CIE_WATCHDOG(ieee_dev) (GET_DOT11D_INFO(ieee_dev)->country_ie_watchdog) |
43 | #define RESET_CIE_WATCHDOG(ieee_dev) (GET_CIE_WATCHDOG(ieee_dev) = 0) | |
44 | #define UPDATE_CIE_WATCHDOG(ieee_dev) (++GET_CIE_WATCHDOG(ieee_dev)) | |
8fc8598e | 45 | |
9003987a | 46 | void rtl8192u_dot11d_init(struct ieee80211_device *dev); |
6a184731 | 47 | void dot11d_reset(struct ieee80211_device *dev); |
d1f91e04 | 48 | void dot11d_update_country_ie(struct ieee80211_device *dev, |
b83ff826 JW |
49 | u8 *addr, |
50 | u16 coutry_ie_len, | |
51 | u8 *coutry_ie); | |
715a3d93 | 52 | u8 dot11d_get_max_tx_pwr_in_dbm(struct ieee80211_device *dev, u8 channel); |
e859737a | 53 | void dot11d_scan_complete(struct ieee80211_device *dev); |
b56b1438 | 54 | int is_legal_channel(struct ieee80211_device *dev, u8 channel); |
f1d18719 | 55 | int to_legal_channel(struct ieee80211_device *dev, u8 channel); |
8fc8598e | 56 | |
9f627100 | 57 | #endif /* #ifndef __INC_DOT11D_H */ |