3
0
mirror of https://git.kernel.org/pub/scm/network/wireless/iwd.git synced 2024-11-22 23:09:34 +01:00

station: handle netconfig after roaming for FW roams

This was not taken into account for FW roams and would result in the
station state being set to connected regardless of netconfig's result.
This commit is contained in:
James Prestwood 2024-01-03 10:46:31 -08:00 committed by Denis Kenzior
parent a2fff11823
commit 593fad5260

View File

@ -3406,6 +3406,16 @@ static void station_beacon_lost(struct station *station)
station_roam_timeout_rearm(station, LOSS_ROAM_RATE_LIMIT); station_roam_timeout_rearm(station, LOSS_ROAM_RATE_LIMIT);
} }
static void station_event_roaming(struct station *station)
{
if (station->netconfig && station->state != STATION_STATE_CONNECTED) {
netconfig_reset(station->netconfig);
station->netconfig_after_roam = true;
}
station_enter_state(station, STATION_STATE_FW_ROAMING);
}
static void station_netdev_event(struct netdev *netdev, enum netdev_event event, static void station_netdev_event(struct netdev *netdev, enum netdev_event event,
void *event_data, void *user_data) void *event_data, void *user_data)
{ {
@ -3433,7 +3443,7 @@ static void station_netdev_event(struct netdev *netdev, enum netdev_event event,
station_signal_agent_notify(station); station_signal_agent_notify(station);
break; break;
case NETDEV_EVENT_ROAMING: case NETDEV_EVENT_ROAMING:
station_enter_state(station, STATION_STATE_FW_ROAMING); station_event_roaming(station);
break; break;
case NETDEV_EVENT_ROAMED: case NETDEV_EVENT_ROAMED:
station_event_roamed(station, (struct scan_bss *) event_data); station_event_roamed(station, (struct scan_bss *) event_data);