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