wifi: renew patch drivers/net/wireless
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / mt5931_kk / drv_wlan / include / wlan_bow.h
1 /*
2 ** $Id: //Department/DaVinci/BRANCHES/MT662X_593X_WIFI_DRIVER_V2_3/include/wlan_bow.h#1 $
3 */
4
5 /*! \file   "wlan_bow.h"
6     \brief This file contains the declairations of 802.11 PAL 
7            command processing routines for 
8            MediaTek Inc. 802.11 Wireless LAN Adapters.
9 */
10
11 /*******************************************************************************
12 * Copyright (c) 2007 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: wlan_bow.h $
55  *
56  * 05 25 2011 terry.wu
57  * [WCXRP00000735] [MT6620 Wi-Fi][BoW][FW/Driver] Protect BoW connection establishment
58  * Add BoW Cancel Scan Request and Turn On deactive network function.
59  *
60  * 05 23 2011 terry.wu
61  * [WCXRP00000735] [MT6620 Wi-Fi][BoW][FW/Driver] Protect BoW connection establishment
62  * Add some BoW error handling.
63  *
64  * 05 21 2011 terry.wu
65  * [WCXRP00000735] [MT6620 Wi-Fi][BoW][FW/Driver] Protect BoW connection establishment
66  * Protect BoW connection establishment.
67  *
68  * 05 17 2011 terry.wu
69  * [WCXRP00000730] [MT6620 Wi-Fi][BoW] Send deauth while disconnecting
70  * Send deauth while disconnecting BoW link.
71  *
72  * 05 06 2011 terry.wu
73  * [WCXRP00000707] [MT6620 Wi-Fi][Driver] Fix BoW Multiple Physical Link connect/disconnect issue
74  * Fix BoW Multiple Physical Link connect/disconnect issue.
75  *
76  * 04 15 2011 chinghwa.yu
77  * [WCXRP00000065] Update BoW design and settings
78  * Add BOW short range mode.
79  *
80  * 03 27 2011 chinghwa.yu
81  * [WCXRP00000065] Update BoW design and settings
82  * Support multiple physical link.
83  *
84  * 03 10 2011 chinghwa.yu
85  * [WCXRP00000065] Update BoW design and settings
86  * Add BOW table.
87  *
88  * 02 16 2011 chinghwa.yu
89  * [WCXRP00000065] Update BoW design and settings
90  * Add bowNotifyAllLinkDisconnected  interface and change channel grant procedure for bow starting..
91  *
92  * 02 15 2011 chinghwa.yu
93  * [WCXRP00000065] Update BoW design and settings
94  * Update bowString and channel grant.
95  *
96  * 01 11 2011 chinghwa.yu
97  * [WCXRP00000065] Update BoW design and settings
98  * Update BOW Activity Report structure and bug fix.
99  *
100  * 09 27 2010 chinghwa.yu
101  * [WCXRP00000063] Update BCM CoEx design and settings[WCXRP00000065] Update BoW design and settings
102  * Update BCM/BoW design and settings.
103  *
104  * 09 14 2010 chinghwa.yu
105  * NULL
106  * Add bowRunEventAAAComplete.
107  *
108  * 08 24 2010 chinghwa.yu
109  * NULL
110  * Update BOW for the 1st time.
111  *
112  * 07 30 2010 cp.wu
113  * NULL
114  * 1) BoW wrapper: use definitions instead of hard-coded constant for error code
115  * 2) AIS-FSM: eliminate use of desired RF parameters, use prTargetBssDesc instead
116  * 3) add handling for RX_PKT_DESTINATION_HOST_WITH_FORWARD for GO-broadcast frames
117  *
118  * 07 15 2010 cp.wu
119  * 
120  * sync. bluetooth-over-Wi-Fi interface to driver interface document v0.2.6.
121  *
122  * 07 08 2010 cp.wu
123  * 
124  * [WPD00003833] [MT6620 and MT5931] Driver migration - move to new repository.
125  *
126  * 06 06 2010 kevin.huang
127  * [WPD00003832][MT6620 5931] Create driver base 
128  * [MT6620 5931] Create driver base
129  *
130  * 05 17 2010 cp.wu
131  * [WPD00003831][MT6620 Wi-Fi] Add framework for Wi-Fi Direct support 
132  * 1) add timeout handler mechanism for pending command packets
133  * 2) add p2p add/removal key
134  *
135  * 05 13 2010 cp.wu
136  * [WPD00003823][MT6620 Wi-Fi] Add Bluetooth-over-Wi-Fi support 
137  * 1) all BT physical handles shares the same RSSI/Link Quality.
138  * 2) simplify BT command composing
139  *
140  * 04 28 2010 cp.wu
141  * [WPD00003823][MT6620 Wi-Fi] Add Bluetooth-over-Wi-Fi support 
142  * change prefix for data structure used to communicate with 802.11 PAL
143  * to avoid ambiguous naming with firmware interface
144  *
145  * 04 27 2010 cp.wu
146  * [WPD00003823][MT6620 Wi-Fi] Add Bluetooth-over-Wi-Fi support 
147  * add multiple physical link support
148  *
149  * 04 13 2010 cp.wu
150  * [WPD00003823][MT6620 Wi-Fi] Add Bluetooth-over-Wi-Fi support 
151  * add framework for BT-over-Wi-Fi support.
152  *  *  *  *  *  *  *  *  *  *  *  * 1) prPendingCmdInfo is replaced by queue for multiple handler capability
153  *  *  *  *  *  *  *  *  *  *  *  * 2) command sequence number is now increased atomically 
154  *  *  *  *  *  *  *  *  *  *  *  * 3) private data could be hold and taken use for other purpose
155 **
156 */
157
158 #ifndef _WLAN_BOW_H
159 #define _WLAN_BOW_H
160
161 /*******************************************************************************
162 *                         C O M P I L E R   F L A G S
163 ********************************************************************************
164 */
165
166 /*******************************************************************************
167 *                    E X T E R N A L   R E F E R E N C E S
168 ********************************************************************************
169 */
170 #include "nic/bow.h"
171 #include "nic/cmd_buf.h"
172
173 #if CFG_ENABLE_BT_OVER_WIFI
174 /*******************************************************************************
175 *                              C O N S T A N T S
176 ********************************************************************************
177 */
178 #define BOWCMD_STATUS_SUCCESS       0
179 #define BOWCMD_STATUS_FAILURE       1
180 #define BOWCMD_STATUS_UNACCEPTED    2
181 #define BOWCMD_STATUS_INVALID       3
182 #define BOWCMD_STATUS_TIMEOUT       4
183
184 #define BOW_WILDCARD_SSID               "AMP"
185 #define BOW_WILDCARD_SSID_LEN       3
186 #define BOW_SSID_LEN                            21
187
188  /* 0: query, 1: setup, 2: destroy */
189 #define BOW_QUERY_CMD                   0
190 #define BOW_SETUP_CMD                   1
191 #define BOW_DESTROY_CMD               2
192
193 #define BOW_INITIATOR                   0
194 #define BOW_RESPONDER                  1
195
196 /*******************************************************************************
197 *                            P U B L I C   D A T A
198 ********************************************************************************
199 */
200
201 typedef struct _BOW_TABLE_T {
202     UINT_8                      ucAcquireID;
203     BOOLEAN                     fgIsValid;
204     ENUM_BOW_DEVICE_STATE       eState;
205     UINT_8                      aucPeerAddress[6];
206     //UINT_8                      ucRole;
207     //UINT_8                      ucChannelNum;
208     UINT_16                     u2Reserved;
209 } BOW_TABLE_T, *P_BOW_TABLE_T;
210
211 typedef WLAN_STATUS (*PFN_BOW_CMD_HANDLE)(P_ADAPTER_T, P_AMPC_COMMAND);
212
213 typedef struct _BOW_CMD_T {
214     UINT_8              uCmdID;
215     PFN_BOW_CMD_HANDLE  pfCmdHandle;
216 } BOW_CMD_T, *P_BOW_CMD_T;
217
218 typedef struct _BOW_EVENT_ACTIVITY_REPORT_T {
219         UINT_8  ucReason;
220         UINT_8  aucReserved;
221         UINT_8  aucPeerAddress[6];
222 } BOW_EVENT_ACTIVITY_REPORT_T, *P_BOW_EVENT_ACTIVITY_REPORT_T;
223
224 /*
225 ucReason:       0: success
226         1: general failure
227         2: too much time (> 2/3 second totally) requested for scheduling.
228         Others: reserved.
229 */
230
231 typedef struct _BOW_EVENT_SYNC_TSF_T {
232     UINT_64     u4TsfTime;
233     UINT_32     u4TsfSysTime;
234     UINT_32     u4ScoTime;
235     UINT_32     u4ScoSysTime;
236     } BOW_EVENT_SYNC_TSF_T, *P_BOW_EVENT_SYNC_TSF_T;
237
238 typedef struct _BOW_ACTIVITY_REPORT_BODY_T {
239     UINT_32             u4StartTime;
240     UINT_32             u4Duration;
241     UINT_32             u4Periodicity;
242     } BOW_ACTIVITY_REPORT_BODY_T, *P_BOW_ACTIVITY_REPORT_BODY_T;
243
244 typedef struct _BOW_ACTIVITY_REPORT_T {
245     UINT_8              aucPeerAddress[6];
246     UINT_8              ucScheduleKnown;
247     UINT_8              ucNumReports;
248     BOW_ACTIVITY_REPORT_BODY_T arBowActivityReportBody[MAX_ACTIVITY_REPORT];
249     } BOW_ACTIVITY_REPORT_T, *P_BOW_ACTIVITY_REPORT_T;
250
251 /*******************************************************************************
252 *                           P R I V A T E   D A T A
253 ********************************************************************************
254 */
255
256 /*******************************************************************************
257 *                                 M A C R O S
258 ********************************************************************************
259 */
260
261 /*******************************************************************************
262 *                   F U N C T I O N   D E C L A R A T I O N S
263 ********************************************************************************
264 */
265 /*--------------------------------------------------------------*/
266 /* Firmware Command Packer                                      */
267 /*--------------------------------------------------------------*/
268 WLAN_STATUS
269 wlanoidSendSetQueryBowCmd (
270     IN P_ADAPTER_T  prAdapter,
271     UINT_8          ucCID,
272     BOOLEAN         fgSetQuery,
273     BOOLEAN         fgNeedResp,
274     PFN_CMD_DONE_HANDLER pfCmdDoneHandler,
275     PFN_CMD_TIMEOUT_HANDLER pfCmdTimeoutHandler,
276     UINT_32         u4SetQueryInfoLen,
277     PUINT_8         pucInfoBuffer,
278     IN UINT_8       ucSeqNumber
279     );
280
281
282 /*--------------------------------------------------------------*/
283 /* Command Dispatcher                                           */
284 /*--------------------------------------------------------------*/
285 WLAN_STATUS
286 wlanbowHandleCommand(
287     IN P_ADAPTER_T      prAdapter,
288     IN P_AMPC_COMMAND   prCmd
289     );
290
291
292 /*--------------------------------------------------------------*/
293 /* Routines to handle command                                   */
294 /*--------------------------------------------------------------*/
295 WLAN_STATUS
296 bowCmdGetMacStatus(
297     IN P_ADAPTER_T      prAdapter,
298     IN P_AMPC_COMMAND   prCmd
299     );
300
301 WLAN_STATUS
302 bowCmdSetupConnection(
303     IN P_ADAPTER_T      prAdapter,
304     IN P_AMPC_COMMAND   prCmd
305     );
306
307 WLAN_STATUS
308 bowCmdDestroyConnection(
309     IN P_ADAPTER_T      prAdapter,
310     IN P_AMPC_COMMAND   prCmd
311     );
312
313 WLAN_STATUS
314 bowCmdSetPTK(
315     IN P_ADAPTER_T      prAdapter,
316     IN P_AMPC_COMMAND   prCmd
317     );
318
319 WLAN_STATUS
320 bowCmdReadRSSI(
321     IN P_ADAPTER_T      prAdapter,
322     IN P_AMPC_COMMAND   prCmd
323     );
324
325 WLAN_STATUS
326 bowCmdReadLinkQuality(
327     IN P_ADAPTER_T      prAdapter,
328     IN P_AMPC_COMMAND   prCmd
329     );
330
331 WLAN_STATUS
332 bowCmdShortRangeMode(
333     IN P_ADAPTER_T      prAdapter,
334     IN P_AMPC_COMMAND   prCmd
335     );
336
337 WLAN_STATUS
338 bowCmdGetChannelList(
339     IN P_ADAPTER_T      prAdapter,
340     IN P_AMPC_COMMAND   prCmd
341     );
342
343 VOID
344 wlanbowCmdEventSetStatus(
345     IN P_ADAPTER_T  prAdapter,
346     IN P_AMPC_COMMAND   prCmd,
347     IN UINT_8   ucEventBuf
348     );
349
350 /*--------------------------------------------------------------*/
351 /* Callbacks for event indication                               */
352 /*--------------------------------------------------------------*/
353 VOID
354 wlanbowCmdEventSetCommon (
355     IN P_ADAPTER_T  prAdapter,
356     IN P_CMD_INFO_T prCmdInfo,
357     IN PUINT_8      pucEventBuf
358     );
359
360 VOID
361 wlanbowCmdEventLinkConnected (
362     IN P_ADAPTER_T  prAdapter,
363     IN P_CMD_INFO_T prCmdInfo,
364     IN PUINT_8      pucEventBuf
365     );
366
367 VOID
368 wlanbowCmdEventLinkDisconnected (
369     IN P_ADAPTER_T  prAdapter,
370     IN P_CMD_INFO_T prCmdInfo,
371     IN PUINT_8      pucEventBuf
372     );
373
374 VOID
375 wlanbowCmdEventSetSetupConnection (
376     IN P_ADAPTER_T  prAdapter,
377     IN P_CMD_INFO_T prCmdInfo,
378     IN PUINT_8      pucEventBuf
379     );
380
381 VOID
382 wlanbowCmdEventReadLinkQuality (
383     IN P_ADAPTER_T  prAdapter,
384     IN P_CMD_INFO_T prCmdInfo,
385     IN PUINT_8      pucEventBuf
386     );
387
388 VOID
389 wlanbowCmdEventReadRssi (
390     IN P_ADAPTER_T  prAdapter,
391     IN P_CMD_INFO_T prCmdInfo,
392     IN PUINT_8      pucEventBuf
393     );
394
395 VOID
396 wlanbowCmdTimeoutHandler (
397     IN P_ADAPTER_T  prAdapter,
398     IN P_CMD_INFO_T prCmdInfo
399     );
400
401 VOID
402 bowStopping(
403     IN P_ADAPTER_T prAdapter);
404
405 VOID
406 bowStarting (
407     IN P_ADAPTER_T prAdapter
408     );
409
410 VOID
411 bowAssignSsid (
412     IN PUINT_8 pucSsid,
413     IN PUINT_8 pucSsidLen
414     );
415
416 BOOLEAN
417 bowValidateProbeReq (
418     IN P_ADAPTER_T prAdapter,
419     IN P_SW_RFB_T prSwRfb,
420     OUT PUINT_32 pu4ControlFlags
421     );
422
423 VOID
424 bowSendBeacon(
425     IN P_ADAPTER_T prAdapter,
426     UINT_32 u4Param
427     );
428
429 VOID
430 bowResponderScan(
431     IN P_ADAPTER_T prAdapter
432     );
433
434 VOID
435 bowResponderScanDone(
436     IN P_ADAPTER_T prAdapter,
437     IN P_MSG_HDR_T prMsgHdr
438     );
439
440 VOID
441 bowResponderCancelScan (
442     IN P_ADAPTER_T prAdapter,
443     IN BOOLEAN fgIsChannelExtention
444     );
445
446 VOID
447 bowResponderJoin(
448     IN P_ADAPTER_T prAdapter,
449     P_BSS_DESC_T prBssDesc
450     );
451
452 VOID
453 bowFsmRunEventJoinComplete(
454     IN P_ADAPTER_T prAdapter,
455     IN P_MSG_HDR_T prMsgHdr
456     );
457
458 VOID
459 bowIndicationOfMediaStateToHost(
460     IN P_ADAPTER_T prAdapter,
461     ENUM_PARAM_MEDIA_STATE_T eConnectionState,
462     BOOLEAN fgDelayIndication
463     );
464
465 VOID
466 bowRunEventAAATxFail(
467     IN P_ADAPTER_T prAdapter,
468     IN P_STA_RECORD_T prStaRec
469     );
470
471 WLAN_STATUS
472 bowRunEventAAAComplete(
473     IN P_ADAPTER_T prAdapter,
474     IN P_STA_RECORD_T prStaRec
475     );
476
477 WLAN_STATUS
478 bowRunEventRxDeAuth (
479     IN P_ADAPTER_T prAdapter,
480     IN P_STA_RECORD_T prStaRec,
481     IN P_SW_RFB_T prSwRfb
482     );
483
484 VOID
485 bowDisconnectLink (
486     IN P_ADAPTER_T            prAdapter,
487     IN P_MSDU_INFO_T          prMsduInfo,
488     IN ENUM_TX_RESULT_CODE_T  rTxDoneStatus
489     );
490
491 BOOLEAN
492 bowValidateAssocReq(
493     IN P_ADAPTER_T prAdapter,
494     IN P_SW_RFB_T prSwRfb,
495     OUT PUINT_16 pu2StatusCode
496     );
497
498 BOOLEAN
499 bowValidateAuth(
500     IN P_ADAPTER_T prAdapter,
501     IN P_SW_RFB_T prSwRfb,
502     IN PP_STA_RECORD_T pprStaRec,
503     OUT PUINT_16 pu2StatusCode
504     );
505
506 VOID
507 bowRunEventChGrant (
508     IN P_ADAPTER_T prAdapter,
509     IN P_MSG_HDR_T prMsgHdr
510     );
511
512 VOID
513 bowRequestCh (
514     IN P_ADAPTER_T prAdapter
515     );
516
517 VOID
518 bowReleaseCh (
519     IN P_ADAPTER_T prAdapter
520     );
521
522 VOID
523 bowChGrantedTimeout(
524     IN P_ADAPTER_T prAdapter,
525     IN UINT_32 u4Param
526     );
527
528 BOOLEAN
529 bowNotifyAllLinkDisconnected (
530     IN P_ADAPTER_T     prAdapter
531     );
532
533 BOOLEAN
534 bowCheckBowTableIfVaild(
535     IN P_ADAPTER_T prAdapter,
536     IN UINT_8   aucPeerAddress[6]
537     );
538
539 BOOLEAN
540 bowGetBowTableContent(
541     IN P_ADAPTER_T prAdapter,
542     IN UINT_8                   ucBowTableIdx,
543     OUT P_BOW_TABLE_T  prBowTable
544     );
545
546 BOOLEAN
547 bowGetBowTableEntryByPeerAddress(
548     IN P_ADAPTER_T prAdapter,
549     IN UINT_8   aucPeerAddress[6],
550     OUT PUINT_8 pucBowTableIdx
551     );
552
553 BOOLEAN
554 bowGetBowTableFreeEntry(
555     IN P_ADAPTER_T prAdapter,
556     OUT PUINT_8 pucBowTableIdx
557     );
558
559 ENUM_BOW_DEVICE_STATE
560 bowGetBowTableState(
561     IN P_ADAPTER_T prAdapter,
562     IN UINT_8   aucPeerAddress[6]
563     );
564
565 BOOLEAN
566 bowSetBowTableState(
567     IN P_ADAPTER_T prAdapter,
568     IN UINT_8   aucPeerAddress[6],
569     IN ENUM_BOW_DEVICE_STATE eState
570     );
571
572
573 BOOLEAN
574 bowSetBowTableContent(
575     IN P_ADAPTER_T prAdapter,
576     IN UINT_8                    ucBowTableIdx,
577     IN P_BOW_TABLE_T      prBowTable
578     );
579
580 /*******************************************************************************
581 *                              F U N C T I O N S
582 ********************************************************************************
583 */
584
585 #endif
586 #endif /* _WLAN_BOW_H */
587