From nobody Mon Feb 9 14:15:02 2026 Received: from mail-dy1-f172.google.com (mail-dy1-f172.google.com [74.125.82.172]) (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 5CEAC38B9AF for ; Tue, 20 Jan 2026 06:29:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768890553; cv=none; b=RCWN2gYxD/b8QufRN4RmH4zQQkSExgupvZOuMCO89ycybcV4nQ4W4zrKlCz5GhjKjIubomiAxViHJY1zNQ1RK4AkzXgBn0nJc7zR2WpGJB+T871pFqVfrvXsyyTJWBF/a0WrMtj95ppPGxMk12/X7kO5CxoFmmEv/xtWdKYSAcw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768890553; c=relaxed/simple; bh=Msmn00R/whpSKvYB7cyEtq9bHDCq1FKIinq7ESwlb0c=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=NzvY97Ud8eKBDE0DRswg0MguohlAQdum2xhrRmtt5NWnDw9J8fhJ6P9JbmOYuPWE18xrVqSV1agwMMWpQ+VKEOqOC1wLxVx0f2p5D+XPXzT8KsylhZ974S1DrZrBVtWVjmJ3apQ4ERimGEGHgcp7ptQNNnrwePebTFnb03CgD7E= 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=bdZYWY0M; arc=none smtp.client-ip=74.125.82.172 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="bdZYWY0M" Received: by mail-dy1-f172.google.com with SMTP id 5a478bee46e88-2b6f5a9cecaso1031390eec.0 for ; Mon, 19 Jan 2026 22:29:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768890550; x=1769495350; 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=jhF6S0lUNMQ6iu2San+RRE4uR0QE14549Ly/QDJAGJY=; b=bdZYWY0MQnX439Gsqr9mhNTZ95TFGUu5Rj+o0spj358gQxqF5M2PAmVgltVjB1OEKO GVZyVABRVe5U1mm6ESeZDQjySwpkv4j9tN4R6eX26Jry2H6GMOCRb+6uIWT+yb4+e4R+ PC8VsneaCHNeMErrw1o01BC0w64poyWNsZgbnwOnmHG4IlTV3dGwvrUgFmpW8dBgvdQR PlX2XGagVLTMMveJGD5RoGbBCLB6KzV32W0iKOg+vndK13BGXcfCXpfIxBBrdyKrAygl tBvbwJ6kjjMxSSIh5OBy6fp3/KG7aQIeflW/ws5OI1+Ri5j3ZeSmWCVVQLC0IXZlAUfM qokQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768890550; x=1769495350; 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=jhF6S0lUNMQ6iu2San+RRE4uR0QE14549Ly/QDJAGJY=; b=qmaBsovzFI2xIJ8m6l3xVUG53EB+X/hQFeOs4NBmpO33clFXHJyCccM43MmAYtuRys nKcecFSst89n49ZtJ8QgyyG5Juv245i/qz2lwYbUM7IhGDPpWxOLdvPju0sZAx7XaF96 fWvxg6HJMcypblmqNbGf9JTSgFrQH4TC6BnDaLRlH0TLchU89nfgLSLSHBHSn83zhURt gCcIHeWKKY87ZtcMYXdiiRq02i6X+ceEd440pG4s1jy4pNQJQv5KBBHvWO6fyAvIpeYg JIilCfrmbSICVankJfBDrkU0CBhjI9LhJfm/vlbejD5AYDgKOfknD0tJtmpt2yfuajg0 9I9g== X-Forwarded-Encrypted: i=1; AJvYcCUIauHMiOIWGFbSGjpXAZqRz5PutG2MYL58IsKWJhdurb7zn+CsglnKANSyYRsZsa9M7aa4eko0KX8vgtA=@vger.kernel.org X-Gm-Message-State: AOJu0Yz/oZ6mn/U47ldjT1TxYKGiS1Un24tg1Drk0zJIoZY77/kQN/aP +9Fl1qBwZRHD26R0O9h+nRxOiIwy/kt22jT64zZpN7aTUfPALXjBC+JNIuUoQCYg X-Gm-Gg: AZuq6aIKd7LIrxriQU3nTOeDBFEraoZcrWrRaTIrhPFPioa65oZRZtAWMUYvNUHKrsT HB3wVTEnRAE+2G25vkB4EBKFTTit7XtZQcVJlHiIiXMlWbVBlOIzur1FXV/NrBLaZw/ynBmsSCK u9H+FLzwWl24ahRIaHtpA2+hYXZoNkxyE5IB1/aHIUTCGLlIA/6rjdjPD0otJBrwRAYm/TxK1lu AXeMRhzLV8IYsLV/w+d9hSYGV61XRTFex3GluJCcYWlQ/OBLkLk11ND+a1ZGTSQaYLIw8IKtZuW x0jjH4jqaHT23nAwb92w02Ml7M492vfEUn0nty+fGqnL6kNhryV0q/VCZ6Yx/ZiTTLyJLfP87iO IAXNCp40E43+Y5qkxPW2EtMalK4dSGvkO0AUxgWPrgs0GR5YdaiuMP8n5IfBLAfMN+KB0FwadS6 9iwkxY0s1bWwQHFKg5qUtLcOFf8A3i5DsLP6uA6qYTOGbOn1dNahLqofrpAgw/gee+HoSBgZk= X-Received: by 2002:a05:7300:3206:b0:2b4:7c92:3f7c with SMTP id 5a478bee46e88-2b6fd623ccdmr573615eec.6.1768890550416; Mon, 19 Jan 2026 22:29:10 -0800 (PST) Received: from zcache.home.zacbowling.com ([2001:5a8:60d:bc9:f31e:1cb:296a:cc2a]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2b6b3502c91sm15706784eec.9.2026.01.19.22.29.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 Jan 2026 22:29:10 -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, ryder.lee@mediatek.com, sean.wang@mediatek.com, stable@vger.kernel.org, linux@frame.work, zbowling@gmail.com, Zac Bowling Subject: [PATCH 10/11] wifi: mt76: mt7925: fix BA session teardown during beacon loss Date: Mon, 19 Jan 2026 22:28:53 -0800 Message-ID: <20260120062854.126501-11-zac@zacbowling.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260120062854.126501-1-zac@zacbowling.com> References: <20260120062854.126501-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" From: Zac Bowling 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 81373e479abd..cc7ef2c17032 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