qcacmn: Fix umac/dfs documentation

The kernel-doc script identified some documentation errors in the
umac/dfs folder, so fix them.

Change-Id: Ia86989a39fe502480e2d2358a6f23759f78707e0
CRs-Fixed: 3382430
This commit is contained in:
Jeff Johnson
2023-01-17 11:47:12 -08:00
committed by Madan Koyyalamudi
parent 7ae4979be0
commit f57c0cf483
25 changed files with 419 additions and 356 deletions

View File

@@ -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 * dfs_log() - dfs logging using submodule MASKs and QDF trace level.
* QDF trace level.
* The logging is controlled by two bitmasks:
* 1) submodule bitmask: sm
* 2) trace level masks: 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. * One may provide WLAN_DEBUG_DFS_ALWAYS when the argument @dfs is NULL.
* Example:- *
* 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 * However, it is still running. Used only for RCAC
as RCAC needs to run continuously (uninterrupted) * as RCAC needs to run continuously (uninterrupted)
until the channel change. * 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,107 +978,38 @@ 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.
* @dfsdomain: Current DFS domain.
* @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_radarq: Q of radar events.
* @dfs_radarqlock: Lock for dfs q.
* @dfs_arq: Q of AR events.
* @dfs_arqlock: Lock for AR q.
* @dfs_ar_state: AR state. * @dfs_ar_state: AR state.
* @dfs_radar[]: Per-Channel Radar detector state. * @dfs_radar: Per-Channel Radar detector state.
* @dfs_radarf[]: One filter for each radar pulse type. * @dfs_radarf: One filter for each radar pulse type.
* @dfs_rinfo: State vars for radar processing. * @dfs_rinfo: State vars for radar processing.
* @dfs_b5radars: Array of bin5 radar events. * @dfs_b5radars: Array of bin5 radar events.
* @dfs_ftindextable: Map of radar durs to filter types. * @dfs_ftindextable: Map of radar durs to filter types.
* @dfs_nol: Non occupancy list for radar.
* @dfs_nol_count: How many items?
* @dfs_defaultparams: Default phy params per radar state. * @dfs_defaultparams: Default phy params per radar state.
* @wlan_dfs_stats: DFS related stats.
* @pulses: Pulse history.
* @events: Events structure. * @events: Events structure.
* @wlan_radar_tasksched: Radar task is scheduled.
* @wlan_dfswait: Waiting on channel for radar detect.
* @wlan_dfstest: Test timer in progress.
* @dfs_caps: Object of wlan_dfs_caps structure. * @dfs_caps: Object of wlan_dfs_caps structure.
* @wlan_dfstest_ieeechan: IEEE chan num to return to after a dfs mute
* test.
* @wlan_dfs_cac_time: CAC period.
* @wlan_dfstesttime: Time to stay off chan during dfs test.
* @wlan_dfstesttimer: Dfs mute test timer.
* @dfs_bangradar_type: Radar simulation type.
* @is_radar_found_on_secondary_seg: Radar on second segment.
* @is_radar_during_precac: Radar found during precac.
* @dfs_precac_lock: Lock to protect precac lists.
* @dfs_precac_secondary_freq_mhz: Second segment freq in MHZ for precac.
* Applicable to only legacy chips.
* @dfs_precac_primary_freq_mhz: PreCAC Primary freq in MHZ applicable only
* to legacy chips.
* @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
* after precac.
* @wlan_dfs_task_timer: Dfs wait timer. * @wlan_dfs_task_timer: Dfs wait timer.
* @dur_multiplier: Duration multiplier. * @dur_multiplier: Duration multiplier.
* @wlan_dfs_isdfsregdomain: True when AP is in DFS domain * @wlan_dfs_isdfsregdomain: True when AP is in DFS domain
* @wlan_dfs_false_rssi_thres: False RSSI Threshold.
* @wlan_dfs_peak_mag: Peak mag.
* @radar_log[]: Radar log.
* @dfs_event_log_count: Event log count.
* @dfs_event_log_on: Event log on.
* @dfs_phyerr_count: Same as number of PHY radar interrupts.
* @dfs_phyerr_reject_count: When TLV is supported, # of radar events
* ignored after TLV is parsed.
* @dfs_phyerr_queued_count: Number of radar events queued for matching
* the filters.
* @dfs_phyerr_freq_min: Phyerr min freq.
* @dfs_phyerr_freq_max: Phyerr max freq.
* @dfs_phyerr_w53_counter: Phyerr w53 counter. * @dfs_phyerr_w53_counter: Phyerr w53 counter.
* @dfs_pri_multiplier: Allow pulse if they are within multiple of
* PRI for the radar type.
* @wlan_dfs_nol_timeout: NOL timeout.
* @update_nol: Update NOL.
* @dfs_seq_num: Sequence number. * @dfs_seq_num: Sequence number.
* @dfs_nol_free_list: NOL free list. * @dfs_min_sidx: Minimum sidx of the received radar pulses.
* @dfs_nol_elem_free_work: The work queue to free an NOL element. * @dfs_max_sidx: Maximum sidx of the received radar pulses.
* @dfs_cac_timer: CAC timer. * @dfs_data_struct_lock: DFS data structure lock. This is to protect
* @dfs_cac_valid_timer: Ignore CAC when this timer is running. * all the filtering data structures. For
* @dfs_cac_timeout_override: Overridden cac timeout. * example: dfs_bin5radars, dfs_filtertype,
* @dfs_enable: DFS Enable. * etc.
* @dfs_cac_timer_running: DFS CAC timer running. * @dfs_lowest_pri_limit:
* @dfs_ignore_dfs: Ignore DFS. * @dfs_eventq: Q of free dfs event objects.
* @dfs_ignore_cac: Ignore CAC. * @dfs_radarq: Q of radar events.
* @dfs_cac_valid: DFS CAC valid. * @dfs_arq: Q of AR events.
* @dfs_cac_valid_time: Time for which CAC will be valid and will
* not be re-done.
* @dfs_precac_timeout_override: Overridden precac timeout.
* @dfs_precac_list: PreCAC list (contains individual trees).
* @dfs_precac_chwidth: PreCAC channel width enum.
* @dfs_curchan: DFS current channel.
* @dfs_prevchan: DFS previous channel.
* @dfs_cac_started_chan: CAC started channel.
* @dfs_pdev_obj: DFS pdev object.
* @dfs_is_offload_enabled: Set if DFS offload enabled.
* @dfs_is_bangradar_320_supported: Set if DFS 320MHZ enabled.
* @dfs_is_radar_found_chan_freq_eq_center_freq:
* Set if chan_freq parameter of the radar
* 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_nol_lock: Lock to protect nol list.
* @tx_leakage_threshold: Tx leakage threshold for dfs.
* @dfs_use_nol_subchannel_marking: Use subchannel marking logic to add only
* radar affected subchannel instead of all
* bonding channels.
* @dfs_host_wait_timer: The timer that is started from host after * @dfs_host_wait_timer: The timer that is started from host after
* sending the average radar parameters. * sending the average radar parameters.
* Before this timeout host expects its dfs * Before this timeout host expects its dfs
@@ -1091,22 +1025,103 @@ struct dfs_rcac_params {
* radar parameters. * radar parameters.
* @dfs_no_res_from_fw: Indicates no response from fw. * @dfs_no_res_from_fw: Indicates no response from fw.
* @dfs_spoof_check_failed: Indicates if the spoof check has failed. * @dfs_spoof_check_failed: Indicates if the spoof check has failed.
* @dfs_spoof_test_done: Indicates if the sppof test is done. * @dfs_radar_found_chan: The channel on which radar was found.
* @dfs_status_timeout_override: Used to change the timeout value of * @dfs_status_timeout_override: Used to change the timeout value of
* dfs_host_wait_timer. * 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.
* @dfs_proc_phyerr: Flags for Phy Errs to process.
* @dfs_eventqlock: Lock for free dfs event list.
* @dfs_radarqlock: Lock for dfs q.
* @dfs_arqlock: Lock for AR q.
* @dfs_nol: Non occupancy list for radar.
* @dfs_nol_count: How many items?
* @wlan_dfs_stats: DFS related stats.
* @pulses: Pulse history.
* @wlan_radar_tasksched: Radar task is scheduled.
* @wlan_dfswait: Waiting on channel for radar detect.
* @wlan_dfstest: Test timer in progress.
* @wlan_dfstest_ieeechan: IEEE chan num to return to after a dfs mute
* test.
* @wlan_dfs_cac_time: CAC period.
* @wlan_dfstesttime: Time to stay off chan during dfs test.
* @wlan_dfstesttimer: Dfs mute test timer.
* @dfs_bangradar_type: Radar simulation type.
* @is_radar_found_on_secondary_seg: Radar on second segment.
* @is_radar_during_precac: Radar found during precac.
* @dfs_precac_lock: Lock to protect precac lists.
* @dfs_precac_secondary_freq_mhz: Second segment freq in MHZ for precac.
* Applicable to only legacy chips.
* @dfs_precac_primary_freq_mhz: PreCAC Primary freq in MHZ applicable only
* to legacy chips.
* @dfs_defer_precac_channel_change: Defer precac channel change.
* @dfs_autoswitch_des_mode: Desired PHY mode which has to be used
* after precac.
* @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_peak_mag: Peak mag.
* @radar_log: Radar log.
* @dfs_event_log_count: Event log count.
* @dfs_event_log_on: Event log on.
* @dfs_phyerr_count: Same as number of PHY radar interrupts.
* @dfs_phyerr_reject_count: When TLV is supported, # of radar events
* ignored after TLV is parsed.
* @dfs_phyerr_queued_count: Number of radar events queued for matching
* the filters.
* @dfs_phyerr_freq_min: Phyerr min freq.
* @dfs_phyerr_freq_max: Phyerr max freq.
* @dfs_pri_multiplier: Allow pulse if they are within multiple of
* PRI for the radar type.
* @wlan_dfs_nol_timeout: NOL timeout.
* @update_nol: Update NOL.
* @dfs_nol_free_list: NOL free list.
* @dfs_nol_elem_free_work: The work queue to free an NOL element.
* @dfs_cac_timer: CAC timer.
* @dfs_cac_valid_timer: Ignore CAC when this timer is running.
* @dfs_cac_timeout_override: Overridden cac timeout.
* @dfs_enable: DFS Enable.
* @dfs_cac_timer_running: DFS CAC timer running.
* @dfs_ignore_dfs: Ignore DFS.
* @dfs_ignore_cac: Ignore CAC.
* @dfs_cac_valid: DFS CAC valid.
* @dfs_cac_valid_time: Time for which CAC will be valid and will
* not be re-done.
* @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_chwidth: PreCAC channel width enum.
* @dfs_curchan: DFS current channel.
* @dfs_prevchan: DFS previous channel.
* @dfs_cac_started_chan: CAC started channel.
* @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_bangradar_320_supported: Set if DFS 320MHZ enabled.
* @dfs_is_radar_found_chan_freq_eq_center_freq:
* Set if chan_freq parameter of the radar
* found wmi event indicates channel center.
* @dfs_use_nol: Use the NOL when radar found(default: TRUE)
* @dfs_nol_lock: Lock to protect nol list.
* @tx_leakage_threshold: Tx leakage threshold for dfs.
* @dfs_use_nol_subchannel_marking: Use subchannel marking logic to add only
* radar affected subchannel instead of all
* bonding channels.
* @dfs_spoof_test_done: Indicates if the sppof test is done.
* @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
}; };
/**
* 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.
*/
#if defined(WLAN_DFS_PARTIAL_OFFLOAD) && defined(HOST_DFS_SPOOF_TEST) #if defined(WLAN_DFS_PARTIAL_OFFLOAD) && defined(HOST_DFS_SPOOF_TEST)
enum { /**
* 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.
*/
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, struct dfs_state *dfs_getchanstate(struct wlan_dfs *dfs, uint8_t *index,
uint8_t *index, int ext_chan_flag);
int ext_ch_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. * @dfs: Pointer to wlan_dfs structure.
* @nol_ie_bandwidth - Minimum subchannel bandwidth. * @nol_ie_bandwidth: Minimum subchannel bandwidth.
* @nol_ie_startfreq - Radar affected channel list's first subchannel's * @nol_ie_startfreq: Radar affected channel list's first subchannel's
* - centre frequency. * centre frequency.
* @nol_ie_bitmap - NOL bitmap denoting affected subchannels. * @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. * @dfs: Pointer to wlan_dfs structure.
* @nol_ie_bandwidth - Minimum subchannel bandwidth. * @nol_ie_bandwidth: Minimum subchannel bandwidth.
* @nol_ie_starfreq - Radar affected channel list's first subchannel's * @nol_ie_startfreq: Radar affected channel list's first subchannel's
* - centre frequency. * centre frequency.
* @nol_ie_bitmap - Bitmap denoting radar affected subchannels. * @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_chan_to_ch_width() - Outputs the channel width in MHz of the given input
* dfs_channel. * dfs_channel.
* * @chan: Pointer to the input dfs_channel structure.
* 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.
*/ */

View File

@@ -1,6 +1,6 @@
/* /*
* Copyright (c) 2017-2019 The Linux Foundation. All rights reserved. * Copyright (c) 2017-2019 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.
* *
* *
* Permission to use, copy, modify, and/or distribute this software for * Permission to use, copy, modify, and/or distribute this software for
@@ -39,7 +39,7 @@ static inline void dfs_get_po_radars(struct wlan_dfs *dfs)
#endif #endif
/** /**
* dfs_send_avg_params_to_fw - send avg radar parameters to FW. * dfs_send_avg_params_to_fw() - send avg radar parameters to FW.
* @dfs: Pointer to wlan_dfs structure. * @dfs: Pointer to wlan_dfs structure.
* @params: Pointer to dfs_radar_found_params. * @params: Pointer to dfs_radar_found_params.
* *
@@ -219,7 +219,7 @@ static inline void dfs_allow_hw_pulses(struct wlan_dfs *dfs,
#if defined(WLAN_DFS_PARTIAL_OFFLOAD) && defined(WLAN_DFS_SYNTHETIC_RADAR) #if defined(WLAN_DFS_PARTIAL_OFFLOAD) && defined(WLAN_DFS_SYNTHETIC_RADAR)
/** /**
* dfs_is_hw_pulses_allowed() - Check if HW pulses are allowed or not. * dfs_is_hw_pulses_allowed() - Check if HW pulses are allowed or not.
* @pdev: Pointer to DFS pdev object. * @dfs: Pointer to wlan_dfs structure.
* *
* Return: bool * Return: bool
*/ */

View File

@@ -1,6 +1,6 @@
/* /*
* Copyright (c) 2017-2021 The Linux Foundation. All rights reserved. * Copyright (c) 2017-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved. * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
* *
* Permission to use, copy, modify, and/or distribute this software for * Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the * any purpose with or without fee is hereby granted, provided that the
@@ -36,7 +36,7 @@
#define BW_160 160 #define BW_160 160
#define BW_320 320 #define BW_320 320
/** /**
* dfs_false_radarfound_reset_vars () - Reset dfs radar detection related * dfs_flush_additional_pulses() - Reset dfs radar detection related
* variables and queues after processing radar and disabling phyerror reception. * variables and queues after processing radar and disabling phyerror reception.
* *
* @dfs: Pointer to wlan_dfs structure. * @dfs: Pointer to wlan_dfs structure.
@@ -341,7 +341,7 @@ dfs_get_bonding_channel_without_seg_info_for_freq(struct dfs_channel *chan,
/** /**
* dfs_set_nol_subchannel_marking() - Set or unset NOL subchannel marking. * dfs_set_nol_subchannel_marking() - Set or unset NOL subchannel marking.
* @dfs: Pointer to wlan_dfs structure. * @dfs: Pointer to wlan_dfs structure.
* @nol_subchannel_marking - Configure NOL subchannel marking. * @nol_subchannel_marking: Configure NOL subchannel marking.
* *
* Return: Status of the configuration. * Return: Status of the configuration.
*/ */
@@ -352,7 +352,7 @@ dfs_set_nol_subchannel_marking(struct wlan_dfs *dfs,
/** /**
* dfs_get_nol_subchannel_marking() - Get the value of NOL subchannel marking. * dfs_get_nol_subchannel_marking() - Get the value of NOL subchannel marking.
* @dfs: Pointer to wlan_dfs structure. * @dfs: Pointer to wlan_dfs structure.
* @nol_subchannel_marking - Read and store the value of NOL subchannel marking * @nol_subchannel_marking: Read and store the value of NOL subchannel marking
* config. * config.
* *
* Return: Status of the read. * Return: Status of the read.

View File

@@ -1,6 +1,6 @@
/* /*
* Copyright (c) 2012-2021 The Linux Foundation. All rights reserved. * Copyright (c) 2012-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.
* *
* Permission to use, copy, modify, and/or distribute this software for * Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the * any purpose with or without fee is hereby granted, provided that the
@@ -188,6 +188,7 @@ struct chan_bonding_bitmap {
/** /**
* struct dfs_tx_leak_info - DFS leakage info * struct dfs_tx_leak_info - DFS leakage info
* @leak_chan: leak channel. * @leak_chan: leak channel.
* @leak_chan_freq: leak channel frequency.
* @leak_lvl: tx leakage lvl. * @leak_lvl: tx leakage lvl.
*/ */
struct dfs_tx_leak_info { struct dfs_tx_leak_info {
@@ -199,7 +200,8 @@ struct dfs_tx_leak_info {
/** /**
* struct dfs_matrix_tx_leak_info - DFS leakage matrix info for dfs channel. * struct dfs_matrix_tx_leak_info - DFS leakage matrix info for dfs channel.
* @channel: channel to switch from * @channel: channel to switch from
* @chan_matrix DFS leakage matrix info for given dfs channel. * @channel_freq: channel frequency
* @chan_matrix: DFS leakage matrix info for given dfs channel.
*/ */
struct dfs_matrix_tx_leak_info { struct dfs_matrix_tx_leak_info {
uint8_t channel; uint8_t channel;
@@ -234,10 +236,9 @@ QDF_STATUS dfs_mark_leaking_chan_for_freq(struct wlan_dfs *dfs,
* from the list of available channels. * from the list of available channels.
* @dfs: dfs handler. * @dfs: dfs handler.
* @chan_list: channel list. * @chan_list: channel list.
* @ch_count: Number of channels in given list. * @chan_cnt: Number of channels in given list.
* @flags: DFS_RANDOM_CH_FLAG_* * @flags: DFS_RANDOM_CH_FLAG_*
* @chan_wd: input channel width, used same variable to return new ch width. * @chan_params: channel parameters
* @cur_chan: current channel.
* @dfs_region: DFS region. * @dfs_region: DFS region.
* @acs_info: acs channel range information. * @acs_info: acs channel range information.
* *
@@ -250,8 +251,8 @@ QDF_STATUS dfs_mark_leaking_chan_for_freq(struct wlan_dfs *dfs,
*/ */
#ifdef CONFIG_CHAN_FREQ_API #ifdef CONFIG_CHAN_FREQ_API
uint16_t dfs_prepare_random_channel_for_freq(struct wlan_dfs *dfs, uint16_t dfs_prepare_random_channel_for_freq(struct wlan_dfs *dfs,
struct dfs_channel *ch_list, struct dfs_channel *chan_list,
uint32_t chan_count, uint32_t chan_cnt,
uint32_t flags, uint32_t flags,
struct ch_params *chan_params, struct ch_params *chan_params,
uint8_t dfs_region, uint8_t dfs_region,

View File

@@ -1,5 +1,6 @@
/* /*
* Copyright (c) 2011-2012, 2016-2018 The Linux Foundation. All rights reserved. * Copyright (c) 2011-2012, 2016-2018 The Linux Foundation. All rights reserved.
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
* *
* Permission to use, copy, modify, and/or distribute this software for any * Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above * purpose with or without fee is hereby granted, provided that the above
@@ -21,7 +22,7 @@
#ifndef _DFS_STRUCTS_H_ #ifndef _DFS_STRUCTS_H_
#define _DFS_STRUCTS_H_ #define _DFS_STRUCTS_H_
/** /*
* This represents the general case of the radar PHY configuration, * This represents the general case of the radar PHY configuration,
* across all chips. * across all chips.
* *
@@ -32,7 +33,7 @@
#define WLAN_DFS_PHYERR_PARAM_NOVAL 0xFFFF #define WLAN_DFS_PHYERR_PARAM_NOVAL 0xFFFF
#define WLAN_DFS_PHYERR_PARAM_ENABLE 0x8000 #define WLAN_DFS_PHYERR_PARAM_ENABLE 0x8000
/** /*
* For the dfs_nol_clist_update() method - this is the * For the dfs_nol_clist_update() method - this is the
* update command. * update command.
*/ */

View File

@@ -1,6 +1,6 @@
/* /*
* Copyright (c) 2016-2021 The Linux Foundation. All rights reserved. * Copyright (c) 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) 2007-2008 Sam Leffler, Errno Consulting * Copyright (c) 2007-2008 Sam Leffler, Errno Consulting
* All rights reserved. * All rights reserved.
* *
@@ -359,7 +359,7 @@ static inline bool dfs_is_precac_done(struct wlan_dfs *dfs,
* precac status of configured * precac status of configured
* DFS channel. * DFS channel.
* @dfs: Pointer to wlan_dfs structure. * @dfs: Pointer to wlan_dfs structure.
* @pref_chan: Configured DFS channel frequency * @pref_chan_freq: Configured DFS channel frequency
* @mode: Configured PHY mode. * @mode: Configured PHY mode.
* *
* Return: True if intermediate channel needs to configure. False otherwise. * Return: True if intermediate channel needs to configure. False otherwise.
@@ -587,8 +587,7 @@ dfs_set_fw_adfs_support(struct wlan_dfs *dfs,
/** /**
* dfs_agile_soc_obj_init() - Initialize soc obj for agile precac. * dfs_agile_soc_obj_init() - Initialize soc obj for agile precac.
* @dfs: Pointer to wlan_dfs structure. * @dfs: Pointer to wlan_dfs structure.
* @precac_chan: Start thr precac timer in this channel. * @psoc: Pointer to psoc object
* @ocac_status: Status of the off channel CAC.
*/ */
void dfs_agile_soc_obj_init(struct wlan_dfs *dfs, void dfs_agile_soc_obj_init(struct wlan_dfs *dfs,
struct wlan_objmgr_psoc *psoc); struct wlan_objmgr_psoc *psoc);
@@ -715,8 +714,8 @@ static inline uint32_t dfs_get_intermediate_chan(struct wlan_dfs *dfs)
/** /**
* dfs_get_precac_chan_state_for_freq() - Get precac status of a given channel. * dfs_get_precac_chan_state_for_freq() - Get precac status of a given channel.
* @dfs: Pointer to wlan_dfs structure. * @dfs: Pointer to wlan_dfs structure.
* @precac_chan: Channel freq for which precac state need to be checked. * @precac_chan_freq: Channel freq for which precac state need to be checked.
*/ */
#ifdef CONFIG_CHAN_FREQ_API #ifdef CONFIG_CHAN_FREQ_API
@@ -766,8 +765,8 @@ static inline void dfs_reinit_precac_lists(struct wlan_dfs *src_dfs,
/** /**
* dfs_is_precac_done_on_non_80p80_chan_for_freq() - Is precac done on * dfs_is_precac_done_on_non_80p80_chan_for_freq() - Is precac done on
* a 20/40/80/160/165/320 MHz channel. * a 20/40/80/160/165/320 MHz channel.
*@dfs: Pointer to wlan_dfs structure. * @dfs: Pointer to wlan_dfs structure.
*@chan: Channel frequency * @chan_freq: Channel frequency
* *
* Return: * Return:
* * True: If CAC is done on channel. * * True: If CAC is done on channel.
@@ -844,7 +843,7 @@ void dfs_mark_precac_nol_for_freq(struct wlan_dfs *dfs,
/** /**
* dfs_unmark_precac_nol_for_freq() - Unmark the precac channel as radar. * dfs_unmark_precac_nol_for_freq() - Unmark the precac channel as radar.
* @dfs: Pointer to wlan_dfs structure. * @dfs: Pointer to wlan_dfs structure.
* @channel: channel freq marked as radar. * @chan_freq: channel freq marked as radar.
*/ */
#ifdef CONFIG_CHAN_FREQ_API #ifdef CONFIG_CHAN_FREQ_API
void dfs_unmark_precac_nol_for_freq(struct wlan_dfs *dfs, uint16_t chan_freq); void dfs_unmark_precac_nol_for_freq(struct wlan_dfs *dfs, uint16_t chan_freq);

View File

@@ -1,6 +1,6 @@
/* /*
* Copyright (c) 2016-2019 The Linux Foundation. All rights reserved. * Copyright (c) 2016-2019 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) 2002-2010, Atheros Communications Inc. * Copyright (c) 2002-2010, 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
@@ -90,6 +90,9 @@ static inline bool dfs_ts_within_window(
* dfs_ts_eq_prevts() - Calculate pulses for timestamp equals to prev event * dfs_ts_eq_prevts() - Calculate pulses for timestamp equals to prev event
* @dfs: Pointer to wlan_dfs structure. * @dfs: Pointer to wlan_dfs structure.
* @pl: Pointer to dfs_pulseline structure. * @pl: Pointer to dfs_pulseline structure.
* @next_event_ts: next event timestamp
* @event_ts: current event timestamp
* @refpri: reference PRI
* @index: Index to dfs pulse elements. * @index: Index to dfs pulse elements.
* @dur: Pulse duration/width * @dur: Pulse duration/width
* @numpulses: Number of pulses * @numpulses: Number of pulses

View File

@@ -1,6 +1,6 @@
/* /*
* Copyright (c) 2016-2021 The Linux Foundation. All rights reserved. * Copyright (c) 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) 2011, Atheros Communications Inc. * Copyright (c) 2011, 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
@@ -34,7 +34,7 @@
#include "../dfs_confirm_radar.h" #include "../dfs_confirm_radar.h"
#ifdef MOBILE_DFS_SUPPORT #ifdef MOBILE_DFS_SUPPORT
/** /*
* struct dfs_pulse dfs_fcc_radars_qcn7605 - FCC radar table for QCN7605 * struct dfs_pulse dfs_fcc_radars_qcn7605 - FCC radar table for QCN7605
* chipsets. * chipsets.
*/ */
@@ -66,7 +66,7 @@ static const struct dfs_pulse dfs_fcc_radars_qcn7605[] = {
{18, 1, 325, 500, 0, 4, 9, 0, 1, 22, 0, 3, 0, 5, 0, 23}, {18, 1, 325, 500, 0, 4, 9, 0, 1, 22, 0, 3, 0, 5, 0, 23},
}; };
/** /*
* struct dfs_pulse dfs_mkk4_radars_qcn7605 - MKK4 radar table for QCN7605 * struct dfs_pulse dfs_mkk4_radars_qcn7605 - MKK4 radar table for QCN7605
* chipsets. * chipsets.
*/ */
@@ -100,7 +100,7 @@ static const struct dfs_pulse dfs_mkk4_radars_qcn7605[] = {
{16, 15, 2000, 5000, 0, 4, 7, 11, 23, 22, 0, 3, 0, 5, 0, 11}, {16, 15, 2000, 5000, 0, 4, 7, 11, 23, 22, 0, 3, 0, 5, 0, 11},
}; };
/** /*
* dfs_pulse dfs_etsi_radars_qcn7605 - ETSI radar table for QCN7605 * dfs_pulse dfs_etsi_radars_qcn7605 - ETSI radar table for QCN7605
* chipsets. * chipsets.
*/ */
@@ -154,7 +154,7 @@ static const struct dfs_pulse dfs_etsi_radars_qcn7605[] = { };
static const struct dfs_pulse dfs_mkk4_radars_qcn7605[] = { }; static const struct dfs_pulse dfs_mkk4_radars_qcn7605[] = { };
#endif #endif
/** /*
* struct dfs_pulse dfs_fcc_radars - FCC radar table for Offload chipsets. * struct dfs_pulse dfs_fcc_radars - FCC radar table for Offload chipsets.
*/ */
static struct dfs_pulse dfs_fcc_radars[] = { static struct dfs_pulse dfs_fcc_radars[] = {
@@ -185,7 +185,7 @@ static struct dfs_pulse dfs_fcc_radars[] = {
{18, 1, 325, 500, 0, 4, 9, 0, 1, 22, 0, 3, 0, 5, 0, 23}, {18, 1, 325, 500, 0, 4, 9, 0, 1, 22, 0, 3, 0, 5, 0, 23},
}; };
/** /*
* struct dfs_pulse dfs_mkk4_radars - MKK4 radar table for Offload chipsets. * struct dfs_pulse dfs_mkk4_radars - MKK4 radar table for Offload chipsets.
*/ */
static struct dfs_pulse dfs_mkk4_radars[] = { static struct dfs_pulse dfs_mkk4_radars[] = {
@@ -219,7 +219,7 @@ static struct dfs_pulse dfs_mkk4_radars[] = {
{16, 15, 2000, 5000, 0, 4, 7, 11, 23, 22, 0, 3, 0, 5, 0, 11}, {16, 15, 2000, 5000, 0, 4, 7, 11, 23, 22, 0, 3, 0, 5, 0, 11},
}; };
/** /*
* struct dfs_bin5pulse dfs_fcc_bin5pulses - FCC BIN5 pulses for Offload * struct dfs_bin5pulse dfs_fcc_bin5pulses - FCC BIN5 pulses for Offload
* chipsets. * chipsets.
*/ */
@@ -227,7 +227,7 @@ static struct dfs_bin5pulse dfs_fcc_bin5pulses[] = {
{6, 28, 105, 12, 18, 5}, {6, 28, 105, 12, 18, 5},
}; };
/** /*
* struct dfs_bin5pulse dfs_jpn_bin5pulses - JAPAN BIN5 pulses for Offload * struct dfs_bin5pulse dfs_jpn_bin5pulses - JAPAN BIN5 pulses for Offload
* chipsets. * chipsets.
*/ */
@@ -235,7 +235,7 @@ static struct dfs_bin5pulse dfs_jpn_bin5pulses[] = {
{5, 28, 105, 12, 22, 5}, {5, 28, 105, 12, 22, 5},
}; };
/** /*
* dfs_bin5pulse dfs_fcc_bin5pulses_ar900b - FCC BIN5 pulses for AR9300 * dfs_bin5pulse dfs_fcc_bin5pulses_ar900b - FCC BIN5 pulses for AR9300
* chipsets. * chipsets.
* *
@@ -250,7 +250,7 @@ static struct dfs_bin5pulse dfs_fcc_bin5pulses_ar900b[] = {
{5, 28, 105, 12, 20, 5}, {5, 28, 105, 12, 20, 5},
}; };
/** /*
* dfs_bin5pulse dfs_jpn_bin5pulses_ar900b - JAPAN BIN5 pulses for AR9300 * dfs_bin5pulse dfs_jpn_bin5pulses_ar900b - JAPAN BIN5 pulses for AR9300
* chipsets. * chipsets.
*/ */
@@ -258,7 +258,7 @@ static struct dfs_bin5pulse dfs_jpn_bin5pulses_ar900b[] = {
{5, 28, 105, 12, 20, 5}, {5, 28, 105, 12, 20, 5},
}; };
/** /*
* dfs_bin5pulse dfs_fcc_bin5pulses_qca9984 - FCC BIN5 pulses for QCA9984 * dfs_bin5pulse dfs_fcc_bin5pulses_qca9984 - FCC BIN5 pulses for QCA9984
* chipsets. * chipsets.
* WAR : IR-83400 * WAR : IR-83400
@@ -272,7 +272,7 @@ static struct dfs_bin5pulse dfs_fcc_bin5pulses_qca9984[] = {
{5, 20, 105, 12, 20, 0}, {5, 20, 105, 12, 20, 0},
}; };
/** /*
* dfs_bin5pulse dfs_jpn_bin5pulses_qca9984 - JAPAN BIN5 pulses for QCA9984 * dfs_bin5pulse dfs_jpn_bin5pulses_qca9984 - JAPAN BIN5 pulses for QCA9984
* chipsets. * chipsets.
*/ */
@@ -280,7 +280,7 @@ static struct dfs_bin5pulse dfs_jpn_bin5pulses_qca9984[] = {
{5, 20, 105, 12, 20, 0}, {5, 20, 105, 12, 20, 0},
}; };
/** /*
* dfs_pulse dfs_etsi_radars - ETSI radar table. * dfs_pulse dfs_etsi_radars - ETSI radar table.
*/ */
static struct dfs_pulse dfs_etsi_radars[] = { static struct dfs_pulse dfs_etsi_radars[] = {
@@ -329,7 +329,7 @@ static struct dfs_pulse dfs_etsi_radars[] = {
{20, 30, 2000, 4000, 0, 4, 6, 19, 33, 24, 0, 0, 0, 24, 1, 36}, {20, 30, 2000, 4000, 0, 4, 6, 19, 33, 24, 0, 0, 0, 24, 1, 36},
}; };
/** /*
* dfs_pulse dfs_china_radars - CHINA radar table. * dfs_pulse dfs_china_radars - CHINA radar table.
*/ */
static struct dfs_pulse dfs_china_radars[] = { static struct dfs_pulse dfs_china_radars[] = {
@@ -367,7 +367,7 @@ static struct dfs_pulse dfs_china_radars[] = {
{20, 1, 1000, 1000, 0, 6, 6, 0, 1, 18, 0, 3, 0, 0, 0, 50}, {20, 1, 1000, 1000, 0, 6, 6, 0, 1, 18, 0, 3, 0, 0, 0, 50},
}; };
/** /*
* dfs_pulse dfs_korea_radars - KOREA radar table. * dfs_pulse dfs_korea_radars - KOREA radar table.
*/ */
static struct dfs_pulse dfs_korea_radars[] = { static struct dfs_pulse dfs_korea_radars[] = {
@@ -471,9 +471,10 @@ void dfs_handle_radar_tab_init_failure(struct wlan_dfs_radar_tab_info *rinfo)
/** /**
* dfs_merge_external_radar() - Get and merge the external radar table with * dfs_merge_external_radar() - Get and merge the external radar table with
* internal radar table. * internal radar table.
* @dfs: Pointer to the DFS structure.
* @rinfo: Pointer to wlan_dfs_radar_tab_info structure. * @rinfo: Pointer to wlan_dfs_radar_tab_info structure.
* @external_radars: list of external radar pulses
* @dfsdomain: dfs domain. * @dfsdomain: dfs domain.
* @num_ext_radars: number of @external_radar entries
* *
* Return: Pointer to the allocated merged radar table if success, else NULL. * Return: Pointer to the allocated merged radar table if success, else NULL.
* The caller is responsible for freeing up the allocated memory when no longer * The caller is responsible for freeing up the allocated memory when no longer
@@ -513,7 +514,7 @@ void dfs_update_radar_info(struct wlan_dfs_radar_tab_info *rinfo,
* dfs_assign_mkk_bin5_radars() - Assign the MKK bin5 radar table * dfs_assign_mkk_bin5_radars() - Assign the MKK bin5 radar table
* @rinfo: Pointer to wlan_dfs_radar_tab_info structure. * @rinfo: Pointer to wlan_dfs_radar_tab_info structure.
* @target_type: Target type. * @target_type: Target type.
* @tx_ops: target tx ops. * @tgt_tx_ops: target tx ops.
*/ */
static void static void
dfs_assign_mkk_bin5_radars(struct wlan_dfs_radar_tab_info *rinfo, dfs_assign_mkk_bin5_radars(struct wlan_dfs_radar_tab_info *rinfo,
@@ -731,9 +732,12 @@ void dfs_send_avg_params_to_fw(struct wlan_dfs *dfs,
tgt_dfs_send_avg_params_to_fw(dfs->dfs_pdev_obj, params); tgt_dfs_send_avg_params_to_fw(dfs->dfs_pdev_obj, params);
} }
/** /*
* dfs_no_res_from_fw_task() - The timer function that is called if there is no * dfs_no_res_from_fw_task() - The timer function that is called if there is no
* response from fw after sending the average radar pulse parameters. * response from fw after sending the average radar pulse parameters.
*
* NB: not using kernel-doc format since the kernel-doc script doesn't
* handle the os_timer_func() macro
*/ */
static os_timer_func(dfs_no_res_from_fw_task) static os_timer_func(dfs_no_res_from_fw_task)
{ {

View File

@@ -1,6 +1,6 @@
/* /*
* Copyright (c) 2012, 2016-2021 The Linux Foundation. All rights reserved. * Copyright (c) 2012, 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.
* *
* Permission to use, copy, modify, and/or distribute this software for any * Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above * purpose with or without fee is hereby granted, provided that the above
@@ -166,11 +166,11 @@ static void dfs_radar_summary_parse(struct wlan_dfs *dfs,
} }
/** /**
* dfs_radar_fft_search_report_parse () - Parse FFT report. * dfs_radar_fft_search_report_parse() - Parse FFT report.
* @dfs: pointer to wlan_dfs structure. * @dfs: pointer to wlan_dfs structure.
* @buf: Phyerr buffer. * @buf: Phyerr buffer.
* @len: Phyerr buflen. * @len: Phyerr buflen.
* @rsu: Pointer to rx_radar_status structure. * @rsfr: Pointer to rx_search_fft_report structure.
*/ */
static void dfs_radar_fft_search_report_parse(struct wlan_dfs *dfs, static void dfs_radar_fft_search_report_parse(struct wlan_dfs *dfs,
const char *buf, const char *buf,

View File

@@ -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) 2002-2010, Atheros Communications Inc. * Copyright (c) 2002-2010, 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
@@ -102,7 +102,7 @@ static inline uint8_t dfs_process_pulse_dur(struct wlan_dfs *dfs,
} }
#ifdef DFS_FCC_TYPE4_DURATION_CHECK #ifdef DFS_FCC_TYPE4_DURATION_CHECK
/* /**
* dfs_dur_check() - Modify the pulse duration for FCC Type 4 and JAPAN W56 * dfs_dur_check() - Modify the pulse duration for FCC Type 4 and JAPAN W56
* Type 8 radar pulses when the conditions mentioned in the * Type 8 radar pulses when the conditions mentioned in the
* function body are reported in the radar summary report. * function body are reported in the radar summary report.
@@ -154,7 +154,7 @@ static inline void dfs_dur_check(
} }
#endif #endif
/* /**
* dfs_print_radar_events() - Prints the Radar events. * dfs_print_radar_events() - Prints the Radar events.
* @dfs: Pointer to wlan_dfs structure. * @dfs: Pointer to wlan_dfs structure.
*/ */
@@ -366,7 +366,7 @@ static bool dfs_is_real_radar(struct wlan_dfs *dfs,
} }
#endif /* CONFIG_EXT_RADAR_PROCESS */ #endif /* CONFIG_EXT_RADAR_PROCESS */
/* /**
* dfs_reject_on_pri() - Rejecting on individual filter based on min PRI . * dfs_reject_on_pri() - Rejecting on individual filter based on min PRI .
* @dfs: Pointer to wlan_dfs structure. * @dfs: Pointer to wlan_dfs structure.
* @rf: Pointer to dfs_filter structure. * @rf: Pointer to dfs_filter structure.
@@ -448,19 +448,21 @@ static inline void dfs_confirm_radar_check(
} }
} }
/* /**
* __dfs_process_radarevent() - Continuation of process a radar event function. * __dfs_process_radarevent() - Continuation of process a radar event function.
* @dfs: Pointer to wlan_dfs structure. * @dfs: Pointer to wlan_dfs structure.
* @ft: Pointer to dfs_filtertype structure. * @ft: Pointer to dfs_filtertype structure.
* @re: Pointer to dfs_event structure. * @re: Pointer to dfs_event structure.
* @this_ts: Timestamp. * @this_ts: Timestamp.
* @found: set if radar event is found
* @false_radar_found: set if false radar found
* *
* There is currently no way to specify that a radar event has occurred on * There is currently no way to specify that a radar event has occurred on
* a specific channel, so the current methodology is to mark both the pri * a specific channel, so the current methodology is to mark both the pri
* and ext channels as being unavailable. This should be fixed for 802.11ac * and ext channels as being unavailable. This should be fixed for 802.11ac
* or we'll quickly run out of valid channels to use. * or we'll quickly run out of valid channels to use.
* *
* Return: If a radar event is found, return 1. Otherwise, return 0. * Return: void
*/ */
static void __dfs_process_radarevent(struct wlan_dfs *dfs, static void __dfs_process_radarevent(struct wlan_dfs *dfs,
struct dfs_filtertype *ft, struct dfs_filtertype *ft,
@@ -669,10 +671,13 @@ static void dfs_print_radar_found_freq(struct wlan_dfs *dfs)
#endif #endif
/** /**
* dfs_handle_bangradar - Handle the case of bangradar * dfs_handle_bangradar() - Handle the case of bangradar
* @dfs: Pointer to wlan_dfs structure. * @dfs: Pointer to wlan_dfs structure.
* @chan: Current channel. * @chan: Current channel.
* @rs: Pointer to dfs_state. * @rs: Pointer to dfs_state.
* @seg_id: Pointer to segment id
* @retval: Pointer to return value
*
* Return: if bangradar then return 1. Otherwise, return 0. * Return: if bangradar then return 1. Otherwise, return 0.
*/ */
static inline int dfs_handle_bangradar( static inline int dfs_handle_bangradar(
@@ -1156,11 +1161,12 @@ static inline void dfs_calculate_timestamps(
} }
/** /**
* dfs_add_to_pulseline - Extract necessary items from dfs_event and * dfs_add_to_pulseline() - Extract necessary items from dfs_event and
* add it as pulse in the pulseline * add it as pulse in the pulseline
* @dfs: Pointer to wlan_dfs structure. * @dfs: Pointer to wlan_dfs structure.
* @re: Pointer to re(radar event) * @re: Pointer to re(radar event)
* @this_ts: Pointer to this_ts (this timestamp) * @this_ts: Pointer to this_ts (this timestamp)
* @test_ts: Pointer to test_ts (test timestamp)
* @diff_ts: Diff ts. * @diff_ts: Diff ts.
* @index: Pointer to get index value. * @index: Pointer to get index value.
*/ */
@@ -1229,7 +1235,7 @@ static inline void dfs_add_to_pulseline(
} }
/** /**
* dfs_conditional_clear_delaylines - Clear delay lines to remove the * dfs_conditional_clear_delaylines() - Clear delay lines to remove the
* false pulses. * false pulses.
* @dfs: Pointer to wlan_dfs structure. * @dfs: Pointer to wlan_dfs structure.
* @diff_ts: diff between timerstamps. * @diff_ts: diff between timerstamps.
@@ -1278,7 +1284,7 @@ static inline void dfs_conditional_clear_delaylines(
} }
/** /**
* dfs_process_each_radarevent - remove each event from the dfs radar queue * dfs_process_each_radarevent() - remove each event from the dfs radar queue
* and process it. * and process it.
* @dfs: Pointer to wlan_dfs structure. * @dfs: Pointer to wlan_dfs structure.
* @chan: Pointer to DFS current channel. * @chan: Pointer to DFS current channel.
@@ -1363,8 +1369,8 @@ static inline int dfs_process_each_radarevent(
} }
/** /**
* dfs_false_radarfound_reset_vars () - Reset dfs variables after false radar * dfs_false_radarfound_reset_vars() - Reset dfs variables after false radar
* found. * found.
* @dfs: Pointer to wlan_dfs structure. * @dfs: Pointer to wlan_dfs structure.
*/ */
void dfs_false_radarfound_reset_vars( void dfs_false_radarfound_reset_vars(
@@ -1383,15 +1389,16 @@ void dfs_false_radarfound_reset_vars(
} }
/** /**
* dfs_process_radarevent() - For Full Offload, FW sends segment id,freq_offset * dfs_fill_radar_found_info() - Fill radar found info
* and chirp information and gets assigned when there is radar detect. In
* case of radartool bangradar enhanced command and real radar for DA and PO,
* we assign these information here.
*
* @dfs: Pointer to wlan_dfs structure. * @dfs: Pointer to wlan_dfs structure.
* @radar_found: Pointer to radar_found_info structure. * @radar_found: Pointer to radar_found_info structure.
*
* For Full Offload, FW sends segment id, freq_offset and chirp
* information and gets assigned when there is radar detect. In case
* of radartool bangradar enhanced command and real radar for DA and
* PO, we assign these information here.
*
*/ */
static void static void
dfs_fill_radar_found_info(struct wlan_dfs *dfs, dfs_fill_radar_found_info(struct wlan_dfs *dfs,
struct radar_found_info *radar_found) struct radar_found_info *radar_found)

View File

@@ -1,7 +1,7 @@
/* /*
* Copyright (c) 2016-2021 The Linux Foundation. All rights reserved. * Copyright (c) 2016-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2002-2006, Atheros Communications Inc. * Copyright (c) 2002-2006, Atheros Communications Inc.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
* *
* Permission to use, copy, modify, and/or distribute this software for any * Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above * purpose with or without fee is hereby granted, provided that the above
@@ -38,7 +38,7 @@
#define DISABLE_NOL_FW 0 #define DISABLE_NOL_FW 0
#ifndef WLAN_DFS_STATIC_MEM_ALLOC #ifndef WLAN_DFS_STATIC_MEM_ALLOC
/* /**
* dfs_alloc_wlan_dfs() - allocate wlan_dfs buffer * dfs_alloc_wlan_dfs() - allocate wlan_dfs buffer
* *
* Return: buffer, null on failure. * Return: buffer, null on failure.
@@ -48,7 +48,7 @@ static inline struct wlan_dfs *dfs_alloc_wlan_dfs(void)
return qdf_mem_malloc(sizeof(struct wlan_dfs)); return qdf_mem_malloc(sizeof(struct wlan_dfs));
} }
/* /**
* dfs_free_wlan_dfs() - Free wlan_dfs buffer * dfs_free_wlan_dfs() - Free wlan_dfs buffer
* @dfs: wlan_dfs buffer pointer * @dfs: wlan_dfs buffer pointer
* *
@@ -59,7 +59,7 @@ static inline void dfs_free_wlan_dfs(struct wlan_dfs *dfs)
qdf_mem_free(dfs); qdf_mem_free(dfs);
} }
/* /**
* dfs_alloc_dfs_curchan() - allocate dfs_channel buffer * dfs_alloc_dfs_curchan() - allocate dfs_channel buffer
* *
* Return: buffer, null on failure. * Return: buffer, null on failure.
@@ -74,7 +74,7 @@ static inline struct dfs_channel *dfs_alloc_dfs_prevchan(void)
return qdf_mem_malloc(sizeof(struct dfs_channel)); return qdf_mem_malloc(sizeof(struct dfs_channel));
} }
/* /**
* dfs_free_dfs_chan() - Free dfs_channel buffer * dfs_free_dfs_chan() - Free dfs_channel buffer
* @dfs_chan: dfs_channel buffer pointer * @dfs_chan: dfs_channel buffer pointer
* *
@@ -116,12 +116,15 @@ static inline void dfs_free_dfs_chan(struct dfs_channel *dfs_chan)
} }
#endif #endif
/** /*
* dfs_testtimer_task() - Sends CSA in the current channel. * dfs_testtimer_task() - Sends CSA in the current channel.
* *
* When the user sets usenol to 0 and inject the RADAR, AP does not mark the * When the user sets usenol to 0 and inject the RADAR, AP does not mark the
* channel as RADAR and does not add the channel to NOL. It sends the CSA in * channel as RADAR and does not add the channel to NOL. It sends the CSA in
* the current channel. * the current channel.
*
* NB: not using kernel-doc format since the kernel-doc script doesn't
* handle the os_timer_func() macro
*/ */
#ifdef CONFIG_CHAN_FREQ_API #ifdef CONFIG_CHAN_FREQ_API
static os_timer_func(dfs_testtimer_task) static os_timer_func(dfs_testtimer_task)
@@ -703,6 +706,7 @@ dfs_is_chan_punc_same_as_given_punc(struct dfs_channel *dfs_curchan,
* @dfs_ch_flagext: New curchan's channel flags extension. * @dfs_ch_flagext: New curchan's channel flags extension.
* @dfs_ch_vhtop_ch_freq_seg1: New curchan's primary centre IEEE. * @dfs_ch_vhtop_ch_freq_seg1: New curchan's primary centre IEEE.
* @dfs_ch_vhtop_ch_freq_seg2: New curchan's secondary centre IEEE. * @dfs_ch_vhtop_ch_freq_seg2: New curchan's secondary centre IEEE.
* @dfs_chan_punc_pattern: Channel puncture pattern
* *
* Return: True if curchan has the same channel parameters of the given channel, * Return: True if curchan has the same channel parameters of the given channel,
* else false. * else false.
@@ -865,7 +869,7 @@ uint8_t dfs_get_agile_detector_id(struct wlan_dfs *dfs)
#endif #endif
/** /**
* dfs_chan_to_ch_width: Outputs the channel width in MHz of the given input * dfs_chan_to_ch_width() - Outputs the channel width in MHz of the given input
* dfs_channel. * dfs_channel.
* @chan: Pointer to the input dfs_channel structure. * @chan: Pointer to the input dfs_channel structure.
* *

View File

@@ -2,7 +2,7 @@
* Copyright (c) 2016-2021 The Linux Foundation. All rights reserved. * Copyright (c) 2016-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2007-2008 Sam Leffler, Errno Consulting * Copyright (c) 2007-2008 Sam Leffler, Errno Consulting
* All rights reserved. * All rights reserved.
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved. * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions * modification, are permitted provided that the following conditions
@@ -42,9 +42,12 @@
#define CH100_START_FREQ 5490 #define CH100_START_FREQ 5490
#define CH100 100 #define CH100 100
/** /*
* dfs_cac_valid_timeout() - Timeout function for dfs_cac_valid_timer * dfs_cac_valid_timeout() - Timeout function for dfs_cac_valid_timer
* cac_valid bit will be reset in this function. * cac_valid bit will be reset in this function.
*
* NB: not using kernel-doc format since the kernel-doc script doesn't
* handle the os_timer_func() macro
*/ */
static os_timer_func(dfs_cac_valid_timeout) static os_timer_func(dfs_cac_valid_timeout)
{ {
@@ -161,6 +164,7 @@ void dfs_process_cac_completion(struct wlan_dfs *dfs)
/** /**
* dfs_cac_timeout() - DFS cactimeout function. * dfs_cac_timeout() - DFS cactimeout function.
* @arg: Container of dfs object.
* *
* Sets dfs_cac_timer_running to 0 and dfs_cac_valid_timer. * Sets dfs_cac_timer_running to 0 and dfs_cac_valid_timer.
*/ */

View File

@@ -1,6 +1,6 @@
/* /*
* Copyright (c) 2016-2020 The Linux Foundation. All rights reserved. * Copyright (c) 2016-2020 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) 2002-2006, Atheros Communications Inc. * Copyright (c) 2002-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
@@ -104,8 +104,11 @@ static inline void dfs_free_dfs_pulseline(struct dfs_pulseline *pulses)
* usenol=2, no CSA and stay on the same channel on radar detect * usenol=2, no CSA and stay on the same channel on radar detect
*/ */
/** /*
* dfs_task() - The timer function to process the radar pulses. * dfs_task() - The timer function to process the radar pulses.
*
* NB: not using kernel-doc format since the kernel-doc script doesn't
* handle the os_timer_func() macro
*/ */
static os_timer_func(dfs_task) static os_timer_func(dfs_task)
{ {

View File

@@ -1,7 +1,7 @@
/* /*
* Copyright (c) 2016-2021 The Linux Foundation. All rights reserved. * Copyright (c) 2016-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2002-2010, Atheros Communications Inc. * Copyright (c) 2002-2010, Atheros Communications Inc.
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved. * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
* *
* Permission to use, copy, modify, and/or distribute this software for any * Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above * purpose with or without fee is hereby granted, provided that the above
@@ -54,7 +54,8 @@ bool dfs_get_update_nol_flag(struct wlan_dfs *dfs)
} }
/** /**
* dfs_nol_elem_free_work_cb - Free NOL element * dfs_nol_elem_free_work_cb() - Free NOL element
* @context: work context (wlan_dfs)
* *
* Free the NOL element memory * Free the NOL element memory
*/ */

View File

@@ -1,6 +1,6 @@
/* /*
* Copyright (c) 2017-2021 The Linux Foundation. All rights reserved. * Copyright (c) 2017-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved. * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
* *
* Permission to use, copy, modify, and/or distribute this software for * Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the * any purpose with or without fee is hereby granted, provided that the
@@ -31,7 +31,7 @@
#include <wlan_dfs_tgt_api.h> #include <wlan_dfs_tgt_api.h>
#include "wlan_dfs_mlme_api.h" #include "wlan_dfs_mlme_api.h"
#include "../dfs_internal.h" #include "../dfs_internal.h"
/** /*
* TODO: The code is not according to the following description needs * TODO: The code is not according to the following description needs
* modification and correction. Code always adds left and right channels to * modification and correction. Code always adds left and right channels to
* NOL even if it is not a chirp radar. * NOL even if it is not a chirp radar.
@@ -404,14 +404,15 @@ dfs_find_radar_affected_subchans_for_freq(struct wlan_dfs *dfs,
#endif #endif
/** /**
* dfs_calc_bonding_freqs: Calculate bonding channel frequencies from the * dfs_calc_bonding_freqs() - Calculate bonding channel frequencies
* channel width's center frequency and channel width. * @center_freq: Center frequency of the channel width.
* It is assumed that the caller has allocated sufficient memory for 'freq_list' * @ch_width: Channel width.
* so that it can hold all the output subchannels. * @freq_list: output array of sub-channel frequencies.
* *
* center_freq: Center frequency of the channel width. * Calculate bonding channel frequencies from the channel width's
* ch_width: Channel width. * center frequency and channel width. It is assumed that the caller
* freq_list: output array of sub-channel frequencies. * has allocated sufficient memory for @freq_list so that it can hold
* all the output subchannels.
* *
* Return: void * Return: void
*/ */
@@ -496,10 +497,11 @@ void dfs_get_160mhz_bonding_channels(uint16_t center_freq, uint16_t *freq_list)
} }
/** /**
* dfs_get_320mhz_bonding_channels() - Get bonding frequency list of 320MHz * dfs_get_320mhz_bonding_channels() - Get bonding frequency list of 320 MHz
* channel. * channel.
* @center_freq: Center frequency of the 320MHz channel. * @center_freq: Center frequency of the 320 MHz channel.
* @freq_list: Pointer to frequency list. * @freq_list: Pointer to frequency list.
* @nchannels: Number of channels in @freq_list
* *
* Return: void * Return: void
*/ */
@@ -511,9 +513,9 @@ void dfs_get_320mhz_bonding_channels(uint16_t center_freq, uint16_t *freq_list,
uint16_t chwidth = 320; uint16_t chwidth = 320;
/* /*
* In 5Ghz band, the 320Mhz channel is always 80Mhz punctured * In 5 GHz band, the 320 MHz channel is always 80 MHz punctured
* to the right. Therefore, it is actually a 240Mhz channel and * to the right. Therefore, it is actually a 240 MHz channel and
* has twelve 20Mhz subchannels. * has twelve 20 MHz subchannels.
*/ */
*nchannels = NUM_CHANNELS_240MHZ; *nchannels = NUM_CHANNELS_240MHZ;
dfs_calc_bonding_freqs(center_freq, chwidth, freq_list); dfs_calc_bonding_freqs(center_freq, chwidth, freq_list);
@@ -529,7 +531,7 @@ void dfs_get_320mhz_bonding_channels(uint16_t center_freq, uint16_t *freq_list,
} }
#endif #endif
/* /**
* dfs_get_bonding_channel_without_seg_info_for_freq() - Get bonding frequency * dfs_get_bonding_channel_without_seg_info_for_freq() - Get bonding frequency
* list. * list.
* @chan: Pointer to dfs_channel. * @chan: Pointer to dfs_channel.
@@ -579,7 +581,7 @@ dfs_get_bonding_channel_without_seg_info_for_freq(struct dfs_channel *chan,
#endif #endif
#ifdef CONFIG_CHAN_FREQ_API #ifdef CONFIG_CHAN_FREQ_API
/* /**
* dfs_get_agile_subchans_for_curchan_160() - Get bonding frequency list of * dfs_get_agile_subchans_for_curchan_160() - Get bonding frequency list of
* agile channels when current operating channel is 160MHz. * agile channels when current operating channel is 160MHz.
* *
@@ -634,7 +636,7 @@ dfs_get_agile_subchans_for_curchan_160(struct wlan_dfs *dfs,
} }
} }
/* /**
* dfs_get_bonding_channels_for_freq() - Get bonding channel frequency. * dfs_get_bonding_channels_for_freq() - Get bonding channel frequency.
* @dfs: Pointer to wlan_dfs. * @dfs: Pointer to wlan_dfs.
* @curchan: Pointer to dfs_channel. * @curchan: Pointer to dfs_channel.
@@ -1012,14 +1014,14 @@ dfs_process_radar_ind(struct wlan_dfs *dfs,
#if defined(QCA_DFS_BW_PUNCTURE) && defined(WLAN_FEATURE_11BE) #if defined(QCA_DFS_BW_PUNCTURE) && defined(WLAN_FEATURE_11BE)
/** /**
* dfs_is_ignore_radar_for_punctured_chans: Store the radar bitmap and check if * dfs_is_ignore_radar_for_punctured_chans() - Store the radar bitmap and check
* radar is found in already punctured * if radar is found in already
* channel and ignore the radar. * punctured channel and ignore the
* * radar.
* dfs: Wlan_dfs structure * @dfs: Wlan_dfs structure
* dfs_radar_bitmap: Variable to store radar bitmap. * @dfs_radar_bitmap: Variable to store radar bitmap.
* freq_list: output array of sub-channel frequencies. * @freq_list: output array of sub-channel frequencies.
* num_channels: Number of sub-channels in target DFS channel. * @num_channels: Number of sub-channels in target DFS channel.
* *
* Return: If radar is found on punctured channel then return true. * Return: If radar is found on punctured channel then return true.
* Else return false. * Else return false.

View File

@@ -1,6 +1,6 @@
/* /*
* Copyright (c) 2012-2021 The Linux Foundation. All rights reserved. * Copyright (c) 2012-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved. * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
* *
* Permission to use, copy, modify, and/or distribute this software for * Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the * any purpose with or without fee is hereby granted, provided that the
@@ -947,7 +947,7 @@ dfs_populate_40mhz_available_channel_for_freq(struct wlan_dfs *dfs,
* @dfs: Pointer to DFS structure. * @dfs: Pointer to DFS structure.
* @bitmap: bitmap * @bitmap: bitmap
* @chan_width: channel width * @chan_width: channel width
* @avail_freq_list: prepared channel list * @freq_list: prepared channel list
* *
* Prepare channel list based on width and channel bitmap. * Prepare channel list based on width and channel bitmap.
* *
@@ -1019,6 +1019,9 @@ static uint16_t dfs_get_rand_from_lst_for_freq(struct wlan_dfs *dfs,
} }
#endif #endif
#ifdef CONFIG_CHAN_FREQ_API
#define FREQUENCY_BAND_LIMIT 60
/** /**
* dfs_random_channel_sel_set_bitmap_for_freq()- Set channel bit in bitmap based * dfs_random_channel_sel_set_bitmap_for_freq()- Set channel bit in bitmap based
* on given channel number * on given channel number
@@ -1030,8 +1033,6 @@ static uint16_t dfs_get_rand_from_lst_for_freq(struct wlan_dfs *dfs,
* *
* Return: None * Return: None
*/ */
#ifdef CONFIG_CHAN_FREQ_API
#define FREQUENCY_BAND_LIMIT 60
static void static void
dfs_random_channel_sel_set_bitmap_for_freq(struct wlan_dfs *dfs, dfs_random_channel_sel_set_bitmap_for_freq(struct wlan_dfs *dfs,
struct chan_bonding_bitmap *bitmap, struct chan_bonding_bitmap *bitmap,

View File

@@ -1,6 +1,6 @@
/* /*
* Copyright (c) 2016-2017 The Linux Foundation. All rights reserved. * Copyright (c) 2016-2017 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.
* *
* Permission to use, copy, modify, and/or distribute this software for * Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the * any purpose with or without fee is hereby granted, provided that the
@@ -29,8 +29,8 @@
/** /**
* wlan_pdev_get_dfs_obj() - Get DFS object from PDEV. * wlan_pdev_get_dfs_obj() - Get DFS object from PDEV.
* @pdev: Pointer to PDEV structure. * @pdev: Pointer to PDEV structure.
* @id: DFS component ID. *
* @obj: Pointer to DFS object. * Return: DFS object
*/ */
struct wlan_dfs *wlan_pdev_get_dfs_obj(struct wlan_objmgr_pdev *pdev); struct wlan_dfs *wlan_pdev_get_dfs_obj(struct wlan_objmgr_pdev *pdev);
@@ -52,6 +52,7 @@ QDF_STATUS dfs_deinit(void);
/** /**
* wlan_dfs_pdev_obj_create_notification() - DFS pdev object create handler. * wlan_dfs_pdev_obj_create_notification() - DFS pdev object create handler.
* @pdev: Pointer to DFS pdev object. * @pdev: Pointer to DFS pdev object.
* @arg: component argument
*/ */
QDF_STATUS wlan_dfs_pdev_obj_create_notification(struct wlan_objmgr_pdev *pdev, QDF_STATUS wlan_dfs_pdev_obj_create_notification(struct wlan_objmgr_pdev *pdev,
void *arg); void *arg);
@@ -59,6 +60,7 @@ QDF_STATUS wlan_dfs_pdev_obj_create_notification(struct wlan_objmgr_pdev *pdev,
/** /**
* wlan_dfs_pdev_obj_destroy_notification() - DFS pdev object delete handler. * wlan_dfs_pdev_obj_destroy_notification() - DFS pdev object delete handler.
* @pdev: Pointer to DFS pdev object. * @pdev: Pointer to DFS pdev object.
* @arg: component argument
*/ */
QDF_STATUS wlan_dfs_pdev_obj_destroy_notification(struct wlan_objmgr_pdev *pdev, QDF_STATUS wlan_dfs_pdev_obj_destroy_notification(struct wlan_objmgr_pdev *pdev,
void *arg); void *arg);

View File

@@ -1,6 +1,6 @@
/* /*
* Copyright (c) 2011, 2016-2021 The Linux Foundation. All rights reserved. * Copyright (c) 2011, 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) 2010, Atheros Communications Inc. * Copyright (c) 2010, Atheros Communications Inc.
* All Rights Reserved. * All Rights Reserved.
* *
@@ -307,7 +307,7 @@ enum WLAN_DFS_EVENTS {
}; };
#if defined(WLAN_DFS_PARTIAL_OFFLOAD) && defined(WLAN_DFS_SYNTHETIC_RADAR) #if defined(WLAN_DFS_PARTIAL_OFFLOAD) && defined(WLAN_DFS_SYNTHETIC_RADAR)
/** /*
* Structure of Pulse to be injected into the DFS Module * Structure of Pulse to be injected into the DFS Module
* ****************************************************** * ******************************************************
* Header * Header
@@ -375,7 +375,7 @@ struct seq_store {
/** /**
* enum dfs_agile_sm_evt - DFS Agile SM events. * enum dfs_agile_sm_evt - DFS Agile SM events.
* @DFS_AGILE_SM_EV_AGILE_START: Event to start AGILE PreCAC/RCAC. * @DFS_AGILE_SM_EV_AGILE_START: Event to start AGILE PreCAC/RCAC.
* @DFS_AGILE_SM_EV_AGILE_DOWN: Event to stop AGILE PreCAC/RCAC.. * @DFS_AGILE_SM_EV_AGILE_STOP: Event to stop AGILE PreCAC/RCAC..
* @DFS_AGILE_SM_EV_AGILE_DONE: Event to complete AGILE PreCAC/RCAC.. * @DFS_AGILE_SM_EV_AGILE_DONE: Event to complete AGILE PreCAC/RCAC..
* @DFS_AGILE_SM_EV_ADFS_RADAR: Event to restart AGILE PreCAC/RCAC after radar. * @DFS_AGILE_SM_EV_ADFS_RADAR: Event to restart AGILE PreCAC/RCAC after radar.
*/ */

View File

@@ -1,5 +1,6 @@
/* /*
* Copyright (c) 2016-2020 The Linux Foundation. All rights reserved. * Copyright (c) 2016-2020 The Linux Foundation. All rights reserved.
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
* *
* *
* Permission to use, copy, modify, and/or distribute this software for * Permission to use, copy, modify, and/or distribute this software for
@@ -99,6 +100,7 @@ uint32_t lmac_get_target_type(struct wlan_objmgr_pdev *pdev);
/** /**
* lmac_get_phymode_info() - Get phymode info. * lmac_get_phymode_info() - Get phymode info.
* @pdev: Pointer to PDEV structure. * @pdev: Pointer to PDEV structure.
* @chan_mode: Channel mode
*/ */
uint32_t lmac_get_phymode_info(struct wlan_objmgr_pdev *pdev, uint32_t lmac_get_phymode_info(struct wlan_objmgr_pdev *pdev,
uint32_t chan_mode); uint32_t chan_mode);

View File

@@ -1,6 +1,6 @@
/* /*
* Copyright (c) 2016-2021 The Linux Foundation. All rights reserved. * Copyright (c) 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.
* *
* *
* Permission to use, copy, modify, and/or distribute this software for * Permission to use, copy, modify, and/or distribute this software for
@@ -73,7 +73,7 @@ dfs_mlme_proc_spoof_success(struct wlan_objmgr_pdev *pdev)
* @pdev: Pointer to DFS pdev object. * @pdev: Pointer to DFS pdev object.
* @ieee_chan: Channel number. * @ieee_chan: Channel number.
* @freq: Channel frequency. * @freq: Channel frequency.
* @cfreq2: HT80 cfreq2 in Mhz. * @cfreq2_mhz: HT80 cfreq2 in MHz.
* @flags: channel flags. * @flags: channel flags.
*/ */
#ifdef CONFIG_CHAN_FREQ_API #ifdef CONFIG_CHAN_FREQ_API
@@ -98,7 +98,7 @@ void dfs_mlme_proc_cac(struct wlan_objmgr_pdev *pdev, uint32_t vdev_id);
void dfs_mlme_deliver_event_up_after_cac(struct wlan_objmgr_pdev *pdev); void dfs_mlme_deliver_event_up_after_cac(struct wlan_objmgr_pdev *pdev);
/** /**
* dfs_mlme_get_extchan() - Get extension channel. * dfs_mlme_get_extchan_for_freq() - Get extension channel.
* @pdev: Pointer to DFS pdev object. * @pdev: Pointer to DFS pdev object.
* @dfs_chan_freq: Frequency in Mhz. * @dfs_chan_freq: Frequency in Mhz.
* @dfs_chan_flags: Channel flags. * @dfs_chan_flags: Channel flags.
@@ -146,19 +146,19 @@ int dfs_mlme_ieee2mhz(struct wlan_objmgr_pdev *pdev,
* dfs_mlme_find_dot11_chan_for_freq() - Find a channel pointer given the mode, * dfs_mlme_find_dot11_chan_for_freq() - Find a channel pointer given the mode,
* frequency and channel flags. * frequency and channel flags.
* @pdev: Pointer to DFS pdev object. * @pdev: Pointer to DFS pdev object.
* @ch_freq: Channel frequency. * @chan_freq: Channel frequency.
* @des_cfreq2_mhz: cfreq2 in MHZ. * @des_cfreq2_mhz: cfreq2 in MHz.
* @mode: Phymode * @mode: Phymode
* @dfs_chan_freq: Frequency in Mhz. * @dfs_chan_freq: Frequency in MHz.
* @dfs_chan_flags: Channel flags. * @dfs_chan_flags: Channel flags.
* @dfs_chan_flagext: Extended channel flags. * @dfs_chan_flagext: Extended channel flags.
* @dfs_chan_ieee: IEEE channel number. * @dfs_chan_ieee: IEEE channel number.
* @dfs_chan_vhtop_ch_freq_seg1: Channel Center IEEE for primary 80 segment. * @dfs_chan_vhtop_ch_freq_seg1: Channel Center IEEE for primary 80 segment.
* @dfs_chan_vhtop_ch_freq_seg2: Channel Center frequency applicable for * @dfs_chan_vhtop_ch_freq_seg2: Channel Center frequency applicable for
* 80+80MHz mode of operation. * 80+80 MHz mode of operation.
* @dfs_chan_mhz_freq_seg1: Channel center frequency of primary 80 segment. * @dfs_chan_mhz_freq_seg1: Channel center frequency of primary 80 segment.
* @dfs_chan_mhz_freq_seg2: Channel center frequency for secondary 80 * @dfs_chan_mhz_freq_seg2: Channel center frequency for secondary 80
* segment applicable only for 80+80MHZ mode of * segment applicable only for 80+80 MHz mode of
* operation. * operation.
* *
* Return: * Return:
@@ -241,9 +241,9 @@ void dfs_mlme_clist_update(struct wlan_objmgr_pdev *pdev,
/** /**
* dfs_mlme_get_cac_timeout_for_freq() - Get cac_timeout. * dfs_mlme_get_cac_timeout_for_freq() - Get cac_timeout.
* @pdev: Pointer to DFS pdev object. * @pdev: Pointer to DFS pdev object.
* @dfs_chan_freq: Frequency in Mhz. * @dfs_chan_freq: Frequency in MHz.
* @dfs_chan_vhtop_freq_seg2: Channel Center frequency applicable for 80+80MHz * @dfs_chan_vhtop_freq_seg2_mhz: Channel Center frequency applicable for
* mode of operation. * 80+80 MHz mode of operation.
* @dfs_chan_flags: Channel flags. * @dfs_chan_flags: Channel flags.
*/ */
#ifdef CONFIG_CHAN_FREQ_API #ifdef CONFIG_CHAN_FREQ_API
@@ -291,7 +291,7 @@ void dfs_mlme_restart_vaps_with_non_dfs_chan(struct wlan_objmgr_pdev *pdev,
* dfs_mlme_check_allowed_prim_chanlist() - Check whether the given channel is * dfs_mlme_check_allowed_prim_chanlist() - Check whether the given channel is
* present in the primary allowed channel list or not * present in the primary allowed channel list or not
* @pdev: Pointer to DFS pdev object. * @pdev: Pointer to DFS pdev object.
* @chan_num: Channel number * @chan_freq: Channel frequency
*/ */
#if defined(WLAN_SUPPORT_PRIMARY_ALLOWED_CHAN) #if defined(WLAN_SUPPORT_PRIMARY_ALLOWED_CHAN)
bool dfs_mlme_check_allowed_prim_chanlist(struct wlan_objmgr_pdev *pdev, bool dfs_mlme_check_allowed_prim_chanlist(struct wlan_objmgr_pdev *pdev,

View File

@@ -1,5 +1,6 @@
/* /*
* Copyright (c) 2017-2020 The Linux Foundation. All rights reserved. * Copyright (c) 2017-2020 The Linux Foundation. All rights reserved.
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
* *
* Permission to use, copy, modify, and/or distribute this software for * Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the * any purpose with or without fee is hereby granted, provided that the
@@ -129,7 +130,7 @@ struct dfs_radar_found_params {
* enum adfs_ocac_mode - Various Off-Channel CAC modes. * enum adfs_ocac_mode - Various Off-Channel CAC modes.
* @QUICK_OCAC_MODE: Used for OCAC where the CAC timeout value is finite. * @QUICK_OCAC_MODE: Used for OCAC where the CAC timeout value is finite.
* This is also known as PreCAC. * This is also known as PreCAC.
* @EXTENSIVE_OCAC: Extensive OCAC. * @EXTENSIVE_OCAC_MODE: Extensive OCAC.
* @QUICK_RCAC_MODE: Used for RollingCAC where the timeout value is assumed to * @QUICK_RCAC_MODE: Used for RollingCAC where the timeout value is assumed to
* be infinite by the Firmware code, that is, the FW has to * be infinite by the Firmware code, that is, the FW has to
* be on the agile channel until host stop/aborts the agile * be on the agile channel until host stop/aborts the agile

View File

@@ -1,6 +1,6 @@
/* /*
* Copyright (c) 2016-2021 The Linux Foundation. All rights reserved. * Copyright (c) 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.
* *
* *
* Permission to use, copy, modify, and/or distribute this software for * Permission to use, copy, modify, and/or distribute this software for
@@ -160,6 +160,7 @@ tgt_dfs_set_current_channel_for_freq(struct wlan_objmgr_pdev *pdev,
* tgt_dfs_radar_enable() - Enables the radar. * tgt_dfs_radar_enable() - Enables the radar.
* @pdev: Pointer to DFS pdev object. * @pdev: Pointer to DFS pdev object.
* @no_cac: If no_cac is 0, it cancels the CAC. * @no_cac: If no_cac is 0, it cancels the CAC.
* @opmode: operating mode
* @enable: disable/enable radar * @enable: disable/enable radar
* *
* This is called each time a channel change occurs, to (potentially) enable * This is called each time a channel change occurs, to (potentially) enable
@@ -177,6 +178,7 @@ QDF_STATUS tgt_dfs_radar_enable(
* @insize: size of the input buffer. * @insize: size of the input buffer.
* @outdata: A buffer for the results. * @outdata: A buffer for the results.
* @outsize: Size of the output buffer. * @outsize: Size of the output buffer.
* @error: returned error
*/ */
QDF_STATUS tgt_dfs_control(struct wlan_objmgr_pdev *pdev, QDF_STATUS tgt_dfs_control(struct wlan_objmgr_pdev *pdev,
u_int id, u_int id,
@@ -356,7 +358,7 @@ QDF_STATUS tgt_dfs_agile_precac_start(struct wlan_objmgr_pdev *pdev);
/** /**
* tgt_dfs_ocac_complete() - Process off channel cac complete indication. * tgt_dfs_ocac_complete() - Process off channel cac complete indication.
* @pdev: Pointer to DFS pdev object. * @pdev: Pointer to DFS pdev object.
* @vdev_adfs_complete_status: Off channel CAC complete status. * @ocac_status: Off channel CAC complete status.
* *
* wrapper function for dfs_set_agile_precac_state. * wrapper function for dfs_set_agile_precac_state.
* This function called from outside of dfs component. * This function called from outside of dfs component.
@@ -388,7 +390,7 @@ QDF_STATUS tgt_dfs_reg_ev_handler(struct wlan_objmgr_psoc *psoc);
/** /**
* tgt_dfs_stop() - Clear dfs timers. * tgt_dfs_stop() - Clear dfs timers.
* @dfs: Pointer to wlan_dfs structure. * @pdev: Pointer to pdev object
*/ */
QDF_STATUS tgt_dfs_stop(struct wlan_objmgr_pdev *pdev); QDF_STATUS tgt_dfs_stop(struct wlan_objmgr_pdev *pdev);
@@ -396,6 +398,7 @@ QDF_STATUS tgt_dfs_stop(struct wlan_objmgr_pdev *pdev);
* tgt_dfs_process_emulate_bang_radar_cmd() - Process to emulate dfs bangradar * tgt_dfs_process_emulate_bang_radar_cmd() - Process to emulate dfs bangradar
* command. * command.
* @pdev: Pointer to DFS pdev object. * @pdev: Pointer to DFS pdev object.
* @dfs_unit_test: bang radar emulation command
* *
* Process to emulate dfs bangradar command. * Process to emulate dfs bangradar command.
* *

View File

@@ -1,6 +1,6 @@
/* /*
* Copyright (c) 2016-2021 The Linux Foundation. All rights reserved. * Copyright (c) 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.
* *
* *
* Permission to use, copy, modify, and/or distribute this software for * Permission to use, copy, modify, and/or distribute this software for
@@ -35,19 +35,30 @@
* struct dfs_to_mlme - These are MLME function pointer used by DFS component. * struct dfs_to_mlme - These are MLME function pointer used by DFS component.
* @pdev_component_obj_attach: Attach DFS object to PDEV. * @pdev_component_obj_attach: Attach DFS object to PDEV.
* @pdev_component_obj_detach: Detach DFS object from PDEV. * @pdev_component_obj_detach: Detach DFS object from PDEV.
* @pdev_get_comp_private_obj: Get DFS object from PDEV.
* @dfs_start_rcsa: Send RCSA to RootAP. * @dfs_start_rcsa: Send RCSA to RootAP.
* @mlme_mark_dfs: Mark DFS channel frequency as radar.
* @mlme_start_csa_for_freq:
* @mlme_proc_cac: Process the CAC completion event. * @mlme_proc_cac: Process the CAC completion event.
* @mlme_deliver_event_up_after_cac: Send a CAC timeout, VAP up event to user * @mlme_deliver_event_up_after_cac: Send a CAC timeout, VAP up event to user
* space * space
* @mlme_get_extchan_for_freq: Get the extension channel.
* @mlme_set_no_chans_available: Sets no_chans_available flag. * @mlme_set_no_chans_available: Sets no_chans_available flag.
* @mlme_ieee2mhz: Gets Channel freq from ieee number. * @mlme_ieee2mhz: Gets Channel freq from ieee number.
* @mlme_find_dot11_chan_for_freq: Find a channel pointer.
* @mlme_get_dfs_channels_for_freq: Get DFS channels from current channel
* list.
* @mlme_dfs_ch_flags_ext: Gets channel extension flag. * @mlme_dfs_ch_flags_ext: Gets channel extension flag.
* @mlme_channel_change_by_precac: Channel change triggered by PreCAC. * @mlme_channel_change_by_precac: Channel change triggered by PreCAC.
* @mlme_precac_chan_change_csa_for_freq:Channel change triggered by PrCAC using
* Channel Switch Announcement.
* @mlme_postnol_chan_switch: Channel change post NOL using Channel
* Switch Announcement.
* @mlme_nol_timeout_notification: NOL timeout notification. * @mlme_nol_timeout_notification: NOL timeout notification.
* @mlme_clist_update: Updates the channel list. * @mlme_clist_update: Updates the channel list.
* @mlme_is_opmode_sta: Check if pdev opmode is STA. * @mlme_is_opmode_sta: Check if pdev opmode is STA.
* @mlme_rebuild_chan_list_with_non_dfs_channel: Rebuild channels with non-dfs * @mlme_get_cac_timeout_for_freq: Get CAC timeout for a given channel
* frequency.
* @mlme_rebuild_chan_list_with_non_dfs_channels: Rebuild channels with non-dfs
* channels. * channels.
* @mlme_restart_vaps_with_non_dfs_chan: Restart vaps with non-dfs channel. * @mlme_restart_vaps_with_non_dfs_chan: Restart vaps with non-dfs channel.
* @mlme_check_allowed_prim_chanlist: Check whether the given channel is * @mlme_check_allowed_prim_chanlist: Check whether the given channel is
@@ -56,21 +67,13 @@
* @mlme_update_scan_channel_list: Update the scan channel list sent to FW. * @mlme_update_scan_channel_list: Update the scan channel list sent to FW.
* @mlme_bringdown_vaps: Bringdown vaps if no chans is present. * @mlme_bringdown_vaps: Bringdown vaps if no chans is present.
* @mlme_dfs_deliver_event: Deliver DFS events to user space * @mlme_dfs_deliver_event: Deliver DFS events to user space
* @mlme_precac_chan_change_csa_for_freq:Channel change triggered by PrCAC using * @mlme_is_inter_band_chan_switch_allowed: Check if switch between 5 GHz and
* Channel Switch Announcement. * 6 GHz is allowed.
* @mlme_postnol_chan_switch: Channel change post NOL using Channel
* Switch Announcement.
* @mlme_mark_dfs: Mark DFS channel frequency as radar.
* @mlme_get_extchan_for_freq: Get the extension channel.
* @mlme_find_dot11_chan_for_freq: Find a channel pointer.
* @mlme_get_dfs_channels_for_freq: Get DFS channels from current channel
* list.
* @mlme_get_cac_timeout_for_freq: Get CAC timeout for a given channel
* frequency.
* @mlme_acquire_radar_mode_switch_lock: Acquire lock for radar processing over * @mlme_acquire_radar_mode_switch_lock: Acquire lock for radar processing over
* mode switch. * mode switch.
* @mlme_release_radar_mode_switch_lock: Release lock taken for radar processing * @mlme_release_radar_mode_switch_lock: Release lock taken for radar processing
* over mode switch. * over mode switch.
* @mlme_proc_spoof_success: Called when FW send spoof success event.
*/ */
struct dfs_to_mlme { struct dfs_to_mlme {
QDF_STATUS (*pdev_component_obj_attach)(struct wlan_objmgr_pdev *pdev, QDF_STATUS (*pdev_component_obj_attach)(struct wlan_objmgr_pdev *pdev,
@@ -208,6 +211,7 @@ extern struct dfs_to_mlme global_dfs_to_mlme;
/** /**
* wlan_dfs_pdev_obj_create_notification() - DFS pdev object create handler. * wlan_dfs_pdev_obj_create_notification() - DFS pdev object create handler.
* @pdev: Pointer to DFS pdev object. * @pdev: Pointer to DFS pdev object.
* @arg: component argument
*/ */
QDF_STATUS wlan_dfs_pdev_obj_create_notification(struct wlan_objmgr_pdev *pdev, QDF_STATUS wlan_dfs_pdev_obj_create_notification(struct wlan_objmgr_pdev *pdev,
void *arg); void *arg);
@@ -215,6 +219,7 @@ QDF_STATUS wlan_dfs_pdev_obj_create_notification(struct wlan_objmgr_pdev *pdev,
/** /**
* wlan_dfs_pdev_obj_destroy_notification() - DFS pdev object delete handler. * wlan_dfs_pdev_obj_destroy_notification() - DFS pdev object delete handler.
* @pdev: Pointer to DFS pdev object. * @pdev: Pointer to DFS pdev object.
* @arg: component argument
*/ */
QDF_STATUS wlan_dfs_pdev_obj_destroy_notification(struct wlan_objmgr_pdev *pdev, QDF_STATUS wlan_dfs_pdev_obj_destroy_notification(struct wlan_objmgr_pdev *pdev,
void *arg); void *arg);
@@ -244,6 +249,7 @@ QDF_STATUS ucfg_dfs_getnol(struct wlan_objmgr_pdev *pdev, void *dfs_nolinfo);
* ucfg_dfs_override_cac_timeout() - Override the default CAC timeout. * ucfg_dfs_override_cac_timeout() - Override the default CAC timeout.
* @pdev: Pointer to DFS pdev object. * @pdev: Pointer to DFS pdev object.
* @cac_timeout: CAC timeout value. * @cac_timeout: CAC timeout value.
* @status: pointer to save status
* *
* Wrapper function for dfs_override_cac_timeout(). * Wrapper function for dfs_override_cac_timeout().
* This function called from outside of dfs component. * This function called from outside of dfs component.
@@ -255,6 +261,7 @@ QDF_STATUS ucfg_dfs_override_cac_timeout(struct wlan_objmgr_pdev *pdev,
* ucfg_dfs_get_override_cac_timeout() - Get override CAC timeout value. * ucfg_dfs_get_override_cac_timeout() - Get override CAC timeout value.
* @pdev: Pointer to DFS pdev object. * @pdev: Pointer to DFS pdev object.
* @cac_timeout: Pointer to save the CAC timeout value. * @cac_timeout: Pointer to save the CAC timeout value.
* @status: pointer to save status
* *
* Wrapper function for dfs_get_override_cac_timeout(). * Wrapper function for dfs_get_override_cac_timeout().
* This function called from outside of dfs component. * This function called from outside of dfs component.
@@ -345,7 +352,7 @@ QDF_STATUS ucfg_dfs_get_precac_intermediate_chan(struct wlan_objmgr_pdev *pdev,
* ucfg_dfs_get_precac_chan_state_for_freq() - Get precac status for the * ucfg_dfs_get_precac_chan_state_for_freq() - Get precac status for the
* given channel. * given channel.
* @pdev: Pointer to DFS pdev object. * @pdev: Pointer to DFS pdev object.
* @precac_chan: Channel frequency for which precac state needs to be * @precac_freq: Channel frequency for which precac state needs to be
* determined. * determined.
* *
* Wrapper function for dfs_get_precac_chan_state_for_freq(). * Wrapper function for dfs_get_precac_chan_state_for_freq().
@@ -503,7 +510,7 @@ QDF_STATUS ucfg_dfs_reinit_timers(struct wlan_objmgr_pdev *pdev);
/** /**
* ucfg_dfs_reset_agile_config() - Reset ADFS config. * ucfg_dfs_reset_agile_config() - Reset ADFS config.
* @pdev: Pointer to wlan_objmgr_pdev structure. * @psoc: Pointer to wlan_objmgr_psoc structure.
* *
* Wrapper function to reset Agile DFS config such as the variables which hold * Wrapper function to reset Agile DFS config such as the variables which hold
* information about the state of the preCAC timer, active precac * information about the state of the preCAC timer, active precac

View File

@@ -1,6 +1,6 @@
/* /*
* Copyright (c) 2016-2021 The Linux Foundation. All rights reserved. * Copyright (c) 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.
* *
* *
* Permission to use, copy, modify, and/or distribute this software for * Permission to use, copy, modify, and/or distribute this software for
@@ -226,12 +226,11 @@ QDF_STATUS utils_dfs_stacac_stop(struct wlan_objmgr_pdev *pdev);
*/ */
QDF_STATUS utils_dfs_get_usenol(struct wlan_objmgr_pdev *pdev, QDF_STATUS utils_dfs_get_usenol(struct wlan_objmgr_pdev *pdev,
uint16_t *usenol); uint16_t *usenol);
/*
* utils_dfs_radar_disable() - Disables the radar. /**
* utils_dfs_is_spruce_spur_war_applicable() - Is Spruce spur WAR applicable
* @pdev: Pointer to DFS pdev object. * @pdev: Pointer to DFS pdev object.
* *
* Return: true if Spruce spur WAR is applicable else false.
*
* Spur or leakage transmissions is observed in Spruce HW in * Spur or leakage transmissions is observed in Spruce HW in
* frequencies from 5260MHz to 5320MHz when one of the following * frequencies from 5260MHz to 5320MHz when one of the following
* conditions is true, * conditions is true,
@@ -252,6 +251,8 @@ QDF_STATUS utils_dfs_get_usenol(struct wlan_objmgr_pdev *pdev,
* should make sure to prevent moving to the adjacent channels 36/44/48 in * should make sure to prevent moving to the adjacent channels 36/44/48 in
* 80MHz mode. Failing to do so will cause spur transmissions in channel 52 * 80MHz mode. Failing to do so will cause spur transmissions in channel 52
* through 64. * through 64.
*
* Return: true if Spruce spur WAR is applicable else false.
*/ */
bool utils_dfs_is_spruce_spur_war_applicable(struct wlan_objmgr_pdev *pdev); bool utils_dfs_is_spruce_spur_war_applicable(struct wlan_objmgr_pdev *pdev);
@@ -311,7 +312,7 @@ QDF_STATUS utils_dfs_get_nol_timeout(struct wlan_objmgr_pdev *pdev,
/** /**
* utils_dfs_nol_addchan() - Add channel to NOL. * utils_dfs_nol_addchan() - Add channel to NOL.
* @pdev: Pointer to DFS pdev object. * @pdev: Pointer to DFS pdev object.
* @chan: channel t o add NOL. * @freq: channel frequency to add to NOL.
* @dfs_nol_timeout: NOL timeout. * @dfs_nol_timeout: NOL timeout.
* *
* wrapper function for dfs_nol_addchan(). this * wrapper function for dfs_nol_addchan(). this
@@ -343,11 +344,11 @@ QDF_STATUS utils_dfs_second_segment_radar_disable(
/** /**
* utils_dfs_fetch_nol_ie_info() - Fills the arguments with NOL information * utils_dfs_fetch_nol_ie_info() - Fills the arguments with NOL information
* needed for sending RCSA. * needed for sending RCSA.
* pdev: Pointer to DFS pdev object. * @pdev: Pointer to DFS pdev object.
* nol_ie_bandwidth: Minimum DFS subchannel Bandwidth. * @nol_ie_bandwidth: Minimum DFS subchannel Bandwidth.
* nol_ie_startfreq: Radar affected channel list start subchannel's centre * @nol_ie_startfreq: Radar affected channel list start subchannel's centre
* frequency. * frequency.
* nol_ie_bitmap: Bitmap of radar affected subchannels. * @nol_ie_bitmap: Bitmap of radar affected subchannels.
*/ */
QDF_STATUS utils_dfs_fetch_nol_ie_info(struct wlan_objmgr_pdev *pdev, QDF_STATUS utils_dfs_fetch_nol_ie_info(struct wlan_objmgr_pdev *pdev,
uint8_t *nol_ie_bandwidth, uint8_t *nol_ie_bandwidth,
@@ -357,9 +358,9 @@ QDF_STATUS utils_dfs_fetch_nol_ie_info(struct wlan_objmgr_pdev *pdev,
/** /**
* utils_dfs_set_rcsa_flags() - Set flags that are required for sending * utils_dfs_set_rcsa_flags() - Set flags that are required for sending
* RCSA and NOL IE. * RCSA and NOL IE.
* pdev: Pointer to DFS pdev object. * @pdev: Pointer to DFS pdev object.
* is_rcsa_ie_sent: Boolean to check if RCSA IE should be sent or not. * @is_rcsa_ie_sent: Boolean to check if RCSA IE should be sent or not.
* is_nol_ie_sent: Boolean to check if NOL IE should be sent or not. * @is_nol_ie_sent: Boolean to check if NOL IE should be sent or not.
*/ */
QDF_STATUS utils_dfs_set_rcsa_flags(struct wlan_objmgr_pdev *pdev, QDF_STATUS utils_dfs_set_rcsa_flags(struct wlan_objmgr_pdev *pdev,
@@ -369,9 +370,9 @@ QDF_STATUS utils_dfs_set_rcsa_flags(struct wlan_objmgr_pdev *pdev,
/** /**
* utils_dfs_get_rcsa_flags() - Get flags that are required for sending * utils_dfs_get_rcsa_flags() - Get flags that are required for sending
* RCSA and NOL IE. * RCSA and NOL IE.
* pdev: Pointer to DFS pdev object. * @pdev: Pointer to DFS pdev object.
* is_rcsa_ie_sent: Boolean to check if RCSA IE should be sent or not. * @is_rcsa_ie_sent: Boolean to check if RCSA IE should be sent or not.
* is_nol_ie_sent: Boolean to check if NOL IE should be sent or not. * @is_nol_ie_sent: Boolean to check if NOL IE should be sent or not.
*/ */
QDF_STATUS utils_dfs_get_rcsa_flags(struct wlan_objmgr_pdev *pdev, QDF_STATUS utils_dfs_get_rcsa_flags(struct wlan_objmgr_pdev *pdev,
@@ -381,11 +382,11 @@ QDF_STATUS utils_dfs_get_rcsa_flags(struct wlan_objmgr_pdev *pdev,
/** /**
* utils_dfs_process_nol_ie_bitmap() - Update NOL with external radar * utils_dfs_process_nol_ie_bitmap() - Update NOL with external radar
* information. * information.
* pdev: Pointer to DFS pdev object. * @pdev: Pointer to DFS pdev object.
* nol_ie_bandwidth: Minimum DFS subchannel Bandwidth. * @nol_ie_bandwidth: Minimum DFS subchannel Bandwidth.
* nol_ie_startfreq: Radar affected channel list start channel's * @nol_ie_startfreq: Radar affected channel list start channel's
* centre frequency. * centre frequency.
* nol_ie_bitmap: Bitmap of radar affected subchannels. * @nol_ie_bitmap: Bitmap of radar affected subchannels.
* *
* Return: True if NOL IE should be propagated, else false. * Return: True if NOL IE should be propagated, else false.
*/ */
@@ -465,7 +466,7 @@ utils_dfs_get_random_channel_for_freq(struct wlan_objmgr_pdev *pdev,
* @flags: random channel selection flags. * @flags: random channel selection flags.
* @ch_params: current channel params. * @ch_params: current channel params.
* @hw_mode: current operating mode. * @hw_mode: current operating mode.
* @target_chan: Pointer to target_chan_freq. * @target_chan_freq: Pointer to target_chan_freq.
* @acs_info: acs range info. * @acs_info: acs range info.
* *
* Get random channel based on vdev interface type. If the vdev is null, * Get random channel based on vdev interface type. If the vdev is null,
@@ -485,7 +486,7 @@ QDF_STATUS utils_dfs_get_vdev_random_channel_for_freq(
* @pdev: Pointer to DFS pdev object. * @pdev: Pointer to DFS pdev object.
* @ch_params: current channel params. * @ch_params: current channel params.
* @hw_mode: current operating mode. * @hw_mode: current operating mode.
* @target_chan: Pointer to target_chan freq. * @target_chan_freq: Pointer to target_chan freq.
* *
* wrapper function for get bw_reduced_channel. this * wrapper function for get bw_reduced_channel. this
* function called from outside of dfs component. * function called from outside of dfs component.
@@ -594,7 +595,7 @@ void utils_dfs_reg_update_nol_chan_for_freq(struct wlan_objmgr_pdev *pdev,
bool nol_ch); bool nol_ch);
#endif #endif
/** /**
* utils_dfs_freq_to_chan () - convert channel freq to channel number * utils_dfs_freq_to_chan() - convert channel freq to channel number
* @freq: frequency * @freq: frequency
* *
* Return: channel number * Return: channel number
@@ -602,7 +603,7 @@ void utils_dfs_reg_update_nol_chan_for_freq(struct wlan_objmgr_pdev *pdev,
uint8_t utils_dfs_freq_to_chan(uint32_t freq); uint8_t utils_dfs_freq_to_chan(uint32_t freq);
/** /**
* utils_dfs_chan_to_freq () - convert channel number to frequency * utils_dfs_chan_to_freq() - convert channel number to frequency
* @chan: channel number * @chan: channel number
* *
* Return: frequency * Return: frequency
@@ -684,22 +685,23 @@ utils_dfs_can_ignore_radar_event(struct wlan_objmgr_pdev *pdev)
*/ */
int utils_get_dfsdomain(struct wlan_objmgr_pdev *pdev); int utils_get_dfsdomain(struct wlan_objmgr_pdev *pdev);
#if defined(WLAN_DFS_PARTIAL_OFFLOAD) && defined(HOST_DFS_SPOOF_TEST)
/** /**
* utils_dfs_is_spoof_check_failed() - get spoof check status. * utils_dfs_is_spoof_check_failed() - get spoof check status.
* @pdev: pdev ptr * @pdev: pdev ptr
* @is_spoof_check_failed: pointer containing the status. * @is_spoof_check_failed: pointer containing the status.
* *
* Return: QDF_STATUS. * Return: QDF_STATUS.
*/
QDF_STATUS utils_dfs_is_spoof_check_failed(struct wlan_objmgr_pdev *pdev,
bool *is_spoof_check_failed);
/**
* utils_dfs_is_spoof_done() - get spoof check status. * utils_dfs_is_spoof_done() - get spoof check status.
* @pdev: pdev ptr * @pdev: pdev ptr
* *
* Return: True if dfs_spoof_test_done is set. * Return: True if dfs_spoof_test_done is set.
*/ */
#if defined(WLAN_DFS_PARTIAL_OFFLOAD) && defined(HOST_DFS_SPOOF_TEST)
QDF_STATUS utils_dfs_is_spoof_check_failed(struct wlan_objmgr_pdev *pdev,
bool *is_spoof_check_failed);
bool utils_dfs_is_spoof_done(struct wlan_objmgr_pdev *pdev); bool utils_dfs_is_spoof_done(struct wlan_objmgr_pdev *pdev);
#else #else
static inline static inline
@@ -747,17 +749,18 @@ void utils_dfs_get_nol_history_chan_list(struct wlan_objmgr_pdev *pdev,
* utils_dfs_reg_update_nol_history_chan_for_freq() - set nol history channel * utils_dfs_reg_update_nol_history_chan_for_freq() - set nol history channel
* *
* @pdev: pdev ptr * @pdev: pdev ptr
* @ch_list: freq channel list to be returned * @freq_list: freq channel list to be returned
* @num_ch: number of channels * @num_chan: number of channels
* @nol_history_ch: nol history flag * @nol_history_chan: nol history flag
* *
* Return: void * Return: void
*/ */
#ifdef CONFIG_CHAN_FREQ_API #ifdef CONFIG_CHAN_FREQ_API
void utils_dfs_reg_update_nol_history_chan_for_freq(struct wlan_objmgr_pdev *, void
uint16_t *freq_list, utils_dfs_reg_update_nol_history_chan_for_freq(struct wlan_objmgr_pdev *pdev,
uint8_t num_ch, uint16_t *freq_list,
bool nol_history_ch); uint8_t num_chan,
bool nol_history_chan);
#endif #endif
/** /**
@@ -797,7 +800,8 @@ utils_dfs_is_cac_required_on_dfs_curchan(struct wlan_objmgr_pdev *pdev,
bool *continue_current_cac, bool *continue_current_cac,
bool is_vap_restart); bool is_vap_restart);
/** utils_dfs_is_precac_done() - Check if precac has been done in chosen channel /**
* utils_dfs_is_precac_done() - Check if precac has been done in chosen channel
* @pdev: Pointer to DFS pdev object. * @pdev: Pointer to DFS pdev object.
* @wlan_chan: Pointer to wlan channel object that can be accessed by other * @wlan_chan: Pointer to wlan channel object that can be accessed by other
* components. * components.
@@ -814,7 +818,8 @@ bool utils_dfs_is_precac_done(struct wlan_objmgr_pdev *pdev,
* utils_dfs_get_disable_radar_marking() - Retrieve the value of disable radar. * utils_dfs_get_disable_radar_marking() - Retrieve the value of disable radar.
* marking. * marking.
* @pdev: Pointer to DFS pdev object. * @pdev: Pointer to DFS pdev object.
* @dis_radar_marking: pointer to retrieve the value of disable_radar_marking. * @disable_radar_marking: pointer to retrieve the value of
* disable_radar_marking.
*/ */
#if defined(WLAN_DFS_FULL_OFFLOAD) && defined(QCA_DFS_NOL_OFFLOAD) #if defined(WLAN_DFS_FULL_OFFLOAD) && defined(QCA_DFS_NOL_OFFLOAD)
QDF_STATUS utils_dfs_get_disable_radar_marking(struct wlan_objmgr_pdev *pdev, QDF_STATUS utils_dfs_get_disable_radar_marking(struct wlan_objmgr_pdev *pdev,
@@ -831,7 +836,7 @@ QDF_STATUS utils_dfs_get_disable_radar_marking(struct wlan_objmgr_pdev *pdev,
/** /**
* utils_dfs_deliver_event() - Deliver DFS event to userspace. * utils_dfs_deliver_event() - Deliver DFS event to userspace.
* @pdev: Pointer to DFS pdev object * @pdev: Pointer to DFS pdev object
* @chan: channel radar hit on * @freq: frequency radar hit on
* @event: event being sent * @event: event being sent
*/ */
void utils_dfs_deliver_event(struct wlan_objmgr_pdev *pdev, uint16_t freq, void utils_dfs_deliver_event(struct wlan_objmgr_pdev *pdev, uint16_t freq,
@@ -868,8 +873,8 @@ void utils_dfs_agile_sm_deliver_evt(struct wlan_objmgr_pdev *pdev,
* utils_dfs_get_rcac_channel() - Get the completed Rolling CAC channel if * utils_dfs_get_rcac_channel() - Get the completed Rolling CAC channel if
* available. * available.
* @pdev: Pointer to DFS pdev object. * @pdev: Pointer to DFS pdev object.
* @ch_params: current channel params. * @chan_params: current channel params.
* @target_chan: Pointer to target_chan freq. * @target_chan_freq: Pointer to target_chan freq.
* *
* Return: QDF_STATUS. * Return: QDF_STATUS.
*/ */

View File

@@ -1,6 +1,6 @@
/* /*
* Copyright (c) 2016-2021 The Linux Foundation. All rights reserved. * Copyright (c) 2016-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved. * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
* *
* *
* Permission to use, copy, modify, and/or distribute this software for * Permission to use, copy, modify, and/or distribute this software for
@@ -705,7 +705,7 @@ void utils_dfs_get_chan_list(struct wlan_objmgr_pdev *pdev,
* on current channel list. * on current channel list.
* @pdev: Pointer to pdev structure. * @pdev: Pointer to pdev structure.
* @vdev: vdev of request * @vdev: vdev of request
* @chan: Pointer to channel list. * @chan_list: Pointer to channel list.
* @num_chan: number of channels. * @num_chan: number of channels.
* *
* Get regdb channel list based on dfs current channel. * Get regdb channel list based on dfs current channel.
@@ -1461,7 +1461,7 @@ static void utils_dfs_convert_freq_to_index(qdf_freq_t freq, int8_t *index)
/** /**
* utils_dfs_update_chan_state_array_element() - Update the per dfs channel * utils_dfs_update_chan_state_array_element() - Update the per dfs channel
* state array element indexed by the frequency with the new state. * state array element indexed by the frequency with the new state.
* * @dfs: DFS context
* @freq: Input DFS Channel frequency which will converted to channel state * @freq: Input DFS Channel frequency which will converted to channel state
* array index. * array index.
* @state: Input DFS state with which the value indexed by frequency will be * @state: Input DFS state with which the value indexed by frequency will be