On Mon, Jan 13, 2020 at 10:38:35PM +0100, Peter Hessler wrote:
> On 2020 Jan 12 (Sun) at 21:39:19 +0100 (+0100), Peter Hessler wrote:
> :When we change attributes for a join essid, we should apply the change
> :immediately instead of waiting to (randomly) switch away and switch
> :back.
>
> And if we are connected to an AP, remove the node from the cache so we
> can properly reconnect.
>
> OK?
>
>
> Index: net80211/ieee80211_ioctl.c
> ===================================================================
> RCS file: /home/cvs/openbsd/src/sys/net80211/ieee80211_ioctl.c,v
> retrieving revision 1.78
> diff -u -p -u -p -r1.78 ieee80211_ioctl.c
> --- net80211/ieee80211_ioctl.c 13 Jan 2020 09:57:25 -0000 1.78
> +++ net80211/ieee80211_ioctl.c 13 Jan 2020 16:16:18 -0000
> @@ -543,7 +543,13 @@ ieee80211_ioctl(struct ifnet *ifp, u_lon
> if (ic->ic_des_esslen == join.i_len &&
> memcmp(join.i_nwid, ic->ic_des_essid,
> join.i_len) == 0) {
> + struct ieee80211_node *ni;
> +
> ieee80211_deselect_ess(ic);
> + ni = ieee80211_find_node(ic,
> + ic->ic_bss->ni_bssid);
> + if (ni != NULL)
> + ieee80211_release_node(ic, ni);
This should call ieee80211_free_node() instead. We should also make
sure this code runs in station opmode (IEEE80211_M_STA) only.
> error = ENETRESET;
> }
> /* save nwid for auto-join */
>