|
@@ -1440,98 +1440,6 @@ void cds_core_return_msg(void *pVContext, p_cds_msg_wrapper pMsgWrapper)
|
|
|
cds_mq_put(&p_cds_context->freeVosMq, pMsgWrapper);
|
|
|
} /* cds_core_return_msg() */
|
|
|
|
|
|
-
|
|
|
-/**
|
|
|
- * cds_shutdown() - shutdown CDS
|
|
|
- * @cds_context: global cds context
|
|
|
- *
|
|
|
- * Return: QDF status
|
|
|
- */
|
|
|
-QDF_STATUS cds_shutdown(v_CONTEXT_t cds_context)
|
|
|
-{
|
|
|
- QDF_STATUS qdf_status;
|
|
|
- tpAniSirGlobal pmac = (((p_cds_contextType)cds_context)->pMACContext);
|
|
|
-
|
|
|
- ol_txrx_pdev_detach(gp_cds_context->pdev_txrx_ctx, 1);
|
|
|
- cds_free_context(cds_context, QDF_MODULE_ID_TXRX,
|
|
|
- gp_cds_context->pdev_txrx_ctx);
|
|
|
-
|
|
|
- qdf_status = sme_close(((p_cds_contextType) cds_context)->pMACContext);
|
|
|
- if (!QDF_IS_STATUS_SUCCESS(qdf_status)) {
|
|
|
- QDF_TRACE(QDF_MODULE_ID_QDF, QDF_TRACE_LEVEL_ERROR,
|
|
|
- "%s: Failed to close SME", __func__);
|
|
|
- QDF_ASSERT(QDF_IS_STATUS_SUCCESS(qdf_status));
|
|
|
- }
|
|
|
- /*
|
|
|
- * CAC timer will be initiated and started only when SAP starts on
|
|
|
- * DFS channel and it will be stopped and destroyed immediately once the
|
|
|
- * radar detected or timedout. So as per design CAC timer should be
|
|
|
- * destroyed after stop
|
|
|
- */
|
|
|
- if (pmac->sap.SapDfsInfo.is_dfs_cac_timer_running) {
|
|
|
- qdf_mc_timer_stop(&pmac->sap.SapDfsInfo.sap_dfs_cac_timer);
|
|
|
- pmac->sap.SapDfsInfo.is_dfs_cac_timer_running = 0;
|
|
|
- qdf_mc_timer_destroy(&pmac->sap.SapDfsInfo.sap_dfs_cac_timer);
|
|
|
- }
|
|
|
-
|
|
|
- qdf_status = mac_close(((p_cds_contextType) cds_context)->pMACContext);
|
|
|
- if (!QDF_IS_STATUS_SUCCESS(qdf_status)) {
|
|
|
- QDF_TRACE(QDF_MODULE_ID_QDF, QDF_TRACE_LEVEL_ERROR,
|
|
|
- "%s: Failed to close MAC", __func__);
|
|
|
- QDF_ASSERT(QDF_IS_STATUS_SUCCESS(qdf_status));
|
|
|
- }
|
|
|
-
|
|
|
- ((p_cds_contextType) cds_context)->pMACContext = NULL;
|
|
|
-
|
|
|
- if (false == wma_needshutdown(cds_context)) {
|
|
|
-
|
|
|
- qdf_status = wma_close(cds_context);
|
|
|
- if (!QDF_IS_STATUS_SUCCESS(qdf_status)) {
|
|
|
- QDF_TRACE(QDF_MODULE_ID_QDF, QDF_TRACE_LEVEL_ERROR,
|
|
|
- "%s: Failed to close wma!", __func__);
|
|
|
- QDF_ASSERT(QDF_IS_STATUS_SUCCESS(qdf_status));
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- qdf_status = wma_wmi_work_close(cds_context);
|
|
|
- if (!QDF_IS_STATUS_SUCCESS(qdf_status)) {
|
|
|
- QDF_TRACE(QDF_MODULE_ID_QDF, QDF_TRACE_LEVEL_ERROR,
|
|
|
- "%s: Failed to close wma_wmi_work!", __func__);
|
|
|
- QDF_ASSERT(0);
|
|
|
- }
|
|
|
-
|
|
|
- if (gp_cds_context->htc_ctx) {
|
|
|
- htc_stop(gp_cds_context->htc_ctx);
|
|
|
- htc_destroy(gp_cds_context->htc_ctx);
|
|
|
- gp_cds_context->htc_ctx = NULL;
|
|
|
- }
|
|
|
-
|
|
|
- qdf_status = wma_wmi_service_close(cds_context);
|
|
|
- if (!QDF_IS_STATUS_SUCCESS(qdf_status)) {
|
|
|
- QDF_TRACE(QDF_MODULE_ID_QDF, QDF_TRACE_LEVEL_ERROR,
|
|
|
- "%s: Failed to close wma_wmi_service!", __func__);
|
|
|
- QDF_ASSERT(QDF_IS_STATUS_SUCCESS(qdf_status));
|
|
|
- }
|
|
|
-
|
|
|
- cds_mq_deinit(&((p_cds_contextType) cds_context)->freeVosMq);
|
|
|
-
|
|
|
- qdf_status = qdf_event_destroy(&gp_cds_context->wmaCompleteEvent);
|
|
|
- if (!QDF_IS_STATUS_SUCCESS(qdf_status)) {
|
|
|
- QDF_TRACE(QDF_MODULE_ID_QDF, QDF_TRACE_LEVEL_ERROR,
|
|
|
- "%s: failed to destroy wmaCompleteEvent", __func__);
|
|
|
- QDF_ASSERT(QDF_IS_STATUS_SUCCESS(qdf_status));
|
|
|
- }
|
|
|
-
|
|
|
- qdf_status = qdf_event_destroy(&gp_cds_context->ProbeEvent);
|
|
|
- if (!QDF_IS_STATUS_SUCCESS(qdf_status)) {
|
|
|
- QDF_TRACE(QDF_MODULE_ID_QDF, QDF_TRACE_LEVEL_ERROR,
|
|
|
- "%s: failed to destroy ProbeEvent", __func__);
|
|
|
- QDF_ASSERT(QDF_IS_STATUS_SUCCESS(qdf_status));
|
|
|
- }
|
|
|
-
|
|
|
- return QDF_STATUS_SUCCESS;
|
|
|
-}
|
|
|
-
|
|
|
/**
|
|
|
* cds_get_vdev_types() - get vdev type
|
|
|
* @mode: mode
|