qcacld-3.0: Introduce a new compile time flag and INI
Introduce a compile time flag SAE_SINGLE_PMK and new INI
"sae_same_pmk_feature_enabled" to enable/disable SAE
Roaming with same PMK/PMKID feature.
Change-Id: Ifca8ec8bcf6e9a2f1d8409b35390bfee0033bd30
CRs-Fixed: 2616025
diff --git a/Kbuild b/Kbuild
index 3c5862c..4e9155f 100644
--- a/Kbuild
+++ b/Kbuild
@@ -2907,6 +2907,9 @@
#Flag to enable/disable Adaptive 11r feature
cppflags-$(CONFIG_ADAPTIVE_11R) += -DWLAN_ADAPTIVE_11R
+#Flag to enable/disable sae single pmk feature feature
+cppflags-$(CONFIG_SAE_SINGLE_PMK) += -DWLAN_SAE_SINGLE_PMK
+
#Flag to enable NUD tracking
cppflags-$(CONFIG_WLAN_NUD_TRACKING) += -DWLAN_NUD_TRACKING
diff --git a/components/mlme/core/src/wlan_mlme_main.c b/components/mlme/core/src/wlan_mlme_main.c
index 000e9b1..e32d54d 100644
--- a/components/mlme/core/src/wlan_mlme_main.c
+++ b/components/mlme/core/src/wlan_mlme_main.c
@@ -1432,6 +1432,30 @@
}
#endif
+#ifdef WLAN_SAE_SINGLE_PMK
+/**
+ * mlme_init_sae_single_pmk_cfg() - initialize sae_same_pmk_config
+ * flag
+ * @psoc: Pointer to PSOC
+ * @lfr: pointer to mlme lfr config
+ *
+ * Return: None
+ */
+static void
+mlme_init_sae_single_pmk_cfg(struct wlan_objmgr_psoc *psoc,
+ struct wlan_mlme_lfr_cfg *lfr)
+{
+ lfr->sae_same_pmk_feature_enabled = cfg_get(psoc, CFG_SAE_SINGLE_PMK);
+}
+
+#else
+static inline void
+mlme_init_sae_single_pmk_cfg(struct wlan_objmgr_psoc *psoc,
+ struct wlan_mlme_lfr_cfg *lfr)
+{
+}
+#endif
+
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
static void mlme_init_roam_offload_cfg(struct wlan_objmgr_psoc *psoc,
struct wlan_mlme_lfr_cfg *lfr)
@@ -1684,6 +1708,7 @@
mlme_init_bss_load_trigger_params(psoc, &lfr->bss_load_trig);
mlme_init_adaptive_11r_cfg(psoc, lfr);
mlme_init_subnet_detection(psoc, lfr);
+ mlme_init_sae_single_pmk_cfg(psoc, lfr);
}
static uint32_t
diff --git a/components/mlme/dispatcher/inc/cfg_mlme_lfr.h b/components/mlme/dispatcher/inc/cfg_mlme_lfr.h
index aeefb30..703fa19 100644
--- a/components/mlme/dispatcher/inc/cfg_mlme_lfr.h
+++ b/components/mlme/dispatcher/inc/cfg_mlme_lfr.h
@@ -2414,6 +2414,34 @@
#define LFR_SUBNET_DETECTION_ALL
#endif
+#ifdef WLAN_SAE_SINGLE_PMK
+/*
+ * <ini>
+ * sae_same_pmk_feature_enabled - Enable/disable sae single pmk feature.
+ * @Min: 0
+ * @Max: 1
+ * @Default: 1
+ *
+ * This INI is to enable/disable SAE Roaming with same PMK/PMKID feature support
+ *
+ * Related: None.
+ *
+ * Supported Feature: Roaming
+ *
+ * Usage: Internal
+ *
+ * </ini>
+ */
+#define CFG_SAE_SINGLE_PMK CFG_INI_BOOL( \
+ "sae_same_pmk_feature_enabled", \
+ true, \
+ "Enable/disable SAE Roaming with same PMK/PMKID")
+
+#define SAE_SINGLE_PMK_ALL CFG(CFG_SAE_SINGLE_PMK)
+#else
+#define SAE_SINGLE_PMK_ALL
+#endif
+
#ifdef WLAN_ADAPTIVE_11R
/*
* <ini>
@@ -2658,6 +2686,7 @@
ADAPTIVE_11R_ALL \
ROAM_OFFLOAD_ALL \
LFR_ESE_ALL \
- LFR_SUBNET_DETECTION_ALL
+ LFR_SUBNET_DETECTION_ALL \
+ SAE_SINGLE_PMK_ALL
#endif /* CFG_MLME_LFR_H__ */
diff --git a/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h b/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h
index 1513d6a..e53b5f8 100644
--- a/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h
+++ b/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h
@@ -1521,6 +1521,8 @@
* @fw_akm_bitmap: Supported Akm suites of firmware
* @roam_full_scan_period: Idle period in seconds between two successive
* full channel roam scans
+ * @sae_same_pmk_feature_enabled: Contains value of ini
+ * sae_same_pmk_feature_enabled
*/
struct wlan_mlme_lfr_cfg {
bool mawc_roam_enabled;
@@ -1624,6 +1626,9 @@
uint32_t roam_scan_period_after_inactivity;
uint32_t fw_akm_bitmap;
uint32_t roam_full_scan_period;
+#ifdef WLAN_SAE_SINGLE_PMK
+ bool sae_same_pmk_feature_enabled;
+#endif
};
/**
diff --git a/configs/default_defconfig b/configs/default_defconfig
index 9cd1dcd..701cf65 100644
--- a/configs/default_defconfig
+++ b/configs/default_defconfig
@@ -235,6 +235,9 @@
#Flag to enable Adaptive 11r feature
CONFIG_ADAPTIVE_11R := y
+#Flag to enable sae single pmk feature
+CONFIG_SAE_SINGLE_PMK := y
+
#Flag to enable FILS Feature (11ai)
CONFIG_WLAN_FEATURE_FILS := y
ifneq ($(CONFIG_QCA_CLD_WLAN),)