import PULS_20160108
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / misc / mediatek / connectivity / combo / drv_wlan / mt6630 / 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 ** 09 17 2012 cm.chang
17 ** [BORA00002149] [MT6630 Wi-Fi] Initial software development
18 ** Duplicate source from MT6620 v2.3 driver branch
19 ** (Davinci label: MT6620_WIFI_Driver_V2_3_120913_1942_As_MT6630_Base)
20 *
21 * 05 25 2011 terry.wu
22 * [WCXRP00000735] [MT6620 Wi-Fi][BoW][FW/Driver] Protect BoW connection establishment
23 * Add BoW Cancel Scan Request and Turn On deactive network function.
24 *
25 * 05 23 2011 terry.wu
26 * [WCXRP00000735] [MT6620 Wi-Fi][BoW][FW/Driver] Protect BoW connection establishment
27 * Add some BoW error handling.
28 *
29 * 05 21 2011 terry.wu
30 * [WCXRP00000735] [MT6620 Wi-Fi][BoW][FW/Driver] Protect BoW connection establishment
31 * Protect BoW connection establishment.
32 *
33 * 05 17 2011 terry.wu
34 * [WCXRP00000730] [MT6620 Wi-Fi][BoW] Send deauth while disconnecting
35 * Send deauth while disconnecting BoW link.
36 *
37 * 05 06 2011 terry.wu
38 * [WCXRP00000707] [MT6620 Wi-Fi][Driver] Fix BoW Multiple Physical Link connect/disconnect issue
39 * Fix BoW Multiple Physical Link connect/disconnect issue.
40 *
41 * 04 15 2011 chinghwa.yu
42 * [WCXRP00000065] Update BoW design and settings
43 * Add BOW short range mode.
44 *
45 * 03 27 2011 chinghwa.yu
46 * [WCXRP00000065] Update BoW design and settings
47 * Support multiple physical link.
48 *
49 * 03 10 2011 chinghwa.yu
50 * [WCXRP00000065] Update BoW design and settings
51 * Add BOW table.
52 *
53 * 02 16 2011 chinghwa.yu
54 * [WCXRP00000065] Update BoW design and settings
55 * Add bowNotifyAllLinkDisconnected interface and change channel grant procedure for bow starting..
56 *
57 * 02 15 2011 chinghwa.yu
58 * [WCXRP00000065] Update BoW design and settings
59 * Update bowString and channel grant.
60 *
61 * 01 11 2011 chinghwa.yu
62 * [WCXRP00000065] Update BoW design and settings
63 * Update BOW Activity Report structure and bug fix.
64 *
65 * 09 27 2010 chinghwa.yu
66 * [WCXRP00000063] Update BCM CoEx design and settings[WCXRP00000065] Update BoW design and settings
67 * Update BCM/BoW design and settings.
68 *
69 * 09 14 2010 chinghwa.yu
70 * NULL
71 * Add bowRunEventAAAComplete.
72 *
73 * 08 24 2010 chinghwa.yu
74 * NULL
75 * Update BOW for the 1st time.
76 *
77 * 07 30 2010 cp.wu
78 * NULL
79 * 1) BoW wrapper: use definitions instead of hard-coded constant for error code
80 * 2) AIS-FSM: eliminate use of desired RF parameters, use prTargetBssDesc instead
81 * 3) add handling for RX_PKT_DESTINATION_HOST_WITH_FORWARD for GO-broadcast frames
82 *
83 * 07 15 2010 cp.wu
84 *
85 * sync. bluetooth-over-Wi-Fi interface to driver interface document v0.2.6.
86 *
87 * 07 08 2010 cp.wu
88 *
89 * [WPD00003833] [MT6620 and MT5931] Driver migration - move to new repository.
90 *
91 * 06 06 2010 kevin.huang
92 * [WPD00003832][MT6620 5931] Create driver base
93 * [MT6620 5931] Create driver base
94 *
95 * 05 17 2010 cp.wu
96 * [WPD00003831][MT6620 Wi-Fi] Add framework for Wi-Fi Direct support
97 * 1) add timeout handler mechanism for pending command packets
98 * 2) add p2p add/removal key
99 *
100 * 05 13 2010 cp.wu
101 * [WPD00003823][MT6620 Wi-Fi] Add Bluetooth-over-Wi-Fi support
102 * 1) all BT physical handles shares the same RSSI/Link Quality.
103 * 2) simplify BT command composing
104 *
105 * 04 28 2010 cp.wu
106 * [WPD00003823][MT6620 Wi-Fi] Add Bluetooth-over-Wi-Fi support
107 * change prefix for data structure used to communicate with 802.11 PAL
108 * to avoid ambiguous naming with firmware interface
109 *
110 * 04 27 2010 cp.wu
111 * [WPD00003823][MT6620 Wi-Fi] Add Bluetooth-over-Wi-Fi support
112 * add multiple physical link support
113 *
114 * 04 13 2010 cp.wu
115 * [WPD00003823][MT6620 Wi-Fi] Add Bluetooth-over-Wi-Fi support
116 * add framework for BT-over-Wi-Fi support.
117 * * * * * * * * * * * * 1) prPendingCmdInfo is replaced by queue for multiple handler capability
118 * * * * * * * * * * * * 2) command sequence number is now increased atomically
119 * * * * * * * * * * * * 3) private data could be hold and taken use for other purpose
120 **
121 */
122
123 #ifndef _WLAN_BOW_H
124 #define _WLAN_BOW_H
125
126 /*******************************************************************************
127 * C O M P I L E R F L A G S
128 ********************************************************************************
129 */
130
131 /*******************************************************************************
132 * E X T E R N A L R E F E R E N C E S
133 ********************************************************************************
134 */
135 #include "nic/bow.h"
136 #include "nic/cmd_buf.h"
137
138 #if CFG_ENABLE_BT_OVER_WIFI
139
140 extern UINT_32 g_arBowRevPalPacketTime[32];
141
142 /*******************************************************************************
143 * C O N S T A N T S
144 ********************************************************************************
145 */
146 #define BOWCMD_STATUS_SUCCESS 0
147 #define BOWCMD_STATUS_FAILURE 1
148 #define BOWCMD_STATUS_UNACCEPTED 2
149 #define BOWCMD_STATUS_INVALID 3
150 #define BOWCMD_STATUS_TIMEOUT 4
151
152 #define BOW_WILDCARD_SSID "AMP"
153 #define BOW_WILDCARD_SSID_LEN 3
154 #define BOW_SSID_LEN 21
155
156 /* 0: query, 1: setup, 2: destroy */
157 #define BOW_QUERY_CMD 0
158 #define BOW_SETUP_CMD 1
159 #define BOW_DESTROY_CMD 2
160
161 #define BOW_INITIATOR 0
162 #define BOW_RESPONDER 1
163
164 /*******************************************************************************
165 * P U B L I C D A T A
166 ********************************************************************************
167 */
168
169 typedef struct _BOW_TABLE_T {
170 UINT_8 ucAcquireID;
171 BOOLEAN fgIsValid;
172 ENUM_BOW_DEVICE_STATE eState;
173 UINT_8 aucPeerAddress[6];
174 /* UINT_8 ucRole; */
175 /* UINT_8 ucChannelNum; */
176 UINT_16 u2Reserved;
177 } BOW_TABLE_T, *P_BOW_TABLE_T;
178
179 typedef WLAN_STATUS(*PFN_BOW_CMD_HANDLE) (P_ADAPTER_T, P_AMPC_COMMAND);
180
181 typedef struct _BOW_CMD_T {
182 UINT_8 uCmdID;
183 PFN_BOW_CMD_HANDLE pfCmdHandle;
184 } BOW_CMD_T, *P_BOW_CMD_T;
185
186 typedef struct _BOW_EVENT_ACTIVITY_REPORT_T {
187 UINT_8 ucReason;
188 UINT_8 aucReserved;
189 UINT_8 aucPeerAddress[6];
190 } BOW_EVENT_ACTIVITY_REPORT_T, *P_BOW_EVENT_ACTIVITY_REPORT_T;
191
192 /*
193 ucReason: 0: success
194 1: general failure
195 2: too much time (> 2/3 second totally) requested for scheduling.
196 Others: reserved.
197 */
198
199 typedef struct _BOW_EVENT_SYNC_TSF_T {
200 UINT_64 u4TsfTime;
201 UINT_32 u4TsfSysTime;
202 UINT_32 u4ScoTime;
203 UINT_32 u4ScoSysTime;
204 } BOW_EVENT_SYNC_TSF_T, *P_BOW_EVENT_SYNC_TSF_T;
205
206 typedef struct _BOW_ACTIVITY_REPORT_BODY_T {
207 UINT_32 u4StartTime;
208 UINT_32 u4Duration;
209 UINT_32 u4Periodicity;
210 } BOW_ACTIVITY_REPORT_BODY_T, *P_BOW_ACTIVITY_REPORT_BODY_T;
211
212 typedef struct _BOW_ACTIVITY_REPORT_T {
213 UINT_8 aucPeerAddress[6];
214 UINT_8 ucScheduleKnown;
215 UINT_8 ucNumReports;
216 BOW_ACTIVITY_REPORT_BODY_T arBowActivityReportBody[MAX_ACTIVITY_REPORT];
217 } BOW_ACTIVITY_REPORT_T, *P_BOW_ACTIVITY_REPORT_T;
218
219 /*******************************************************************************
220 * P R I V A T E D A T A
221 ********************************************************************************
222 */
223
224 /*******************************************************************************
225 * M A C R O S
226 ********************************************************************************
227 */
228
229 /*******************************************************************************
230 * F U N C T I O N D E C L A R A T I O N S
231 ********************************************************************************
232 */
233 /*--------------------------------------------------------------*/
234 /* Firmware Command Packer */
235 /*--------------------------------------------------------------*/
236 WLAN_STATUS
237 wlanoidSendSetQueryBowCmd(IN P_ADAPTER_T prAdapter,
238 UINT_8 ucCID,
239 IN UINT_8 ucBssIdx,
240 BOOLEAN fgSetQuery,
241 BOOLEAN fgNeedResp,
242 PFN_CMD_DONE_HANDLER pfCmdDoneHandler,
243 PFN_CMD_TIMEOUT_HANDLER pfCmdTimeoutHandler,
244 UINT_32 u4SetQueryInfoLen, PUINT_8 pucInfoBuffer, IN UINT_8 ucSeqNumber);
245
246
247 /*--------------------------------------------------------------*/
248 /* Command Dispatcher */
249 /*--------------------------------------------------------------*/
250 WLAN_STATUS wlanbowHandleCommand(IN P_ADAPTER_T prAdapter, IN P_AMPC_COMMAND prCmd);
251
252
253 /*--------------------------------------------------------------*/
254 /* Routines to handle command */
255 /*--------------------------------------------------------------*/
256 WLAN_STATUS bowCmdGetMacStatus(IN P_ADAPTER_T prAdapter, IN P_AMPC_COMMAND prCmd);
257
258 WLAN_STATUS bowCmdSetupConnection(IN P_ADAPTER_T prAdapter, IN P_AMPC_COMMAND prCmd);
259
260 WLAN_STATUS bowCmdDestroyConnection(IN P_ADAPTER_T prAdapter, IN P_AMPC_COMMAND prCmd);
261
262 WLAN_STATUS bowCmdSetPTK(IN P_ADAPTER_T prAdapter, IN P_AMPC_COMMAND prCmd);
263
264 WLAN_STATUS bowCmdReadRSSI(IN P_ADAPTER_T prAdapter, IN P_AMPC_COMMAND prCmd);
265
266 WLAN_STATUS bowCmdReadLinkQuality(IN P_ADAPTER_T prAdapter, IN P_AMPC_COMMAND prCmd);
267
268 WLAN_STATUS bowCmdShortRangeMode(IN P_ADAPTER_T prAdapter, IN P_AMPC_COMMAND prCmd);
269
270 WLAN_STATUS bowCmdGetChannelList(IN P_ADAPTER_T prAdapter, IN P_AMPC_COMMAND prCmd);
271
272 VOID
273 wlanbowCmdEventSetStatus(IN P_ADAPTER_T prAdapter, IN P_AMPC_COMMAND prCmd, IN UINT_8 ucEventBuf);
274
275 /*--------------------------------------------------------------*/
276 /* Callbacks for event indication */
277 /*--------------------------------------------------------------*/
278 VOID
279 wlanbowCmdEventSetCommon(IN P_ADAPTER_T prAdapter,
280 IN P_CMD_INFO_T prCmdInfo, IN PUINT_8 pucEventBuf);
281
282 VOID
283 wlanbowCmdEventLinkConnected(IN P_ADAPTER_T prAdapter,
284 IN P_CMD_INFO_T prCmdInfo, IN PUINT_8 pucEventBuf);
285
286 VOID
287 wlanbowCmdEventLinkDisconnected(IN P_ADAPTER_T prAdapter,
288 IN P_CMD_INFO_T prCmdInfo, IN PUINT_8 pucEventBuf);
289
290 VOID
291 wlanbowCmdEventSetSetupConnection(IN P_ADAPTER_T prAdapter,
292 IN P_CMD_INFO_T prCmdInfo, IN PUINT_8 pucEventBuf);
293
294 VOID
295 wlanbowCmdEventReadLinkQuality(IN P_ADAPTER_T prAdapter,
296 IN P_CMD_INFO_T prCmdInfo, IN PUINT_8 pucEventBuf);
297
298 VOID
299 wlanbowCmdEventReadRssi(IN P_ADAPTER_T prAdapter,
300 IN P_CMD_INFO_T prCmdInfo, IN PUINT_8 pucEventBuf);
301
302 UINT_8 bowInit(IN P_ADAPTER_T prAdapter);
303
304 VOID bowUninit(IN P_ADAPTER_T prAdapter);
305
306 VOID wlanbowCmdTimeoutHandler(IN P_ADAPTER_T prAdapter, IN P_CMD_INFO_T prCmdInfo);
307
308 VOID bowStopping(IN P_ADAPTER_T prAdapter);
309
310 VOID bowStarting(IN P_ADAPTER_T prAdapter);
311
312 VOID bowAssignSsid(IN PUINT_8 pucSsid, IN PUINT_8 pucSsidLen);
313
314 BOOLEAN
315 bowValidateProbeReq(IN P_ADAPTER_T prAdapter, IN P_SW_RFB_T prSwRfb, OUT PUINT_32 pu4ControlFlags);
316
317 VOID bowSendBeacon(IN P_ADAPTER_T prAdapter, ULONG ulParamPtr);
318
319 VOID bowResponderScan(IN P_ADAPTER_T prAdapter);
320
321 VOID bowResponderScanDone(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
322
323 VOID bowResponderCancelScan(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsChannelExtention);
324
325 VOID bowResponderJoin(IN P_ADAPTER_T prAdapter, P_BSS_DESC_T prBssDesc);
326
327 VOID bowFsmRunEventJoinComplete(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
328
329 VOID
330 bowIndicationOfMediaStateToHost(IN P_ADAPTER_T prAdapter,
331 ENUM_PARAM_MEDIA_STATE_T eConnectionState,
332 BOOLEAN fgDelayIndication);
333
334 VOID bowRunEventAAATxFail(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec);
335
336 WLAN_STATUS bowRunEventAAAComplete(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec);
337
338 WLAN_STATUS
339 bowRunEventRxDeAuth(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec, IN P_SW_RFB_T prSwRfb);
340
341 VOID
342 bowDisconnectLink(IN P_ADAPTER_T prAdapter,
343 IN P_MSDU_INFO_T prMsduInfo, IN ENUM_TX_RESULT_CODE_T rTxDoneStatus);
344
345 BOOLEAN
346 bowValidateAssocReq(IN P_ADAPTER_T prAdapter, IN P_SW_RFB_T prSwRfb, OUT PUINT_16 pu2StatusCode);
347
348 BOOLEAN
349 bowValidateAuth(IN P_ADAPTER_T prAdapter,
350 IN P_SW_RFB_T prSwRfb, IN PP_STA_RECORD_T pprStaRec, OUT PUINT_16 pu2StatusCode);
351
352 VOID bowRunEventChGrant(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
353
354 VOID bowRequestCh(IN P_ADAPTER_T prAdapter);
355
356 VOID bowReleaseCh(IN P_ADAPTER_T prAdapter);
357
358 VOID bowChGrantedTimeout(IN P_ADAPTER_T prAdapter, IN ULONG ulParamPtr);
359
360 BOOLEAN bowNotifyAllLinkDisconnected(IN P_ADAPTER_T prAdapter);
361
362 BOOLEAN bowCheckBowTableIfVaild(IN P_ADAPTER_T prAdapter, IN UINT_8 aucPeerAddress[6]
363 );
364
365 BOOLEAN
366 bowGetBowTableContent(IN P_ADAPTER_T prAdapter,
367 IN UINT_8 ucBowTableIdx, OUT P_BOW_TABLE_T prBowTable);
368
369 BOOLEAN
370 bowGetBowTableEntryByPeerAddress(IN P_ADAPTER_T prAdapter,
371 IN UINT_8 aucPeerAddress[6], OUT PUINT_8 pucBowTableIdx);
372
373 BOOLEAN bowGetBowTableFreeEntry(IN P_ADAPTER_T prAdapter, OUT PUINT_8 pucBowTableIdx);
374
375 ENUM_BOW_DEVICE_STATE bowGetBowTableState(IN P_ADAPTER_T prAdapter, IN UINT_8 aucPeerAddress[6]
376 );
377
378 BOOLEAN
379 bowSetBowTableState(IN P_ADAPTER_T prAdapter,
380 IN UINT_8 aucPeerAddress[6], IN ENUM_BOW_DEVICE_STATE eState);
381
382
383 BOOLEAN
384 bowSetBowTableContent(IN P_ADAPTER_T prAdapter,
385 IN UINT_8 ucBowTableIdx, IN P_BOW_TABLE_T prBowTable);
386
387 /*******************************************************************************
388 * F U N C T I O N S
389 ********************************************************************************
390 */
391
392 #endif
393 #endif /* _WLAN_BOW_H */