Skip to content

Commit 4b98d4a

Browse files
committed
wifi: mt76: mt7996: prepare mt7996_mcu_update_bss_color for MLO support
Pass in struct mt76_vif_link in order to update the correct link. Link: https://patch.msgid.link/[email protected] Signed-off-by: Felix Fietkau <[email protected]>
1 parent 96fcecd commit 4b98d4a

File tree

3 files changed

+13
-30
lines changed

3 files changed

+13
-30
lines changed

drivers/net/wireless/mediatek/mt76/mt7996/main.c

Lines changed: 8 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -540,29 +540,6 @@ static void mt7996_configure_filter(struct ieee80211_hw *hw,
540540
mutex_unlock(&dev->mt76.mutex);
541541
}
542542

543-
static void
544-
mt7996_update_bss_color(struct ieee80211_hw *hw,
545-
struct ieee80211_vif *vif,
546-
struct cfg80211_he_bss_color *bss_color)
547-
{
548-
struct mt7996_dev *dev = mt7996_hw_dev(hw);
549-
550-
switch (vif->type) {
551-
case NL80211_IFTYPE_AP: {
552-
struct mt7996_vif *mvif = (struct mt7996_vif *)vif->drv_priv;
553-
554-
if (mvif->deflink.mt76.omac_idx > HW_BSSID_MAX)
555-
return;
556-
fallthrough;
557-
}
558-
case NL80211_IFTYPE_STATION:
559-
mt7996_mcu_update_bss_color(dev, vif, bss_color);
560-
break;
561-
default:
562-
break;
563-
}
564-
}
565-
566543
static u8
567544
mt7996_get_rates_table(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
568545
bool beacon, bool mcast)
@@ -618,9 +595,9 @@ static void mt7996_bss_info_changed(struct ieee80211_hw *hw,
618595
struct ieee80211_bss_conf *info,
619596
u64 changed)
620597
{
621-
struct mt76_vif_link *mvif = (struct mt76_vif_link *)vif->drv_priv;
622598
struct mt7996_phy *phy = mt7996_hw_phy(hw);
623599
struct mt7996_dev *dev = mt7996_hw_dev(hw);
600+
struct mt76_vif_link *mvif = mt76_vif_conf_link(&dev->mt76, vif, info);
624601

625602
mutex_lock(&dev->mt76.mutex);
626603

@@ -662,8 +639,13 @@ static void mt7996_bss_info_changed(struct ieee80211_hw *hw,
662639
if (changed & BSS_CHANGED_HE_OBSS_PD)
663640
mt7996_mcu_add_obss_spr(phy, vif, &info->he_obss_pd);
664641

665-
if (changed & BSS_CHANGED_HE_BSS_COLOR)
666-
mt7996_update_bss_color(hw, vif, &info->he_bss_color);
642+
if (changed & BSS_CHANGED_HE_BSS_COLOR) {
643+
if ((vif->type == NL80211_IFTYPE_AP &&
644+
mvif->omac_idx <= HW_BSSID_MAX) ||
645+
vif->type == NL80211_IFTYPE_STATION)
646+
mt7996_mcu_update_bss_color(dev, mvif,
647+
&info->he_bss_color);
648+
}
667649

668650
if (changed & (BSS_CHANGED_BEACON |
669651
BSS_CHANGED_BEACON_ENABLED)) {

drivers/net/wireless/mediatek/mt76/mt7996/mcu.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4143,16 +4143,16 @@ int mt7996_mcu_add_obss_spr(struct mt7996_phy *phy, struct ieee80211_vif *vif,
41434143
return mt7996_mcu_set_obss_spr_bitmap(phy, he_obss_pd);
41444144
}
41454145

4146-
int mt7996_mcu_update_bss_color(struct mt7996_dev *dev, struct ieee80211_vif *vif,
4146+
int mt7996_mcu_update_bss_color(struct mt7996_dev *dev,
4147+
struct mt76_vif_link *mlink,
41474148
struct cfg80211_he_bss_color *he_bss_color)
41484149
{
41494150
int len = sizeof(struct bss_req_hdr) + sizeof(struct bss_color_tlv);
4150-
struct mt7996_vif *mvif = (struct mt7996_vif *)vif->drv_priv;
41514151
struct bss_color_tlv *bss_color;
41524152
struct sk_buff *skb;
41534153
struct tlv *tlv;
41544154

4155-
skb = __mt7996_mcu_alloc_bss_req(&dev->mt76, &mvif->deflink.mt76, len);
4155+
skb = __mt7996_mcu_alloc_bss_req(&dev->mt76, mlink, len);
41564156
if (IS_ERR(skb))
41574157
return PTR_ERR(skb);
41584158

drivers/net/wireless/mediatek/mt76/mt7996/mt7996.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -531,7 +531,8 @@ int mt7996_mcu_add_tx_ba(struct mt7996_dev *dev,
531531
int mt7996_mcu_add_rx_ba(struct mt7996_dev *dev,
532532
struct ieee80211_ampdu_params *params,
533533
bool add);
534-
int mt7996_mcu_update_bss_color(struct mt7996_dev *dev, struct ieee80211_vif *vif,
534+
int mt7996_mcu_update_bss_color(struct mt7996_dev *dev,
535+
struct mt76_vif_link *mlink,
535536
struct cfg80211_he_bss_color *he_bss_color);
536537
int mt7996_mcu_add_beacon(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
537538
struct ieee80211_bss_conf *link_conf);

0 commit comments

Comments
 (0)