| From 0983321b5cc8138e316fce622c7cd1e12951b046 Mon Sep 17 00:00:00 2001 |
| From: Shayne Chen <shayne.chen@mediatek.com> |
| Date: Thu, 16 Feb 2023 00:39:01 +0800 |
| Subject: [PATCH 07/29] wifi: mt76: mt7996: reduce repeated bss_info and |
| sta_rec commands |
| |
| Refine the flow of setting bss_info and sta_rec commands to prevent from |
| sending duplicated commands, especially for station mode. |
| |
| Signed-off-by: Shayne Chen <shayne.chen@mediatek.com> |
| Change-Id: Iffd2c81f9ec98284793e75f4b7d39e9618977024 |
| --- |
| mt7996/main.c | 21 ++++++--------------- |
| 1 file changed, 6 insertions(+), 15 deletions(-) |
| |
| diff --git a/mt7996/main.c b/mt7996/main.c |
| index f13f67b2..ab28ebeb 100644 |
| --- a/mt7996/main.c |
| +++ b/mt7996/main.c |
| @@ -233,8 +233,8 @@ static void mt7996_remove_interface(struct ieee80211_hw *hw, |
| struct mt7996_phy *phy = mt7996_hw_phy(hw); |
| int idx = msta->wcid.idx; |
| |
| - mt7996_mcu_add_bss_info(phy, vif, false); |
| mt7996_mcu_add_sta(dev, vif, NULL, false); |
| + mt7996_mcu_add_bss_info(phy, vif, false); |
| |
| if (vif == phy->monitor_vif) |
| phy->monitor_vif = NULL; |
| @@ -502,17 +502,13 @@ static void mt7996_bss_info_changed(struct ieee80211_hw *hw, |
| /* station mode uses BSSID to map the wlan entry to a peer, |
| * and then peer references bss_info_rfch to set bandwidth cap. |
| */ |
| - if (changed & BSS_CHANGED_BSSID && |
| - vif->type == NL80211_IFTYPE_STATION) { |
| - bool join = !is_zero_ether_addr(info->bssid); |
| - |
| - mt7996_mcu_add_bss_info(phy, vif, join); |
| - mt7996_mcu_add_sta(dev, vif, NULL, join); |
| + if ((changed & BSS_CHANGED_BSSID && !is_zero_ether_addr(info->bssid)) || |
| + (changed & BSS_CHANGED_ASSOC && vif->cfg.assoc) || |
| + (changed & BSS_CHANGED_BEACON_ENABLED && info->enable_beacon)) { |
| + mt7996_mcu_add_bss_info(phy, vif, true); |
| + mt7996_mcu_add_sta(dev, vif, NULL, true); |
| } |
| |
| - if (changed & BSS_CHANGED_ASSOC) |
| - mt7996_mcu_add_bss_info(phy, vif, vif->cfg.assoc); |
| - |
| if (changed & BSS_CHANGED_ERP_CTS_PROT) |
| mt7996_mac_enable_rtscts(dev, vif, info->use_cts_prot); |
| |
| @@ -525,11 +521,6 @@ static void mt7996_bss_info_changed(struct ieee80211_hw *hw, |
| } |
| } |
| |
| - if (changed & BSS_CHANGED_BEACON_ENABLED && info->enable_beacon) { |
| - mt7996_mcu_add_bss_info(phy, vif, true); |
| - mt7996_mcu_add_sta(dev, vif, NULL, true); |
| - } |
| - |
| /* ensure that enable txcmd_mode after bss_info */ |
| if (changed & (BSS_CHANGED_QOS | BSS_CHANGED_BEACON_ENABLED)) |
| mt7996_mcu_set_tx(dev, vif); |
| -- |
| 2.39.2 |
| |