From: Julius Bairaktaris <julius@bairaktaris.de>
To: Jeff Johnson <jjohnson@kernel.org>
Cc: ath11k@lists.infradead.org, linux-wireless@vger.kernel.org,
linux-kernel@vger.kernel.org,
Rameshkumar Sundaram <rameshkumar.sundaram@oss.qualcomm.com>,
Baochen Qiang <baochen.qiang@oss.qualcomm.com>,
John Crispin <john@phrozen.org>,
Karthikeyan Periyasamy <quic_periyasa@quicinc.com>,
Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>,
Rajkumar Manoharan <rmanohar@codeaurora.org>,
kbuild test robot <lkp@intel.com>
Subject: [PATCH ath-next v2 2/2] wifi: ath11k: do not fail down transitions of the station state
Date: Sat, 14 Nov 2026 23:56:43 +0100 [thread overview]
Message-ID: <20261114225643.962015-3-julius@bairaktaris.de> (raw)
In-Reply-To: <20261114225643.962015-1-julius@bairaktaris.de>
mac80211 requires sta_state to succeed for down transitions and warns
when the driver returns an error for one. ath11k returns the result of
WMI commands for ASSOC -> AUTH and NONE -> NOTEXIST, and these fail
with -ESHUTDOWN while the firmware is down. A station removed during a
firmware crash then triggers, for the disassociation:
Driver is not allowed to fail if the sta_state is transitioning down the list: -108
WARNING: CPU: 1 PID: 5952 at net/mac80211/sta_info.c:1561 ieee80211_sta_eosp+0x119c/0x1668 [mac80211]
and for the removal:
WARNING: CPU: 2 PID: 2080 at net/mac80211/sta_info.c:1652 sta_set_sinfo+0x1118/0x1144 [mac80211]
Call trace:
sta_set_sinfo+0x1118/0x1144 [mac80211] (P)
sta_info_destroy_addr_bss+0x34/0x48 [mac80211]
ieee80211_del_station+0x1c/0x54 [mac80211]
nl80211_del_station+0xf4/0x174 [cfg80211]
Two of these failures also skip host cleanup. On a non-AP vdev of a
device with vdev_start_delay, a failed early vdev stop returns from
ath11k_mac_station_remove() before the DP peer cleanup and the station
accounting, and ath11k_mac_op_sta_state() then frees the peer with its
rx_tid state still in place. For a non-WME station, a failed RTS/CTS
update returns from ath11k_station_disassoc() before the peer keys are
cleared.
Warn and carry on with the host cleanup in both, and return success for
every down transition.
Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.12-01460
Fixes: d5c65159f289 ("ath11k: driver for Qualcomm IEEE 802.11ax devices")
Signed-off-by: Julius Bairaktaris <julius@bairaktaris.de>
---
Changes in v2: continue the host cleanup after a failed early vdev stop and a
failed RTS/CTS update instead of returning from them.
drivers/net/wireless/ath/ath11k/mac.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/net/wireless/ath/ath11k/mac.c b/drivers/net/wireless/ath/ath11k/mac.c
index 9c3f577c9562..a86d1b6c0d73 100644
--- a/drivers/net/wireless/ath/ath11k/mac.c
+++ b/drivers/net/wireless/ath/ath11k/mac.c
@@ -4984,9 +4984,7 @@ static int ath11k_station_disassoc(struct ath11k *ar,
if (!sta->wme) {
arvif->num_legacy_stations--;
- ret = ath11k_recalc_rtscts_prot(arvif);
- if (ret)
- return ret;
+ ath11k_recalc_rtscts_prot(arvif);
}
ret = ath11k_clear_peer_keys(arvif, sta->addr);
@@ -9922,10 +9920,8 @@ static int ath11k_mac_station_remove(struct ath11k *ar,
arvif->is_started &&
arvif->vdev_type != WMI_VDEV_TYPE_AP) {
ret = ath11k_mac_stop_vdev_early(ar->hw, vif);
- if (ret) {
+ if (ret)
ath11k_warn(ab, "failed to do early vdev stop: %d\n", ret);
- return ret;
- }
}
ath11k_dp_peer_cleanup(ar, arvif->vdev_id, sta->addr);
@@ -10079,6 +10075,10 @@ static int ath11k_mac_op_sta_state(struct ieee80211_hw *hw,
sta->addr);
}
+ /* mac80211 does not let a down transition fail */
+ if (new_state < old_state)
+ ret = 0;
+
mutex_unlock(&ar->conf_mutex);
return ret;
}
--
2.53.0
prev parent reply other threads:[~2026-11-14 22:56 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-14 22:56 [PATCH ath-next v2 0/2] " Julius Bairaktaris
2026-11-14 22:56 ` [PATCH ath-next v2 1/2] wifi: ath11k: forget a key the firmware failed to remove Julius Bairaktaris
2026-11-14 22:56 ` Julius Bairaktaris [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261114225643.962015-3-julius@bairaktaris.de \
--to=julius@bairaktaris.de \
--cc=ath11k@lists.infradead.org \
--cc=baochen.qiang@oss.qualcomm.com \
--cc=jjohnson@kernel.org \
--cc=john@phrozen.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-wireless@vger.kernel.org \
--cc=lkp@intel.com \
--cc=quic_periyasa@quicinc.com \
--cc=quic_pradeepc@quicinc.com \
--cc=rameshkumar.sundaram@oss.qualcomm.com \
--cc=rmanohar@codeaurora.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®