wlan_bow.h 13 KB

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