Home | History | Annotate | Download | only in inc
      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 /*                                                                         */
     39 /*      PURPOSE:    DataCtrl module api functions header file              */
     40 /*                                                                         */
     41 /***************************************************************************/
     42 
     43 #ifndef _DATA_CTRL_API_H_
     44 #define _DATA_CTRL_API_H_
     45 
     46 #include "paramOut.h"
     47 #include "paramIn.h"
     48 #include "rxXfer_api.h"
     49 #include "802_11Defs.h"
     50 #include "MsduList.h"
     51 #include "GeneralUtilApi.h"
     52 
     53 
     54 typedef struct
     55 {
     56     UINT32 hwNumOfFreeMsdu;
     57     UINT32 hwNumOfBusyMsdu;
     58     UINT32 hwNumOfFreeBDs;
     59     UINT32 hwTotalAvailMem;
     60 }hwTxInformation_t;
     61 
     62 /*  RX MODULE   */
     63 /*--------------*/
     64 
     65 /* Rx module interface functions */
     66 
     67 #define RECV_OK                  0x1
     68 #define DIRECTED_BYTES_RECV      0x2
     69 #define DIRECTED_FRAMES_RECV     0x4
     70 #define MULTICAST_BYTES_RECV     0x8
     71 #define MULTICAST_FRAMES_RECV    0x10
     72 #define BROADCAST_BYTES_RECV     0x20
     73 #define BROADCAST_FRAMES_RECV    0x40
     74 
     75 #define NO_RX_NOTIFICATION  0x0
     76 
     77 #define ALL_RCV_FRAME (DIRECTED_FRAMES_RECV|MULTICAST_FRAMES_RECV|BROADCAST_FRAMES_RECV)
     78 
     79 #define  MAX_RX_NOTIF_REQ_ELMENTS 8
     80 
     81 
     82 /*TI_HANDLE rxData_create (msduReceiveCB_t* msduReceiveCB, TI_HANDLE hOs);  */
     83 TI_HANDLE rxData_create (TI_HANDLE hOs);
     84 
     85 TI_STATUS rxData_config(TI_HANDLE       hRxData,
     86                      TI_HANDLE          hCtrlData,
     87                      TI_HANDLE          hTxData,
     88                      TI_HANDLE          hTnetwDrv,
     89                      TI_HANDLE   hHalCtrl,
     90                      TI_HANDLE          hMlme,
     91                      TI_HANDLE          hRsn,
     92                      TI_HANDLE          hSiteMgr,
     93                      TI_HANDLE          hExcMngr,
     94                      TI_HANDLE          hOs,
     95                      TI_HANDLE          hReport,
     96                      TI_HANDLE          hMemMngr,
     97                      TI_HANDLE   hEvHandler,
     98                      rxDataInitParams_t * rxDataInitParams);
     99 
    100 void rxData_receiveMsduFromWlan(TI_HANDLE hRxData, mem_MSDU_T *pMsdu, Rx_attr_t* pRxAttr);
    101 
    102 
    103 TI_STATUS rxData_stop(TI_HANDLE hRxData);
    104 
    105 TI_STATUS rxData_unLoad(TI_HANDLE hRxData);
    106 
    107 TI_STATUS rxData_getParam(TI_HANDLE hRxData, paramInfo_t *pParamInfo);
    108 
    109 TI_STATUS rxData_setParam(TI_HANDLE hRxData, paramInfo_t *pParamInfo);
    110 
    111 TI_STATUS rxData_getTiwlnCounters(TI_HANDLE hRxData, TIWLN_COUNTERS *pTiwlnCounters);
    112 
    113 TI_STATUS txData_copyPacketToMsdu(TI_HANDLE hTxData,mem_MSDU_T **pMsdu, int FreeOldMsdu);
    114 
    115 void rxData_resetCounters(TI_HANDLE hRxData);
    116 
    117 TI_STATUS txData_updateUsedTime(TI_HANDLE hTxData, UINT32 qNum, UINT16 usedTime);
    118 
    119 TI_STATUS txData_setAdmisionCtrlParams(TI_HANDLE hTxData,
    120                                        UINT8 acID,
    121                                        UINT16 mediumTime,
    122                                        UINT32 minimumPHYRate,
    123                                        BOOL admFlag);
    124 
    125 TI_STATUS txData_setPsVoiceDeliveryMode(TI_HANDLE hTxData, PSScheme_e   PsMode);
    126 
    127 TI_HANDLE rxData_RegNotif(TI_HANDLE hRxData,UINT16 EventMask,GeneralEventCall_t CallBack,TI_HANDLE context,UINT32 Cookie);
    128 
    129 TI_STATUS rxData_UnRegNotif(TI_HANDLE hRxData,TI_HANDLE RegEventHandle);
    130 
    131 TI_STATUS rxData_AddToNotifMask(TI_HANDLE hRxData,TI_HANDLE Notifh,UINT16 EventMask);
    132 
    133 
    134 /* debug functions */
    135 void rxData_resetDbgCounters(TI_HANDLE hRxData);
    136 void rxData_printRxBlock(TI_HANDLE hRxData);
    137 void rxData_printRxCounters(TI_HANDLE hRxData);
    138 void rxData_startRxThroughputTimer(TI_HANDLE hRxData);
    139 void rxData_stopRxThroughputTimer(TI_HANDLE hRxData);
    140 void rxData_printRxDataFilter(TI_HANDLE hRxData);
    141 
    142 
    143 /*  TX MODULE   */
    144 /*--------------*/
    145 
    146 /* Tx module data types */
    147 
    148 typedef enum
    149 {
    150     NO_DISABLE                  = 0,
    151     DISABLE_IMMEDIATELY         = 1,
    152 } txDisableReason_e;
    153 
    154 typedef struct
    155 {
    156     UINT32      HwRate;
    157     rate_e      Rate;
    158     UINT8       txRatePolicyId;
    159 } txData_attr_t;
    160 
    161 typedef struct
    162 {
    163     mem_MSDU_T          *pMsdu;
    164     BOOLEAN             bDataMsdu;
    165     UINT8               txQid;
    166     UINT8               txCompleteFlags;
    167     UINT32              maxTransmitRate;
    168     BOOLEAN             bXferDoneCalled;
    169     BOOLEAN             bTxCompleteCalled;
    170     UINT32              msduDataLen;
    171     macAddress_t        destinationMac;
    172     UINT32              driverHandlingTime;
    173     UINT32              timeStamp [6];
    174 } txPacketIdAttr_t;
    175 
    176 typedef struct
    177 {
    178     TI_STATUS               status;
    179     UINT32                  packetId;
    180     UINT32                  rate;
    181     UINT8                   ackFailures;
    182     UINT32                  actualDurationInAir;
    183     UINT32                  fwHandlingTime;
    184     UINT32                  mediumDelay;
    185 } txCompleteAttr_t;
    186 
    187 #define XFER_OK                 0x1
    188 #define DIRECTED_BYTES_XFER     0x2
    189 #define DIRECTED_FRAMES_XFER    0x4
    190 #define MULTICAST_BYTES_XFER    0x8
    191 #define MULTICAST_FRAMES_XFER   0x10
    192 #define BROADCAST_BYTES_XFER    0x20
    193 #define BROADCAST_FRAMES_XFER   0x40
    194 
    195 #define NO_TX_NOTIFICATION      0x0
    196 
    197 #define ALL_XMIT_FRAMES (DIRECTED_FRAMES_XMIT|MULTICAST_FRAMES_XMIT|BROADCAST_FRAMES_XMIT)
    198 
    199 #define  MAX_TX_NOTIF_REQ_ELMENTS 8
    200 
    201 #define POLL_AP_PACKETS_FORCE_PS_POLL  0xFF /* indicates a "force" PS POLL for the PollAPPackets routine (for backwards compatibility) */
    202 
    203 
    204 /* Tx module interface functions */
    205 TI_HANDLE txData_create(txDataInitParams_t *txDataInitParams, TI_HANDLE hOs);
    206 
    207 TI_STATUS txData_config(TI_HANDLE       hTxData,
    208                      TI_HANDLE      hCtrlData,
    209                      TI_HANDLE      hTnetwDrv,
    210                      TI_HANDLE      hWhalCtrl,
    211                      TI_HANDLE      hOs,
    212                      TI_HANDLE      hReport,
    213                      TI_HANDLE      hMemMngr,
    214                      TI_HANDLE      hSiteMgr,
    215                      TI_HANDLE      hEvHandler,
    216                        TI_HANDLE      hQosMngr,
    217                        TI_HANDLE      hPowerMgr);
    218 
    219 TI_STATUS txData_stop(TI_HANDLE hTxData);
    220 
    221 TI_STATUS txData_start(TI_HANDLE hTxData);
    222 TI_STATUS txData_startAfterRecovery(TI_HANDLE hTxData);
    223 
    224 
    225 void txData_recoveryIndication( TI_HANDLE hTxData );
    226 
    227 TI_STATUS txData_getParam(TI_HANDLE hTxData, paramInfo_t *pParamInfo);
    228 
    229 TI_STATUS txData_setParam(TI_HANDLE hTxData, paramInfo_t *pParamInfo);
    230 
    231 TI_STATUS txData_unLoad(TI_HANDLE hTxData);
    232 
    233 TI_STATUS txData_getTiwlnCounters(TI_HANDLE hTxData, TIWLN_COUNTERS *pTiwlnCounters);
    234 
    235 TI_STATUS txData_checkQueueSize(TI_HANDLE hTxData,UINT8 qIndex);
    236 
    237 TI_STATUS txData_sendPktToWlan(TI_HANDLE hTxData, mem_MSDU_T *pMsdu, UINT8 pkt_DTag);
    238 
    239 TI_STATUS txData_txSendMsdu(TI_HANDLE hTxData, mem_MSDU_T *pMsdu);
    240 
    241 TI_STATUS txData_startTxScheduler(TI_HANDLE hTxData);
    242 
    243 TI_STATUS txData_txCompleteUpdate( TI_HANDLE hTxData, txCompleteAttr_t *pTxCompleteAttr );
    244 
    245 void      txData_sendPacketTransfer(TI_HANDLE hTxData, UINT32 pPacketIdAttr);
    246 void      txData_sendPacketDebug(TI_HANDLE hTxData, UINT32 pPacketIdAttr, UINT32 uDebugInfo);
    247 
    248 
    249 
    250 TI_STATUS txData_disableTransmission(TI_HANDLE hTxData,txDisableReason_e reason);
    251 
    252 TI_STATUS txData_enableTransmission(TI_HANDLE hTxData);
    253 TI_STATUS txData_sendNullFrame(TI_HANDLE hTxData,
    254                                BOOL powerSaveOn,
    255                                allocatingModule_e module);
    256 
    257 
    258 TI_STATUS txData_getPsPollFrame(TI_HANDLE hTxData,mem_MSDU_T **pMsduPsPoll);
    259 
    260 TI_STATUS txData_buildQosNullDataFrame(TI_HANDLE hTxData,mem_MSDU_T **pMsduPsPoll, UINT8 userPriority);
    261 
    262 TI_STATUS txData_sendVadFrame(TI_HANDLE hTxData, UINT8 acID);
    263 
    264 void txData_resetCounters(TI_HANDLE hTxData);
    265 
    266 TI_HANDLE txData_RegNotif(TI_HANDLE hTxData,UINT16 EventMask,GeneralEventCall_t CallBack,TI_HANDLE context,UINT32 Cookie);
    267 
    268 TI_STATUS txData_UnRegNotif(TI_HANDLE hTxData,TI_HANDLE RegEventHandle);
    269 
    270 TI_STATUS txData_AddToNotifMask(TI_HANDLE hTxData,TI_HANDLE Notifh,UINT16 EventMask);
    271 
    272 BOOL txData_isQueueUseMediumTime(TI_HANDLE hTxData, UINT8 qNum);
    273 
    274 UINT32 txData_GetWlanHeaderLength( TI_HANDLE hTxData, void *pData, UINT32 txFlags );
    275 
    276 /* debug functions */
    277 void txData_printTxBlock(TI_HANDLE hTxData);
    278 void txData_printTxCounters(TI_HANDLE hTxData);
    279 void txData_printQosParams(TI_HANDLE hTxData);
    280 void txData_resetDbgCounters(TI_HANDLE hTxData);
    281 void txData_printDataMsduList(TI_HANDLE hTxData);
    282 void txData_fullPrintDataMsduList(TI_HANDLE hTxData);
    283 void txData_printMgmtMsduList(TI_HANDLE hTxData);
    284 void txData_fullPrintMgmtMsduList(TI_HANDLE hTxData);
    285 void txData_StartTxThroughputTimer(TI_HANDLE hTxData);
    286 void txData_StopTxThroughputTimer(TI_HANDLE hTxData);
    287 void txData_StartTxAirThroughputTimer(TI_HANDLE hTxData);
    288 void txData_StopTxAirThroughputTimer(TI_HANDLE hTxData);
    289 void txData_StartJitterTimer(TI_HANDLE hTxData);
    290 void txData_StopJitterTimer(TI_HANDLE hTxData);
    291 void txData_printTxQosCounters(TI_HANDLE hTxData);
    292 
    293 
    294 
    295 /* CONTROL MODULE */
    296 /*----------------*/
    297 
    298 
    299 typedef struct
    300 {
    301     macAddress_t    ctrlDataDeviceMacAddress;
    302 } ctrlDataConfig_t;
    303 
    304 /*******************************/
    305 /* Control module interface functions */
    306 /*TI_HANDLE ctrlData_create(TI_HANDLE hOs,*/
    307 /*                           TxCompleteStatusCB_t* TxCmplt_CB);*/
    308 TI_HANDLE ctrlData_create(TI_HANDLE hOs);
    309 
    310 TI_STATUS ctrlData_config(TI_HANDLE         hCtrlData,
    311                        TI_HANDLE            hWhalCtrl,
    312                        TI_HANDLE            hSiteMgrHandle,
    313                        TI_HANDLE            hTxData,
    314                        TI_HANDLE            hRxData,
    315                        TI_HANDLE            hOs,
    316                        TI_HANDLE            hReport,
    317                        TI_HANDLE            hMemMngr,
    318                        TI_HANDLE            hEvHandler,
    319                        TI_HANDLE            hAPConnection,
    320                        TI_HANDLE            hTrafficMonitor,
    321                        disassocSentCB_t     disassocSentCBFunc,
    322                        TI_HANDLE            disassocSentCBObj,
    323                        ctrlDataInitParams_t *ctrlDataInitParams);
    324 
    325 TI_STATUS ctrlData_unLoad(TI_HANDLE hCtrlData);
    326 
    327 TI_STATUS ctrlData_getParam(TI_HANDLE hCtrlData, paramInfo_t *pParamInfo);
    328 
    329 TI_STATUS ctrlData_getParamPartial(TI_HANDLE hCtrlData, paramInfoPartial_t *pParamInfo);
    330 
    331 TI_STATUS ctrlData_setParam(TI_HANDLE hCtrlData, paramInfo_t *pParamInfo);
    332 
    333 TI_STATUS ctrlData_start(TI_HANDLE hCtrlData);
    334 
    335 TI_STATUS ctrlData_stop(TI_HANDLE hCtrlData);
    336 
    337 TI_STATUS ctrlData_getTiwlnCounters(TI_HANDLE hCtrlData, TIWLN_COUNTERS *pTiwlnCounters);
    338 
    339 TI_STATUS ctrlData_rxMsdu(TI_HANDLE         hCtrlData,
    340                           mem_MSDU_T        **pRxMsdu);
    341 #ifdef SUPPORT_4X
    342 TI_STATUS ctrlData_txDequeueMsdu(TI_HANDLE          hCtrlData,
    343                                  mem_MSDU_T**       buildMsduPtr,
    344                                  MsduList_t*        pMsduList,
    345                                  whalTx_attr_t*     pWhalTx_attr,
    346                                  hwTxInformation_t* pHwTxInformation);
    347 
    348 TI_STATUS ctrlData_txMsdu(TI_HANDLE         hCtrlData,
    349                           mem_MSDU_T**      msduPtr);
    350 #endif
    351 
    352 TI_STATUS ctrlData_getTxAttributes(TI_HANDLE hCtrlData ,
    353                                    UINT32 txFlags,
    354                                    txData_attr_t *pTxAttr,
    355                                    UINT32 ac);
    356 
    357 TI_STATUS ctrlData_ClsfrClassifyTxMSDU(TI_HANDLE    hCtrlData,
    358                                        mem_MSDU_T   *pMsdu,
    359                                        UINT8        packet_DTag);
    360 
    361 TI_STATUS ctrlData_clsfrSetClsfrType(TI_HANDLE          hCtrlData,
    362                                     clsfrTypeAndSupport     newClsfrType);
    363 
    364 
    365 
    366 void ctrlData_getCurrBssTypeAndCurrBssId(TI_HANDLE hCtrlData, macAddress_t *pCurrBssid,
    367                                          bssType_e *pCurrBssType);
    368 
    369 #ifdef SUPPORT_4X
    370 TI_STATUS ctrlData_get4xInfoElemnt(TI_HANDLE hCtrlData,
    371                                    dot11_4X_t* fourXInfoElemnt);
    372 
    373 TI_STATUS ctrlData_get4xStatus(TI_HANDLE hCtrlData,BOOL* fourXEnable);
    374 
    375 TI_STATUS ctrlData_evalSite(TI_HANDLE hCtrlData,
    376                             dot11_4X_t* site4xParams,
    377                             UINT32 *matchingLevel);
    378 #endif
    379 
    380 TI_STATUS ctrlData_setSite(TI_HANDLE hCtrlData,
    381                            dot11_4X_t* site4xParams);
    382 
    383 void ctrlData_setTspecsRateEvent(TI_HANDLE          hCtrlData,
    384                                     UINT8               acID,
    385                                     BOOL                enableEvent);
    386 
    387 void ctrlData_setTspecsRateThresholds(TI_HANDLE     hCtrlData,
    388                                       UINT8         acID,
    389                                       UINT8     highRateThreshold,
    390                                       UINT8     lowRateThreshold);
    391 
    392 void ctrlData_txCompleteStatus( TI_HANDLE hCtrlData,
    393                                txCompleteAttr_t *pTxCompleteAttr);
    394 
    395 
    396 void ctrlData_getTspecsRateThresholds(TI_HANDLE hCtrlData, UINT8 uAC, UINT32* pHighThreshold, UINT32* pLowThreshold);
    397 void ctrlData_ToggleTrafficIntensityNotification (TI_HANDLE hCtrlData, BOOL enabledFlag);
    398 
    399 
    400 /* dbg functions */
    401 /*---------------*/
    402 void ctrlData_printRateAdaptation(TI_HANDLE hCtrlData);
    403 void ctrlData_printTxParameters(TI_HANDLE hCtrlData);
    404 void ctrlData_printCtrlBlock(TI_HANDLE hCtrlData);
    405 void ctrlData_printCtrlCounters(TI_HANDLE hCtrlData);
    406 void ctrlData_printFourX(TI_HANDLE hCtrlData);
    407 
    408 #ifdef TI_DBG
    409 void ctrlData_clearClsfrTable ( TI_HANDLE hCtrlData );
    410 void ctrlData_printClsfrTable ( TI_HANDLE hCtrlData );
    411 #endif
    412 
    413 /* TEST FUNCTION */
    414 /*---------------*/
    415 void Test_OsFreeFunction(TI_HANDLE hOs, TI_HANDLE pAddr);
    416 TI_HANDLE Test_rxData_receiveMsduFromWlan(TI_HANDLE hRxData, mem_MSDU_T *pMsdu, Rx_attr_t* pRxAttr);
    417 
    418 #endif
    419 
    420