diff options
author | Jaehyun Kim <jeik01.kim@samsung.com> | 2023-10-25 12:16:28 +0900 |
---|---|---|
committer | Jaehyun Kim <jeik01.kim@samsung.com> | 2023-10-25 16:11:53 +0900 |
commit | 176cb03d6b7cc9265a6d3d11e92a7335c57ff245 (patch) | |
tree | 6c53ddeea5cb88f367526eb0c40f41d05e20fdb5 /gsupplicant | |
parent | 287b39a54e17a3b4bcd400fd89e57d4bc4449b92 (diff) | |
download | connman-176cb03d6b7cc9265a6d3d11e92a7335c57ff245.tar.gz connman-176cb03d6b7cc9265a6d3d11e92a7335c57ff245.tar.bz2 connman-176cb03d6b7cc9265a6d3d11e92a7335c57ff245.zip |
Add ApSelectionMethod config option
Global config option, which allow to select the AP selection method
to use when connecting to an AP.
Existing AP selection methods have also been modified to use this option.
Change-Id: I2e3be557ac0567507f5a098205d788c5f47b2700
Signed-off-by: Jaehyun Kim <jeik01.kim@samsung.com>
Diffstat (limited to 'gsupplicant')
-rwxr-xr-x | gsupplicant/gsupplicant.h | 9 | ||||
-rwxr-xr-x | gsupplicant/supplicant.c | 122 |
2 files changed, 60 insertions, 71 deletions
diff --git a/gsupplicant/gsupplicant.h b/gsupplicant/gsupplicant.h index f49ad803..61b63dd6 100755 --- a/gsupplicant/gsupplicant.h +++ b/gsupplicant/gsupplicant.h @@ -307,13 +307,11 @@ struct g_connman_bssids { bool is_last_connected; unsigned int est_throughput; int score_snr; -#if defined TIZEN_EXT_INS int score_last_connected_bssid; int score_assoc_reject; int score_frequency; int score_strength; int score_est_throughput; -#endif int ins_score; }; #endif @@ -559,8 +557,7 @@ void g_supplicant_network_set_bss_signal(GSupplicantNetwork *network, int signal, int snr); GSupplicantNetwork *g_supplicant_interface_get_network(GSupplicantInterface *interface, const char *group); -#endif -#if defined TIZEN_EXT_INS + void g_supplicant_network_set_last_connected_bssid(GSupplicantNetwork *network, const unsigned char *bssid); const unsigned char *g_supplicant_network_get_last_connected_bssid(GSupplicantNetwork *network); void g_supplicant_network_update_assoc_reject(GSupplicantInterface *interface, @@ -625,12 +622,12 @@ struct _GSupplicantCallbacks { typedef struct _GSupplicantCallbacks GSupplicantCallbacks; -#if defined TIZEN_EXT && defined TIZEN_EXT_INS +#if defined TIZEN_EXT void g_supplicant_set_ins_settings(GSupplicantINSPreferredFreq preferred_freq_bssid, bool last_connected_bssid, bool assoc_reject, bool signal_bssid, unsigned int preferred_freq_bssid_score, unsigned int last_connected_bssid_score, unsigned int assoc_reject_score, int signal_level3_5ghz, int signal_level3_24ghz); -#endif /* defined TIZEN_EXT && defined TIZEN_EXT_INS */ +#endif /* defined TIZEN_EXT */ #if defined TIZEN_EXT && defined TIZEN_EXT_EAP_ON_ETHERNET void g_supplicant_replace_config_file(const char *ifname, const char *config_file); diff --git a/gsupplicant/supplicant.c b/gsupplicant/supplicant.c index 0f44766d..cdf6007c 100755 --- a/gsupplicant/supplicant.c +++ b/gsupplicant/supplicant.c @@ -175,7 +175,7 @@ static struct strvalmap mode_capa_map[] = { { } }; -#if defined TIZEN_EXT && defined TIZEN_EXT_INS +#if defined TIZEN_EXT struct _GSupplicantINSSettings { GSupplicantINSPreferredFreq preferred_freq_bssid; unsigned int preferred_freq_bssid_score; @@ -189,13 +189,11 @@ struct _GSupplicantINSSettings { }; static struct _GSupplicantINSSettings ins_settings; -#endif /* defined TIZEN_EXT && defined TIZEN_EXT_INS */ -#if defined TIZEN_EXT_INS static unsigned char invalid_bssid[WIFI_BSSID_LEN_MAX] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; -#endif +#endif /* defined TIZEN_EXT */ static GHashTable *interface_table; static GHashTable *bss_mapping; @@ -457,9 +455,7 @@ struct assoc_count_data { int assoc_count; }; -#if defined TIZEN_EXT_INS static unsigned int last_connected_bss_timeout = 0; -#endif static bool simplified_log = true; #endif @@ -2031,7 +2027,6 @@ void *g_supplicant_network_get_wifi_vsie(GSupplicantNetwork *network) return vsie_list; } -#if defined TIZEN_EXT_INS static bool compare_bssid(unsigned char *bssid_a, unsigned char *bssid_b) { if (!memcmp(bssid_a, bssid_b, WIFI_BSSID_LEN_MAX)) @@ -2199,7 +2194,6 @@ static int calculate_score(bool is_last_connected, uint16_t assoc_reject_cnt, return score; } -#endif /* defined TIZEN_EXT_INS */ static void update_bssid_list(gpointer key, gpointer value, gpointer user_data) { @@ -2222,22 +2216,23 @@ static void update_bssid_list(gpointer key, gpointer value, gpointer user_data) bssids->est_throughput = bss->est_throughput; bssids->score_snr = (int)bss->snr; -#if defined TIZEN_EXT_INS - bssids->assoc_reject_cnt = get_assoc_reject_cnt(bssid_data->assoc_reject_table, bssids->bssid); - bssids->is_last_connected = compare_bssid(bssids->bssid, bssid_data->last_connected_bssid); + if (TIZEN_INS_ENABLED) { + bssids->assoc_reject_cnt = get_assoc_reject_cnt(bssid_data->assoc_reject_table, bssids->bssid); + bssids->is_last_connected = compare_bssid(bssids->bssid, bssid_data->last_connected_bssid); - bssids->score_last_connected_bssid = calculate_score_last_connected_bssid(bssids->is_last_connected); - bssids->score_assoc_reject = calculate_score_assoc_reject(bssids->assoc_reject_cnt); - bssids->score_frequency = calculate_score_frequency(bss->signal, bssids->frequency); - bssids->score_strength = calculate_score_strength(bss->signal); - bssids->score_est_throughput = calculate_score_est_throughput(bss->est_throughput); + bssids->score_last_connected_bssid = calculate_score_last_connected_bssid(bssids->is_last_connected); + bssids->score_assoc_reject = calculate_score_assoc_reject(bssids->assoc_reject_cnt); + bssids->score_frequency = calculate_score_frequency(bss->signal, bssids->frequency); + bssids->score_strength = calculate_score_strength(bss->signal); + bssids->score_est_throughput = calculate_score_est_throughput(bss->est_throughput); + + bssids->ins_score = calculate_score(bssids->is_last_connected, + bssids->assoc_reject_cnt, bssids->frequency, bss->signal, + bss->snr, bss->est_throughput); + } else { + bssids->ins_score = bss->signal; + } - bssids->ins_score = calculate_score(bssids->is_last_connected, - bssids->assoc_reject_cnt, bssids->frequency, bss->signal, - bss->snr, bss->est_throughput); -#else - bssids->ins_score = bss->signal; -#endif bssid_data->bssid_list = g_slist_append(bssid_data->bssid_list, bssids); } else SUPPLICANT_DBG("Failed to allocate memory"); @@ -2264,7 +2259,6 @@ static gint cmp_bss(gconstpointer a, gconstpointer b) return 0; } -#if defined TIZEN_EXT_INS static void print_bssid_sort(gpointer data, gpointer user_data) { struct g_connman_bssids *bssids = data; @@ -2274,14 +2268,12 @@ static void print_bssid_sort(gpointer data, gpointer user_data) if (!bssids || !network) return; - if (!simplified_log) - SUPPLICANT_DBG("ssid [%-20s] bssid[" MACSTR "] total[%2d] freq[%2d] " - "last_conn[%2d] assoc_reject[%2d] strength[%2d] rssi[%2d]", - network->ssid, MAC2STR(bssids->bssid), bssids->ins_score, - bssids->score_frequency, bssids->score_last_connected_bssid, - bssids->score_assoc_reject, bssids->score_strength, bssids->strength - 120); + SUPPLICANT_DBG("ssid [%-20s] bssid[" MACSTR "] total[%2d] freq[%2d] " + "last_conn[%2d] assoc_reject[%2d] strength[%2d] rssi[%2d]", + network->ssid, MAC2STR(bssids->bssid), bssids->ins_score, + bssids->score_frequency, bssids->score_last_connected_bssid, + bssids->score_assoc_reject, bssids->score_strength, bssids->strength - 120); } -#endif void *g_supplicant_network_get_bssid_list(GSupplicantNetwork *network) { @@ -2297,14 +2289,12 @@ void *g_supplicant_network_get_bssid_list(GSupplicantNetwork *network) g_hash_table_foreach(network->bss_table, update_bssid_list, &bssid_data); bssid_data.bssid_list = g_slist_sort(bssid_data.bssid_list, cmp_bss); -#if defined TIZEN_EXT_INS - g_slist_foreach(bssid_data.bssid_list, print_bssid_sort, (gpointer)network); -#endif + if (TIZEN_INS_ENABLED && !simplified_log) + g_slist_foreach(bssid_data.bssid_list, print_bssid_sort, (gpointer)network); return bssid_data.bssid_list; } -#if defined TIZEN_EXT_INS void g_supplicant_network_set_last_connected_bssid(GSupplicantNetwork *network, const unsigned char *bssid) { if (!bssid) @@ -2405,7 +2395,6 @@ GHashTable *g_supplicant_network_clone_assoc_reject_table(GSupplicantNetwork *ne return cloned_assoc_reject_table; } -#endif /* defined TIZEN_EXT_INS */ GSupplicantNetwork *g_supplicant_interface_get_network(GSupplicantInterface *interface, const char *group) @@ -2693,21 +2682,21 @@ static bool update_best_bss(GSupplicantNetwork *network, return true; } -#if defined TIZEN_EXT_INS - score_new = calculate_score( - compare_bssid(bss->bssid, network->last_connected_bssid), - get_assoc_reject_cnt(network->assoc_reject_table, bss->bssid), - bss->frequency, bss->signal, bss->snr, bss->est_throughput); + if (TIZEN_INS_ENABLED) { + score_new = calculate_score( + compare_bssid(bss->bssid, network->last_connected_bssid), + get_assoc_reject_cnt(network->assoc_reject_table, bss->bssid), + bss->frequency, bss->signal, bss->snr, bss->est_throughput); - score_best = calculate_score( - compare_bssid(network->best_bss->bssid, network->last_connected_bssid), - get_assoc_reject_cnt(network->assoc_reject_table, network->best_bss->bssid), - network->best_bss->frequency, network->best_bss->signal, - network->best_bss->snr, network->best_bss->est_throughput); -#else - score_new = bss->signal; - score_best = network->best_bss->signal; -#endif + score_best = calculate_score( + compare_bssid(network->best_bss->bssid, network->last_connected_bssid), + get_assoc_reject_cnt(network->assoc_reject_table, network->best_bss->bssid), + network->best_bss->frequency, network->best_bss->signal, + network->best_bss->snr, network->best_bss->est_throughput); + } else { + score_new = bss->signal; + score_best = network->best_bss->signal; + } if (score_new > score_best) { SUPPLICANT_DBG("new[" MACSTR "][%d] : best[" MACSTR "][%d]", @@ -3579,7 +3568,7 @@ static void update_network_signal(GSupplicantNetwork *network) SUPPLICANT_DBG("New network signal %d", network->signal); } -#if defined TIZEN_EXT_INS +#if defined TIZEN_EXT static gboolean last_connected_timeout(gpointer data) { GSupplicantInterface *interface = data; @@ -3630,7 +3619,7 @@ static void remove_timer_for_last_connected(GSupplicantInterface *interface) } } } -#endif /* defined TIZEN_EXT_INS */ +#endif /* defined TIZEN_EXT */ static void interface_current_bss(GSupplicantInterface *interface, DBusMessageIter *iter) @@ -3727,8 +3716,9 @@ static void interface_current_bss(GSupplicantInterface *interface, case G_SUPPLICANT_STATE_GROUP_HANDSHAKE: case G_SUPPLICANT_STATE_COMPLETED: callback_network_associated(network); -#if defined TIZEN_EXT_INS - add_timer_for_last_connected(interface); +#if defined TIZEN_EXT + if (TIZEN_INS_ENABLED) + add_timer_for_last_connected(interface); #endif break; } @@ -3886,16 +3876,18 @@ static void interface_property(const char *key, DBusMessageIter *iter, interface->state = string2state(str); callback_interface_state(interface); } -#if defined TIZEN_EXT_INS - switch (interface->state) { - case G_SUPPLICANT_STATE_COMPLETED: - add_timer_for_last_connected(interface); - break; - case G_SUPPLICANT_STATE_DISCONNECTED: - remove_timer_for_last_connected(interface); - break; - default: - break; +#if defined TIZEN_EXT + if (TIZEN_INS_ENABLED) { + switch (interface->state) { + case G_SUPPLICANT_STATE_COMPLETED: + add_timer_for_last_connected(interface); + break; + case G_SUPPLICANT_STATE_DISCONNECTED: + remove_timer_for_last_connected(interface); + break; + default: + break; + } } #endif if (interface->ap_create_in_progress) { @@ -8830,7 +8822,7 @@ static void invoke_introspect_method(void) dbus_message_unref(message); } -#if defined TIZEN_EXT && defined TIZEN_EXT_INS +#if defined TIZEN_EXT void g_supplicant_set_ins_settings(GSupplicantINSPreferredFreq preferred_freq_bssid, bool last_connected_bssid, bool assoc_reject, bool signal_bssid, unsigned int preferred_freq_bssid_score, unsigned int last_connected_bssid_score, @@ -8856,7 +8848,7 @@ void g_supplicant_set_ins_settings(GSupplicantINSPreferredFreq preferred_freq_bs SUPPLICANT_DBG("signal_level3_5ghz [%d]", signal_level3_5ghz); SUPPLICANT_DBG("signal_level3_24ghz [%d]", signal_level3_24ghz); } -#endif /* defined TIZEN_EXT && defined TIZEN_EXT_INS */ +#endif /* defined TIZEN_EXT */ #if defined TIZEN_EXT && defined TIZEN_EXT_EAP_ON_ETHERNET void g_supplicant_register_eap_callback(g_supplicant_eap_callback cb) |