diff --git a/Kbuild b/Kbuild
index ab16655a9b..6e957b55ba 100644
--- a/Kbuild
+++ b/Kbuild
@@ -784,6 +784,7 @@ UMAC_P2P_INC := -I$(WLAN_COMMON_INC)/$(P2P_DISPATCHER_INC_DIR) \
-I$(WLAN_COMMON_INC)/umac/scan/dispatcher/inc
UMAC_P2P_OBJS := $(P2P_DISPATCHER_OBJ_DIR)/wlan_p2p_ucfg_api.o \
$(P2P_DISPATCHER_OBJ_DIR)/wlan_p2p_tgt_api.o \
+ $(P2P_DISPATCHER_OBJ_DIR)/wlan_p2p_cfg.o \
$(P2P_CORE_OBJ_DIR)/wlan_p2p_main.o \
$(P2P_CORE_OBJ_DIR)/wlan_p2p_roc.o \
$(P2P_CORE_OBJ_DIR)/wlan_p2p_off_chan_tx.o
diff --git a/components/cfg/cfg_all.h b/components/cfg/cfg_all.h
index 042f7a3420..7f0e1cd2c5 100644
--- a/components/cfg/cfg_all.h
+++ b/components/cfg/cfg_all.h
@@ -19,5 +19,12 @@
#include "cfg_define.h"
#include "cfg_converged.h"
+#ifdef CONVERGED_P2P_ENABLE
+#include "wlan_p2p_cfg.h"
+#else
+#define CFG_P2P_ALL
+#endif
+
#define CFG_ALL \
- CFG_CONVERGED_ALL
+ CFG_CONVERGED_ALL \
+ CFG_P2P_ALL
diff --git a/core/hdd/inc/wlan_hdd_cfg.h b/core/hdd/inc/wlan_hdd_cfg.h
index f44ab10995..47dc63f01f 100644
--- a/core/hdd/inc/wlan_hdd_cfg.h
+++ b/core/hdd/inc/wlan_hdd_cfg.h
@@ -3109,19 +3109,6 @@ enum hdd_dot11_mode {
#define CFG_ENABLE_LTE_COEX_MAX (1)
#define CFG_ENABLE_LTE_COEX_DEFAULT (0)
-#define CFG_GO_KEEP_ALIVE_PERIOD_NAME "gGoKeepAlivePeriod"
-#define CFG_GO_KEEP_ALIVE_PERIOD_MIN WNI_CFG_GO_KEEP_ALIVE_TIMEOUT_STAMIN
-#define CFG_GO_KEEP_ALIVE_PERIOD_MAX WNI_CFG_GO_KEEP_ALIVE_TIMEOUT_STAMAX
-#define CFG_GO_KEEP_ALIVE_PERIOD_DEFAULT WNI_CFG_GO_KEEP_ALIVE_TIMEOUT_STADEF
-
-/* gGoLinkMonitorPeriod is period where link is idle and where
- * we send NULL frame
- */
-#define CFG_GO_LINK_MONITOR_PERIOD_NAME "gGoLinkMonitorPeriod"
-#define CFG_GO_LINK_MONITOR_PERIOD_MIN (3)
-#define CFG_GO_LINK_MONITOR_PERIOD_MAX (50)
-#define CFG_GO_LINK_MONITOR_PERIOD_DEFAULT (10)
-
#define CFG_VCC_RSSI_TRIGGER_NAME "gVccRssiTrigger"
#define CFG_VCC_RSSI_TRIGGER_MIN (0)
#define CFG_VCC_RSSI_TRIGGER_MAX (80)
@@ -5406,29 +5393,6 @@ enum hdd_link_speed_rpt_type {
#define CFG_LINK_SPEED_RSSI_LOW_MAX (0)
#define CFG_LINK_SPEED_RSSI_LOW_DEFAULT (-80)
-/*
- *
- * isP2pDeviceAddrAdministrated - Enables to derive the P2P MAC address from
- * the primary MAC address
- * @Min: 0
- * @Max: 1
- * @Default: 1
- *
- * This ini is used to enable/disable to derive the P2P MAC address from the
- * primary MAC address.
- *
- * Supported Feature: P2P
- *
- * Usage: Internal/External
- *
- *
- */
-
-#define CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_NAME "isP2pDeviceAddrAdministrated"
-#define CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_MIN (0)
-#define CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_MAX (1)
-#define CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_DEFAULT (1)
-
/*
*
* gEnableSSR - Enable/Disable SSR
@@ -5788,58 +5752,6 @@ enum hdd_link_speed_rpt_type {
#define CFG_ENABLE_SAP_MANDATORY_CHAN_LIST_MAX (1)
#define CFG_ENABLE_SAP_MANDATORY_CHAN_LIST_DEFAULT (0)
-/*
- * Skip DFS Channel in case of P2P Search
- * Options
- * 0 - Don't Skip DFS Channel in case of P2P Search
- * 1 - Skip DFS Channel in case of P2P Search
- */
-/*
- *
- * gSkipDfsChannelInP2pSearch - Skip DFS Channel in case of P2P Search
- * @Min: 0
- * @Max: 1
- * @Default: 1
- *
- * This ini is used to to disable(skip) dfs channel in p2p search.
- * Related: NA.
- *
- * Supported Feature: DFS P2P
- *
- * Usage: Internal/External
- *
- *
- */
-#define CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_NAME "gSkipDfsChannelInP2pSearch"
-#define CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_MIN (0)
-#define CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_MAX (1)
-#define CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_DEFAULT (1)
-/*
- *
- * gIgnoreDynamicDtimInP2pMode - Ignore Dynamic Dtim in case of P2P
- * Options.
- * @Min: 0
- * @Max: 1
- * @Default: 0
- *
- * This ini is used to decide if Dynamic Dtim needs to be consider or
- * not in case of P2P.
- * 0 - Consider Dynamic Dtim incase of P2P
- * 1 - Ignore Dynamic Dtim incase of P2P
- *
- * Supported Feature: P2P
- *
- *
- * Usage: Internal/External
- *
- *
- */
-
-#define CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_NAME "gIgnoreDynamicDtimInP2pMode"
-#define CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_MIN (0)
-#define CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_MAX (1)
-#define CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_DEFAULT (0)
-
/*
*
* gShortGI40Mhz - It will check gShortGI20Mhz and
@@ -14374,10 +14286,8 @@ struct hdd_config {
bool apDisableIntraBssFwd;
uint8_t enableLTECoex;
uint32_t apKeepAlivePeriod;
- uint32_t goKeepAlivePeriod;
enum station_keepalive_method sta_keepalive_method;
uint32_t apLinkMonitorPeriod;
- uint32_t goLinkMonitorPeriod;
uint32_t nBeaconInterval;
uint8_t nTxPowerCap; /* In dBm */
bool allow_tpc_from_ap;
@@ -14576,7 +14486,6 @@ struct hdd_config {
uint16_t nRoamScanHomeAwayTime;
uint8_t enableMCC;
uint8_t allowMCCGODiffBI;
- bool isP2pDeviceAddrAdministrated;
uint8_t thermalMitigationEnable;
uint32_t throttlePeriod;
uint32_t throttle_dutycycle_level0;
@@ -14637,8 +14546,6 @@ struct hdd_config {
uint8_t enableModulatedDTIM;
uint32_t fEnableMCAddrList;
bool enableFirstScan2GOnly;
- bool skipDfsChnlInP2pSearch;
- bool ignoreDynamicDtimInP2pMode;
bool enableRxSTBC;
bool enableTxSTBC;
uint8_t enable_tx_ldpc;
diff --git a/core/hdd/src/wlan_hdd_cfg.c b/core/hdd/src/wlan_hdd_cfg.c
index 3426870fb7..67e3bf9f6d 100644
--- a/core/hdd/src/wlan_hdd_cfg.c
+++ b/core/hdd/src/wlan_hdd_cfg.c
@@ -42,6 +42,7 @@
#include "wlan_hdd_green_ap.h"
#include "wlan_hdd_green_ap_cfg.h"
#include "wlan_hdd_twt.h"
+#include "wlan_p2p_cfg_api.h"
static void
cb_notify_set_roam_prefer5_g_hz(struct hdd_context *hdd_ctx,
@@ -644,13 +645,6 @@ struct reg_table_entry g_registry_table[] = {
CFG_AP_KEEP_ALIVE_PERIOD_MIN,
CFG_AP_KEEP_ALIVE_PERIOD_MAX),
- REG_VARIABLE(CFG_GO_KEEP_ALIVE_PERIOD_NAME, WLAN_PARAM_Integer,
- struct hdd_config, goKeepAlivePeriod,
- VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
- CFG_GO_KEEP_ALIVE_PERIOD_DEFAULT,
- CFG_GO_KEEP_ALIVE_PERIOD_MIN,
- CFG_GO_KEEP_ALIVE_PERIOD_MAX),
-
REG_VARIABLE(CFG_AP_LINK_MONITOR_PERIOD_NAME, WLAN_PARAM_Integer,
struct hdd_config, apLinkMonitorPeriod,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
@@ -658,13 +652,6 @@ struct reg_table_entry g_registry_table[] = {
CFG_AP_LINK_MONITOR_PERIOD_MIN,
CFG_AP_LINK_MONITOR_PERIOD_MAX),
- REG_VARIABLE(CFG_GO_LINK_MONITOR_PERIOD_NAME, WLAN_PARAM_Integer,
- struct hdd_config, goLinkMonitorPeriod,
- VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
- CFG_GO_LINK_MONITOR_PERIOD_DEFAULT,
- CFG_GO_LINK_MONITOR_PERIOD_MIN,
- CFG_GO_LINK_MONITOR_PERIOD_MAX),
-
REG_VARIABLE(CFG_DISABLE_PACKET_FILTER, WLAN_PARAM_Integer,
struct hdd_config, disablePacketFilter,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
@@ -1854,14 +1841,6 @@ struct reg_table_entry g_registry_table[] = {
CFG_ROAM_SCAN_HOME_AWAY_TIME_MAX,
cb_notify_set_roam_scan_home_away_time, 0),
- REG_VARIABLE(CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_NAME,
- WLAN_PARAM_Integer,
- struct hdd_config, isP2pDeviceAddrAdministrated,
- VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
- CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_DEFAULT,
- CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_MIN,
- CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_MAX),
-
REG_VARIABLE(CFG_ENABLE_MCC_ENABLED_NAME, WLAN_PARAM_Integer,
struct hdd_config, enableMCC,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
@@ -2153,21 +2132,6 @@ struct reg_table_entry g_registry_table[] = {
CFG_ENABLE_FIRST_SCAN_2G_ONLY_MIN,
CFG_ENABLE_FIRST_SCAN_2G_ONLY_MAX),
- REG_VARIABLE(CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_NAME, WLAN_PARAM_Integer,
- struct hdd_config, skipDfsChnlInP2pSearch,
- VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
- CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_DEFAULT,
- CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_MIN,
- CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_MAX),
-
- REG_VARIABLE(CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_NAME,
- WLAN_PARAM_Integer,
- struct hdd_config, ignoreDynamicDtimInP2pMode,
- VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
- CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_DEFAULT,
- CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_MIN,
- CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_MAX),
-
REG_VARIABLE(CFG_ENABLE_RX_STBC, WLAN_PARAM_Integer,
struct hdd_config, enableRxSTBC,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
@@ -6711,10 +6675,6 @@ void hdd_cfg_print(struct hdd_context *hdd_ctx)
hdd_ctx->config->vhtChannelWidth);
hdd_debug("Name = [enableFirstScan2GOnly] Value = [%u] ",
hdd_ctx->config->enableFirstScan2GOnly);
- hdd_debug("Name = [skipDfsChnlInP2pSearch] Value = [%u] ",
- hdd_ctx->config->skipDfsChnlInP2pSearch);
- hdd_debug("Name = [ignoreDynamicDtimInP2pMode] Value = [%u] ",
- hdd_ctx->config->ignoreDynamicDtimInP2pMode);
hdd_debug("Name = [enableRxSTBC] Value = [%u] ",
hdd_ctx->config->enableRxSTBC);
hdd_debug("Name = [gEnableSSR] Value = [%u] ",
@@ -6723,12 +6683,8 @@ void hdd_cfg_print(struct hdd_context *hdd_ctx)
hdd_ctx->config->enable_data_stall_det);
hdd_debug("Name = [gEnableVhtFor24GHzBand] Value = [%u] ",
hdd_ctx->config->enableVhtFor24GHzBand);
- hdd_debug("Name = [gGoLinkMonitorPeriod] Value = [%u]",
- hdd_ctx->config->goLinkMonitorPeriod);
hdd_debug("Name = [gApLinkMonitorPeriod] Value = [%u]",
hdd_ctx->config->apLinkMonitorPeriod);
- hdd_debug("Name = [gGoKeepAlivePeriod] Value = [%u]",
- hdd_ctx->config->goKeepAlivePeriod);
hdd_debug("Name = [gApKeepAlivePeriod]Value = [%u]",
hdd_ctx->config->apKeepAlivePeriod);
hdd_debug("Name = [max_amsdu_num] Value = [%u] ",
@@ -8107,6 +8063,8 @@ bool hdd_update_config_cfg(struct hdd_context *hdd_ctx)
bool status = true;
struct hdd_config *config = hdd_ctx->config;
mac_handle_t mac_handle;
+ uint32_t ivalue;
+ QDF_STATUS ret;
/*
* During the initialization both 2G and 5G capabilities should be same.
@@ -8194,10 +8152,16 @@ bool hdd_update_config_cfg(struct hdd_context *hdd_ctx)
hdd_err("Couldn't pass on WNI_CFG_AP_KEEP_ALIVE_TIMEOUT to CFG");
}
- if (sme_cfg_set_int(mac_handle, WNI_CFG_GO_KEEP_ALIVE_TIMEOUT,
- config->goKeepAlivePeriod) == QDF_STATUS_E_FAILURE) {
- status = false;
- hdd_err("Couldn't pass on WNI_CFG_GO_KEEP_ALIVE_TIMEOUT to CFG");
+ ret = cfg_p2p_get_go_keepalive_period(hdd_ctx->hdd_psoc, &ivalue);
+ if (ret == QDF_STATUS_SUCCESS) {
+ ret = sme_cfg_set_int(mac_handle,
+ WNI_CFG_GO_KEEP_ALIVE_TIMEOUT,
+ ivalue);
+
+ if (ret == QDF_STATUS_E_FAILURE) {
+ status = false;
+ hdd_err("Couldn't pass on WNI_CFG_GO_KEEP_ALIVE_TIMEOUT to CFG");
+ }
}
if (sme_cfg_set_int(mac_handle, WNI_CFG_AP_LINK_MONITOR_TIMEOUT,
@@ -8206,10 +8170,15 @@ bool hdd_update_config_cfg(struct hdd_context *hdd_ctx)
hdd_err("Couldn't pass on WNI_CFG_AP_LINK_MONITOR_TIMEOUT to CFG");
}
- if (sme_cfg_set_int(mac_handle, WNI_CFG_GO_LINK_MONITOR_TIMEOUT,
- config->goLinkMonitorPeriod) == QDF_STATUS_E_FAILURE) {
- status = false;
- hdd_err("Couldn't pass on WNI_CFG_GO_LINK_MONITOR_TIMEOUT to CFG");
+ ret = cfg_p2p_get_go_link_monitor_period(hdd_ctx->hdd_psoc, &ivalue);
+ if (ret == QDF_STATUS_SUCCESS) {
+ ret = sme_cfg_set_int(mac_handle,
+ WNI_CFG_GO_LINK_MONITOR_TIMEOUT,
+ ivalue);
+ if (ret == QDF_STATUS_E_FAILURE) {
+ status = false;
+ hdd_err("Couldn't pass on WNI_CFG_GO_LINK_MONITOR_TIMEOUT to CFG");
+ }
}
if (sme_cfg_set_int(mac_handle, WNI_CFG_SINGLE_TID_RC,
diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c
index 3df267119f..f80bd29f77 100644
--- a/core/hdd/src/wlan_hdd_main.c
+++ b/core/hdd/src/wlan_hdd_main.c
@@ -135,6 +135,8 @@
#include "wlan_hdd_twt.h"
#include "qc_sap_ioctl.h"
#include "wlan_mlme_main.h"
+#include "wlan_p2p_cfg_api.h"
+
#ifdef CNSS_GENL
#include
#endif
@@ -9029,8 +9031,10 @@ static int hdd_open_p2p_interface(struct hdd_context *hdd_ctx, bool rtnl_held)
{
struct hdd_adapter *adapter;
uint8_t *p2p_dev_addr;
+ bool p2p_dev_addr_admin = false;
- if (hdd_ctx->config->isP2pDeviceAddrAdministrated &&
+ cfg_p2p_get_device_addr_admin(hdd_ctx->hdd_psoc, &p2p_dev_addr_admin);
+ if (p2p_dev_addr_admin &&
!(hdd_ctx->config->intfMacAddr[0].bytes[0] & 0x02)) {
qdf_mem_copy(hdd_ctx->p2p_device_address.bytes,
hdd_ctx->config->intfMacAddr[0].bytes,
@@ -9479,6 +9483,7 @@ exit:
static int hdd_update_user_config(struct hdd_context *hdd_ctx)
{
struct wlan_objmgr_psoc_user_config *user_config;
+ bool skip_dfs_in_p2p_search = false;
user_config = qdf_mem_malloc(sizeof(*user_config));
if (user_config == NULL) {
@@ -9497,8 +9502,9 @@ static int hdd_update_user_config(struct hdd_context *hdd_ctx)
hdd_ctx->config->Is11hSupportEnabled;
user_config->optimize_chan_avoid_event =
hdd_ctx->config->goptimize_chan_avoid_event;
- user_config->skip_dfs_chnl_in_p2p_search =
- hdd_ctx->config->skipDfsChnlInP2pSearch;
+ cfg_p2p_get_skip_dfs_channel_p2p_search(hdd_ctx->hdd_psoc,
+ &skip_dfs_in_p2p_search);
+ user_config->skip_dfs_chnl_in_p2p_search = skip_dfs_in_p2p_search;
user_config->band_capability = hdd_ctx->config->nBandCapability;
wlan_objmgr_psoc_set_user_config(hdd_ctx->hdd_psoc, user_config);
diff --git a/core/hdd/src/wlan_hdd_p2p.c b/core/hdd/src/wlan_hdd_p2p.c
index 2eef6298ce..56bfdfcc36 100644
--- a/core/hdd/src/wlan_hdd_p2p.c
+++ b/core/hdd/src/wlan_hdd_p2p.c
@@ -47,6 +47,7 @@
#include "wlan_p2p_public_struct.h"
#include "wlan_p2p_ucfg_api.h"
#include "wlan_cfg80211_p2p.h"
+#include "wlan_p2p_cfg_api.h"
/* Ms to Time Unit Micro Sec */
#define MS_TO_TU_MUS(x) ((x) * 1024)
@@ -629,6 +630,7 @@ struct wireless_dev *__wlan_hdd_add_virtual_intf(struct wiphy *wiphy,
struct hdd_adapter *adapter = NULL;
int ret;
uint8_t session_type;
+ bool p2p_dev_addr_admin = false;
hdd_enter();
@@ -683,7 +685,8 @@ struct wireless_dev *__wlan_hdd_add_virtual_intf(struct wiphy *wiphy,
}
adapter = NULL;
- if (hdd_ctx->config->isP2pDeviceAddrAdministrated &&
+ cfg_p2p_get_device_addr_admin(hdd_ctx->hdd_psoc, &p2p_dev_addr_admin);
+ if (p2p_dev_addr_admin &&
((NL80211_IFTYPE_P2P_GO == type) ||
(NL80211_IFTYPE_P2P_CLIENT == type))) {
/*