station: Return errno from station_roam_scan_known_freqs
diff --git a/src/station.c b/src/station.c
index f6ed0fe..93facdd 100644
--- a/src/station.c
+++ b/src/station.c
@@ -1794,23 +1794,21 @@
station_roam_failed(station);
}
-static bool station_roam_scan_known_freqs(struct station *station)
+static int station_roam_scan_known_freqs(struct station *station)
{
const struct network_info *info = network_get_info(
station->connected_network);
struct scan_freq_set *freqs = network_info_get_roam_frequencies(info,
station->connected_bss->frequency, 5);
- if (!freqs) {
- l_debug("no known frequencies to scan");
- return false;
- }
+ if (!freqs)
+ return -ENODATA;
station_roam_scan(station, freqs);
scan_freq_set_free(freqs);
- return true;
+ return 0;
}
static uint32_t station_freq_from_neighbor_report(const uint8_t *country,
@@ -1869,6 +1867,7 @@
struct scan_freq_set *freq_set_md, *freq_set_no_md;
uint32_t current_freq = 0;
struct handshake_state *hs = netdev_get_handshake(station->netdev);
+ int r;
l_debug("ifindex: %u, error: %d(%s)",
netdev_get_ifindex(station->netdev),
@@ -1882,10 +1881,13 @@
return;
if (!reports || err) {
- if (!station_roam_scan_known_freqs(station)) {
+ r = station_roam_scan_known_freqs(station);
+
+ if (r == -ENODATA)
l_debug("no neighbor report results or known freqs");
+
+ if (r < 0)
station_roam_failed(station);
- }
return;
}
@@ -1992,6 +1994,7 @@
static void station_roam_trigger_cb(struct l_timeout *timeout, void *user_data)
{
struct station *station = user_data;
+ int r;
l_debug("%u", netdev_get_ifindex(station->netdev));
@@ -2014,11 +2017,12 @@
station_neighbor_report_cb))
return;
- if (!station_roam_scan_known_freqs(station)) {
+ r = station_roam_scan_known_freqs(station);
+ if (r == -ENODATA)
l_debug("No neighbor report or known frequencies, roam failed");
+
+ if (r < 0)
station_roam_failed(station);
- return;
- }
}
static void station_roam_timeout_rearm(struct station *station, int seconds)