From nobody Fri Jan 9 00:49:35 2026 Received: from mail-pl1-f169.google.com (mail-pl1-f169.google.com [209.85.214.169]) (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 B5F2E1CDFD5 for ; Mon, 5 Jan 2026 00:26:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767572819; cv=none; b=oacAXwKdrkWIERTlwLaF/wdTW6rc4q4DW2pozuKo7XBLoToSTRNI3npOlnO6C5ng2AC/WutxMnZZBU9lp67S82MH/3sUbqY9g+sfsABxSk4v7lvCb2fIAgQuIpsWS+hYCiS4DplUT3uJHOKHK20wFijO8sNH+NfV5Ku02qx4qVI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767572819; c=relaxed/simple; bh=HZI8ymIlizZf5k6vodhsTUYOlmMNs3DVqGzzKTE1rMQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=VZRddDtxL/rgDovFDbjH5id1uJ0K0U/2plX2KQnlP4R5K0BQIurLgXBPquGvrK/ezR48XgerUWa8+fAZhOXUQlfm8iMWtrFShSwHLWitAjYdOPUTFOJRqisBCokiqF8+ILes9EXm574rznYNKHaqYd2AxfqyJLXPDc59EvzdNGg= 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=Hvotf3Vg; arc=none smtp.client-ip=209.85.214.169 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="Hvotf3Vg" Received: by mail-pl1-f169.google.com with SMTP id d9443c01a7336-2a0b4320665so209994775ad.1 for ; Sun, 04 Jan 2026 16:26:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767572817; x=1768177617; 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=9ZnhjhyPQPCObFdQCf0DoFdJ2rk+AgcVn/BEbBcwfpQ=; b=Hvotf3Vgv7fqZOl+wTmsUAKHzOm95uY4wf+lsMCVGD27Ut4didIHgaDD70lIqGq1np iXmn4YXamN6K+tOcSVDJfMMSd2x6TVsN3r599s8z+00H07ZekM7DNF9T11NsKjVrEfZS rGJGxH9Ag9noJfR+cDi0XOhUN0zPEUEc3gVi/iwt+46ygjyK1WH/LoM7UdkD2WBpZTgn QAGGiG6Ch+eZr2HFMtAdwKePiq9h82OgRmYw8jpbdC/gdVn/ffS/d3eNoom1W+1X9z6h r+ULX1XF9jfkhAymN/72q7lysALtbOjusV0Uy3M3XTpXVZT5Jcv1jUPaUd3brQZONU6K kZvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767572817; x=1768177617; 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=9ZnhjhyPQPCObFdQCf0DoFdJ2rk+AgcVn/BEbBcwfpQ=; b=ee9oW96W8S2oHOIRy5c+EyyzHUkMzomfUap8bDcJ6ZhIoKA6bhHPJe/JRCtBiOineD 5wdmJ/URdSGXk+lb3sOQ1r1iEzlNAuOyrzqPNT2qIgeyOx+LiRwe/xs8oVSEEgwIcC+S gHOEODbewo9V46AG5QhcVD8D5eGlMiPiWOv9QJQ6R8p8K1uWNGsI//ibtH0/Qk5kDAtr GwjHwae9YNiOKk+4BuCoG/WZAXePH3Z5s2Rh5zWI0p1b4wrS33XDqe/9SHIBJFPxUaJm nnpfp5kOc58qUpaMvDWMtBFFjDtTWA4EpaZk7FW6nsX0fUiNdXDckRNofol1jKCo0m+/ hQ9g== X-Forwarded-Encrypted: i=1; AJvYcCX3yQoPqHmC5WqVPr2DgszughLEc23FGYPA6diF9gItNByML8tjfQBxf3+XNMA6KZzjWwT/O+kSL3GE1jI=@vger.kernel.org X-Gm-Message-State: AOJu0YxanHDudbIdAcUyItRsMV3o3/ZI1lJqT6lqnOLh10kk6VzeHDcF vo3KpRxBAkaK1IPgum8XlMlJ9F4PCo7+fYCHdJwhWMcNlFIi3fkv3NX3/pndiwtm X-Gm-Gg: AY/fxX59k6s0tFlWLGEsX8+mtUDFZI1xNkc4sgq+JfX5LiiN7cYogx7p1KGOgpFvQhH KS6KCV45+cfdEgejQbe2mSyflGywbtn0BKJKVmewct+J2tix/b9Rnjw/xWd30gzjBO+KaKHfdb/ KxUuWDE9vh+jgvmZNGtJXoTZuER9KumXD6m24KwfPEqm5kGH/RJyYX64Pc3qWdFXZMOyFSYjA8B R0Eb5reb/DhFfA999yjA4M9CAnORz9FHyRuNxJym7uMTR384NL21JL+16Iv5FdSvefzPm14P9xB zM7/SFXeLeWxXpLuogCMetRwlOVvwZd51+KJdWHs+wtchQiXlSLFawbzHdworjJdUsZR5Y3jtX9 nTyWDQ2lvTL/j29rTEZtBZKsF1rdeCnZ+b6rDC84pJPbEhp7KzVrR2bd89MuMa5NgWLwPynZbLB VTDxB7j5Md3vhEdS+FxV8zYHnSePgXrjUf8KmHAXTFbWlouUSIrE+PY35bL3JciQw= X-Google-Smtp-Source: AGHT+IGN/67FaErtupyToYrJxzBUIYkl4OUOnnfqPdZ+eJIg4lHjFzD7t9gZZl1LJK6SGTTybmCpRQ== X-Received: by 2002:a05:7022:3708:b0:11b:9386:a37d with SMTP id a92af1059eb24-1217230eaa7mr24870293c88.44.1767572816910; Sun, 04 Jan 2026 16:26:56 -0800 (PST) Received: from zubuntu.bengal-mercat.ts.net ([2001:5a8:60d:bc9:9ebf:dff:fe00:f8f2]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-121724de268sm133378109c88.8.2026.01.04.16.26.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 04 Jan 2026 16:26:56 -0800 (PST) From: Zac Bowling To: zbowling@gmail.com 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 Subject: [PATCH 06/17] wifi: mt76: mt7925: add error handling for AMPDU MCU commands Date: Sun, 4 Jan 2026 16:26:27 -0800 Message-ID: <20260105002638.668723-7-zbowling@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260105002638.668723-1-zbowling@gmail.com> References: <20260102200524.290779-1-zbowling@gmail.com> <20260105002638.668723-1-zbowling@gmail.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" 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 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