From: Lorenzo Bianconi <lorenzo@kernel.org>
To: Gilly1970 <gilroyscott1970@gmail.com>
Cc: linux-wireless@vger.kernel.org, nbd@nbd.name,
ryder.lee@mediatek.com, shayne.chen@mediatek.com,
sean.wang@mediatek.com, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] wifi: mt76: mt7996: refresh the tx BA session timer on NPU devices
Date: Sat, 19 Sep 2026 19:02:00 +0200 [thread overview]
Message-ID: <aq7ACJM-X7kDx10y@lore-qca> (raw)
In-Reply-To: <20260918091659.1176350-1-gilroyscott@hotmail.com>
[-- Attachment #1: Type: text/plain, Size: 2889 bytes --]
> From: Chris Scott <gilroyscott1970@gmail.com>
>
> mt7996_mac_add_txs_skb() refreshes mac80211's tx BlockAck session timer
> only when a WED device is active. Airoha boards offload through the NPU
> instead, so on those the condition is never true and nothing keeps the
> timer alive.
>
> NPU-forwarded frames do not traverse mac80211, and the only other places
> that stamp tid_tx->last_tx are in the software tx path. When the peer
> negotiates a non-zero BlockAck timeout in the ADDBA response (Intel
> stations commonly do, most others answer 0) mac80211 arms
> tid_tx->session_timer, which then expires in the middle of an offloaded
> transfer and tears the session down with a DELBA.
>
> The session does not come back on its own either: mt7996 restarts one
> from mt7996_tx_check_aggr(), reached via mt7996_txwi_free(), and
> offloaded frames carry no driver token so they never get there.
> mac80211's ieee80211_aggr_check() fallback needs
> RATE_CTRL_CAPA_AMPDU_TRIGGER, which mt7996 does not set. The reported
> symptom is a file transfer to an Intel client dropping from line rate to
> a few MB/s and staying there, with a single ping from the router - one
> frame on the software path - restoring it instantly.
>
> Extend the check with mt76_npu_device_active(). TXS reports do arrive
> for NPU-forwarded frames, measured at roughly 24 per second on a busy
> radio, which is far more than a seconds-scale session timer needs.
>
> A second user who independently saw the same collapse, held off only by
> a once-a-second ping from the AP, ran a patched image for 100 hours
> (~175 TB of offloaded iperf3 traffic, ~4 Gbit/s) without it recurring.
>
> Link: https://forum.openwrt.org/t/quantum-fiber-w1700k-support/222776/3900
> Link: https://forum.openwrt.org/t/quantum-fiber-w1700k-support/222776/3901
> Link: https://forum.openwrt.org/t/gemtek-w1700k-community-builds/249319/458
> Fixes: 377aa17d2aed ("wifi: mt76: mt7996: Add NPU offload support to MT7996 driver")
> Signed-off-by: Chris Scott <gilroyscott1970@gmail.com>
Acked-by: Lorenzo Bianconi <lorenzo@kernel.org>
> ---
> drivers/net/wireless/mediatek/mt76/mt7996/mac.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/wireless/mediatek/mt76/mt7996/mac.c b/drivers/net/wireless/mediatek/mt76/mt7996/mac.c
> index dc1a3e9..e50db1f 100644
> --- a/drivers/net/wireless/mediatek/mt76/mt7996/mac.c
> +++ b/drivers/net/wireless/mediatek/mt76/mt7996/mac.c
> @@ -1540,7 +1540,8 @@ mt7996_mac_add_txs_skb(struct mt7996_dev *dev, struct mt76_wcid *wcid,
> }
> }
>
> - if (mtk_wed_device_active(&dev->mt76.mmio.wed) && wcid->sta) {
> + if ((mtk_wed_device_active(&dev->mt76.mmio.wed) ||
> + mt76_npu_device_active(&dev->mt76)) && wcid->sta) {
> struct ieee80211_sta *sta;
> u8 tid;
>
> --
> 2.43.0
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
prev parent reply other threads:[~2026-09-19 17:02 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-18 9:16 [PATCH] wifi: mt76: mt7996: refresh the tx BA session timer on NPU devices Gilly1970
2026-09-19 17:02 ` Lorenzo Bianconi [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=aq7ACJM-X7kDx10y@lore-qca \
--to=lorenzo@kernel.org \
--cc=gilroyscott1970@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-wireless@vger.kernel.org \
--cc=nbd@nbd.name \
--cc=ryder.lee@mediatek.com \
--cc=sean.wang@mediatek.com \
--cc=shayne.chen@mediatek.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.