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.
This commit is contained in:
James Prestwood 2022-09-27 16:15:47 -07:00 committed by Denis Kenzior
parent 5181d20986
commit 8758cc8948
1 changed files with 1 additions and 0 deletions

View File

@ -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: