mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-13 00:00:00 -04:00
qcacld-3.0: Cleanup roc and tx action before suspending mc thread
Scheduler thread enter suspend state when calling p2p callback from pmo, and it can't execute cleanup task on time in p2p suspend handler. So, cleanup roc and tx action frame before suspend mc thread. Add cleaning up tx action frame by vdev in hdd layer. Change-Id: Ib0ef1cb3a73c5a48b3c365935a6d5b9307d2aae0 CRs-Fixed: 2283298
This commit is contained in:
parent
621616f201
commit
4a1ec8cc7a
5 changed files with 27 additions and 7 deletions
|
|
@ -196,4 +196,14 @@ int wlan_hdd_go_set_mcc_p2p_quota(struct hdd_adapter *hostapd_adapter,
|
|||
* Return: None
|
||||
*/
|
||||
void wlan_hdd_set_mcc_latency(struct hdd_adapter *adapter, int set_value);
|
||||
|
||||
/**
|
||||
* wlan_hdd_cleanup_actionframe() - Cleanup action frame
|
||||
* @adapter: Pointer to HDD adapter
|
||||
*
|
||||
* This function cleans up action frame.
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
void wlan_hdd_cleanup_actionframe(struct hdd_adapter *adapter);
|
||||
#endif /* __P2P_H */
|
||||
|
|
|
|||
|
|
@ -5128,6 +5128,7 @@ static int __wlan_hdd_cfg80211_stop_ap(struct wiphy *wiphy,
|
|||
adapter->session_id);
|
||||
return -EINVAL;
|
||||
}
|
||||
wlan_hdd_cleanup_actionframe(adapter);
|
||||
wlan_hdd_cleanup_remain_on_channel_ctx(adapter);
|
||||
mutex_lock(&hdd_ctx->sap_lock);
|
||||
if (test_bit(SOFTAP_BSS_STARTED, &adapter->event_flags)) {
|
||||
|
|
|
|||
|
|
@ -5185,6 +5185,7 @@ QDF_STATUS hdd_stop_adapter_ext(struct hdd_context *hdd_ctx,
|
|||
}
|
||||
wlan_hdd_scan_abort(adapter);
|
||||
|
||||
wlan_hdd_cleanup_actionframe(adapter);
|
||||
wlan_hdd_cleanup_remain_on_channel_ctx(adapter);
|
||||
hdd_clear_fils_connection_info(adapter);
|
||||
|
||||
|
|
|
|||
|
|
@ -81,15 +81,12 @@ const char *tdls_action_frame_type[] = { "TDLS Setup Request",
|
|||
|
||||
void wlan_hdd_cancel_existing_remain_on_channel(struct hdd_adapter *adapter)
|
||||
{
|
||||
QDF_STATUS status;
|
||||
|
||||
if (!adapter) {
|
||||
hdd_err("null adapter");
|
||||
return;
|
||||
}
|
||||
|
||||
status = ucfg_p2p_cleanup_roc(adapter->hdd_vdev);
|
||||
hdd_debug("status:%d", status);
|
||||
ucfg_p2p_cleanup_roc_by_vdev(adapter->hdd_vdev);
|
||||
}
|
||||
|
||||
int wlan_hdd_check_remain_on_channel(struct hdd_adapter *adapter)
|
||||
|
|
@ -103,15 +100,22 @@ int wlan_hdd_check_remain_on_channel(struct hdd_adapter *adapter)
|
|||
/* Clean up RoC context at hdd_stop_adapter*/
|
||||
void wlan_hdd_cleanup_remain_on_channel_ctx(struct hdd_adapter *adapter)
|
||||
{
|
||||
QDF_STATUS status;
|
||||
|
||||
if (!adapter) {
|
||||
hdd_err("null adapter");
|
||||
return;
|
||||
}
|
||||
|
||||
status = ucfg_p2p_cleanup_roc(adapter->hdd_vdev);
|
||||
hdd_debug("status:%d", status);
|
||||
ucfg_p2p_cleanup_roc_by_vdev(adapter->hdd_vdev);
|
||||
}
|
||||
|
||||
void wlan_hdd_cleanup_actionframe(struct hdd_adapter *adapter)
|
||||
{
|
||||
if (!adapter) {
|
||||
hdd_err("null adapter");
|
||||
return;
|
||||
}
|
||||
|
||||
ucfg_p2p_cleanup_tx_by_vdev(adapter->hdd_vdev);
|
||||
}
|
||||
|
||||
static int __wlan_hdd_cfg80211_remain_on_channel(struct wiphy *wiphy,
|
||||
|
|
|
|||
|
|
@ -76,6 +76,7 @@
|
|||
#include "wlan_cfg80211_scan.h"
|
||||
#include "wlan_ipa_ucfg_api.h"
|
||||
#include <wlan_cfg80211_mc_cp_stats.h>
|
||||
#include "wlan_p2p_ucfg_api.h"
|
||||
|
||||
/* Preprocessor definitions and constants */
|
||||
#ifdef QCA_WIFI_NAPIER_EMULATION
|
||||
|
|
@ -1667,6 +1668,9 @@ static int __wlan_hdd_cfg80211_suspend_wlan(struct wiphy *wiphy,
|
|||
}
|
||||
}
|
||||
}
|
||||
/* p2p cleanup task based on scheduler */
|
||||
ucfg_p2p_cleanup_tx_by_psoc(hdd_ctx->hdd_psoc);
|
||||
ucfg_p2p_cleanup_roc_by_psoc(hdd_ctx->hdd_psoc);
|
||||
|
||||
/* Stop ongoing scan on each interface */
|
||||
hdd_for_each_adapter(hdd_ctx, adapter) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue