wpt_status wpalEventDelete(wpt_event *pEvent) { /* Not doing sanity checks since VOS does them anyways */ if( vos_event_destroy( (vos_event_t*)pEvent ) != VOS_STATUS_SUCCESS ) { WPAL_TRACE(eWLAN_MODULE_PAL, eWLAN_PAL_TRACE_LEVEL_ERROR, " delete event fail"); return eWLAN_PAL_STATUS_E_FAILURE; } return eWLAN_PAL_STATUS_SUCCESS; }
wpt_status wpalEventDelete(wpt_event *pEvent) { if( vos_event_destroy( (vos_event_t*)pEvent ) != VOS_STATUS_SUCCESS ) { WPAL_TRACE(eWLAN_MODULE_PAL, eWLAN_PAL_TRACE_LEVEL_ERROR, " delete event fail"); return eWLAN_PAL_STATUS_E_FAILURE; } return eWLAN_PAL_STATUS_SUCCESS; }
VOS_STATUS sysStop( v_CONTEXT_t pVosContext ) { VOS_STATUS vosStatus = VOS_STATUS_SUCCESS; vos_msg_t sysMsg; v_U8_t evtIndex; /* Initialize the stop event */ vosStatus = vos_event_init( &gStopEvt ); if(! VOS_IS_STATUS_SUCCESS( vosStatus )) { return vosStatus; } /* post a message to SYS module in MC to stop SME and MAC */ sysBuildMessageHeader( SYS_MSG_ID_MC_STOP, &sysMsg ); // Save the user callback and user data to callback in the body pointer // and body data portion of the message. // finished. sysMsg.bodyptr = (void *)sysStopCompleteCb; sysMsg.bodyval = (v_U32_t) &gStopEvt; // post the message.. vosStatus = vos_mq_post_message( VOS_MQ_ID_SYS, &sysMsg ); if ( !VOS_IS_STATUS_SUCCESS(vosStatus) ) { vosStatus = VOS_STATUS_E_BADMSG; } vosStatus = vos_wait_events( &gStopEvt, 1, 0, &evtIndex ); VOS_ASSERT( VOS_IS_STATUS_SUCCESS ( vosStatus ) ); vosStatus = vos_event_destroy( &gStopEvt ); VOS_ASSERT( VOS_IS_STATUS_SUCCESS ( vosStatus ) ); return( vosStatus ); }
VOS_STATUS sysStop( v_CONTEXT_t pVosContext ) { VOS_STATUS vosStatus = VOS_STATUS_SUCCESS; vos_msg_t sysMsg; v_U8_t evtIndex; vosStatus = vos_event_init( &gStopEvt ); if(! VOS_IS_STATUS_SUCCESS( vosStatus )) { return vosStatus; } sysBuildMessageHeader( SYS_MSG_ID_MC_STOP, &sysMsg ); sysMsg.bodyptr = (void *)sysStopCompleteCb; sysMsg.bodyval = (v_U32_t) &gStopEvt; vosStatus = vos_mq_post_message( VOS_MQ_ID_SYS, &sysMsg ); if ( !VOS_IS_STATUS_SUCCESS(vosStatus) ) { vosStatus = VOS_STATUS_E_BADMSG; } vosStatus = vos_wait_events( &gStopEvt, 1, SYS_STOP_TIMEOUT, &evtIndex ); VOS_ASSERT( VOS_IS_STATUS_SUCCESS ( vosStatus ) ); vosStatus = vos_event_destroy( &gStopEvt ); VOS_ASSERT( VOS_IS_STATUS_SUCCESS ( vosStatus ) ); return( vosStatus ); }
VOS_STATUS vos_close( v_CONTEXT_t vosContext ) { VOS_STATUS vosStatus; #ifdef WLAN_BTAMP_FEATURE vosStatus = WLANBAP_Close(vosContext); if (!VOS_IS_STATUS_SUCCESS(vosStatus)) { VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, "%s: Failed to close BAP", __func__); VOS_ASSERT( VOS_IS_STATUS_SUCCESS( vosStatus ) ); } #endif vosStatus = WLANTL_Close(vosContext); if (!VOS_IS_STATUS_SUCCESS(vosStatus)) { VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, "%s: Failed to close TL", __func__); VOS_ASSERT( VOS_IS_STATUS_SUCCESS( vosStatus ) ); } vosStatus = sme_Close( ((pVosContextType)vosContext)->pMACContext); if (!VOS_IS_STATUS_SUCCESS(vosStatus)) { VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, "%s: Failed to close SME", __func__); VOS_ASSERT( VOS_IS_STATUS_SUCCESS( vosStatus ) ); } vosStatus = macClose( ((pVosContextType)vosContext)->pMACContext); if (!VOS_IS_STATUS_SUCCESS(vosStatus)) { VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, "%s: Failed to close MAC", __func__); VOS_ASSERT( VOS_IS_STATUS_SUCCESS( vosStatus ) ); } ((pVosContextType)vosContext)->pMACContext = NULL; #ifndef CONFIG_ENABLE_LINUX_REG vosStatus = vos_nv_close(); if (!VOS_IS_STATUS_SUCCESS(vosStatus)) { VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, "%s: Failed to close NV", __func__); VOS_ASSERT( VOS_IS_STATUS_SUCCESS( vosStatus ) ); } #endif vosStatus = sysClose( vosContext ); if (!VOS_IS_STATUS_SUCCESS(vosStatus)) { VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, "%s: Failed to close SYS", __func__); VOS_ASSERT( VOS_IS_STATUS_SUCCESS( vosStatus ) ); } if ( TRUE == WDA_needShutdown(vosContext )) { vosStatus = WDA_shutdown( vosContext, VOS_TRUE ); if (VOS_IS_STATUS_SUCCESS( vosStatus ) ) { hdd_set_ssr_required( HDD_SSR_REQUIRED ); } else { VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_FATAL, "%s: Failed to shutdown WDA", __func__ ); VOS_ASSERT( VOS_IS_STATUS_SUCCESS( vosStatus ) ); } } else { vosStatus = WDA_close( vosContext ); if (!VOS_IS_STATUS_SUCCESS(vosStatus)) { VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, "%s: Failed to close WDA", __func__); VOS_ASSERT( VOS_IS_STATUS_SUCCESS( vosStatus ) ); } } vosStatus = vos_packet_close( vosContext ); if (!VOS_IS_STATUS_SUCCESS(vosStatus)) { VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, "%s: Failed to close VOSS Packet", __func__); VOS_ASSERT( VOS_IS_STATUS_SUCCESS( vosStatus ) ); } vos_mq_deinit(&((pVosContextType)vosContext)->freeVosMq); vosStatus = vos_event_destroy(&gpVosContext->wdaCompleteEvent); if (!VOS_IS_STATUS_SUCCESS(vosStatus)) { VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, "%s: failed to destroy wdaCompleteEvent", __func__); VOS_ASSERT( VOS_IS_STATUS_SUCCESS( vosStatus ) ); } vosStatus = vos_event_destroy(&gpVosContext->ProbeEvent); if (!VOS_IS_STATUS_SUCCESS(vosStatus)) { VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, "%s: failed to destroy ProbeEvent", __func__); VOS_ASSERT( VOS_IS_STATUS_SUCCESS( vosStatus ) ); } return VOS_STATUS_SUCCESS; }
VOS_STATUS vos_shutdown(v_CONTEXT_t vosContext) { VOS_STATUS vosStatus; #ifdef WLAN_BTAMP_FEATURE vosStatus = WLANBAP_Close(vosContext); if (!VOS_IS_STATUS_SUCCESS(vosStatus)) { VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, "%s: Failed to close BAP", __func__); VOS_ASSERT( VOS_IS_STATUS_SUCCESS( vosStatus ) ); } #endif vosStatus = WLANTL_Close(vosContext); if (!VOS_IS_STATUS_SUCCESS(vosStatus)) { VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, "%s: Failed to close TL", __func__); VOS_ASSERT( VOS_IS_STATUS_SUCCESS( vosStatus ) ); } vosStatus = sme_Close( ((pVosContextType)vosContext)->pMACContext); if (!VOS_IS_STATUS_SUCCESS(vosStatus)) { VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, "%s: Failed to close SME", __func__); VOS_ASSERT( VOS_IS_STATUS_SUCCESS( vosStatus ) ); } vosStatus = macClose( ((pVosContextType)vosContext)->pMACContext); if (!VOS_IS_STATUS_SUCCESS(vosStatus)) { VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, "%s: Failed to close MAC", __func__); VOS_ASSERT( VOS_IS_STATUS_SUCCESS( vosStatus ) ); } ((pVosContextType)vosContext)->pMACContext = NULL; vosStatus = sysClose( vosContext ); if (!VOS_IS_STATUS_SUCCESS(vosStatus)) { VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, "%s: Failed to close SYS", __func__); VOS_ASSERT( VOS_IS_STATUS_SUCCESS( vosStatus ) ); } vosStatus = vos_packet_close( vosContext ); if (!VOS_IS_STATUS_SUCCESS(vosStatus)) { VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, "%s: Failed to close VOSS Packet", __func__); VOS_ASSERT( VOS_IS_STATUS_SUCCESS( vosStatus ) ); } vos_mq_deinit(&((pVosContextType)vosContext)->freeVosMq); vosStatus = vos_event_destroy(&gpVosContext->wdaCompleteEvent); if (!VOS_IS_STATUS_SUCCESS(vosStatus)) { VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, "%s: failed to destroy wdaCompleteEvent", __func__); VOS_ASSERT( VOS_IS_STATUS_SUCCESS( vosStatus ) ); } vosStatus = vos_event_destroy(&gpVosContext->ProbeEvent); if (!VOS_IS_STATUS_SUCCESS(vosStatus)) { VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, "%s: failed to destroy ProbeEvent", __func__); VOS_ASSERT( VOS_IS_STATUS_SUCCESS( vosStatus ) ); } return VOS_STATUS_SUCCESS; }
VOS_STATUS vos_open( v_CONTEXT_t *pVosContext, v_SIZE_t hddContextSize ) { VOS_STATUS vStatus = VOS_STATUS_SUCCESS; int iter = 0; tSirRetStatus sirStatus = eSIR_SUCCESS; tMacOpenParameters macOpenParms; WLANTL_ConfigInfoType TLConfig; VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_INFO_HIGH, "%s: Opening VOSS", __func__); if (NULL == gpVosContext) { VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_FATAL, "%s: Trying to open VOSS without a PreOpen", __func__); VOS_ASSERT(0); return VOS_STATUS_E_FAILURE; } vos_timer_module_init(); if (vos_event_init(&gpVosContext->ProbeEvent) != VOS_STATUS_SUCCESS) { VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_FATAL, "%s: Unable to init probeEvent", __func__); VOS_ASSERT(0); return VOS_STATUS_E_FAILURE; } if (vos_event_init( &(gpVosContext->wdaCompleteEvent) ) != VOS_STATUS_SUCCESS ) { VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_FATAL, "%s: Unable to init wdaCompleteEvent", __func__); VOS_ASSERT(0); goto err_probe_event; } vStatus = vos_mq_init(&gpVosContext->freeVosMq); if (! VOS_IS_STATUS_SUCCESS(vStatus)) { VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_FATAL, "%s: Failed to initialize VOS free message queue", __func__); VOS_ASSERT(0); goto err_wda_complete_event; } for (iter = 0; iter < VOS_CORE_MAX_MESSAGES; iter++) { (gpVosContext->aMsgWrappers[iter]).pVosMsg = &(gpVosContext->aMsgBuffers[iter]); INIT_LIST_HEAD(&gpVosContext->aMsgWrappers[iter].msgNode); vos_mq_put(&gpVosContext->freeVosMq, &(gpVosContext->aMsgWrappers[iter])); } vStatus= vos_sched_open(gpVosContext, &gpVosContext->vosSched, sizeof(VosSchedContext)); if (!VOS_IS_STATUS_SUCCESS(vStatus)) { VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_FATAL, "%s: Failed to open VOS Scheduler", __func__); VOS_ASSERT(0); goto err_msg_queue; } vos_mem_set(&macOpenParms, sizeof(macOpenParms), 0); macOpenParms.frameTransRequired = 1; macOpenParms.driverType = eDRIVER_TYPE_PRODUCTION; vStatus = WDA_open( gpVosContext, gpVosContext->pHDDContext, &macOpenParms ); if (!VOS_IS_STATUS_SUCCESS(vStatus)) { VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_FATAL, "%s: Failed to open WDA module", __func__); VOS_ASSERT(0); goto err_sched_close; } vStatus = vos_packet_open( gpVosContext, &gpVosContext->vosPacket, sizeof( vos_pkt_context_t ) ); if ( !VOS_IS_STATUS_SUCCESS( vStatus ) ) { VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_FATAL, "%s: Failed to open VOS Packet Module", __func__); VOS_ASSERT(0); goto err_wda_close; } vStatus = sysOpen(gpVosContext); if (!VOS_IS_STATUS_SUCCESS(vStatus)) { VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_FATAL, "%s: Failed to open SYS module", __func__); VOS_ASSERT(0); goto err_packet_close; } #ifndef CONFIG_ENABLE_LINUX_REG vStatus = vos_nv_open(); if (!VOS_IS_STATUS_SUCCESS(vStatus)) { VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_FATAL, "%s: Failed to initialize the NV module", __func__); goto err_sys_close; } #endif macOpenParms.frameTransRequired = 1; sirStatus = macOpen(&(gpVosContext->pMACContext), gpVosContext->pHDDContext, &macOpenParms); if (eSIR_SUCCESS != sirStatus) { VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_FATAL, "%s: Failed to open MAC", __func__); VOS_ASSERT(0); goto err_nv_close; } vStatus = sme_Open(gpVosContext->pMACContext); if (!VOS_IS_STATUS_SUCCESS(vStatus)) { VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_FATAL, "%s: Failed to open SME", __func__); VOS_ASSERT(0); goto err_mac_close; } vos_fetch_tl_cfg_parms ( &TLConfig, ((hdd_context_t*)(gpVosContext->pHDDContext))->cfg_ini); vStatus = WLANTL_Open(gpVosContext, &TLConfig); if (!VOS_IS_STATUS_SUCCESS(vStatus)) { VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_FATAL, "%s: Failed to open TL", __func__); VOS_ASSERT(0); goto err_sme_close; } VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_INFO_HIGH, "%s: VOSS successfully Opened", __func__); *pVosContext = gpVosContext; return VOS_STATUS_SUCCESS; err_sme_close: sme_Close(gpVosContext->pMACContext); err_mac_close: macClose(gpVosContext->pMACContext); err_nv_close: #ifndef CONFIG_ENABLE_LINUX_REG vos_nv_close(); err_sys_close: #endif sysClose(gpVosContext); err_packet_close: vos_packet_close( gpVosContext ); err_wda_close: WDA_close(gpVosContext); err_sched_close: vos_sched_close(gpVosContext); err_msg_queue: vos_mq_deinit(&gpVosContext->freeVosMq); err_wda_complete_event: vos_event_destroy( &gpVosContext->wdaCompleteEvent ); err_probe_event: vos_event_destroy(&gpVosContext->ProbeEvent); return VOS_STATUS_E_FAILURE; }