Skip to content

wifi: mt76: clean up station WCID and TX queues before sta_remove - #1125

Open
astrouski-google wants to merge 1 commit into
openwrt:masterfrom
astrouski-google:fix_sta_remove_purge_tx_queues
Open

astrouski-google wants to merge 1 commit into
openwrt:masterfrom
astrouski-google:fix_sta_remove_purge_tx_queues

Conversation

@astrouski-google

Copy link
Copy Markdown

When a station is removed, __mt76_sta_remove() previously called dev->drv->sta_remove() before calling mt76_wcid_cleanup().

Because dev->drv->sta_remove() informs the hardware/firmware that the station's WCID is released, having un-transmitted packets in wcid->tx_pending/tx_offchannel or having the station still present on phy->tx_list during or after sta_remove can cause concurrent TX workers to attempt transmission on an unassigned/freed hardware WCID.

Move mt76_wcid_cleanup() before dev->drv->sta_remove() so that TX polling and scheduling are halted under phy->tx_lock and all pending TX frames are cleanly flushed via ieee80211_free_txskb() before the hardware/firmware is notified.

When a station is removed, __mt76_sta_remove() previously called
dev->drv->sta_remove() before calling mt76_wcid_cleanup().

Because dev->drv->sta_remove() informs the hardware/firmware that the
station's WCID is released, having un-transmitted packets in
wcid->tx_pending/tx_offchannel or having the station still present on
phy->tx_list during or after sta_remove can cause concurrent TX workers
to attempt transmission on an unassigned/freed hardware WCID.

Move mt76_wcid_cleanup() before dev->drv->sta_remove() so that TX
polling and scheduling are halted under phy->tx_lock and all pending
TX frames are cleanly flushed via ieee80211_free_txskb() before the
hardware/firmware is notified.

Signed-off-by: Alexander Astrovsky <astrouski@google.com>
@raenye

raenye commented Aug 24, 2026

Copy link
Copy Markdown

@nbd168 seems like a quick fix, do you still want @astrouski-google to send it to the mailing list?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants