From b5c381e812a55442df23d56b499eb62c3f580e38 Mon Sep 17 00:00:00 2001 From: Jaehyun Kim Date: Tue, 19 Sep 2023 21:09:56 +0900 Subject: [PATCH] Support 6GHz band in wifi roaming Change-Id: I226f1cd43c171ef15f3ab7caff9c429f120e46bd Signed-off-by: Jaehyun Kim --- plugins/wifi.c | 29 ++++++++++++++++++++++++----- src/main.c | 14 ++++++++++++++ src/main.conf | 3 ++- src/main_robot.conf | 6 ++++-- 4 files changed, 44 insertions(+), 8 deletions(-) diff --git a/plugins/wifi.c b/plugins/wifi.c index 34abdec..f19dd8f 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 f044a6e..54f0665 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 5317425..656a9a8 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 cc364d8..2f16e1d 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. -- 2.7.4