qcacld-3.0: Refactor monitor mode cleanup in stop adapter
Move RTPM wakelock release on monitor mode stop and session delete to new APIs. New APIs 1) hdd_monitor_mode_release_wakelock() 2) hdd_monitor_mode_disable_and_delete() Change-Id: Ib1b0d060fd96dc131d54e1261cadf67e3c23e1d4 CRs-Fixed: 3523612
This commit is contained in:

committed by
Rahul Choudhary

parent
bfd69f55cf
commit
8c93ab2d7a
@@ -8798,6 +8798,42 @@ hdd_disable_nan_active_disc(struct hdd_adapter *adapter)
|
||||
ucfg_disable_nan_discovery(hdd_ctx->psoc, NULL, 0);
|
||||
}
|
||||
|
||||
static void
|
||||
hdd_monitor_mode_release_wakelock(struct wlan_hdd_link_info *link_info)
|
||||
{
|
||||
struct hdd_adapter *adapter = link_info->adapter;
|
||||
struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
|
||||
|
||||
if (wlan_hdd_is_session_type_monitor(adapter->device_mode) &&
|
||||
(ucfg_mlme_is_sta_mon_conc_supported(hdd_ctx->psoc) ||
|
||||
ucfg_dp_is_local_pkt_capture_enabled(hdd_ctx->psoc))) {
|
||||
hdd_info("Release wakelock for STA + monitor mode!");
|
||||
os_if_dp_local_pkt_capture_stop(link_info->vdev);
|
||||
qdf_runtime_pm_allow_suspend(
|
||||
&hdd_ctx->runtime_context.monitor_mode);
|
||||
hdd_lpc_enable_powersave(hdd_ctx);
|
||||
qdf_wake_lock_release(&hdd_ctx->monitor_mode_wakelock,
|
||||
WIFI_POWER_EVENT_WAKELOCK_MONITOR_MODE);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
hdd_monitor_mode_disable_and_delete(struct wlan_hdd_link_info *link_info)
|
||||
{
|
||||
QDF_STATUS status;
|
||||
struct hdd_adapter *adapter = link_info->adapter;
|
||||
struct hdd_context *hdd_ctx = adapter->hdd_ctx;
|
||||
|
||||
status = hdd_disable_monitor_mode();
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
hdd_err_rl("datapath reset failed for montior mode");
|
||||
hdd_set_idle_ps_config(hdd_ctx, true);
|
||||
status = hdd_monitor_mode_vdev_status(adapter);
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
hdd_err_rl("stop failed montior mode");
|
||||
sme_delete_mon_session(hdd_ctx->mac_handle, link_info->vdev_id);
|
||||
}
|
||||
|
||||
QDF_STATUS hdd_stop_adapter_ext(struct hdd_context *hdd_ctx,
|
||||
struct hdd_adapter *adapter)
|
||||
{
|
||||
@@ -8892,28 +8928,10 @@ QDF_STATUS hdd_stop_adapter_ext(struct hdd_context *hdd_ctx,
|
||||
hdd_reset_monitor_interface(sta_adapter);
|
||||
}
|
||||
|
||||
if (wlan_hdd_is_session_type_monitor(QDF_MONITOR_MODE) &&
|
||||
(ucfg_mlme_is_sta_mon_conc_supported(hdd_ctx->psoc) ||
|
||||
ucfg_dp_is_local_pkt_capture_enabled(hdd_ctx->psoc))) {
|
||||
hdd_info("Release wakelock for STA + monitor mode!");
|
||||
os_if_dp_local_pkt_capture_stop(vdev);
|
||||
qdf_runtime_pm_allow_suspend(
|
||||
&hdd_ctx->runtime_context.monitor_mode);
|
||||
hdd_lpc_enable_powersave(hdd_ctx);
|
||||
qdf_wake_lock_release(&hdd_ctx->monitor_mode_wakelock,
|
||||
WIFI_POWER_EVENT_WAKELOCK_MONITOR_MODE);
|
||||
}
|
||||
hdd_monitor_mode_release_wakelock(link_info);
|
||||
wlan_hdd_scan_abort(link_info);
|
||||
hdd_adapter_deregister_fc(adapter);
|
||||
|
||||
status = hdd_disable_monitor_mode();
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
hdd_err_rl("datapath reset failed for monitor mode");
|
||||
hdd_set_idle_ps_config(hdd_ctx, true);
|
||||
status = hdd_monitor_mode_vdev_status(adapter);
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
hdd_err_rl("stop failed monitor mode");
|
||||
sme_delete_mon_session(mac_handle, link_info->vdev_id);
|
||||
hdd_monitor_mode_disable_and_delete(link_info);
|
||||
hdd_objmgr_put_vdev_by_user(vdev, WLAN_OSIF_ID);
|
||||
hdd_vdev_destroy(adapter);
|
||||
break;
|
||||
|
Reference in New Issue
Block a user