When we change attributes for a join essid, we should apply the change
immediately instead of waiting to (randomly) switch away and switch
back.

Found by martijn@

OK?


Index: net80211/ieee80211_ioctl.c
===================================================================
RCS file: /home/cvs/openbsd/src/sys/net80211/ieee80211_ioctl.c,v
retrieving revision 1.77
diff -u -p -u -p -r1.77 ieee80211_ioctl.c
--- net80211/ieee80211_ioctl.c  11 Nov 2019 18:07:21 -0000      1.77
+++ net80211/ieee80211_ioctl.c  12 Jan 2020 18:38:44 -0000
@@ -540,6 +540,17 @@ ieee80211_ioctl(struct ifnet *ifp, u_lon
                                error = ENETRESET;
                        }
                } else {
+                       /* 
+                        * We are reconfiguring the active essid,
+                        * so reset the interface.
+                        */
+                       if (ic->ic_des_esslen == join.i_len &&
+                           memcmp(join.i_nwid, ic->ic_des_essid,
+                           join.i_len) == 0) {
+                               ieee80211_deselect_ess(ic);
+                               error = ENETRESET;
+                       }
+
                        /* save nwid for auto-join */
                        if (ieee80211_add_ess(ic, &join) == 0)
                                ic->ic_flags |= IEEE80211_F_AUTO_JOIN;


-- 
If the American dream is for Americans only, it will remain our dream
and never be our destiny.
                -- René de Visme Williamson

Reply via email to