summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAsutosh Mohapatra <quic_asutmoha@quicinc.com>2023-01-03 22:26:32 -0800
committerMadan Koyyalamudi <quic_mkoyyala@quicinc.com>2023-04-04 05:42:04 -0700
commit06be65b1816c7be67e3247c70a303c0fdb23a07d (patch)
treef6743fcef6f78611b6aa5f457bd91204279adb00
parent147ad485891e5438308b189acca8a390ff425e82 (diff)
downloadqcacld-06be65b1816c7be67e3247c70a303c0fdb23a07d.tar.gz
qcacld-3.0: Add new INI to separate scan policy for rest of world users
Currently host drops an AP from scan list if host country is set to US and AP country is non-US. This implementation violates our standard regulatory scan policy. To address this issue, introduce a new INI to differentiate between our standard regulatory policy with others. Change-Id: Ie6bd2d1925048aef427136b34d00d361955f40b2 CRs-Fixed: 3377242
-rw-r--r--components/mlme/core/src/wlan_mlme_main.c23
-rw-r--r--components/mlme/dispatcher/inc/cfg_mlme_generic.h26
-rw-r--r--components/mlme/dispatcher/inc/wlan_mlme_api.h22
-rw-r--r--components/mlme/dispatcher/inc/wlan_mlme_public_struct.h4
-rw-r--r--components/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h21
-rw-r--r--components/mlme/dispatcher/src/wlan_mlme_api.c17
-rw-r--r--core/hdd/src/wlan_hdd_main.c12
7 files changed, 122 insertions, 3 deletions
diff --git a/components/mlme/core/src/wlan_mlme_main.c b/components/mlme/core/src/wlan_mlme_main.c
index 93242060cb..1e08d1ac58 100644
--- a/components/mlme/core/src/wlan_mlme_main.c
+++ b/components/mlme/core/src/wlan_mlme_main.c
@@ -445,6 +445,28 @@ static void mlme_init_wds_config_cfg(struct wlan_objmgr_psoc *psoc,
}
#endif
+#ifdef CONFIG_BAND_6GHZ
+/**
+ * mlme_init_standard_6ghz_conn_policy() - initialize standard 6GHz
+ * policy connection flag
+ * @psoc: Pointer to PSOC
+ * @gen: pointer to generic CFG items
+ *
+ * Return: None
+ */
+static void mlme_init_standard_6ghz_conn_policy(struct wlan_objmgr_psoc *psoc,
+ struct wlan_mlme_generic *gen)
+{
+ gen->std_6ghz_conn_policy =
+ cfg_get(psoc, CFG_6GHZ_STANDARD_CONNECTION_POLICY);
+}
+#else
+static void mlme_init_standard_6ghz_conn_policy(struct wlan_objmgr_psoc *psoc,
+ struct wlan_mlme_generic *gen)
+{
+}
+#endif
+
/**
* mlme_init_mgmt_hw_tx_retry_count_cfg() - initialize mgmt hw tx retry count
* @psoc: Pointer to PSOC
@@ -554,6 +576,7 @@ static void mlme_init_generic_cfg(struct wlan_objmgr_psoc *psoc,
cfg_get(psoc, CFG_ENABLE_HE_MCS0_MGMT_6GHZ);
mlme_init_wds_config_cfg(psoc, gen);
mlme_init_mgmt_hw_tx_retry_count_cfg(psoc, gen);
+ mlme_init_standard_6ghz_conn_policy(psoc, gen);
}
static void mlme_init_edca_ani_cfg(struct wlan_objmgr_psoc *psoc,
diff --git a/components/mlme/dispatcher/inc/cfg_mlme_generic.h b/components/mlme/dispatcher/inc/cfg_mlme_generic.h
index 95c06807b9..85d62692e0 100644
--- a/components/mlme/dispatcher/inc/cfg_mlme_generic.h
+++ b/components/mlme/dispatcher/inc/cfg_mlme_generic.h
@@ -180,6 +180,29 @@ enum wlan_wds_mode {
0, \
"rf test mode Enable Flag")
+#ifdef CONFIG_BAND_6GHZ
+/*
+ * standard_6ghz_connection_policy - Enable 6 GHz standard connection policy
+ * @Min: 0
+ * @Max: 1
+ * @Default: 1
+ *
+ * This ini is used to set standard 6 GHz policies where STA will be
+ * allowed to scan and connect to any 6 GHz AP.
+ *
+ * Related: None
+ *
+ * Supported Feature: STA
+ */
+#define CFG_6GHZ_STANDARD_CONNECTION_POLICY CFG_INI_BOOL( \
+ "standard_6ghz_connection_policy", \
+ 1, \
+ "6ghz standard 6 GHZ connection policy")
+#define CFG_6GHZ_STD_CONN_POLICY CFG(CFG_6GHZ_STANDARD_CONNECTION_POLICY)
+#else
+#define CFG_6GHZ_STD_CONN_POLICY
+#endif
+
/*
* <ini>
* BandCapability - Preferred band (0: 2.4G, 5G, and 6G,
@@ -994,5 +1017,6 @@ enum wlan_wds_mode {
CFG(CFG_RF_TEST_MODE_SUPP_ENABLED) \
CFG_WDS_MODE_ALL \
CFG(CFG_TX_RETRY_MULTIPLIER) \
- CFG(CFG_MGMT_FRAME_HW_TX_RETRY_COUNT)
+ CFG(CFG_MGMT_FRAME_HW_TX_RETRY_COUNT)\
+ CFG_6GHZ_STD_CONN_POLICY
#endif /* __CFG_MLME_GENERIC_H */
diff --git a/components/mlme/dispatcher/inc/wlan_mlme_api.h b/components/mlme/dispatcher/inc/wlan_mlme_api.h
index b9a6d954d7..d7fd35d32d 100644
--- a/components/mlme/dispatcher/inc/wlan_mlme_api.h
+++ b/components/mlme/dispatcher/inc/wlan_mlme_api.h
@@ -2255,6 +2255,28 @@ wlan_mlme_is_rf_test_mode_enabled(struct wlan_objmgr_psoc *psoc, bool *value);
QDF_STATUS
wlan_mlme_set_rf_test_mode_enabled(struct wlan_objmgr_psoc *psoc, bool value);
+#ifdef CONFIG_BAND_6GHZ
+/**
+ * wlan_mlme_is_standard_6ghz_conn_policy_enabled() - Get the 6 GHz standard
+ * connection policy flag
+ * @psoc: psoc context
+ * @value: Enable/Disable value ptr.
+ *
+ * Return: QDF_STATUS
+ */
+QDF_STATUS
+wlan_mlme_is_standard_6ghz_conn_policy_enabled(struct wlan_objmgr_psoc *psoc,
+ bool *value);
+#else
+static inline QDF_STATUS
+wlan_mlme_is_standard_6ghz_conn_policy_enabled(struct wlan_objmgr_psoc *psoc,
+ bool *value)
+{
+ *value = false;
+ return QDF_STATUS_SUCCESS;
+}
+#endif
+
/**
* wlan_mlme_get_sta_miracast_mcc_rest_time() - Get STA/MIRACAST MCC rest time
*
diff --git a/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h b/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h
index 2b8e9c91bb..351b4b0936 100644
--- a/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h
+++ b/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h
@@ -1341,6 +1341,7 @@ enum mlme_cfg_frame_type {
* @dual_sta_policy_cfg: Dual STA policies configuration
* @tx_retry_multiplier: TX xretry extension parameter
* @mgmt_hw_tx_retry_count: MGMT HW tx retry count for frames
+ * @std_6ghz_conn_policy: 6GHz standard connection policy
* @safe_mode_enable: safe mode to bypass some strict 6 GHz checks for
* connection, bypass strict power levels
*/
@@ -1391,6 +1392,9 @@ struct wlan_mlme_generic {
struct dual_sta_policy dual_sta_policy;
uint32_t tx_retry_multiplier;
uint8_t mgmt_hw_tx_retry_count[CFG_FRAME_TYPE_MAX];
+#ifdef CONFIG_BAND_6GHZ
+ bool std_6ghz_conn_policy;
+#endif
bool safe_mode_enable;
};
diff --git a/components/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h b/components/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h
index 6d47f5476a..0cc74effd1 100644
--- a/components/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h
+++ b/components/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h
@@ -1,6 +1,6 @@
/*
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
- * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@@ -2797,8 +2797,25 @@ ucfg_mlme_set_rf_test_mode_enabled(struct wlan_objmgr_psoc *psoc, bool value)
}
/**
+ * ucfg_mlme_is_standard_6ghz_conn_policy_enabled() - Get 6ghz standard
+ * connection policy flag
+ * @psoc: pointer to psoc object
+ * @value: pointer to hold the value of flag
+ *
+ * Inline UCFG API to be used by HDD/OSIF callers
+ *
+ * Return: QDF Status
+ */
+static inline QDF_STATUS
+ucfg_mlme_is_standard_6ghz_conn_policy_enabled(struct wlan_objmgr_psoc *psoc,
+ bool *value)
+{
+ return wlan_mlme_is_standard_6ghz_conn_policy_enabled(psoc, value);
+}
+
+/**
* ucfg_mlme_get_opr_rate() - Get operational rate set
- * @psoc: pointer to vdev object
+ * @vdev: pointer to vdev object
* @buf: buffer to get rates set
* @len: length of the buffer
*
diff --git a/components/mlme/dispatcher/src/wlan_mlme_api.c b/components/mlme/dispatcher/src/wlan_mlme_api.c
index bb348c24f0..9cec0867e8 100644
--- a/components/mlme/dispatcher/src/wlan_mlme_api.c
+++ b/components/mlme/dispatcher/src/wlan_mlme_api.c
@@ -3070,6 +3070,23 @@ wlan_mlme_set_rf_test_mode_enabled(struct wlan_objmgr_psoc *psoc, bool value)
return QDF_STATUS_SUCCESS;
}
+#ifdef CONFIG_BAND_6GHZ
+QDF_STATUS
+wlan_mlme_is_standard_6ghz_conn_policy_enabled(struct wlan_objmgr_psoc *psoc,
+ bool *value)
+{
+ struct wlan_mlme_psoc_ext_obj *mlme_obj;
+
+ mlme_obj = mlme_get_psoc_ext_obj(psoc);
+ if (!mlme_obj)
+ return QDF_STATUS_E_FAILURE;
+
+ *value = mlme_obj->cfg.gen.std_6ghz_conn_policy;
+
+ return QDF_STATUS_SUCCESS;
+}
+#endif
+
QDF_STATUS
wlan_mlme_cfg_set_vht_chan_width(struct wlan_objmgr_psoc *psoc, uint8_t value)
{
diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c
index 5773b5716f..2dc8a28783 100644
--- a/core/hdd/src/wlan_hdd_main.c
+++ b/core/hdd/src/wlan_hdd_main.c
@@ -15066,6 +15066,7 @@ static int hdd_features_init(struct hdd_context *hdd_ctx)
mac_handle_t mac_handle;
bool b_cts2self, is_imps_enabled;
bool rf_test_mode;
+ bool std_6ghz_conn_policy;
hdd_enter();
@@ -15166,6 +15167,17 @@ static int hdd_features_init(struct hdd_context *hdd_ctx)
wlan_cm_set_6ghz_key_mgmt_mask(hdd_ctx->psoc,
DEFAULT_KEYMGMT_6G_MASK);
}
+
+ status = ucfg_mlme_is_standard_6ghz_conn_policy_enabled(hdd_ctx->psoc,
+ &std_6ghz_conn_policy);
+
+ if (!QDF_IS_STATUS_SUCCESS(status)) {
+ hdd_err("Get 6ghz standard connection policy failed");
+ return QDF_STATUS_E_FAILURE;
+ }
+ if (std_6ghz_conn_policy)
+ wlan_cm_set_standard_6ghz_conn_policy(hdd_ctx->psoc, true);
+
hdd_thermal_stats_cmd_init(hdd_ctx);
sme_set_cal_failure_event_cb(hdd_ctx->mac_handle,
hdd_cal_fail_send_event);