mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-11-22 06:29:23 +01:00
station: add additional internal state, STATION_STATE_NETCONFIG
This is still treated as "connecting" from a DBus perspective but will allow for better handling internally for some roaming corner cases.
This commit is contained in:
parent
407a8a4441
commit
8f7443b0b3
@ -3761,6 +3761,7 @@ static void dpp_station_state_watch(enum station_state state, void *user_data)
|
|||||||
case STATION_STATE_CONNECTING:
|
case STATION_STATE_CONNECTING:
|
||||||
case STATION_STATE_CONNECTED:
|
case STATION_STATE_CONNECTED:
|
||||||
case STATION_STATE_CONNECTING_AUTO:
|
case STATION_STATE_CONNECTING_AUTO:
|
||||||
|
case STATION_STATE_NETCONFIG:
|
||||||
if (L_WARN_ON(dpp->role == DPP_CAPABILITY_CONFIGURATOR))
|
if (L_WARN_ON(dpp->role == DPP_CAPABILITY_CONFIGURATOR))
|
||||||
dpp_reset(dpp);
|
dpp_reset(dpp);
|
||||||
|
|
||||||
|
@ -1497,6 +1497,8 @@ static const char *station_state_to_string(enum station_state state)
|
|||||||
return "ft-roaming";
|
return "ft-roaming";
|
||||||
case STATION_STATE_FW_ROAMING:
|
case STATION_STATE_FW_ROAMING:
|
||||||
return "fw-roaming";
|
return "fw-roaming";
|
||||||
|
case STATION_STATE_NETCONFIG:
|
||||||
|
return "connecting (netconfig)";
|
||||||
}
|
}
|
||||||
|
|
||||||
return "invalid";
|
return "invalid";
|
||||||
@ -1635,6 +1637,7 @@ static void station_enter_state(struct station *station,
|
|||||||
station_set_drop_unicast_l2_multicast(station, false);
|
station_set_drop_unicast_l2_multicast(station, false);
|
||||||
break;
|
break;
|
||||||
case STATION_STATE_DISCONNECTING:
|
case STATION_STATE_DISCONNECTING:
|
||||||
|
case STATION_STATE_NETCONFIG:
|
||||||
break;
|
break;
|
||||||
case STATION_STATE_ROAMING:
|
case STATION_STATE_ROAMING:
|
||||||
case STATION_STATE_FT_ROAMING:
|
case STATION_STATE_FT_ROAMING:
|
||||||
@ -3342,6 +3345,7 @@ static void station_disconnect_event(struct station *station, void *event_data)
|
|||||||
case STATION_STATE_CONNECTED:
|
case STATION_STATE_CONNECTED:
|
||||||
case STATION_STATE_FT_ROAMING:
|
case STATION_STATE_FT_ROAMING:
|
||||||
case STATION_STATE_FW_ROAMING:
|
case STATION_STATE_FW_ROAMING:
|
||||||
|
case STATION_STATE_NETCONFIG:
|
||||||
station_disassociated(station);
|
station_disassociated(station);
|
||||||
return;
|
return;
|
||||||
default:
|
default:
|
||||||
@ -4272,6 +4276,7 @@ static bool station_property_get_state(struct l_dbus *dbus,
|
|||||||
break;
|
break;
|
||||||
case STATION_STATE_CONNECTING:
|
case STATION_STATE_CONNECTING:
|
||||||
case STATION_STATE_CONNECTING_AUTO:
|
case STATION_STATE_CONNECTING_AUTO:
|
||||||
|
case STATION_STATE_NETCONFIG:
|
||||||
statestr = "connecting";
|
statestr = "connecting";
|
||||||
break;
|
break;
|
||||||
case STATION_STATE_CONNECTED:
|
case STATION_STATE_CONNECTED:
|
||||||
|
@ -45,6 +45,7 @@ enum station_state {
|
|||||||
STATION_STATE_ROAMING, /* Reassociation */
|
STATION_STATE_ROAMING, /* Reassociation */
|
||||||
STATION_STATE_FT_ROAMING, /* Fast transition */
|
STATION_STATE_FT_ROAMING, /* Fast transition */
|
||||||
STATION_STATE_FW_ROAMING, /* Firmware roamed by itself */
|
STATION_STATE_FW_ROAMING, /* Firmware roamed by itself */
|
||||||
|
STATION_STATE_NETCONFIG,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum station_event {
|
enum station_event {
|
||||||
|
@ -654,6 +654,7 @@ static void wsc_check_can_connect(struct wsc_station_dbus *wsc,
|
|||||||
case STATION_STATE_CONNECTING:
|
case STATION_STATE_CONNECTING:
|
||||||
case STATION_STATE_CONNECTING_AUTO:
|
case STATION_STATE_CONNECTING_AUTO:
|
||||||
case STATION_STATE_CONNECTED:
|
case STATION_STATE_CONNECTED:
|
||||||
|
case STATION_STATE_NETCONFIG:
|
||||||
if (station_disconnect(wsc->station) < 0)
|
if (station_disconnect(wsc->station) < 0)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user