summaryrefslogtreecommitdiff
path: root/gsupplicant
diff options
context:
space:
mode:
authorJaehyun Kim <jeik01.kim@samsung.com>2023-10-25 12:16:28 +0900
committerJaehyun Kim <jeik01.kim@samsung.com>2023-10-25 16:11:53 +0900
commit176cb03d6b7cc9265a6d3d11e92a7335c57ff245 (patch)
tree6c53ddeea5cb88f367526eb0c40f41d05e20fdb5 /gsupplicant
parent287b39a54e17a3b4bcd400fd89e57d4bc4449b92 (diff)
downloadconnman-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-xgsupplicant/gsupplicant.h9
-rwxr-xr-xgsupplicant/supplicant.c122
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)