From nobody Tue Feb 10 19:14:58 2026 Received: from mail-dy1-f177.google.com (mail-dy1-f177.google.com [74.125.82.177]) (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 D0A00314A8A for ; Fri, 16 Jan 2026 01:05:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768525536; cv=none; b=Nbkc7kqhvMJkwtIcRfNYx4mBgvM0YX27IkcrkyK1PvBYsBYZCu2qbvr7BcBMsLyan7U5qhqgXokEam2EJ+n6diEBnMI1bct39EKOUT2DCUwabaNC2QtGqBqgxWPDt9xjsrwhtJxgLMKN5mOM2agouJyhtHF7HmEUUJtmkoznqbI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768525536; c=relaxed/simple; bh=s3ZwCB3JvlyU+vipl3q6KmMqgje/HoIfqvCD0zlfKcg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=fEcGv0ctX6WrVHbm7TaXPyqENVk6hZiDoyiHB/imjvgKIouvqtg+g8mvRns2e5Gy+VaKmDbMG09WgTFCl0vAzQbC8TLt9cHQ7kJhpC23YhRV6EGuJ7KrG25vCVzLgnEWNLp07o7HEj0vG7/9oJKWANep1C1UD2ryWzhEMoOVt1g= 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=RNspB2JW; arc=none smtp.client-ip=74.125.82.177 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="RNspB2JW" Received: by mail-dy1-f177.google.com with SMTP id 5a478bee46e88-2b1981ca515so1731858eec.1 for ; Thu, 15 Jan 2026 17:05:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768525533; x=1769130333; 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=ayqgJZ8LSe73VJtWRWF0cloWppdfmdK1Vbp7fAPizSU=; b=RNspB2JW3/dmFRSvviJwqD69xBtrbtmDmignOxG9dIullct54/pZXDIhQFWwhoBvni YdHAEMTWIsO83yKmb4IP+lIQR903iPP3Bhp4s3WeTbrs+SA24rk0NE7xF+GEELq3oJD2 6RLu89NFGcI4gt9j475HEVB1iNfagRm4hH/vdq4m6D0g54go5LXrukcKgcuusUPbyZG9 vOESys0paEBy7Qs2xRwsIhFZjQAhcwosuYdtbdVpdakFTme7lcletzydJFt/bVfTICOF +5XQMjvwARzA+S5+NsLX5F8JErNgjKwQu0WhftX3D3+9oc+tIq30LpyVZu+EqsO8m0RF 2gig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768525533; x=1769130333; 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=ayqgJZ8LSe73VJtWRWF0cloWppdfmdK1Vbp7fAPizSU=; b=VtfJ+XZKQCustYUhiWMnSbuL44O9NEKiTNH4NUcrBAmEzvkL75Acn9jBMcVSgY5cWp 2xfa850YIT04eaYZnAFxoW7ElgbTG2T7X3TLwzmaeaTKtYPQEi8ULJGT0ZFiWHb7+Vm9 Z8dDYblHr9SXLvGp5DXMXmwaDE0EDhsfhffCvxmBxHZgtW7kc+gMOAat/JTO6nSuWHtm 65mnU2gSk7XEqJgBikRxTesxjkashA/4u3lfQq6Xre8B1oX4P3KMl03t+Rr/lO9S+rYq ev/221Bn/Z09iG7ENxbMk1Mg1xhcx+A1WGAk+8+nTubrdeC1uiUBzlTvNOLhexzTagcB 1uTA== X-Forwarded-Encrypted: i=1; AJvYcCUxv7n/9opMD9lPvIBTDfy0pMhICdMLhxuJDGNaF41qDbgL27Tlu2O1IscxZImtUgyx4dAXpU8KcwttSlo=@vger.kernel.org X-Gm-Message-State: AOJu0Yzi5y9aRHYn5w/XIlyVj/Bv1nqeA9ngizOjxZWik3R0TeKQ1xRH c4XDzbX29/N5TLkxP0nD+Hq1Ciuet61DIykLY/Z3Rme+yB4eMmKfWM+4 X-Gm-Gg: AY/fxX4jDtO2rPvLoO5ZGFIvsIZwLQkSaTYnye3ofAn3HKQnEyY9kpx6yOAVrp9hkfE sZByIziYmOYSJ8v/CX1dIxND2s1EAN/4IegsZBXN239IMdBK/eDZHlX/uAVQ5kP51ystztCS/uS H+EWlJv6GFsbyLGxcVm6jy18elIUF0Y9LO7chZq3X9Ews4IlrXdPSaB563XwAPSA3rtSEV4VLWO Ez2dEFcEnDGTej+eJr10yW3eouFUkpUYO5QtuzCphIo1G/P+/qySZXAbI6GDGGVFdo1BsATRm4m lINOxUNFeybUoPJTkv89X7BNLfmKQMPkqu/tq+GDpE/qVLoMW9Gs1EBL2HzwzbWAM4vMnvxkV0T IvA25e1Fi5VFHZaa+7orrfvYbGuOc7tWDDABPvnZE7r05oQGG4OCJWi2g0XVxt3uBZaLwuRfjL4 vqkmeB/L5DuddLVg0fE+c8hjpNMY8jvzbAHsPjjvw/kRXcUjDkkWD09urgK9cASQ== X-Received: by 2002:a05:7300:73cb:b0:2ae:614a:3307 with SMTP id 5a478bee46e88-2b6b410c29bmr1459357eec.42.1768525532104; Thu, 15 Jan 2026 17:05:32 -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.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 17:05:31 -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 Bowling , Zac Bowling Subject: [PATCH v4 06/21] wifi: mt76: mt7925: add error handling for AMPDU MCU commands Date: Thu, 15 Jan 2026 17:05:04 -0800 Message-ID: <20260116010519.37001-7-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" 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. Found through code review - pattern of ignored return values throughout AMPDU handling. Reported-by: Zac Bowling Fixes: c948b5da6bbe ("wifi: mt76: mt7925: add Mediatek Wi-Fi7 driver for mt= 7925 chips") 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 7d3322461b..d966e5ab50 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.52.0