]>
Commit | Line | Data |
---|---|---|
8fc8598e JC |
1 | #ifndef __INC_DOT11D_H |
2 | #define __INC_DOT11D_H | |
3 | ||
2addf798 | 4 | #include "ieee80211/ieee80211.h" |
8fc8598e | 5 | |
8fc8598e JC |
6 | |
7 | typedef struct _CHNL_TXPOWER_TRIPLE { | |
8 | u8 FirstChnl; | |
9 | u8 NumChnls; | |
10 | u8 MaxTxPowerInDbm; | |
1fc5af16 | 11 | } CHNL_TXPOWER_TRIPLE, *PCHNL_TXPOWER_TRIPLE; |
8fc8598e JC |
12 | |
13 | typedef enum _DOT11D_STATE { | |
14 | DOT11D_STATE_NONE = 0, | |
15 | DOT11D_STATE_LEARNED, | |
16 | DOT11D_STATE_DONE, | |
1fc5af16 | 17 | } DOT11D_STATE; |
8fc8598e JC |
18 | |
19 | typedef struct _RT_DOT11D_INFO { | |
1fc5af16 | 20 | /* DECLARE_RT_OBJECT(RT_DOT11D_INFO); */ |
8fc8598e | 21 | |
1fc5af16 | 22 | bool bEnabled; /* dot11MultiDomainCapabilityEnabled */ |
8fc8598e | 23 | |
1fc5af16 | 24 | u16 CountryIeLen; /* > 0 if CountryIeBuf[] contains valid country information element. */ |
8fc8598e | 25 | u8 CountryIeBuf[MAX_IE_LEN]; |
1fc5af16 | 26 | u8 CountryIeSrcAddr[6]; /* Source AP of the country IE. */ |
8fc8598e JC |
27 | u8 CountryIeWatchdog; |
28 | ||
1fc5af16 | 29 | u8 channel_map[MAX_CHANNEL_NUMBER+1]; /* !Value 0: Invalid, 1: Valid (active scan), 2: Valid (passive scan) */ |
8fc8598e JC |
30 | u8 MaxTxPwrDbmList[MAX_CHANNEL_NUMBER+1]; |
31 | ||
32 | DOT11D_STATE State; | |
1fc5af16 RP |
33 | } RT_DOT11D_INFO, *PRT_DOT11D_INFO; |
34 | #define eqMacAddr(a, b) (((a)[0] == (b)[0] && \ | |
35 | (a)[1] == (b)[1] && (a)[2] == (b)[2] && (a)[3] == (b)[3] && \ | |
36 | (a)[4] == (b)[4] && (a)[5] == (b)[5]) ? 1 : 0) | |
37 | #define cpMacAddr(des, src) ((des)[0] = (src)[0], \ | |
38 | (des)[1] = (src)[1], (des)[2] = (src)[2], \ | |
39 | (des)[3] = (src)[3], (des)[4] = (src)[4], \ | |
40 | (des)[5] = (src)[5]) | |
8fc8598e JC |
41 | #define GET_DOT11D_INFO(__pIeeeDev) ((PRT_DOT11D_INFO)((__pIeeeDev)->pDot11dInfo)) |
42 | ||
1fc5af16 | 43 | #define IS_DOT11D_ENABLE(__pIeeeDev) (GET_DOT11D_INFO(__pIeeeDev)->bEnabled) |
8fc8598e JC |
44 | #define IS_COUNTRY_IE_VALID(__pIeeeDev) (GET_DOT11D_INFO(__pIeeeDev)->CountryIeLen > 0) |
45 | ||
46 | #define IS_EQUAL_CIE_SRC(__pIeeeDev, __pTa) eqMacAddr(GET_DOT11D_INFO(__pIeeeDev)->CountryIeSrcAddr, __pTa) | |
47 | #define UPDATE_CIE_SRC(__pIeeeDev, __pTa) cpMacAddr(GET_DOT11D_INFO(__pIeeeDev)->CountryIeSrcAddr, __pTa) | |
48 | ||
49 | #define IS_COUNTRY_IE_CHANGED(__pIeeeDev, __Ie) \ | |
50 | (((__Ie).Length == 0 || (__Ie).Length != GET_DOT11D_INFO(__pIeeeDev)->CountryIeLen) ? \ | |
51 | FALSE : \ | |
52 | (!memcmp(GET_DOT11D_INFO(__pIeeeDev)->CountryIeBuf, (__Ie).Octet, (__Ie).Length))) | |
53 | ||
54 | #define CIE_WATCHDOG_TH 1 | |
1fc5af16 | 55 | #define GET_CIE_WATCHDOG(__pIeeeDev) (GET_DOT11D_INFO(__pIeeeDev)->CountryIeWatchdog) |
8fc8598e | 56 | #define RESET_CIE_WATCHDOG(__pIeeeDev) GET_CIE_WATCHDOG(__pIeeeDev) = 0 |
1fc5af16 | 57 | #define UPDATE_CIE_WATCHDOG(__pIeeeDev) (++GET_CIE_WATCHDOG(__pIeeeDev)) |
8fc8598e JC |
58 | |
59 | #define IS_DOT11D_STATE_DONE(__pIeeeDev) (GET_DOT11D_INFO(__pIeeeDev)->State == DOT11D_STATE_DONE) | |
60 | ||
61 | ||
62 | void | |
63 | Dot11d_Init( | |
64 | struct ieee80211_device *dev | |
65 | ); | |
66 | ||
67 | void | |
68 | Dot11d_Reset( | |
69 | struct ieee80211_device *dev | |
70 | ); | |
71 | ||
72 | void | |
73 | Dot11d_UpdateCountryIe( | |
74 | struct ieee80211_device *dev, | |
1fc5af16 RP |
75 | u8 *pTaddr, |
76 | u16 CoutryIeLen, | |
77 | u8 *pCoutryIe | |
8fc8598e JC |
78 | ); |
79 | ||
80 | u8 | |
81 | DOT11D_GetMaxTxPwrInDbm( | |
82 | struct ieee80211_device *dev, | |
83 | u8 Channel | |
84 | ); | |
85 | ||
86 | void | |
87 | DOT11D_ScanComplete( | |
1fc5af16 | 88 | struct ieee80211_device *dev |
8fc8598e JC |
89 | ); |
90 | ||
91 | int IsLegalChannel( | |
1fc5af16 | 92 | struct ieee80211_device *dev, |
8fc8598e JC |
93 | u8 channel |
94 | ); | |
95 | ||
96 | int ToLegalChannel( | |
1fc5af16 | 97 | struct ieee80211_device *dev, |
8fc8598e JC |
98 | u8 channel |
99 | ); | |
1fc5af16 | 100 | #endif /* #ifndef __INC_DOT11D_H */ |