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
このコミットが含まれているのは:
@@ -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
|
||||
|
新しいイシューから参照
ユーザーをブロックする