| From 9b4ed2d99cc24c50bef088ee2bc48047d4e17c97 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 02/21] cfg80211: mtk: 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 3e0a190..32df498 100644 |
| --- a/include/net/cfg80211.h |
| +++ b/include/net/cfg80211.h |
| @@ -149,6 +149,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 d5ed976..caa5acc 100644 |
| --- a/net/wireless/chan.c |
| +++ b/net/wireless/chan.c |
| @@ -931,6 +931,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 6d62c81..3ec073a 100644 |
| --- a/net/wireless/nl80211.c |
| +++ b/net/wireless/nl80211.c |
| @@ -9992,6 +9992,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 |
| |