diff --git a/core/hdd/src/wlan_hdd_cfg80211.c b/core/hdd/src/wlan_hdd_cfg80211.c index da94e816f8dc..d0daf43ec565 100644 --- a/core/hdd/src/wlan_hdd_cfg80211.c +++ b/core/hdd/src/wlan_hdd_cfg80211.c @@ -1718,11 +1718,16 @@ static void wlan_hdd_cfg80211_start_pending_acs(struct work_struct *work); int wlan_hdd_cfg80211_start_acs(struct hdd_adapter *adapter) { - struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter); + struct hdd_context *hdd_ctx; tsap_Config_t *sap_config; tpWLAN_SAPEventCB acs_event_callback; int status; + if (!adapter) { + hdd_err("adapater is NULL"); + return -EINVAL; + } + hdd_ctx = WLAN_HDD_GET_CTX(adapter); sap_config = &adapter->sessionCtx.ap.sapConfig; if (hdd_ctx->acs_policy.acs_channel) sap_config->channel = hdd_ctx->acs_policy.acs_channel; @@ -2639,6 +2644,9 @@ static void wlan_hdd_cfg80211_start_pending_acs(struct work_struct *work) { struct hdd_adapter *adapter = container_of(work, struct hdd_adapter, acs_pending_work.work); + if (!adapter) + return; + clear_bit(ACS_PENDING, &adapter->event_flags); wlan_hdd_cfg80211_start_acs(adapter); } @@ -2770,7 +2778,6 @@ void wlan_hdd_cfg80211_acs_ch_select_evt(struct hdd_adapter *adapter) /* Lets give 500ms for OBSS + START_BSS to complete */ schedule_delayed_work(&con_sap_adapter->acs_pending_work, msecs_to_jiffies(500)); - clear_bit(ACS_PENDING, &con_sap_adapter->event_flags); } } diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c index 5dd01852bb1c..d2ef4c0f4d3e 100644 --- a/core/hdd/src/wlan_hdd_main.c +++ b/core/hdd/src/wlan_hdd_main.c @@ -4382,6 +4382,13 @@ QDF_STATUS hdd_stop_adapter(struct hdd_context *hdd_ctx, struct hdd_adapter *ada /* Flush IPA exception path packets */ hdd_ipa_flush(hdd_ctx); case QDF_P2P_GO_MODE: + if (QDF_SAP_MODE == adapter->device_mode) { + if (test_bit(ACS_PENDING, &adapter->event_flags)) { + cds_flush_delayed_work( + &adapter->acs_pending_work); + clear_bit(ACS_PENDING, &adapter->event_flags); + } + } /* Any softap specific cleanup here... */ if (adapter->device_mode == QDF_P2P_GO_MODE) wlan_hdd_cleanup_remain_on_channel_ctx(adapter);