Re: [PATCH mt76] wifi: mt76: mt7996: skip HW_RRO for sub-64 window BlockAck sessions
Tao Gong <[email protected]>
| Newsgroups | org.kernel.vger.linux-wireless |
|---|---|
| Message-ID | <CACmSHQt1ZAD6KBfkAonNAvVnA1VoCMOVb_wb2vhQaua4hRph0A@mail.gmail.com> |
Please disregard this patch. Upon further investigation, the root cause is a struct mismatch. Fix sent to: https://lore.kernel.org/linux-wireless/[email protected]/ On Sun, Aug 16, 2026 at 1:51 PM Tao <[email protected]> wrote: > > From: Tao Gong <[email protected]> > > MT7996 HW_RRO (Hardware Receive Reordering Offload) seems to be > architected around 64-frame minimum BlockAck bitmap windows. Enabling > HW_RRO on sub-64 window sessions causes it to lock up internally, > stalling hardware RX offload on subsequent associations reusing that > WCID. This was observed on the W1700k with Apple Wi-Fi clients, which > negotiate buf_size = 8 (TID 6) and buf_size = 16 (TID 1). > > Bypass HW_RRO for RX BlockAck sessions with buf_size < 64 and delegate > them to mac80211 software reordering to work around this issue. > > Signed-off-by: Tao Gong <[email protected]> > --- > mt7996/mcu.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/mt7996/mcu.c b/mt7996/mcu.c > index 176d71e8..f021c4b3 100644 > --- a/mt7996/mcu.c > +++ b/mt7996/mcu.c > @@ -1500,7 +1500,8 @@ mt7996_mcu_sta_ba(struct mt7996_dev *dev, struct mt76_vif_link *mvif, > ba->ba_en = enable << params->tid; > ba->amsdu = params->amsdu; > ba->tid = params->tid; > - ba->ba_rdd_rro = !tx && enable && mt7996_has_hwrro(dev); > + ba->ba_rdd_rro = !tx && enable && mt7996_has_hwrro(dev) && > + params->buf_size >= 64; > > return mt76_mcu_skb_send_msg(&dev->mt76, skb, > MCU_WMWA_UNI_CMD(STA_REC_UPDATE), true); > > base-commit: b2704cf5a4068b672bf47ad5bf6b4802b6770a90 > -- > 2.54.0 > -- ~Tao