| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- From f40105e6747892e8edab94020567c158c9bec0df Mon Sep 17 00:00:00 2001
- From: Sriram R <[email protected]>
- 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 <[email protected]>
- Signed-off-by: Kalle Valo <[email protected]>
- ---
- 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;
|