From nobody Sat Feb 7 15:40:29 2026 Received: from mail-pl1-f174.google.com (mail-pl1-f174.google.com [209.85.214.174]) (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 8763F2D24A9 for ; Fri, 2 Jan 2026 20:03:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767384201; cv=none; b=O6ihchlss+KPGrjzvbj86FRD/rXjyvX7+pMlbBEEmkkBV9hilmQpbN5plJp0oXw79PrW/1KAZoeaKSWA3+Lyw1djCefj3cmQzusgpkVuGIVNyTO8U9mGAdIK2u29aLnyv+wE3HdmYPDYhmXVQeIPuappZm1WYW0CKU7/9HzNj5Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767384201; c=relaxed/simple; bh=FlZ9dbxtFOdp2Pe3NxrvOn8O6tksHkebEl7xpZY28cQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=pAk8CriC4oSwTgbrg3LYWB+51TmkTerXf4oLbK+1oL2rdgM2SEj7NVmRzqUDDcrOgJZH2A8wlxqiDVSmQZU2unebXYNwSrVdOsT/zyBKAPhxzpT4NX1j1rRBdemTVOt0UbAosz0Gk3qirvWpWyKQ2y4RgL0IMS2cBx68eYbdNZg= 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=I/8hBGlU; arc=none smtp.client-ip=209.85.214.174 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="I/8hBGlU" Received: by mail-pl1-f174.google.com with SMTP id d9443c01a7336-2a0d0788adaso111389225ad.3 for ; Fri, 02 Jan 2026 12:03:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767384199; x=1767988999; 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=rJB8TW11tb7vqsvvuXY9YlttNtwZmLNOXyK32XgfdCE=; b=I/8hBGlULVO/TSV2lRVcep4YyqOzsi/u02dVD9WLde6X2xVMn9ChD0KgJot+P6Yize pOdLMWSWkoNut6TRJYxM/Od5KR87EbEOjRxad+wu0pRe+WAYcKfX/q4jCEu5IY2Jpw4y 13fJ75klFJP9dZwyRQH/UPplxNnjEAX8tpZXyyW2OYuFz+R4HTTpC+7x+mY37/PlKkRH qsV7OkKSVspO6bzTz4dwvmEiR47M2iS20VG7fT1w1ubFoRTw8f28KRre0TG/qWHrORza PAsE58YBU9NTMEOdXKpxvA3RFTIchMq36ml/ogXMolJpvnV09pygdILf+h4cXJ4VBLDb kv8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767384199; x=1767988999; 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=rJB8TW11tb7vqsvvuXY9YlttNtwZmLNOXyK32XgfdCE=; b=bFKcZJZnAuxo13n4p1wIjURHBHexoG3KYnHkRdfIMN174JCWFTUZzQK2tsJ3YzKICe Or0csWCuXVKUD4jVOjT+HrsgD7Z/ZdPo2sHlscyTJgHimZG9lswMV2U9zxkxf1Y3Pomb JYDUrN2Zkx1kVjBUOuinYGO0aDgeesEOQMTXq/fWDYMnTjN8byS/uw/pxRUQ7cMB1bGa dsurRWAQX2Sip1zi0cIXn1JpXjL6tOymX5gBLhVAm3SLeQ5bbN6bch6O0v2ZPREFLlPS /AxL/UZ7NBpCEFMV65Wt+g+NT1NFSA+p9I3kVlqsRqSnZR8Y0JOuW+Os9r5oXYPP1vOl eCjw== X-Forwarded-Encrypted: i=1; AJvYcCV0dkD2yh/l4s4XEBzvoeWEYN/4AxUDv9QSi4jukI/YhAtRKxtTSmlxIWauXBC/0nxO0FLjGEL0S5jimKk=@vger.kernel.org X-Gm-Message-State: AOJu0YyUagruy1au7SQqlRFZH/nlncI97SVwvxiK2IhnUVym3u5OGhjq 2/1eaczseB4KqVtGfCaKfxnJb/UAfgTxFNkyZFh7IdVjswT8GK8ycnlU X-Gm-Gg: AY/fxX7EpaUZL+6kUv+0VwuSpc256YXkeJIEw3ZQwrVsMUKzIOBacCSsKE2dz43whd5 b0jgesRb2NAn9HKBuTRhRc2oVKxofLWMicLbgAZU8I3WSjv8kszjPfwLntVpt5DPqTzM+bKBHZA xYObYSoSaK2Gh3X2iKtbLEbmXWUbQR+9UbWsFl5gvyKk+5iocfTAB2aiVCwu00c5AGc+VNsIN6o WH19/x9fswAuAzU2MzHpgtM+6pUd4QjISiY3nnFN/blLVbvXxKF51BKCSSi9y3BJxCI32FhEJrT 66lwxyc56XoO1fNNqFMc70q3TsusmstTXMMWUe0qEN5LvT1qXFuOTwmFPtAlA5XTiPQ75dZaDHH wDhfxpJh36la4L+aO18UGTCl86WfjBW4H1q316zM46ElVJZzV7CcGW7nlrpAo/G6cL+P5ishtjz bYfs3cZq9kiRC9zyCHyhVxtPfjO0E6ydxQKccN+AGRlkPQVZU2Xl+z8Lb8Oanu3FpHHYRP7rjfJ Q== X-Google-Smtp-Source: AGHT+IHLa5NwfXi5dnqqkLy7rzURooInQ8xuzAG/o59NC1Gor95N1PBHwsWeLY58bDJyMi9BmZDSsA== X-Received: by 2002:a05:7022:42a7:b0:121:a060:6d80 with SMTP id a92af1059eb24-121a06075f9mr28800733c88.25.1767384198678; Fri, 02 Jan 2026 12:03:18 -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-1217253bfe2sm120203795c88.10.2026.01.02.12.03.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Jan 2026 12:03:17 -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] wifi: mt76: mt7925: fix key removal failure during MLO roaming Date: Fri, 2 Jan 2026 12:03:10 -0800 Message-ID: <20260102200315.290015-2-zbowling@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260102200315.290015-1-zbowling@gmail.com> References: <20260101062543.186499-1-zbowling@gmail.com> <20260102200315.290015-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" From: Zac Bowling During MLO roaming, mac80211 may request key removal after the link state has already been torn down. The current code returns -EINVAL when link_conf, mconf, or mlink is NULL, causing 'failed to remove key from hardware (-22)' errors in the kernel log. This is a race condition where: 1. MLO link teardown begins, cleaning up driver state 2. mac80211 requests group key removal for the old link 3. mt792x_vif_to_bss_conf() or related functions return NULL 4. Driver returns -EINVAL, confusing upper layers The fix: When removing a key (cmd !=3D SET_KEY), if the link state is already gone, return success (0) instead of error. The key is effectively removed when the link was torn down. This prevents the following errors during roaming: wlp192s0: failed to remove key (1, ff:ff:ff:ff:ff:ff) from hardware (-22) wlp192s0: failed to remove key (4, ff:ff:ff:ff:ff:ff) from hardware (-22) And the associated wpa_supplicant warnings: nl80211: kernel reports: link ID must for MLO group key Reported-by: Zac Bowling Tested-by: Zac Bowling Signed-off-by: Zac Bowling --- drivers/net/wireless/mediatek/mt76/mt7925/main.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/main.c b/drivers/net= /wireless/mediatek/mt76/mt7925/main.c index 13156333431d..11c0197c7426 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/main.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/main.c @@ -597,8 +597,15 @@ static int mt7925_set_link_key(struct ieee80211_hw *hw= , enum set_key_cmd cmd, mconf =3D mt792x_vif_to_link(mvif, link_id); mlink =3D mt792x_sta_to_link(msta, link_id); =20 - if (!link_conf || !mconf || !mlink) + if (!link_conf || !mconf || !mlink) { + /* During MLO roaming, link state may be torn down before + * mac80211 requests key removal. If removing a key and + * the link is already gone, consider it successfully removed. + */ + if (cmd !=3D SET_KEY) + return 0; return -EINVAL; + } =20 wcid =3D &mlink->wcid; wcid_keyidx =3D &wcid->hw_key_idx; --=20 2.51.0