wlan_bow.h 13 KB

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