Support 6GHz band in wifi roaming 92/299092/1 accepted/tizen/8.0/unified/20231005.094732 accepted/tizen/unified/20230920.161454 tizen_8.0_m2_release
authorJaehyun Kim <jeik01.kim@samsung.com>
Tue, 19 Sep 2023 12:09:56 +0000 (21:09 +0900)
committerJaehyun Kim <jeik01.kim@samsung.com>
Tue, 19 Sep 2023 12:09:56 +0000 (21:09 +0900)
Change-Id: I226f1cd43c171ef15f3ab7caff9c429f120e46bd
Signed-off-by: Jaehyun Kim <jeik01.kim@samsung.com>
plugins/wifi.c
src/main.c
src/main.conf
src/main_robot.conf

index 34abdec..f19dd8f 100755 (executable)
         * 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
 
index f044a6e..54f0665 100755 (executable)
@@ -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
index 5317425..656a9a8 100755 (executable)
@@ -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.
index cc364d8..2f16e1d 100755 (executable)
@@ -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.