From nobody Mon Feb 9 07:54:48 2026 Received: from mail-dy1-f171.google.com (mail-dy1-f171.google.com [74.125.82.171]) (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 84E5637F8A2 for ; Tue, 20 Jan 2026 06:29:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768890550; cv=none; b=Xmv2g/m4dIol1gjL0vwuzr25BohadPT0Z1mxdfd8bC9pBk22riDsMWhwl4EcJfXSc8r9oABp4xKnOmsgyTSFMgzoxz6YX70eOvb92emj9B0Xjr1lJNlM/EnWb9sREaSSerIOkhWteRYa10FHYBNL+AaH+9thOqt2oRatMGn4NFE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768890550; c=relaxed/simple; bh=56oCFiJ1Fh61sRezmynDWOGrNpWTbudvtUqxK0WIYv8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=GuUzEno1ubz5qH/tN7ppn4nlYn5nCHbzua+k8MMq3ujiPbkSAxCvMCp9y0O+SKqhu1ojmSGDVFh8g6QQtBFwJT2wQQFa/lNuimmdWDe+FZy7UNVvTgckXz/rZhsdAcvimxdr05uDD92DLiLlVoSY883OpCeQ2NtIN8nfUdC7k5s= 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=CPJv5e58; arc=none smtp.client-ip=74.125.82.171 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="CPJv5e58" Received: by mail-dy1-f171.google.com with SMTP id 5a478bee46e88-2b6bf6adc65so4982887eec.0 for ; Mon, 19 Jan 2026 22:29:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768890547; x=1769495347; 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=VGov7+UsnnkD8BK1HtQcfIxHNxhYSq3s1xKOOfEdd3U=; b=CPJv5e58By9ox8KUwU+eCWb5ka9LmnEqfyDiXnMnSv5mUqSldNXxYMt1VxMJX9HpWu rl9w3oQ5/40PpPCg9GzjtwSwDS+YNHUkAmFkJz4Dr4t5nWzzcWrS07NW5XZrmrBhnssj 4xAwPE3x+JDSOaKURfqVROY9mCQFEe9lbAvuwWhdcMNx98Y4MZ6x+heQUgJINwagv1wj GyStPgW2HKSJJYhKS6kT1UV7ZHwCZB3JMxOmDhHO33hoV268/jdxC4I5SlIgPl9hT/ka D0qJbgNyedvgwHVBRFPjmnHRDxDm0MGwdSkwLoY1+i2Tc+JTnWDHz58S/MKgrawnQL+Z A1jw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768890547; x=1769495347; 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=VGov7+UsnnkD8BK1HtQcfIxHNxhYSq3s1xKOOfEdd3U=; b=kC/lRf+bQs73VAa9aDfwFWPFH3FAoCfK0agt77De1f3CkKurLOnw5TKOS8AwvX8J+w REeCThJgGJSSZDnp0i+cjWKsNij6AS0GOqeQ/epCwgiUOEutB3W6OpOkOwEiHYTwAKAY uhmWj4iN9K5wQA2fDn1sNiGd6pltRxTdAQg7F5V3vLkZQsDr4ml8WXZ2qjgofzyPNfnj sga2sO09JeeWVbpyoq1a/E81ML2pUnXtteZ8EWfVKLjH7AaZFPz8mxD5DkxMmQ7oxBmW rIc4x97aZBABzKpLgLVAZlbm6t7x0GATgPBwqmgdurSBUfEeMbnOyElVOSwSF5rU9Wqi usfg== X-Forwarded-Encrypted: i=1; AJvYcCVozqzZQLv2O2QvOZnI2DT6U57YanSywYj0T5ULreNBzxidNczpSdFelk/DeszePbl2nUvEcaQLq8ptHPs=@vger.kernel.org X-Gm-Message-State: AOJu0YyylbWDS6Mcbgst4fRsjLwudYZc0F4wucNzUkoFmcKgtNdm6Wai qKAzh56FheE3FPIa1mej+Oyy4zj04cBkaEt+N5Jaa0CAy3NLrPNiP6dk X-Gm-Gg: AZuq6aIJ15hs9GzyuPhNy0Xcdl2IvHShQ+4A2BWgb78vGmTk9TrJtnjkon2BdlDlKdV ju2h4q7Gm4+Kef/OZw6paxpwLOrZ5Qby6ddAXL1HAviZuqyniXYu9hSowjiuZjnld8VscKS4m74 eVin2P9tOqUS7lKfQUF2jYES5U21onT8v3W8RAgh6e5WmeRl+lllmm/TEduUPAvZhTPpJW8OPkx vEMr+42kq2+6dQN+8WK/XNJI9lXrdvGatMIisdrUoNXDYNznQks1+LJRGMvRnHzORy/gnbz7s5D 15m7h0TPuWHf++1LN/8Is6QR1oSKwynP2HJ0AhRZ1RJEjD5QP7r0nfGBgMbVb4ixf+eMrwgGrB8 QGmbLBdk3ZM3nxwce1LnSsRJusl60i6BUb82C9ghel2xJbBYaZTnjbs6KxXRP6m643C1TFRuXxb dGfJxevbrvxt9T9/hSCvYZE85b9L2233z4qAE5GsC8oUbm2ZlJcGwmVadn+NdJtXBsBmZ9Fx8= X-Received: by 2002:a05:7300:6420:b0:2ac:1c5a:9950 with SMTP id 5a478bee46e88-2b6b4e98df3mr12535539eec.34.1768890546301; Mon, 19 Jan 2026 22:29:06 -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.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 Jan 2026 22:29:05 -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 07/11] wifi: mt76: mt7925: add MCU command error handling Date: Mon, 19 Jan 2026 22:28:50 -0800 Message-ID: <20260120062854.126501-8-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 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 80ca5181150b..5f8a28d5ff72 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/main.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/main.c @@ -637,8 +637,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) @@ -904,11 +906,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) && @@ -1287,22 +1292,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); @@ -1311,8 +1316,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