summaryrefslogtreecommitdiff
path: root/src/network.c
diff options
context:
space:
mode:
authorJaehyun Kim <jeik01.kim@samsung.com>2021-12-20 12:11:43 +0900
committerJaehyun Kim <jeik01.kim@samsung.com>2021-12-28 22:21:51 +0900
commita0f49e57059d59d8b3124554a16238c968f158c7 (patch)
treef998d7344ec9da7e5b1e25d8a3f0613bfa5432d1 /src/network.c
parentd4fbe50ed65c256d0592cd61496eda3e0bac5389 (diff)
downloadconnman-a0f49e57059d59d8b3124554a16238c968f158c7.tar.gz
connman-a0f49e57059d59d8b3124554a16238c968f158c7.tar.bz2
connman-a0f49e57059d59d8b3124554a16238c968f158c7.zip
Start wifi roaming when better BSS is found
If better BSS is found after roaming scan, roaming starts. Change-Id: I9812f3a0205021e1cecb9696ebc29947fd44dae4 Signed-off-by: Jaehyun Kim <jeik01.kim@samsung.com>
Diffstat (limited to 'src/network.c')
-rwxr-xr-xsrc/network.c42
1 files changed, 33 insertions, 9 deletions
diff --git a/src/network.c b/src/network.c
index d72d40a0..b1643e72 100755
--- a/src/network.c
+++ b/src/network.c
@@ -145,6 +145,10 @@ struct connman_network {
void *transition_mode_ssid;
int transition_mode_ssid_len;
unsigned char transition_mode_bssid[WIFI_BSSID_LEN_MAX];
+ bool roaming_progress;
+ char *roaming_cur_bssid;
+ char *roaming_dst_bssid;
+ int snr;
#endif
} wifi;
@@ -2347,6 +2351,9 @@ int connman_network_set_bssid(struct connman_network *network,
if (bssid == NULL)
return -EINVAL;
+ if (network->connected)
+ return -EPERM;
+
if (!simplified_log)
DBG("network %p bssid %02x:%02x:%02x:%02x:%02x:%02x", network,
bssid[0], bssid[1], bssid[2],
@@ -2643,6 +2650,16 @@ GHashTable *connman_network_get_assoc_reject_table(struct connman_network *netwo
return network->wifi.assoc_reject_table;
}
+
+int connman_network_get_snr(struct connman_network *network)
+{
+ return network->wifi.snr;
+}
+
+void connman_network_set_snr(struct connman_network *network, int snr)
+{
+ network->wifi.snr = snr;
+}
#endif
int connman_network_set_nameservers(struct connman_network *network,
@@ -2852,6 +2869,12 @@ int connman_network_set_string(struct connman_network *network,
} else if (g_str_equal(key, "WiFi.NetAccessKey")) {
g_free(network->wifi.net_access_key);
network->wifi.net_access_key = g_strdup(value);
+ } else if (g_str_equal(key, "WiFi.RoamingCurBSSID")) {
+ g_free(network->wifi.roaming_cur_bssid);
+ network->wifi.roaming_cur_bssid = g_strdup(value);
+ } else if (g_str_equal(key, "WiFi.RoamingDstBSSID")) {
+ g_free(network->wifi.roaming_dst_bssid);
+ network->wifi.roaming_dst_bssid = g_strdup(value);
#endif
} else {
return -EINVAL;
@@ -2879,15 +2902,7 @@ const char *connman_network_get_string(struct connman_network *network,
else if (g_str_equal(key, "WiFi.Mode"))
return network->wifi.mode;
else if (g_str_equal(key, "WiFi.Security"))
-#if defined TIZEN_EXT
- if (network->wifi.rsn_mode != true ||
- g_str_equal(network->wifi.security, "ieee8021x"))
- return network->wifi.security;
- else
- return "rsn";
-#else
return network->wifi.security;
-#endif
else if (g_str_equal(key, "WiFi.Passphrase"))
return network->wifi.passphrase;
else if (g_str_equal(key, "WiFi.EAP"))
@@ -2925,6 +2940,10 @@ const char *connman_network_get_string(struct connman_network *network,
return network->wifi.c_sign_key;
else if (g_str_equal(key, "WiFi.NetAccessKey"))
return network->wifi.net_access_key;
+ else if (g_str_equal(key, "WiFi.RoamingCurBSSID"))
+ return network->wifi.roaming_cur_bssid;
+ else if (g_str_equal(key, "WiFi.RoamingDstBSSID"))
+ return network->wifi.roaming_dst_bssid;
#endif
return NULL;
@@ -2956,6 +2975,9 @@ int connman_network_set_bool(struct connman_network *network,
network->wifi.isHS20AP = value;
else if (g_strcmp0(key, "WiFi.TRANSITION_MODE") == 0)
network->wifi.owe_transition_mode = value;
+ else if (g_strcmp0(key, "WiFi.Roaming") == 0) {
+ network->wifi.roaming_progress = value;
+ }
#endif
return -EINVAL;
@@ -2984,8 +3006,10 @@ bool connman_network_get_bool(struct connman_network *network,
return network->default_internet;
else if (g_str_equal(key, "WiFi.HS20AP"))
return network->wifi.isHS20AP;
- else if (g_strcmp0(key, "WiFi.TRANSITION_MODE"))
+ else if (g_str_equal(key, "WiFi.TRANSITION_MODE"))
return network->wifi.owe_transition_mode;
+ else if (g_str_equal(key, "WiFi.Roaming"))
+ return network->wifi.roaming_progress;
#endif
return false;