All of lore.kernel.org
 help / color / mirror / Atom feed
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
Subject: [PATCH 04/47] wifi: mt76: mt7925: support for split bss_info_changed method
Date: Wed, 12 Jun 2024 20:01:58 -0700	[thread overview]
Message-ID: <20240613030241.5771-5-sean.wang@kernel.org> (raw)
In-Reply-To: <20240613030241.5771-1-sean.wang@kernel.org>

From: Deren Wu <deren.wu@mediatek.com>

The .bss_info_changed method is being split into .vif_cfg_changed and
.link_info_changed to support MLD devices, but it will still support
non-MLD devices.

Co-developed-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Deren Wu <deren.wu@mediatek.com>
---
 .../net/wireless/mediatek/mt76/mt7925/main.c  | 132 ++++++++++--------
 .../net/wireless/mediatek/mt76/mt7925/mcu.c   |   7 +-
 .../net/wireless/mediatek/mt76/mt7925/mcu.h   |   3 +-
 3 files changed, 76 insertions(+), 66 deletions(-)

diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/main.c b/drivers/net/wireless/mediatek/mt76/mt7925/main.c
index 91edbe076c22..397776ddf01a 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7925/main.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7925/main.c
@@ -695,65 +695,6 @@ mt7925_get_rates_table(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 	return mvif->basic_rates_idx;
 }
 
