blob: ed3059e520ba6825cfaeab9b1853e8e8b680cbdb [file] [log] [blame]
From 03a261c28f08e5c8aae5e4dde8f5f45e841fb0de Mon Sep 17 00:00:00 2001
From: Shayne Chen <shayne.chen@mediatek.com>
Date: Wed, 15 Jun 2022 23:15:13 +0800
Subject: [PATCH] check starec newly
---
mt7915/main.c | 2 +-
mt7915/mcu.c | 4 +++-
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/mt7915/main.c b/mt7915/main.c
index 7da3eada..9feba0d6 100644
--- a/mt7915/main.c
+++ b/mt7915/main.c
@@ -247,7 +247,6 @@ static int mt7915_add_interface(struct ieee80211_hw *hw,
mt7915_mac_wtbl_update(dev, idx,
MT_WTBL_UPDATE_ADM_COUNT_CLEAR);
- rcu_assign_pointer(dev->mt76.wcid[idx], &mvif->sta.wcid);
if (vif->txq) {
mtxq = (struct mt76_txq *)vif->txq->drv_priv;
mtxq->wcid = idx;
@@ -263,6 +262,7 @@ static int mt7915_add_interface(struct ieee80211_hw *hw,
mt7915_mcu_add_bss_info(phy, vif, true);
mt7915_mcu_add_sta(dev, vif, NULL, true);
+ rcu_assign_pointer(dev->mt76.wcid[idx], &mvif->sta.wcid);
out:
mutex_unlock(&dev->mt76.mutex);
diff --git a/mt7915/mcu.c b/mt7915/mcu.c
index 36151959..ff5a73e3 100755
--- a/mt7915/mcu.c
+++ b/mt7915/mcu.c
@@ -1803,6 +1803,7 @@ int mt7915_mcu_add_sta(struct mt7915_dev *dev, struct ieee80211_vif *vif,
struct mt7915_vif *mvif = (struct mt7915_vif *)vif->drv_priv;
struct mt7915_sta *msta;
struct sk_buff *skb;
+ bool newly;
int ret;
msta = sta ? (struct mt7915_sta *)sta->drv_priv : &mvif->sta;
@@ -1813,7 +1814,8 @@ int mt7915_mcu_add_sta(struct mt7915_dev *dev, struct ieee80211_vif *vif,
return PTR_ERR(skb);
/* starec basic */
- mt76_connac_mcu_sta_basic_tlv(skb, vif, sta, enable, true);
+ newly = !rcu_access_pointer(dev->mt76.wcid[msta->wcid.idx]);
+ mt76_connac_mcu_sta_basic_tlv(skb, vif, sta, enable, newly);
if (!enable)
goto out;
--
2.18.0