mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-13 00:00:00 -04:00
qcacld-3.0: Remove purge_sme_cmd_list API & reset scan ops in SSR case
wlan_serialization_remove_all_cmd_from_queue() is getting called two times which causes reference count to be decreased two times. 1) 1st time from sme_stop() -> purge_sme_cmd_list() -> wlan_serialization_remove_all_cmd_from_queue() 2) 2nd time from wlan_serialization_vdev_obj_destroy_notification() -> serialization_purge_cmd_list() -> wlan_serialization_remove_all_cmd_from_queue() 1st path has been there for quite a long time as per the old serialization design but with new serialization design, it won't be required. Change-Id: Ia8bd91c665340e7f7628ad73af64fa0044b45dde CRs-Fixed: 2134851
This commit is contained in:
parent
10265806e6
commit
84fa938931
2 changed files with 27 additions and 10 deletions
|
|
@ -4562,6 +4562,32 @@ QDF_STATUS hdd_stop_all_adapters(struct hdd_context *hdd_ctx,
|
|||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static void hdd_reset_scan_operation(struct hdd_context *hdd_ctx,
|
||||
struct hdd_adapter *adapter)
|
||||
{
|
||||
switch (adapter->device_mode) {
|
||||
case QDF_STA_MODE:
|
||||
case QDF_P2P_CLIENT_MODE:
|
||||
case QDF_IBSS_MODE:
|
||||
case QDF_P2P_DEVICE_MODE:
|
||||
case QDF_NDI_MODE:
|
||||
wlan_hdd_scan_abort(adapter);
|
||||
wlan_hdd_cleanup_remain_on_channel_ctx(adapter);
|
||||
if (adapter->device_mode == QDF_STA_MODE)
|
||||
wlan_cfg80211_sched_scan_stop(hdd_ctx->hdd_pdev,
|
||||
adapter->dev);
|
||||
break;
|
||||
case QDF_P2P_GO_MODE:
|
||||
wlan_hdd_cleanup_remain_on_channel_ctx(adapter);
|
||||
break;
|
||||
case QDF_SAP_MODE:
|
||||
wlan_hdd_undo_acs(adapter);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
QDF_STATUS hdd_reset_all_adapters(struct hdd_context *hdd_ctx)
|
||||
{
|
||||
hdd_adapter_list_node_t *adapterNode = NULL, *pNext = NULL;
|
||||
|
|
@ -4603,6 +4629,7 @@ QDF_STATUS hdd_reset_all_adapters(struct hdd_context *hdd_ctx)
|
|||
WLAN_CONTROL_PATH);
|
||||
}
|
||||
|
||||
hdd_reset_scan_operation(hdd_ctx, adapter);
|
||||
adapter->session.station.hdd_reassoc_scenario = false;
|
||||
|
||||
hdd_deinit_tx_rx(adapter);
|
||||
|
|
|
|||
|
|
@ -346,19 +346,10 @@ void sme_release_command(tpAniSirGlobal mac_ctx, tSmeCmd *sme_cmd)
|
|||
LL_ACCESS_LOCK);
|
||||
}
|
||||
|
||||
static void purge_sme_cmd_list(tpAniSirGlobal pMac)
|
||||
{
|
||||
/* purge all command lists */
|
||||
sme_debug("Purging all queues");
|
||||
wlan_serialization_purge_cmd_list(pMac->psoc, NULL,
|
||||
false, false, false, false, true);
|
||||
}
|
||||
|
||||
static QDF_STATUS free_sme_cmd_list(tpAniSirGlobal pMac)
|
||||
{
|
||||
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
||||
|
||||
purge_sme_cmd_list(pMac);
|
||||
csr_ll_close(&pMac->sme.smeCmdFreeList);
|
||||
|
||||
status = qdf_mutex_acquire(&pMac->sme.lkSmeGlobalLock);
|
||||
|
|
@ -2570,7 +2561,6 @@ QDF_STATUS sme_stop(tHalHandle hHal, tHalStopType stopType)
|
|||
sme_err("csr_stop failed with status: %d", status);
|
||||
fail_status = status;
|
||||
}
|
||||
purge_sme_cmd_list(pMac);
|
||||
|
||||
if (!QDF_IS_STATUS_SUCCESS(fail_status))
|
||||
status = fail_status;
|
||||
|
|
|
|||
Loading…
Reference in a new issue