From 9e3400ac7749a566a90d256f443c9682c37191c3 Mon Sep 17 00:00:00 2001 From: Abhishek Ambure Date: Tue, 9 Jun 2020 21:17:39 +0530 Subject: [PATCH] qcacld-3.0: Add support to configure max ndi host supports Introduce INI "ndi_max_support" to configure max number of ndi interfaces host supports. Host configures max number of ndi interfaces support in firmware using WMI_INIT_CMD. Change-Id: I287b9f96b98103e67cf35d0c02488a28af731044 CRs-Fixed: 2701557 --- components/nan/core/src/nan_main_i.h | 2 ++ components/nan/dispatcher/inc/cfg_nan.h | 26 +++++++++++++++++++- components/nan/dispatcher/inc/cfg_nan_api.h | 15 +++++++++++ components/nan/dispatcher/src/cfg_nan.c | 14 +++++++++++ components/nan/dispatcher/src/nan_ucfg_api.c | 1 + core/wma/src/wma_main.c | 3 +++ 6 files changed, 60 insertions(+), 1 deletion(-) diff --git a/components/nan/core/src/nan_main_i.h b/components/nan/core/src/nan_main_i.h index b7df0539a8..1ce050c9be 100644 --- a/components/nan/core/src/nan_main_i.h +++ b/components/nan/core/src/nan_main_i.h @@ -84,6 +84,7 @@ enum nan_disc_state { * @support_mp0_discovery: To support discovery of NAN cluster with Master * Preference (MP) as 0 when a new device is enabling NAN * @max_ndp_sessions: max ndp sessions host supports + * @max_ndi: max number of ndi host supports */ struct nan_cfg_params { bool enable; @@ -94,6 +95,7 @@ struct nan_cfg_params { uint16_t ndp_keep_alive_period; bool support_mp0_discovery; uint32_t max_ndp_sessions; + uint32_t max_ndi; }; /** diff --git a/components/nan/dispatcher/inc/cfg_nan.h b/components/nan/dispatcher/inc/cfg_nan.h index 31b74ef461..2e0cc648e1 100644 --- a/components/nan/dispatcher/inc/cfg_nan.h +++ b/components/nan/dispatcher/inc/cfg_nan.h @@ -215,6 +215,29 @@ "gSupportMp0Discovery", \ 1, \ "Enable/Disable discovery of NAN cluster with Master Preference (MP) as 0") +/* + * + * ndi_max_support - To configure max number of ndi host supports + * + * @Min: 1 + * @Max: 2 + * @Default: 1 + * + * Related: None + * + * Supported Feature: NAN + * + * Usage: Internal + * + * + */ +#define CFG_NDI_MAX_SUPPORT CFG_INI_UINT( \ + "ndi_max_support", \ + 1, \ + 2, \ + 1, \ + CFG_VALUE_OR_DEFAULT, \ + "Max number of NDI host supports") #ifdef WLAN_FEATURE_NAN #define CFG_NAN_DISC CFG(CFG_NAN_ENABLE) \ @@ -231,6 +254,7 @@ #define CFG_NAN_ALL CFG_NAN_DISC \ CFG_NAN_DP \ - CFG(CFG_NDP_MAX_SESSIONS) + CFG(CFG_NDP_MAX_SESSIONS) \ + CFG(CFG_NDI_MAX_SUPPORT) #endif diff --git a/components/nan/dispatcher/inc/cfg_nan_api.h b/components/nan/dispatcher/inc/cfg_nan_api.h index e6c501ffac..c2af195324 100644 --- a/components/nan/dispatcher/inc/cfg_nan_api.h +++ b/components/nan/dispatcher/inc/cfg_nan_api.h @@ -84,6 +84,15 @@ QDF_STATUS cfg_nan_get_ndp_keepalive_period(struct wlan_objmgr_psoc *psoc, QDF_STATUS cfg_nan_get_ndp_max_sessions(struct wlan_objmgr_psoc *psoc, uint32_t *val); +/** + * cfg_nan_get_max_ndi() - get max number of ndi host supports + * @psoc: pointer to psoc object + * @val: pointer to hold max number of ndi + * + * Return: QDF_STATUS + */ +QDF_STATUS cfg_nan_get_max_ndi(struct wlan_objmgr_psoc *psoc, uint32_t *val); + /** * cfg_nan_get_support_mp0_discovery() - get value of config support mp0 * discovery @@ -144,6 +153,12 @@ QDF_STATUS cfg_nan_get_ndp_max_sessions(struct wlan_objmgr_psoc *psoc, return QDF_STATUS_SUCCESS; } +static inline +QDF_STATUS cfg_nan_get_max_ndi(struct wlan_objmgr_psoc *psoc, uint32_t *val) +{ + return QDF_STATUS_SUCCESS; +} + static inline bool cfg_nan_get_support_mp0_discovery( struct wlan_objmgr_psoc *psoc) { diff --git a/components/nan/dispatcher/src/cfg_nan.c b/components/nan/dispatcher/src/cfg_nan.c index fa841749b2..efc2fdd5a5 100644 --- a/components/nan/dispatcher/src/cfg_nan.c +++ b/components/nan/dispatcher/src/cfg_nan.c @@ -113,6 +113,20 @@ QDF_STATUS cfg_nan_get_ndp_max_sessions(struct wlan_objmgr_psoc *psoc, return QDF_STATUS_SUCCESS; } +QDF_STATUS cfg_nan_get_max_ndi(struct wlan_objmgr_psoc *psoc, uint32_t *val) +{ + struct nan_psoc_priv_obj *nan_obj = cfg_nan_get_priv_obj(psoc); + + if (!nan_obj) { + nan_err("NAN obj null"); + *val = cfg_default(CFG_NDI_MAX_SUPPORT); + return QDF_STATUS_E_INVAL; + } + + *val = nan_obj->cfg_param.max_ndi; + return QDF_STATUS_SUCCESS; +} + bool cfg_nan_get_support_mp0_discovery(struct wlan_objmgr_psoc *psoc) { struct nan_psoc_priv_obj *nan_obj = cfg_nan_get_priv_obj(psoc); diff --git a/components/nan/dispatcher/src/nan_ucfg_api.c b/components/nan/dispatcher/src/nan_ucfg_api.c index 4a738251e1..257fd7a9fc 100644 --- a/components/nan/dispatcher/src/nan_ucfg_api.c +++ b/components/nan/dispatcher/src/nan_ucfg_api.c @@ -56,6 +56,7 @@ static void nan_cfg_init(struct wlan_objmgr_psoc *psoc, CFG_NDP_KEEP_ALIVE_PERIOD); nan_obj->cfg_param.max_ndp_sessions = cfg_get(psoc, CFG_NDP_MAX_SESSIONS); + nan_obj->cfg_param.max_ndi = cfg_get(psoc, CFG_NDI_MAX_SUPPORT); } /** diff --git a/core/wma/src/wma_main.c b/core/wma/src/wma_main.c index da2660e76a..b079bccdb5 100644 --- a/core/wma/src/wma_main.c +++ b/core/wma/src/wma_main.c @@ -342,6 +342,9 @@ static void wma_set_default_tgt_config(tp_wma_handle wma_handle, tgt_cfg->mgmt_comp_evt_bundle_support = true; tgt_cfg->tx_msdu_new_partition_id_support = true; + cfg_nan_get_max_ndi(wma_handle->psoc, + &tgt_cfg->max_ndi); + if (cds_get_conparam() == QDF_GLOBAL_MONITOR_MODE) tgt_cfg->rx_decap_mode = CFG_TGT_RX_DECAP_MODE_RAW;