aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorSriram R <srirrama@codeaurora.org>2018-05-15 05:09:48 -0400
committerKalle Valo <kvalo@codeaurora.org>2018-05-25 06:15:21 -0400
commitf40105e6747892e8edab94020567c158c9bec0df (patch)
treeff3c2eb3f2c869a8f102e8976ba85e861bc29be5 /drivers/net
parentffbc9197b4721634dc6c0fefa9b31e565fa89cee (diff)
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>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/wireless/ath/ath10k/wmi.c2
-rw-r--r--drivers/net/wireless/ath/ath9k/dfs.c2
-rw-r--r--drivers/net/wireless/ath/dfs_pattern_detector.c5
-rw-r--r--drivers/net/wireless/ath/dfs_pattern_detector.h3
-rw-r--r--drivers/net/wireless/ath/dfs_pri_detector.h3
5 files changed, 10 insertions, 5 deletions
diff --git a/drivers/net/wireless/ath/ath10k/wmi.c b/drivers/net/wireless/ath/ath10k/wmi.c
index 46fb96ee5852..1bccac002e97 100644
--- a/drivers/net/wireless/ath/ath10k/wmi.c
+++ b/drivers/net/wireless/ath/ath10k/wmi.c
@@ -3757,7 +3757,7 @@ static void ath10k_dfs_radar_report(struct ath10k *ar,
3757 3757
3758 ATH10K_DFS_STAT_INC(ar, pulses_detected); 3758 ATH10K_DFS_STAT_INC(ar, pulses_detected);
3759 3759
3760 if (!ar->dfs_detector->add_pulse(ar->dfs_detector, &pe)) { 3760 if (!ar->dfs_detector->add_pulse(ar->dfs_detector, &pe, NULL)) {
3761 ath10k_dbg(ar, ATH10K_DBG_REGULATORY, 3761 ath10k_dbg(ar, ATH10K_DBG_REGULATORY,
3762 "dfs no pulse pattern detected, yet\n"); 3762 "dfs no pulse pattern detected, yet\n");
3763 return; 3763 return;
diff --git a/drivers/net/wireless/ath/ath9k/dfs.c b/drivers/net/wireless/ath/ath9k/dfs.c
index c8844f55574c..acb9602aa464 100644
--- a/drivers/net/wireless/ath/ath9k/dfs.c
+++ b/drivers/net/wireless/ath/ath9k/dfs.c
@@ -277,7 +277,7 @@ ath9k_dfs_process_radar_pulse(struct ath_softc *sc, struct pulse_event *pe)
277 DFS_STAT_INC(sc, pulses_processed); 277 DFS_STAT_INC(sc, pulses_processed);
278 if (pd == NULL) 278 if (pd == NULL)
279 return; 279 return;
280 if (!pd->add_pulse(pd, pe)) 280 if (!pd->add_pulse(pd, pe, NULL))
281 return; 281 return;
282 DFS_STAT_INC(sc, radar_detected); 282 DFS_STAT_INC(sc, radar_detected);
283 ieee80211_radar_detected(sc->hw); 283 ieee80211_radar_detected(sc->hw);
diff --git a/drivers/net/wireless/ath/dfs_pattern_detector.c b/drivers/net/wireless/ath/dfs_pattern_detector.c
index 448b83eea810..d52b31b45df7 100644
--- 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_detector *dpd)
268} 268}
269 269
270static bool 270static bool
271dpd_add_pulse(struct dfs_pattern_detector *dpd, struct pulse_event *event) 271dpd_add_pulse(struct dfs_pattern_detector *dpd, struct pulse_event *event,
272 struct radar_detector_specs *rs)
272{ 273{
273 u32 i; 274 u32 i;
274 struct channel_detector *cd; 275 struct channel_detector *cd;
@@ -294,6 +295,8 @@ dpd_add_pulse(struct dfs_pattern_detector *dpd, struct pulse_event *event)
294 struct pri_detector *pd = cd->detectors[i]; 295 struct pri_detector *pd = cd->detectors[i];
295 struct pri_sequence *ps = pd->add_pulse(pd, event); 296 struct pri_sequence *ps = pd->add_pulse(pd, event);
296 if (ps != NULL) { 297 if (ps != NULL) {
298 if (rs != NULL)
299 memcpy(rs, pd->rs, sizeof(*rs));
297 ath_dbg(dpd->common, DFS, 300 ath_dbg(dpd->common, DFS,
298 "DFS: radar found on freq=%d: id=%d, pri=%d, " 301 "DFS: radar found on freq=%d: id=%d, pri=%d, "
299 "count=%d, count_false=%d\n", 302 "count=%d, count_false=%d\n",
diff --git a/drivers/net/wireless/ath/dfs_pattern_detector.h b/drivers/net/wireless/ath/dfs_pattern_detector.h
index 92be3530e9b5..18db6f4f3568 100644
--- 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 {
97 bool (*set_dfs_domain)(struct dfs_pattern_detector *dpd, 97 bool (*set_dfs_domain)(struct dfs_pattern_detector *dpd,
98 enum nl80211_dfs_regions region); 98 enum nl80211_dfs_regions region);
99 bool (*add_pulse)(struct dfs_pattern_detector *dpd, 99 bool (*add_pulse)(struct dfs_pattern_detector *dpd,
100 struct pulse_event *pe); 100 struct pulse_event *pe,
101 struct radar_detector_specs *rs);
101 102
102 struct ath_dfs_pool_stats (*get_stats)(struct dfs_pattern_detector *dpd); 103 struct ath_dfs_pool_stats (*get_stats)(struct dfs_pattern_detector *dpd);
103 enum nl80211_dfs_regions region; 104 enum nl80211_dfs_regions region;
diff --git a/drivers/net/wireless/ath/dfs_pri_detector.h b/drivers/net/wireless/ath/dfs_pri_detector.h
index 79f0fff4d1e6..86339f2b4d3a 100644
--- 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 {
62 (*add_pulse)(struct pri_detector *de, struct pulse_event *e); 62 (*add_pulse)(struct pri_detector *de, struct pulse_event *e);
63 void (*reset) (struct pri_detector *de, u64 ts); 63 void (*reset) (struct pri_detector *de, u64 ts);
64 64
65/* private: internal use only */
66 const struct radar_detector_specs *rs; 65 const struct radar_detector_specs *rs;
66
67/* private: internal use only */
67 u64 last_ts; 68 u64 last_ts;
68 struct list_head sequences; 69 struct list_head sequences;
69 struct list_head pulses; 70 struct list_head pulses;