From aceec6c1fc4c7e2bcca389647f4343f495a4e8cb Mon Sep 17 00:00:00 2001 From: Wu Gao Date: Wed, 30 Aug 2017 16:08:21 +0800 Subject: [PATCH] qcacld-3.0: Cleanup scan request when calling stop adapter It doesn't record current scan request and won't cleanup being process scan request. In some Rome platform, host driver just load one time, scan request status mismatch to cfg80211 if didn't cleanup scan request, and then cause crash. Change-Id: I000db80bdf5175775f2415130ee3a2974aefa4ea CRs-Fixed: 2111330 --- core/hdd/src/wlan_hdd_main.c | 5 +---- core/hdd/src/wlan_hdd_scan.c | 7 ++----- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c index 99a624c8dbe3..10637c249992 100644 --- a/core/hdd/src/wlan_hdd_main.c +++ b/core/hdd/src/wlan_hdd_main.c @@ -4306,11 +4306,9 @@ QDF_STATUS hdd_stop_adapter(struct hdd_context *hdd_ctx, struct hdd_adapter *ada union iwreq_data wrqu; tSirUpdateIE updateIE; unsigned long rc; - struct hdd_scan_info *scan_info = NULL; ENTER(); - scan_info = &adapter->scan_info; hdd_debug("Disabling queues"); wlan_hdd_netif_queue_control(adapter, WLAN_STOP_ALL_NETIF_QUEUE_N_CARRIER, @@ -4370,8 +4368,7 @@ QDF_STATUS hdd_stop_adapter(struct hdd_context *hdd_ctx, struct hdd_adapter *ada wireless_send_event(adapter->dev, SIOCGIWAP, &wrqu, NULL); } - if (scan_info != NULL && scan_info->mScanPending) - wlan_hdd_scan_abort(adapter); + wlan_hdd_scan_abort(adapter); wlan_hdd_cleanup_remain_on_channel_ctx(adapter); hdd_clear_fils_connection_info(adapter); diff --git a/core/hdd/src/wlan_hdd_scan.c b/core/hdd/src/wlan_hdd_scan.c index 864e9b44aaae..ac311476ea9b 100644 --- a/core/hdd/src/wlan_hdd_scan.c +++ b/core/hdd/src/wlan_hdd_scan.c @@ -1433,13 +1433,10 @@ int wlan_hdd_vendor_abort_scan( int wlan_hdd_scan_abort(struct hdd_adapter *adapter) { struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter); - struct hdd_scan_info *pScanInfo = NULL; - pScanInfo = &adapter->scan_info; + wlan_abort_scan(hdd_ctx->hdd_pdev, INVAL_PDEV_ID, + adapter->sessionId, INVALID_SCAN_ID, true); - if (pScanInfo->mScanPending) - wlan_abort_scan(hdd_ctx->hdd_pdev, INVAL_PDEV_ID, - adapter->sessionId, INVALID_SCAN_ID, true); return 0; }