summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaehyun Kim <jeik01.kim@samsung.com>2023-09-19 21:09:56 +0900
committerJaehyun Kim <jeik01.kim@samsung.com>2023-09-19 21:09:56 +0900
commitb5c381e812a55442df23d56b499eb62c3f580e38 (patch)
tree4107d8c952faa0167b704f693038eb7c8e3b8eea
parent62c1831830ace360cd7eb01e6fcc0503970de273 (diff)
downloadconnman-b5c381e812a55442df23d56b499eb62c3f580e38.tar.gz
connman-b5c381e812a55442df23d56b499eb62c3f580e38.tar.bz2
connman-b5c381e812a55442df23d56b499eb62c3f580e38.zip
Change-Id: I226f1cd43c171ef15f3ab7caff9c429f120e46bd Signed-off-by: Jaehyun Kim <jeik01.kim@samsung.com>
-rwxr-xr-xplugins/wifi.c29
-rwxr-xr-xsrc/main.c14
-rwxr-xr-xsrc/main.conf3
-rwxr-xr-xsrc/main_robot.conf6
4 files changed, 44 insertions, 8 deletions
diff --git a/plugins/wifi.c b/plugins/wifi.c
index 34abdec1..f19dd8f3 100755
--- a/plugins/wifi.c
+++ b/plugins/wifi.c
@@ -102,16 +102,29 @@
* Weak : -77 ~ -82
* Very weak : -83 ~ -88
* No signal : -89 ~
+ *
+ * Wi-Fi Signal Strength (for 6G (dB))
+ *
+ * Excellent : ~ -72
+ * Good : -73 ~ -77
+ * Weak : -78 ~ -82
+ * Very weak : -83 ~ -88
+ * No signal : -89 ~
*/
+#define RSSI_LEVEL_2_6G -78
#define RSSI_LEVEL_2_5G -77
#define RSSI_LEVEL_2_2_4G -75
+#define RSSI_LEVEL_3_6G -73
#define RSSI_LEVEL_3_5G -68
#define RSSI_LEVEL_3_2_4G -64
#define ROAM_SCAN_INTERVAL 60 /* 60 seconds */
+#define FREQUENCY_5G_BASE 5000
+#define FREQUENCY_6G_BASE 5925
static int min_snr = 0;
static int min_rssi_2_4GHz = 0;
static int min_rssi_5GHz = 0;
+static int min_rssi_6GHz = 0;
#endif
static struct connman_technology *wifi_technology = NULL;
@@ -2152,13 +2165,15 @@ static gboolean need_bss_transition(uint16_t freq, int snr, int strength)
* If the currently connected AP matches the following conditions,
* scan for BSS transition is started.
* - SNR is less than min_snr or RSSI is less than
- * min_rssi_2_4GHz or min_rssi_5GHz.
+ * min_rssi_2_4GHz, min_rssi_5GHz or min_rssi_6GHz.
*/
if (min_snr != 0 && snr != 0 && snr < min_snr)
return TRUE;
- else if (freq > 4000 && signal <= min_rssi_5GHz)
+ else if (freq > FREQUENCY_6G_BASE && signal <= min_rssi_6GHz)
+ return TRUE;
+ else if (freq > FREQUENCY_5G_BASE && signal <= min_rssi_5GHz)
return TRUE;
- else if (freq < 4000 && signal <= min_rssi_2_4GHz)
+ else if (signal <= min_rssi_2_4GHz)
return TRUE;
return FALSE;
@@ -6833,8 +6848,12 @@ static int wifi_init(void)
if (min_rssi_5GHz >= 0)
min_rssi_5GHz = RSSI_LEVEL_2_5G;
- DBG("Min SNR: %d, Min RSSI: %d(2.4GHz), %d(5GHz)",
- min_snr, min_rssi_2_4GHz, min_rssi_5GHz);
+ min_rssi_6GHz = connman_setting_get_int("WifiRoamingMinRSSI_6GHz");
+ if (min_rssi_6GHz >= 0)
+ min_rssi_6GHz = RSSI_LEVEL_2_6G;
+
+ DBG("Min SNR: %d, Min RSSI: %d(2.4GHz), %d(5GHz), %d(6GHz)",
+ min_snr, min_rssi_2_4GHz, min_rssi_5GHz, min_rssi_6GHz);
#endif
diff --git a/src/main.c b/src/main.c
index f044a6e3..54f06654 100755
--- a/src/main.c
+++ b/src/main.c
@@ -129,6 +129,7 @@ static struct {
int wifi_roam_min_snr;
int wifi_roam_min_rssi_2_4GHz;
int wifi_roam_min_rssi_5GHz;
+ int wifi_roam_min_rssi_6GHz;
#endif
} connman_settings = {
.bg_scan = true,
@@ -172,6 +173,7 @@ static struct {
.wifi_roam_min_snr = 0,
.wifi_roam_min_rssi_2_4GHz = 0,
.wifi_roam_min_rssi_5GHz = 0,
+ .wifi_roam_min_rssi_6GHz = 0,
#endif
};
@@ -272,6 +274,7 @@ static struct {
#define CONF_WIFI_ROAM_MIN_SNR "WifiRoamingMinSNR"
#define CONF_WIFI_ROAM_MIN_RSSI_2_4 "WifiRoamingMinRSSI_2_4GHz"
#define CONF_WIFI_ROAM_MIN_RSSI_5 "WifiRoamingMinRSSI_5GHz"
+#define CONF_WIFI_ROAM_MIN_RSSI_6 "WifiRoamingMinRSSI_6GHz"
#endif
#if defined TIZEN_EXT
@@ -344,6 +347,7 @@ static const char *supported_options[] = {
CONF_WIFI_ROAM_MIN_SNR,
CONF_WIFI_ROAM_MIN_RSSI_2_4,
CONF_WIFI_ROAM_MIN_RSSI_5,
+ CONF_WIFI_ROAM_MIN_RSSI_6,
#endif
NULL
};
@@ -788,6 +792,13 @@ static void check_tizen_configuration(GKeyFile *config)
g_clear_error(&error);
+ integer = g_key_file_get_integer(config, "General",
+ CONF_WIFI_ROAM_MIN_RSSI_6, &error);
+ if (!error)
+ connman_settings.wifi_roam_min_rssi_6GHz = integer;
+
+ g_clear_error(&error);
+
check_tizen_ins_configuration(config);
}
@@ -1428,6 +1439,9 @@ int connman_setting_get_int(const char *key)
if (g_str_equal(key, CONF_WIFI_ROAM_MIN_RSSI_5))
return connman_settings.wifi_roam_min_rssi_5GHz;
+ if (g_str_equal(key, CONF_WIFI_ROAM_MIN_RSSI_6))
+ return connman_settings.wifi_roam_min_rssi_6GHz;
+
return 0;
}
#endif
diff --git a/src/main.conf b/src/main.conf
index 53174253..656a9a80 100755
--- a/src/main.conf
+++ b/src/main.conf
@@ -222,11 +222,12 @@ DefaultWifiInterface = wlan0
# Determine if the SNR and signal have weakened
# based on the following conditions.
# - SNR is less than WifiRoamingMinSNR or RSSI is less than
-# WifiRoamingMinRSSI_2_4GHz or WifiRoamingMinRSSI_5GHz.
+# WifiRoamingMinRSSI_2_4GHz, WifiRoamingMinRSSI_5GHz or WifiRoamingMinRSSI_6GHz.
# - If the WifiRoamingMinSNR value is 0, the SNR check will be skipped.
WifiRoamingMinSNR = 20
WifiRoamingMinRSSI_2_4GHz = -75
WifiRoamingMinRSSI_5GHz = -77
+WifiRoamingMinRSSI_6GHz = -78
[INS]
# INS(Intelligent Network Selection) configuration: BSSID Selection.
diff --git a/src/main_robot.conf b/src/main_robot.conf
index cc364d88..2f16e1da 100755
--- a/src/main_robot.conf
+++ b/src/main_robot.conf
@@ -217,11 +217,13 @@ DefaultWifiInterface = wlan0
# Determine if the SNR and signal have weakened
# based on the following conditions.
-# - SNR is less than WifiRoamingMinSNR or RSSI level is less than
-# WifiRoamingMinRSSI_2_4GHz or WifiRoamingMinRSSI_5GHz.
+# - SNR is less than WifiRoamingMinSNR or RSSI is less than
+# WifiRoamingMinRSSI_2_4GHz, WifiRoamingMinRSSI_5GHz or WifiRoamingMinRSSI_6GHz.
+# - If the WifiRoamingMinSNR value is 0, the SNR check will be skipped.
WifiRoamingMinSNR = 20
WifiRoamingMinRSSI_2_4GHz = -75
WifiRoamingMinRSSI_5GHz = -77
+WifiRoamingMinRSSI_6GHz = -78
[INS]
# INS(Intelligent Network Selection) configuration: BSSID Selection.