From 8758cc89487b3304e4b96179a464fff3201e690d Mon Sep 17 00:00:00 2001 From: James Prestwood Date: Tue, 27 Sep 2022 16:15:47 -0700 Subject: [PATCH] station: handle ROAMING state in disconnect event This both adds proper handling to the new roaming logic and fixes a potential bug with firmware roams. The new way roaming works doesn't use a connect callback. This means that any disconnect event or call to netdev_connect_failed will result in the event handler being called, where before the connect callback would. This means we need to handle the ROAMING state in the station disconnect event so IWD properly disassociates and station goes out of ROAMING. With firmware roams netdev gets an event which transitions station into ROAMING. Then netdev issues GET_SCAN. During this time a disconnect event could come in which would end up in station_disconnect_event since there is no connect callback. This needs to be handled the same and let IWD transition out of the ROAMING state. --- src/station.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/station.c b/src/station.c index 4e07ef19..c3f3b383 100644 --- a/src/station.c +++ b/src/station.c @@ -3172,6 +3172,7 @@ static void station_disconnect_event(struct station *station, void *event_data) event_data, station); return; case STATION_STATE_CONNECTED: + case STATION_STATE_ROAMING: station_disassociated(station); return; default: