|
@@ -1,6 +1,6 @@
|
|
/*
|
|
/*
|
|
* Copyright (c) 2013, 2016-2021 The Linux Foundation. All rights reserved.
|
|
* Copyright (c) 2013, 2016-2021 The Linux Foundation. All rights reserved.
|
|
- * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
|
|
|
|
|
+ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
|
* Copyright (c) 2005-2006 Atheros Communications, Inc.
|
|
* Copyright (c) 2005-2006 Atheros Communications, Inc.
|
|
*
|
|
*
|
|
* Permission to use, copy, modify, and/or distribute this software for any
|
|
* Permission to use, copy, modify, and/or distribute this software for any
|
|
@@ -53,21 +53,20 @@
|
|
#define DC(x) ((struct wlan_dfs *)(x))
|
|
#define DC(x) ((struct wlan_dfs *)(x))
|
|
|
|
|
|
/**
|
|
/**
|
|
- * dfs_log: dfs logging using submodule MASKs and
|
|
|
|
- * QDF trace level.
|
|
|
|
- * The logging is controlled by two bitmasks:
|
|
|
|
- * 1) submodule bitmask: sm
|
|
|
|
- * 2) trace level masks: level
|
|
|
|
- *
|
|
|
|
|
|
+ * dfs_log() - dfs logging using submodule MASKs and QDF trace level.
|
|
* @dfs: The dfs object pointer or NULL if dfs is not defined.
|
|
* @dfs: The dfs object pointer or NULL if dfs is not defined.
|
|
* @sm: Submodule BITMASK.
|
|
* @sm: Submodule BITMASK.
|
|
* @level: QDF trace level.
|
|
* @level: QDF trace level.
|
|
* @args...: Variable argument list.
|
|
* @args...: Variable argument list.
|
|
*
|
|
*
|
|
|
|
+ * The logging is controlled by two bitmasks:
|
|
|
|
+ * 1) submodule bitmask: sm
|
|
|
|
+ * 2) trace level masks: level
|
|
|
|
+ *
|
|
* The submodule(sm) cannot be empty even if argument dfs is NULL.
|
|
* The submodule(sm) cannot be empty even if argument dfs is NULL.
|
|
* Else the macro will create a compilation error.
|
|
* Else the macro will create a compilation error.
|
|
- * One may provide WLAN_DEBUG_DFS_ALWAYS when the argument dfs is NULL.
|
|
|
|
- * Example:-
|
|
|
|
|
|
+ * One may provide WLAN_DEBUG_DFS_ALWAYS when the argument @dfs is NULL.
|
|
|
|
+ *
|
|
* dfs_log(NULL, WLAN_DEBUG_DFS_ALWAYS, QDF_TRACE_LEVEL_INFO,"Error pulse");
|
|
* dfs_log(NULL, WLAN_DEBUG_DFS_ALWAYS, QDF_TRACE_LEVEL_INFO,"Error pulse");
|
|
*
|
|
*
|
|
* Why DC(x) is required?
|
|
* Why DC(x) is required?
|
|
@@ -76,7 +75,7 @@
|
|
* then during compilation (NULL)->dfs_debug_mask will dereference
|
|
* then during compilation (NULL)->dfs_debug_mask will dereference
|
|
* a (void *) type, which is illegal. Therefore, we need
|
|
* a (void *) type, which is illegal. Therefore, we need
|
|
* the cast: (DC(dfs))->dfs_debug_mask.
|
|
* the cast: (DC(dfs))->dfs_debug_mask.
|
|
- * Example:-
|
|
|
|
|
|
+ *
|
|
* dfs_log(NULL, WLAN_DEBUG_DFS, QDF_TRACE_LEVEL_INFO,"dfs is NULL");
|
|
* dfs_log(NULL, WLAN_DEBUG_DFS, QDF_TRACE_LEVEL_INFO,"dfs is NULL");
|
|
*/
|
|
*/
|
|
#define dfs_log(dfs, sm, level, args...) do { \
|
|
#define dfs_log(dfs, sm, level, args...) do { \
|
|
@@ -109,13 +108,13 @@
|
|
#define DFS_MAX(a, b) ((a) > (b)?(a) : (b))
|
|
#define DFS_MAX(a, b) ((a) > (b)?(a) : (b))
|
|
#define DFS_DIFF(a, b)(DFS_MAX(a, b) - DFS_MIN(a, b))
|
|
#define DFS_DIFF(a, b)(DFS_MAX(a, b) - DFS_MIN(a, b))
|
|
|
|
|
|
-/**
|
|
|
|
|
|
+/*
|
|
* Maximum number of radar events to be processed in a single iteration.
|
|
* Maximum number of radar events to be processed in a single iteration.
|
|
* Allows soft watchdog to run.
|
|
* Allows soft watchdog to run.
|
|
*/
|
|
*/
|
|
#define MAX_EVENTS 100
|
|
#define MAX_EVENTS 100
|
|
|
|
|
|
-/**
|
|
|
|
|
|
+/*
|
|
* Constants to use for chirping detection.
|
|
* Constants to use for chirping detection.
|
|
*
|
|
*
|
|
* All are unconverted as HW reports them.
|
|
* All are unconverted as HW reports them.
|
|
@@ -126,7 +125,7 @@
|
|
|
|
|
|
#define MAX_DUR_FOR_LOW_RSSI 4
|
|
#define MAX_DUR_FOR_LOW_RSSI 4
|
|
|
|
|
|
-/**
|
|
|
|
|
|
+/*
|
|
* Cascade has issue with reported duration especially when there is a
|
|
* Cascade has issue with reported duration especially when there is a
|
|
* crossover of chirp from one segment to another. It may report a value
|
|
* crossover of chirp from one segment to another. It may report a value
|
|
* of duration that is well below 50us for a valid FCC type 5 chirping
|
|
* of duration that is well below 50us for a valid FCC type 5 chirping
|
|
@@ -148,7 +147,7 @@
|
|
#define DFS_MARGIN_EQUAL(a, b, margin) ((DFS_DIFF(a, b)) <= margin)
|
|
#define DFS_MARGIN_EQUAL(a, b, margin) ((DFS_DIFF(a, b)) <= margin)
|
|
#define DFS_MAX_STAGGERED_BURSTS 3
|
|
#define DFS_MAX_STAGGERED_BURSTS 3
|
|
|
|
|
|
-/**
|
|
|
|
|
|
+/*
|
|
* All filter thresholds in the radar filter tables are effective at a 50%
|
|
* All filter thresholds in the radar filter tables are effective at a 50%
|
|
* channel loading.
|
|
* channel loading.
|
|
*/
|
|
*/
|
|
@@ -255,12 +254,12 @@
|
|
#define DFS_BIN_MAX_PULSES 60 /* max num of pulses in a burst */
|
|
#define DFS_BIN_MAX_PULSES 60 /* max num of pulses in a burst */
|
|
#define DFS_BIN5_PRI_LOWER_LIMIT 990 /* us */
|
|
#define DFS_BIN5_PRI_LOWER_LIMIT 990 /* us */
|
|
|
|
|
|
-/**
|
|
|
|
|
|
+/*
|
|
* To cover the single pusle burst case, change from 2010 us to
|
|
* To cover the single pusle burst case, change from 2010 us to
|
|
* 2010000 us.
|
|
* 2010000 us.
|
|
*/
|
|
*/
|
|
|
|
|
|
-/**
|
|
|
|
|
|
+/*
|
|
* This is reverted back to 2010 as larger value causes false
|
|
* This is reverted back to 2010 as larger value causes false
|
|
* bin5 detect (EV76432, EV76320)
|
|
* bin5 detect (EV76432, EV76320)
|
|
*/
|
|
*/
|
|
@@ -269,7 +268,7 @@
|
|
#define DFS_BIN5_WIDTH_MARGIN 4 /* us */
|
|
#define DFS_BIN5_WIDTH_MARGIN 4 /* us */
|
|
#define DFS_BIN5_RSSI_MARGIN 5 /* dBm */
|
|
#define DFS_BIN5_RSSI_MARGIN 5 /* dBm */
|
|
|
|
|
|
-/**
|
|
|
|
|
|
+/*
|
|
* Following threshold is not specified but should be
|
|
* Following threshold is not specified but should be
|
|
* okay statistically.
|
|
* okay statistically.
|
|
*/
|
|
*/
|
|
@@ -289,7 +288,7 @@
|
|
/* Max value of valid psidx diff */
|
|
/* Max value of valid psidx diff */
|
|
#define DFS_MAX_PSIDX_DIFF 16
|
|
#define DFS_MAX_PSIDX_DIFF 16
|
|
|
|
|
|
-/**
|
|
|
|
|
|
+/*
|
|
* Software use: channel interference used for as AR as well as RADAR
|
|
* Software use: channel interference used for as AR as well as RADAR
|
|
* interference detection.
|
|
* interference detection.
|
|
*/
|
|
*/
|
|
@@ -411,7 +410,7 @@
|
|
* @DETECTOR_ID_2: Detector ID 2 (Agile detector in 80p80MHZ supported devices).
|
|
* @DETECTOR_ID_2: Detector ID 2 (Agile detector in 80p80MHZ supported devices).
|
|
* @AGILE_DETECTOR_ID_TRUE_160MHZ: Agile detector ID in true 160MHz devices.
|
|
* @AGILE_DETECTOR_ID_TRUE_160MHZ: Agile detector ID in true 160MHz devices.
|
|
* @AGILE_DETECTOR_11BE: Agile detector ID in true 320 MHz devices.
|
|
* @AGILE_DETECTOR_11BE: Agile detector ID in true 320 MHz devices.
|
|
- * @AGILE_DETECTOR_ID_80p80: Agile detector ID in 80p80MHz supported devices.
|
|
|
|
|
|
+ * @AGILE_DETECTOR_ID_80P80: Agile detector ID in 80p80MHz supported devices.
|
|
* @INVALID_DETECTOR_ID: Invalid detector id.
|
|
* @INVALID_DETECTOR_ID: Invalid detector id.
|
|
*/
|
|
*/
|
|
enum detector_id {
|
|
enum detector_id {
|
|
@@ -449,7 +448,7 @@ struct dfs_pulseparams {
|
|
|
|
|
|
/**
|
|
/**
|
|
* struct dfs_pulseline - Pulseline structure.
|
|
* struct dfs_pulseline - Pulseline structure.
|
|
- * @pl_elems[]: array of pulses in delay line.
|
|
|
|
|
|
+ * @pl_elems: array of pulses in delay line.
|
|
* @pl_firstelem: Index of the first element.
|
|
* @pl_firstelem: Index of the first element.
|
|
* @pl_lastelem: Index of the last element.
|
|
* @pl_lastelem: Index of the last element.
|
|
* @pl_numelems: Number of elements in the delay line.
|
|
* @pl_numelems: Number of elements in the delay line.
|
|
@@ -472,6 +471,9 @@ struct dfs_pulseline {
|
|
((e)->re_flags & (DFS_EVENT_HW_CHIRP | DFS_EVENT_SW_CHIRP))
|
|
((e)->re_flags & (DFS_EVENT_HW_CHIRP | DFS_EVENT_SW_CHIRP))
|
|
|
|
|
|
/**
|
|
/**
|
|
|
|
+ * DFS_EVENT_NOTCHIRP() - Check if event can be a chirp
|
|
|
|
+ * @e: event
|
|
|
|
+ *
|
|
* Check if the given event is to be rejected as not possibly
|
|
* Check if the given event is to be rejected as not possibly
|
|
* a chirp. This means:
|
|
* a chirp. This means:
|
|
* (a) it's a hardware or software checked chirp, and
|
|
* (a) it's a hardware or software checked chirp, and
|
|
@@ -549,13 +551,13 @@ struct dfs_event {
|
|
/**
|
|
/**
|
|
* struct dfs_ar_state - DFS AR state structure.
|
|
* struct dfs_ar_state - DFS AR state structure.
|
|
* @ar_prevwidth: Previous width.
|
|
* @ar_prevwidth: Previous width.
|
|
- * @ar_phyerrcount[]: Phy error count.
|
|
|
|
|
|
+ * @ar_phyerrcount: Phy error count.
|
|
* @ar_acksum: Acksum.
|
|
* @ar_acksum: Acksum.
|
|
* @ar_packetthreshold: Thresh to determine traffic load.
|
|
* @ar_packetthreshold: Thresh to determine traffic load.
|
|
* @ar_parthreshold: Thresh to determine peak.
|
|
* @ar_parthreshold: Thresh to determine peak.
|
|
* @ar_radarrssi: Rssi threshold for AR event.
|
|
* @ar_radarrssi: Rssi threshold for AR event.
|
|
* @ar_prevtimestamp: Prev time stamp.
|
|
* @ar_prevtimestamp: Prev time stamp.
|
|
- * @ar_peaklist[]: Peak list.
|
|
|
|
|
|
+ * @ar_peaklist: Peak list.
|
|
*/
|
|
*/
|
|
struct dfs_ar_state {
|
|
struct dfs_ar_state {
|
|
uint32_t ar_prevwidth;
|
|
uint32_t ar_prevwidth;
|
|
@@ -594,7 +596,7 @@ struct dfs_delayelem {
|
|
|
|
|
|
/**
|
|
/**
|
|
* struct dfs_delayline - DFS Delay Line.
|
|
* struct dfs_delayline - DFS Delay Line.
|
|
- * @dl_elems[]: Array of pulses in delay line.
|
|
|
|
|
|
+ * @dl_elems: Array of pulses in delay line.
|
|
* @dl_last_ts: Last timestamp the delay line was used (in usecs).
|
|
* @dl_last_ts: Last timestamp the delay line was used (in usecs).
|
|
* @dl_firstelem: Index of the first element.
|
|
* @dl_firstelem: Index of the first element.
|
|
* @dl_lastelem: Index of the last element.
|
|
* @dl_lastelem: Index of the last element.
|
|
@@ -677,7 +679,7 @@ struct dfs_filter {
|
|
|
|
|
|
/**
|
|
/**
|
|
* struct dfs_filtertype - Structure of DFS Filter type.
|
|
* struct dfs_filtertype - Structure of DFS Filter type.
|
|
- * @ft_filters[]: Array of ptrs storing addresses for struct of dfs_filter.
|
|
|
|
|
|
+ * @ft_filters: Array of ptrs storing addresses for struct of dfs_filter.
|
|
* @ft_filterdur: Duration of pulse which specifies filter type.
|
|
* @ft_filterdur: Duration of pulse which specifies filter type.
|
|
* @ft_numfilters: Num filters of this type.
|
|
* @ft_numfilters: Num filters of this type.
|
|
* @ft_last_ts: Last timestamp this filtertype was used (in usecs).
|
|
* @ft_last_ts: Last timestamp this filtertype was used (in usecs).
|
|
@@ -761,7 +763,8 @@ struct dfs_state {
|
|
|
|
|
|
/**
|
|
/**
|
|
* struct dfs_nolelem - DFS NOL element.
|
|
* struct dfs_nolelem - DFS NOL element.
|
|
- * @nol_dfs Back pointer to dfs object.
|
|
|
|
|
|
+ * @nolelem_list: NOL element list node
|
|
|
|
+ * @nol_dfs: Back pointer to dfs object.
|
|
* @nol_freq: Centre frequency.
|
|
* @nol_freq: Centre frequency.
|
|
* @nol_chwidth: Event width (MHz).
|
|
* @nol_chwidth: Event width (MHz).
|
|
* @nol_start_us: NOL start time in us.
|
|
* @nol_start_us: NOL start time in us.
|
|
@@ -827,7 +830,7 @@ struct dfs_bin5elem {
|
|
|
|
|
|
/**
|
|
/**
|
|
* struct dfs_bin5radars - BIN5 radars.
|
|
* struct dfs_bin5radars - BIN5 radars.
|
|
- * @br_elems[]: List of bin5 elems that fall within the time window.
|
|
|
|
|
|
+ * @br_elems: List of bin5 elems that fall within the time window.
|
|
* @br_firstelem: Index of the first element.
|
|
* @br_firstelem: Index of the first element.
|
|
* @br_lastelem: Index of the last element.
|
|
* @br_lastelem: Index of the last element.
|
|
* @br_numelems: Number of elements in the delay line.
|
|
* @br_numelems: Number of elements in the delay line.
|
|
@@ -952,9 +955,9 @@ struct dfs_mode_switch_defer_params {
|
|
* @DFS_AGILE_S_INIT: Default state or the start state of the Agile SM.
|
|
* @DFS_AGILE_S_INIT: Default state or the start state of the Agile SM.
|
|
* @DFS_AGILE_S_RUNNING: Agile Engine is being run.
|
|
* @DFS_AGILE_S_RUNNING: Agile Engine is being run.
|
|
* @DFS_AGILE_S_COMPLETE: The Agile Engine's minimum run is complete.
|
|
* @DFS_AGILE_S_COMPLETE: The Agile Engine's minimum run is complete.
|
|
- However, it is still running. Used only for RCAC
|
|
|
|
- as RCAC needs to run continuously (uninterrupted)
|
|
|
|
- until the channel change.
|
|
|
|
|
|
+ * However, it is still running. Used only for RCAC
|
|
|
|
+ * as RCAC needs to run continuously (uninterrupted)
|
|
|
|
+ * until the channel change.
|
|
* @DFS_AGILE_S_MAX: Max (invalid) state.
|
|
* @DFS_AGILE_S_MAX: Max (invalid) state.
|
|
*/
|
|
*/
|
|
enum dfs_agile_sm_state {
|
|
enum dfs_agile_sm_state {
|
|
@@ -975,35 +978,73 @@ struct dfs_rcac_params {
|
|
};
|
|
};
|
|
#endif
|
|
#endif
|
|
|
|
|
|
-/**
|
|
|
|
|
|
+/*
|
|
|
|
+ * NB: not using kernel-doc format since the kernel-doc script doesn't
|
|
|
|
+ * handle the TAILQ_HEAD() or STAILQ_HEAD() macros
|
|
|
|
+ *
|
|
* struct wlan_dfs - The main dfs structure.
|
|
* struct wlan_dfs - The main dfs structure.
|
|
* @dfs_debug_mask: Current debug bitmask.
|
|
* @dfs_debug_mask: Current debug bitmask.
|
|
* @dfs_curchan_radindex: Current channel radar index.
|
|
* @dfs_curchan_radindex: Current channel radar index.
|
|
* @dfs_extchan_radindex: Extension channel radar index.
|
|
* @dfs_extchan_radindex: Extension channel radar index.
|
|
|
|
+ * @dfs_ar_state: AR state.
|
|
|
|
+ * @dfs_radar: Per-Channel Radar detector state.
|
|
|
|
+ * @dfs_radarf: One filter for each radar pulse type.
|
|
|
|
+ * @dfs_rinfo: State vars for radar processing.
|
|
|
|
+ * @dfs_b5radars: Array of bin5 radar events.
|
|
|
|
+ * @dfs_ftindextable: Map of radar durs to filter types.
|
|
|
|
+ * @dfs_defaultparams: Default phy params per radar state.
|
|
|
|
+ * @events: Events structure.
|
|
|
|
+ * @dfs_caps: Object of wlan_dfs_caps structure.
|
|
|
|
+ * @wlan_dfs_task_timer: Dfs wait timer.
|
|
|
|
+ * @dur_multiplier: Duration multiplier.
|
|
|
|
+ * @wlan_dfs_isdfsregdomain: True when AP is in DFS domain
|
|
|
|
+ * @dfs_phyerr_w53_counter: Phyerr w53 counter.
|
|
|
|
+ * @dfs_seq_num: Sequence number.
|
|
|
|
+ * @dfs_min_sidx: Minimum sidx of the received radar pulses.
|
|
|
|
+ * @dfs_max_sidx: Maximum sidx of the received radar pulses.
|
|
|
|
+ * @dfs_data_struct_lock: DFS data structure lock. This is to protect
|
|
|
|
+ * all the filtering data structures. For
|
|
|
|
+ * example: dfs_bin5radars, dfs_filtertype,
|
|
|
|
+ * etc.
|
|
|
|
+ * @dfs_lowest_pri_limit:
|
|
|
|
+ * @dfs_eventq: Q of free dfs event objects.
|
|
|
|
+ * @dfs_radarq: Q of radar events.
|
|
|
|
+ * @dfs_arq: Q of AR events.
|
|
|
|
+ * @dfs_host_wait_timer: The timer that is started from host after
|
|
|
|
+ * sending the average radar parameters.
|
|
|
|
+ * Before this timeout host expects its dfs
|
|
|
|
+ * status from fw.
|
|
|
|
+ * @dfs_average_pri: Average pri value of the received radar
|
|
|
|
+ * pulses.
|
|
|
|
+ * @dfs_average_duration: Average duration of the received radar
|
|
|
|
+ * pulses.
|
|
|
|
+ * @dfs_average_sidx: Average sidx of the received radar pulses.
|
|
|
|
+ * @dfs_is_host_wait_running: Indicates if host dfs status wait timer is
|
|
|
|
+ * running.
|
|
|
|
+ * @dfs_average_params_sent: Indicates if host has sent the average
|
|
|
|
+ * radar parameters.
|
|
|
|
+ * @dfs_no_res_from_fw: Indicates no response from fw.
|
|
|
|
+ * @dfs_spoof_check_failed: Indicates if the spoof check has failed.
|
|
|
|
+ * @dfs_radar_found_chan: The channel on which radar was found.
|
|
|
|
+ * @dfs_status_timeout_override: Used to change the timeout value of
|
|
|
|
+ * dfs_host_wait_timer.
|
|
|
|
+ * @dfs_allow_hw_pulses: Allow/Block HW pulses. When synthetic
|
|
|
|
+ * pulses are injected, the HW pulses should
|
|
|
|
+ * be blocked and this variable should be
|
|
|
|
+ * false so that HW pulses and synthetic
|
|
|
|
+ * pulses do not get mixed up.
|
|
* @dfsdomain: Current DFS domain.
|
|
* @dfsdomain: Current DFS domain.
|
|
* @dfs_proc_phyerr: Flags for Phy Errs to process.
|
|
* @dfs_proc_phyerr: Flags for Phy Errs to process.
|
|
- * @dfs_eventq: Q of free dfs event objects.
|
|
|
|
* @dfs_eventqlock: Lock for free dfs event list.
|
|
* @dfs_eventqlock: Lock for free dfs event list.
|
|
- * @dfs_radarq: Q of radar events.
|
|
|
|
* @dfs_radarqlock: Lock for dfs q.
|
|
* @dfs_radarqlock: Lock for dfs q.
|
|
- * @dfs_arq: Q of AR events.
|
|
|
|
* @dfs_arqlock: Lock for AR q.
|
|
* @dfs_arqlock: Lock for AR q.
|
|
- * @dfs_ar_state: AR state.
|
|
|
|
- * @dfs_radar[]: Per-Channel Radar detector state.
|
|
|
|
- * @dfs_radarf[]: One filter for each radar pulse type.
|
|
|
|
- * @dfs_rinfo: State vars for radar processing.
|
|
|
|
- * @dfs_b5radars: Array of bin5 radar events.
|
|
|
|
- * @dfs_ftindextable: Map of radar durs to filter types.
|
|
|
|
* @dfs_nol: Non occupancy list for radar.
|
|
* @dfs_nol: Non occupancy list for radar.
|
|
* @dfs_nol_count: How many items?
|
|
* @dfs_nol_count: How many items?
|
|
- * @dfs_defaultparams: Default phy params per radar state.
|
|
|
|
* @wlan_dfs_stats: DFS related stats.
|
|
* @wlan_dfs_stats: DFS related stats.
|
|
* @pulses: Pulse history.
|
|
* @pulses: Pulse history.
|
|
- * @events: Events structure.
|
|
|
|
* @wlan_radar_tasksched: Radar task is scheduled.
|
|
* @wlan_radar_tasksched: Radar task is scheduled.
|
|
* @wlan_dfswait: Waiting on channel for radar detect.
|
|
* @wlan_dfswait: Waiting on channel for radar detect.
|
|
* @wlan_dfstest: Test timer in progress.
|
|
* @wlan_dfstest: Test timer in progress.
|
|
- * @dfs_caps: Object of wlan_dfs_caps structure.
|
|
|
|
* @wlan_dfstest_ieeechan: IEEE chan num to return to after a dfs mute
|
|
* @wlan_dfstest_ieeechan: IEEE chan num to return to after a dfs mute
|
|
* test.
|
|
* test.
|
|
* @wlan_dfs_cac_time: CAC period.
|
|
* @wlan_dfs_cac_time: CAC period.
|
|
@@ -1018,18 +1059,15 @@ struct dfs_rcac_params {
|
|
* @dfs_precac_primary_freq_mhz: PreCAC Primary freq in MHZ applicable only
|
|
* @dfs_precac_primary_freq_mhz: PreCAC Primary freq in MHZ applicable only
|
|
* to legacy chips.
|
|
* to legacy chips.
|
|
* @dfs_defer_precac_channel_change: Defer precac channel change.
|
|
* @dfs_defer_precac_channel_change: Defer precac channel change.
|
|
- * @dfs_precac_inter_chan_freq: Intermediate non-DFS freq used while
|
|
|
|
- * doing precac.
|
|
|
|
- * @dfs_autoswitch_chan: Desired channel of dfs_channel structure
|
|
|
|
- * which will be prioritized for preCAC.
|
|
|
|
* @dfs_autoswitch_des_mode: Desired PHY mode which has to be used
|
|
* @dfs_autoswitch_des_mode: Desired PHY mode which has to be used
|
|
* after precac.
|
|
* after precac.
|
|
- * @wlan_dfs_task_timer: Dfs wait timer.
|
|
|
|
- * @dur_multiplier: Duration multiplier.
|
|
|
|
- * @wlan_dfs_isdfsregdomain: True when AP is in DFS domain
|
|
|
|
|
|
+ * @dfs_autoswitch_chan: Desired channel of dfs_channel structure
|
|
|
|
+ * which will be prioritized for preCAC.
|
|
|
|
+ * @dfs_precac_inter_chan_freq: Intermediate non-DFS freq used while
|
|
|
|
+ * doing precac.
|
|
* @wlan_dfs_false_rssi_thres: False RSSI Threshold.
|
|
* @wlan_dfs_false_rssi_thres: False RSSI Threshold.
|
|
* @wlan_dfs_peak_mag: Peak mag.
|
|
* @wlan_dfs_peak_mag: Peak mag.
|
|
- * @radar_log[]: Radar log.
|
|
|
|
|
|
+ * @radar_log: Radar log.
|
|
* @dfs_event_log_count: Event log count.
|
|
* @dfs_event_log_count: Event log count.
|
|
* @dfs_event_log_on: Event log on.
|
|
* @dfs_event_log_on: Event log on.
|
|
* @dfs_phyerr_count: Same as number of PHY radar interrupts.
|
|
* @dfs_phyerr_count: Same as number of PHY radar interrupts.
|
|
@@ -1039,12 +1077,10 @@ struct dfs_rcac_params {
|
|
* the filters.
|
|
* the filters.
|
|
* @dfs_phyerr_freq_min: Phyerr min freq.
|
|
* @dfs_phyerr_freq_min: Phyerr min freq.
|
|
* @dfs_phyerr_freq_max: Phyerr max freq.
|
|
* @dfs_phyerr_freq_max: Phyerr max freq.
|
|
- * @dfs_phyerr_w53_counter: Phyerr w53 counter.
|
|
|
|
* @dfs_pri_multiplier: Allow pulse if they are within multiple of
|
|
* @dfs_pri_multiplier: Allow pulse if they are within multiple of
|
|
* PRI for the radar type.
|
|
* PRI for the radar type.
|
|
* @wlan_dfs_nol_timeout: NOL timeout.
|
|
* @wlan_dfs_nol_timeout: NOL timeout.
|
|
* @update_nol: Update NOL.
|
|
* @update_nol: Update NOL.
|
|
- * @dfs_seq_num: Sequence number.
|
|
|
|
* @dfs_nol_free_list: NOL free list.
|
|
* @dfs_nol_free_list: NOL free list.
|
|
* @dfs_nol_elem_free_work: The work queue to free an NOL element.
|
|
* @dfs_nol_elem_free_work: The work queue to free an NOL element.
|
|
* @dfs_cac_timer: CAC timer.
|
|
* @dfs_cac_timer: CAC timer.
|
|
@@ -1058,55 +1094,34 @@ struct dfs_rcac_params {
|
|
* @dfs_cac_valid_time: Time for which CAC will be valid and will
|
|
* @dfs_cac_valid_time: Time for which CAC will be valid and will
|
|
* not be re-done.
|
|
* not be re-done.
|
|
* @dfs_precac_timeout_override: Overridden precac timeout.
|
|
* @dfs_precac_timeout_override: Overridden precac timeout.
|
|
|
|
+ * @dfs_disable_radar_marking: To mark or unmark NOL chan as radar hit.
|
|
* @dfs_precac_list: PreCAC list (contains individual trees).
|
|
* @dfs_precac_list: PreCAC list (contains individual trees).
|
|
* @dfs_precac_chwidth: PreCAC channel width enum.
|
|
* @dfs_precac_chwidth: PreCAC channel width enum.
|
|
* @dfs_curchan: DFS current channel.
|
|
* @dfs_curchan: DFS current channel.
|
|
* @dfs_prevchan: DFS previous channel.
|
|
* @dfs_prevchan: DFS previous channel.
|
|
* @dfs_cac_started_chan: CAC started channel.
|
|
* @dfs_cac_started_chan: CAC started channel.
|
|
* @dfs_pdev_obj: DFS pdev object.
|
|
* @dfs_pdev_obj: DFS pdev object.
|
|
|
|
+ * @dfs_soc_obj: DFS soc object.
|
|
|
|
+ * @dfs_psoc_idx: DFS psoc index
|
|
|
|
+ * @dfs_agile_precac_freq_mhz: Freq in MHZ configured on Agile DFS engine.
|
|
* @dfs_is_offload_enabled: Set if DFS offload enabled.
|
|
* @dfs_is_offload_enabled: Set if DFS offload enabled.
|
|
* @dfs_is_bangradar_320_supported: Set if DFS 320MHZ enabled.
|
|
* @dfs_is_bangradar_320_supported: Set if DFS 320MHZ enabled.
|
|
* @dfs_is_radar_found_chan_freq_eq_center_freq:
|
|
* @dfs_is_radar_found_chan_freq_eq_center_freq:
|
|
* Set if chan_freq parameter of the radar
|
|
* Set if chan_freq parameter of the radar
|
|
* found wmi event indicates channel center.
|
|
* found wmi event indicates channel center.
|
|
- * @dfs_agile_precac_freq_mhz: Freq in MHZ configured on Agile DFS engine.
|
|
|
|
* @dfs_use_nol: Use the NOL when radar found(default: TRUE)
|
|
* @dfs_use_nol: Use the NOL when radar found(default: TRUE)
|
|
* @dfs_nol_lock: Lock to protect nol list.
|
|
* @dfs_nol_lock: Lock to protect nol list.
|
|
* @tx_leakage_threshold: Tx leakage threshold for dfs.
|
|
* @tx_leakage_threshold: Tx leakage threshold for dfs.
|
|
* @dfs_use_nol_subchannel_marking: Use subchannel marking logic to add only
|
|
* @dfs_use_nol_subchannel_marking: Use subchannel marking logic to add only
|
|
* radar affected subchannel instead of all
|
|
* radar affected subchannel instead of all
|
|
* bonding channels.
|
|
* bonding channels.
|
|
- * @dfs_host_wait_timer: The timer that is started from host after
|
|
|
|
- * sending the average radar parameters.
|
|
|
|
- * Before this timeout host expects its dfs
|
|
|
|
- * status from fw.
|
|
|
|
- * @dfs_average_pri: Average pri value of the received radar
|
|
|
|
- * pulses.
|
|
|
|
- * @dfs_average_duration: Average duration of the received radar
|
|
|
|
- * pulses.
|
|
|
|
- * @dfs_average_sidx: Average sidx of the received radar pulses.
|
|
|
|
- * @dfs_is_host_wait_running: Indicates if host dfs status wait timer is
|
|
|
|
- * running.
|
|
|
|
- * @dfs_average_params_sent: Indicates if host has sent the average
|
|
|
|
- * radar parameters.
|
|
|
|
- * @dfs_no_res_from_fw: Indicates no response from fw.
|
|
|
|
- * @dfs_spoof_check_failed: Indicates if the spoof check has failed.
|
|
|
|
* @dfs_spoof_test_done: Indicates if the sppof test is done.
|
|
* @dfs_spoof_test_done: Indicates if the sppof test is done.
|
|
- * @dfs_status_timeout_override: Used to change the timeout value of
|
|
|
|
- * dfs_host_wait_timer.
|
|
|
|
* @dfs_is_stadfs_enabled: Is STADFS enabled.
|
|
* @dfs_is_stadfs_enabled: Is STADFS enabled.
|
|
- * @dfs_min_sidx: Minimum sidx of the received radar pulses.
|
|
|
|
- * @dfs_max_sidx: Maximum sidx of the received radar pulses.
|
|
|
|
* @dfs_seg_id: Segment ID of the radar hit channel.
|
|
* @dfs_seg_id: Segment ID of the radar hit channel.
|
|
* @dfs_is_chirp: Radar Chirp in pulse present or not.
|
|
* @dfs_is_chirp: Radar Chirp in pulse present or not.
|
|
* @dfs_bw_reduced: DFS bandwidth reduced channel bit.
|
|
* @dfs_bw_reduced: DFS bandwidth reduced channel bit.
|
|
* @dfs_freq_offset: Frequency offset where radar was found.
|
|
* @dfs_freq_offset: Frequency offset where radar was found.
|
|
* @dfs_cac_aborted: DFS cac is aborted.
|
|
* @dfs_cac_aborted: DFS cac is aborted.
|
|
- * @dfs_disable_radar_marking: To mark or unmark NOL chan as radar hit.
|
|
|
|
- * @dfs_data_struct_lock: DFS data structure lock. This is to protect
|
|
|
|
- * all the filtering data structures. For
|
|
|
|
- * example: dfs_bin5radars, dfs_filtertype,
|
|
|
|
- * etc.
|
|
|
|
* @dfs_nol_ie_bandwidth: Minimum Bandwidth of subchannels that
|
|
* @dfs_nol_ie_bandwidth: Minimum Bandwidth of subchannels that
|
|
* are added to NOL.
|
|
* are added to NOL.
|
|
* @dfs_nol_ie_startfreq: The centre frequency of the starting
|
|
* @dfs_nol_ie_startfreq: The centre frequency of the starting
|
|
@@ -1117,7 +1132,6 @@ struct dfs_rcac_params {
|
|
* to be sent in NOL IE with RCSA.
|
|
* to be sent in NOL IE with RCSA.
|
|
* @dfs_is_rcsa_ie_sent: To send or to not send RCSA IE.
|
|
* @dfs_is_rcsa_ie_sent: To send or to not send RCSA IE.
|
|
* @dfs_is_nol_ie_sent: To send or to not send NOL IE.
|
|
* @dfs_is_nol_ie_sent: To send or to not send NOL IE.
|
|
- * @dfs_agile_precac_ucfg: User configuration for agile preCAC.
|
|
|
|
* @dfs_bw_expand_target_freq: User configured Channel frequency for
|
|
* @dfs_bw_expand_target_freq: User configured Channel frequency for
|
|
* bandwidth expansion feature.
|
|
* bandwidth expansion feature.
|
|
* @dfs_bw_expand_des_mode: User configured Channel Phymode for
|
|
* @dfs_bw_expand_des_mode: User configured Channel Phymode for
|
|
@@ -1126,16 +1140,11 @@ struct dfs_rcac_params {
|
|
* disabling BW Expansion feature.
|
|
* disabling BW Expansion feature.
|
|
* @dfs_use_puncture: User configured value for enabling or
|
|
* @dfs_use_puncture: User configured value for enabling or
|
|
* disabling DFS puncturing feature.
|
|
* disabling DFS puncturing feature.
|
|
|
|
+ * @dfs_agile_precac_ucfg: User configuration for agile preCAC.
|
|
* @dfs_agile_rcac_ucfg: User configuration for Rolling CAC.
|
|
* @dfs_agile_rcac_ucfg: User configuration for Rolling CAC.
|
|
* @dfs_fw_adfs_support_320: Target Agile DFS support for 320 BW.
|
|
* @dfs_fw_adfs_support_320: Target Agile DFS support for 320 BW.
|
|
* @dfs_fw_adfs_support_non_160: Target Agile DFS support for non-160 BWs.
|
|
* @dfs_fw_adfs_support_non_160: Target Agile DFS support for non-160 BWs.
|
|
* @dfs_fw_adfs_support_160: Target Agile DFS support for 160 BW.
|
|
* @dfs_fw_adfs_support_160: Target Agile DFS support for 160 BW.
|
|
- * @dfs_allow_hw_pulses: Allow/Block HW pulses. When synthetic
|
|
|
|
- * pulses are injected, the HW pulses should
|
|
|
|
- * be blocked and this variable should be
|
|
|
|
- * false so that HW pulses and synthetic
|
|
|
|
- * pulses do not get mixed up.
|
|
|
|
- * defer timer running.
|
|
|
|
* @dfs_defer_params: DFS deferred event parameters (allocated
|
|
* @dfs_defer_params: DFS deferred event parameters (allocated
|
|
* only for the duration of defer alone).
|
|
* only for the duration of defer alone).
|
|
* @dfs_agile_detector_id: Agile detector ID for the DFS object.
|
|
* @dfs_agile_detector_id: Agile detector ID for the DFS object.
|
|
@@ -1334,7 +1343,7 @@ struct wlan_dfs {
|
|
#if defined(QCA_SUPPORT_AGILE_DFS) || defined(ATH_SUPPORT_ZERO_CAC_DFS)
|
|
#if defined(QCA_SUPPORT_AGILE_DFS) || defined(ATH_SUPPORT_ZERO_CAC_DFS)
|
|
/**
|
|
/**
|
|
* struct wlan_dfs_priv - dfs private struct with agile capability info
|
|
* struct wlan_dfs_priv - dfs private struct with agile capability info
|
|
- * @wlan_dfs: pointer to wlan_dfs object.
|
|
|
|
|
|
+ * @dfs: pointer to wlan_dfs object.
|
|
* @agile_precac_active: agile precac active information for wlan_dfs_priv obj
|
|
* @agile_precac_active: agile precac active information for wlan_dfs_priv obj
|
|
*/
|
|
*/
|
|
struct wlan_dfs_priv {
|
|
struct wlan_dfs_priv {
|
|
@@ -1355,17 +1364,18 @@ struct wlan_dfs_priv {
|
|
* radar detection related information to host.
|
|
* radar detection related information to host.
|
|
* @dfs_priv: array of dfs private structs with agile capability info
|
|
* @dfs_priv: array of dfs private structs with agile capability info
|
|
* @num_dfs_privs: array size of dfs private structs for given psoc.
|
|
* @num_dfs_privs: array size of dfs private structs for given psoc.
|
|
- * @cur_dfs_index: index of the current dfs object using the Agile Engine.
|
|
|
|
|
|
+ * @cur_agile_dfs_index: index of the current dfs object using the Agile Engine.
|
|
* It is used to index struct wlan_dfs_priv dfs_priv[] array.
|
|
* It is used to index struct wlan_dfs_priv dfs_priv[] array.
|
|
* @dfs_precac_timer: agile precac timer
|
|
* @dfs_precac_timer: agile precac timer
|
|
* @dfs_precac_timer_running: precac timer running flag
|
|
* @dfs_precac_timer_running: precac timer running flag
|
|
|
|
+ * @precac_state_started: true if pre-CAC has started
|
|
* @ocac_status: Off channel CAC complete status
|
|
* @ocac_status: Off channel CAC complete status
|
|
- * @dfs_nol_ctx: dfs NOL data for all radios.
|
|
|
|
|
|
+ * @dfs_psoc_nolinfo: dfs NOL data for all radios.
|
|
* @dfs_rcac_timer: Agile RCAC (Rolling CAC) timer.
|
|
* @dfs_rcac_timer: Agile RCAC (Rolling CAC) timer.
|
|
* @dfs_agile_sm_hdl: The handle for the state machine that drives Agile
|
|
* @dfs_agile_sm_hdl: The handle for the state machine that drives Agile
|
|
* Engine.
|
|
* Engine.
|
|
* @dfs_agile_sm_cur_state: Current state of the Agile State Machine.
|
|
* @dfs_agile_sm_cur_state: Current state of the Agile State Machine.
|
|
- * @dfs_rcac_sm_lock: DFS Rolling CAC state machine lock.
|
|
|
|
|
|
+ * @dfs_agile_sm_lock: Agile state machine lock.
|
|
*/
|
|
*/
|
|
struct dfs_soc_priv_obj {
|
|
struct dfs_soc_priv_obj {
|
|
struct wlan_objmgr_psoc *psoc;
|
|
struct wlan_objmgr_psoc *psoc;
|
|
@@ -1392,7 +1402,7 @@ struct dfs_soc_priv_obj {
|
|
};
|
|
};
|
|
|
|
|
|
/**
|
|
/**
|
|
- * enum DFS debug - This should match the table from if_ath.c.
|
|
|
|
|
|
+ * enum dfs_debug - This should match the table from if_ath.c.
|
|
* @WLAN_DEBUG_DFS: Minimal DFS debug.
|
|
* @WLAN_DEBUG_DFS: Minimal DFS debug.
|
|
* @WLAN_DEBUG_DFS1: Normal DFS debug.
|
|
* @WLAN_DEBUG_DFS1: Normal DFS debug.
|
|
* @WLAN_DEBUG_DFS2: Maximal DFS debug.
|
|
* @WLAN_DEBUG_DFS2: Maximal DFS debug.
|
|
@@ -1409,8 +1419,10 @@ struct dfs_soc_priv_obj {
|
|
* detection.
|
|
* detection.
|
|
* @WLAN_DEBUG_DFS_RANDOM_CHAN: Random channel selection.
|
|
* @WLAN_DEBUG_DFS_RANDOM_CHAN: Random channel selection.
|
|
* @WLAN_DEBUG_DFS_AGILE: Agile PreCAC/RCAC
|
|
* @WLAN_DEBUG_DFS_AGILE: Agile PreCAC/RCAC
|
|
|
|
+ * @WLAN_DEBUG_DFS_MAX: Max flag
|
|
|
|
+ * @WLAN_DEBUG_DFS_ALWAYS: Always debug
|
|
*/
|
|
*/
|
|
-enum {
|
|
|
|
|
|
+enum dfs_debug {
|
|
WLAN_DEBUG_DFS = 0x00000100,
|
|
WLAN_DEBUG_DFS = 0x00000100,
|
|
WLAN_DEBUG_DFS1 = 0x00000200,
|
|
WLAN_DEBUG_DFS1 = 0x00000200,
|
|
WLAN_DEBUG_DFS2 = 0x00000400,
|
|
WLAN_DEBUG_DFS2 = 0x00000400,
|
|
@@ -1430,18 +1442,18 @@ enum {
|
|
WLAN_DEBUG_DFS_ALWAYS = WLAN_DEBUG_DFS_MAX
|
|
WLAN_DEBUG_DFS_ALWAYS = WLAN_DEBUG_DFS_MAX
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+#if defined(WLAN_DFS_PARTIAL_OFFLOAD) && defined(HOST_DFS_SPOOF_TEST)
|
|
/**
|
|
/**
|
|
- * enum host dfs spoof check status.
|
|
|
|
- * @HOST_DFS_CHECK_PASSED: Host indicates RADAR detected and the FW
|
|
|
|
- * confirms it to be spoof radar to host.
|
|
|
|
- * @HOST_DFS_CHECK_FAILED: Host doesn't indicate RADAR detected or spoof
|
|
|
|
- * radar parameters by
|
|
|
|
- * WMI_HOST_DFS_RADAR_FOUND_CMDID doesn't match.
|
|
|
|
- * @HOST_DFS_STATUS_CHECK_HW_RADAR: Host indicates RADAR detected and the
|
|
|
|
- * FW confirms it to be real HW radar to host.
|
|
|
|
|
|
+ * enum host_dfs_spoof_check_status - DFS spoof check status values
|
|
|
|
+ * @HOST_DFS_STATUS_CHECK_PASSED: Host indicates RADAR detected and the FW
|
|
|
|
+ * confirms it to be spoof radar to host.
|
|
|
|
+ * @HOST_DFS_STATUS_CHECK_FAILED: Host doesn't indicate RADAR detected or spoof
|
|
|
|
+ * radar parameters by
|
|
|
|
+ * WMI_HOST_DFS_RADAR_FOUND_CMDID doesn't match.
|
|
|
|
+ * @HOST_DFS_STATUS_CHECK_HW_RADAR: Host indicates RADAR detected and the FW
|
|
|
|
+ * confirms it to be real HW radar to host.
|
|
*/
|
|
*/
|
|
-#if defined(WLAN_DFS_PARTIAL_OFFLOAD) && defined(HOST_DFS_SPOOF_TEST)
|
|
|
|
-enum {
|
|
|
|
|
|
+enum host_dfs_spoof_check_status {
|
|
HOST_DFS_STATUS_CHECK_PASSED = 0,
|
|
HOST_DFS_STATUS_CHECK_PASSED = 0,
|
|
HOST_DFS_STATUS_CHECK_FAILED = 1,
|
|
HOST_DFS_STATUS_CHECK_FAILED = 1,
|
|
HOST_DFS_STATUS_CHECK_HW_RADAR = 2
|
|
HOST_DFS_STATUS_CHECK_HW_RADAR = 2
|
|
@@ -1800,9 +1812,8 @@ void dfs_print_filter(struct wlan_dfs *dfs,
|
|
* @index: To save the index of dfs_radar[]
|
|
* @index: To save the index of dfs_radar[]
|
|
* @ext_chan_flag: Extension channel flag;
|
|
* @ext_chan_flag: Extension channel flag;
|
|
*/
|
|
*/
|
|
-struct dfs_state *dfs_getchanstate(struct wlan_dfs *dfs,
|
|
|
|
- uint8_t *index,
|
|
|
|
- int ext_ch_flag);
|
|
|
|
|
|
+struct dfs_state *dfs_getchanstate(struct wlan_dfs *dfs, uint8_t *index,
|
|
|
|
+ int ext_chan_flag);
|
|
|
|
|
|
/**
|
|
/**
|
|
* dfs_round() - DFS found.
|
|
* dfs_round() - DFS found.
|
|
@@ -1873,7 +1884,7 @@ void dfs_add_pulse(struct wlan_dfs *dfs,
|
|
int dfs_bin_check(struct wlan_dfs *dfs,
|
|
int dfs_bin_check(struct wlan_dfs *dfs,
|
|
struct dfs_filter *rf,
|
|
struct dfs_filter *rf,
|
|
uint32_t deltaT,
|
|
uint32_t deltaT,
|
|
- uint32_t dur,
|
|
|
|
|
|
+ uint32_t width,
|
|
int ext_chan_flag);
|
|
int ext_chan_flag);
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -2035,6 +2046,7 @@ void dfs_reset(struct wlan_dfs *dfs);
|
|
* dfs_radar_enable() - Enables the radar.
|
|
* dfs_radar_enable() - Enables the radar.
|
|
* @dfs: Pointer to wlan_dfs structure.
|
|
* @dfs: Pointer to wlan_dfs structure.
|
|
* @no_cac: If no_cac is 0, it cancels the CAC.
|
|
* @no_cac: If no_cac is 0, it cancels the CAC.
|
|
|
|
+ * @opmode: Operational mode
|
|
*/
|
|
*/
|
|
#if defined(WLAN_DFS_PARTIAL_OFFLOAD)
|
|
#if defined(WLAN_DFS_PARTIAL_OFFLOAD)
|
|
void dfs_radar_enable(struct wlan_dfs *dfs,
|
|
void dfs_radar_enable(struct wlan_dfs *dfs,
|
|
@@ -2207,7 +2219,7 @@ void dfs_start_cac_timer(struct wlan_dfs *dfs);
|
|
/**
|
|
/**
|
|
* dfs_cac_valid_reset_for_freq() - Cancels the dfs_cac_valid_timer timer.
|
|
* dfs_cac_valid_reset_for_freq() - Cancels the dfs_cac_valid_timer timer.
|
|
* @dfs: Pointer to wlan_dfs structure.
|
|
* @dfs: Pointer to wlan_dfs structure.
|
|
- * @prevchan_chan: Prevchan frequency
|
|
|
|
|
|
+ * @prevchan_freq: Prevchan frequency
|
|
* @prevchan_flags: Prevchan flags.
|
|
* @prevchan_flags: Prevchan flags.
|
|
*/
|
|
*/
|
|
#ifdef CONFIG_CHAN_FREQ_API
|
|
#ifdef CONFIG_CHAN_FREQ_API
|
|
@@ -2674,6 +2686,7 @@ void dfs_get_nol_chfreq_and_chwidth(struct dfsreq_nolelem *dfs_nol,
|
|
* @prev: prev index.
|
|
* @prev: prev index.
|
|
* @i: Index.
|
|
* @i: Index.
|
|
* @this: index to br_elems[]
|
|
* @this: index to br_elems[]
|
|
|
|
+ * @index: index array.
|
|
*/
|
|
*/
|
|
void bin5_rules_check_internal(struct wlan_dfs *dfs,
|
|
void bin5_rules_check_internal(struct wlan_dfs *dfs,
|
|
struct dfs_bin5radars *br,
|
|
struct dfs_bin5radars *br,
|
|
@@ -2734,11 +2747,11 @@ int dfs_second_segment_radar_disable(struct wlan_dfs *dfs);
|
|
|
|
|
|
/**
|
|
/**
|
|
* dfs_fetch_nol_ie_info() - Fill NOL information to be sent with RCSA.
|
|
* dfs_fetch_nol_ie_info() - Fill NOL information to be sent with RCSA.
|
|
- * @dfs - Pointer to wlan_dfs structure.
|
|
|
|
- * @nol_ie_bandwidth - Minimum subchannel bandwidth.
|
|
|
|
- * @nol_ie_startfreq - Radar affected channel list's first subchannel's
|
|
|
|
- * - centre frequency.
|
|
|
|
- * @nol_ie_bitmap - NOL bitmap denoting affected subchannels.
|
|
|
|
|
|
+ * @dfs: Pointer to wlan_dfs structure.
|
|
|
|
+ * @nol_ie_bandwidth: Minimum subchannel bandwidth.
|
|
|
|
+ * @nol_ie_startfreq: Radar affected channel list's first subchannel's
|
|
|
|
+ * centre frequency.
|
|
|
|
+ * @nol_ie_bitmap: NOL bitmap denoting affected subchannels.
|
|
*/
|
|
*/
|
|
#if defined(QCA_DFS_RCSA_SUPPORT)
|
|
#if defined(QCA_DFS_RCSA_SUPPORT)
|
|
void dfs_fetch_nol_ie_info(struct wlan_dfs *dfs, uint8_t *nol_ie_bandwidth,
|
|
void dfs_fetch_nol_ie_info(struct wlan_dfs *dfs, uint8_t *nol_ie_bandwidth,
|
|
@@ -2794,11 +2807,11 @@ void dfs_get_rcsa_flags(struct wlan_dfs *dfs, bool *is_rcsa_ie_sent,
|
|
|
|
|
|
/**
|
|
/**
|
|
* dfs_process_nol_ie_bitmap() - Update NOL with external radar information.
|
|
* dfs_process_nol_ie_bitmap() - Update NOL with external radar information.
|
|
- * @dfs - Pointer to wlan_dfs structure.
|
|
|
|
- * @nol_ie_bandwidth - Minimum subchannel bandwidth.
|
|
|
|
- * @nol_ie_starfreq - Radar affected channel list's first subchannel's
|
|
|
|
- * - centre frequency.
|
|
|
|
- * @nol_ie_bitmap - Bitmap denoting radar affected subchannels.
|
|
|
|
|
|
+ * @dfs: Pointer to wlan_dfs structure.
|
|
|
|
+ * @nol_ie_bandwidth: Minimum subchannel bandwidth.
|
|
|
|
+ * @nol_ie_startfreq: Radar affected channel list's first subchannel's
|
|
|
|
+ * centre frequency.
|
|
|
|
+ * @nol_ie_bitmap: Bitmap denoting radar affected subchannels.
|
|
*
|
|
*
|
|
* Return: True if NOL IE should be propagated, else false.
|
|
* Return: True if NOL IE should be propagated, else false.
|
|
*/
|
|
*/
|
|
@@ -2849,6 +2862,7 @@ void dfs_timer_detach(struct wlan_dfs *dfs);
|
|
* dfs_is_disable_radar_marking_set() - Check if radar marking is set on
|
|
* dfs_is_disable_radar_marking_set() - Check if radar marking is set on
|
|
* NOL chan.
|
|
* NOL chan.
|
|
* @dfs: Pointer to wlan_dfs structure.
|
|
* @dfs: Pointer to wlan_dfs structure.
|
|
|
|
+ * @disable_radar_marking: Is radar marking disabled.
|
|
*/
|
|
*/
|
|
#if defined(WLAN_DFS_FULL_OFFLOAD) && defined(QCA_DFS_NOL_OFFLOAD)
|
|
#if defined(WLAN_DFS_FULL_OFFLOAD) && defined(QCA_DFS_NOL_OFFLOAD)
|
|
int dfs_is_disable_radar_marking_set(struct wlan_dfs *dfs,
|
|
int dfs_is_disable_radar_marking_set(struct wlan_dfs *dfs,
|
|
@@ -2875,7 +2889,7 @@ static inline bool dfs_get_disable_radar_marking(struct wlan_dfs *dfs)
|
|
|
|
|
|
/**
|
|
/**
|
|
* dfs_reset_agile_config() - Reset the ADFS config variables.
|
|
* dfs_reset_agile_config() - Reset the ADFS config variables.
|
|
- * @dfs: Pointer to dfs_soc_priv_obj.
|
|
|
|
|
|
+ * @dfs_soc: Pointer to dfs_soc_priv_obj.
|
|
*/
|
|
*/
|
|
#ifdef QCA_SUPPORT_AGILE_DFS
|
|
#ifdef QCA_SUPPORT_AGILE_DFS
|
|
void dfs_reset_agile_config(struct dfs_soc_priv_obj *dfs_soc);
|
|
void dfs_reset_agile_config(struct dfs_soc_priv_obj *dfs_soc);
|
|
@@ -3058,7 +3072,7 @@ void dfs_clear_cac_started_chan(struct wlan_dfs *dfs);
|
|
|
|
|
|
#ifdef QCA_DFS_BANGRADAR
|
|
#ifdef QCA_DFS_BANGRADAR
|
|
/**
|
|
/**
|
|
- * dfs_bangradar() - Handles all type of Bangradar.
|
|
|
|
|
|
+ * dfs_bang_radar() - Handles all type of Bangradar.
|
|
* @dfs: Pointer to wlan_dfs structure.
|
|
* @dfs: Pointer to wlan_dfs structure.
|
|
* @indata: reference to input data
|
|
* @indata: reference to input data
|
|
* @insize: input data size
|
|
* @insize: input data size
|
|
@@ -3135,10 +3149,9 @@ dfs_restart_rcac_on_nol_expiry(struct wlan_dfs *dfs)
|
|
#endif
|
|
#endif
|
|
|
|
|
|
/**
|
|
/**
|
|
- * dfs_chan_to_ch_width: Outputs the channel width in MHz of the given input
|
|
|
|
- * dfs_channel.
|
|
|
|
- *
|
|
|
|
- * chan: Pointer to the input dfs_channel structure.
|
|
|
|
|
|
+ * dfs_chan_to_ch_width() - Outputs the channel width in MHz of the given input
|
|
|
|
+ * dfs_channel.
|
|
|
|
+ * @chan: Pointer to the input dfs_channel structure.
|
|
*
|
|
*
|
|
* Return: Channel width in MHz. (uint16) -EINVAL on invalid channel.
|
|
* Return: Channel width in MHz. (uint16) -EINVAL on invalid channel.
|
|
*/
|
|
*/
|