From nobody Tue Feb 10 19:47:50 2026 Received: from mail-dl1-f44.google.com (mail-dl1-f44.google.com [74.125.82.44]) (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 6914C3A7F66 for ; Tue, 20 Jan 2026 20:11:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768939871; cv=none; b=mZ7T2FSS9USVmoxMamFlj9MLZkdCC6l0qzkrCzdwPIB4RaZ3lXWcwqzeFvIb0mg1I+0VzE1KWwTt6jkiOA5eTDYl+Z9Icm3BLy/jpICy0Pc5Ug8NI/4sUJxR3r5uGH0RpSIJ+rI1n4/XX0tut+pSyB0oV7XQGkmHajevuH/6Svc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768939871; c=relaxed/simple; bh=dw+v98bzs7AEOBOdIaouQqk8BtpEtp3Mz4XYoc0A9n0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=MktUExlUIFZ2GjZvCQzd0RENl1Arn9JvhSVwstyOlFd/e8VB2IRf5eOMI4CXUZ+F1bd9dlnXmKHIm9CgIictHnTWKJcXlQvCzX3kAKBbh03CWzlWvEgKmu1in22bzF1ml73v4qhVpQ9QzHlZL+WJQ3zOz0zGXDGstZM+Ug2WINc= 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=TRHDFooC; arc=none smtp.client-ip=74.125.82.44 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="TRHDFooC" Received: by mail-dl1-f44.google.com with SMTP id a92af1059eb24-12332910300so9238792c88.0 for ; Tue, 20 Jan 2026 12:11:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768939866; x=1769544666; 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=PiWhrqDfLoUsbF9Zs7wDHxbtT3qNnG6/I07ERDX6sCI=; b=TRHDFooCNPfb9zVI/xjHaP/Uyp0P/dWhtxVX8TsybXzug3wMxdMVwnT2QI2f3tYjQQ ZmUGuvmUpX09BgmUXnikaCJT8jS/lu1fMN5vPy0/4p9lPIxcdPdjTkgEWFsnbinv1bNe dxWg1ePpubUqLoqFFhyicGrKS2C1sAv7kIEYW8axbePsZh66DWlbbraexyMzF7f5b247 jTTjrlba1kdmApDTZPBB65o00NFy5xRsUdQZPDQcX+E8P9pV5Cx3wzalFhTAE9mDPlND UgRYb1TdJyik8unhZbI7/vZp624bKYo10gRlxaxCOO6kD29FDmwUxS5GLg9ElT4Cw4sP sjgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768939866; x=1769544666; 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=PiWhrqDfLoUsbF9Zs7wDHxbtT3qNnG6/I07ERDX6sCI=; b=JhT/naWk0c2bHoDeskj1YJbGCkL2foVXRCrs7AUNOvOlM56dcFJPpJXzlRr514yudA FW7XdYMFyNhRDx6ameGpAQjDoI2SQScFS2DCASZGGddRymdAN6O2FZYh6p/6IgN2Er/E oM5e9PIDy1lhTE860mGFj9ShS5ZWl09vA/WaPtk0HjgLAQTsDS5w5eoLdSEyoVQye+li 1K+5LQK7MVOPr7ME1ehPgQkKRx1iZsapcGrowoxJi5kXxXVFvUE9MkSwKgGgOsC3gG8G 8G5Z33STwRCMjlBXTByE0Etoj9DvfGERCRf/THMDfPT0oWl1RDKo0VKI+MI5RRvxLX7N AU6g== X-Forwarded-Encrypted: i=1; AJvYcCW1WqqtP3Fi18JwD0LwwZGf+nwGhhs5dx1uJIGTXsZktJOaulzZuP3fZ4wvz8JztYFXVKJuS9sBKs1pbZ8=@vger.kernel.org X-Gm-Message-State: AOJu0YxufhekDff99FB1gDgNpJBfMs1ptR+t8vEOu3u39S4dzeVQeH4Y +ozGJ3ZHpgmCLULarDZQEtM3xVQdx7SlvCulVanVfPL6Fmp5twJ8S4rE X-Gm-Gg: AY/fxX6B44GJZ0QqKhd7QmismGCD3ZdKEOd0BsWjxAxJ5iYDd72qfCazPRNy/CfnOGH sKnEDqBnoY128MOq5bCOAPyFigH1XsSemjXuWK4bnVwqTDKTqAoZfZYIzmpi1Y6p9QTonyhMGLC +18BE9y+XO/v9QQRSXoHN0gO0uak4BExvyilpjY7/DpSkn54ezZ4xg1yIFguLERXlOC98RM2Z5l TuOLgh5W+gnOQpNeVpnWwbOn6Uv4VdyNQILhH5C8MHuwsC5+9bmgisEIwXlAFOsYM4SV8I2vQNu Gh1CkSNeEINgHdr9XOBqfB8aUsTsKx3ayd4EQtkfJbTTWto1wwS5f6niORZUoF3/uXjDYonn68P 12jtD1JA0dsq7xRgR/wvXTRl1bMQxMMf+g/72sJechY0ihbNH0Y1JLWDLCN03XFViPjvftSopfQ zjdNQOzfSBBJ+zFbmJX7dTYfc3NIxWp2TZNSEH027114OVq5NCX4XeElANcWhiwSkjAokJxeNN X-Received: by 2002:a05:7022:2514:b0:122:2f4:b247 with SMTP id a92af1059eb24-1244a75ea33mr10938645c88.28.1768939866099; Tue, 20 Jan 2026 12:11:06 -0800 (PST) Received: from zcache.home.zacbowling.com ([2001:5a8:60d:bc9:4a3c:9f7c:8037:90c1]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-1244ad7201fsm21982990c88.7.2026.01.20.12.11.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Jan 2026 12:11:04 -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, linux@frame.work, lorenzo@kernel.org, nbd@nbd.name, ryder.lee@mediatek.com, sean.wang@mediatek.com, zac@zacbowling.com, zbowling@gmail.com Subject: [PATCH 08/13] wifi: mt76: mt7925: add MCU command error handling Date: Tue, 20 Jan 2026 12:10:38 -0800 Message-ID: <20260120201043.38225-9-zac@zacbowling.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260120201043.38225-1-zac@zacbowling.com> References: <20260120201043.38225-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 Add proper error handling for MCU command return values that were previously being ignored. Without proper error handling, failures in MCU communication can leave the driver in an inconsistent state. Functions updated: 1. main.c: mt7925_ampdu_action() - BA session setup - Check mt7925_mcu_uni_tx_ba() return value - Check mt7925_mcu_uni_rx_ba() return value - Return error to mac80211 on failure 2. main.c: mt7925_mac_link_sta_add() - Station addition - Check mt7925_mcu_add_bss_info() return value - Propagate errors during station setup 3. main.c: mt7925_set_key() - Key installation - Check mt7925_mcu_add_bss_info() return value when setting BSS info before key installation - Prevent key setup on communication failure These changes ensure that MCU communication failures are properly detected and reported to mac80211, allowing proper error recovery instead of leaving the driver in an undefined state. Fixes: c948b5da6bbe ("wifi: mt76: mt7925: add Mediatek Wi-Fi7 driver for mt= 7925 device") Signed-off-by: Zac Bowling --- .../net/wireless/mediatek/mt76/mt7925/main.c | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/main.c b/drivers/net= /wireless/mediatek/mt76/mt7925/main.c index f1884944f77d..59a5b22a6ed6 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/main.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/main.c @@ -641,8 +641,10 @@ static int mt7925_set_link_key(struct ieee80211_hw *hw= , enum set_key_cmd cmd, struct mt792x_phy *phy =3D mt792x_hw_phy(hw); =20 mconf->mt76.cipher =3D mt7925_mcu_get_cipher(key->cipher); - mt7925_mcu_add_bss_info(phy, mconf->mt76.ctx, link_conf, - link_sta, true); + err =3D mt7925_mcu_add_bss_info(phy, mconf->mt76.ctx, link_conf, + link_sta, true); + if (err) + goto out; } =20 if (cmd =3D=3D SET_KEY) @@ -908,11 +910,14 @@ static int mt7925_mac_link_sta_add(struct mt76_dev *m= dev, /* should update bss info before STA add */ if (vif->type =3D=3D NL80211_IFTYPE_STATION && !link_sta->sta->tdls) { if (ieee80211_vif_is_mld(vif)) - mt7925_mcu_add_bss_info(&dev->phy, mconf->mt76.ctx, - link_conf, link_sta, link_sta !=3D mlink->pri_link); + ret =3D mt7925_mcu_add_bss_info(&dev->phy, mconf->mt76.ctx, + link_conf, link_sta, + link_sta !=3D mlink->pri_link); else - mt7925_mcu_add_bss_info(&dev->phy, mconf->mt76.ctx, - link_conf, link_sta, false); + ret =3D mt7925_mcu_add_bss_info(&dev->phy, mconf->mt76.ctx, + link_conf, link_sta, false); + if (ret) + return ret; } =20 if (ieee80211_vif_is_mld(vif) && @@ -1291,22 +1296,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); @@ -1315,8 +1320,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