-static void mt7925_bss_info_changed(struct ieee80211_hw *hw,
-				    struct ieee80211_vif *vif,
-				    struct ieee80211_bss_conf *info,
-				    u64 changed)
-{
-	struct mt76_vif *mvif = (struct mt76_vif *)vif->drv_priv;
-	struct mt792x_phy *phy = mt792x_hw_phy(hw);
-	struct mt792x_dev *dev = mt792x_hw_dev(hw);
-
-	mt792x_mutex_acquire(dev);
-
-	if (changed & BSS_CHANGED_ERP_SLOT) {
-		int slottime = info->use_short_slot ? 9 : 20;
-
-		if (slottime != phy->slottime) {
-			phy->slottime = slottime;
-			mt7925_mcu_set_timing(phy, vif);
-		}
-	}
-
-	if (changed & BSS_CHANGED_MCAST_RATE)
-		mvif->mcast_rates_idx =
-				mt7925_get_rates_table(hw, vif, false, true);
-
-	if (changed & BSS_CHANGED_BASIC_RATES)
-		mvif->basic_rates_idx =
-				mt7925_get_rates_table(hw, vif, false, false);
-
-	if (changed & (BSS_CHANGED_BEACON |
-		       BSS_CHANGED_BEACON_ENABLED)) {
-		mvif->beacon_rates_idx =
-				mt7925_get_rates_table(hw, vif, true, false);
-
-		mt7925_mcu_uni_add_beacon_offload(dev, hw, vif,
-						  info->enable_beacon);
-	}
-
-	/* ensure that enable txcmd_mode after bss_info */
-	if (changed & (BSS_CHANGED_QOS | BSS_CHANGED_BEACON_ENABLED))
-		mt7925_mcu_set_tx(dev, vif);
-
-	if (changed & BSS_CHANGED_PS)
-		mt7925_mcu_uni_bss_ps(dev, vif);
-
-	if (changed & BSS_CHANGED_ASSOC) {
-		mt7925_mcu_sta_update(dev, NULL, vif, true,
-				      MT76_STA_INFO_STATE_ASSOC);
-		mt7925_mcu_set_beacon_filter(dev, vif, vif->cfg.assoc);
-	}
-
-	if (changed & BSS_CHANGED_ARP_FILTER) {
-		struct mt792x_vif *mvif = (struct mt792x_vif *)vif->drv_priv;
-
-		mt7925_mcu_update_arp_filter(&dev->mt76, &mvif->bss_conf.mt76, info);
-	}
-
-	mt792x_mutex_release(dev);
-}
-
 int mt7925_mac_sta_add(struct mt76_dev *mdev, struct ieee80211_vif *vif,
 		       struct ieee80211_sta *sta)
 {
@@ -1404,6 +1345,76 @@ static void mt7925_mgd_complete_tx(struct ieee80211_hw *hw,
 	mt7925_abort_roc(mvif->phy, mvif);
 }
 
+static void mt7925_vif_cfg_changed(struct ieee80211_hw *hw,
+				   struct ieee80211_vif *vif,
+				   u64 changed)
+{
+	struct mt792x_dev *dev = mt792x_hw_dev(hw);
+
+	mt792x_mutex_acquire(dev);
+
+	if (changed & BSS_CHANGED_ASSOC) {
+		mt7925_mcu_sta_update(dev, NULL, vif, true,
+				      MT76_STA_INFO_STATE_ASSOC);
+		mt7925_mcu_set_beacon_filter(dev, vif, vif->cfg.assoc);
+	}
+
+	if (changed & BSS_CHANGED_ARP_FILTER) {
+		struct mt792x_vif *mvif = (struct mt792x_vif *)vif->drv_priv;
+
+		mt7925_mcu_update_arp_filter(&dev->mt76, &mvif->bss_conf.mt76);
+	}
+
+	if (changed & BSS_CHANGED_PS)
+		mt7925_mcu_uni_bss_ps(dev, vif);
+
+	mt792x_mutex_release(dev);
+}
+
+static void mt7925_link_info_changed(struct ieee80211_hw *hw,
+				     struct ieee80211_vif *vif,
+				     struct ieee80211_bss_conf *info,
+				     u64 changed)
+{
+	struct mt76_vif *mvif = (struct mt76_vif *)vif->drv_priv;
+	struct mt792x_phy *phy = mt792x_hw_phy(hw);
+	struct mt792x_dev *dev = mt792x_hw_dev(hw);
+
+	mt792x_mutex_acquire(dev);
+
+	if (changed & BSS_CHANGED_ERP_SLOT) {
+		int slottime = info->use_short_slot ? 9 : 20;
+
+		if (slottime != phy->slottime) {
+			phy->slottime = slottime;
+			mt7925_mcu_set_timing(phy, vif);
+		}
+	}
+
+	if (changed & BSS_CHANGED_MCAST_RATE)
+		mvif->mcast_rates_idx =
+				mt7925_get_rates_table(hw, vif, false, true);
+
+	if (changed & BSS_CHANGED_BASIC_RATES)
+		mvif->basic_rates_idx =
+				mt7925_get_rates_table(hw, vif, false, false);
+
+	if (changed & (BSS_CHANGED_BEACON |
+		       BSS_CHANGED_BEACON_ENABLED)) {
+		mvif->beacon_rates_idx =
+				mt7925_get_rates_table(hw, vif, true, false);
+
+		mt7925_mcu_uni_add_beacon_offload(dev, hw, vif,
+						  info->enable_beacon);
+	}
+
+	/* ensure that enable txcmd_mode after bss_info */
+	if (changed & (BSS_CHANGED_QOS | BSS_CHANGED_BEACON_ENABLED))
+		mt7925_mcu_set_tx(dev, vif);
+
+	mt792x_mutex_release(dev);
+}
+
 const struct ieee80211_ops mt7925_ops = {
 	.tx = mt792x_tx,
 	.start = mt7925_start,
@@ -1413,7 +1424,6 @@ const struct ieee80211_ops mt7925_ops = {
 	.config = mt7925_config,
 	.conf_tx = mt7925_conf_tx,
 	.configure_filter = mt7925_configure_filter,
-	.bss_info_changed = mt7925_bss_info_changed,
 	.start_ap = mt7925_start_ap,
 	.stop_ap = mt7925_stop_ap,
 	.sta_state = mt76_sta_state,
@@ -1461,6 +1471,8 @@ const struct ieee80211_ops mt7925_ops = {
 	.unassign_vif_chanctx = mt792x_unassign_vif_chanctx,
 	.mgd_prepare_tx = mt7925_mgd_prepare_tx,
 	.mgd_complete_tx = mt7925_mgd_complete_tx,
+	.vif_cfg_changed = mt7925_vif_cfg_changed,
+	.link_info_changed = mt7925_link_info_changed,
 };
 EXPORT_SYMBOL_GPL(mt7925_ops);
 
diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c b/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
index 67c05f785190..5e72f7278e8b 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
@@ -121,11 +121,10 @@ int mt7925_mcu_regval(struct mt792x_dev *dev, u32 regidx, u32 *val, bool set)
 EXPORT_SYMBOL_GPL(mt7925_mcu_regval);
 
 int mt7925_mcu_update_arp_filter(struct mt76_dev *dev,
-				 struct mt76_vif *vif,
-				 struct ieee80211_bss_conf *info)
+				 struct mt76_vif *vif)
 {
-	struct ieee80211_vif *mvif = container_of(info, struct ieee80211_vif,
-						  bss_conf);
+	struct ieee80211_vif *mvif = container_of((void *)vif, struct ieee80211_vif,
+						  drv_priv);
 	struct sk_buff *skb;
 	int i, len = min_t(int, mvif->cfg.arp_addr_cnt,
 			   IEEE80211_BSS_ARP_ADDR_LIST_LEN);
diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/mcu.h b/drivers/net/wireless/mediatek/mt76/mt7925/mcu.h
index b8315a89f4a9..b499b1d0531a 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7925/mcu.h
+++ b/drivers/net/wireless/mediatek/mt76/mt7925/mcu.h
@@ -590,6 +590,5 @@ int mt7925_mcu_set_chctx(struct mt76_phy *phy, struct mt76_vif *mvif,
 			 struct ieee80211_chanctx_conf *ctx);
 int mt7925_mcu_set_rate_txpower(struct mt76_phy *phy);
 int mt7925_mcu_update_arp_filter(struct mt76_dev *dev,
-				 struct mt76_vif *vif,
-				 struct ieee80211_bss_conf *info);
+				 struct mt76_vif *vif);
 #endif
-- 
2.34.1



  parent reply	other threads:[~2024-06-13  3:03 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-13  3:01 [PATCH 00/47] Prerequisite Refactoring for Enabling MLO on MT7925 sean.wang
2024-06-13  3:01 ` [PATCH 01/47] wifi: mt76: mt792x: add struct mt792x_bss_conf sean.wang
2024-06-13  3:01 ` [PATCH 02/47] wifi: mt76: mt792x: add struct mt792x_link_sta sean.wang
2024-06-13  3:01 ` [PATCH 03/47] wifi: mt76: mt792x: add struct mt792x_chanctx sean.wang
2024-06-13  3:01 ` sean.wang [this message]
2024-06-13  3:01 ` [PATCH 05/47] wifi: mt76: mt792x: extend mt76_connac_mcu_uni_add_dev for per-link BSS sean.wang
2024-06-13  3:02 ` [PATCH 06/47] wifi: mt76: mt7925: extend mt7925_mcu_set_tx with " sean.wang
2024-06-13  3:02 ` [PATCH 07/47] wifi: mt76: mt7925: extend mt7925_mcu_add_bss_info " sean.wang
2024-06-13  3:02 ` [PATCH 08/47] wifi: mt76: mt7925: extend mt7925_mcu_set_timing " sean.wang
2024-06-13  3:02 ` [PATCH 09/47] wifi: mt76: mt7925: extend mt7925_mcu_bss_ifs_tlv " sean.wang
2024-06-13  3:02 ` [PATCH 10/47] wifi: mt76: mt7925: extend mt7925_mcu_bss_color_tlv " sean.wang
2024-06-13  3:02 ` [PATCH 11/47] wifi: mt76: mt7925: extend mt7925_mcu_bss_he_tlv " sean.wang
2024-06-13  3:02 ` [PATCH 12/47] wifi: mt76: mt7925: extend mt7925_mcu_bss_qos_tlv " sean.wang
2024-06-13  3:02 ` [PATCH 13/47] wifi: mt76: mt7925: extend mt7925_mcu_bss_mld_tlv " sean.wang
2024-06-13  3:02 ` [PATCH 14/47] wifi: mt76: mt7925: extend mt7925_mcu_bss_bmc_tlv " sean.wang
2024-06-13  3:02 ` [PATCH 15/47] wifi: mt76: mt7925: remove unused parameters in mt7925_mcu_bss_bmc_tlv sean.wang
2024-06-13  3:02 ` [PATCH 16/47] wifi: mt76: mt7925: extend mt7925_mcu_bss_sec_tlv for per-link BSS sean.wang
2024-06-13  3:02 ` [PATCH 17/47] wifi: mt76: mt7925: extend mt7925_mcu_bss_basic_tlv " sean.wang
2024-06-13  3:02 ` [PATCH 18/47] wifi: mt76: mt7925: extend mt7925_mcu_set_bss_pm " sean.wang
2024-06-13  3:02 ` [PATCH 19/47] wifi: mt76: mt7925: extend mt7925_mcu_[abort, set]_roc " sean.wang
2024-06-13  3:02 ` [PATCH 20/47] wifi: mt76: mt7925: extend mt7925_mcu_uni_bss_bcnft " sean.wang
2024-06-13  3:02 ` [PATCH 21/47] wifi: mt76: mt7925: extend mt7925_mcu_uni_bss_ps " sean.wang
2024-06-13  3:02 ` [PATCH 22/47] wifi: mt76: mt7925: add mt7925_mcu_bss_rlm_tlv to constitue the RLM TLV sean.wang
2024-06-13  3:02 ` [PATCH 23/47] wifi: mt76: mt7925: mt7925_mcu_set_chctx rely on mt7925_mcu_bss_rlm_tlv sean.wang
2024-06-13  3:02 ` [PATCH 24/47] wifi: mt76: mt7925: extend mt7925_mcu_sta_update for per-link STA sean.wang
2024-06-13  3:02 ` [PATCH 25/47] wifi: mt76: mt7925: extend mt7925_mcu_sta_state_v2_tlv " sean.wang
2024-06-13  3:02 ` [PATCH 26/47] wifi: mt76: mt7925: extend mt7925_mcu_sta_rate_ctrl_tlv with " sean.wang
2024-06-13  3:02 ` [PATCH 27/47] wifi: mt76: mt7925: extend mt7925_mcu_sta_eht_tlv for " sean.wang
2024-06-13  3:02 ` [PATCH 28/47] wifi: mt76: mt7925: extend mt7925_mcu_sta_he_6g_tlv " sean.wang
2024-06-13  3:02 ` [PATCH 29/47] wifi: mt76: mt7925: extend mt7925_mcu_sta_he_tlv " sean.wang
2024-06-13  3:02 ` [PATCH 30/47] wifi: mt76: mt7925: extend mt7925_mcu_sta_amsdu_tlv " sean.wang
2024-06-13  3:02 ` [PATCH 31/47] wifi: mt76: mt7925: extend mt7925_mcu_sta_vht_tlv " sean.wang
2024-06-13  3:02 ` [PATCH 32/47] wifi: mt76: mt7925: extend mt7925_mcu_sta_ht_tlv " sean.wang
2024-06-13  3:02 ` [PATCH 33/47] wifi: mt76: mt7925: extend mt7925_mcu_sta_phy_tlv " sean.wang
2024-06-13  3:02 ` [PATCH 34/47] wifi: mt76: mt7925: extend mt7925_get_phy_mode_ext " sean.wang
2024-06-13  3:02 ` [PATCH 35/47] wifi: mt76: mt7925: extend mt7925_get_phy_mode " sean.wang
2024-06-13  3:02 ` [PATCH 36/47] wifi: mt76: mt792x: extend mt76_connac_get_phy_mode_v2 " sean.wang
2024-06-13  3:02 ` [PATCH 37/47] wifi: mt76: mt762x: extend mt76_connac_mcu_sta_basic_tlv " sean.wang
2024-06-24 17:44   ` Felix Fietkau
2024-06-24 19:03     ` Felix Fietkau
2024-06-25 20:10       ` Sean Wang
2024-06-13  3:02 ` [PATCH 38/47] wifi: mt76: mt7925: extend mt7925_mcu_sta_hdr_trans_tlv " sean.wang
2024-06-13  3:02 ` [PATCH 39/47] wifi: mt76: mt7925: extend mt7925_mcu_add_bss_info " sean.wang
2024-06-13  3:02 ` [PATCH 40/47] wifi: mt76: mt7925: extend mt7925_mcu_bss_mld_tlv " sean.wang
2024-06-13  3:02 ` [PATCH 41/47] wifi: mt76: mt7925: extend mt7925_mcu_bss_basic_tlv " sean.wang
2024-06-13  3:02 ` [PATCH 42/47] wifi: mt76: mt7925: add mt7925_mac_link_sta_add to create " sean.wang
2024-06-13  3:02 ` [PATCH 43/47] wifi: mt76: mt7925: add mt7925_mac_link_sta_assoc to associate " sean.wang
2024-06-13  3:02 ` [PATCH 44/47] wifi: mt76: mt7925: add mt7925_mac_link_sta_remove to remove " sean.wang
2024-06-13  3:02 ` [PATCH 45/47] wifi: mt76: mt7925: add mt7925_mac_link_bss_add to create per-link BSS sean.wang
2024-06-13  3:02 ` [PATCH 46/47] wifi: mt76: mt7925: add mt7925_mac_link_bss_remove to remove " sean.wang
2024-06-13  3:02 ` [PATCH 47/47] wifi: mt76: mt7925: simpify mt7925_mcu_sta_cmd logic by removing fw_offload sean.wang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240613030241.5771-5-sean.wang@kernel.org \
    --to=sean.wang@kernel.org \
    --cc=deren.wu@mediatek.com \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=lorenzo.bianconi@redhat.com \
    --cc=mingyen.hsieh@mediatek.com \
    --cc=nbd@nbd.name \
    --cc=sean.wang@mediatek.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.