blob: 360c308c57e55bb1bf1c5977e4f86eb2c2be7398 [file] [log] [blame]
developerebda9012024-02-22 13:42:45 +08001From d66d0f22529ac2b2f63f67a4251759f18e12ba83 Mon Sep 17 00:00:00 2001
developerd243af02023-12-21 14:49:33 +08002From: StanleyYP Wang <StanleyYP.Wang@mediatek.com>
3Date: Thu, 16 Nov 2023 14:41:54 +0800
developerebda9012024-02-22 13:42:45 +08004Subject: [PATCH 07/13] wifi: mt76: mt7915: add post channel switch for DFS
5 channel switching
developerd243af02023-12-21 14:49:33 +08006
7Signed-off-by: StanleyYP Wang <StanleyYP.Wang@mediatek.com>
8---
9 mt7915/main.c | 22 ++++++++++++++++++++++
10 1 file changed, 22 insertions(+)
11
12diff --git a/mt7915/main.c b/mt7915/main.c
developerebda9012024-02-22 13:42:45 +080013index f363a30..dfaee4c 100644
developerd243af02023-12-21 14:49:33 +080014--- a/mt7915/main.c
15+++ b/mt7915/main.c
16@@ -736,6 +736,27 @@ mt7915_channel_switch_beacon(struct ieee80211_hw *hw,
17 mutex_unlock(&dev->mt76.mutex);
18 }
19
20+static int
21+mt7915_post_channel_switch(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
22+{
23+ struct mt7915_phy *phy = mt7915_hw_phy(hw);
24+ struct cfg80211_chan_def *chandef = &phy->mt76->chandef;
25+ int ret;
26+
27+ ret = cfg80211_chandef_dfs_required(hw->wiphy, chandef, NL80211_IFTYPE_AP);
28+ if (ret <= 0)
29+ goto out;
30+
31+ ieee80211_stop_queues(hw);
32+ ret = mt7915_set_channel(phy);
33+ if (ret)
34+ goto out;
35+ ieee80211_wake_queues(hw);
36+
37+out:
38+ return ret;
39+}
40+
41 int mt7915_mac_sta_add(struct mt76_dev *mdev, struct ieee80211_vif *vif,
42 struct ieee80211_sta *sta)
43 {
developerebda9012024-02-22 13:42:45 +080044@@ -1697,6 +1718,7 @@ const struct ieee80211_ops mt7915_ops = {
developerd243af02023-12-21 14:49:33 +080045 .get_txpower = mt76_get_txpower,
46 .set_sar_specs = mt7915_set_sar_specs,
47 .channel_switch_beacon = mt7915_channel_switch_beacon,
48+ .post_channel_switch = mt7915_post_channel_switch,
49 .get_stats = mt7915_get_stats,
50 .get_et_sset_count = mt7915_get_et_sset_count,
51 .get_et_stats = mt7915_get_et_stats,
52--
532.18.0
54