From patchwork Wed Mar 5 00:08:46 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Wang X-Patchwork-Id: 871164 Received: from mail-oi1-f175.google.com (mail-oi1-f175.google.com [209.85.167.175]) (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 3A3AAA32; Wed, 5 Mar 2025 00:08:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741133339; cv=none; b=ncr6UKtV/KFLUghxqQ7Ujs1e8mv+60YBp+9yi6HR5k9Nhn4GWYtGHMqFxMKuY/QqgjGt0uY9Z/LUhGm8gVsQPDQHjyL+y9uqPVdqtdQut9uun9eUXpzptOrwhm+d0qnXsQCdIhKF7OMPLVc2Q2AaXz3l06iiBk1XLTYC/rUmkAQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741133339; c=relaxed/simple; bh=ZJG9elMQkSWmEX5IzF4UeLk4BbCDVjkAqaI/c3MTZd4=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=L4Lw4UsfUhJ4/dHL1XObZrree50l9pOkgQKG96tk8Oa0+6oEhhQM2q/kn8U8UaQT5Y3FDzbhSglJfLoGie7lUaJWXZi9PK1qHM3kwhQhdjjvuCSmZnnJODkpVeJ8pGdM/9jcoQKPRjjZFcFW2Fbv1CtC6ShxXVyZbczm4GT/MSM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=kernel.org; spf=pass smtp.mailfrom=gmail.com; arc=none smtp.client-ip=209.85.167.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=kernel.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-oi1-f175.google.com with SMTP id 5614622812f47-3f66bf7602eso919887b6e.3; Tue, 04 Mar 2025 16:08:57 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741133337; x=1741738137; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=qbgU2cH7rLMVRgOlRIA1RhS/ev6Ps58SctfJOQWg6L0=; b=Q9R0MwNFudHsahxUgIhgoLpYYYY0sR5rpjwQ547w9Jn9MkJa5euSSsUKyvynuC79G7 hIrC0lY4xNq/e0JmUFzn0FANUS6Amu4bVvWdiwdpqHuy8RTtcR2V75SG4bzX/Pigxlzs tRn+O5GuAE6K7r5R6lBNq5t7F34KC9F+NjnID1dIVnqx471QCfiXBMHza/B0uoxAIl90 mqi1uJwm3DNsxXTxzjPvUcyOZ3aBgpoqBn/bPbfv7YOa1SdOQqYNmdAr7g45paPx1HJH q8A6GGAyocF2blpsCzODSPQBZPod8bPxfIw/rPEWK+IofjdJ3FNIaLctMGXSy09SODHF DJ5g== X-Forwarded-Encrypted: i=1; AJvYcCUVJWWs8PK9i+z0oTYB4aPsJww2xQzp/n1fh23NzbCagjfaRQNvTA/jZfJ2sLIXt5HMepFWVMzN@vger.kernel.org, AJvYcCWxIM9+k8EuL2ojf9CkpqQJItr1brv98otcfFDtElpcisH/C3zeCMlyKy0bw4ISY5Yij9qqgapXGCS5eHyuRA==@vger.kernel.org X-Gm-Message-State: AOJu0YywyIpXMkWWhIxYGyzK1mtJoEdXTitQcQP6SW5drw4ZPQWRPM3b 33mQzWN1FvGrTWtI23lq3RElxJZtFIGAqiIlu6+I/e3/p9jTjxMw X-Gm-Gg: ASbGncvpgWt+lNTeYiFznf3aRXb2G68u4Hy9wVBBkw4sCW0gcSx0NbV/BCo4aQKG8/8 AnKSk1C2/tPRCIaPknWWxnstvfhu7YNaHo4sjmWNuDkIzvybX/573/ZjYLMtYql3F4pi/oap7Km 9TTSSZ2HYQ7qBcTChEE03UkabPtrbJlQcsC1L3oI32CYTKute5NYGXqv5tWF3YbKi740UHcnmkk M2AIqOtREJfdwfIZeJK7BknHCgf8TxYCL5HU/DN3QFyOPUA7lA74swhfBCOxODl0LUS5pVGfftW v9R9KrvQIfqSjfZjKmPNmnJcvoitlirs2QzhgBkRQwpDSK0+TZqHEed8c99rpw== X-Google-Smtp-Source: AGHT+IF1g8YRle5yYBcIvy9QWurAvDWoewqdz0axwJqoemwv8scXo9RxJe3DHXRGLaoFj/gkINBMfg== X-Received: by 2002:a05:6808:1889:b0:3f4:2209:c018 with SMTP id 5614622812f47-3f6831d34a4mr672670b6e.26.1741133337136; Tue, 04 Mar 2025 16:08:57 -0800 (PST) Received: from sean-ThinkPad-T450s.lan ([207.191.35.252]) by smtp.gmail.com with ESMTPSA id 5614622812f47-3f67ee8f479sm299985b6e.40.2025.03.04.16.08.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Mar 2025 16:08:55 -0800 (PST) From: sean.wang@kernel.org To: nbd@nbd.name, lorenzo.bianconi@redhat.com Cc: sean.wang@mediatek.com, deren.wu@mediatek.com, mingyen.hsieh@mediatek.com, linux-wireless@vger.kernel.org, linux-mediatek@lists.infradead.org, stable@vger.kernel.org, Caleb Jorden Subject: [PATCH v5 1/6] Revert "wifi: mt76: mt7925: Update mt7925_mcu_uni_[tx,rx]_ba for MLO" Date: Tue, 4 Mar 2025 16:08:46 -0800 Message-Id: <20250305000851.493671-1-sean.wang@kernel.org> X-Mailer: git-send-email 2.25.1 Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Sean Wang For MLO, mac80211 will send the BA action for each link to the driver, so the driver does not need to handle it itself. Therefore, revert this patch. Fixes: eb2a9a12c609 ("wifi: mt76: mt7925: Update mt7925_mcu_uni_[tx,rx]_ba for MLO") Cc: stable@vger.kernel.org Signed-off-by: Ming Yen Hsieh Tested-by: Caleb Jorden Signed-off-by: Sean Wang --- v2: 1) generate the patch based on the latest mt76 tree 2) update the commit message v3: 1) fixed the merge conflict v4: 1) added tested-by tag v5: 1) update the Fixes tag 2) rebase to wireless.git --- .../net/wireless/mediatek/mt76/mt7925/main.c | 10 ++-- .../net/wireless/mediatek/mt76/mt7925/mcu.c | 50 ++++--------------- .../wireless/mediatek/mt76/mt7925/mt7925.h | 2 - 3 files changed, 15 insertions(+), 47 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/main.c b/drivers/net/wireless/mediatek/mt76/mt7925/main.c index 98daf80ac131..8dba17c8697c 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/main.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/main.c @@ -1289,22 +1289,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, vif, params, true); + 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, vif, params, false); + mt7925_mcu_uni_rx_ba(dev, params, false); break; case IEEE80211_AMPDU_TX_OPERATIONAL: mtxq->aggr = true; mtxq->send_bar = false; - mt7925_mcu_uni_tx_ba(dev, vif, params, true); + mt7925_mcu_uni_tx_ba(dev, params, true); break; case IEEE80211_AMPDU_TX_STOP_FLUSH: case IEEE80211_AMPDU_TX_STOP_FLUSH_CONT: mtxq->aggr = false; clear_bit(tid, &msta->deflink.wcid.ampdu_state); - mt7925_mcu_uni_tx_ba(dev, vif, params, false); + mt7925_mcu_uni_tx_ba(dev, params, false); break; case IEEE80211_AMPDU_TX_START: set_bit(tid, &msta->deflink.wcid.ampdu_state); @@ -1313,7 +1313,7 @@ mt7925_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif, case IEEE80211_AMPDU_TX_STOP_CONT: mtxq->aggr = false; clear_bit(tid, &msta->deflink.wcid.ampdu_state); - mt7925_mcu_uni_tx_ba(dev, vif, params, false); + mt7925_mcu_uni_tx_ba(dev, params, false); ieee80211_stop_tx_ba_cb_irqsafe(vif, sta->addr, tid); break; } diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c b/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c index 15815ad84713..4c133200c70b 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c @@ -607,60 +607,30 @@ mt7925_mcu_sta_ba(struct mt76_dev *dev, struct mt76_vif_link *mvif, /** starec & wtbl **/ int mt7925_mcu_uni_tx_ba(struct mt792x_dev *dev, - struct ieee80211_vif *vif, struct ieee80211_ampdu_params *params, bool enable) { struct mt792x_sta *msta = (struct mt792x_sta *)params->sta->drv_priv; - struct mt792x_vif *mvif = (struct mt792x_vif *)vif->drv_priv; - struct mt792x_link_sta *mlink; - struct mt792x_bss_conf *mconf; - unsigned long usable_links = ieee80211_vif_usable_links(vif); - struct mt76_wcid *wcid; - u8 link_id, ret; - - for_each_set_bit(link_id, &usable_links, IEEE80211_MLD_MAX_NUM_LINKS) { - mconf = mt792x_vif_to_link(mvif, link_id); - mlink = mt792x_sta_to_link(msta, link_id); - wcid = &mlink->wcid; - - if (enable && !params->amsdu) - mlink->wcid.amsdu = false; + struct mt792x_vif *mvif = msta->vif; + struct mt76_wcid *wcid = &mvif->sta.deflink.wcid; - ret = mt7925_mcu_sta_ba(&dev->mt76, &mconf->mt76, wcid, params, - enable, true); - if (ret < 0) - break; - } + if (enable && !params->amsdu) + msta->deflink.wcid.amsdu = false; - return ret; + return mt7925_mcu_sta_ba(&dev->mt76, &mvif->bss_conf.mt76, wcid, + params, enable, true); } int mt7925_mcu_uni_rx_ba(struct mt792x_dev *dev, - struct ieee80211_vif *vif, struct ieee80211_ampdu_params *params, bool enable) { struct mt792x_sta *msta = (struct mt792x_sta *)params->sta->drv_priv; - struct mt792x_vif *mvif = (struct mt792x_vif *)vif->drv_priv; - struct mt792x_link_sta *mlink; - struct mt792x_bss_conf *mconf; - unsigned long usable_links = ieee80211_vif_usable_links(vif); - struct mt76_wcid *wcid; - u8 link_id, ret; - - for_each_set_bit(link_id, &usable_links, IEEE80211_MLD_MAX_NUM_LINKS) { - mconf = mt792x_vif_to_link(mvif, link_id); - mlink = mt792x_sta_to_link(msta, link_id); - wcid = &mlink->wcid; - - ret = mt7925_mcu_sta_ba(&dev->mt76, &mconf->mt76, wcid, params, - enable, false); - if (ret < 0) - break; - } + struct mt792x_vif *mvif = msta->vif; + struct mt76_wcid *wcid = &mvif->sta.deflink.wcid; - return ret; + return mt7925_mcu_sta_ba(&dev->mt76, &mvif->bss_conf.mt76, wcid, + params, enable, false); } static int mt7925_load_clc(struct mt792x_dev *dev, const char *fw_name) diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/mt7925.h b/drivers/net/wireless/mediatek/mt76/mt7925/mt7925.h index 8707b5d04743..fd5f9d4ea4a7 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/mt7925.h +++ b/drivers/net/wireless/mediatek/mt76/mt7925/mt7925.h @@ -263,11 +263,9 @@ int mt7925_mcu_set_beacon_filter(struct mt792x_dev *dev, struct ieee80211_vif *vif, bool enable); int mt7925_mcu_uni_tx_ba(struct mt792x_dev *dev, - struct ieee80211_vif *vif, struct ieee80211_ampdu_params *params, bool enable); int mt7925_mcu_uni_rx_ba(struct mt792x_dev *dev, - struct ieee80211_vif *vif, struct ieee80211_ampdu_params *params, bool enable); void mt7925_scan_work(struct work_struct *work); From patchwork Wed Mar 5 00:08:47 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Wang X-Patchwork-Id: 870478 Received: from mail-oi1-f173.google.com (mail-oi1-f173.google.com [209.85.167.173]) (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 0CF58B674; Wed, 5 Mar 2025 00:09:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741133343; cv=none; b=AVPD+cNyupIVtLqnfboNR2WF5rSTKnfK9FLnxxb+T3h9d7tNZiXixcssm1bG/8LEPoSF+PnbozZ/sGHUvGkJf1ysV6m57nwH3P8a6ZVHxuMQGqCj0R+Zqzk6LQ14mTCjnaR0fjdFiFceiBSPo1PXuqQUQ7oFQ1y1Yykf4udoxy4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741133343; c=relaxed/simple; bh=5KlE+q1q0A4dDAFDD/mVAp/fZNJiv3UdlT6xCi39NjA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=KDZKl3h90VE1gYUff+KRP2Xd1QRYofUxeC5gxr3JbFM9I9sRXTVXFK+CzmNO9z3m24s7m3lh5BeBIz8HyFhnkDML7tyPiKAfy+3ocXONRx/JkDDlh1WtQf+eoM9oHgpU5o9XxVmlG+x+5fHmdWM4Eq9EcS6nHw3ZDIKpVWHc9hA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=kernel.org; spf=pass smtp.mailfrom=gmail.com; arc=none smtp.client-ip=209.85.167.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=kernel.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-oi1-f173.google.com with SMTP id 5614622812f47-3f3f149c334so4310069b6e.1; Tue, 04 Mar 2025 16:09:01 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741133341; x=1741738141; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=K29PyePUpk5WVq4lLAdCQNE/othRM+FfI7C3wd/RqYg=; b=cvph70eJXhseq9zwsBV6EY/Qvk6/7wfh6s7agU2fi/Gvps078G3VrkCpFLhA3Iqwxm i3JF5DYNmO3utH035wlRgS1Qtjq9hK4/0IoILdaVW39P8WJ/c+G0jbMNn4dp3ilb12xh us9XQXnDe/RBF9LfKISsl/VEMEXRhmN1aNfT/VTMGG+ERuoT590Dm2iZOPTCcSw3M/Sm Iew6ZgGAKL1XdkMD84lxdv1LD5StCsxfICcEP+lPmt5mASb30+SNjuPZKTZ8e5+YlYk7 0O97LxwwqDPurPg83cf0GgMspVunHZn4rfArZt5Smq/ZXO5Cd7HJHVbS7Gymmr59KXow q9OQ== X-Forwarded-Encrypted: i=1; AJvYcCUNK8N9m5yI+ACWwtXHSBx94rTirRjZp3iFnYf6wH67QGUarifvOR5eRYgjpVn8WSLewVH8xJpS@vger.kernel.org, AJvYcCXTrhmP7q9ydD4dVZbjtJ5uuiE88o89w5JZSvE+VVOpVzpEGbLIgb0/9WBti3LrItotXpjY3Q+s4sD4oX5rXw==@vger.kernel.org X-Gm-Message-State: AOJu0Yy/7jzSSu7CvYFmiwo3JNFK4u3DkhxdOnmkWOGPSx64z4AHo1Ki WcZUAjAQq+vM5h7FkT7xm5NSIgmq3Ebs924nRhVHsmeKo07QI4tX X-Gm-Gg: ASbGncsqtxZcEemWd0WhMYQ4RFDG4W7mqISdxT917WthX56bIW/qPTkl8WVrMVIvVmT vkEt54a+SMfbPH335rtrtiBqHCsGHX4lGUTqav4/CMM049V+jEuYOmvfjaT5WqfYSuVy95AJ06i 8tzcI+2VxI+0HQfvcZKBw9z6Yo2bbLGoN31AnoseqRuZKzw7lrrTZPfBmuVqS19ID/lSPB11Q+J JCNBDpHTmJ3SL9KPu2JPh3H6C+vkr4dqZbzVjGgk84Ayco4VO8G2wLYg+iPRFApznwiCF6NwlAF 3F8bxto23YrWCfN/7ox7HiP82n/y7lpukpgIOk8/iTbnV5d2sMEs1mw+4WuqfQ== X-Google-Smtp-Source: AGHT+IHk5Z4MAR+2LKqaAWAqGAhbyH341r43aDMKsumqMh5/HkJ+xA7G/KuX0nkkLzZMwaGtSmpJ0w== X-Received: by 2002:a05:6808:3584:b0:3f6:684f:2f24 with SMTP id 5614622812f47-3f68315d0afmr458666b6e.16.1741133340971; Tue, 04 Mar 2025 16:09:00 -0800 (PST) Received: from sean-ThinkPad-T450s.lan ([207.191.35.252]) by smtp.gmail.com with ESMTPSA id 5614622812f47-3f67ee8f479sm299985b6e.40.2025.03.04.16.08.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Mar 2025 16:08:59 -0800 (PST) From: sean.wang@kernel.org To: nbd@nbd.name, lorenzo.bianconi@redhat.com Cc: sean.wang@mediatek.com, deren.wu@mediatek.com, mingyen.hsieh@mediatek.com, linux-wireless@vger.kernel.org, linux-mediatek@lists.infradead.org, stable@vger.kernel.org, Caleb Jorden Subject: [PATCH v5 2/6] wifi: mt76: mt7925: fix the wrong link_idx when has p2p_device Date: Tue, 4 Mar 2025 16:08:47 -0800 Message-Id: <20250305000851.493671-2-sean.wang@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20250305000851.493671-1-sean.wang@kernel.org> References: <20250305000851.493671-1-sean.wang@kernel.org> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Ming Yen Hsieh When the p2p device and MLO station concurrent, the p2p device will occupy the wrong link_idx when the MLO secondary link is added. Fixes: e38a82d25b08 ("wifi: mt76: connac: Extend mt76_connac_mcu_uni_add_dev for MLO") Cc: stable@vger.kernel.org Co-developed-by: Sean Wang Signed-off-by: Sean Wang Tested-by: Caleb Jorden Signed-off-by: Ming Yen Hsieh --- v2: 1) generate the patch based on the latest mt76 tree 2) update the commit message v3: 1) fixed the merge conflict v4: 1) added tested-by tag 2) removed unrelated files v5: 1) update co-developed-by tag 2) rebase to wireless.git --- drivers/net/wireless/mediatek/mt76/mt76.h | 1 + .../net/wireless/mediatek/mt76/mt76_connac_mcu.c | 4 ++-- drivers/net/wireless/mediatek/mt76/mt7925/main.c | 14 ++++++++++---- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt76.h b/drivers/net/wireless/mediatek/mt76/mt76.h index 132148f7b107..05651efb549e 100644 --- a/drivers/net/wireless/mediatek/mt76/mt76.h +++ b/drivers/net/wireless/mediatek/mt76/mt76.h @@ -769,6 +769,7 @@ struct mt76_testmode_data { struct mt76_vif_link { u8 idx; + u8 link_idx; u8 omac_idx; u8 band_idx; u8 wmm_idx; diff --git a/drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c b/drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c index f30cf9e71610..d0e49d68c5db 100644 --- a/drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c +++ b/drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c @@ -1168,7 +1168,7 @@ int mt76_connac_mcu_uni_add_dev(struct mt76_phy *phy, .tag = cpu_to_le16(DEV_INFO_ACTIVE), .len = cpu_to_le16(sizeof(struct req_tlv)), .active = enable, - .link_idx = mvif->idx, + .link_idx = mvif->link_idx, }, }; struct { @@ -1191,7 +1191,7 @@ int mt76_connac_mcu_uni_add_dev(struct mt76_phy *phy, .bmc_tx_wlan_idx = cpu_to_le16(wcid->idx), .sta_idx = cpu_to_le16(wcid->idx), .conn_state = 1, - .link_idx = mvif->idx, + .link_idx = mvif->link_idx, }, }; int err, idx, cmd, len; diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/main.c b/drivers/net/wireless/mediatek/mt76/mt7925/main.c index 8dba17c8697c..4f35c2f16d0d 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/main.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/main.c @@ -360,10 +360,15 @@ static int mt7925_mac_link_bss_add(struct mt792x_dev *dev, struct mt76_txq *mtxq; int idx, ret = 0; - mconf->mt76.idx = __ffs64(~dev->mt76.vif_mask); - if (mconf->mt76.idx >= MT792x_MAX_INTERFACES) { - ret = -ENOSPC; - goto out; + if (vif->type == NL80211_IFTYPE_P2P_DEVICE) { + mconf->mt76.idx = MT792x_MAX_INTERFACES; + } else { + mconf->mt76.idx = __ffs64(~dev->mt76.vif_mask); + + if (mconf->mt76.idx >= MT792x_MAX_INTERFACES) { + ret = -ENOSPC; + goto out; + } } mconf->mt76.omac_idx = ieee80211_vif_is_mld(vif) ? @@ -371,6 +376,7 @@ static int mt7925_mac_link_bss_add(struct mt792x_dev *dev, mconf->mt76.band_idx = 0xff; mconf->mt76.wmm_idx = ieee80211_vif_is_mld(vif) ? 0 : mconf->mt76.idx % MT76_CONNAC_MAX_WMM_SETS; + mconf->mt76.link_idx = hweight16(mvif->valid_links); if (mvif->phy->mt76->chandef.chan->band != NL80211_BAND_2GHZ) mconf->mt76.basic_rates_idx = MT792x_BASIC_RATES_TBL + 4; From patchwork Wed Mar 5 00:08:48 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Wang X-Patchwork-Id: 871163 Received: from mail-oo1-f54.google.com (mail-oo1-f54.google.com [209.85.161.54]) (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 66275C147; Wed, 5 Mar 2025 00:09:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.161.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741133346; cv=none; b=KtrLTpRjQ5qb1cSe5295/Fz3IxPMzt2Ld27DUaJ1lVy0i5vkWA45f/T/2sU93e5hm/4JRk3ad/cvzE1CyXxXfUwFrzgg+oMImPTvlcYrNoNo/L4WAWcjZOCTX0ix9D7pGXVvEF8THuhFnyD3NbhVYvhrd2dAVpNwuo2dtXS6E0o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741133346; c=relaxed/simple; bh=mGjeON0GpHAqrXkVHjD/yjoxNhvqFdfMmvq3/NeILjk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=IdCCSmR1Z8g2MzfujbucHbCfR8peDg7OvyRjRQXSEuJM5H9Ubms1XE1HvWqhEWPZ/dk5byD5grtrJb06m9rAi62OZQ8dSGeHhdNUGPkPmiYIGVOTnicyCwfzX6G1wnGkbDT1PaM/RAXRu01pBcNivAkfpJvjAsE3tHhvRgYecfY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=kernel.org; spf=pass smtp.mailfrom=gmail.com; arc=none smtp.client-ip=209.85.161.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=kernel.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-oo1-f54.google.com with SMTP id 006d021491bc7-5f4d935084aso4717366eaf.2; Tue, 04 Mar 2025 16:09:05 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741133344; x=1741738144; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=U9eJeXiBH2lgfUF9NdCY1XMR3UJufv/lPn99+6l/Nkk=; b=nhzqkKS24FNGEf5YuEqNxcA50O5RVn2jZAWKJbOc3FQGHQLlLzUjl1c48LmcVPQqlp wU0V1trcx1lvM0BN2fzfGDwDYrfTsU+jiaOiBHVpCIR8a6NSF4tYgA4wAKCgBLEBYHIy CZZbGZ/EnhMyWlULcfYVPmqIC0WYA1eDcfIwu05TeQmHtUSbSkrKI98l/5t9BuZXstZJ cX5cp6Fq+4xwbY8vWSdnP5o48Qr6FecBwn2BTl3UJrhfCe4fYDulCU9vWl6+1rhH+2HN f9Gw6c3IjW8HNsNTNIl2TPTATd+wrcOvY8/T1K86anb9WEXCiHm2fxi5T/eFb7tHWh7I aocg== X-Forwarded-Encrypted: i=1; AJvYcCVJwbkMz0DckmGe0EZMkvrapIpC/p/V61kvDytL2jxQ9vYlldJN219fPXMp8nGBA1iuEOqnR/cZ@vger.kernel.org, AJvYcCX/2myBw+Bc4KCv+xqQKbTJhyg+yvHFL/d4sLzNsO5eYO9AS8DZr1lfQTGqaFI7AIRNVcdHdDzmfMKKwjwE9g==@vger.kernel.org X-Gm-Message-State: AOJu0YyuyVKOXcHF62M1YGMLhGz9kxK14iSQYj7rFowmUT8j5t0eJxAu w2agU7Uk2TLLcsl4JeFOrtvzyQWy8uOgHdeOgUvtPuNCS718nbBk X-Gm-Gg: ASbGnctnVKAYx28OsJaBmMCsMOVFCwseBI0idrS7hhHeP7uaJi0P4x/5JKrCfCzGV0t Mtmxr/jrCBCFKpxB4cz4nzv9Jfl1BrxL74j720FbJaUvGWET5y/8GSef2shJG0vOrA80jfRYjmh ux8cYC0lM5VsHIeu2VBTrJOI++AHmVXNm8wc+fo7y48ccDBQGrI3EQXAJyk2esKmjtNMizBziFD b6YOZtdmUSot0q6dqC1oFRABOhOQycXlsxsiHGtSb19IPkJ6tw+/6kGUj1TAon1Ffs/QzpQTkJO IKn3aU916YRbyxc00OP55MvvmW6FW1AErnn8hiszb2d398zABPVEuF7szhnFZQ== X-Google-Smtp-Source: AGHT+IEwvVhbQJMEaGdrFKMtOxiiJCKto8VYM3jUlbmpjF3jkBrGvZ4szLZ7/dmzI2XnhwPbqNTrlg== X-Received: by 2002:a05:6808:1a1b:b0:3f4:af3:74a5 with SMTP id 5614622812f47-3f6831755e7mr500177b6e.21.1741133344379; Tue, 04 Mar 2025 16:09:04 -0800 (PST) Received: from sean-ThinkPad-T450s.lan ([207.191.35.252]) by smtp.gmail.com with ESMTPSA id 5614622812f47-3f67ee8f479sm299985b6e.40.2025.03.04.16.09.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Mar 2025 16:09:03 -0800 (PST) From: sean.wang@kernel.org To: nbd@nbd.name, lorenzo.bianconi@redhat.com Cc: sean.wang@mediatek.com, deren.wu@mediatek.com, mingyen.hsieh@mediatek.com, linux-wireless@vger.kernel.org, linux-mediatek@lists.infradead.org, stable@vger.kernel.org, Caleb Jorden Subject: [PATCH v5 3/6] wifi: mt76: mt7925: fix the wrong simultaneous cap for MLO Date: Tue, 4 Mar 2025 16:08:48 -0800 Message-Id: <20250305000851.493671-3-sean.wang@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20250305000851.493671-1-sean.wang@kernel.org> References: <20250305000851.493671-1-sean.wang@kernel.org> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Ming Yen Hsieh The mt7925 chip is only support a single radio, so the maximum number of simultaneous should be 0. Fixes: 86c051f2c418 ("wifi: mt76: mt7925: enabling MLO when the firmware supports it") Cc: stable@vger.kernel.org Co-developed-by: Sean Wang Signed-off-by: Sean Wang Tested-by: Caleb Jorden Signed-off-by: Ming Yen Hsieh --- v2: 1) generate the patch based on the latest mt76 tree 2) update the commit message v3: 1) fixed the merge conflict v4: 1) add tested-by tag v5: 1) update co-developed-by tag 2) rebase to wireless.git --- drivers/net/wireless/mediatek/mt76/mt7925/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/main.c b/drivers/net/wireless/mediatek/mt76/mt7925/main.c index 4f35c2f16d0d..604f771af68e 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/main.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/main.c @@ -256,7 +256,7 @@ int mt7925_init_mlo_caps(struct mt792x_phy *phy) ext_capab[0].eml_capabilities = phy->eml_cap; ext_capab[0].mld_capa_and_ops = - u16_encode_bits(1, IEEE80211_MLD_CAP_OP_MAX_SIMUL_LINKS); + u16_encode_bits(0, IEEE80211_MLD_CAP_OP_MAX_SIMUL_LINKS); wiphy->flags |= WIPHY_FLAG_SUPPORTS_MLO; wiphy->iftype_ext_capab = ext_capab; From patchwork Wed Mar 5 00:08:49 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Wang X-Patchwork-Id: 870477 Received: from mail-oi1-f180.google.com (mail-oi1-f180.google.com [209.85.167.180]) (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 67A0917579; Wed, 5 Mar 2025 00:09:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741133352; cv=none; b=UDuTPPZBY8TzZMgOtnKkC9PhkucyhLnl7TJgvHxTFRWTEjzGeeZ1sNn6bi1gdgsrjF2qB6Z8ZUfk344K2qZw/QdtZwyfdyM603zt5FPPA4qxaxBiGYHRjYWghhyXECpz/VzuELhq1crbbMna0E/pjiaTsky/b6v8JSu3eOpfHdE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741133352; c=relaxed/simple; bh=aCAvlnEbLYWd4QFgD/f4U/CRsrS+c13uacOWLmt1zkE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=QV/fHSdDUa57WaaqufpZzMad2+4kqtV4pU49xyLUnTjw92nJ0c0E5U9yDHxaT5Y42lKZMhh1bQ8kbIP0Uao9CWNsqin1ZUA+4w3htCQyqmQtfgp/0C+07gSOSiBchzkLGFb5QUKkFivm8iynbVgYOVHi0dxY5TitM9Jwd4LTJMI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=kernel.org; spf=pass smtp.mailfrom=gmail.com; arc=none smtp.client-ip=209.85.167.180 Authentication-Results: smtp.subspace.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=kernel.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-oi1-f180.google.com with SMTP id 5614622812f47-3f6740963b4so1268839b6e.3; Tue, 04 Mar 2025 16:09:10 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741133349; x=1741738149; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=5KmCyNELJJemcnmUYppjmKqqpaAMRTnfnaa6QXbepoU=; b=Z7pp9WamAE2egF0uLwz+seSQ2Aqno85oHQRr+fe7TA5M12EN9sqfJsjcLtmtECqD8f LqAOlKYxsvMCUpCsduDSknfJiSMuBTOfZy89khsTFK0PWoGsOU9AHuLKrQAQ+0pDAuFD 340wJeYSN334mKdGQXDQ4aSDxDr95IrrPxYLS2VL0luHjexdQ5OF+G6fzuuwb+pYN/rf FYARy99kOalLFFd4OinqEqZZGvfWjhFyWqX25rY1SEpgaMFjbNWvqW+bA/CznK09h/iw luw7EWhgX4JDmy9xXL3C2mcwh0c9DxzoFGAk6AaHH5CGJT4uBNIWkvfH5AzOYRCaS+6A QKaw== X-Forwarded-Encrypted: i=1; AJvYcCU+621aojM4msx/X4dSyvXMOWWTpMMIJy189VMVcgwfHmVaA1uvRUV05g1bg4SwlOsmcqaoVxfU@vger.kernel.org, AJvYcCVQzHx9MqqKNJHmdv0qTvidZsAY36NwHT0OQ4e7qyCc/aJioa/PxosMYtkK0p8tjE8BCq6buzyfaG2s37jyfw==@vger.kernel.org X-Gm-Message-State: AOJu0YzGm0NkNpGJ/RTQ46ZV0jX/H7e88iPv8oOeLTNOzVSOWgZ8ESB2 4Gx+fOctyMg4AhQk8CSe3I+RB4Ysp2kCtZSDu8+4E9Dfx0tcDgUNHwFlMIAH X-Gm-Gg: ASbGncsRzIXio8TW2gAUkiXaarLljk5NMYB+zkT2dFzuKySh0tD5wk1OSa+GBqBZ8pK j5epde3YDe8iRIXKo0Gfq65g90u0G36j33nrOEQsK2XJ/CH1V/2NXryROIn5uLnxs5ko/WoDmyC 7tBA9vks4eXTYC8OgOf6BFRkf06ORb4yMO3BjXuE4XSEfh2BDrXkMDdkK3t3MGPU4reVTLZUH1B tdBGLHTk/hLc1K89kyvUcoIOkfpKU7aMmjiLNRKEz46ZiIzeRtq+HajPPpLa4Uydalvdyh8aBBg 0+7hFvvCAHuST5oRxtgut/JCZxVKym/rjRRhBPvvl1J68E+iDGXr+1Il6WeKUQ== X-Google-Smtp-Source: AGHT+IHWNG2Yylm4c0/Jpo3YYVB+/tZtr02EkH0F6DG8CID8z8g+0y3pM7nC7o413CB1rGVMvbBteA== X-Received: by 2002:a05:6808:1825:b0:3f6:786c:cb9a with SMTP id 5614622812f47-3f6831f35e0mr485321b6e.37.1741133349420; Tue, 04 Mar 2025 16:09:09 -0800 (PST) Received: from sean-ThinkPad-T450s.lan ([207.191.35.252]) by smtp.gmail.com with ESMTPSA id 5614622812f47-3f67ee8f479sm299985b6e.40.2025.03.04.16.09.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Mar 2025 16:09:07 -0800 (PST) From: sean.wang@kernel.org To: nbd@nbd.name, lorenzo.bianconi@redhat.com Cc: sean.wang@mediatek.com, deren.wu@mediatek.com, mingyen.hsieh@mediatek.com, linux-wireless@vger.kernel.org, linux-mediatek@lists.infradead.org, stable@vger.kernel.org, Caleb Jorden Subject: [PATCH v5 4/6] wifi: mt76: mt7925: adjust rm BSS flow to prevent next connection failure Date: Tue, 4 Mar 2025 16:08:49 -0800 Message-Id: <20250305000851.493671-4-sean.wang@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20250305000851.493671-1-sean.wang@kernel.org> References: <20250305000851.493671-1-sean.wang@kernel.org> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Ming Yen Hsieh Removing BSS without removing STAREC first will cause firmware abnormal and next connection fail. Fixes: f8797298565e ("wifi: mt76: mt7925: Cleanup MLO settings post-disconnection") Cc: stable@vger.kernel.org Co-developed-by: Sean Wang Signed-off-by: Sean Wang Tested-by: Caleb Jorden Signed-off-by: Ming Yen Hsieh --- v2: 1) generate the patch based on the latest mt76 tree 2) update the commit message v3: 1) fixed the merge conflict v4: 1) add tested-by tag v5: 1) fixed mt7925/main.c:1245:28: warning: unused variable "mvif" [-Wunused-variable] 2) update co-developed-by tag 3) rebase to wireless.git --- .../net/wireless/mediatek/mt76/mt7925/main.c | 44 +++++++++++++++---- 1 file changed, 35 insertions(+), 9 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/main.c b/drivers/net/wireless/mediatek/mt76/mt7925/main.c index 604f771af68e..a7464839318e 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/main.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/main.c @@ -1155,7 +1155,12 @@ static void mt7925_mac_link_sta_remove(struct mt76_dev *mdev, struct mt792x_bss_conf *mconf; mconf = mt792x_link_conf_to_mconf(link_conf); - mt792x_mac_link_bss_remove(dev, mconf, mlink); + + if (ieee80211_vif_is_mld(vif)) + mt792x_mac_link_bss_remove(dev, mconf, mlink); + else + mt7925_mcu_add_bss_info(&dev->phy, mconf->mt76.ctx, link_conf, + link_sta, false); } spin_lock_bh(&mdev->sta_poll_lock); @@ -1175,6 +1180,31 @@ mt7925_mac_sta_remove_links(struct mt792x_dev *dev, struct ieee80211_vif *vif, struct mt76_wcid *wcid; unsigned int link_id; + /* clean up bss before starec */ + for_each_set_bit(link_id, &old_links, IEEE80211_MLD_MAX_NUM_LINKS) { + struct ieee80211_link_sta *link_sta; + struct ieee80211_bss_conf *link_conf; + struct mt792x_bss_conf *mconf; + struct mt792x_link_sta *mlink; + + link_sta = mt792x_sta_to_link_sta(vif, sta, link_id); + if (!link_sta) + continue; + + mlink = mt792x_sta_to_link(msta, link_id); + if (!mlink) + continue; + + link_conf = mt792x_vif_to_bss_conf(vif, link_id); + if (!link_conf) + continue; + + mconf = mt792x_link_conf_to_mconf(link_conf); + + mt7925_mcu_add_bss_info(&dev->phy, mconf->mt76.ctx, link_conf, + link_sta, false); + } + for_each_set_bit(link_id, &old_links, IEEE80211_MLD_MAX_NUM_LINKS) { struct ieee80211_link_sta *link_sta; struct mt792x_link_sta *mlink; @@ -1242,14 +1272,10 @@ void mt7925_mac_sta_remove(struct mt76_dev *mdev, struct ieee80211_vif *vif, mt7925_mac_sta_remove_links(dev, vif, sta, rem); - if (ieee80211_vif_is_mld(vif)) { - mt7925_mcu_set_dbdc(&dev->mphy, false); - - /* recovery omac address for the legacy interface */ - memcpy(dev_req.tlv.omac_addr, vif->addr, ETH_ALEN); - mt76_mcu_send_msg(mdev, MCU_UNI_CMD(DEV_INFO_UPDATE), - &dev_req, sizeof(dev_req), true); - } + /* recovery omac address for the legacy interface */ + memcpy(dev_req.tlv.omac_addr, vif->addr, ETH_ALEN); + mt76_mcu_send_msg(mdev, MCU_UNI_CMD(DEV_INFO_UPDATE), + &dev_req, sizeof(dev_req), true); if (vif->type == NL80211_IFTYPE_STATION) { struct mt792x_vif *mvif = (struct mt792x_vif *)vif->drv_priv; From patchwork Wed Mar 5 00:08:50 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Wang X-Patchwork-Id: 871162 Received: from mail-oi1-f171.google.com (mail-oi1-f171.google.com [209.85.167.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 A720C8F54; Wed, 5 Mar 2025 00:09:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741133357; cv=none; b=p7EqolBV+peGaXZymkQEe1pAms1xwzCiNTOvwviXiE0IkyKC8BP7CKikX/ioV0Mxec4xBGFb0sX+QtbgwSzbKlO1bnsRVKi2Tnjmnass02xwnlV6sbxjyVuv0IWhGxs4FaCLI6hyUzExNKsQiM7eLPuUSxVeqFPaOLJuX5BJIUw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741133357; c=relaxed/simple; bh=kFnZt6UvuIk1L2jaot7yjwh7OY22U1YoN/VBxIf1CqA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=HVvrhfYgB8VVR70W9fggRue4on6bFMlESP17Q7S1iC+VUlWP1g5iis2lGgDQbgH0OjiACMp4xN7up57nrg4DJouRwxgJ+wmkwRz+Jr2jvfW7WkgFl3zOOxAAX3p5xwc+H/XoBQ/nTuotujwsTav0Om1YIPa4G7339WwBTSOH8CI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=kernel.org; spf=pass smtp.mailfrom=gmail.com; arc=none smtp.client-ip=209.85.167.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=kernel.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-oi1-f171.google.com with SMTP id 5614622812f47-3f1c94936c5so176627b6e.1; Tue, 04 Mar 2025 16:09:15 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741133355; x=1741738155; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=DZq1QVFR2Y4L6SmWL/g11Hjl8Ghbc2LyxG/QBtnz4Ek=; b=Gr/fmIUZ32Lxr42yvQW/kgTFTKHi1Dhl+TlViWlld5+174ZegUGVlilkJCA8i9cdjN 1Lz1uz3zjdVyaNy9JbyS2RWy7kU4lBxwuNKU9kWj4+XjPje41FvQV/ImUtSJAooJfDXm wxYK2SwTqRPQK109gbd3XyNxPexta0GTcC7T4Ep4qYR7mAA2/Xrn3QGQSprySwK/SKug a97DGpneHxJ8qZPZEslbek1Fa0RLCVp+AvoAmQHQJwM/dQ3Jv5+T0V9AeZ0aDxj/mDxA HCytALWxm/ddD3Iw4xPc5KT3QFZKHx7FddD2r3VGpoEBbBg+TxwC5N20/mCGKt39a4n3 nV4g== X-Forwarded-Encrypted: i=1; AJvYcCUxdglhGonCE/jhahEmcftpDShTTJMHb/cR2qT9BxaDEqMwjrUa2HYuq6hSF5mzADZmQJ4euh7chDBb0nBilA==@vger.kernel.org, AJvYcCXN5j/E67q5OZG1pHSRt2JpP+26ifohlPecG3H42s4JY+ORclWNh/3fZEiijzXVTXkCfP5XO9hM@vger.kernel.org X-Gm-Message-State: AOJu0YxZ0GPMpJxbDLop6d5hE3Dp0FLQsMxXcUrT4HvHG8Y3nQT++OLK ggjeR+VQkp6n9/yYdiq6g5YnhYVmF11nfxqjzEhpZu8zrMXfzgYY X-Gm-Gg: ASbGnctRRwB+YFfiVgRUyueuIPe3cpYgOzEZlim8yVBqNTRPXgMCWpra56qNamR4rZr qYRFo8v1L8Gt4xbcUEPrKQceUEWIAcXIeNweZLamqyFNOwXQTAMWArwjDxGzxgFqewMTTLpjoJB V9vuXuIe2Sye3uJhoAEneBsJWDc9oX1S6B7a88D4eTx6YKMKLUvCpGfzHyZwC1lM40AzWx1hQJ7 r/W1JvlbvodrMWnuxzOePO93CwYD/jFzcMIxKBC8SxiONrP/OjdxoFuJ0TmFWnOLERuhKDAbqI/ +VhiByPiSp5AFqQ9kt29bHXX1uvQcKx8QbjHMiT8drcwA+P2LoYEnwGJGliizQ== X-Google-Smtp-Source: AGHT+IHRlYZehCnayI0/SSWxl0V/woi03L0dMl7UT9bDMYd2zx2ye4bxdeydVicDxirQtf76987GeQ== X-Received: by 2002:a05:6808:38c5:b0:3ec:bf55:e33f with SMTP id 5614622812f47-3f682d02020mr776039b6e.9.1741133354724; Tue, 04 Mar 2025 16:09:14 -0800 (PST) Received: from sean-ThinkPad-T450s.lan ([207.191.35.252]) by smtp.gmail.com with ESMTPSA id 5614622812f47-3f67ee8f479sm299985b6e.40.2025.03.04.16.09.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Mar 2025 16:09:13 -0800 (PST) From: sean.wang@kernel.org To: nbd@nbd.name, lorenzo.bianconi@redhat.com Cc: sean.wang@mediatek.com, deren.wu@mediatek.com, mingyen.hsieh@mediatek.com, linux-wireless@vger.kernel.org, linux-mediatek@lists.infradead.org, stable@vger.kernel.org, Caleb Jorden Subject: [PATCH v5 5/6] wifi: mt76: mt7925: integrate *mlo_sta_cmd and *sta_cmd Date: Tue, 4 Mar 2025 16:08:50 -0800 Message-Id: <20250305000851.493671-5-sean.wang@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20250305000851.493671-1-sean.wang@kernel.org> References: <20250305000851.493671-1-sean.wang@kernel.org> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Ming Yen Hsieh Integrate *mlo_sta_cmd and *sta_cmd for the MLO firmware. Fixes: 86c051f2c418 ("wifi: mt76: mt7925: enabling MLO when the firmware supports it") Cc: stable@vger.kernel.org Co-developed-by: Sean Wang Signed-off-by: Sean Wang Tested-by: Caleb Jorden Signed-off-by: Ming Yen Hsieh --- v2: 1) generate the patch based on the latest mt76 tree 2) update the commit message v3: 1) fixed the merge conflict v4: 1) added tested-by tag 2) removed the unrelated files v5: 1) update co-developed-by tag 2) rebase to wireless.git --- .../net/wireless/mediatek/mt76/mt7925/mcu.c | 64 ++----------------- 1 file changed, 4 insertions(+), 60 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c b/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c index 4c133200c70b..34e7165d1a0f 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c @@ -1820,49 +1820,6 @@ mt7925_mcu_sta_mld_tlv(struct sk_buff *skb, } } -static int -mt7925_mcu_sta_cmd(struct mt76_phy *phy, - struct mt76_sta_cmd_info *info) -{ - struct mt76_vif_link *mvif = (struct mt76_vif_link *)info->vif->drv_priv; - struct mt76_dev *dev = phy->dev; - struct sk_buff *skb; - int conn_state; - - skb = __mt76_connac_mcu_alloc_sta_req(dev, mvif, info->wcid, - MT7925_STA_UPDATE_MAX_SIZE); - if (IS_ERR(skb)) - return PTR_ERR(skb); - - conn_state = info->enable ? CONN_STATE_PORT_SECURE : - CONN_STATE_DISCONNECT; - if (info->link_sta) - mt76_connac_mcu_sta_basic_tlv(dev, skb, info->link_conf, - info->link_sta, - conn_state, info->newly); - if (info->link_sta && info->enable) { - mt7925_mcu_sta_phy_tlv(skb, info->vif, info->link_sta); - mt7925_mcu_sta_ht_tlv(skb, info->link_sta); - mt7925_mcu_sta_vht_tlv(skb, info->link_sta); - mt76_connac_mcu_sta_uapsd(skb, info->vif, info->link_sta->sta); - mt7925_mcu_sta_amsdu_tlv(skb, info->vif, info->link_sta); - mt7925_mcu_sta_he_tlv(skb, info->link_sta); - mt7925_mcu_sta_he_6g_tlv(skb, info->link_sta); - mt7925_mcu_sta_eht_tlv(skb, info->link_sta); - mt7925_mcu_sta_rate_ctrl_tlv(skb, info->vif, - info->link_sta); - mt7925_mcu_sta_state_v2_tlv(phy, skb, info->link_sta, - info->vif, info->rcpi, - info->state); - mt7925_mcu_sta_mld_tlv(skb, info->vif, info->link_sta->sta); - } - - if (info->enable) - mt7925_mcu_sta_hdr_trans_tlv(skb, info->vif, info->link_sta); - - return mt76_mcu_skb_send_msg(dev, skb, info->cmd, true); -} - static void mt7925_mcu_sta_remove_tlv(struct sk_buff *skb) { @@ -1875,8 +1832,8 @@ mt7925_mcu_sta_remove_tlv(struct sk_buff *skb) } static int -mt7925_mcu_mlo_sta_cmd(struct mt76_phy *phy, - struct mt76_sta_cmd_info *info) +mt7925_mcu_sta_cmd(struct mt76_phy *phy, + struct mt76_sta_cmd_info *info) { struct mt792x_vif *mvif = (struct mt792x_vif *)info->vif->drv_priv; struct mt76_dev *dev = phy->dev; @@ -1890,12 +1847,10 @@ mt7925_mcu_mlo_sta_cmd(struct mt76_phy *phy, if (IS_ERR(skb)) return PTR_ERR(skb); - if (info->enable) + if (info->enable && info->link_sta) { mt76_connac_mcu_sta_basic_tlv(dev, skb, info->link_conf, info->link_sta, info->enable, info->newly); - - if (info->enable && info->link_sta) { mt7925_mcu_sta_phy_tlv(skb, info->vif, info->link_sta); mt7925_mcu_sta_ht_tlv(skb, info->link_sta); mt7925_mcu_sta_vht_tlv(skb, info->link_sta); @@ -1946,7 +1901,6 @@ int mt7925_mcu_sta_update(struct mt792x_dev *dev, }; struct mt792x_sta *msta; struct mt792x_link_sta *mlink; - int err; if (link_sta) { msta = (struct mt792x_sta *)link_sta->sta->drv_priv; @@ -1954,17 +1908,7 @@ int mt7925_mcu_sta_update(struct mt792x_dev *dev, } info.wcid = link_sta ? &mlink->wcid : &mvif->sta.deflink.wcid; - if (link_sta) - info.newly = state != MT76_STA_INFO_STATE_ASSOC; - else - info.newly = state == MT76_STA_INFO_STATE_ASSOC ? false : true; - - if (ieee80211_vif_is_mld(vif)) - err = mt7925_mcu_mlo_sta_cmd(&dev->mphy, &info); - else - err = mt7925_mcu_sta_cmd(&dev->mphy, &info); - - return err; + return mt7925_mcu_sta_cmd(&dev->mphy, &info); } int mt7925_mcu_set_beacon_filter(struct mt792x_dev *dev, From patchwork Wed Mar 5 00:08:51 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Wang X-Patchwork-Id: 870476 Received: from mail-oi1-f177.google.com (mail-oi1-f177.google.com [209.85.167.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 AD8D1BA33; Wed, 5 Mar 2025 00:09:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741133362; cv=none; b=EYYiJ9pBUPvBjpwXGTpDj5UZL5nU3qGaf9ybD0vHCUYjJxtVvi1Uj7Wd2eMk+Y1mvl6z1VExbxU4eYcRyyOAst2csKDO2o4RNbtnR0qJyqpvePqaU+Jy7GPg5GQ8NULM0X9pfDGfBLAXSa/pq0smRTMp7VcO9ON3kH27iRuTBlU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741133362; c=relaxed/simple; bh=03DJX5A+t/rFRpYZ7cbvfQOOkyQSZngBdnWGm3oSkjQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=tQOp78VCr/15gv0DUEDJ0h5KUMkvP9X17b5IE/hzqjedmY8UJZhfeDtlwcXzHahHqF62wX79F3AxZg0U3vGRRGGkxTKaUb5dkJRLuUIo5WYUv2LH4jFjRjDhWRfv257fb7VuX2pm/O1bPpQ4jkpNurCIQ0Seukv3W++8A0tiofg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=kernel.org; spf=pass smtp.mailfrom=gmail.com; arc=none smtp.client-ip=209.85.167.177 Authentication-Results: smtp.subspace.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=kernel.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-oi1-f177.google.com with SMTP id 5614622812f47-3f67e40ed03so316845b6e.3; Tue, 04 Mar 2025 16:09:20 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741133360; x=1741738160; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wdMXQ8DVuTg7ZnWdsQQ0oBojxJey5AseHHD1u1BZ0G4=; b=SOK2gaFkXtyHiIQ6ZrM0F5WgP+/WTHpssABF55q1wnjjeIiP51Bu93baLCUdHYEWoY dIVfFCDAiH7OVH8+gpqj/QD7xbr3Ggfw6bnrhEfMpcLwirgpE91+zaHp68/GZeLoXkEB Lsdu8gdJZvA3YIESLSQiMzzHRODLudmXU3AaqWRTAG4E97F34I4bQryDva6whS2V2eoT UKo5WFIbv8HR3bk4jVSdmNcSlRdxe5vgFbkndaoFQ/2J12vK79PjbMPWmlzZAW8eJQTZ 6CqOyYSdOkur2ej0R9Rr603t5g+mMDqHrNJoHa/gu67TJoB60l3hsTrhGxIpDFMztmAa EbRw== X-Forwarded-Encrypted: i=1; AJvYcCUQFVjg3TOXDiq61AO+R7YWf/KWRoKYgbgqRJAX1cb5JzzYl1CtmEADCKpFX7zBmFnQ7cjvSmR1tyhF/yA3Dg==@vger.kernel.org, AJvYcCWAkBrbehmM+NRtxByfl2F35CXNUhNTEo0Q7BnRRRmG7e/kPHWYGyeCRVVJZxEtFVsJFID9cQHJ@vger.kernel.org X-Gm-Message-State: AOJu0YwkBXbFkmF4dqaXDiL+HMxsBT/BUGj4lwjb9t3jwat22XjCcB5o tzbpz7uursZUcioGI9DmaEk+5yqX9fwsbA+yB4YskYBSjeUpRS04 X-Gm-Gg: ASbGncsTohvUxpFgMCw96YUdjFBhx5y6kJPYXxZ/2atUM6VB4qSfe+yUslc+Jxn3WOU 77cgN7JfEwbyjX/lTvTWWYBjewiGRCW7VLjxB6bRdsCbKxJJR5wUQloYEJ67EyuL74cB8oRj54P s9j5hRAOPSgAe/gMNDTmv1WOy6F4ZsRiG+iafiRdqESxAxmzkWMygJLoy1R318ibrZG7yoZ8EH+ MTDiKlweNNl0z9QjdhBejk2ExZfNbdXkOeN4vTwo+auUXe6MY5F82tko04BcCIWv4dPcnYwzaBs gqo8zOs4K9Iexywt4r8c1w7kbMAE0kHP2QEukTb66Q/zcdgpHCy0jqvmp8DdJw== X-Google-Smtp-Source: AGHT+IFahbflM/2sxhPc2hoXIoRKE+629RaJj0eVCjQn7LPrXNp8XwvlKkE+YUuntxdL8oWJdNV5PA== X-Received: by 2002:a05:6808:1306:b0:3f4:10eb:7fce with SMTP id 5614622812f47-3f683229a3fmr564639b6e.37.1741133359660; Tue, 04 Mar 2025 16:09:19 -0800 (PST) Received: from sean-ThinkPad-T450s.lan ([207.191.35.252]) by smtp.gmail.com with ESMTPSA id 5614622812f47-3f67ee8f479sm299985b6e.40.2025.03.04.16.09.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Mar 2025 16:09:17 -0800 (PST) From: sean.wang@kernel.org To: nbd@nbd.name, lorenzo.bianconi@redhat.com Cc: sean.wang@mediatek.com, deren.wu@mediatek.com, mingyen.hsieh@mediatek.com, linux-wireless@vger.kernel.org, linux-mediatek@lists.infradead.org, stable@vger.kernel.org, Caleb Jorden Subject: [PATCH v5 6/6] wifi: mt76: mt7925: update the power-saving flow Date: Tue, 4 Mar 2025 16:08:51 -0800 Message-Id: <20250305000851.493671-6-sean.wang@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20250305000851.493671-1-sean.wang@kernel.org> References: <20250305000851.493671-1-sean.wang@kernel.org> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Ming Yen Hsieh After joining MLO, ensure that all links are setup before enabling power-saving. Fixes: 86c051f2c418 ("wifi: mt76: mt7925: enabling MLO when the firmware supports it") Cc: stable@vger.kernel.org Co-developed-by: Sean Wang Signed-off-by: Sean Wang Tested-by: Caleb Jorden Signed-off-by: Ming Yen Hsieh --- v2: 1) generate the patch based on the latest mt76 tree 2) update the commit message v3: 1) fixed the merge conflict v4: 1) added tested-by tag v5: 1) fixed mt7925/main.c:1245:28: warning: unused variable "mvif" [-Wunused-variable] 2) update co-developed-by tag 3) rebase to wireless.git --- .../net/wireless/mediatek/mt76/mt7925/init.c | 1 + .../net/wireless/mediatek/mt76/mt7925/main.c | 67 ++++++++++++++++--- .../wireless/mediatek/mt76/mt7925/mt7925.h | 1 + drivers/net/wireless/mediatek/mt76/mt792x.h | 9 +++ 4 files changed, 69 insertions(+), 9 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/init.c b/drivers/net/wireless/mediatek/mt76/mt7925/init.c index f41ca4248497..a2bb36dab231 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/init.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/init.c @@ -244,6 +244,7 @@ int mt7925_register_device(struct mt792x_dev *dev) dev->mt76.tx_worker.fn = mt792x_tx_worker; INIT_DELAYED_WORK(&dev->pm.ps_work, mt792x_pm_power_save_work); + INIT_DELAYED_WORK(&dev->mlo_pm_work, mt7925_mlo_pm_work); INIT_WORK(&dev->pm.wake_work, mt792x_pm_wake_work); spin_lock_init(&dev->pm.wake.lock); mutex_init(&dev->pm.mutex); diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/main.c b/drivers/net/wireless/mediatek/mt76/mt7925/main.c index a7464839318e..aea0151d25d6 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/main.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/main.c @@ -427,6 +427,7 @@ mt7925_add_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif) mvif->bss_conf.vif = mvif; mvif->sta.vif = mvif; mvif->deflink_id = IEEE80211_LINK_UNSPECIFIED; + mvif->mlo_pm_state = MT792x_MLO_LINK_DISASSOC; ret = mt7925_mac_link_bss_add(dev, &vif->bss_conf, &mvif->sta.deflink); if (ret < 0) @@ -1242,6 +1243,8 @@ void mt7925_mac_sta_remove(struct mt76_dev *mdev, struct ieee80211_vif *vif, { struct mt792x_dev *dev = container_of(mdev, struct mt792x_dev, mt76); struct mt792x_sta *msta = (struct mt792x_sta *)sta->drv_priv; + struct mt792x_vif *mvif = (struct mt792x_vif *)vif->drv_priv; + struct { struct { u8 omac_idx; @@ -1283,6 +1286,8 @@ void mt7925_mac_sta_remove(struct mt76_dev *mdev, struct ieee80211_vif *vif, mvif->wep_sta = NULL; ewma_rssi_init(&mvif->bss_conf.rssi); } + + mvif->mlo_pm_state = MT792x_MLO_LINK_DISASSOC; } EXPORT_SYMBOL_GPL(mt7925_mac_sta_remove); @@ -1354,6 +1359,38 @@ mt7925_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif, return ret; } +static void +mt7925_mlo_pm_iter(void *priv, u8 *mac, struct ieee80211_vif *vif) +{ + struct mt792x_dev *dev = priv; + struct mt792x_vif *mvif = (struct mt792x_vif *)vif->drv_priv; + unsigned long valid = ieee80211_vif_is_mld(vif) ? + mvif->valid_links : BIT(0); + struct ieee80211_bss_conf *bss_conf; + int i; + + if (mvif->mlo_pm_state != MT792x_MLO_CHANGED_PS) + return; + + mt792x_mutex_acquire(dev); + for_each_set_bit(i, &valid, IEEE80211_MLD_MAX_NUM_LINKS) { + bss_conf = mt792x_vif_to_bss_conf(vif, i); + mt7925_mcu_uni_bss_ps(dev, bss_conf); + } + mt792x_mutex_release(dev); +} + +void mt7925_mlo_pm_work(struct work_struct *work) +{ + struct mt792x_dev *dev = container_of(work, struct mt792x_dev, + mlo_pm_work.work); + struct ieee80211_hw *hw = mt76_hw(dev); + + ieee80211_iterate_active_interfaces(hw, + IEEE80211_IFACE_ITER_RESUME_ALL, + mt7925_mlo_pm_iter, dev); +} + static bool is_valid_alpha2(const char *alpha2) { if (!alpha2) @@ -1903,6 +1940,9 @@ static void mt7925_vif_cfg_changed(struct ieee80211_hw *hw, mt7925_mcu_sta_update(dev, NULL, vif, true, MT76_STA_INFO_STATE_ASSOC); mt7925_mcu_set_beacon_filter(dev, vif, vif->cfg.assoc); + + if (ieee80211_vif_is_mld(vif)) + mvif->mlo_pm_state = MT792x_MLO_LINK_ASSOC; } if (changed & BSS_CHANGED_ARP_FILTER) { @@ -1913,9 +1953,19 @@ static void mt7925_vif_cfg_changed(struct ieee80211_hw *hw, } if (changed & BSS_CHANGED_PS) { - for_each_set_bit(i, &valid, IEEE80211_MLD_MAX_NUM_LINKS) { - bss_conf = mt792x_vif_to_bss_conf(vif, i); + if (hweight16(mvif->valid_links) < 2) { + /* legacy */ + bss_conf = &vif->bss_conf; mt7925_mcu_uni_bss_ps(dev, bss_conf); + } else { + if (mvif->mlo_pm_state == MT792x_MLO_LINK_ASSOC) { + mvif->mlo_pm_state = MT792x_MLO_CHANGED_PS_PENDING; + } else if (mvif->mlo_pm_state == MT792x_MLO_CHANGED_PS) { + for_each_set_bit(i, &valid, IEEE80211_MLD_MAX_NUM_LINKS) { + bss_conf = mt792x_vif_to_bss_conf(vif, i); + mt7925_mcu_uni_bss_ps(dev, bss_conf); + } + } } } @@ -1966,11 +2016,12 @@ static void mt7925_link_info_changed(struct ieee80211_hw *hw, if (changed & (BSS_CHANGED_QOS | BSS_CHANGED_BEACON_ENABLED)) mt7925_mcu_set_tx(dev, info); - if (changed & BSS_CHANGED_BSSID) { - if (ieee80211_vif_is_mld(vif) && - hweight16(mvif->valid_links) == 2) - /* Indicate the secondary setup done */ - mt7925_mcu_uni_bss_bcnft(dev, info, true); + if (mvif->mlo_pm_state == MT792x_MLO_CHANGED_PS_PENDING) { + /* Indicate the secondary setup done */ + mt7925_mcu_uni_bss_bcnft(dev, info, true); + + ieee80211_queue_delayed_work(hw, &dev->mlo_pm_work, 5 * HZ); + mvif->mlo_pm_state = MT792x_MLO_CHANGED_PS; } mt792x_mutex_release(dev); @@ -2054,8 +2105,6 @@ mt7925_change_vif_links(struct ieee80211_hw *hw, struct ieee80211_vif *vif, goto free; if (mconf != &mvif->bss_conf) { - mt7925_mcu_set_bss_pm(dev, link_conf, true); - err = mt7925_set_mlo_roc(phy, &mvif->bss_conf, vif->active_links); if (err < 0) diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/mt7925.h b/drivers/net/wireless/mediatek/mt76/mt7925/mt7925.h index fd5f9d4ea4a7..cb7b1a49fbd1 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/mt7925.h +++ b/drivers/net/wireless/mediatek/mt76/mt7925/mt7925.h @@ -268,6 +268,7 @@ int mt7925_mcu_uni_tx_ba(struct mt792x_dev *dev, int mt7925_mcu_uni_rx_ba(struct mt792x_dev *dev, struct ieee80211_ampdu_params *params, bool enable); +void mt7925_mlo_pm_work(struct work_struct *work); void mt7925_scan_work(struct work_struct *work); void mt7925_roc_work(struct work_struct *work); int mt7925_mcu_uni_bss_ps(struct mt792x_dev *dev, diff --git a/drivers/net/wireless/mediatek/mt76/mt792x.h b/drivers/net/wireless/mediatek/mt76/mt792x.h index 32ed01a96bf7..6e25a4421e12 100644 --- a/drivers/net/wireless/mediatek/mt76/mt792x.h +++ b/drivers/net/wireless/mediatek/mt76/mt792x.h @@ -81,6 +81,13 @@ enum mt792x_reg_power_type { MT_AP_VLP, }; +enum mt792x_mlo_pm_state { + MT792x_MLO_LINK_DISASSOC, + MT792x_MLO_LINK_ASSOC, + MT792x_MLO_CHANGED_PS_PENDING, + MT792x_MLO_CHANGED_PS, +}; + DECLARE_EWMA(avg_signal, 10, 8) struct mt792x_link_sta { @@ -134,6 +141,7 @@ struct mt792x_vif { struct mt792x_phy *phy; u16 valid_links; u8 deflink_id; + enum mt792x_mlo_pm_state mlo_pm_state; struct work_struct csa_work; struct timer_list csa_timer; @@ -239,6 +247,7 @@ struct mt792x_dev { const struct mt792x_irq_map *irq_map; struct work_struct ipv6_ns_work; + struct delayed_work mlo_pm_work; /* IPv6 addresses for WoWLAN */ struct sk_buff_head ipv6_ns_list;