import PULS_20160108
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / misc / mediatek / connectivity / combo / drv_wlan / mt6628 / wlan / include / mgmt / cnm.h
1 /*
2 ** $Id: //Department/DaVinci/BRANCHES/MT6620_WIFI_DRIVER_V2_3/include/mgmt/cnm.h#1 $
3 */
4
5 /*! \file "cnm.h"
6 \brief
7 */
8
9
10
11 /*
12 ** $Log: cnm.h $
13 *
14 * 06 23 2011 cp.wu
15 * [WCXRP00000798] [MT6620 Wi-Fi][Firmware] Follow-ups for WAPI frequency offset workaround in firmware SCN module
16 * change parameter name from PeerAddr to BSSID
17 *
18 * 06 20 2011 cp.wu
19 * [WCXRP00000798] [MT6620 Wi-Fi][Firmware] Follow-ups for WAPI frequency offset workaround in firmware SCN module
20 * 1. specify target's BSSID when requesting channel privilege.
21 * 2. pass BSSID information to firmware domain
22 *
23 * 04 12 2011 cm.chang
24 * [WCXRP00000634] [MT6620 Wi-Fi][Driver][FW] 2nd BSS will not support 40MHz bandwidth for concurrency
25 * .
26 *
27 * 03 10 2011 cm.chang
28 * [WCXRP00000358] [MT6620 Wi-Fi][Driver] Provide concurrent information for each module
29 * Add some functions to let AIS/Tethering or AIS/BOW be the same channel
30 *
31 * 01 12 2011 cm.chang
32 * [WCXRP00000358] [MT6620 Wi-Fi][Driver] Provide concurrent information for each module
33 * Provide function to decide if BSS can be activated or not
34 *
35 * 12 07 2010 cm.chang
36 * [WCXRP00000239] MT6620 Wi-Fi][Driver][FW] Merge concurrent branch back to maintrunk
37 * 1. BSSINFO include RLM parameter
38 * 2. free all sta records when network is disconnected
39 *
40 * 08 24 2010 cm.chang
41 * NULL
42 * Support RLM initail channel of Ad-hoc, P2P and BOW
43 *
44 * 07 19 2010 cm.chang
45 *
46 * Set RLM parameters and enable CNM channel manager
47 *
48 * 07 13 2010 cm.chang
49 *
50 * Rename MSG_CH_RELEASE_T to MSG_CH_ABORT_T
51 *
52 * 07 08 2010 cp.wu
53 *
54 * [WPD00003833] [MT6620 and MT5931] Driver migration - move to new repository.
55 *
56 * 07 08 2010 cm.chang
57 * [WPD00003841][LITE Driver] Migrate RLM/CNM to host driver
58 * Rename MID_MNY_CNM_CH_RELEASE to MID_MNY_CNM_CH_ABORT
59 *
60 * 07 01 2010 cm.chang
61 * [WPD00003841][LITE Driver] Migrate RLM/CNM to host driver
62 * Need bandwidth info when requesting channel privilege
63 *
64 * 07 01 2010 cm.chang
65 * [WPD00003841][LITE Driver] Migrate RLM/CNM to host driver
66 * Modify CNM message handler for new flow
67 *
68 * 05 12 2010 kevin.huang
69 * [BORA00000794][WIFISYS][New Feature]Power Management Support
70 * Add Power Management - Legacy PS-POLL support.
71 *
72 * 05 05 2010 cm.chang
73 * [BORA00000018]Integrate WIFI part into BORA for the 1st time
74 * Add a new function to send abort message
75 *
76 * 03 16 2010 kevin.huang
77 * [BORA00000663][WIFISYS][New Feature] AdHoc Mode Support
78 * Add AdHoc Mode
79 *
80 * 03 10 2010 kevin.huang
81 * [BORA00000654][WIFISYS][New Feature] CNM Module - Ch Manager Support
82 * Add Channel Manager for arbitration of JOIN and SCAN Req
83 *
84 * 02 08 2010 cm.chang
85 * [BORA00000018]Integrate WIFI part into BORA for the 1st time
86 * Support partial part about cmd basic configuration
87 *
88 * Nov 18 2009 mtk01104
89 * [BORA00000018] Integrate WIFI part into BORA for the 1st time
90 * Add prototype of cnmFsmEventInit()
91 *
92 * Nov 2 2009 mtk01104
93 * [BORA00000018] Integrate WIFI part into BORA for the 1st time
94 *
95 **
96 */
97
98 #ifndef _CNM_H
99 #define _CNM_H
100
101 /*******************************************************************************
102 * C O M P I L E R F L A G S
103 ********************************************************************************
104 */
105
106 /*******************************************************************************
107 * E X T E R N A L R E F E R E N C E S
108 ********************************************************************************
109 */
110
111 /*******************************************************************************
112 * C O N S T A N T S
113 ********************************************************************************
114 */
115
116 /*******************************************************************************
117 * D A T A T Y P E S
118 ********************************************************************************
119 */
120
121 typedef enum _ENUM_CH_REQ_TYPE_T {
122 CH_REQ_TYPE_JOIN,
123 CH_REQ_TYPE_P2P_LISTEN,
124
125 CH_REQ_TYPE_NUM
126 } ENUM_CH_REQ_TYPE_T, *P_ENUM_CH_REQ_TYPE_T;
127
128 typedef struct _MSG_CH_REQ_T {
129 MSG_HDR_T rMsgHdr; /* Must be the first member */
130 UINT_8 ucNetTypeIndex;
131 UINT_8 ucTokenID;
132 UINT_8 ucPrimaryChannel;
133 ENUM_CHNL_EXT_T eRfSco;
134 ENUM_BAND_T eRfBand;
135 ENUM_CH_REQ_TYPE_T eReqType;
136 UINT_32 u4MaxInterval; /* In unit of ms */
137 UINT_8 aucBSSID[6];
138 UINT_8 aucReserved[2];
139 } MSG_CH_REQ_T, *P_MSG_CH_REQ_T;
140
141 typedef struct _MSG_CH_ABORT_T {
142 MSG_HDR_T rMsgHdr; /* Must be the first member */
143 UINT_8 ucNetTypeIndex;
144 UINT_8 ucTokenID;
145 } MSG_CH_ABORT_T, *P_MSG_CH_ABORT_T;
146
147 typedef struct _MSG_CH_GRANT_T {
148 MSG_HDR_T rMsgHdr; /* Must be the first member */
149 UINT_8 ucNetTypeIndex;
150 UINT_8 ucTokenID;
151 UINT_8 ucPrimaryChannel;
152 ENUM_CHNL_EXT_T eRfSco;
153 ENUM_BAND_T eRfBand;
154 ENUM_CH_REQ_TYPE_T eReqType;
155 UINT_32 u4GrantInterval; /* In unit of ms */
156 } MSG_CH_GRANT_T, *P_MSG_CH_GRANT_T;
157
158 typedef struct _MSG_CH_REOCVER_T {
159 MSG_HDR_T rMsgHdr; /* Must be the first member */
160 UINT_8 ucNetTypeIndex;
161 UINT_8 ucTokenID;
162 UINT_8 ucPrimaryChannel;
163 ENUM_CHNL_EXT_T eRfSco;
164 ENUM_BAND_T eRfBand;
165 ENUM_CH_REQ_TYPE_T eReqType;
166 } MSG_CH_RECOVER_T, *P_MSG_CH_RECOVER_T;
167
168
169 typedef struct _CNM_INFO_T {
170 UINT_32 u4Reserved;
171 } CNM_INFO_T, *P_CNM_INFO_T;
172
173 #if CFG_ENABLE_WIFI_DIRECT
174 /* Moved from p2p_fsm.h */
175 typedef struct _DEVICE_TYPE_T {
176 UINT_16 u2CategoryId; /* Category ID */
177 UINT_8 aucOui[4]; /* OUI */
178 UINT_16 u2SubCategoryId; /* Sub Category ID */
179 } __KAL_ATTRIB_PACKED__ DEVICE_TYPE_T, *P_DEVICE_TYPE_T;
180 #endif
181
182
183 /*******************************************************************************
184 * P U B L I C D A T A
185 ********************************************************************************
186 */
187
188 /*******************************************************************************
189 * P R I V A T E D A T A
190 ********************************************************************************
191 */
192
193 /*******************************************************************************
194 * M A C R O S
195 ********************************************************************************
196 */
197
198 /*******************************************************************************
199 * F U N C T I O N D E C L A R A T I O N S
200 ********************************************************************************
201 */
202 VOID cnmInit(P_ADAPTER_T prAdapter);
203
204 VOID cnmUninit(P_ADAPTER_T prAdapter);
205
206 VOID cnmChMngrRequestPrivilege(P_ADAPTER_T prAdapter, P_MSG_HDR_T prMsgHdr);
207
208 VOID cnmChMngrAbortPrivilege(P_ADAPTER_T prAdapter, P_MSG_HDR_T prMsgHdr);
209
210 VOID cnmChMngrHandleChEvent(P_ADAPTER_T prAdapter, P_WIFI_EVENT_T prEvent);
211
212 BOOLEAN
213 cnmPreferredChannel(P_ADAPTER_T prAdapter,
214 P_ENUM_BAND_T prBand, PUINT_8 pucPrimaryChannel, P_ENUM_CHNL_EXT_T prBssSCO);
215
216 BOOLEAN
217 cnmAisInfraChannelFixed(P_ADAPTER_T prAdapter, P_ENUM_BAND_T prBand, PUINT_8 pucPrimaryChannel);
218
219 VOID cnmAisInfraConnectNotify(P_ADAPTER_T prAdapter);
220
221 BOOLEAN cnmAisIbssIsPermitted(P_ADAPTER_T prAdapter);
222
223 BOOLEAN cnmP2PIsPermitted(P_ADAPTER_T prAdapter);
224
225 BOOLEAN cnmBowIsPermitted(P_ADAPTER_T prAdapter);
226
227 BOOLEAN cnmBss40mBwPermitted(P_ADAPTER_T prAdapter, ENUM_NETWORK_TYPE_INDEX_T eNetTypeIdx);
228
229 /*******************************************************************************
230 * F U N C T I O N S
231 ********************************************************************************
232 */
233 #ifndef _lint
234 /* We don't have to call following function to inspect the data structure.
235 * It will check automatically while at compile time.
236 * We'll need this to guarantee the same member order in different structures
237 * to simply handling effort in some functions.
238 */
239 __KAL_INLINE__ VOID cnmMsgDataTypeCheck(VOID)
240 {
241 DATA_STRUC_INSPECTING_ASSERT(OFFSET_OF(MSG_CH_GRANT_T, rMsgHdr) == 0);
242
243 DATA_STRUC_INSPECTING_ASSERT(OFFSET_OF(MSG_CH_GRANT_T, rMsgHdr) ==
244 OFFSET_OF(MSG_CH_RECOVER_T, rMsgHdr));
245
246 DATA_STRUC_INSPECTING_ASSERT(OFFSET_OF(MSG_CH_GRANT_T, ucNetTypeIndex) ==
247 OFFSET_OF(MSG_CH_RECOVER_T, ucNetTypeIndex));
248
249 DATA_STRUC_INSPECTING_ASSERT(OFFSET_OF(MSG_CH_GRANT_T, ucTokenID) ==
250 OFFSET_OF(MSG_CH_RECOVER_T, ucTokenID));
251
252 DATA_STRUC_INSPECTING_ASSERT(OFFSET_OF(MSG_CH_GRANT_T, ucPrimaryChannel) ==
253 OFFSET_OF(MSG_CH_RECOVER_T, ucPrimaryChannel));
254
255 DATA_STRUC_INSPECTING_ASSERT(OFFSET_OF(MSG_CH_GRANT_T, eRfSco) ==
256 OFFSET_OF(MSG_CH_RECOVER_T, eRfSco));
257
258 DATA_STRUC_INSPECTING_ASSERT(OFFSET_OF(MSG_CH_GRANT_T, eRfBand) ==
259 OFFSET_OF(MSG_CH_RECOVER_T, eRfBand));
260
261 DATA_STRUC_INSPECTING_ASSERT(OFFSET_OF(MSG_CH_GRANT_T, eReqType) ==
262 OFFSET_OF(MSG_CH_RECOVER_T, eReqType));
263
264 return;
265 }
266 #endif /* _lint */
267
268 #endif /* _CNM_H */