mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-11-26 02:19:26 +01:00
station: Allow to disable roaming
This commit is contained in:
parent
734c9ad2f6
commit
967983c638
@ -1484,6 +1484,19 @@ static void station_roam_timeout_rearm(struct station *station, int seconds)
|
|||||||
station, NULL);
|
station, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool station_cannot_roam(struct station *station)
|
||||||
|
{
|
||||||
|
const struct l_settings *config = iwd_get_config();
|
||||||
|
bool disabled;
|
||||||
|
|
||||||
|
if (!l_settings_get_bool(config, "Scan", "disable_roaming_scan",
|
||||||
|
&disabled))
|
||||||
|
disabled = false;
|
||||||
|
|
||||||
|
return disabled || station->preparing_roam ||
|
||||||
|
station->state == STATION_STATE_ROAMING;
|
||||||
|
}
|
||||||
|
|
||||||
static void station_lost_beacon(struct station *station)
|
static void station_lost_beacon(struct station *station)
|
||||||
{
|
{
|
||||||
l_debug("%u", netdev_get_ifindex(station->netdev));
|
l_debug("%u", netdev_get_ifindex(station->netdev));
|
||||||
@ -1501,7 +1514,7 @@ static void station_lost_beacon(struct station *station)
|
|||||||
*/
|
*/
|
||||||
station->roam_no_orig_ap = true;
|
station->roam_no_orig_ap = true;
|
||||||
|
|
||||||
if (station->preparing_roam || station->state == STATION_STATE_ROAMING)
|
if (station_cannot_roam(station))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
station_roam_trigger_cb(NULL, station);
|
station_roam_trigger_cb(NULL, station);
|
||||||
@ -1520,7 +1533,7 @@ void station_ap_directed_roam(struct station *station,
|
|||||||
uint16_t dtimer;
|
uint16_t dtimer;
|
||||||
uint8_t valid_interval;
|
uint8_t valid_interval;
|
||||||
|
|
||||||
if (station->preparing_roam || station->state == STATION_STATE_ROAMING)
|
if (station_cannot_roam(station))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (body_len < 7)
|
if (body_len < 7)
|
||||||
@ -1597,8 +1610,7 @@ static void station_low_rssi(struct station *station)
|
|||||||
|
|
||||||
station->signal_low = true;
|
station->signal_low = true;
|
||||||
|
|
||||||
if (station->preparing_roam ||
|
if (station_cannot_roam(station))
|
||||||
station->state == STATION_STATE_ROAMING)
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* Set a 5-second initial timeout */
|
/* Set a 5-second initial timeout */
|
||||||
|
Loading…
Reference in New Issue
Block a user