mt7615_mcu_add_bss_info fixes
Subsystems (2)
Lorenzo Bianconi
maintainercover mt7615_mcu_add_bss_info fixes
Fix mt7615_mcu_add_bss_info for 7663 chipset
Avoid sta lookup for mt7615 devices
Lorenzo Bianconi (1):
mt76: mt7615: add sta pointer to mt7615_mcu_add_bss_info signature
Sean Wang (1):
mt76: mt7663: fix up BMC entry indicated to unicmd firmware
.../net/wireless/mediatek/mt76/mt7615/main.c | 6 +-- .../net/wireless/mediatek/mt76/mt7615/mcu.c | 43 ++++--------------- .../wireless/mediatek/mt76/mt7615/mt7615.h | 2 +- 3 files changed, 13 insertions(+), 38 deletions(-)
Signature · 1 line
2.25.3
Lorenzo Bianconi
maintainerPATCH 1/2 mt76: mt7663: fix up BMC entry indicated to unicmd firmware
From: Sean Wang <[email protected]>
BMC entry for MT7663 unicmd firmware should be a broadcast/multicast entry, not a unicast entry, that is GTK rekey offload would rely on.
--v1->v2:mt7615_mcu_uni_add_bss is only called on mt7663 with the offload firmware, so remove the entire unnecessary if code section.
--- .../net/wireless/mediatek/mt76/mt7615/mcu.c | 22 +++---------------- 1 file changed, 3 insertions(+), 19 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7615/mcu.c +3 -19
@@ -1403,8 +1403,8 @@ mt7615_mcu_uni_add_bss(struct mt7615_phy *phy, .short_st = true, }, }; -u8 idx, tx_wlan_idx =0 ;int err; +u8 idx; idx = mvif->omac_idx >EXT_BSSID_START ?HW_BSSID_0 : mvif->omac_idx; basic_req.basic.hw_bss_idx = idx;
@@ -1413,24 +1413,8 @@ mt7615_mcu_uni_add_bss(struct mt7615_phy *phy,case NL80211_IFTYPE_MESH_POINT :case NL80211_IFTYPE_AP : basic_req.basic.conn_type =cpu_to_le32 (CONNECTION_INFRA_AP ); - tx_wlan_idx = mvif->sta.wcid.idx;break ;case NL80211_IFTYPE_STATION : -if (enable) { -struct ieee80211_sta *sta; -struct mt7615_sta *msta; - -rcu_read_lock (); - sta =ieee80211_find_sta (vif, vif->bss_conf.bssid); -if (!sta) { -rcu_read_unlock (); -return -EINVAL ; - } - - msta = (struct mt7615_sta *)sta->drv_priv; - tx_wlan_idx = msta->wcid.idx; -rcu_read_unlock (); - } basic_req.basic.conn_type =cpu_to_le32 (CONNECTION_INFRA_STA );break ;default :
@@ -1439,8 +1423,8 @@ mt7615_mcu_uni_add_bss(struct mt7615_phy *phy, }memcpy (basic_req.basic.bssid, vif->bss_conf.bssid,ETH_ALEN ); - basic_req.basic.bmc_tx_wlan_idx =cpu_to_le16 (tx_wlan_idx); - basic_req.basic.sta_idx =cpu_to_le16 (tx_wlan_idx); + basic_req.basic.bmc_tx_wlan_idx =cpu_to_le16 (mvif->sta.wcid.idx); + basic_req.basic.sta_idx =cpu_to_le16 (mvif->sta.wcid.idx); basic_req.basic.conn_state = !enable; err = __mt76_mcu_send_msg(&dev->mt76, MCU_UNI_CMD_BSS_INFO_UPDATE,
Signature · 1 line
2.25.3
Lorenzo Bianconi
maintainerPATCH 2/2 mt76: mt7615: add sta pointer to mt7615_mcu_add_bss_info signature
In reply to Lorenzo BianconiIntroduce sta pointer to mt7615_mcu_add_bss_info signature in order to avoid sta lookup in mt7615_mcu_bss_basic_tlv routine
--- .../net/wireless/mediatek/mt76/mt7615/main.c | 6 +++--- .../net/wireless/mediatek/mt76/mt7615/mcu.c | 21 ++++++------------- .../wireless/mediatek/mt76/mt7615/mt7615.h | 2 +- 3 files changed, 10 insertions(+), 19 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7615/main.c +3 -3
@@ -501,7 +501,7 @@ static void mt7615_bss_info_changed(struct ieee80211_hw *hw, }if (changed &BSS_CHANGED_BEACON_ENABLED ) { -mt7615_mcu_add_bss_info (phy, vif, info->enable_beacon); +mt7615_mcu_add_bss_info (phy, vif,NULL , info->enable_beacon);mt7615_mcu_sta_add (dev, vif,NULL , info->enable_beacon); }
@@ -546,7 +546,7 @@ int mt7615_mac_sta_add(struct mt76_dev *mdev, struct ieee80211_vif *vif,struct mt7615_phy *phy; phy = mvif->band_idx ?mt7615_ext_phy (dev) : &dev->phy; -mt7615_mcu_add_bss_info (phy, vif, true); +mt7615_mcu_add_bss_info (phy, vif, sta, true); }mt7615_mac_wtbl_update (dev, idx,MT_WTBL_UPDATE_ADM_COUNT_CLEAR );
@@ -570,7 +570,7 @@ void mt7615_mac_sta_remove(struct mt76_dev *mdev, struct ieee80211_vif *vif,struct mt7615_phy *phy; phy = mvif->band_idx ?mt7615_ext_phy (dev) : &dev->phy; -mt7615_mcu_add_bss_info (phy, vif, false); +mt7615_mcu_add_bss_info (phy, vif, sta, false); }spin_lock_bh (&dev->sta_poll_lock);
drivers/net/wireless/mediatek/mt76/mt7615/mcu.c +6 -15
@@ -689,7 +689,7 @@ mt7615_mcu_add_tlv(struct sk_buff *skb, int tag, int len)static int mt7615_mcu_bss_basic_tlv (struct sk_buff *skb,struct ieee80211_vif *vif, -bool enable) +struct ieee80211_sta *sta,bool enable) {struct mt7615_vif *mvif = (struct mt7615_vif *)vif->drv_priv;struct bss_info_basic *bss;
@@ -705,20 +705,11 @@ mt7615_mcu_bss_basic_tlv(struct sk_buff *skb, struct ieee80211_vif *vif,break ;case NL80211_IFTYPE_STATION :/* TODO: enable BSS_INFO_UAPSD & BSS_INFO_PM */ -if (enable) { -struct ieee80211_sta *sta; +if (enable && sta) {struct mt7615_sta *msta; -rcu_read_lock (); - sta =ieee80211_find_sta (vif, vif->bss_conf.bssid); -if (!sta) { -rcu_read_unlock (); -return -EINVAL ; - } - msta = (struct mt7615_sta *)sta->drv_priv; wlan_idx = msta->wcid.idx; -rcu_read_unlock (); }break ;case NL80211_IFTYPE_ADHOC :
@@ -1038,7 +1029,7 @@ mt7615_mcu_wtbl_ht_tlv(struct sk_buff *skb, struct ieee80211_sta *sta,static int mt7615_mcu_add_bss (struct mt7615_phy *phy,struct ieee80211_vif *vif, -bool enable) +struct ieee80211_sta *sta,bool enable) {struct mt7615_vif *mvif = (struct mt7615_vif *)vif->drv_priv;struct mt7615_dev *dev = phy->dev;
@@ -1051,7 +1042,7 @@ mt7615_mcu_add_bss(struct mt7615_phy *phy, struct ieee80211_vif *vif,if (enable)mt7615_mcu_bss_omac_tlv (skb, vif); -mt7615_mcu_bss_basic_tlv (skb, vif, enable); +mt7615_mcu_bss_basic_tlv (skb, vif, sta, enable);if (enable && mvif->omac_idx >EXT_BSSID_START )mt7615_mcu_bss_ext_tlv (skb, mvif);
@@ -1316,8 +1307,8 @@ mt7615_mcu_uni_ctrl_pm_state(struct mt7615_dev *dev, int band, int state) }static int -mt7615_mcu_uni_add_bss (struct mt7615_phy *phy, -struct ieee80211_vif *vif,bool enable) +mt7615_mcu_uni_add_bss (struct mt7615_phy *phy,struct ieee80211_vif *vif, +struct ieee80211_sta *sta,bool enable) {struct mt7615_vif *mvif = (struct mt7615_vif *)vif->drv_priv;struct cfg80211_chan_def *chandef = &phy->mt76->chandef;
drivers/net/wireless/mediatek/mt76/mt7615/mt7615.h +1 -1
@@ -222,7 +222,7 @@ struct mt7615_mcu_ops {int (*add_dev_info)(struct mt7615_dev *dev,struct ieee80211_vif *vif,bool enable);int (*add_bss_info)(struct mt7615_phy *phy,struct ieee80211_vif *vif, -bool enable); +struct ieee80211_sta *sta,bool enable);int (*add_beacon_offload)(struct mt7615_dev *dev,struct ieee80211_hw *hw,struct ieee80211_vif *vif,bool enable);
Signature · 1 line
2.25.3