2 ** $Id: //Department/DaVinci/BRANCHES/MT6620_WIFI_DRIVER_V2_3/include/wlan_bow.h#1 $
6 \brief This file contains the declairations of 802.11 PAL
7 command processing routines for
8 MediaTek Inc. 802.11 Wireless LAN Adapters.
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)
22 * [WCXRP00000735] [MT6620 Wi-Fi][BoW][FW/Driver] Protect BoW connection establishment
23 * Add BoW Cancel Scan Request and Turn On deactive network function.
26 * [WCXRP00000735] [MT6620 Wi-Fi][BoW][FW/Driver] Protect BoW connection establishment
27 * Add some BoW error handling.
30 * [WCXRP00000735] [MT6620 Wi-Fi][BoW][FW/Driver] Protect BoW connection establishment
31 * Protect BoW connection establishment.
34 * [WCXRP00000730] [MT6620 Wi-Fi][BoW] Send deauth while disconnecting
35 * Send deauth while disconnecting BoW link.
38 * [WCXRP00000707] [MT6620 Wi-Fi][Driver] Fix BoW Multiple Physical Link connect/disconnect issue
39 * Fix BoW Multiple Physical Link connect/disconnect issue.
41 * 04 15 2011 chinghwa.yu
42 * [WCXRP00000065] Update BoW design and settings
43 * Add BOW short range mode.
45 * 03 27 2011 chinghwa.yu
46 * [WCXRP00000065] Update BoW design and settings
47 * Support multiple physical link.
49 * 03 10 2011 chinghwa.yu
50 * [WCXRP00000065] Update BoW design and settings
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..
57 * 02 15 2011 chinghwa.yu
58 * [WCXRP00000065] Update BoW design and settings
59 * Update bowString and channel grant.
61 * 01 11 2011 chinghwa.yu
62 * [WCXRP00000065] Update BoW design and settings
63 * Update BOW Activity Report structure and bug fix.
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.
69 * 09 14 2010 chinghwa.yu
71 * Add bowRunEventAAAComplete.
73 * 08 24 2010 chinghwa.yu
75 * Update BOW for the 1st time.
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
85 * sync. bluetooth-over-Wi-Fi interface to driver interface document v0.2.6.
89 * [WPD00003833] [MT6620 and MT5931] Driver migration - move to new repository.
91 * 06 06 2010 kevin.huang
92 * [WPD00003832][MT6620 5931] Create driver base
93 * [MT6620 5931] Create driver base
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
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
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
111 * [WPD00003823][MT6620 Wi-Fi] Add Bluetooth-over-Wi-Fi support
112 * add multiple physical link support
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
126 /*******************************************************************************
127 * C O M P I L E R F L A G S
128 ********************************************************************************
131 /*******************************************************************************
132 * E X T E R N A L R E F E R E N C E S
133 ********************************************************************************
136 #include "nic/cmd_buf.h"
138 #if CFG_ENABLE_BT_OVER_WIFI
140 extern UINT_32 g_arBowRevPalPacketTime
[32];
142 /*******************************************************************************
144 ********************************************************************************
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
152 #define BOW_WILDCARD_SSID "AMP"
153 #define BOW_WILDCARD_SSID_LEN 3
154 #define BOW_SSID_LEN 21
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
161 #define BOW_INITIATOR 0
162 #define BOW_RESPONDER 1
164 /*******************************************************************************
165 * P U B L I C D A T A
166 ********************************************************************************
169 typedef struct _BOW_TABLE_T
{
172 ENUM_BOW_DEVICE_STATE eState
;
173 UINT_8 aucPeerAddress
[6];
175 /* UINT_8 ucChannelNum; */
177 } BOW_TABLE_T
, *P_BOW_TABLE_T
;
179 typedef WLAN_STATUS(*PFN_BOW_CMD_HANDLE
) (P_ADAPTER_T
, P_AMPC_COMMAND
);
181 typedef struct _BOW_CMD_T
{
183 PFN_BOW_CMD_HANDLE pfCmdHandle
;
184 } BOW_CMD_T
, *P_BOW_CMD_T
;
186 typedef struct _BOW_EVENT_ACTIVITY_REPORT_T
{
189 UINT_8 aucPeerAddress
[6];
190 } BOW_EVENT_ACTIVITY_REPORT_T
, *P_BOW_EVENT_ACTIVITY_REPORT_T
;
195 2: too much time (> 2/3 second totally) requested for scheduling.
199 typedef struct _BOW_EVENT_SYNC_TSF_T
{
201 UINT_32 u4TsfSysTime
;
203 UINT_32 u4ScoSysTime
;
204 } BOW_EVENT_SYNC_TSF_T
, *P_BOW_EVENT_SYNC_TSF_T
;
206 typedef struct _BOW_ACTIVITY_REPORT_BODY_T
{
209 UINT_32 u4Periodicity
;
210 } BOW_ACTIVITY_REPORT_BODY_T
, *P_BOW_ACTIVITY_REPORT_BODY_T
;
212 typedef struct _BOW_ACTIVITY_REPORT_T
{
213 UINT_8 aucPeerAddress
[6];
214 UINT_8 ucScheduleKnown
;
216 BOW_ACTIVITY_REPORT_BODY_T arBowActivityReportBody
[MAX_ACTIVITY_REPORT
];
217 } BOW_ACTIVITY_REPORT_T
, *P_BOW_ACTIVITY_REPORT_T
;
219 /*******************************************************************************
220 * P R I V A T E D A T A
221 ********************************************************************************
224 /*******************************************************************************
226 ********************************************************************************
229 /*******************************************************************************
230 * F U N C T I O N D E C L A R A T I O N S
231 ********************************************************************************
233 /*--------------------------------------------------------------*/
234 /* Firmware Command Packer */
235 /*--------------------------------------------------------------*/
237 wlanoidSendSetQueryBowCmd(IN P_ADAPTER_T prAdapter
,
242 PFN_CMD_DONE_HANDLER pfCmdDoneHandler
,
243 PFN_CMD_TIMEOUT_HANDLER pfCmdTimeoutHandler
,
244 UINT_32 u4SetQueryInfoLen
, PUINT_8 pucInfoBuffer
, IN UINT_8 ucSeqNumber
);
247 /*--------------------------------------------------------------*/
248 /* Command Dispatcher */
249 /*--------------------------------------------------------------*/
250 WLAN_STATUS
wlanbowHandleCommand(IN P_ADAPTER_T prAdapter
, IN P_AMPC_COMMAND prCmd
);
253 /*--------------------------------------------------------------*/
254 /* Routines to handle command */
255 /*--------------------------------------------------------------*/
256 WLAN_STATUS
bowCmdGetMacStatus(IN P_ADAPTER_T prAdapter
, IN P_AMPC_COMMAND prCmd
);
258 WLAN_STATUS
bowCmdSetupConnection(IN P_ADAPTER_T prAdapter
, IN P_AMPC_COMMAND prCmd
);
260 WLAN_STATUS
bowCmdDestroyConnection(IN P_ADAPTER_T prAdapter
, IN P_AMPC_COMMAND prCmd
);
262 WLAN_STATUS
bowCmdSetPTK(IN P_ADAPTER_T prAdapter
, IN P_AMPC_COMMAND prCmd
);
264 WLAN_STATUS
bowCmdReadRSSI(IN P_ADAPTER_T prAdapter
, IN P_AMPC_COMMAND prCmd
);
266 WLAN_STATUS
bowCmdReadLinkQuality(IN P_ADAPTER_T prAdapter
, IN P_AMPC_COMMAND prCmd
);
268 WLAN_STATUS
bowCmdShortRangeMode(IN P_ADAPTER_T prAdapter
, IN P_AMPC_COMMAND prCmd
);
270 WLAN_STATUS
bowCmdGetChannelList(IN P_ADAPTER_T prAdapter
, IN P_AMPC_COMMAND prCmd
);
273 wlanbowCmdEventSetStatus(IN P_ADAPTER_T prAdapter
, IN P_AMPC_COMMAND prCmd
, IN UINT_8 ucEventBuf
);
275 /*--------------------------------------------------------------*/
276 /* Callbacks for event indication */
277 /*--------------------------------------------------------------*/
279 wlanbowCmdEventSetCommon(IN P_ADAPTER_T prAdapter
,
280 IN P_CMD_INFO_T prCmdInfo
, IN PUINT_8 pucEventBuf
);
283 wlanbowCmdEventLinkConnected(IN P_ADAPTER_T prAdapter
,
284 IN P_CMD_INFO_T prCmdInfo
, IN PUINT_8 pucEventBuf
);
287 wlanbowCmdEventLinkDisconnected(IN P_ADAPTER_T prAdapter
,
288 IN P_CMD_INFO_T prCmdInfo
, IN PUINT_8 pucEventBuf
);
291 wlanbowCmdEventSetSetupConnection(IN P_ADAPTER_T prAdapter
,
292 IN P_CMD_INFO_T prCmdInfo
, IN PUINT_8 pucEventBuf
);
295 wlanbowCmdEventReadLinkQuality(IN P_ADAPTER_T prAdapter
,
296 IN P_CMD_INFO_T prCmdInfo
, IN PUINT_8 pucEventBuf
);
299 wlanbowCmdEventReadRssi(IN P_ADAPTER_T prAdapter
,
300 IN P_CMD_INFO_T prCmdInfo
, IN PUINT_8 pucEventBuf
);
302 UINT_8
bowInit(IN P_ADAPTER_T prAdapter
);
304 VOID
bowUninit(IN P_ADAPTER_T prAdapter
);
306 VOID
wlanbowCmdTimeoutHandler(IN P_ADAPTER_T prAdapter
, IN P_CMD_INFO_T prCmdInfo
);
308 VOID
bowStopping(IN P_ADAPTER_T prAdapter
);
310 VOID
bowStarting(IN P_ADAPTER_T prAdapter
);
312 VOID
bowAssignSsid(IN PUINT_8 pucSsid
, IN PUINT_8 pucSsidLen
);
315 bowValidateProbeReq(IN P_ADAPTER_T prAdapter
, IN P_SW_RFB_T prSwRfb
, OUT PUINT_32 pu4ControlFlags
);
317 VOID
bowSendBeacon(IN P_ADAPTER_T prAdapter
, ULONG ulParamPtr
);
319 VOID
bowResponderScan(IN P_ADAPTER_T prAdapter
);
321 VOID
bowResponderScanDone(IN P_ADAPTER_T prAdapter
, IN P_MSG_HDR_T prMsgHdr
);
323 VOID
bowResponderCancelScan(IN P_ADAPTER_T prAdapter
, IN BOOLEAN fgIsChannelExtention
);
325 VOID
bowResponderJoin(IN P_ADAPTER_T prAdapter
, P_BSS_DESC_T prBssDesc
);
327 VOID
bowFsmRunEventJoinComplete(IN P_ADAPTER_T prAdapter
, IN P_MSG_HDR_T prMsgHdr
);
330 bowIndicationOfMediaStateToHost(IN P_ADAPTER_T prAdapter
,
331 ENUM_PARAM_MEDIA_STATE_T eConnectionState
,
332 BOOLEAN fgDelayIndication
);
334 VOID
bowRunEventAAATxFail(IN P_ADAPTER_T prAdapter
, IN P_STA_RECORD_T prStaRec
);
336 WLAN_STATUS
bowRunEventAAAComplete(IN P_ADAPTER_T prAdapter
, IN P_STA_RECORD_T prStaRec
);
339 bowRunEventRxDeAuth(IN P_ADAPTER_T prAdapter
, IN P_STA_RECORD_T prStaRec
, IN P_SW_RFB_T prSwRfb
);
342 bowDisconnectLink(IN P_ADAPTER_T prAdapter
,
343 IN P_MSDU_INFO_T prMsduInfo
, IN ENUM_TX_RESULT_CODE_T rTxDoneStatus
);
346 bowValidateAssocReq(IN P_ADAPTER_T prAdapter
, IN P_SW_RFB_T prSwRfb
, OUT PUINT_16 pu2StatusCode
);
349 bowValidateAuth(IN P_ADAPTER_T prAdapter
,
350 IN P_SW_RFB_T prSwRfb
, IN PP_STA_RECORD_T pprStaRec
, OUT PUINT_16 pu2StatusCode
);
352 VOID
bowRunEventChGrant(IN P_ADAPTER_T prAdapter
, IN P_MSG_HDR_T prMsgHdr
);
354 VOID
bowRequestCh(IN P_ADAPTER_T prAdapter
);
356 VOID
bowReleaseCh(IN P_ADAPTER_T prAdapter
);
358 VOID
bowChGrantedTimeout(IN P_ADAPTER_T prAdapter
, IN ULONG ulParamPtr
);
360 BOOLEAN
bowNotifyAllLinkDisconnected(IN P_ADAPTER_T prAdapter
);
362 BOOLEAN
bowCheckBowTableIfVaild(IN P_ADAPTER_T prAdapter
, IN UINT_8 aucPeerAddress
[6]
366 bowGetBowTableContent(IN P_ADAPTER_T prAdapter
,
367 IN UINT_8 ucBowTableIdx
, OUT P_BOW_TABLE_T prBowTable
);
370 bowGetBowTableEntryByPeerAddress(IN P_ADAPTER_T prAdapter
,
371 IN UINT_8 aucPeerAddress
[6], OUT PUINT_8 pucBowTableIdx
);
373 BOOLEAN
bowGetBowTableFreeEntry(IN P_ADAPTER_T prAdapter
, OUT PUINT_8 pucBowTableIdx
);
375 ENUM_BOW_DEVICE_STATE
bowGetBowTableState(IN P_ADAPTER_T prAdapter
, IN UINT_8 aucPeerAddress
[6]
379 bowSetBowTableState(IN P_ADAPTER_T prAdapter
,
380 IN UINT_8 aucPeerAddress
[6], IN ENUM_BOW_DEVICE_STATE eState
);
384 bowSetBowTableContent(IN P_ADAPTER_T prAdapter
,
385 IN UINT_8 ucBowTableIdx
, IN P_BOW_TABLE_T prBowTable
);
387 /*******************************************************************************
389 ********************************************************************************
393 #endif /* _WLAN_BOW_H */