* [PATCH ath-current v2] wifi: ath11k: reset ar->num_station on hardware start
@ 2026-07-30 14:03 Nicolas Escande
2026-07-31 5:41 ` Baochen Qiang
2026-07-31 5:42 ` Baochen Qiang
0 siblings, 2 replies; 4+ messages in thread
From: Nicolas Escande @ 2026-07-30 14:03 UTC (permalink / raw)
To: ath11k; +Cc: linux-wireless
When (multiple) hw restart occurs, we end up in a situation where we
cannot accept new stations / mesh peers. This seems to be the
'num_stations' in 'struct ath11k' that did not get reset properly in
this case. In ath11k_mac_op_start(), it was indeed the only accounting var
that did not get reset so let's clear it too.
This avaoids problems like those:
[1248828.088023] WARNING: CPU: 0 PID: 12281 at net/mac80211/util.c:1682 ieee80211_reconfig_stations+0x98/0xc0
[1248828.088029] Modules linked in: ath11k_pci XXX [last unloaded: ath11k_pci]
[1248828.088053] CPU: 0 UID: 0 PID: 12281 Comm: kworker/0:0 Tainted: G W XXX
[1248828.088058] Tainted: [W]=WARN
[1248828.088059] Hardware name: XXX (DT)
[1248828.088060] Workqueue: events_freezable ieee80211_restart_work
[1248828.088064] pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[1248828.088068] pc : ieee80211_reconfig_stations+0x98/0xc0
[1248828.088070] lr : ieee80211_reconfig_stations+0x94/0xc0
[1248828.088073] sp : ffffff800025bc10
[1248828.088074] x29: ffffff800025bc10 x28: 0000000000000001 x27: ffffff8027b19640
[1248828.088078] x26: ffffff802a5619c8 x25: ffffff8027b199f0 x24: ffffff8027b19880
[1248828.088082] x23: ffffff802a560e40 x22: ffffff8027b18880 x21: ffffff802a560800
[1248828.088087] x20: 0000000000000001 x19: ffffff8027c71000 x18: ffffffffffffffff
[1248828.088091] x17: 128c0801a9c37469 x16: 766e692d32464545 x15: ffffffffffffffff
[1248828.088095] x14: 000000000000001f x13: 00000000000000b1 x12: 0000000000000001
[1248828.088099] x11: ffffffc081061518 x10: ffffff800025baf0 x9 : ffffffc0808097f8
[1248828.088103] x8 : 00000000ffffffd0 x7 : 0000000000000000 x6 : 000000000000003f
[1248828.088107] x5 : 0000000000000000 x4 : 0000000000000000 x3 : ffffff8011ef2e80
[1248828.088110] x2 : 0000000000000000 x1 : ffffff8011ef2e80 x0 : 00000000ffffff97
[1248828.088115] Call trace:
[1248828.088116] ieee80211_reconfig_stations+0x98/0xc0 (P)
[1248828.088119] ieee80211_reconfig+0x774/0x1438
[1248828.088123] ieee80211_restart_work+0x10c/0x178
[1248828.088127] process_one_work+0x178/0x3c0
[1248828.088130] worker_thread+0x280/0x440
[1248828.088133] kthread+0xe0/0xf8
[1248828.088137] ret_from_fork+0x10/0x20
[1248828.088141] ---[ end trace 0000000000000000 ]---
[1248828.090658] mesh1: HW problem - can not stop rx aggregation for 72:fc:8f:a8:f1:ed tid 0
[1248828.090667] mesh1: HW problem - can not stop rx aggregation for 72:fc:8f:a8:f1:ed tid 3
[1248828.090670] mesh1: HW problem - can not stop rx aggregation for 72:fc:8f:a8:f1:ed tid 4
[1248828.090689] wlan2: HW problem - can not stop rx aggregation for 78:64:c0:26:8e:69 tid 0
[1248828.090694] wlan2: HW problem - can not stop rx aggregation for 78:64:c0:26:8e:69 tid 1
[1248828.090697] wlan2: HW problem - can not stop rx aggregation for 78:64:c0:26:8e:69 tid 5
[1248828.090700] wlan2: HW problem - can not stop rx aggregation for 78:64:c0:26:8e:69 tid 6
[1248828.090704] wlan2: HW problem - can not stop rx aggregation for be:3b:3d:84:3a:00 tid 0
[1248828.090707] wlan2: HW problem - can not stop rx aggregation for be:3b:3d:84:3a:00 tid 1
[1248828.090710] wlan2: HW problem - can not stop rx aggregation for be:3b:3d:84:3a:00 tid 6
[1248836.686596] ath11k_warn: 39 callbacks suppressed
[1248836.686604] ath11k_pci 0000:04:00.0: refusing to associate station: too many connected already (128)
[1248836.686609] ath11k_pci 0000:04:00.0: Failed to add station: e8:51:9e:d6:93:22 for VDEV: 1
[1248941.120126] ath11k_pci 0000:04:00.0: failed to flush sta transmit queue, data pkts pending 2
[1248941.120186] ath11k_pci 0000:04:00.0: failed to clear all peer keys for vdev 2: -2
[1248941.120190] ath11k_pci 0000:04:00.0: Failed to disassociate station: 92:14:23:65:57:fc
[1248941.120196] ath11k_pci 0000:04:00.0: failed to lookup peer 92:14:23:65:57:fc on vdev 2
[1248941.120200] ath11k_pci 0000:04:00.0: failed to find peer vdev_id 2 addr 92:14:23:65:57:fc in delete
[1248941.120204] ath11k_pci 0000:04:00.0: Failed to delete peer: 92:14:23:65:57:fc for VDEV: 2
[1248941.120207] ath11k_pci 0000:04:00.0: Failed to remove station: 92:14:23:65:57:fc for VDEV: 2
[1248941.121319] ath11k_pci 0000:04:00.0: refusing to associate station: too many connected already (128)
[1248941.121326] ath11k_pci 0000:04:00.0: Failed to add station: 92:14:23:65:57:fc for VDEV: 2
[1248941.123036] ath11k_pci 0000:04:00.0: refusing to associate station: too many connected already (128)
Tested-on: QCN9074 PCI WLAN.HK.2.9.0.1-01977-QCAHKSWPL_SILICONZ-1
Fixes: d5c65159f289 ("ath11k: driver for Qualcomm IEEE 802.11ax devices")
Signed-off-by: Nicolas Escande <nico.escande@gmail.com>
---
v2:
- rebased on ath/master
- no code change
---
drivers/net/wireless/ath/ath11k/mac.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/wireless/ath/ath11k/mac.c b/drivers/net/wireless/ath/ath11k/mac.c
index 2d55cdc4d165..0baa46df1fb9 100644
--- a/drivers/net/wireless/ath/ath11k/mac.c
+++ b/drivers/net/wireless/ath/ath11k/mac.c
@@ -6699,6 +6699,7 @@ static int ath11k_mac_op_start(struct ieee80211_hw *hw)
ar->num_started_vdevs = 0;
ar->num_created_vdevs = 0;
ar->num_peers = 0;
+ ar->num_stations = 0;
ar->allocated_vdev_map = 0;
/* Configure monitor status ring with default rx_filter to get rx status
--
2.55.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH ath-current v2] wifi: ath11k: reset ar->num_station on hardware start
2026-07-30 14:03 [PATCH ath-current v2] wifi: ath11k: reset ar->num_station on hardware start Nicolas Escande
@ 2026-07-31 5:41 ` Baochen Qiang
2026-07-31 14:25 ` Nicolas Escande
2026-07-31 5:42 ` Baochen Qiang
1 sibling, 1 reply; 4+ messages in thread
From: Baochen Qiang @ 2026-07-31 5:41 UTC (permalink / raw)
To: Nicolas Escande, ath11k; +Cc: linux-wireless
s/ar->num_station/ar->num_stations/ in subject
On 7/30/2026 10:03 PM, Nicolas Escande wrote:
> When (multiple) hw restart occurs, we end up in a situation where we
by hw restart do you mean firmware crash and then recovers ?
> cannot accept new stations / mesh peers. This seems to be the
> 'num_stations' in 'struct ath11k' that did not get reset properly in
> this case. In ath11k_mac_op_start(), it was indeed the only accounting var
> that did not get reset so let's clear it too.
the root cause description looks confused to me: if it is firmware crash and recover, we
should run the path ath11k_core_reset() -> ath11k_core_post_reconfigure_recovery() ->
ath11k_core_halt() -> ath11k_mac_peer_cleanup_all() and in that function ar->num_stations
is cleared.
>
> This avaoids problems like those:
s/avaoids/avoids/
>
> [1248828.088023] WARNING: CPU: 0 PID: 12281 at net/mac80211/util.c:1682 ieee80211_reconfig_stations+0x98/0xc0
> [1248828.088029] Modules linked in: ath11k_pci XXX [last unloaded: ath11k_pci]
> [1248828.088053] CPU: 0 UID: 0 PID: 12281 Comm: kworker/0:0 Tainted: G W XXX
> [1248828.088058] Tainted: [W]=WARN
> [1248828.088059] Hardware name: XXX (DT)
> [1248828.088060] Workqueue: events_freezable ieee80211_restart_work
> [1248828.088064] pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
> [1248828.088068] pc : ieee80211_reconfig_stations+0x98/0xc0
> [1248828.088070] lr : ieee80211_reconfig_stations+0x94/0xc0
> [1248828.088073] sp : ffffff800025bc10
> [1248828.088074] x29: ffffff800025bc10 x28: 0000000000000001 x27: ffffff8027b19640
> [1248828.088078] x26: ffffff802a5619c8 x25: ffffff8027b199f0 x24: ffffff8027b19880
> [1248828.088082] x23: ffffff802a560e40 x22: ffffff8027b18880 x21: ffffff802a560800
> [1248828.088087] x20: 0000000000000001 x19: ffffff8027c71000 x18: ffffffffffffffff
> [1248828.088091] x17: 128c0801a9c37469 x16: 766e692d32464545 x15: ffffffffffffffff
> [1248828.088095] x14: 000000000000001f x13: 00000000000000b1 x12: 0000000000000001
> [1248828.088099] x11: ffffffc081061518 x10: ffffff800025baf0 x9 : ffffffc0808097f8
> [1248828.088103] x8 : 00000000ffffffd0 x7 : 0000000000000000 x6 : 000000000000003f
> [1248828.088107] x5 : 0000000000000000 x4 : 0000000000000000 x3 : ffffff8011ef2e80
> [1248828.088110] x2 : 0000000000000000 x1 : ffffff8011ef2e80 x0 : 00000000ffffff97
> [1248828.088115] Call trace:
> [1248828.088116] ieee80211_reconfig_stations+0x98/0xc0 (P)
> [1248828.088119] ieee80211_reconfig+0x774/0x1438
> [1248828.088123] ieee80211_restart_work+0x10c/0x178
> [1248828.088127] process_one_work+0x178/0x3c0
> [1248828.088130] worker_thread+0x280/0x440
> [1248828.088133] kthread+0xe0/0xf8
> [1248828.088137] ret_from_fork+0x10/0x20
> [1248828.088141] ---[ end trace 0000000000000000 ]---
> [1248828.090658] mesh1: HW problem - can not stop rx aggregation for 72:fc:8f:a8:f1:ed tid 0
> [1248828.090667] mesh1: HW problem - can not stop rx aggregation for 72:fc:8f:a8:f1:ed tid 3
> [1248828.090670] mesh1: HW problem - can not stop rx aggregation for 72:fc:8f:a8:f1:ed tid 4
> [1248828.090689] wlan2: HW problem - can not stop rx aggregation for 78:64:c0:26:8e:69 tid 0
> [1248828.090694] wlan2: HW problem - can not stop rx aggregation for 78:64:c0:26:8e:69 tid 1
> [1248828.090697] wlan2: HW problem - can not stop rx aggregation for 78:64:c0:26:8e:69 tid 5
> [1248828.090700] wlan2: HW problem - can not stop rx aggregation for 78:64:c0:26:8e:69 tid 6
> [1248828.090704] wlan2: HW problem - can not stop rx aggregation for be:3b:3d:84:3a:00 tid 0
> [1248828.090707] wlan2: HW problem - can not stop rx aggregation for be:3b:3d:84:3a:00 tid 1
> [1248828.090710] wlan2: HW problem - can not stop rx aggregation for be:3b:3d:84:3a:00 tid 6
> [1248836.686596] ath11k_warn: 39 callbacks suppressed
> [1248836.686604] ath11k_pci 0000:04:00.0: refusing to associate station: too many connected already (128)
> [1248836.686609] ath11k_pci 0000:04:00.0: Failed to add station: e8:51:9e:d6:93:22 for VDEV: 1
> [1248941.120126] ath11k_pci 0000:04:00.0: failed to flush sta transmit queue, data pkts pending 2
> [1248941.120186] ath11k_pci 0000:04:00.0: failed to clear all peer keys for vdev 2: -2
> [1248941.120190] ath11k_pci 0000:04:00.0: Failed to disassociate station: 92:14:23:65:57:fc
> [1248941.120196] ath11k_pci 0000:04:00.0: failed to lookup peer 92:14:23:65:57:fc on vdev 2
> [1248941.120200] ath11k_pci 0000:04:00.0: failed to find peer vdev_id 2 addr 92:14:23:65:57:fc in delete
> [1248941.120204] ath11k_pci 0000:04:00.0: Failed to delete peer: 92:14:23:65:57:fc for VDEV: 2
> [1248941.120207] ath11k_pci 0000:04:00.0: Failed to remove station: 92:14:23:65:57:fc for VDEV: 2
> [1248941.121319] ath11k_pci 0000:04:00.0: refusing to associate station: too many connected already (128)
> [1248941.121326] ath11k_pci 0000:04:00.0: Failed to add station: 92:14:23:65:57:fc for VDEV: 2
> [1248941.123036] ath11k_pci 0000:04:00.0: refusing to associate station: too many connected already (128)
>
> Tested-on: QCN9074 PCI WLAN.HK.2.9.0.1-01977-QCAHKSWPL_SILICONZ-1
>
> Fixes: d5c65159f289 ("ath11k: driver for Qualcomm IEEE 802.11ax devices")
> Signed-off-by: Nicolas Escande <nico.escande@gmail.com>
> ---
> v2:
> - rebased on ath/master
> - no code change
> ---
> drivers/net/wireless/ath/ath11k/mac.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/net/wireless/ath/ath11k/mac.c b/drivers/net/wireless/ath/ath11k/mac.c
> index 2d55cdc4d165..0baa46df1fb9 100644
> --- a/drivers/net/wireless/ath/ath11k/mac.c
> +++ b/drivers/net/wireless/ath/ath11k/mac.c
> @@ -6699,6 +6699,7 @@ static int ath11k_mac_op_start(struct ieee80211_hw *hw)
> ar->num_started_vdevs = 0;
> ar->num_created_vdevs = 0;
> ar->num_peers = 0;
> + ar->num_stations = 0;
> ar->allocated_vdev_map = 0;
>
> /* Configure monitor status ring with default rx_filter to get rx status
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH ath-current v2] wifi: ath11k: reset ar->num_station on hardware start
2026-07-30 14:03 [PATCH ath-current v2] wifi: ath11k: reset ar->num_station on hardware start Nicolas Escande
2026-07-31 5:41 ` Baochen Qiang
@ 2026-07-31 5:42 ` Baochen Qiang
1 sibling, 0 replies; 4+ messages in thread
From: Baochen Qiang @ 2026-07-31 5:42 UTC (permalink / raw)
To: Nicolas Escande, ath11k; +Cc: linux-wireless
On 7/30/2026 10:03 PM, Nicolas Escande wrote:
> Tested-on: QCN9074 PCI WLAN.HK.2.9.0.1-01977-QCAHKSWPL_SILICONZ-1
hardware version missing betweeen target and bus type
QCN9074 hw1.0 PCI
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH ath-current v2] wifi: ath11k: reset ar->num_station on hardware start
2026-07-31 5:41 ` Baochen Qiang
@ 2026-07-31 14:25 ` Nicolas Escande
0 siblings, 0 replies; 4+ messages in thread
From: Nicolas Escande @ 2026-07-31 14:25 UTC (permalink / raw)
To: Baochen Qiang, Nicolas Escande, ath11k; +Cc: linux-wireless
On Fri Jul 31, 2026 at 7:41 AM CEST, Baochen Qiang wrote:
> s/ar->num_station/ar->num_stations/ in subject
>
>
> On 7/30/2026 10:03 PM, Nicolas Escande wrote:
>> When (multiple) hw restart occurs, we end up in a situation where we
>
> by hw restart do you mean firmware crash and then recovers ?
Yes firmware crash indeed.
>
>> cannot accept new stations / mesh peers. This seems to be the
>> 'num_stations' in 'struct ath11k' that did not get reset properly in
>> this case. In ath11k_mac_op_start(), it was indeed the only accounting var
>> that did not get reset so let's clear it too.
>
> the root cause description looks confused to me: if it is firmware crash and recover, we
> should run the path ath11k_core_reset() -> ath11k_core_post_reconfigure_recovery() ->
> ath11k_core_halt() -> ath11k_mac_peer_cleanup_all() and in that function ar->num_stations
> is cleared.
So about how I came up to this fix:
When I first saw it I though I would be able to reproduce it using the
debugfs simulate firmware crash feature, but I was not. Then from the logs
I had at the time I noticed that there were multiple crashes back to back,
sometimes while still recovering from the first one. I think thats why I was
not able to properly simulate it and find the race condition leading to this.
In the meantime I wondered why we hit the num_station checks and not the
others like num_peers for example, and found that it was missing in
ath11k_mac_op_start(). So I made this change as I do not see how it hurts,
and I've never hit the issue again.
>>
>> This avaoids problems like those:
>
> s/avaoids/avoids/
>
[...]
>>
>> Tested-on: QCN9074 PCI WLAN.HK.2.9.0.1-01977-QCAHKSWPL_SILICONZ-1
>>
>> Fixes: d5c65159f289 ("ath11k: driver for Qualcomm IEEE 802.11ax devices")
>> Signed-off-by: Nicolas Escande <nico.escande@gmail.com>
[...]
I'll spin a new revision with all the feedback taken into account at some point
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-07-31 14:25 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-30 14:03 [PATCH ath-current v2] wifi: ath11k: reset ar->num_station on hardware start Nicolas Escande
2026-07-31 5:41 ` Baochen Qiang
2026-07-31 14:25 ` Nicolas Escande
2026-07-31 5:42 ` Baochen Qiang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox