PageRenderTime 136ms CodeModel.GetById 70ms RepoModel.GetById 20ms app.codeStats 0ms

/drivers/net/wireless/tiwlan1251/common/src/core/inc/DataCtrl_Api.h

http://github.com/CyanogenMod/cm-kernel
C Header | 419 lines | 247 code | 112 blank | 60 comment | 0 complexity | ae334294742f29a11d19299f425dd7ba MD5 | raw file
Possible License(s): AGPL-1.0, GPL-2.0, LGPL-2.0
  1. /****************************************************************************
  2. **+-----------------------------------------------------------------------+**
  3. **| |**
  4. **| Copyright(c) 1998 - 2008 Texas Instruments. All rights reserved. |**
  5. **| All rights reserved. |**
  6. **| |**
  7. **| Redistribution and use in source and binary forms, with or without |**
  8. **| modification, are permitted provided that the following conditions |**
  9. **| are met: |**
  10. **| |**
  11. **| * Redistributions of source code must retain the above copyright |**
  12. **| notice, this list of conditions and the following disclaimer. |**
  13. **| * Redistributions in binary form must reproduce the above copyright |**
  14. **| notice, this list of conditions and the following disclaimer in |**
  15. **| the documentation and/or other materials provided with the |**
  16. **| distribution. |**
  17. **| * Neither the name Texas Instruments nor the names of its |**
  18. **| contributors may be used to endorse or promote products derived |**
  19. **| from this software without specific prior written permission. |**
  20. **| |**
  21. **| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |**
  22. **| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |**
  23. **| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |**
  24. **| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |**
  25. **| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |**
  26. **| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |**
  27. **| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |**
  28. **| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |**
  29. **| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |**
  30. **| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |**
  31. **| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |**
  32. **| |**
  33. **+-----------------------------------------------------------------------+**
  34. ****************************************************************************/
  35. /***************************************************************************/
  36. /* */
  37. /* */
  38. /* PURPOSE: DataCtrl module api functions header file */
  39. /* */
  40. /***************************************************************************/
  41. #ifndef _DATA_CTRL_API_H_
  42. #define _DATA_CTRL_API_H_
  43. #include "paramOut.h"
  44. #include "paramIn.h"
  45. #include "rxXfer_api.h"
  46. #include "802_11Defs.h"
  47. #include "MsduList.h"
  48. #include "GeneralUtilApi.h"
  49. typedef struct
  50. {
  51. UINT32 hwNumOfFreeMsdu;
  52. UINT32 hwNumOfBusyMsdu;
  53. UINT32 hwNumOfFreeBDs;
  54. UINT32 hwTotalAvailMem;
  55. }hwTxInformation_t;
  56. /* RX MODULE */
  57. /*--------------*/
  58. /* Rx module interface functions */
  59. #define RECV_OK 0x1
  60. #define DIRECTED_BYTES_RECV 0x2
  61. #define DIRECTED_FRAMES_RECV 0x4
  62. #define MULTICAST_BYTES_RECV 0x8
  63. #define MULTICAST_FRAMES_RECV 0x10
  64. #define BROADCAST_BYTES_RECV 0x20
  65. #define BROADCAST_FRAMES_RECV 0x40
  66. #define NO_RX_NOTIFICATION 0x0
  67. #define ALL_RCV_FRAME (DIRECTED_FRAMES_RECV|MULTICAST_FRAMES_RECV|BROADCAST_FRAMES_RECV)
  68. #define MAX_RX_NOTIF_REQ_ELMENTS 8
  69. /*TI_HANDLE rxData_create (msduReceiveCB_t* msduReceiveCB, TI_HANDLE hOs); */
  70. TI_HANDLE rxData_create (TI_HANDLE hOs);
  71. TI_STATUS rxData_config(TI_HANDLE hRxData,
  72. TI_HANDLE hCtrlData,
  73. TI_HANDLE hTxData,
  74. TI_HANDLE hTnetwDrv,
  75. TI_HANDLE hHalCtrl,
  76. TI_HANDLE hMlme,
  77. TI_HANDLE hRsn,
  78. TI_HANDLE hSiteMgr,
  79. TI_HANDLE hExcMngr,
  80. TI_HANDLE hOs,
  81. TI_HANDLE hReport,
  82. TI_HANDLE hMemMngr,
  83. TI_HANDLE hEvHandler,
  84. rxDataInitParams_t * rxDataInitParams);
  85. void rxData_receiveMsduFromWlan(TI_HANDLE hRxData, mem_MSDU_T *pMsdu, Rx_attr_t* pRxAttr);
  86. TI_STATUS rxData_stop(TI_HANDLE hRxData);
  87. TI_STATUS rxData_unLoad(TI_HANDLE hRxData);
  88. TI_STATUS rxData_getParam(TI_HANDLE hRxData, paramInfo_t *pParamInfo);
  89. TI_STATUS rxData_setParam(TI_HANDLE hRxData, paramInfo_t *pParamInfo);
  90. TI_STATUS rxData_getTiwlnCounters(TI_HANDLE hRxData, TIWLN_COUNTERS *pTiwlnCounters);
  91. TI_STATUS txData_copyPacketToMsdu(TI_HANDLE hTxData,mem_MSDU_T **pMsdu, int FreeOldMsdu);
  92. void rxData_resetCounters(TI_HANDLE hRxData);
  93. TI_STATUS txData_updateUsedTime(TI_HANDLE hTxData, UINT32 qNum, UINT16 usedTime);
  94. TI_STATUS txData_setAdmisionCtrlParams(TI_HANDLE hTxData,
  95. UINT8 acID,
  96. UINT16 mediumTime,
  97. UINT32 minimumPHYRate,
  98. BOOL admFlag);
  99. TI_STATUS txData_setPsVoiceDeliveryMode(TI_HANDLE hTxData, PSScheme_e PsMode);
  100. TI_HANDLE rxData_RegNotif(TI_HANDLE hRxData,UINT16 EventMask,GeneralEventCall_t CallBack,TI_HANDLE context,UINT32 Cookie);
  101. TI_STATUS rxData_UnRegNotif(TI_HANDLE hRxData,TI_HANDLE RegEventHandle);
  102. TI_STATUS rxData_AddToNotifMask(TI_HANDLE hRxData,TI_HANDLE Notifh,UINT16 EventMask);
  103. /* debug functions */
  104. void rxData_resetDbgCounters(TI_HANDLE hRxData);
  105. void rxData_printRxBlock(TI_HANDLE hRxData);
  106. void rxData_printRxCounters(TI_HANDLE hRxData);
  107. void rxData_startRxThroughputTimer(TI_HANDLE hRxData);
  108. void rxData_stopRxThroughputTimer(TI_HANDLE hRxData);
  109. void rxData_printRxDataFilter(TI_HANDLE hRxData);
  110. /* TX MODULE */
  111. /*--------------*/
  112. /* Tx module data types */
  113. typedef enum
  114. {
  115. NO_DISABLE = 0,
  116. DISABLE_IMMEDIATELY = 1,
  117. } txDisableReason_e;
  118. typedef struct
  119. {
  120. UINT32 HwRate;
  121. rate_e Rate;
  122. UINT8 txRatePolicyId;
  123. } txData_attr_t;
  124. typedef struct
  125. {
  126. mem_MSDU_T *pMsdu;
  127. BOOLEAN bDataMsdu;
  128. UINT8 txQid;
  129. UINT8 txCompleteFlags;
  130. UINT32 maxTransmitRate;
  131. BOOLEAN bXferDoneCalled;
  132. BOOLEAN bTxCompleteCalled;
  133. UINT32 msduDataLen;
  134. macAddress_t destinationMac;
  135. UINT32 driverHandlingTime;
  136. UINT32 timeStamp [6];
  137. } txPacketIdAttr_t;
  138. typedef struct
  139. {
  140. TI_STATUS status;
  141. UINT32 packetId;
  142. UINT32 rate;
  143. UINT8 ackFailures;
  144. UINT32 actualDurationInAir;
  145. UINT32 fwHandlingTime;
  146. UINT32 mediumDelay;
  147. } txCompleteAttr_t;
  148. #define XFER_OK 0x1
  149. #define DIRECTED_BYTES_XFER 0x2
  150. #define DIRECTED_FRAMES_XFER 0x4
  151. #define MULTICAST_BYTES_XFER 0x8
  152. #define MULTICAST_FRAMES_XFER 0x10
  153. #define BROADCAST_BYTES_XFER 0x20
  154. #define BROADCAST_FRAMES_XFER 0x40
  155. #define NO_TX_NOTIFICATION 0x0
  156. #define ALL_XMIT_FRAMES (DIRECTED_FRAMES_XMIT|MULTICAST_FRAMES_XMIT|BROADCAST_FRAMES_XMIT)
  157. #define MAX_TX_NOTIF_REQ_ELMENTS 8
  158. #define POLL_AP_PACKETS_FORCE_PS_POLL 0xFF /* indicates a "force" PS POLL for the PollAPPackets routine (for backwards compatibility) */
  159. /* Tx module interface functions */
  160. TI_HANDLE txData_create(txDataInitParams_t *txDataInitParams, TI_HANDLE hOs);
  161. TI_STATUS txData_config(TI_HANDLE hTxData,
  162. TI_HANDLE hCtrlData,
  163. TI_HANDLE hTnetwDrv,
  164. TI_HANDLE hWhalCtrl,
  165. TI_HANDLE hOs,
  166. TI_HANDLE hReport,
  167. TI_HANDLE hMemMngr,
  168. TI_HANDLE hSiteMgr,
  169. TI_HANDLE hEvHandler,
  170. TI_HANDLE hQosMngr,
  171. TI_HANDLE hPowerMgr);
  172. TI_STATUS txData_stop(TI_HANDLE hTxData);
  173. TI_STATUS txData_start(TI_HANDLE hTxData);
  174. TI_STATUS txData_startAfterRecovery(TI_HANDLE hTxData);
  175. void txData_recoveryIndication( TI_HANDLE hTxData );
  176. TI_STATUS txData_getParam(TI_HANDLE hTxData, paramInfo_t *pParamInfo);
  177. TI_STATUS txData_setParam(TI_HANDLE hTxData, paramInfo_t *pParamInfo);
  178. TI_STATUS txData_unLoad(TI_HANDLE hTxData);
  179. TI_STATUS txData_getTiwlnCounters(TI_HANDLE hTxData, TIWLN_COUNTERS *pTiwlnCounters);
  180. TI_STATUS txData_checkQueueSize(TI_HANDLE hTxData,UINT8 qIndex);
  181. TI_STATUS txData_sendPktToWlan(TI_HANDLE hTxData, mem_MSDU_T *pMsdu, UINT8 pkt_DTag);
  182. TI_STATUS txData_txSendMsdu(TI_HANDLE hTxData, mem_MSDU_T *pMsdu);
  183. TI_STATUS txData_startTxScheduler(TI_HANDLE hTxData);
  184. TI_STATUS txData_txCompleteUpdate( TI_HANDLE hTxData, txCompleteAttr_t *pTxCompleteAttr );
  185. void txData_sendPacketTransfer(TI_HANDLE hTxData, UINT32 pPacketIdAttr);
  186. void txData_sendPacketDebug(TI_HANDLE hTxData, UINT32 pPacketIdAttr, UINT32 uDebugInfo);
  187. TI_STATUS txData_disableTransmission(TI_HANDLE hTxData,txDisableReason_e reason);
  188. TI_STATUS txData_enableTransmission(TI_HANDLE hTxData);
  189. TI_STATUS txData_sendNullFrame(TI_HANDLE hTxData,
  190. BOOL powerSaveOn,
  191. allocatingModule_e module);
  192. TI_STATUS txData_getPsPollFrame(TI_HANDLE hTxData,mem_MSDU_T **pMsduPsPoll);
  193. TI_STATUS txData_buildQosNullDataFrame(TI_HANDLE hTxData,mem_MSDU_T **pMsduPsPoll, UINT8 userPriority);
  194. TI_STATUS txData_sendVadFrame(TI_HANDLE hTxData, UINT8 acID);
  195. void txData_resetCounters(TI_HANDLE hTxData);
  196. TI_HANDLE txData_RegNotif(TI_HANDLE hTxData,UINT16 EventMask,GeneralEventCall_t CallBack,TI_HANDLE context,UINT32 Cookie);
  197. TI_STATUS txData_UnRegNotif(TI_HANDLE hTxData,TI_HANDLE RegEventHandle);
  198. TI_STATUS txData_AddToNotifMask(TI_HANDLE hTxData,TI_HANDLE Notifh,UINT16 EventMask);
  199. BOOL txData_isQueueUseMediumTime(TI_HANDLE hTxData, UINT8 qNum);
  200. UINT32 txData_GetWlanHeaderLength( TI_HANDLE hTxData, void *pData, UINT32 txFlags );
  201. /* debug functions */
  202. void txData_printTxBlock(TI_HANDLE hTxData);
  203. void txData_printTxCounters(TI_HANDLE hTxData);
  204. void txData_printQosParams(TI_HANDLE hTxData);
  205. void txData_resetDbgCounters(TI_HANDLE hTxData);
  206. void txData_printDataMsduList(TI_HANDLE hTxData);
  207. void txData_fullPrintDataMsduList(TI_HANDLE hTxData);
  208. void txData_printMgmtMsduList(TI_HANDLE hTxData);
  209. void txData_fullPrintMgmtMsduList(TI_HANDLE hTxData);
  210. void txData_StartTxThroughputTimer(TI_HANDLE hTxData);
  211. void txData_StopTxThroughputTimer(TI_HANDLE hTxData);
  212. void txData_StartTxAirThroughputTimer(TI_HANDLE hTxData);
  213. void txData_StopTxAirThroughputTimer(TI_HANDLE hTxData);
  214. void txData_StartJitterTimer(TI_HANDLE hTxData);
  215. void txData_StopJitterTimer(TI_HANDLE hTxData);
  216. void txData_printTxQosCounters(TI_HANDLE hTxData);
  217. /* CONTROL MODULE */
  218. /*----------------*/
  219. typedef struct
  220. {
  221. macAddress_t ctrlDataDeviceMacAddress;
  222. } ctrlDataConfig_t;
  223. /*******************************/
  224. /* Control module interface functions */
  225. /*TI_HANDLE ctrlData_create(TI_HANDLE hOs,*/
  226. /* TxCompleteStatusCB_t* TxCmplt_CB);*/
  227. TI_HANDLE ctrlData_create(TI_HANDLE hOs);
  228. TI_STATUS ctrlData_config(TI_HANDLE hCtrlData,
  229. TI_HANDLE hWhalCtrl,
  230. TI_HANDLE hSiteMgrHandle,
  231. TI_HANDLE hTxData,
  232. TI_HANDLE hRxData,
  233. TI_HANDLE hOs,
  234. TI_HANDLE hReport,
  235. TI_HANDLE hMemMngr,
  236. TI_HANDLE hEvHandler,
  237. TI_HANDLE hAPConnection,
  238. TI_HANDLE hTrafficMonitor,
  239. disassocSentCB_t disassocSentCBFunc,
  240. TI_HANDLE disassocSentCBObj,
  241. ctrlDataInitParams_t *ctrlDataInitParams);
  242. TI_STATUS ctrlData_unLoad(TI_HANDLE hCtrlData);
  243. TI_STATUS ctrlData_getParam(TI_HANDLE hCtrlData, paramInfo_t *pParamInfo);
  244. TI_STATUS ctrlData_getParamPartial(TI_HANDLE hCtrlData, paramInfoPartial_t *pParamInfo);
  245. TI_STATUS ctrlData_setParam(TI_HANDLE hCtrlData, paramInfo_t *pParamInfo);
  246. TI_STATUS ctrlData_start(TI_HANDLE hCtrlData);
  247. TI_STATUS ctrlData_stop(TI_HANDLE hCtrlData);
  248. TI_STATUS ctrlData_getTiwlnCounters(TI_HANDLE hCtrlData, TIWLN_COUNTERS *pTiwlnCounters);
  249. TI_STATUS ctrlData_rxMsdu(TI_HANDLE hCtrlData,
  250. mem_MSDU_T **pRxMsdu);
  251. #ifdef SUPPORT_4X
  252. TI_STATUS ctrlData_txDequeueMsdu(TI_HANDLE hCtrlData,
  253. mem_MSDU_T** buildMsduPtr,
  254. MsduList_t* pMsduList,
  255. whalTx_attr_t* pWhalTx_attr,
  256. hwTxInformation_t* pHwTxInformation);
  257. TI_STATUS ctrlData_txMsdu(TI_HANDLE hCtrlData,
  258. mem_MSDU_T** msduPtr);
  259. #endif
  260. TI_STATUS ctrlData_getTxAttributes(TI_HANDLE hCtrlData ,
  261. UINT32 txFlags,
  262. txData_attr_t *pTxAttr,
  263. UINT32 ac);
  264. TI_STATUS ctrlData_ClsfrClassifyTxMSDU(TI_HANDLE hCtrlData,
  265. mem_MSDU_T *pMsdu,
  266. UINT8 packet_DTag);
  267. TI_STATUS ctrlData_clsfrSetClsfrType(TI_HANDLE hCtrlData,
  268. clsfrTypeAndSupport newClsfrType);
  269. void ctrlData_getCurrBssTypeAndCurrBssId(TI_HANDLE hCtrlData, macAddress_t *pCurrBssid,
  270. bssType_e *pCurrBssType);
  271. #ifdef SUPPORT_4X
  272. TI_STATUS ctrlData_get4xInfoElemnt(TI_HANDLE hCtrlData,
  273. dot11_4X_t* fourXInfoElemnt);
  274. TI_STATUS ctrlData_get4xStatus(TI_HANDLE hCtrlData,BOOL* fourXEnable);
  275. TI_STATUS ctrlData_evalSite(TI_HANDLE hCtrlData,
  276. dot11_4X_t* site4xParams,
  277. UINT32 *matchingLevel);
  278. #endif
  279. TI_STATUS ctrlData_setSite(TI_HANDLE hCtrlData,
  280. dot11_4X_t* site4xParams);
  281. void ctrlData_setTspecsRateEvent(TI_HANDLE hCtrlData,
  282. UINT8 acID,
  283. BOOL enableEvent);
  284. void ctrlData_setTspecsRateThresholds(TI_HANDLE hCtrlData,
  285. UINT8 acID,
  286. UINT8 highRateThreshold,
  287. UINT8 lowRateThreshold);
  288. void ctrlData_txCompleteStatus( TI_HANDLE hCtrlData,
  289. txCompleteAttr_t *pTxCompleteAttr);
  290. void ctrlData_getTspecsRateThresholds(TI_HANDLE hCtrlData, UINT8 uAC, UINT32* pHighThreshold, UINT32* pLowThreshold);
  291. void ctrlData_ToggleTrafficIntensityNotification (TI_HANDLE hCtrlData, BOOL enabledFlag);
  292. /* dbg functions */
  293. /*---------------*/
  294. void ctrlData_printRateAdaptation(TI_HANDLE hCtrlData);
  295. void ctrlData_printTxParameters(TI_HANDLE hCtrlData);
  296. void ctrlData_printCtrlBlock(TI_HANDLE hCtrlData);
  297. void ctrlData_printCtrlCounters(TI_HANDLE hCtrlData);
  298. void ctrlData_printFourX(TI_HANDLE hCtrlData);
  299. #ifdef TI_DBG
  300. void ctrlData_clearClsfrTable ( TI_HANDLE hCtrlData );
  301. void ctrlData_printClsfrTable ( TI_HANDLE hCtrlData );
  302. #endif
  303. /* TEST FUNCTION */
  304. /*---------------*/
  305. void Test_OsFreeFunction(TI_HANDLE hOs, TI_HANDLE pAddr);
  306. TI_HANDLE Test_rxData_receiveMsduFromWlan(TI_HANDLE hRxData, mem_MSDU_T *pMsdu, Rx_attr_t* pRxAttr);
  307. #endif