| From e27e641fd771a6d882a61a889b9295cdab5dcc72 Mon Sep 17 00:00:00 2001 |
| From: Shayne Chen <shayne.chen@mediatek.com> |
| Date: Tue, 29 Mar 2022 16:06:30 +0800 |
| Subject: [PATCH 09/61] mtk: cfg80211: extend CAC time for weather radar |
| channels |
| |
| Signed-off-by: Shayne Chen <shayne.chen@mediatek.com> |
| Signed-off-by: StanleyYP Wang <StanleyYP.Wang@mediatek.com> |
| --- |
| include/net/cfg80211.h | 1 + |
| net/wireless/chan.c | 7 +++++++ |
| net/wireless/nl80211.c | 3 +++ |
| 3 files changed, 11 insertions(+) |
| |
| diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h |
| index 4c5daf9..d987b62 100644 |
| --- a/include/net/cfg80211.h |
| +++ b/include/net/cfg80211.h |
| @@ -163,6 +163,7 @@ enum ieee80211_channel_flags { |
| (IEEE80211_CHAN_NO_HT40PLUS | IEEE80211_CHAN_NO_HT40MINUS) |
| |
| #define IEEE80211_DFS_MIN_CAC_TIME_MS 60000 |
| +#define IEEE80211_DFS_WEATHER_MIN_CAC_TIME_MS 600000 |
| #define IEEE80211_DFS_MIN_NOP_TIME_MS (30 * 60 * 1000) |
| |
| /** |
| diff --git a/net/wireless/chan.c b/net/wireless/chan.c |
| index 4bac395..2224329 100644 |
| --- a/net/wireless/chan.c |
| +++ b/net/wireless/chan.c |
| @@ -1152,6 +1152,13 @@ static unsigned int cfg80211_get_chans_dfs_cac_time(struct wiphy *wiphy, |
| if (!(c->flags & IEEE80211_CHAN_RADAR)) |
| continue; |
| |
| + /* weather radar in ETSI */ |
| + if (reg_get_dfs_region(wiphy) == NL80211_DFS_ETSI && |
| + freq >= MHZ_TO_KHZ(5600) && freq <= MHZ_TO_KHZ(5640) && |
| + dfs_cac_ms < IEEE80211_DFS_WEATHER_MIN_CAC_TIME_MS && |
| + c->dfs_state == NL80211_DFS_USABLE) |
| + dfs_cac_ms = IEEE80211_DFS_WEATHER_MIN_CAC_TIME_MS; |
| + |
| if (c->dfs_cac_ms > dfs_cac_ms) |
| dfs_cac_ms = c->dfs_cac_ms; |
| } |
| diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c |
| index 3d11013..b8c8848 100644 |
| --- a/net/wireless/nl80211.c |
| +++ b/net/wireless/nl80211.c |
| @@ -10019,6 +10019,9 @@ static int nl80211_start_radar_detection(struct sk_buff *skb, |
| if (WARN_ON(!cac_time_ms)) |
| cac_time_ms = IEEE80211_DFS_MIN_CAC_TIME_MS; |
| |
| + pr_info("%s: region = %u, center freq1 = %u, center freq2 = %u, cac time ms = %u\n", |
| + __func__, dfs_region, chandef.center_freq1, chandef.center_freq2, cac_time_ms); |
| + |
| err = rdev_start_radar_detection(rdev, dev, &chandef, cac_time_ms); |
| if (!err) { |
| wdev->links[0].ap.chandef = chandef; |
| -- |
| 2.39.2 |
| |