2 ** $Id: //Department/DaVinci/BRANCHES/MT6620_WIFI_DRIVER_V2_2/include/mgmt/cnm.h#1 $
9 /*******************************************************************************
10 * Copyright (c) 2009 MediaTek Inc.
12 * All rights reserved. Copying, compilation, modification, distribution
13 * or any other use whatsoever of this material is strictly prohibited
14 * except in accordance with a Software License Agreement with
16 ********************************************************************************
19 /*******************************************************************************
22 * BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND
23 * AGREES THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK
24 * SOFTWARE") RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE
25 * PROVIDED TO BUYER ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY
26 * DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
27 * LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
28 * PARTICULAR PURPOSE OR NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE
29 * ANY WARRANTY WHATSOEVER WITH RESPECT TO THE SOFTWARE OF ANY THIRD PARTY
30 * WHICH MAY BE USED BY, INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK
31 * SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY
32 * WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE
33 * FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S SPECIFICATION OR TO
34 * CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
36 * BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
37 * LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL
38 * BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT
39 * ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY
40 * BUYER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
42 * THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
43 * WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT
44 * OF LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING
45 * THEREOF AND RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN
46 * FRANCISCO, CA, UNDER THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE
48 ********************************************************************************
55 * [WCXRP00000798] [MT6620 Wi-Fi][Firmware] Follow-ups for WAPI frequency offset workaround in firmware SCN module
56 * follow-ups for frequency-shifted WAPI AP support
59 * [WCXRP00000634] [MT6620 Wi-Fi][Driver][FW] 2nd BSS will not support 40MHz bandwidth for concurrency
63 * [WCXRP00000577] [MT6620 Wi-Fi][Driver][FW] Create V2.0 branch for firmware and driver
64 * create V2.0 driver release based on label "MT6620_WIFI_DRIVER_V2_0_110318_1600" from main trunk
67 * [WCXRP00000358] [MT6620 Wi-Fi][Driver] Provide concurrent information for each module
68 * Add some functions to let AIS/Tethering or AIS/BOW be the same channel
71 * [WCXRP00000358] [MT6620 Wi-Fi][Driver] Provide concurrent information for each module
72 * Provide function to decide if BSS can be activated or not
75 * [WCXRP00000239] MT6620 Wi-Fi][Driver][FW] Merge concurrent branch back to maintrunk
76 * 1. BSSINFO include RLM parameter
77 * 2. free all sta records when network is disconnected
81 * Support RLM initail channel of Ad-hoc, P2P and BOW
85 * Set RLM parameters and enable CNM channel manager
89 * Rename MSG_CH_RELEASE_T to MSG_CH_ABORT_T
93 * [WPD00003833] [MT6620 and MT5931] Driver migration - move to new repository.
96 * [WPD00003841][LITE Driver] Migrate RLM/CNM to host driver
97 * Rename MID_MNY_CNM_CH_RELEASE to MID_MNY_CNM_CH_ABORT
100 * [WPD00003841][LITE Driver] Migrate RLM/CNM to host driver
101 * Need bandwidth info when requesting channel privilege
103 * 07 01 2010 cm.chang
104 * [WPD00003841][LITE Driver] Migrate RLM/CNM to host driver
105 * Modify CNM message handler for new flow
107 * 05 12 2010 kevin.huang
108 * [BORA00000794][WIFISYS][New Feature]Power Management Support
109 * Add Power Management - Legacy PS-POLL support.
111 * 05 05 2010 cm.chang
112 * [BORA00000018]Integrate WIFI part into BORA for the 1st time
113 * Add a new function to send abort message
115 * 03 16 2010 kevin.huang
116 * [BORA00000663][WIFISYS][New Feature] AdHoc Mode Support
119 * 03 10 2010 kevin.huang
120 * [BORA00000654][WIFISYS][New Feature] CNM Module - Ch Manager Support
121 * Add Channel Manager for arbitration of JOIN and SCAN Req
123 * 02 08 2010 cm.chang
124 * [BORA00000018]Integrate WIFI part into BORA for the 1st time
125 * Support partial part about cmd basic configuration
127 * Nov 18 2009 mtk01104
128 * [BORA00000018] Integrate WIFI part into BORA for the 1st time
129 * Add prototype of cnmFsmEventInit()
131 * Nov 2 2009 mtk01104
132 * [BORA00000018] Integrate WIFI part into BORA for the 1st time
140 /*******************************************************************************
141 * C O M P I L E R F L A G S
142 ********************************************************************************
145 /*******************************************************************************
146 * E X T E R N A L R E F E R E N C E S
147 ********************************************************************************
150 /*******************************************************************************
152 ********************************************************************************
155 /*******************************************************************************
157 ********************************************************************************
160 typedef enum _ENUM_CH_REQ_TYPE_T {
162 CH_REQ_TYPE_P2P_LISTEN,
165 } ENUM_CH_REQ_TYPE_T, *P_ENUM_CH_REQ_TYPE_T;
167 typedef struct _MSG_CH_REQ_T {
168 MSG_HDR_T rMsgHdr; /* Must be the first member */
169 UINT_8 ucNetTypeIndex;
171 UINT_8 ucPrimaryChannel;
172 ENUM_CHNL_EXT_T eRfSco;
174 ENUM_CH_REQ_TYPE_T eReqType;
175 UINT_32 u4MaxInterval; /* In unit of ms */
177 UINT_8 aucReserved[2];
178 } MSG_CH_REQ_T, *P_MSG_CH_REQ_T;
180 typedef struct _MSG_CH_ABORT_T {
181 MSG_HDR_T rMsgHdr; /* Must be the first member */
182 UINT_8 ucNetTypeIndex;
184 } MSG_CH_ABORT_T, *P_MSG_CH_ABORT_T;
186 typedef struct _MSG_CH_GRANT_T {
187 MSG_HDR_T rMsgHdr; /* Must be the first member */
188 UINT_8 ucNetTypeIndex;
190 UINT_8 ucPrimaryChannel;
191 ENUM_CHNL_EXT_T eRfSco;
193 ENUM_CH_REQ_TYPE_T eReqType;
194 UINT_32 u4GrantInterval; /* In unit of ms */
195 } MSG_CH_GRANT_T, *P_MSG_CH_GRANT_T;
197 typedef struct _MSG_CH_REOCVER_T {
198 MSG_HDR_T rMsgHdr; /* Must be the first member */
199 UINT_8 ucNetTypeIndex;
201 UINT_8 ucPrimaryChannel;
202 ENUM_CHNL_EXT_T eRfSco;
204 ENUM_CH_REQ_TYPE_T eReqType;
205 } MSG_CH_RECOVER_T, *P_MSG_CH_RECOVER_T;
208 typedef struct _CNM_INFO_T {
210 } CNM_INFO_T, *P_CNM_INFO_T;
212 #if CFG_ENABLE_WIFI_DIRECT
213 /* Moved from p2p_fsm.h */
214 typedef struct _DEVICE_TYPE_T {
215 UINT_16 u2CategoryId; /* Category ID */
216 UINT_8 aucOui[4]; /* OUI */
217 UINT_16 u2SubCategoryId; /* Sub Category ID */
218 } __KAL_ATTRIB_PACKED__ DEVICE_TYPE_T, *P_DEVICE_TYPE_T;
222 /*******************************************************************************
223 * P U B L I C D A T A
224 ********************************************************************************
227 /*******************************************************************************
228 * P R I V A T E D A T A
229 ********************************************************************************
232 /*******************************************************************************
234 ********************************************************************************
237 /*******************************************************************************
238 * F U N C T I O N D E C L A R A T I O N S
239 ********************************************************************************
243 P_ADAPTER_T prAdapter
248 P_ADAPTER_T prAdapter
252 cnmChMngrRequestPrivilege (
253 P_ADAPTER_T prAdapter,
258 cnmChMngrAbortPrivilege (
259 P_ADAPTER_T prAdapter,
264 cnmChMngrHandleChEvent (
265 P_ADAPTER_T prAdapter,
266 P_WIFI_EVENT_T prEvent
270 cnmPreferredChannel (
271 P_ADAPTER_T prAdapter,
272 P_ENUM_BAND_T prBand,
273 PUINT_8 pucPrimaryChannel,
274 P_ENUM_CHNL_EXT_T prBssSCO
278 cnmAisInfraChannelFixed (
279 P_ADAPTER_T prAdapter,
280 P_ENUM_BAND_T prBand,
281 PUINT_8 pucPrimaryChannel
285 cnmAisInfraConnectNotify (
286 P_ADAPTER_T prAdapter
290 cnmAisIbssIsPermitted (
291 P_ADAPTER_T prAdapter
296 P_ADAPTER_T prAdapter
301 P_ADAPTER_T prAdapter
305 cnmBss40mBwPermitted (
306 P_ADAPTER_T prAdapter,
307 ENUM_NETWORK_TYPE_INDEX_T eNetTypeIdx
310 /*******************************************************************************
312 ********************************************************************************
315 /* We don't have to call following function to inspect the data structure.
316 * It will check automatically while at compile time.
317 * We'll need this to guarantee the same member order in different structures
318 * to simply handling effort in some functions.
321 cnmMsgDataTypeCheck (
325 DATA_STRUC_INSPECTING_ASSERT(
326 OFFSET_OF(MSG_CH_GRANT_T,rMsgHdr) == 0);
328 DATA_STRUC_INSPECTING_ASSERT(
329 OFFSET_OF(MSG_CH_GRANT_T,rMsgHdr) ==
330 OFFSET_OF(MSG_CH_RECOVER_T,rMsgHdr));
332 DATA_STRUC_INSPECTING_ASSERT(
333 OFFSET_OF(MSG_CH_GRANT_T,ucNetTypeIndex) ==
334 OFFSET_OF(MSG_CH_RECOVER_T,ucNetTypeIndex));
336 DATA_STRUC_INSPECTING_ASSERT(
337 OFFSET_OF(MSG_CH_GRANT_T,ucTokenID) ==
338 OFFSET_OF(MSG_CH_RECOVER_T,ucTokenID));
340 DATA_STRUC_INSPECTING_ASSERT(
341 OFFSET_OF(MSG_CH_GRANT_T,ucPrimaryChannel) ==
342 OFFSET_OF(MSG_CH_RECOVER_T,ucPrimaryChannel));
344 DATA_STRUC_INSPECTING_ASSERT(
345 OFFSET_OF(MSG_CH_GRANT_T,eRfSco) ==
346 OFFSET_OF(MSG_CH_RECOVER_T,eRfSco));
348 DATA_STRUC_INSPECTING_ASSERT(
349 OFFSET_OF(MSG_CH_GRANT_T,eRfBand) ==
350 OFFSET_OF(MSG_CH_RECOVER_T,eRfBand));
352 DATA_STRUC_INSPECTING_ASSERT(
353 OFFSET_OF(MSG_CH_GRANT_T,eReqType) ==
354 OFFSET_OF(MSG_CH_RECOVER_T,eReqType));