From patchwork Wed Feb 26 02:56:42 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Wang X-Patchwork-Id: 13991431 X-Patchwork-Delegate: nbd@nbd.name Received: from mail-oa1-f54.google.com (mail-oa1-f54.google.com [209.85.160.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 E73FC2AE7F; Wed, 26 Feb 2025 02:56:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740538614; cv=none; b=QP3LzDT0UrQ9OURjC0gGe8DneFJv9K6XbzmEqSiF1kIRormdx3JmYl6X6KXiwo4Pmtw/gW9bTduD3FJqG1Rh/GllU6GaDLdSDqw6RrFa7lwKbvppfpejYAQ1DUzQ6brq+CK199xAC5sJbDMHiF6XRi446kNTGa3+KTA26qGIvxo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740538614; c=relaxed/simple; bh=dxWFre1PqnGEfm8+97WeMgiXHFjOi4wavGCeSR/d7Bk=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=sCFKhIY8AzzNFATmVbERtOccFZpsla6bGRzzLDz7VyOUaFzGUHSF1PUPi9mUNJeBA9Bqr9RV0QkctTul/ylYFgzudYwbmrYJevQ5l9C+6niksTGKKAiony+57bpsStAlGc7GSNoxetEh7BHOLgrpQoWqZMev3zyNsRjXU+0ephw= 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.160.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-oa1-f54.google.com with SMTP id 586e51a60fabf-2bc56e74e75so3302896fac.3; Tue, 25 Feb 2025 18:56:52 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740538612; x=1741143412; 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=dFB2FQZDy728LR2oVXqYPx5IKjU9F4S0qm3mUOW2x/Y=; b=ws2+MPO46+KqLCwYnJ3zNVsIvxSaDXOk1BQB4svNqqn6YfP4EJhpd+Gv+V6hvnhc6J udK+J3r5r/wixAF3QIFN1IdeDWkaPVWmhr85+QCMQKcKenWA3aZMsq1LBMnMBaAU6mGy eH7ETVnBODKMe0NvIGZJ3Y+/aY3O7Rb8IQ57YyBu4a1SXeUqaLUv4LanJB0FSmc5gLoF 8sqF9/pgxbxZSal1tZRTAf/rfaTCRkMYP0DyrlFGTs/ndepOKhqdNYPLqBQw93XiAV+0 wLXr3fiEt19NT1WON8StYl3HhDibrAc8tPZsdXeoND4JkTSmQhdQBR6cjzT9LAM2mvNK TSSw== X-Forwarded-Encrypted: i=1; AJvYcCUsLxkfRbwLoxSioOn1GGAh8EA2ey+AAxbmds6gNPgcYWeSlVAOU8lMSUi1UPbMr+eLI96hFXmV+Du2Qi5CKA==@vger.kernel.org, AJvYcCWH4ZEN0MMNq2av0lUtAHV3Hx+Xdm4z33HgBtsy/8x/VM8sbWZjtEPItcda/I3+zR9hohh1nWI6@vger.kernel.org X-Gm-Message-State: AOJu0Yzx64XHTMPfS59Ldd2V/Tqf7UEi+PEgOZ2UMDlI3yi9ycJPiIKy STykIhf3/rPsH+FPuByS0ltLthVEH17UtgcyAFM6PFYlWsYDmcHY X-Gm-Gg: ASbGnctZJnulNgYtzBta5KxWUhv4UUSu5JlauBrA1WCtKJ1wjib87objofmyZD9fRby QOyRAbpCan4A9OmsGFpTMIkv7vlsfNrl8vDQY+sPOYiZoid58g+tiga4+bKZtrG9Gv3VdU9o+EA jaXm0u/F/qtgFUud2/dRulWSfTjiQGGUVoMBtF0oAhz59zsAaJFGu/rw3o6Oiixh+aAYjHY+lNI SeJr0T3GayEwdkH9XKec+yc/L/F26o3WbMeIaEdH1mLFTjUxQ1XxlJOV/n3pVd6AtzYJyz76Zvc ZpT1bpIJ5FXWhcJYWlIXqU1SfVXaic/Q+2JYAstUUoU= X-Google-Smtp-Source: AGHT+IHmwTTDvrBamsH9SHOSAyCie3DX9via90/cp21qptTv4gjlI8FuHuK5o3aDlvrSKUjqZLEcWw== X-Received: by 2002:a05:6871:eb18:b0:29f:df6d:999b with SMTP id 586e51a60fabf-2c10f533092mr3549074fac.39.1740538611881; Tue, 25 Feb 2025 18:56:51 -0800 (PST) Received: from sean-ThinkPad-T450s.lan ([207.191.35.252]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-2c1113f0135sm676360fac.27.2025.02.25.18.56.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Feb 2025 18:56:50 -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 v4 1/6] Revert "wifi: mt76: mt7925: Update mt7925_mcu_uni_[tx,rx]_ba for MLO" Date: Tue, 25 Feb 2025 18:56:42 -0800 Message-Id: <20250226025647.102904-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: e38a82d25b08 ("wifi: mt76: connac: Extend mt76_connac_mcu_uni_add_dev 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 --- .../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 Feb 26 02:56:43 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Wang X-Patchwork-Id: 13991432 X-Patchwork-Delegate: nbd@nbd.name Received: from mail-ot1-f49.google.com (mail-ot1-f49.google.com [209.85.210.49]) (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 A1B022AE7F; Wed, 26 Feb 2025 02:56:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740538618; cv=none; b=mlMpLPCQCNTg30yMEKyNWy2U/u80b2V4ucX3051LH/1rEr7w97y+J9+4Fux1OznA/l/7qBUly5pZ3jvlSksIYNPC4E7tkYcD2FFqHJvD7hCH76c+kqLttf4MpfjPBOUEKZioW4lEkiyuYoPv+dgUzACJ+2816CEbuEpwYiQ0ThU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740538618; c=relaxed/simple; bh=3KH/fDA0ez5xh/in3CQyjrV/0wNYSTW1hZjSjGjkkV0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=lOP9bkIf4fF+cQjg8AZ8ICGiWzJgmRhT6OZJLwrrY55fGgheNlNjX75QjNmuSbL9NIpnPl0SHJ0upPngSJDklRydyfYo8CclDqKIxdUVPUi5yt2y8WvkhNQL/DM9NBz7yxvDrP9ccRwxyH8V7OzEfABGaHvBYKWd9CzNnwXXa1o= 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.210.49 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-ot1-f49.google.com with SMTP id 46e09a7af769-72737740673so2789632a34.3; Tue, 25 Feb 2025 18:56:56 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740538616; x=1741143416; 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=ijn9Zs6TtjyptoPH/X9sgnzFhdzKOSXw5uRjIenFZHg=; b=qIa641CcikFPHLB2o96cTd8rby0eoTde8TtVqfY5c9VhQkCG4zjVa/gSvPlWKacTZO ugqmfloCUIESsEwZNheskhQfmsX193XjfVRiRuKxhP+mszCfenv87l89sWtmazj1zbeD 1i4aij5b6Tt2wc7wyVEv0OcNWTc79SEGEg4Ax9pb/dMJH07FwFmqC7Z50kTS7d/rJljy 9YPmenHKiq7IjN6Ydjgsz5SqnNB60RUqmh+u9syhDQQgo2WbIP/bLzy+iz75yihwx/mm Snf5gMZGUZDcx5sAds9QtFnyoQ6IoNRQbtP6CXgQeZLKuvD9COIzTp0pGlK8nvO3nLau MkCw== X-Forwarded-Encrypted: i=1; AJvYcCWezsS5e7U5bG0kBVFwENNSl15QrCg3jdDOO0d3rXC7+UYbpuj+n0FBs7NyvyzHtpbMDLkeD1xI@vger.kernel.org, AJvYcCXWEJBj6RNoEIZTbjmm65D1eNbCNvuukdUD0NwmqQ29N2peoQzAG+URPOF18uhbOQ8iV9AtOaBbQJIWZsJtcw==@vger.kernel.org X-Gm-Message-State: AOJu0YzRxd7ISC5JnHzeIGeAONTWctiYE9nubQrTnGmbDjp4dWSsSWd7 UwlBiaDCXBHMTqFYFs783e9BT5/oC3yAsjx3O38IWquN3qq97Nkc X-Gm-Gg: ASbGncut3i4sXW2GFWAf8dYI2IRSad4T6m+Y+hfNm2VQsequY6EK2Z31Deh1LftIB8u wfINUp25gsbLrZ513dX4Eiq3+tdmF5ueSl8m3b6HD5AtFdNkf7QOMhOPed2BeHjZxQfXTevaUmk Fco0lKef4svHjamds1qt4+pi0dCyKxuiKTnaI6MrpxLZezuwRjMrpwKN3z04wKVcsCyfCJVrWFE g41kCI/917GkL69kcm+4RJ311SLAljHx89ONi3vbad3h1ofcGwpYntwmH1SVGlT+JlF3dtG/wcr FS0625TyO9A/z0qvP5hpwgwkBxI9KC5iSOKfQZYY6sU= X-Google-Smtp-Source: AGHT+IH/v3xoOO5kFnmYW8uOZZ7ilJPTZbKGNYJW6EP3vASjM841Y2AYzpuzLLNxk+lzIh/mqbbErQ== X-Received: by 2002:a05:6830:412a:b0:727:2ff3:e046 with SMTP id 46e09a7af769-728a521c06dmr1013357a34.22.1740538615741; Tue, 25 Feb 2025 18:56:55 -0800 (PST) Received: from sean-ThinkPad-T450s.lan ([207.191.35.252]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-2c1113f0135sm676360fac.27.2025.02.25.18.56.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Feb 2025 18:56:54 -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 v4 2/6] wifi: mt76: mt7925: fix the wrong link_idx when has p2p_device Date: Tue, 25 Feb 2025 18:56:43 -0800 Message-Id: <20250226025647.102904-2-sean.wang@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20250226025647.102904-1-sean.wang@kernel.org> References: <20250226025647.102904-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 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 2) removed unrelated files --- 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 Feb 26 02:56:44 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Wang X-Patchwork-Id: 13991433 X-Patchwork-Delegate: nbd@nbd.name Received: from mail-ot1-f46.google.com (mail-ot1-f46.google.com [209.85.210.46]) (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 5B6202AE7F; Wed, 26 Feb 2025 02:57:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740538621; cv=none; b=q1y2AIu914H4IQCAZU8s4/aQel0LYHW0aWnwfobw08haHpWyVYKDYljyaj6wXAVgzEGGVealof/hycqTMc6BtVrvrljbmIPrmcXMComrLXuiZCsrsUoIj0VPWEFh7isqDKORLTW+jIFF7ZJBTriWqBH6LycS7fHJWJe5iROU/WA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740538621; c=relaxed/simple; bh=ODSpIx3EESNjHncI8MxY793ZC2PIPsY7Y5SFJDVU/xU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Jj7WYz+jiomuu3RvX+TGMkE33db6UenOhM6eAUShXsP76xsM7fwjTtDQbEhKt8QNYQls8xmyjF4xwXq/DZ2th1rghZfxSBg+zZTYwK3NHi0AkNuFpWMyERNbQCE+eN4HbC2/LuFzhKj5vzNpN6G9hu+vLy60RtbO/C9KHPBmaSg= 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.210.46 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-ot1-f46.google.com with SMTP id 46e09a7af769-7273b0d4409so1547841a34.1; Tue, 25 Feb 2025 18:57:00 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740538619; x=1741143419; 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=4VmNKfDBeT2r+sunfTq9ySMJ9kY9GvZ3/jQtVX3LyqY=; b=Dwv8Cqv/2b9ReJB65MFKtAyjncOvrX7JXdQ08TzvgPxB1yddzTYk8LKZK33moEKQ8J FzEPAoOpY1n5fRqn1T9rv7BU83nO4z+Cem7S4LfQbtYp6CHrn6nmY92QphAlYyO+qf69 SOtwmjdWI7tUGV9goEurxmbLKtzIlHNscQJ+KYqIzQvOUikgzMxqyQ5w8/KJ3LI/ROXb 0qrb9EwX1yNsb+8e14r9rcMA/53C3BBcZ2LKeQnDKVT9zJMxjbGkeZEe5nvnI142sFZy B5nNh2PE4MEoPb2z7QNKzm1e5wf/T68umnERAxuKO9lg9z5f+rEX8/lv5ydj/F23mgXQ VFaQ== X-Forwarded-Encrypted: i=1; AJvYcCU6Qv4umilE7pT4+Ck0l4z8tUkx7ZQststvzQH6rECBqs1dYE9SUqEV6lxfHU1d/MdTj/3gi/9Z@vger.kernel.org, AJvYcCX52uJSsxT+bFuBOUrKs8T0A7uhSiIb2M/rMPDNK7jIH0Z7tACTMGxWn9iqv3atBgZU6DBjMe5delgEvexLrQ==@vger.kernel.org X-Gm-Message-State: AOJu0YzVTN3jVARwnLwAW1F0moQJDqsoQrIa1tERN3Gx+ZIG0sOG9jAo Ss9ViruQutMFv1Vl6e78pK+tVQ3EoN0S4BV/ni2zZczzAuPSmoCY X-Gm-Gg: ASbGnctJMvdOcYi2ejyhBrEvM0z2GpKqAu6NBIA6eZL90rZ0H9LN7dGWku1McL2biYy PipJYF7Xkbb59QDciMitn0vTpBnu8T1+LdObQ6ul3ejX+RT9SzCrFD8OzCM5VBWFBGkduc06qcW b8DrOm/72itPm4ub4PZvi1JF5vo86BNCEuCWFujXpGR7f6Via2AVTjjVdV+YECegnIVKf6vS4Hp 7IhpYnC18/W18FIuYeL+BfOO1QsNiti1xmDH8EiJBwGwOosYE4udgLpdaqnpyCtA/LVxvwkTDmf YPmsQUJHVyzIxAGVro+7DfStsg0ynoP/EeDwuiPjEdM= X-Google-Smtp-Source: AGHT+IFiUnxL+4G0l2kiQXu6jPoju3mD9QkYVvUkz+KEOIYzU+4oe5AsYRZuU8AunD+nl3yeKCZrdA== X-Received: by 2002:a05:6830:8d2:b0:727:38a9:c203 with SMTP id 46e09a7af769-7289d197965mr4381520a34.25.1740538619373; Tue, 25 Feb 2025 18:56:59 -0800 (PST) Received: from sean-ThinkPad-T450s.lan ([207.191.35.252]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-2c1113f0135sm676360fac.27.2025.02.25.18.56.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Feb 2025 18:56:57 -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 v4 3/6] wifi: mt76: mt7925: fix the wrong simultaneous cap for MLO Date: Tue, 25 Feb 2025 18:56:44 -0800 Message-Id: <20250226025647.102904-3-sean.wang@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20250226025647.102904-1-sean.wang@kernel.org> References: <20250226025647.102904-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 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) add tested-by tag --- 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 Feb 26 02:56:45 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Wang X-Patchwork-Id: 13991434 X-Patchwork-Delegate: nbd@nbd.name Received: from mail-oa1-f50.google.com (mail-oa1-f50.google.com [209.85.160.50]) (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 375592AE7F; Wed, 26 Feb 2025 02:57:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740538625; cv=none; b=iTus9E4oWqTB3pEDOvjwRp+0+5StwX8WaTLha0BaaA2hY7e0yWCrqU38ZpS4dndxLyACQndrl1GNwj0AYbPho8ULqEq5njaiyfWQzX0UVVq35ujBw1YaYKtU8GHwY3XXpmr28xWoSvwmObT4OX7eMrtHBuvgtOJnb7gqLjAgEUI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740538625; c=relaxed/simple; bh=2MpSsTcl+qQB4fca4ia9+Qrg9K12jCYxNhWYkIhsmWs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=CmpyVM4npFimBPxfh4B1zJfgUAsITBIVx/3hJuTQf5gj+6DXw+pjsU2oZaZAgJxz+jmsrIV5sgfBqPIEy86OU3HJ5Uy5vLfsLNc3p7Q1TZqOCB9eTVu4ato8eoRqPYrarSZ9fVJZLV2kVvwBHRFqLUDslMXYD05IxG+R/Q38siE= 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.160.50 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-oa1-f50.google.com with SMTP id 586e51a60fabf-2b199bb8af9so288230fac.1; Tue, 25 Feb 2025 18:57:03 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740538623; x=1741143423; 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=4vXi58LyDy1GWYlC/u6cuTmKczjfEVwi6s+UDBBfxoY=; b=C6v04v/4MrSDzdfTjbnvu6jyVYA9SK19GDrlA+MUBgZUTd1Eyxt7oz/FOOJe5Vz+9f pLEffFdLJPKY0QPltgGGV9Q9nOAjnRxfHdMITemk5Q/R3x6XBqGSkxCvsjjUQroDIbo9 4Mv/VtzR9ilAUY9C/eKedGNMnLJOsZ/N3r1QYDYTX07iYI7ZfMbOHo35oJ/N8eJy32si jLpTF0LrCPWSp+xDMrj/WMXe4tia6UpA1xwv6jVRsD9NWoyN+L3/YJ9NnJF8zFDJkGM3 WdvtYODp5uwvS7/xt4/YhkG1/aGCZtmUIx8Ee0yqsU31d1MuTnBPFjdSOUWKI7ODMjbK AtQw== X-Forwarded-Encrypted: i=1; AJvYcCUTsJzFzXuy5Ude688f4XbcJOO+0p8Yl1HIdcX2J5+BBvAWi9lb8mMZPMDlaGl0qw5bE0Gf0NUrrMADOJ/E9A==@vger.kernel.org, AJvYcCUrry3wVZNFUNk72/DsDf/PnLLkzdXD6G1JXulE8P9fT/k0wWQ0sKoK/sIVPp0p7UialvfCuVH1@vger.kernel.org X-Gm-Message-State: AOJu0YzumSjt6b2Hjl2FPmOIh+sOnqAhNqe/rlm8vnbHcB5eWSUliznt ppz207a5nZn+aeZBVoxc7/dF0St3NL54ZBNaWND8RSwRVeBezaVwB48EVPK8 X-Gm-Gg: ASbGnctBZSB+RA/inXLIarQmVCDcu20sD4rKlyL1qpFwaVuZVPWmGtIdqIVo+42Ow4k zCbrshNQoq5cngK83uSyTtU4cmFBNc4QzDtdxE7LL4IH4AwqEMRx4m+G2JcQDrszDSVt80KyiFh VQl8AY8spspf58rKQ2IpiZYlW/w7bXUru5c4REBwTU7OC/cBRchi0N52UDgV7K1QS0bf4swiaMT MwtwiNIAtz947z5JFqIayiOj5DOqWaZKq+D4g/2cJUMo1KNNkkzSpNQFdApy8WfX4mQlWO5lSkf l+DG1Qby62pG8xobxTQhUhwRbUZWkoo6NZGvEPQIP2Q= X-Google-Smtp-Source: AGHT+IEIugqduV+RGP3uvFWYUDXl+R6/9G+jIQ080D5wrSR6I8qtMlDHw/vEuMSZFevfVt5/TORrow== X-Received: by 2002:a05:6871:6a7:b0:297:281b:fb6d with SMTP id 586e51a60fabf-2bd500303f0mr14238536fac.3.1740538623206; Tue, 25 Feb 2025 18:57:03 -0800 (PST) Received: from sean-ThinkPad-T450s.lan ([207.191.35.252]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-2c1113f0135sm676360fac.27.2025.02.25.18.57.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Feb 2025 18:57:01 -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 v4 4/6] wifi: mt76: mt7925: adjust rm BSS flow to prevent next connection failure Date: Tue, 25 Feb 2025 18:56:45 -0800 Message-Id: <20250226025647.102904-4-sean.wang@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20250226025647.102904-1-sean.wang@kernel.org> References: <20250226025647.102904-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 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) add tested-by tag --- .../net/wireless/mediatek/mt76/mt7925/main.c | 45 +++++++++++++++---- 1 file changed, 36 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..4a9f393b45ba 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; @@ -1212,6 +1242,7 @@ 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; @@ -1242,14 +1273,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 Feb 26 02:56: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: 13991435 X-Patchwork-Delegate: nbd@nbd.name Received: from mail-oa1-f50.google.com (mail-oa1-f50.google.com [209.85.160.50]) (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 A552D2AE7F; Wed, 26 Feb 2025 02:57:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740538633; cv=none; b=Zjbm7gl2+UaI6iibxbCI3c3jtp+MYRbn+BTz2miByFsOgqEm5wKFOcQnOxmD+dLv+T0Cbwq25o3HcGBu8mURUPisxXCUQFnYPPVuQVAWT94xX2g79CRjQBQksX0nHMpWW5ObS9eLdB15lh1aoFCdjd3fi0I+zSK1IOEr4CtaWYM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740538633; c=relaxed/simple; bh=SWbVttSZ/38nhWtiYs9QI/3LHl/kIb3YAqwXCEaS6Eg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Em4Ck+1RQqx74yMVfowuxEoZHt82Om9i3drcWfL7f2XhAk2AMxQ0k1WRWCcFCcCX4G8PONfHdnnv/qXxGoU/i4W62WuVDG85a9sO5qle4RJ3saGAc9cgmtHU9vLR4LKw8bmNm3ayNisWeJQX34Lmkof82w/bfElx7qGr4IbKsA4= 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.160.50 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-oa1-f50.google.com with SMTP id 586e51a60fabf-2bcceee7b41so1309741fac.2; Tue, 25 Feb 2025 18:57:09 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740538628; x=1741143428; 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=ky/E/gk2IbGf3P6mKrf8CYE7N91ey2oDG6HZ3mRTMOw=; b=PfxXzAzULsCkDeuKfJSmWfwfwr8QkVvnp6OXBUfok0izywAwnlhBevAEMJmV0/9wGJ kH5zURf9M8cYJ3r5b+ot5ZBhtal8gzdgGblO901Jac7h1CtlPFziiFSJkvHrv2zkAwyx 7ZF102CEcUIj8Pe8oC3I1AqabY7RVoMu8i4NkFl47bEOAjRRhbv5c8Aayzq3l+vFseK2 pctMH1bfDWjqQaPfsjmXsy2eHDLhSVVoCqE6R1CeMyxCSt2wn1n1wjL125VqMgVQsEN4 Fxc6Sk3lqIGsLSrqpWdepSfCRl0LY3d+Ytej2ZadtVHBM09TmESRhNu0gmTNZ9oasYOc GIYw== X-Forwarded-Encrypted: i=1; AJvYcCWIYLlAznpxT3Z2LUuGivod5MdN16odhalT5AnOPFkEyiOA/3eA8Zg5/+s4/jCHZd8pLMVZUEqQ@vger.kernel.org, AJvYcCXFFWAIutL65A4/LVlpsEa6dYJifjI3kvCGypQLMBTHOeCbpnwVZPbGxaX53nsQqRUP1atDRlTuTX2k59LHlw==@vger.kernel.org X-Gm-Message-State: AOJu0YxU7/lKxq5FWHCCt9qddPUBjsKETdIyHLw0wS3cQwFmk8vtr9qC wfasCbmTaA6opxA0npaSvQLkD10oG7TTOal8RDMFffDTbfXumZLbpiXaH/Jh X-Gm-Gg: ASbGnctCT8jPtDtYFOC7zhRw/FHW2z9a0gPf2JBPCZg2bSQay4XMkyI0mrqcE/txCYG a0/oOyAVwad29JhB8jdEmqULpB7hujtnI1mshFOqA7Z9rDpGRO9rTIUotvgLTo910mL4X+xH+Z+ wAL+M2zR8qTtVjUj/J29lQVp7MQOSo/4OI3GSn2hAbRl90tbSAtMzPMgFg1KNhf33JZ2yiB4U8q ff2FqBxrJxurdR42Fd355ZRnqLHPdbEbhj2Qx8dmg7jl+QONvK0ZZz75CELJsUpaPNs4c+88o0J pgUOnqDT5hRIUaipqVUlAGY6gNi4HBKo+LIa7+V7CwE= X-Google-Smtp-Source: AGHT+IEtZju1Rl1egzmGRBcenriEnSnl7o/IjuwHVbSdPyLu15BX9lgZop131Px3youvTRzGGC10tQ== X-Received: by 2002:a05:6871:d217:b0:29e:7a13:1341 with SMTP id 586e51a60fabf-2c10f1d2310mr3493852fac.8.1740538628675; Tue, 25 Feb 2025 18:57:08 -0800 (PST) Received: from sean-ThinkPad-T450s.lan ([207.191.35.252]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-2c1113f0135sm676360fac.27.2025.02.25.18.57.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Feb 2025 18:57: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 v4 5/6] wifi: mt76: mt7925: integrate *mlo_sta_cmd and *sta_cmd Date: Tue, 25 Feb 2025 18:56:46 -0800 Message-Id: <20250226025647.102904-5-sean.wang@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20250226025647.102904-1-sean.wang@kernel.org> References: <20250226025647.102904-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 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 2) removed the unrelated files --- .../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 Feb 26 02:56: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: 13991436 X-Patchwork-Delegate: nbd@nbd.name Received: from mail-ot1-f47.google.com (mail-ot1-f47.google.com [209.85.210.47]) (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 0194A21C192; Wed, 26 Feb 2025 02:57:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740538639; cv=none; b=UaBfVgldahe0l8F7Q6zuU+igk49k2+cct6l9p/eHHa35WF/qoC5zYnwio9WbAm2II6L2XekQE7t3fZ6yYKZnradXr/knsawGjytCJh2OxKYPU5xx+NyYhQr624Som2QfqbAbkxrNwwuQ5QwDUpMbp1JisbFeO6P+ShP5lq2nP9Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740538639; c=relaxed/simple; bh=Yk8LWT4MDFrRDksF8SvP0T2kh44WZgon5tQvuMZn8Co=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=nLmudUEadEeQ3iXoKupLPx5+36yPPvbAO9Wpc1YSPFT9VDdSd5E/zWTusev2CCoLSkmELM0bwuEUBu4eGj5wi/WD6FJtuSUP9Ws6qhJxI6hZ7Nkp24OGy2tYy8IGtEmrUCqw51f2waYbWZEud4hmYQ92/z6yidvCeI0fqTcOsTg= 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.210.47 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-ot1-f47.google.com with SMTP id 46e09a7af769-7273f35b201so3322277a34.1; Tue, 25 Feb 2025 18:57:17 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740538637; x=1741143437; 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=V4Gi5oLcnu13m4QqfB45wOY6IeSYSo6Ivw3GwbQxIL4=; b=fF12mJGz8/WNsUpcJyHsTADw2zQrIE8wzxHPNKfvSXHTzryjcwkA+A2RQz9AogUbyK pwyzx1GyICi6640pQUVhOJAoP6OBjkQvQXjfcKj1RLuZi1If90iI1kRJ9NI/92TaFi2h 3aAEqPDegoitHpYLlz/n6QpfZBwbBEzkbPYowJQmV1ne2Uevt1oKVHon1UwOS5lpnKrQ L4pNpYrIScIISJdH7m6u4+KdvlI2shUC28kUy0tilMr29z2qydEJL1dzfITisXz0BrDc Uy09IxjaDjt9jjW3z6VJtJbDUZoXVuzUWhEbswNxoNBGSOg+hCLKfSfCS16KMAHnp16N 47WA== X-Forwarded-Encrypted: i=1; AJvYcCV7lT8FZc15+zZ8OB0CEU6zt3cM+w/X9PglxUX5WmphvgD32EsF55swSBl7MGV5yvVrGEDWyY2ETivoba5DeQ==@vger.kernel.org, AJvYcCW/ykgSzq09X34Ano7y3IILCd+/oaWAtlxQQrExy+DXKWXAvPNxpIFs2OWSNge5vL/47+a4JK7u@vger.kernel.org X-Gm-Message-State: AOJu0Yxi8Z5OO8e9qhtYWjspd+g9bjTKL2SMUUEerz9KvGORXq5LcvN3 lJdSXrgBRgc1Lpag2Wh2lhbziHoWw88Ostt9tHLx51Z06GQ9Ttir X-Gm-Gg: ASbGncv7fr21sSX0VyirvUt9lpT8LCoE3GtsSjd16iLpm179yC2zlp2sOmwZFUeyvpF RCq4BILxlzcGBdBAKqvMIGoRgMgAF3zicrxtXHLltZGKhNNPTp2un05A2I6cS451k4t6Wh4EJvu MH+lbxqGAcaEU1w59ed4VWsXxUg+Mk1BghQvSgP9V1hts9rsne/FU+hOIvaRHfvPJJL+1hFai2q uC9t5zpcNxjGtoXMHahOCDiJv78FNqQaAiKWsOimMeIJILi0xh/UbgesNIMbyX8y4UXM2OgFi5X W58THgGqn2iYnjXS20eFughiJKOpnkK5gIFp8jHI9q4= X-Google-Smtp-Source: AGHT+IGsp1z/zREzEGPS570DiATvLdI7NdTqzP+4QxfZKU3Y/BqW1Jyn1C1SsdTmTBZv6xAjGL3bww== X-Received: by 2002:a05:6830:6706:b0:727:f9a:8aea with SMTP id 46e09a7af769-728a50c73bamr1093423a34.4.1740538635443; Tue, 25 Feb 2025 18:57:15 -0800 (PST) Received: from sean-ThinkPad-T450s.lan ([207.191.35.252]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-2c1113f0135sm676360fac.27.2025.02.25.18.57.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Feb 2025 18:57:14 -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 v4 6/6] wifi: mt76: mt7925: update the power-saving flow Date: Tue, 25 Feb 2025 18:56:47 -0800 Message-Id: <20250226025647.102904-6-sean.wang@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20250226025647.102904-1-sean.wang@kernel.org> References: <20250226025647.102904-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 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 --- .../net/wireless/mediatek/mt76/mt7925/init.c | 1 + .../net/wireless/mediatek/mt76/mt7925/main.c | 65 ++++++++++++++++--- .../wireless/mediatek/mt76/mt7925/mt7925.h | 1 + drivers/net/wireless/mediatek/mt76/mt792x.h | 9 +++ 4 files changed, 67 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 4a9f393b45ba..395c3d5d7954 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) @@ -1284,6 +1285,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); @@ -1355,6 +1358,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) @@ -1904,6 +1939,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) { @@ -1914,9 +1952,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); + } + } } } @@ -1967,11 +2015,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); @@ -2055,8 +2104,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;