aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/mac80211/patches/380-0007-ath-add-support-to-get-the-detected-radar-specificat.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/kernel/mac80211/patches/380-0007-ath-add-support-to-get-the-detected-radar-specificat.patch')
-rw-r--r--package/kernel/mac80211/patches/380-0007-ath-add-support-to-get-the-detected-radar-specificat.patch94
1 files changed, 94 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/380-0007-ath-add-support-to-get-the-detected-radar-specificat.patch b/package/kernel/mac80211/patches/380-0007-ath-add-support-to-get-the-detected-radar-specificat.patch
new file mode 100644
index 0000000000..020dfbd3a2
--- /dev/null
+++ b/package/kernel/mac80211/patches/380-0007-ath-add-support-to-get-the-detected-radar-specificat.patch
@@ -0,0 +1,94 @@
+From f40105e6747892e8edab94020567c158c9bec0df Mon Sep 17 00:00:00 2001
+From: Sriram R <srirrama@codeaurora.org>
+Date: Tue, 15 May 2018 14:39:48 +0530
+Subject: [PATCH] ath: add support to get the detected radar specifications
+
+This enables ath10k/ath9k drivers to collect the specifications of the
+radar type once it is detected by the dfs pattern detector unit.
+Usage of the collected info is specific to driver implementation.
+For example, collected radar info could be used by the host driver
+to send to co-processors for additional processing/validation.
+
+Note: 'radar_detector_specs' data containing the specifications of
+different radar types which was private within dfs_pattern_detector/
+dfs_pri_detector is now shared with drivers as well for making use
+of this information.
+
+Signed-off-by: Sriram R <srirrama@codeaurora.org>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+---
+ drivers/net/wireless/ath/ath10k/wmi.c | 2 +-
+ drivers/net/wireless/ath/ath9k/dfs.c | 2 +-
+ drivers/net/wireless/ath/dfs_pattern_detector.c | 5 ++++-
+ drivers/net/wireless/ath/dfs_pattern_detector.h | 3 ++-
+ drivers/net/wireless/ath/dfs_pri_detector.h | 3 ++-
+ 5 files changed, 10 insertions(+), 5 deletions(-)
+
+--- a/drivers/net/wireless/ath/ath10k/wmi.c
++++ b/drivers/net/wireless/ath/ath10k/wmi.c
+@@ -3712,7 +3712,7 @@ static void ath10k_dfs_radar_report(stru
+
+ ATH10K_DFS_STAT_INC(ar, pulses_detected);
+
+- if (!ar->dfs_detector->add_pulse(ar->dfs_detector, &pe)) {
++ if (!ar->dfs_detector->add_pulse(ar->dfs_detector, &pe, NULL)) {
+ ath10k_dbg(ar, ATH10K_DBG_REGULATORY,
+ "dfs no pulse pattern detected, yet\n");
+ return;
+--- a/drivers/net/wireless/ath/ath9k/dfs.c
++++ b/drivers/net/wireless/ath/ath9k/dfs.c
+@@ -279,7 +279,7 @@ ath9k_dfs_process_radar_pulse(struct ath
+ DFS_STAT_INC(sc, pulses_processed);
+ if (pd == NULL)
+ return;
+- if (!pd->add_pulse(pd, pe))
++ if (!pd->add_pulse(pd, pe, NULL))
+ return;
+ DFS_STAT_INC(sc, radar_detected);
+ ieee80211_radar_detected(sc->hw);
+--- a/drivers/net/wireless/ath/dfs_pattern_detector.c
++++ b/drivers/net/wireless/ath/dfs_pattern_detector.c
+@@ -268,7 +268,8 @@ static void dpd_exit(struct dfs_pattern_
+ }
+
+ static bool
+-dpd_add_pulse(struct dfs_pattern_detector *dpd, struct pulse_event *event)
++dpd_add_pulse(struct dfs_pattern_detector *dpd, struct pulse_event *event,
++ struct radar_detector_specs *rs)
+ {
+ u32 i;
+ struct channel_detector *cd;
+@@ -294,6 +295,8 @@ dpd_add_pulse(struct dfs_pattern_detecto
+ struct pri_detector *pd = cd->detectors[i];
+ struct pri_sequence *ps = pd->add_pulse(pd, event);
+ if (ps != NULL) {
++ if (rs != NULL)
++ memcpy(rs, pd->rs, sizeof(*rs));
+ ath_dbg(dpd->common, DFS,
+ "DFS: radar found on freq=%d: id=%d, pri=%d, "
+ "count=%d, count_false=%d\n",
+--- a/drivers/net/wireless/ath/dfs_pattern_detector.h
++++ b/drivers/net/wireless/ath/dfs_pattern_detector.h
+@@ -97,7 +97,8 @@ struct dfs_pattern_detector {
+ bool (*set_dfs_domain)(struct dfs_pattern_detector *dpd,
+ enum nl80211_dfs_regions region);
+ bool (*add_pulse)(struct dfs_pattern_detector *dpd,
+- struct pulse_event *pe);
++ struct pulse_event *pe,
++ struct radar_detector_specs *rs);
+
+ struct ath_dfs_pool_stats (*get_stats)(struct dfs_pattern_detector *dpd);
+ enum nl80211_dfs_regions region;
+--- a/drivers/net/wireless/ath/dfs_pri_detector.h
++++ b/drivers/net/wireless/ath/dfs_pri_detector.h
+@@ -62,8 +62,9 @@ struct pri_detector {
+ (*add_pulse)(struct pri_detector *de, struct pulse_event *e);
+ void (*reset) (struct pri_detector *de, u64 ts);
+
+-/* private: internal use only */
+ const struct radar_detector_specs *rs;
++
++/* private: internal use only */
+ u64 last_ts;
+ struct list_head sequences;
+ struct list_head pulses;