From nobody Sat Feb 7 21:24:53 2026 Received: from mail-pf1-f173.google.com (mail-pf1-f173.google.com [209.85.210.173]) (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 A978C15B998 for ; Thu, 1 Jan 2026 06:25:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767248729; cv=none; b=qNg34uNS4D0GnUVuPPJVZF2y8mJp4Il4JNWjZVg9WQ+TWC4JgdUZqWyri67RspneHSntTAyLSS9JUWa6CXjpzqcw3AtOMlOkTOcocuZ7Nd/OuL8OLq1aCvNcYVoU2m5RPs0hik99jpfdIv8ir82HRWzHMEx0QGMDTDHigqMpJlE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767248729; c=relaxed/simple; bh=QSZI7jO5BapLRoqhUDo8JZG2X/Z+7TwscOVAO6700lk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=AvTV+1WKvMJpRjpsdwJBSMZkxd2z4YVIMIF/an92pk9fRBbCjdON5E4s3VLwCqjZ7mPFTNCV5YwVmYu5IN3nW8CAGFhP8KxDxJS1Wq8vo9cuUSbTCAU4O4eQw47qD6CgO+HO4aXFHvNRt7mwufdbNRvt1MNRb6iCXb1WlFNOapM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=jGBOrCJz; arc=none smtp.client-ip=209.85.210.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.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="jGBOrCJz" Received: by mail-pf1-f173.google.com with SMTP id d2e1a72fcca58-7aa9be9f03aso9298048b3a.2 for ; Wed, 31 Dec 2025 22:25:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767248727; x=1767853527; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=3fQX3XjClGYHMJYLD0S4wnHpCEAj+Lkoo18KPH1N6VQ=; b=jGBOrCJzj4qUxYZQ9xnX1zygV2wsEBK3y4kBlRTSUjXxWgGTrf1Ry/UwHrTw8etA3N 6fKWqTau3KAbVRNj8OXaiR/Y3zZo4JFN/tVzusQsNfhDuyVo1UQCp8W5px/Qv+n9XnDl nZpNwQK+jKHGBGZbOhGRXmGQy8SX/qzRNEIsNZm9ANgle0K6fTQKdNtPVJZziaWREBfH fGwPwyIaLy0WlLgVYbxzLbs4K3U+tP75DMC2qOCy9k/ZlU4kltomuwvmjotmjR643y3e 9YVb+4ZKVyjJTQfKxYsnse9FslB+q5N00zaaFi0AZnlDRzlfByDjFGYJB5zm4za8rGg5 FBZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767248727; x=1767853527; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=3fQX3XjClGYHMJYLD0S4wnHpCEAj+Lkoo18KPH1N6VQ=; b=Nq9qNbbOMMpnmuy724btowwOny8VTkTINIeet+1klBaSo/nLTm+RA/VjTrEaMRQRuU jNczjnxge62gfTMrW6vWyocXoNsYlt3/rjM/TJs14Wko1vfZpRTMeCZrJRijRpUyobN5 UjD8YoT4QanHS6QoHl+8g93FKax/stdAFYGpJim+ChnbTyAFDCyOBgigxMt9lYcqxllr YtSl0PZYMyf2xjw+YGccLqBxLvY9eNqz/xtYi8Re5M3yU1p6J1tsk5dqQ9wjpjLmiEC5 mm/7w+0Emv0DiCFD4XNwxEh8ZUe+9o9UDheaSnyQgnhPdQQjojI+KgBu4FBNqaKKB0g+ 4u8g== X-Forwarded-Encrypted: i=1; AJvYcCVB6D8EMF5PZbZoGvcZRSuM/ADLFjIYMNDG5mAW2QHPnV6dxcxyzl+OAC/QvLc3IjcpikHzJkRKc8fw0E4=@vger.kernel.org X-Gm-Message-State: AOJu0Yw9I2y4pSug8tngQTtLw2pb4hUHmNgLf+hqrVw1WEpBJxYEulTF QPVeDKdY2WUfOik1Zb5DonZcdSl1tZ3dGjlfk5yDcNcdS9Fhp+2kMf1k X-Gm-Gg: AY/fxX6BQa9TutKkVNoilOJ5U/EIHJd71S99ZWmkq065W7ftrXUdDZbGwQPmGUxyZ2k gCitnWS3CT5IMQcBxZM334MB0mf7cOdlt5EqELYamSCzurNFYK5nUsdMy8GUTauE0NBnUAwhnp+ Ms5t9sRl1faPV9MIqGcPvuAH5sIMnZV/RFPDcvef/4ogf3hrGyXCll8IaUJgbDUOQiiisABJxV9 dsUfPzlXEe/+blDm1FEXM2hbOhrp8eDcN8c9jHuoOY5phSuG2Dv/4mt1soRDatP82vl4zct66hp bkYmUDt1xN9CalN91Kamkfm/LgLc8EeiZd7KlQ+vmy61YJJmwCwNKAHeG/faFKVpAS38xE3POBB AEj6Qqodew14et7MncXj2F7kVhklTU50X+ZGB9KN3ybNY/tI766Hl8ilYJJa43GFK5tEEx3Zc1z qAEtpDa23SUDwLBx2rdOsbe+MUqzvTmntnKO1WJUubgpm2Hy8Z4ZgeBKrZlFgcvA== X-Google-Smtp-Source: AGHT+IHNHRrjwP/J1xNE9ra/NusfYhUBwbj+0R4XP+dQskrbGT/ub95rsw9PxwoTEkG2747s582cyQ== X-Received: by 2002:a05:7022:62a0:b0:11a:342e:8a98 with SMTP id a92af1059eb24-12172136c4emr41995730c88.0.1767248726773; Wed, 31 Dec 2025 22:25:26 -0800 (PST) Received: from zubuntu.home.zacbowling.com ([2001:5a8:60d:bc9:9ebf:dff:fe00:f8f2]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-121724cfdd0sm144361662c88.4.2025.12.31.22.25.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 31 Dec 2025 22:25:26 -0800 (PST) From: Zac Bowling To: linux-wireless@vger.kernel.org Cc: linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org, kvalo@kernel.org, lorenzo@kernel.org, nbd@nbd.name, sean.wang@mediatek.com, deren.wu@mediatek.com, ryder.lee@mediatek.com Subject: [PATCH] wifi: mt76: mt7925: add error handling for AMPDU MCU commands Date: Wed, 31 Dec 2025 22:25:23 -0800 Message-ID: <20260101062525.186192-1-zbowling@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: References: 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 Check return values of mt7925_mcu_uni_rx_ba() and mt7925_mcu_uni_tx_ba() in mt7925_ampdu_action() and propagate errors to the caller. Previously, failures in these MCU commands were silently ignored, which could leave block aggregation in an inconsistent state between the driver and firmware. For IEEE80211_AMPDU_TX_STOP_CONT, only call the completion callback ieee80211_stop_tx_ba_cb_irqsafe() if the MCU command succeeded, to avoid signaling completion when the firmware operation failed. Reported-by: Zac Bowling Signed-off-by: Zac Bowling --- drivers/net/wireless/mediatek/mt76/mt7925/main.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/main.c b/drivers/net= /wireless/mediatek/mt76/mt7925/main.c index 7d3322461bcf..d966e5ab50ff 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/main.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/main.c @@ -1271,22 +1271,22 @@ mt7925_ampdu_action(struct ieee80211_hw *hw, struct= ieee80211_vif *vif, case IEEE80211_AMPDU_RX_START: mt76_rx_aggr_start(&dev->mt76, &msta->deflink.wcid, tid, ssn, params->buf_size); - mt7925_mcu_uni_rx_ba(dev, params, true); + ret =3D mt7925_mcu_uni_rx_ba(dev, params, true); break; case IEEE80211_AMPDU_RX_STOP: mt76_rx_aggr_stop(&dev->mt76, &msta->deflink.wcid, tid); - mt7925_mcu_uni_rx_ba(dev, params, false); + ret =3D mt7925_mcu_uni_rx_ba(dev, params, false); break; case IEEE80211_AMPDU_TX_OPERATIONAL: mtxq->aggr =3D true; mtxq->send_bar =3D false; - mt7925_mcu_uni_tx_ba(dev, params, true); + ret =3D mt7925_mcu_uni_tx_ba(dev, params, true); break; case IEEE80211_AMPDU_TX_STOP_FLUSH: case IEEE80211_AMPDU_TX_STOP_FLUSH_CONT: mtxq->aggr =3D false; clear_bit(tid, &msta->deflink.wcid.ampdu_state); - mt7925_mcu_uni_tx_ba(dev, params, false); + ret =3D mt7925_mcu_uni_tx_ba(dev, params, false); break; case IEEE80211_AMPDU_TX_START: set_bit(tid, &msta->deflink.wcid.ampdu_state); @@ -1295,8 +1295,9 @@ mt7925_ampdu_action(struct ieee80211_hw *hw, struct i= eee80211_vif *vif, case IEEE80211_AMPDU_TX_STOP_CONT: mtxq->aggr =3D false; clear_bit(tid, &msta->deflink.wcid.ampdu_state); - mt7925_mcu_uni_tx_ba(dev, params, false); - ieee80211_stop_tx_ba_cb_irqsafe(vif, sta->addr, tid); + ret =3D mt7925_mcu_uni_tx_ba(dev, params, false); + if (!ret) + ieee80211_stop_tx_ba_cb_irqsafe(vif, sta->addr, tid); break; } mt792x_mutex_release(dev); --=20 2.51.0