bluhm@ and I have noticed that our wifi connection breaks when the access point switches channel. The fix is to update the node list node's channel with the received channel in STA mode. I've been using the fix for some days now without breakage.
ok? Index: ieee80211_input.c =================================================================== RCS file: /cvs/src/sys/net80211/ieee80211_input.c,v retrieving revision 1.209 diff -u -p -r1.209 ieee80211_input.c --- ieee80211_input.c 12 Sep 2019 12:55:07 -0000 1.209 +++ ieee80211_input.c 22 Sep 2019 08:54:22 -0000 @@ -1380,8 +1380,9 @@ ieee80211_save_ie(const u_int8_t *frm, u */ void ieee80211_recv_probe_resp(struct ieee80211com *ic, struct mbuf *m, - struct ieee80211_node *ni, struct ieee80211_rxinfo *rxi, int isprobe) + struct ieee80211_node *rni, struct ieee80211_rxinfo *rxi, int isprobe) { + struct ieee80211_node *ni; const struct ieee80211_frame *wh; const u_int8_t *frm, *efrm; const u_int8_t *tstamp, *ssid, *rates, *xrates, *edcaie, *wmmie; @@ -1553,6 +1554,10 @@ ieee80211_recv_probe_resp(struct ieee802 /* we know that ssid[1] <= IEEE80211_NWID_LEN */ memcpy(ni->ni_essid, &ssid[2], ssid[1]); } + + /* Update channel in case AP has switched */ + if (ic->ic_opmode == IEEE80211_M_STA) + ni->ni_chan = rni->ni_chan; return; }