diff options
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.patch | 94 |
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; |