summaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/mediatek/mt76/mt76x2_dfs.h
diff options
context:
space:
mode:
authorLorenzo Bianconi2018-06-29 13:40:53 +0200
committerKalle Valo2018-07-04 17:15:58 +0200
commit1fc9bc9ab501cf31119e959379f158280f2a8ea1 (patch)
tree63b7c3690570d45442ca81961081663439e8ee38 /drivers/net/wireless/mediatek/mt76/mt76x2_dfs.h
parentmt76: introduce mt76_{incr,decr} utility routines (diff)
downloadkernel-qcow2-linux-1fc9bc9ab501cf31119e959379f158280f2a8ea1.tar.gz
kernel-qcow2-linux-1fc9bc9ab501cf31119e959379f158280f2a8ea1.tar.xz
kernel-qcow2-linux-1fc9bc9ab501cf31119e959379f158280f2a8ea1.zip
mt76x2: dfs: add sw event ring buffer
Introduce sw event ring buffer to queue DFS pulses loaded from the hw. Radar pulses will be used in DFS sw detector Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Diffstat (limited to 'drivers/net/wireless/mediatek/mt76/mt76x2_dfs.h')
-rw-r--r--drivers/net/wireless/mediatek/mt76/mt76x2_dfs.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x2_dfs.h b/drivers/net/wireless/mediatek/mt76/mt76x2_dfs.h
index 8dbc783cc6bc..49a49e999fed 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x2_dfs.h
+++ b/drivers/net/wireless/mediatek/mt76/mt76x2_dfs.h
@@ -33,6 +33,12 @@
#define MT_DFS_PKT_END_MASK 0
#define MT_DFS_CH_EN 0xf
+/* sw detector params */
+#define MT_DFS_EVENT_LOOP 64
+#define MT_DFS_SW_TIMEOUT (HZ / 20)
+#define MT_DFS_EVENT_WINDOW (HZ / 5)
+#define MT_DFS_EVENT_TIME_MARGIN 2000
+
struct mt76x2_radar_specs {
u8 mode;
u16 avg_len;
@@ -50,6 +56,23 @@ struct mt76x2_radar_specs {
u16 pwr_jmp;
};
+#define MT_DFS_CHECK_EVENT(x) ((x) != GENMASK(31, 0))
+#define MT_DFS_EVENT_ENGINE(x) (((x) & BIT(31)) ? 2 : 0)
+#define MT_DFS_EVENT_TIMESTAMP(x) ((x) & GENMASK(21, 0))
+#define MT_DFS_EVENT_WIDTH(x) ((x) & GENMASK(11, 0))
+struct mt76x2_dfs_event {
+ unsigned long fetch_ts;
+ u32 ts;
+ u16 width;
+ u8 engine;
+};
+
+#define MT_DFS_EVENT_BUFLEN 256
+struct mt76x2_dfs_event_rb {
+ struct mt76x2_dfs_event data[MT_DFS_EVENT_BUFLEN];
+ int h_rb, t_rb;
+};
+
struct mt76x2_dfs_hw_pulse {
u8 engine;
u32 period;
@@ -69,6 +92,10 @@ struct mt76x2_dfs_pattern_detector {
u8 chirp_pulse_cnt;
u32 chirp_pulse_ts;
+ struct mt76x2_dfs_event_rb event_rb[2];
+ unsigned long last_sw_check;
+ u32 last_event_ts;
+
struct mt76x2_dfs_engine_stats stats[MT_DFS_NUM_ENGINES];
struct tasklet_struct dfs_tasklet;
};