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