aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjoern A. Zeeb <bz@FreeBSD.org>2026-03-02 10:33:53 +0000
committerBjoern A. Zeeb <bz@FreeBSD.org>2026-03-05 13:44:00 +0000
commit9b03cc2a70e4b6354c5f5b90e4c51b850b6b1dd2 (patch)
tree2b0d59a2e07bf131795eb8b816bb507389351486
parent9f71153aec0cb455cd49af6d4ca7e4c16fd45d7a (diff)
net80211: sta: use IEEE80211_STATUS_SUCCESS instead of magic 0
Rather than using the status != 0 check use the way more descriptive status != IEEE80211_STATUS_SUCCESS definition. This makes it a lot more clear what is checked here. While here add a comment in case aof the (Re)Assoc Resp failure as we do not update state in that case but rely on a timeout which will bounce us back to State 1 (cf. 802.11-2024, Figure 11-23) which means SCAN in our case, rather than possibly moving us back to AUTH. We will likely have to revisit this when SAE hits the tree. Sponsored by: The FreeBSD Foundation MFC after: 3 days Reviewed by: adrian Differential Revision: https://reviews.freebsd.org/D55643
-rw-r--r--sys/net80211/ieee80211_sta.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/sys/net80211/ieee80211_sta.c b/sys/net80211/ieee80211_sta.c
index 19e5ffe9a367..3522b1b24742 100644
--- a/sys/net80211/ieee80211_sta.c
+++ b/sys/net80211/ieee80211_sta.c
@@ -1011,7 +1011,7 @@ sta_auth_open(struct ieee80211_node *ni, struct ieee80211_frame *wh,
vap->iv_stats.is_rx_bad_auth++;
return;
}
- if (status != 0) {
+ if (status != IEEE80211_STATUS_SUCCESS) {
IEEE80211_NOTE(vap, IEEE80211_MSG_DEBUG | IEEE80211_MSG_AUTH,
ni, "open auth failed (reason %d)", status);
vap->iv_stats.is_rx_auth_fail++;
@@ -1100,7 +1100,7 @@ sta_auth_shared(struct ieee80211_node *ni, struct ieee80211_frame *wh,
IEEE80211_FREE(ni->ni_challenge, M_80211_NODE);
ni->ni_challenge = NULL;
}
- if (status != 0) {
+ if (status != IEEE80211_STATUS_SUCCESS) {
IEEE80211_NOTE_FRAME(vap,
IEEE80211_MSG_DEBUG | IEEE80211_MSG_AUTH, wh,
"shared key auth failed (reason %d)", status);
@@ -1766,7 +1766,12 @@ sta_recv_mgmt(struct ieee80211_node *ni, struct mbuf *m0, int subtype,
frm += 2;
status = le16toh(*(uint16_t *)frm);
frm += 2;
- if (status != 0) {
+ if (status != IEEE80211_STATUS_SUCCESS) {
+ /*
+ * See ieee80211_tx_mgt_cb() for state handling. This
+ * essentially provokes a timeout bouncing us back to
+ * State 1 instead of dealing with it properly.
+ */
IEEE80211_NOTE_MAC(vap, IEEE80211_MSG_ASSOC,
wh->i_addr2, "%sassoc failed (reason %d)",
ISREASSOC(subtype) ? "re" : "", status);