/* DTS open function. * On open the transport device should initialize itself. * Parameters: * pContext:Cookie that should be passed back to the caller along * with the callback. * * Return Value: SUCCESS Completed successfully. * FAILURE_XXX Request was rejected due XXX Reason. * */ wpt_status WDTS_openTransport( void *pContext) { void *pDTDriverContext; WDI_DS_ClientDataType *pClientData; WDI_Status sWdiStatus = WDI_STATUS_SUCCESS; WDTS_ClientCallbacks WDTSCb; pClientData = (WDI_DS_ClientDataType*) wpalMemoryAllocate(sizeof(WDI_DS_ClientDataType)); if (!pClientData){ return eWLAN_PAL_STATUS_E_NOMEM; } pClientData->suspend = 0; WDI_DS_AssignDatapathContext(pContext, (void*)pClientData); pDTDriverContext = gTransportDriver.open(); if( NULL == pDTDriverContext ) { DTI_TRACE( DTI_TRACE_LEVEL_ERROR, " %s fail from transport open", __func__); return eWLAN_PAL_STATUS_E_FAILURE; } WDT_AssignTransportDriverContext(pContext, pDTDriverContext); WDTSCb.rxFrameReadyCB = WDTS_RxPacket; WDTSCb.txCompleteCB = WDTS_TxPacketComplete; WDTSCb.lowResourceCB = WDTS_OOResourceNotification; WDTSCb.receiveMbMsgCB = WDTS_MbReceiveMsg; WDTSCb.receiveLogCompleteCB = WDTS_LogRxDone; gTransportDriver.register_client(pDTDriverContext, WDTSCb, (void*)pClientData); /* Create a memory pool for Mgmt BDheaders.*/ sWdiStatus = WDI_DS_MemPoolCreate(&pClientData->mgmtMemPool, WDI_DS_MAX_CHUNK_SIZE, WDI_DS_HI_PRI_RES_NUM); if (WDI_STATUS_SUCCESS != sWdiStatus){ return eWLAN_PAL_STATUS_E_NOMEM; } /* Create a memory pool for Data BDheaders.*/ sWdiStatus = WDI_DS_MemPoolCreate(&pClientData->dataMemPool, WDI_DS_MAX_CHUNK_SIZE, WDI_DS_LO_PRI_RES_NUM); if (WDI_STATUS_SUCCESS != sWdiStatus){ return eWLAN_PAL_STATUS_E_NOMEM; } wpalMemoryZero(&gDsTrafficStats, sizeof(gDsTrafficStats)); WDI_DS_LoggingMbCreate(&pClientData->loggingMbContext, sizeof(tLoggingMailBox)); if (WDI_STATUS_SUCCESS != sWdiStatus) return eWLAN_PAL_STATUS_E_NOMEM; return eWLAN_PAL_STATUS_SUCCESS; }
/* DTS open function. * On open the transport device should initialize itself. * Parameters: * pContext:Cookie that should be passed back to the caller along * with the callback. * * Return Value: SUCCESS Completed successfully. * FAILURE_XXX Request was rejected due XXX Reason. * */ wpt_status WDTS_openTransport( void *pContext) { void *pDTDriverContext; WDI_DS_ClientDataType *pClientData; WDI_Status sWdiStatus = WDI_STATUS_SUCCESS; pClientData = (WDI_DS_ClientDataType*) wpalMemoryAllocate(sizeof(WDI_DS_ClientDataType)); if (!pClientData){ return eWLAN_PAL_STATUS_E_NOMEM; } pClientData->suspend = 0; WDI_DS_AssignDatapathContext(pContext, (void*)pClientData); pDTDriverContext = gTransportDriver.open(); if( NULL == pDTDriverContext ) { DTI_TRACE( DTI_TRACE_LEVEL_ERROR, " %s fail from transport open", __FUNCTION__); return eWLAN_PAL_STATUS_E_FAILURE; } WDT_AssignTransportDriverContext(pContext, pDTDriverContext); gTransportDriver.register_client(pDTDriverContext, WDTS_RxPacket, WDTS_TxPacketComplete, WDTS_OOResourceNotification, (void*)pClientData); /* Create a memory pool for Mgmt BDheaders.*/ sWdiStatus = WDI_DS_MemPoolCreate(&pClientData->mgmtMemPool, WDI_DS_MAX_CHUNK_SIZE, WDI_DS_HI_PRI_RES_NUM); if (WDI_STATUS_SUCCESS != sWdiStatus){ return eWLAN_PAL_STATUS_E_NOMEM; } /* Create a memory pool for Data BDheaders.*/ sWdiStatus = WDI_DS_MemPoolCreate(&pClientData->dataMemPool, WDI_DS_MAX_CHUNK_SIZE, WDI_DS_LO_PRI_RES_NUM); if (WDI_STATUS_SUCCESS != sWdiStatus){ return eWLAN_PAL_STATUS_E_NOMEM; } return eWLAN_PAL_STATUS_SUCCESS; }