From a73938f68408c1782c26c4455083e06117dbd728 Mon Sep 17 00:00:00 2001 From: Alok Kumar Date: Wed, 22 Jan 2020 20:56:59 +0530 Subject: [PATCH] qcacld-3.0: Disable peer_unmap_conf_support for FTM mode In FTM mode, no peer is created in the host. Currently, since peer_unmap_conf_support feature is enabled, FW is expecting WMA_SEND_PEER_UNMAP_CONF from host to remove the peer Id from AST. But host never send this WMI CMD in FTM mode. Disable peer_unmap_conf_support in FTM mode which allow FW to delete the peer Id without any WMI CMD expectation from host. Change-Id: Idf9082adc81187346563f3aedf1f1657164f03cc CRs-Fixed: 2608929 --- components/mlme/core/src/wlan_mlme_main.c | 2 ++ components/mlme/dispatcher/inc/wlan_mlme_api.h | 9 +++++++++ .../mlme/dispatcher/inc/wlan_mlme_public_struct.h | 2 ++ components/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h | 12 ++++++++++++ components/mlme/dispatcher/src/wlan_mlme_api.c | 11 +++++++++++ core/wma/src/wma_main.c | 3 ++- 6 files changed, 38 insertions(+), 1 deletion(-) diff --git a/components/mlme/core/src/wlan_mlme_main.c b/components/mlme/core/src/wlan_mlme_main.c index dfc5eff2f1..99cc32f025 100644 --- a/components/mlme/core/src/wlan_mlme_main.c +++ b/components/mlme/core/src/wlan_mlme_main.c @@ -319,6 +319,8 @@ static void mlme_init_generic_cfg(struct wlan_objmgr_psoc *psoc, gen->mgmt_retry_max = cfg_get(psoc, CFG_MGMT_RETRY_MAX); gen->bmiss_skip_full_scan = cfg_get(psoc, CFG_BMISS_SKIP_FULL_SCAN); gen->enable_ring_buffer = cfg_get(psoc, CFG_ENABLE_RING_BUFFER); + gen->enable_peer_unmap_conf_support = + cfg_get(psoc, CFG_DP_ENABLE_PEER_UMAP_CONF_SUPPORT); } static void mlme_init_edca_ani_cfg(struct wlan_mlme_edca_params *edca_params) diff --git a/components/mlme/dispatcher/inc/wlan_mlme_api.h b/components/mlme/dispatcher/inc/wlan_mlme_api.h index 9e195f1911..d7b2df56ea 100644 --- a/components/mlme/dispatcher/inc/wlan_mlme_api.h +++ b/components/mlme/dispatcher/inc/wlan_mlme_api.h @@ -2344,4 +2344,13 @@ wlan_mlme_get_mgmt_max_retry(struct wlan_objmgr_psoc *psoc, QDF_STATUS wlan_mlme_get_status_ring_buffer(struct wlan_objmgr_psoc *psoc, bool *enable_ring_buffer); + +/** + * wlan_mlme_get_peer_unmap_conf() - Indicate if peer unmap confirmation + * support is enabled or disabled + * @psoc: pointer to psoc object + * + * Return: true if peer unmap confirmation support is enabled, else false + */ +bool wlan_mlme_get_peer_unmap_conf(struct wlan_objmgr_psoc *psoc); #endif /* _WLAN_MLME_API_H_ */ diff --git a/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h b/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h index 700fb4c060..fd0517031f 100644 --- a/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h +++ b/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h @@ -1126,6 +1126,7 @@ struct wlan_mlme_chainmask { * @bmiss_skip_full_scan: Decide if full scan can be skipped in firmware if no * candidate is found in partial scan based on channel map * @enable_ring_buffer: Decide to enable/disable ring buffer for bug report + * @enable_peer_unmap_conf_support: Indicate whether to send conf for peer unmap */ struct wlan_mlme_generic { enum band_info band_capability; @@ -1160,6 +1161,7 @@ struct wlan_mlme_generic { uint8_t mgmt_retry_max; bool bmiss_skip_full_scan; bool enable_ring_buffer; + bool enable_peer_unmap_conf_support; }; /* diff --git a/components/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h b/components/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h index 15f1da5c70..31e742ced2 100644 --- a/components/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h +++ b/components/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h @@ -3957,4 +3957,16 @@ ucfg_mlme_get_ignore_fw_reg_offload_ind(struct wlan_objmgr_psoc *psoc, return wlan_mlme_get_ignore_fw_reg_offload_ind(psoc, disabled); } +/** + * ucfg_mlme_get_peer_unmap_conf() - Indicate if peer unmap confirmation + * support is enabled or disabled + * @psoc: pointer to psoc object + * + * Return: true if peer unmap confirmation support is enabled, else false + */ +static inline +QDF_STATUS ucfg_mlme_get_peer_unmap_conf(struct wlan_objmgr_psoc *psoc) +{ + return wlan_mlme_get_peer_unmap_conf(psoc); +} #endif /* _WLAN_MLME_UCFG_API_H_ */ diff --git a/components/mlme/dispatcher/src/wlan_mlme_api.c b/components/mlme/dispatcher/src/wlan_mlme_api.c index 8810911efb..45b9e6ca98 100644 --- a/components/mlme/dispatcher/src/wlan_mlme_api.c +++ b/components/mlme/dispatcher/src/wlan_mlme_api.c @@ -3700,3 +3700,14 @@ wlan_mlme_get_status_ring_buffer(struct wlan_objmgr_psoc *psoc, *enable_ring_buffer = mlme_obj->cfg.gen.enable_ring_buffer; return QDF_STATUS_SUCCESS; } + +bool wlan_mlme_get_peer_unmap_conf(struct wlan_objmgr_psoc *psoc) +{ + struct wlan_mlme_psoc_ext_obj *mlme_obj; + + mlme_obj = mlme_get_psoc_ext_obj(psoc); + if (!mlme_obj) + return false; + + return mlme_obj->cfg.gen.enable_peer_unmap_conf_support; +} diff --git a/core/wma/src/wma_main.c b/core/wma/src/wma_main.c index d25926c828..0492dd4f93 100644 --- a/core/wma/src/wma_main.c +++ b/core/wma/src/wma_main.c @@ -6664,7 +6664,8 @@ int wma_rx_service_ready_ext_event(void *handle, uint8_t *event, wlan_res_cfg->new_htt_msg_format = false; } - if (cfg_get(wma_handle->psoc, CFG_DP_ENABLE_PEER_UMAP_CONF_SUPPORT) && + if (QDF_GLOBAL_FTM_MODE != cds_get_conparam() && + ucfg_mlme_get_peer_unmap_conf(wma_handle->psoc) && wmi_service_enabled(wmi_handle, wmi_service_peer_unmap_cnf_support)) { wlan_res_cfg->peer_unmap_conf_support = true;