diff --git a/core/hdd/src/wlan_hdd_driver_ops.c b/core/hdd/src/wlan_hdd_driver_ops.c index d8a1f67364ce..ff39296ee733 100644 --- a/core/hdd/src/wlan_hdd_driver_ops.c +++ b/core/hdd/src/wlan_hdd_driver_ops.c @@ -228,8 +228,10 @@ static void wlan_hdd_shutdown(void) hddLog(LOGE, FL("Host is not ready for SSR, attempting anyway")); - if (!WLAN_IS_EPPING_ENABLED(cds_get_conparam())) + if (!WLAN_IS_EPPING_ENABLED(cds_get_conparam())) { + hif_disable_isr(hif_ctx); hdd_wlan_shutdown(); + } hif_disable(hif_ctx, HIF_DISABLE_TYPE_SHUTDOWN); hif_close(hif_ctx); diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c index 64a72991cde3..68b9a8a26b7a 100644 --- a/core/hdd/src/wlan_hdd_main.c +++ b/core/hdd/src/wlan_hdd_main.c @@ -2967,7 +2967,10 @@ CDF_STATUS hdd_start_all_adapters(hdd_context_t *hdd_ctx) /* Indicate disconnect event to supplicant if associated previously */ if (eConnectionState_Associated == connState || - eConnectionState_IbssConnected == connState) { + eConnectionState_IbssConnected == connState || + eConnectionState_NotConnected == connState || + eConnectionState_IbssDisconnected == connState || + eConnectionState_Disconnecting == connState) { union iwreq_data wrqu; memset(&wrqu, '\0', sizeof(wrqu)); wrqu.ap_addr.sa_family = ARPHRD_ETHER; diff --git a/core/hdd/src/wlan_hdd_power.c b/core/hdd/src/wlan_hdd_power.c index d7662e817147..cc5679ae3ba2 100644 --- a/core/hdd/src/wlan_hdd_power.c +++ b/core/hdd/src/wlan_hdd_power.c @@ -1380,8 +1380,6 @@ CDF_STATUS hdd_wlan_shutdown(void) CDF_ASSERT(0); } - hif_disable_isr(((cds_context_type *) p_cds_context)->pHIFContext); - hddLog(CDF_TRACE_LEVEL_INFO, "%s: Flush Queues", __func__); /* Clean up message queues of TX, RX and MC thread */ cds_sched_flush_mc_mqs(cds_sched_context);