add MTK-combo-module,continue with commit 17f39ed917874e77e80411f33faba1b7ee8138c8
[firefly-linux-kernel-4.4.55.git] / drivers / mtk_wcn_combo / drv_wlan / wlan / include / mgmt / bss.h
1 /*
2 ** $Id: @(#) bss.h
3 */
4
5 /*! \file   "bss.h"
6     \brief  In this file we define the function prototype used in BSS/IBSS.
7
8     The file contains the function declarations and defines for used in BSS/IBSS.
9 */
10
11 /*******************************************************************************
12 * Copyright (c) 2010 MediaTek Inc.
13 *
14 * All rights reserved. Copying, compilation, modification, distribution
15 * or any other use whatsoever of this material is strictly prohibited
16 * except in accordance with a Software License Agreement with
17 * MediaTek Inc.
18 ********************************************************************************
19 */
20
21 /*******************************************************************************
22 * LEGAL DISCLAIMER
23 *
24 * BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND
25 * AGREES THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK
26 * SOFTWARE") RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE
27 * PROVIDED TO BUYER ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY
28 * DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
29 * LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
30 * PARTICULAR PURPOSE OR NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE
31 * ANY WARRANTY WHATSOEVER WITH RESPECT TO THE SOFTWARE OF ANY THIRD PARTY
32 * WHICH MAY BE USED BY, INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK
33 * SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY
34 * WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE
35 * FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S SPECIFICATION OR TO
36 * CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
37 *
38 * BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
39 * LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL
40 * BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT
41 * ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY
42 * BUYER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
43 *
44 * THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
45 * WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT
46 * OF LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING
47 * THEREOF AND RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN
48 * FRANCISCO, CA, UNDER THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE
49 * (ICC).
50 ********************************************************************************
51 */
52
53 /*
54 ** $Log: bss.h $
55  *
56  * 01 15 2012 yuche.tsai
57  * NULL
58  * Fix wrong basic rate issue.
59  *
60  * 10 19 2011 yuche.tsai
61  * [WCXRP00001045] [WiFi Direct][Driver] Check 2.1 branch.
62  * Branch 2.1
63  * Davinci Maintrunk Label: MT6620_WIFI_DRIVER_FW_TRUNK_MT6620E5_111019_0926.
64  *
65  * 03 19 2011 yuche.tsai
66  * [WCXRP00000581] [Volunteer Patch][MT6620][Driver] P2P IE in Assoc Req Issue
67  * Append P2P IE in assoc request if P2P is enabled.
68  *
69  * 03 18 2011 cp.wu
70  * [WCXRP00000577] [MT6620 Wi-Fi][Driver][FW] Create V2.0 branch for firmware and driver
71  * create V2.0 driver release based on label "MT6620_WIFI_DRIVER_V2_0_110318_1600" from main trunk
72  *
73  * 03 02 2011 wh.su
74  * [WCXRP00000448] [MT6620 Wi-Fi][Driver] Fixed WSC IE not send out at probe request
75  * Add code to send beacon and probe response WSC IE at Auto GO.
76  *
77  * 02 23 2011 eddie.chen
78  * [WCXRP00000463] [MT6620 Wi-Fi][FW/Driver][Hotspot] Cannot update WMM PS STA's partital bitmap
79  * Fix parsing WMM INFO and bmp delivery bitmap definition.
80  *
81  * 01 31 2011 george.huang
82  * [WCXRP00000333] [MT5931][FW] support SRAM power control drivers
83  * Extend TIM PVB, from 2 to 3 octets.
84  *
85  * 11 29 2010 cp.wu
86  * [WCXRP00000210] [MT6620 Wi-Fi][Driver][FW] Set RCPI value in STA_REC for initial TX rate selection of auto-rate algorithm
87  * update ucRcpi of STA_RECORD_T for AIS when
88  * 1) Beacons for IBSS merge is received
89  * 2) Associate Response for a connecting peer is received
90  *
91  * 09 03 2010 kevin.huang
92  * NULL
93  * Refine #include sequence and solve recursive/nested #include issue
94  *
95  * 08 12 2010 kevin.huang
96  * NULL
97  * Update bssProcessProbeRequest() and bssSendBeaconProbeResponse() declarations
98  *
99  * 07 19 2010 cp.wu
100  *
101  * [WPD00003833] [MT6620 and MT5931] Driver migration.
102  * when IBSS is being merged-in, send command packet to PM for connected indication
103  *
104  * 07 08 2010 cp.wu
105  *
106  * [WPD00003833] [MT6620 and MT5931] Driver migration - move to new repository.
107  *
108  * 06 25 2010 george.huang
109  * [WPD00001556]Basic power managemenet function
110  * Create beacon update path, with expose bssUpdateBeaconContent()
111  *
112  * 06 17 2010 yuche.tsai
113  * [WPD00003839][MT6620 5931][P2P] Feature migration
114  * Add CTRL FLAGS for Probe Response.
115  *
116  * 06 09 2010 cp.wu
117  * [WPD00003833][MT6620 and MT5931] Driver migration
118  * add necessary changes to driver data paths.
119  *
120  * 06 07 2010 cp.wu
121  * [WPD00003833][MT6620 and MT5931] Driver migration
122  * add aa_fsm.h, ais_fsm.h, bss.h, mib.h and scan.h.
123  *
124  * 06 04 2010 george.huang
125  * [BORA00000678][MT6620]WiFi LP integration
126  * [PM] Support U-APSD for STA mode
127  *
128  * 05 28 2010 kevin.huang
129  * [BORA00000794][WIFISYS][New Feature]Power Management Support
130  * Add ClientList handling API - bssClearClientList, bssAddStaRecToClientList
131  *
132  * 05 14 2010 kevin.huang
133  * [BORA00000794][WIFISYS][New Feature]Power Management Support
134  * Remove unused typedef.
135  *
136  * 05 12 2010 kevin.huang
137  * [BORA00000794][WIFISYS][New Feature]Power Management Support
138  * Fix file merge error
139  *
140  * 05 12 2010 kevin.huang
141  * [BORA00000794][WIFISYS][New Feature]Power Management Support
142  * Add Power Management - Legacy PS-POLL support.
143  *
144  * 04 19 2010 kevin.huang
145  * [BORA00000714][WIFISYS][New Feature]Beacon Timeout Support
146  * Add Beacon Timeout Support
147  *  *  *  and will send Null frame to diagnose connection
148  *
149  * 03 16 2010 kevin.huang
150  * [BORA00000663][WIFISYS][New Feature] AdHoc Mode Support
151  * Add AdHoc Mode
152  *
153  * 02 23 2010 kevin.huang
154  * [BORA00000603][WIFISYS] [New Feature] AAA Module Support
155  * Add DTIM count update while TX Beacon
156  *
157  * 02 04 2010 kevin.huang
158  * [BORA00000603][WIFISYS] [New Feature] AAA Module Support
159  * Add AAA Module Support, Revise Net Type to Net Type Index for array lookup
160 */
161
162 #ifndef _BSS_H
163 #define _BSS_H
164
165 /*******************************************************************************
166 *                         C O M P I L E R   F L A G S
167 ********************************************************************************
168 */
169
170 /*******************************************************************************
171 *                    E X T E R N A L   R E F E R E N C E S
172 ********************************************************************************
173 */
174
175 /*******************************************************************************
176 *                              C O N S T A N T S
177 ********************************************************************************
178 */
179 //NOTE(Kevin): change define for george
180 //#define MAX_LEN_TIM_PARTIAL_BMP     (((MAX_ASSOC_ID + 1) + 7) / 8)   /* Required bits = (MAX_ASSOC_ID + 1) */
181 #define MAX_LEN_TIM_PARTIAL_BMP                     ((CFG_STA_REC_NUM + 7) / 8)  /* reserve length greater than maximum size of STA_REC */ //obsoleted: Assume we only use AID:1~15
182
183 /* CTRL FLAGS for Probe Response */
184 #define BSS_PROBE_RESP_USE_P2P_DEV_ADDR             BIT(0)
185 #define BSS_PROBE_RESP_INCLUDE_P2P_IE               BIT(1)
186
187 /*******************************************************************************
188 *                             D A T A   T Y P E S
189 ********************************************************************************
190 */
191
192 /*******************************************************************************
193 *                            P U B L I C   D A T A
194 ********************************************************************************
195 */
196
197 /*******************************************************************************
198 *                           P R I V A T E   D A T A
199 ********************************************************************************
200 */
201
202 /*******************************************************************************
203 *                                 M A C R O S
204 ********************************************************************************
205 */
206 #define bssAssignAssocID(_prStaRec)      ((_prStaRec)->ucIndex + 1)
207
208 /*******************************************************************************
209 *                   F U N C T I O N   D E C L A R A T I O N S
210 ********************************************************************************
211 */
212 /*----------------------------------------------------------------------------*/
213 /* Routines for all Operation Modes                                           */
214 /*----------------------------------------------------------------------------*/
215 P_STA_RECORD_T
216 bssCreateStaRecFromBssDesc (
217     IN P_ADAPTER_T                  prAdapter,
218     IN ENUM_STA_TYPE_T              eStaType,
219     IN ENUM_NETWORK_TYPE_INDEX_T    eNetTypeIndex,
220     IN P_BSS_DESC_T                 prBssDesc
221     );
222
223 VOID
224 bssComposeNullFrame (
225     IN P_ADAPTER_T      prAdapter,
226     IN PUINT_8          pucBuffer,
227     IN P_STA_RECORD_T   prStaRec
228     );
229
230 VOID
231 bssComposeQoSNullFrame (
232     IN P_ADAPTER_T      prAdapter,
233     IN PUINT_8          pucBuffer,
234     IN P_STA_RECORD_T   prStaRec,
235     IN UINT_8           ucUP,
236     IN BOOLEAN          fgSetEOSP
237     );
238
239 WLAN_STATUS
240 bssSendNullFrame (
241     IN P_ADAPTER_T          prAdapter,
242     IN P_STA_RECORD_T       prStaRec,
243     IN PFN_TX_DONE_HANDLER  pfTxDoneHandler
244     );
245
246 WLAN_STATUS
247 bssSendQoSNullFrame (
248     IN P_ADAPTER_T          prAdapter,
249     IN P_STA_RECORD_T       prStaRec,
250     IN UINT_8               ucUP,
251     IN PFN_TX_DONE_HANDLER  pfTxDoneHandler
252     );
253
254
255 /*----------------------------------------------------------------------------*/
256 /* Routines for both IBSS(AdHoc) and BSS(AP)                                  */
257 /*----------------------------------------------------------------------------*/
258 VOID
259 bssGenerateExtSuppRate_IE (
260     IN P_ADAPTER_T      prAdapter,
261     IN P_MSDU_INFO_T    prMsduInfo
262     );
263
264 VOID
265 bssBuildBeaconProbeRespFrameCommonIEs (
266     IN P_MSDU_INFO_T    prMsduInfo,
267     IN P_BSS_INFO_T     prBssInfo,
268     IN PUINT_8          pucDestAddr
269     );
270
271 VOID
272 bssComposeBeaconProbeRespFrameHeaderAndFF (
273     IN PUINT_8      pucBuffer,
274     IN PUINT_8      pucDestAddr,
275     IN PUINT_8      pucOwnMACAddress,
276     IN PUINT_8      pucBSSID,
277     IN UINT_16      u2BeaconInterval,
278     IN UINT_16      u2CapInfo
279     );
280
281 WLAN_STATUS
282 bssSendBeaconProbeResponse (
283     IN P_ADAPTER_T prAdapter,
284     IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex,
285     IN PUINT_8 pucDestAddr,
286     IN UINT_32 u4ControlFlags
287     );
288
289 WLAN_STATUS
290 bssProcessProbeRequest (
291     IN P_ADAPTER_T  prAdapter,
292     IN P_SW_RFB_T   prSwRfb
293     );
294
295 VOID
296 bssClearClientList (
297     IN P_ADAPTER_T  prAdapter,
298     IN P_BSS_INFO_T prBssInfo
299     );
300
301 VOID
302 bssAddStaRecToClientList (
303     IN P_ADAPTER_T  prAdapter,
304     IN P_BSS_INFO_T prBssInfo,
305     IN P_STA_RECORD_T prStaRec
306     );
307
308 VOID
309 bssRemoveStaRecFromClientList (
310     IN P_ADAPTER_T  prAdapter,
311     IN P_BSS_INFO_T prBssInfo,
312     IN P_STA_RECORD_T prStaRec
313     );
314
315
316 /*----------------------------------------------------------------------------*/
317 /* Routines for IBSS(AdHoc) only                                              */
318 /*----------------------------------------------------------------------------*/
319 VOID
320 ibssProcessMatchedBeacon (
321     IN P_ADAPTER_T  prAdapter,
322     IN P_BSS_INFO_T prBssInfo,
323     IN P_BSS_DESC_T prBssDesc,
324     IN UINT_8       ucRCPI
325     );
326
327 WLAN_STATUS
328 ibssCheckCapabilityForAdHocMode (
329     IN P_ADAPTER_T  prAdapter,
330     IN P_BSS_DESC_T prBssDesc
331     );
332
333 VOID
334 ibssInitForAdHoc (
335     IN P_ADAPTER_T  prAdapter,
336     IN P_BSS_INFO_T prBssInfo
337     );
338
339 WLAN_STATUS
340 bssUpdateBeaconContent (
341     IN P_ADAPTER_T prAdapter,
342     IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex
343     );
344
345
346 /*----------------------------------------------------------------------------*/
347 /* Routines for BSS(AP) only                                                  */
348 /*----------------------------------------------------------------------------*/
349 VOID
350 bssInitForAP (
351     IN P_ADAPTER_T  prAdapter,
352     IN P_BSS_INFO_T prBssInfo,
353     IN BOOLEAN fgIsRateUpdate
354     );
355
356 VOID
357 bssUpdateDTIMCount (
358     IN P_ADAPTER_T  prAdapter,
359     IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex
360     );
361
362 VOID
363 bssSetTIMBitmap (
364     IN P_ADAPTER_T  prAdapter,
365     IN P_BSS_INFO_T prBssInfo,
366     IN UINT_16 u2AssocId
367     );
368
369
370 /*link function to p2p module for txBcnIETable*/
371 #if CFG_ENABLE_WIFI_DIRECT
372 UINT_32
373 linkToP2pCalculateP2P_IELenForBeacon (
374     IN P_ADAPTER_T prAdapter,
375     IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex,
376     IN P_STA_RECORD_T prStaRec
377     );
378
379 VOID
380 linkToP2pGenerateP2P_IEForBeacon (
381     IN P_ADAPTER_T prAdapter,
382     IN P_MSDU_INFO_T prMsduInfo
383     );
384
385 UINT_32
386 linkToP2pCalculateWSC_IELenForBeacon (
387     IN P_ADAPTER_T prAdapter,
388     IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex,
389     IN P_STA_RECORD_T prStaRec
390     );
391
392 VOID
393 linkToP2pGenerateP2P_IEForAssocReq (
394     IN P_ADAPTER_T prAdapter,
395     IN P_MSDU_INFO_T prMsduInfo
396     );
397
398 VOID
399 linkToP2pGenerateP2P_IEForAssocRsp (
400     IN P_ADAPTER_T prAdapter,
401     IN P_MSDU_INFO_T prMsduInfo
402     );
403
404
405 UINT_32
406 linkToP2pCalculateP2P_IELenForAssocReq (
407     IN P_ADAPTER_T prAdapter,
408     IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex,
409     IN P_STA_RECORD_T prStaRec
410     );
411
412 UINT_32
413 linkToP2pCalculateP2P_IELenForAssocRsp (
414     IN P_ADAPTER_T prAdapter,
415     IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex,
416     IN P_STA_RECORD_T prStaRec
417     );
418
419 VOID
420 linkToP2pGenerateWSC_IEForBeacon(
421     IN P_ADAPTER_T        prAdapter,
422     IN P_MSDU_INFO_T      prMsduInfo
423     );
424
425 UINT_32
426 linkToP2pCalculateWSC_IELenForProbeRsp (
427     IN P_ADAPTER_T prAdapter,
428     IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex,
429     IN P_STA_RECORD_T prStaRec
430     );
431
432 VOID
433 linkToP2pGenerateWSC_IEForProbeRsp(
434     IN P_ADAPTER_T        prAdapter,
435     IN P_MSDU_INFO_T      prMsduInfo
436     );
437 #endif
438
439 /* WMM-2.2.2 WMM ACI to AC coding */
440 typedef enum _ENUM_ACI_T {
441     ACI_BE = 0,
442     ACI_BK = 1,
443     ACI_VI = 2,
444     ACI_VO = 3,
445     ACI_NUM
446 } ENUM_ACI_T, *P_ENUM_ACI_T;
447
448 typedef enum _ENUM_AC_PRIORITY_T {
449     AC_BK_PRIORITY = 0,
450     AC_BE_PRIORITY,
451     AC_VI_PRIORITY,
452     AC_VO_PRIORITY
453 } ENUM_AC_PRIORITY_T, *P_ENUM_AC_PRIORITY_T;
454
455
456 #endif /* _BSS_H */
457