From nobody Mon Feb 9 11:04:53 2026 Received: from mail-dl1-f52.google.com (mail-dl1-f52.google.com [74.125.82.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 23293328630 for ; Fri, 16 Jan 2026 01:05:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768525560; cv=none; b=Gkp/Eyw6lQNRf8rrPYDo/7XwBO9vZSf9xarp9X5RbQjReVbiRtxJ8ZWTunNtgaxkXkRmIw8o9/Qz+Bwy0fQP3Q45mu2aDeHtDDFHP0IE8VFIUq0UYKIhe/XDD9uXcqMNXdHmrQ+QjifCjScKycIJTRX1trEeBAYvuOsfH3MBxFM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768525560; c=relaxed/simple; bh=fEiRyuMj05TeICA1JoBhIIz3Ws39gKPSeCLw1wGtAFw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=EdwKnQWxWUnIIBLbcgQFO88UvQ0iY1Up9DTkYpWO3M/5fmunJR4hpF4CpK5pE9T8Q/UkYtZ1afw7kKIsipnTDw1rZBOtnSJHqOSwgWKlaohPLe2o1WMsSH0GmGSBI3lr0ZkwhrG1OTsq0/5j9GY2PdIFLrGBVroBt9OX9NyAzus= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=zacbowling.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=II8OOugC; arc=none smtp.client-ip=74.125.82.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=zacbowling.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="II8OOugC" Received: by mail-dl1-f52.google.com with SMTP id a92af1059eb24-1233b953bebso3824267c88.1 for ; Thu, 15 Jan 2026 17:05:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768525554; x=1769130354; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=mhC8L1hQ8dg4kLrkzny6o4mFLtnYcnvkf4rrn/bndiU=; b=II8OOugCRrkOTX2aQdengwtEYX0Azu2IDT/ao1Awg5f8Uvun7XFXg9Fxo17oCGcFh6 M7phToDnzgy+qdUv6DAuoBnhetWcZXN95xZwa0lCChAt7647Rh+NsufIrNcC7z47Bugd +rS9JDnaGubzoQc3i/qNP+ce2lVdWVmiN+mx8rU/deuPs7sd0BSPD4xr1Dt11B/stNRe +RB+03FuNkJRO25qNovLlgpa/spoNpRKaMNoG67mqnS3gSHHAwbY0upzGCf2ogFz6Ymh Vd1NDRYuz4HXJIqfoiGhNG3DIRJv8MoR6EIZrpx+7RxcKsZwZq3exDqJ/ZU8U8FAGaQd r2bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768525554; x=1769130354; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=mhC8L1hQ8dg4kLrkzny6o4mFLtnYcnvkf4rrn/bndiU=; b=Bam2Db0P/mSg5IFor3XkmCHLexq06QzzubNHWQQKTJviolh4PDWaWreQbXJOHfHnjJ 9etE3XkHi8Od9+bDMzRe/9S5o4LoNeYzmcsZG2gMyrJX6iXsz28axIfvBQz38X5Sw+fy fKG+8gPQ2KWsv9df9bDYGoQV5WQIjt9+233Yx+j6NQAA9WZTfP5SH73/GptuKgkSrn8t dnqu0v4cle/Z0ah1dHR8TcgwGzjru7RlKuJIp4xRAjIgLRp8tat3dwWfCgITPIS1V7pv pQR8TqDIjEj732KY1v2o1NfmNAk2glaoyLybZ241lplxABAj0Tm9b8zgP4UgqEPRPQ3U dZQA== X-Forwarded-Encrypted: i=1; AJvYcCXDta1CJtOvA1qnGd9lT56iwx74XjbVW0lbTYzS9XhhMAQoywKxQdXaF04SIwAvRasTreq4iTuEPXLbMMc=@vger.kernel.org X-Gm-Message-State: AOJu0YxEbqWGPIzEXDx0fWUdqFngwMXFsq6TFTGB0qE8X51IBqyYp6Qr +zDw9MQ96MIUwe9M+SKB34v8PLmvaU4GgNYrxv+mlCpDRvvu5iQJT9uz X-Gm-Gg: AY/fxX4KqdGEEh6QMQ/DsjCJpbPv1cBjXgL9N6K1M4qTHwgRKzaBrxj9Uw/YEos3Dj/ QzJeISv0vwd7thIZAPeUwHJmzIXb06TbrjxyoxdHS7lRejX81LWG3kmVFffuvuE+6cQEI6hcZby PSBNguMMpU39oZGY+F9x8LniIs8D4RjVUYuqaFNCuYRbl/h0rSmB8XQwlNQabwsPFJmKBumeP4e VTV0ld3aWUQlMtGAEqKTrZ2nK5J9MLCJBLYf9M3zMGyGlPWq3J46bI5iWlv5tLrzx3FvQePIWGG jGMXHEPPgON0GQtH+zisMjXWAU6oLECNI56wALYzWfI7icQwkHJpslAY+KZ5velC406wfG/thMQ G5y4fJcOIhdPFAW4dpebVGa4ffMGYto/gGRpYQB0ZnCrJYoY4F+qh18u8743MhuQ8fAxZiLfKVY H0ACNEKMWcJr4noLAJXItulyrKxZQSC9+DqvZrRjtUzbntiYwV9tCV1NfhmPoi+g== X-Received: by 2002:a05:7022:48e:b0:123:3461:99be with SMTP id a92af1059eb24-1244a6fe904mr2196015c88.21.1768525554364; Thu, 15 Jan 2026 17:05:54 -0800 (PST) Received: from zcache.home.zacbowling.com ([2001:5a8:60d:bc9:f1d2:502c:a6ff:5556]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2b6b367cbc9sm1019884eec.32.2026.01.15.17.05.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 17:05:53 -0800 (PST) Sender: Zac Bowling From: Zac To: sean.wang@kernel.org Cc: deren.wu@mediatek.com, kvalo@kernel.org, linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-wireless@vger.kernel.org, lorenzo@kernel.org, nbd@nbd.name, linux@frame.work, ryder.lee@mediatek.com, sean.wang@mediatek.com, Zac , Zac Bowling Subject: [PATCH v4 21/21] wifi: mt76: mt7925: fix BA session teardown during beacon loss Date: Thu, 15 Jan 2026 17:05:19 -0800 Message-ID: <20260116010519.37001-22-zac@zacbowling.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260116010519.37001-1-zac@zacbowling.com> References: <20260116010519.37001-1-zac@zacbowling.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The ieee80211_stop_tx_ba_cb_irqsafe() callback was conditionally called only when the MCU command succeeded. However, during beacon connection loss, the MCU command may fail because the AP is no longer reachable. If the callback is not called, mac80211's BA session state machine gets stuck in an intermediate state. When mac80211 later tries to tear down all BA sessions during disconnection, it hits a WARN in __ieee80211_stop_tx_ba_session() due to the inconsistent state. Fix by making the callback unconditional, matching the behavior of mt7921 and mt7996 drivers. The MCU command failure is acceptable during disconnection - what matters is that mac80211 is notified to complete the session teardown. Reported-by: Sean Wang Signed-off-by: Zac Bowling --- drivers/net/wireless/mediatek/mt76/mt7925/main.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/main.c b/drivers/net= /wireless/mediatek/mt76/mt7925/main.c index 81373e479a..cc7ef2c170 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/main.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/main.c @@ -1323,9 +1323,13 @@ mt7925_ampdu_action(struct ieee80211_hw *hw, struct = ieee80211_vif *vif, case IEEE80211_AMPDU_TX_STOP_CONT: mtxq->aggr =3D false; clear_bit(tid, &msta->deflink.wcid.ampdu_state); - ret =3D mt7925_mcu_uni_tx_ba(dev, params, false); - if (!ret) - ieee80211_stop_tx_ba_cb_irqsafe(vif, sta->addr, tid); + /* MCU command may fail during beacon loss, but callback must + * always be called to complete the BA session teardown in + * mac80211. Otherwise the state machine gets stuck and triggers + * WARN in __ieee80211_stop_tx_ba_session(). + */ + mt7925_mcu_uni_tx_ba(dev, params, false); + ieee80211_stop_tx_ba_cb_irqsafe(vif, sta->addr, tid); break; } mt792x_mutex_release(dev); --=20 2.52.0