qcacmn: Add wakelock for enhanced CFR

There is potential risk when starting CFR and resume happens at same
time, so this change adds wake lock for enhanced CFR.

Change-Id: Ifbde12cb73092b7fc4ef517e57051af4ffe7a79f
CRs-Fixed: 2974733
このコミットが含まれているのは:
Wu Gao
2021-06-25 05:57:37 +08:00
committed by Madan Koyyalamudi
コミット 0971daad9f
6個のファイルの変更183行の追加2行の削除

ファイルの表示

@@ -347,5 +347,37 @@ QDF_STATUS ucfg_cfr_rcc_dump_lut(struct wlan_objmgr_vdev *vdev);
*/
QDF_STATUS ucfg_cfr_subscribe_ppdu_desc(struct wlan_objmgr_pdev *pdev,
bool is_subscribe);
#ifdef WLAN_CFR_PM
/**
* ucfg_cfr_suspend() - User space interface to
* set suspend status to CFR
* @pdev: pointer to pdev_object
*
* return QDF status
*/
QDF_STATUS ucfg_cfr_suspend(struct wlan_objmgr_pdev *pdev);
/**
* ucfg_cfr_resume() - User space interface to
* set resume status to CFR
* @pdev: pointer to pdev_object
*
* return QDF status
*/
QDF_STATUS ucfg_cfr_resume(struct wlan_objmgr_pdev *pdev);
#else
static inline QDF_STATUS
ucfg_cfr_suspend(struct wlan_objmgr_pdev *pdev)
{
return QDF_STATUS_E_NOSUPPORT;
}
static inline QDF_STATUS
ucfg_cfr_resume(struct wlan_objmgr_pdev *pdev)
{
return QDF_STATUS_E_NOSUPPORT;
}
#endif /* end of WLAN_CFR_PM */
#endif
#endif

ファイルの表示

@@ -558,6 +558,9 @@ struct nl_event_cb {
* CFR_CAPTURE_METHOD_PROBE_RESPONSE
* nl_cb: call back to register for nl event for cfr data
* lut_lock: Lock to protect access to cfr lookup table
* is_prevent_suspend: CFR wake lock acquired or not
* wake_lock: wake lock for cfr
* runtime_lock: runtime lock for cfr
*/
/*
* To be extended if we get more capbality info
@@ -606,6 +609,11 @@ struct pdev_cfr {
struct unassoc_pool_entry unassoc_pool[MAX_CFR_ENABLED_CLIENTS];
struct nl_event_cb nl_cb;
qdf_spinlock_t lut_lock;
#ifdef WLAN_CFR_PM
bool is_prevent_suspend;
qdf_wake_lock_t wake_lock;
qdf_runtime_lock_t runtime_lock;
#endif
};
/**

ファイルの表示

@@ -1326,6 +1326,37 @@ QDF_STATUS ucfg_cfr_committed_rcc_config(struct wlan_objmgr_vdev *vdev)
return status;
}
#ifdef WLAN_CFR_PM
QDF_STATUS ucfg_cfr_suspend(struct wlan_objmgr_pdev *pdev)
{
struct pdev_cfr *pcfr;
pcfr = wlan_objmgr_pdev_get_comp_private_obj(
pdev, WLAN_UMAC_COMP_CFR);
if (!pcfr) {
cfr_err("null pcfr");
return QDF_STATUS_E_INVAL;
}
return cfr_allow_suspend(pcfr);
}
QDF_STATUS ucfg_cfr_resume(struct wlan_objmgr_pdev *pdev)
{
struct pdev_cfr *pcfr;
pcfr = wlan_objmgr_pdev_get_comp_private_obj(
pdev, WLAN_UMAC_COMP_CFR);
if (!pcfr) {
cfr_err("null pcfr");
return QDF_STATUS_E_INVAL;
}
return cfr_prevent_suspend(pcfr);
}
#endif
/*
* This handler is used to enable / disable the capture mode.
*
@@ -1404,5 +1435,4 @@ QDF_STATUS ucfg_cfr_subscribe_ppdu_desc(struct wlan_objmgr_pdev *pdev,
return tgt_cfr_subscribe_ppdu_desc(pdev, is_subscribe);
}
#endif
#endif