qcacld-3.0: Avoid fw crash in some wow case on third party

Due to the limitation on third party platform, add ini to take
special care of the below wow case to avoid fw crash.
The sap/p2p_go shall kick out all the connected sta/p2p_gc and
then go to suspend if d0wow/d3wow is not supported.
Although there is wakelock try to prevent suspend after tdls link
setup, it won't take effect because auto sleep mechanism is not
supported on some third party platform, so teardown tdls link
by force before suspend.

Change-Id: I14bfe32f04cfc34d4f55a09820e42e65a1d9f925
CRs-Fixed: 2935295
This commit is contained in:
Li Feng
2021-06-18 18:47:17 +08:00
committed by Madan Koyyalamudi
parent 35db828ff1
commit 3d05280c82
8 changed files with 92 additions and 11 deletions

View File

@@ -546,6 +546,29 @@
CFG_VALUE_OR_DEFAULT, \
"configure igmp offload support version")
/*
* <ini>
* disconnect_sap_tdls_in_wow - disconnect sap tdls in wow
* @Min: 0
* @Max: 1
* @Default: 0
*
* Due to the limitation on third party platform, add ini to take
* special care of the below wow case to avoid fw crash.
* The sap/p2p_go shall kick out all the connected sta/p2p_gc and
* then go to suspend considering d0wow/d3wow is not supported.
* Teardown tdls link proactively since auto sleep mechanism not
* supported.
*
* Usage: External
*
* </ini>
*/
#define CFG_DISCONNECT_SAP_TDLS_IN_WOW CFG_INI_BOOL( \
"disconnect_sap_tdls_in_wow", \
0, \
"disconnect sap tdls in wow")
#define CFG_PMO_COMMON_ALL \
CFG(CFG_ENABLE_SAP_SUSPEND) \
CFG(CFG_PMO_ENABLE_HOST_ARPOFFLOAD) \
@@ -568,6 +591,7 @@
CFG(CFG_PMO_MOD_DTIM_ON_SYS_SUSPEND) \
CFG(CFG_ENABLE_BUS_SUSPEND_IN_SAP_MODE) \
CFG(CFG_ENABLE_BUS_SUSPEND_IN_GO_MODE)\
CFG(CFG_IGMP_VERSION_SUPPORT)
CFG(CFG_IGMP_VERSION_SUPPORT) \
CFG(CFG_DISCONNECT_SAP_TDLS_IN_WOW)
#endif /* WLAN_PMO_COMMON_CFG_H__ */

View File

@@ -348,6 +348,7 @@ enum pmo_gpio_wakeup_mode {
* @gpio_wakeup_mode: gpio wakeup mode
* @igmp_version_support: igmp version support
* @igmp_offload_enable: enable/disable igmp offload feature to fw
* @disconnect_sap_tdls_in_wow: sap/p2p_go disconnect or teardown tdls link
*/
struct pmo_psoc_cfg {
bool ptrn_match_enable_all_vdev;
@@ -424,6 +425,7 @@ struct pmo_psoc_cfg {
uint32_t igmp_version_support;
bool igmp_offload_enable;
#endif
bool disconnect_sap_tdls_in_wow;
};
/**

View File

@@ -1274,6 +1274,16 @@ bool ucfg_pmo_get_moddtim_user_active(struct wlan_objmgr_vdev *vdev);
* Return: moddtim user value
*/
uint32_t ucfg_pmo_get_moddtim_user(struct wlan_objmgr_vdev *vdev);
/*
* ucfg_pmo_get_disconnect_sap_tdls_in_wow: get if disconnect sap/p2p_go
* or tdls in wow
* @psoc: objmgr psoc
*
* Return: true in case support else false
*/
bool
ucfg_pmo_get_disconnect_sap_tdls_in_wow(struct wlan_objmgr_psoc *psoc);
#else /* WLAN_POWER_MANAGEMENT_OFFLOAD */
static inline QDF_STATUS
ucfg_pmo_psoc_open(struct wlan_objmgr_psoc *psoc)
@@ -1976,6 +1986,12 @@ ucfg_pmo_get_moddtim_user(struct wlan_objmgr_vdev *vdev)
{
return 0;
}
static inline bool
ucfg_pmo_get_disconnect_sap_tdls_in_wow(struct wlan_objmgr_psoc *psoc)
{
return false;
}
#endif /* WLAN_POWER_MANAGEMENT_OFFLOAD */
#ifdef WLAN_FEATURE_EXTWOW_SUPPORT