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 06/47] wifi: mt76: mt7925: extend mt7925_mcu_set_tx with for per-link BSS
Date: Wed, 12 Jun 2024 20:02:00 -0700 [thread overview]
Message-ID: <20240613030241.5771-7-sean.wang@kernel.org> (raw)
In-Reply-To: <20240613030241.5771-1-sean.wang@kernel.org>
From: Deren Wu <deren.wu@mediatek.com>
Extend mt7925_mcu_set_tx with per-link BSS configuration.
The patch we created is a prerequisite to enable the MLO function in the
driver. It is purely a refactoring patch so the functionality should
remain unchanged.
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/mac.c | 2 +-
.../net/wireless/mediatek/mt76/mt7925/main.c | 2 +-
.../net/wireless/mediatek/mt76/mt7925/mcu.c | 9 ++++---
.../wireless/mediatek/mt76/mt7925/mt7925.h | 2 +-
drivers/net/wireless/mediatek/mt76/mt792x.h | 25 +++++++++++++++++++
5 files changed, 33 insertions(+), 7 deletions(-)
diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/mac.c b/drivers/net/wireless/mediatek/mt76/mt7925/mac.c
index 48425fc4e7fe..2be2ab914411 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7925/mac.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7925/mac.c
@@ -1245,7 +1245,7 @@ mt7925_vif_connect_iter(void *priv, u8 *mac,
mt76_connac_mcu_uni_add_dev(&dev->mphy, &vif->bss_conf,
&mvif->sta.deflink.wcid, true);
- mt7925_mcu_set_tx(dev, vif);
+ mt7925_mcu_set_tx(dev, &vif->bss_conf);
if (vif->type == NL80211_IFTYPE_AP) {
mt76_connac_mcu_uni_add_bss(dev->phy.mt76, vif, &mvif->sta.deflink.wcid,
diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/main.c b/drivers/net/wireless/mediatek/mt76/mt7925/main.c
index b0c8b090d2ce..d11919688bae 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7925/main.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7925/main.c
@@ -1410,7 +1410,7 @@ static void mt7925_link_info_changed(struct ieee80211_hw *hw,
/* ensure that enable txcmd_mode after bss_info */
if (changed & (BSS_CHANGED_QOS | BSS_CHANGED_BEACON_ENABLED))
- mt7925_mcu_set_tx(dev, vif);
+ mt7925_mcu_set_tx(dev, info);
mt792x_mutex_release(dev);
}
diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c b/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
index 5e72f7278e8b..1c262a024dc8 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
@@ -900,7 +900,8 @@ int mt7925_mcu_wtbl_update_hdr_trans(struct mt792x_dev *dev,
MCU_WMWA_UNI_CMD(STA_REC_UPDATE), true);
}
-int mt7925_mcu_set_tx(struct mt792x_dev *dev, struct ieee80211_vif *vif)
+int mt7925_mcu_set_tx(struct mt792x_dev *dev,
+ struct ieee80211_bss_conf *bss_conf)
{
#define MCU_EDCA_AC_PARAM 0
#define WMM_AIFS_SET BIT(0)
@@ -909,12 +910,12 @@ int mt7925_mcu_set_tx(struct mt792x_dev *dev, struct ieee80211_vif *vif)
#define WMM_TXOP_SET BIT(3)
#define WMM_PARAM_SET (WMM_AIFS_SET | WMM_CW_MIN_SET | \
WMM_CW_MAX_SET | WMM_TXOP_SET)
- struct mt792x_vif *mvif = (struct mt792x_vif *)vif->drv_priv;
+ struct mt792x_bss_conf *mconf = mt792x_link_conf_to_mconf(bss_conf);
struct {
u8 bss_idx;
u8 __rsv[3];
} __packed hdr = {
- .bss_idx = mvif->bss_conf.mt76.idx,
+ .bss_idx = mconf->mt76.idx,
};
struct sk_buff *skb;
int len = sizeof(hdr) + IEEE80211_NUM_ACS * sizeof(struct edca);
@@ -927,7 +928,7 @@ int mt7925_mcu_set_tx(struct mt792x_dev *dev, struct ieee80211_vif *vif)
skb_put_data(skb, &hdr, sizeof(hdr));
for (ac = 0; ac < IEEE80211_NUM_ACS; ac++) {
- struct ieee80211_tx_queue_params *q = &mvif->bss_conf.queue_params[ac];
+ struct ieee80211_tx_queue_params *q = &mconf->queue_params[ac];
struct edca *e;
struct tlv *tlv;
diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/mt7925.h b/drivers/net/wireless/mediatek/mt76/mt7925/mt7925.h
index 8a4a71f6bcb6..f689f7a359ea 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7925/mt7925.h
+++ b/drivers/net/wireless/mediatek/mt76/mt7925/mt7925.h
@@ -198,7 +198,7 @@ int mt7925_mcu_sta_update(struct mt792x_dev *dev, struct ieee80211_sta *sta,
struct ieee80211_vif *vif, bool enable,
enum mt76_sta_info_state state);
int mt7925_mcu_set_chan_info(struct mt792x_phy *phy, u16 tag);
-int mt7925_mcu_set_tx(struct mt792x_dev *dev, struct ieee80211_vif *vif);
+int mt7925_mcu_set_tx(struct mt792x_dev *dev, struct ieee80211_bss_conf *bss_conf);
int mt7925_mcu_set_eeprom(struct mt792x_dev *dev);
int mt7925_mcu_get_rx_rate(struct mt792x_phy *phy, struct ieee80211_vif *vif,
struct ieee80211_sta *sta, struct rate_info *rate);
diff --git a/drivers/net/wireless/mediatek/mt76/mt792x.h b/drivers/net/wireless/mediatek/mt76/mt792x.h
index b5eb574e8548..4a7526322c30 100644
--- a/drivers/net/wireless/mediatek/mt76/mt792x.h
+++ b/drivers/net/wireless/mediatek/mt76/mt792x.h
@@ -112,6 +112,7 @@ struct mt792x_bss_conf {
struct mt792x_vif {
struct mt792x_bss_conf bss_conf; /* must be first */
+ struct mt792x_bss_conf __rcu *link_conf[IEEE80211_MLD_MAX_NUM_LINKS];
struct mt792x_sta sta;
struct mt792x_sta *wep_sta;
@@ -219,6 +220,30 @@ struct mt792x_dev {
u32 backup_l2;
};
+static inline struct mt792x_bss_conf *
+mt792x_vif_to_link(struct mt792x_vif *mvif, u8 link_id)
+{
+ struct ieee80211_vif *vif;
+
+ vif = container_of((void *)mvif, struct ieee80211_vif, drv_priv);
+
+ if (!ieee80211_vif_is_mld(vif) ||
+ link_id >= IEEE80211_LINK_UNSPECIFIED)
+ return &mvif->bss_conf;
+
+ return rcu_dereference_protected(mvif->link_conf[link_id],
+ lockdep_is_held(&mvif->phy->dev->mt76.mutex));
+}
+
+static inline struct mt792x_bss_conf *
+mt792x_link_conf_to_mconf(struct ieee80211_bss_conf *link_conf)
+{
+ struct ieee80211_vif *vif = link_conf->vif;
+ struct mt792x_vif *mvif = (struct mt792x_vif *)vif->drv_priv;
+
+ return mt792x_vif_to_link(mvif, link_conf->link_id);
+}
+
static inline struct mt792x_dev *
mt792x_hw_dev(struct ieee80211_hw *hw)
{
--
2.34.1
next prev 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 ` [PATCH 04/47] wifi: mt76: mt7925: support for split bss_info_changed method sean.wang
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 ` sean.wang [this message]
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-7-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.