AUTH->AUTH state transitions happen if the access point uses band-steering.
This was originally implemented to fix interop with some Aruba APs, and
was probably broken by my recent CVS commit XeKkqPoaUCklmgtC ("prevent
attempts to transition towards the same state").
ok mpi@
-/* $OpenBSD: if_iwm.c,v 1.372 2021/10/06 13:35:55 stsp Exp $ */
+/* $OpenBSD: if_iwm.c,v 1.373 2021/10/06 13:36:47 stsp Exp $ */
/*
* Copyright (c) 2014, 2016 genua gmbh <info@genua.de>
/*
* Prevent attemps to transition towards the same state, unless
* we are scanning in which case a SCAN -> SCAN transition
- * triggers another scan iteration.
+ * triggers another scan iteration. And AUTH -> AUTH is needed
+ * to support band-steering.
*/
- if (sc->ns_nstate == nstate && nstate != IEEE80211_S_SCAN)
+ if (sc->ns_nstate == nstate && nstate != IEEE80211_S_SCAN &&
+ nstate != IEEE80211_S_AUTH)
return 0;
if (ic->ic_state == IEEE80211_S_RUN) {
-/* $OpenBSD: if_iwx.c,v 1.114 2021/10/02 07:48:20 stsp Exp $ */
+/* $OpenBSD: if_iwx.c,v 1.115 2021/10/06 13:36:47 stsp Exp $ */
/*
* Copyright (c) 2014, 2016 genua gmbh <info@genua.de>
/*
* Prevent attemps to transition towards the same state, unless
* we are scanning in which case a SCAN -> SCAN transition
- * triggers another scan iteration.
+ * triggers another scan iteration. And AUTH -> AUTH is needed
+ * to support band-steering.
*/
- if (sc->ns_nstate == nstate && nstate != IEEE80211_S_SCAN)
+ if (sc->ns_nstate == nstate && nstate != IEEE80211_S_SCAN &&
+ nstate != IEEE80211_S_AUTH)
return 0;
if (ic->ic_state == IEEE80211_S_RUN) {