diff --git a/components/nan/core/src/nan_main_i.h b/components/nan/core/src/nan_main_i.h index b133eb54cc..b7df0539a8 100644 --- a/components/nan/core/src/nan_main_i.h +++ b/components/nan/core/src/nan_main_i.h @@ -83,6 +83,7 @@ enum nan_disc_state { * wait to kickout peer if peer is not reachable * @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 */ struct nan_cfg_params { bool enable; @@ -92,6 +93,7 @@ struct nan_cfg_params { bool nan_separate_iface_support; uint16_t ndp_keep_alive_period; bool support_mp0_discovery; + uint32_t max_ndp_sessions; }; /** diff --git a/components/nan/dispatcher/inc/cfg_nan.h b/components/nan/dispatcher/inc/cfg_nan.h index 9537794181..31b74ef461 100644 --- a/components/nan/dispatcher/inc/cfg_nan.h +++ b/components/nan/dispatcher/inc/cfg_nan.h @@ -168,6 +168,32 @@ CFG_VALUE_OR_DEFAULT, \ "Keep alive timeout of a peer") +/* + * + * ndp_max_sessions - To configure max ndp sessions + * supported by host. + * + * @Min: 1 + * @Max: 8 + * @Default: 8 + * + * Related: None + * + * Supported Feature: NAN + * + * Usage: Internal + * + * + */ + +#define CFG_NDP_MAX_SESSIONS CFG_INI_UINT( \ + "ndp_max_sessions", \ + 1, \ + 8, \ + 8, \ + CFG_VALUE_OR_DEFAULT, \ + "max ndp sessions host supports") + /* * * gSupportMp0Discovery - To support discovery of NAN cluster with @@ -204,6 +230,7 @@ #endif #define CFG_NAN_ALL CFG_NAN_DISC \ - CFG_NAN_DP + CFG_NAN_DP \ + CFG(CFG_NDP_MAX_SESSIONS) #endif diff --git a/components/nan/dispatcher/inc/cfg_nan_api.h b/components/nan/dispatcher/inc/cfg_nan_api.h index 0bb4c38e9b..e6c501ffac 100644 --- a/components/nan/dispatcher/inc/cfg_nan_api.h +++ b/components/nan/dispatcher/inc/cfg_nan_api.h @@ -74,6 +74,16 @@ QDF_STATUS cfg_nan_get_ndp_inactivity_timeout(struct wlan_objmgr_psoc *psoc, QDF_STATUS cfg_nan_get_ndp_keepalive_period(struct wlan_objmgr_psoc *psoc, uint16_t *val); +/** + * cfg_nan_get_ndp_max_sessions() - get NDP max sessions host supports + * @psoc: pointer to psoc object + * @val: pointer to hold max ndp sessions + * + * Return: QDF_STATUS + */ +QDF_STATUS cfg_nan_get_ndp_max_sessions(struct wlan_objmgr_psoc *psoc, + uint32_t *val); + /** * cfg_nan_get_support_mp0_discovery() - get value of config support mp0 * discovery @@ -127,6 +137,13 @@ QDF_STATUS cfg_nan_get_ndp_keepalive_period(struct wlan_objmgr_psoc *psoc, return QDF_STATUS_SUCCESS; } +static inline +QDF_STATUS cfg_nan_get_ndp_max_sessions(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 efc017eb83..fa841749b2 100644 --- a/components/nan/dispatcher/src/cfg_nan.c +++ b/components/nan/dispatcher/src/cfg_nan.c @@ -24,6 +24,8 @@ #include "cfg_nan_api.h" #include "../../core/src/nan_main_i.h" #include "wlan_mlme_ucfg_api.h" +#include "cfg_ucfg_api.h" +#include "cfg_nan.h" static inline struct nan_psoc_priv_obj *cfg_nan_get_priv_obj(struct wlan_objmgr_psoc *psoc) @@ -96,6 +98,21 @@ QDF_STATUS cfg_nan_get_ndp_keepalive_period(struct wlan_objmgr_psoc *psoc, return QDF_STATUS_SUCCESS; } +QDF_STATUS cfg_nan_get_ndp_max_sessions(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_NDP_MAX_SESSIONS); + return QDF_STATUS_E_INVAL; + } + + *val = nan_obj->cfg_param.max_ndp_sessions; + 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 c8c198c9cf..4a738251e1 100644 --- a/components/nan/dispatcher/src/nan_ucfg_api.c +++ b/components/nan/dispatcher/src/nan_ucfg_api.c @@ -54,6 +54,8 @@ static void nan_cfg_init(struct wlan_objmgr_psoc *psoc, nan_obj->cfg_param.ndp_keep_alive_period = cfg_get(psoc, CFG_NDP_KEEP_ALIVE_PERIOD); + nan_obj->cfg_param.max_ndp_sessions = cfg_get(psoc, + CFG_NDP_MAX_SESSIONS); } /** diff --git a/core/wma/src/wma_main.c b/core/wma/src/wma_main.c index 0a12631ab8..7aae994601 100644 --- a/core/wma/src/wma_main.c +++ b/core/wma/src/wma_main.c @@ -347,6 +347,9 @@ static void wma_set_default_tgt_config(tp_wma_handle wma_handle, if (cds_get_conparam() == QDF_GLOBAL_MONITOR_MODE) tgt_cfg->rx_decap_mode = CFG_TGT_RX_DECAP_MODE_RAW; + cfg_nan_get_ndp_max_sessions(wma_handle->psoc, + &tgt_cfg->max_ndp_sessions); + wma_set_ipa_disable_config(tgt_cfg); }