blob: 360c308c57e55bb1bf1c5977e4f86eb2c2be7398 [file] [log] [blame]
From d66d0f22529ac2b2f63f67a4251759f18e12ba83 Mon Sep 17 00:00:00 2001
From: StanleyYP Wang <StanleyYP.Wang@mediatek.com>
Date: Thu, 16 Nov 2023 14:41:54 +0800
Subject: [PATCH 07/13] wifi: mt76: mt7915: add post channel switch for DFS
channel switching
Signed-off-by: StanleyYP Wang <StanleyYP.Wang@mediatek.com>
---
mt7915/main.c | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/mt7915/main.c b/mt7915/main.c
index f363a30..dfaee4c 100644
--- a/mt7915/main.c
+++ b/mt7915/main.c
@@ -736,6 +736,27 @@ mt7915_channel_switch_beacon(struct ieee80211_hw *hw,
mutex_unlock(&dev->mt76.mutex);
}
+static int
+mt7915_post_channel_switch(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
+{
+ struct mt7915_phy *phy = mt7915_hw_phy(hw);
+ struct cfg80211_chan_def *chandef = &phy->mt76->chandef;
+ int ret;
+
+ ret = cfg80211_chandef_dfs_required(hw->wiphy, chandef, NL80211_IFTYPE_AP);
+ if (ret <= 0)
+ goto out;
+
+ ieee80211_stop_queues(hw);
+ ret = mt7915_set_channel(phy);
+ if (ret)
+ goto out;
+ ieee80211_wake_queues(hw);
+
+out:
+ return ret;
+}
+
int mt7915_mac_sta_add(struct mt76_dev *mdev, struct ieee80211_vif *vif,
struct ieee80211_sta *sta)
{
@@ -1697,6 +1718,7 @@ const struct ieee80211_ops mt7915_ops = {
.get_txpower = mt76_get_txpower,
.set_sar_specs = mt7915_set_sar_specs,
.channel_switch_beacon = mt7915_channel_switch_beacon,
+ .post_channel_switch = mt7915_post_channel_switch,
.get_stats = mt7915_get_stats,
.get_et_sset_count = mt7915_get_et_sset_count,
.get_et_stats = mt7915_get_et_stats,
--
2.18.0