2dcd955aea
This commit refreshes and updates the VHT160 ath10k support fix patches and adds a number of backports from ath-next: * 8ed05ed06fca ath10k: handle tdls peer events * 229329ff345f ath10k: wmi: modify svc bitmap parsing for wcn3990 * 14d65775687c ath10k: advertise TDLS wider bandwidth support for 5GHz * bc64d05220f3 ath10k: debugfs support to get final TPC stats for 10.4 variants * 8b2d93dd2261 ath10k: Fix kernel panic while using worker (ath10k_sta_rc_update_wk) * 4b190675ad06 ath10k: fix kernel panic while reading tpc_stats * be8cce96f14d ath10k: add support to configure channel dwell time * f40105e67478 ath: add support to get the detected radar specifications * 6f6eb1bcbeff ath10k: DFS Host Confirmation * 260e629bbf44 ath10k: fix memory leak of tpc_stats * 38441fb6fcbb ath10k: support use of channel 173 * 2e9bcd0d7324 ath10k: fix spectral scan for QCA9984 and QCA9888 chipsets Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com> [move backported patches in the 3xx number space, bring in upstream order, replace incomplete patch files with git format-patch ones, rewrite commit message, fix subject] Signed-off-by: Jo-Philipp Wich <jo@mein.io>
94 lines
3.7 KiB
Diff
94 lines
3.7 KiB
Diff
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;
|