diff --git a/core/hdd/src/wlan_hdd_ipa.c b/core/hdd/src/wlan_hdd_ipa.c index 248752c211c1..5dbe66fe573c 100644 --- a/core/hdd/src/wlan_hdd_ipa.c +++ b/core/hdd/src/wlan_hdd_ipa.c @@ -1856,15 +1856,17 @@ static bool hdd_ipa_uc_find_add_assoc_sta(struct hdd_ipa_priv *hdd_ipa, */ static int hdd_ipa_uc_enable_pipes(struct hdd_ipa_priv *hdd_ipa) { - int result; + int result = 0; void *soc = cds_get_context(QDF_MODULE_ID_SOC); struct ol_txrx_pdev_t *pdev = cds_get_context(QDF_MODULE_ID_TXRX); + HDD_IPA_LOG(QDF_TRACE_LEVEL_FATAL, "enter"); + result = cdp_ipa_enable_pipes(soc, (struct cdp_pdev *)pdev); if (result) { HDD_IPA_LOG(QDF_TRACE_LEVEL_ERROR, "Enable PIPE fail, code %d", result); - return result; + goto end; } INIT_COMPLETION(hdd_ipa->ipa_resource_comp); @@ -1872,7 +1874,10 @@ static int hdd_ipa_uc_enable_pipes(struct hdd_ipa_priv *hdd_ipa) cdp_ipa_enable_autonomy(soc, (struct cdp_pdev *)pdev); - return 0; +end: + HDD_IPA_LOG(QDF_TRACE_LEVEL_FATAL, "exit: ipa_pipes_down=%d", + hdd_ipa->ipa_pipes_down); + return result; } /** @@ -1885,9 +1890,9 @@ static int hdd_ipa_uc_disable_pipes(struct hdd_ipa_priv *hdd_ipa) { void *soc = cds_get_context(QDF_MODULE_ID_SOC); struct ol_txrx_pdev_t *pdev = cds_get_context(QDF_MODULE_ID_TXRX); - int result; + int result = 0; - hdd_ipa->ipa_pipes_down = true; + HDD_IPA_LOG(QDF_TRACE_LEVEL_FATAL, "enter"); cdp_ipa_disable_autonomy(soc, (struct cdp_pdev *)pdev); @@ -1895,10 +1900,15 @@ static int hdd_ipa_uc_disable_pipes(struct hdd_ipa_priv *hdd_ipa) if (result) { HDD_IPA_LOG(QDF_TRACE_LEVEL_ERROR, "Disable WDI PIPE fail, code %d", result); - return result; + goto end; } - return 0; + hdd_ipa->ipa_pipes_down = true; + +end: + HDD_IPA_LOG(QDF_TRACE_LEVEL_FATAL, "exit: ipa_pipes_down=%d", + hdd_ipa->ipa_pipes_down); + return result; } /** @@ -1911,6 +1921,8 @@ static int hdd_ipa_uc_handle_first_con(struct hdd_ipa_priv *hdd_ipa) { struct hdd_context *hdd_ctx = hdd_ipa->hdd_ctx; + HDD_IPA_LOG(QDF_TRACE_LEVEL_FATAL, "enter"); + hdd_ipa->activated_fw_pipe = 0; hdd_ipa->resource_loading = true; @@ -1954,8 +1966,7 @@ static int hdd_ipa_uc_handle_first_con(struct hdd_ipa_priv *hdd_ipa) hdd_ipa->resource_loading = false; } - HDD_IPA_LOG(QDF_TRACE_LEVEL_DEBUG, - "IPA WDI Pipes activated successfully"); + HDD_IPA_LOG(QDF_TRACE_LEVEL_FATAL, "exit: IPA WDI Pipes activated!"); return 0; } @@ -1970,6 +1981,8 @@ static void hdd_ipa_uc_handle_last_discon(struct hdd_ipa_priv *hdd_ipa) void *soc = cds_get_context(QDF_MODULE_ID_SOC); void *pdev = cds_get_context(QDF_MODULE_ID_TXRX); + HDD_IPA_LOG(QDF_TRACE_LEVEL_FATAL, "enter"); + if (!pdev) { HDD_IPA_LOG(QDF_TRACE_LEVEL_ERROR, "txrx context is NULL"); QDF_ASSERT(0); @@ -1982,6 +1995,8 @@ static void hdd_ipa_uc_handle_last_discon(struct hdd_ipa_priv *hdd_ipa) cdp_ipa_set_active(soc, (struct cdp_pdev *)pdev, false, false); HDD_IPA_LOG(QDF_TRACE_LEVEL_DEBUG, "Disable FW TX PIPE"); cdp_ipa_set_active(soc, (struct cdp_pdev *)pdev, false, true); + + HDD_IPA_LOG(QDF_TRACE_LEVEL_FATAL, "exit: IPA WDI Pipes deactivated"); } /** @@ -2812,7 +2827,8 @@ QDF_STATUS hdd_ipa_uc_ol_init(struct hdd_context *hdd_ctx) if (!hdd_ipa_uc_is_enabled(hdd_ctx)) return QDF_STATUS_SUCCESS; - ENTER(); + HDD_IPA_LOG(QDF_TRACE_LEVEL_FATAL, "enter"); + /* Do only IPA Pipe specific configuration here. All one time * initialization wrt IPA UC shall in hdd_ipa_init and those need * to be reinit at SSR shall in be SSR deinit / reinit functions. @@ -2857,7 +2873,7 @@ QDF_STATUS hdd_ipa_uc_ol_init(struct hdd_context *hdd_ctx) } fail_return: - EXIT(); + HDD_IPA_LOG(QDF_TRACE_LEVEL_FATAL, "exit: stat=%d", stat); return status; } @@ -2873,6 +2889,8 @@ int hdd_ipa_uc_ol_deinit(struct hdd_context *hdd_ctx) int ret = 0; QDF_STATUS status; + HDD_IPA_LOG(QDF_TRACE_LEVEL_FATAL, "enter"); + if (!hdd_ipa_uc_is_enabled(hdd_ctx)) return ret; @@ -2891,6 +2909,7 @@ int hdd_ipa_uc_ol_deinit(struct hdd_context *hdd_ctx) } } + HDD_IPA_LOG(QDF_TRACE_LEVEL_FATAL, "exit: ret=%d", ret); return ret; } @@ -2909,6 +2928,8 @@ static void __hdd_ipa_uc_force_pipe_shutdown(struct hdd_context *hdd_ctx) { struct hdd_ipa_priv *hdd_ipa; + HDD_IPA_LOG(QDF_TRACE_LEVEL_FATAL, "enter"); + if (!hdd_ipa_is_enabled(hdd_ctx) || !hdd_ctx->hdd_ipa) return; @@ -2921,6 +2942,8 @@ static void __hdd_ipa_uc_force_pipe_shutdown(struct hdd_context *hdd_ctx) HDD_IPA_LOG(QDF_TRACE_LEVEL_DEBUG, "IPA pipes are down, do nothing"); } + + HDD_IPA_LOG(QDF_TRACE_LEVEL_FATAL, "exit"); } /** @@ -2987,7 +3010,7 @@ static int hdd_ipa_uc_send_evt(struct hdd_adapter *adapter, strlcpy(msg->name, adapter->dev->name, IPA_RESOURCE_NAME_MAX); memcpy(msg->mac_addr, mac_addr, ETH_ALEN); - HDD_IPA_LOG(QDF_TRACE_LEVEL_DEBUG, "%s: Evt: %d", + HDD_IPA_LOG(QDF_TRACE_LEVEL_FATAL, "%s: Evt: %d", msg->name, meta.msg_type); ret = ipa_send_msg(&meta, msg, hdd_ipa_msg_free_fn); if (ret) { @@ -3017,6 +3040,7 @@ static int hdd_ipa_uc_disconnect_client(struct hdd_adapter *adapter) int ret = 0; int i; + HDD_IPA_LOG(QDF_TRACE_LEVEL_FATAL, "enter"); for (i = 0; i < WLAN_MAX_STA_COUNT; i++) { if (qdf_is_macaddr_broadcast(&adapter->aStaInfo[i].macAddrSTA)) continue; @@ -3028,6 +3052,8 @@ static int hdd_ipa_uc_disconnect_client(struct hdd_adapter *adapter) hdd_ipa->sap_num_connected_sta--; } } + HDD_IPA_LOG(QDF_TRACE_LEVEL_FATAL, "exit: sap_num_connected_sta=%d", + hdd_ipa->sap_num_connected_sta); return ret; } @@ -3045,9 +3071,12 @@ static int hdd_ipa_uc_disconnect_ap(struct hdd_adapter *adapter) { int ret = 0; - if (adapter->ipa_context) + HDD_IPA_LOG(QDF_TRACE_LEVEL_FATAL, "enter"); + if (adapter->ipa_context) { hdd_ipa_uc_send_evt(adapter, WLAN_AP_DISCONNECT, adapter->dev->dev_addr); + } + HDD_IPA_LOG(QDF_TRACE_LEVEL_FATAL, "exit"); return ret; } @@ -3066,12 +3095,14 @@ static int hdd_ipa_uc_disconnect_sta(struct hdd_adapter *adapter) struct hdd_ipa_priv *hdd_ipa = ghdd_ipa; int ret = 0; + HDD_IPA_LOG(QDF_TRACE_LEVEL_FATAL, "enter"); if (hdd_ipa_uc_sta_is_enabled(hdd_ipa->hdd_ctx) && hdd_ipa->sta_connected) { sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(adapter); hdd_ipa_uc_send_evt(adapter, WLAN_STA_DISCONNECT, sta_ctx->conn_info.bssId.bytes); } + HDD_IPA_LOG(QDF_TRACE_LEVEL_FATAL, "exit"); return ret; } @@ -3124,6 +3155,8 @@ static int __hdd_ipa_uc_ssr_deinit(void) struct hdd_ipa_iface_context *iface_context; struct hdd_context *hdd_ctx; + HDD_IPA_LOG(QDF_TRACE_LEVEL_FATAL, "enter"); + if (!hdd_ipa) return 0; @@ -3163,6 +3196,8 @@ static int __hdd_ipa_uc_ssr_deinit(void) qdf_mem_free(hdd_ipa->uc_op_work[idx].msg); hdd_ipa->uc_op_work[idx].msg = NULL; } + + HDD_IPA_LOG(QDF_TRACE_LEVEL_FATAL, "exit"); return 0; } @@ -3200,6 +3235,8 @@ static int __hdd_ipa_uc_ssr_reinit(struct hdd_context *hdd_ctx) int i; struct hdd_ipa_iface_context *iface_context = NULL; + HDD_IPA_LOG(QDF_TRACE_LEVEL_FATAL, "enter"); + if (!hdd_ipa || !hdd_ipa_uc_is_enabled(hdd_ctx)) return 0; @@ -3227,6 +3264,7 @@ static int __hdd_ipa_uc_ssr_reinit(struct hdd_context *hdd_ctx) hdd_ipa->uc_loaded = true; } + HDD_IPA_LOG(QDF_TRACE_LEVEL_FATAL, "exit"); return 0; } @@ -4671,6 +4709,8 @@ static void hdd_ipa_teardown_sys_pipe(struct hdd_ipa_priv *hdd_ipa) */ static void hdd_ipa_cleanup_iface(struct hdd_ipa_iface_context *iface_context) { + HDD_IPA_LOG(QDF_TRACE_LEVEL_FATAL, "enter"); + if (iface_context == NULL) return; @@ -4690,6 +4730,8 @@ static void hdd_ipa_cleanup_iface(struct hdd_ipa_iface_context *iface_context) QDF_ASSERT(0); } iface_context->hdd_ipa->num_iface--; + HDD_IPA_LOG(QDF_TRACE_LEVEL_FATAL, "exit: num_iface=%d", + iface_context->hdd_ipa->num_iface); } /** @@ -4707,6 +4749,8 @@ static int hdd_ipa_setup_iface(struct hdd_ipa_priv *hdd_ipa, void *tl_context = NULL; int i, ret = 0; + HDD_IPA_LOG(QDF_TRACE_LEVEL_FATAL, "enter"); + /* Lower layer may send multiple START_BSS_EVENT in DFS mode or during * channel change indication. Since these indications are sent by lower * layer as SAP updates and IPA doesn't have to do anything for these @@ -4753,6 +4797,9 @@ static int hdd_ipa_setup_iface(struct hdd_ipa_priv *hdd_ipa, goto end; hdd_ipa->num_iface++; + + HDD_IPA_LOG(QDF_TRACE_LEVEL_FATAL, "exit: num_iface=%d", + hdd_ipa->num_iface); return ret; end: @@ -4943,7 +4990,7 @@ static int __hdd_ipa_wlan_evt(struct hdd_adapter *adapter, uint8_t sta_id, struct ipa_wlan_msg_ex *msg_ex = NULL; int ret; - HDD_IPA_LOG(QDF_TRACE_LEVEL_DEBUG, "%s: %s evt, MAC: %pM sta_id: %d", + HDD_IPA_LOG(QDF_TRACE_LEVEL_FATAL, "%s: %s evt, MAC: %pM sta_id: %d", adapter->dev->name, hdd_ipa_wlan_event_to_str(type), mac_addr, sta_id); @@ -5070,6 +5117,9 @@ static int __hdd_ipa_wlan_evt(struct hdd_adapter *adapter, uint8_t sta_id, hdd_ipa->sta_connected = 1; qdf_mutex_release(&hdd_ipa->event_lock); + + HDD_IPA_LOG(QDF_TRACE_LEVEL_FATAL, "sta_connected=%d", + hdd_ipa->sta_connected); break; case WLAN_AP_CONNECT: @@ -5145,6 +5195,9 @@ static int __hdd_ipa_wlan_evt(struct hdd_adapter *adapter, uint8_t sta_id, hdd_ipa_cleanup_iface(adapter->ipa_context); qdf_mutex_release(&hdd_ipa->event_lock); + + HDD_IPA_LOG(QDF_TRACE_LEVEL_FATAL, "sta_connected=%d", + hdd_ipa->sta_connected); break; case WLAN_AP_DISCONNECT: @@ -5281,6 +5334,9 @@ static int __hdd_ipa_wlan_evt(struct hdd_adapter *adapter, uint8_t sta_id, return ret; } hdd_ipa->stats.num_send_msg++; + + HDD_IPA_LOG(QDF_TRACE_LEVEL_FATAL, "sap_num_connected_sta=%d", + hdd_ipa->sap_num_connected_sta); return ret; case WLAN_CLIENT_DISCONNECT: @@ -5324,6 +5380,9 @@ static int __hdd_ipa_wlan_evt(struct hdd_adapter *adapter, uint8_t sta_id, } else { qdf_mutex_release(&hdd_ipa->event_lock); } + + HDD_IPA_LOG(QDF_TRACE_LEVEL_FATAL, "sap_num_connected_sta=%d", + hdd_ipa->sap_num_connected_sta); break; default: @@ -5460,11 +5519,11 @@ static QDF_STATUS __hdd_ipa_init(struct hdd_context *hdd_ctx) struct ol_txrx_pdev_t *pdev = NULL; struct ipa_rm_perf_profile profile; + HDD_IPA_LOG(QDF_TRACE_LEVEL_FATAL, "enter"); + if (!hdd_ipa_is_enabled(hdd_ctx)) return QDF_STATUS_SUCCESS; - ENTER(); - pdev = cds_get_context(QDF_MODULE_ID_TXRX); if (!pdev) { HDD_IPA_LOG(QDF_TRACE_LEVEL_FATAL, "pdev is NULL"); @@ -5567,7 +5626,7 @@ static QDF_STATUS __hdd_ipa_init(struct hdd_context *hdd_ctx) init_completion(&hdd_ipa->ipa_resource_comp); - EXIT(); + HDD_IPA_LOG(QDF_TRACE_LEVEL_FATAL, "exit: success"); return QDF_STATUS_SUCCESS; fail_create_sys_pipe: @@ -5578,7 +5637,7 @@ fail_setup_rm: hdd_ctx->hdd_ipa = NULL; ghdd_ipa = NULL; fail_return: - EXIT(); + HDD_IPA_LOG(QDF_TRACE_LEVEL_FATAL, "exit: fail"); return QDF_STATUS_E_FAILURE; } diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c index 34d480541e41..56a99251acf0 100644 --- a/core/hdd/src/wlan_hdd_main.c +++ b/core/hdd/src/wlan_hdd_main.c @@ -9535,6 +9535,8 @@ int hdd_wlan_stop_modules(struct hdd_context *hdd_ctx, bool ftm_mode) int active_threads; ENTER(); + hdd_alert("stop WLAN module: entering driver status=%d", + hdd_ctx->driver_status); hdd_deregister_policy_manager_callback(hdd_ctx->hdd_psoc); @@ -9647,6 +9649,8 @@ int hdd_wlan_stop_modules(struct hdd_context *hdd_ctx, bool ftm_mode) done: hdd_ctx->stop_modules_in_progress = false; mutex_unlock(&hdd_ctx->iface_change_lock); + hdd_alert("stop WLAN module: exit driver status=%d", + hdd_ctx->driver_status); EXIT(); return ret;