qcacmn: Remove the unused CHAN_NUM functions
Clean up following functions: dfs_mark_precac_done dfs_unmark_precac_nol/utils_dfs_unmark_precac_nol dfs_mlme_start_csa/mlme_start_csa dfs_mlme_get_extchan/mlme_get_extchan dfs_fill_chan_info utils_dfs_get_channel_list dfs_clear_nolhistory dfs_getchanstate dfs_radar_enable os_timer_func dfs_cac_timeout Change-Id: Id0775ba34b6f1f6c7fedaea9711d81ca07956c70 CRs-Fixed: 2946423
This commit is contained in:

committed by
Madan Koyyalamudi

parent
2ea97ac985
commit
ef56741282
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-2020 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.
|
||||||
*
|
*
|
||||||
@@ -941,23 +941,6 @@ bool dfs_is_precac_done_on_ht8080_chan(struct wlan_dfs *dfs,
|
|||||||
struct dfs_channel *chan);
|
struct dfs_channel *chan);
|
||||||
|
|
||||||
#if defined(WLAN_DFS_PARTIAL_OFFLOAD) && !defined(QCA_MCL_DFS_SUPPORT)
|
#if defined(WLAN_DFS_PARTIAL_OFFLOAD) && !defined(QCA_MCL_DFS_SUPPORT)
|
||||||
/**
|
|
||||||
* dfs_find_chwidth_and_center_chan() - Find the channel width enum and
|
|
||||||
* primary and secondary center channel
|
|
||||||
* value of the current channel.
|
|
||||||
* @dfs: Pointer to wlan_dfs structure.
|
|
||||||
* @chwidth: Channel width enum of current channel.
|
|
||||||
* @primary_chan_ieee: Primary IEEE channel.
|
|
||||||
* @secondary_chan_ieee: Secondary IEEE channel (in HT80_80 mode).
|
|
||||||
*/
|
|
||||||
#ifdef CONFIG_CHAN_NUM_API
|
|
||||||
void dfs_find_chwidth_and_center_chan(struct wlan_dfs *dfs,
|
|
||||||
enum phy_ch_width *chwidth,
|
|
||||||
uint8_t *primary_chan_ieee,
|
|
||||||
uint8_t *secondary_chan_ieee);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_CHAN_FREQ_API
|
#ifdef CONFIG_CHAN_FREQ_API
|
||||||
/**
|
/**
|
||||||
* dfs_find_curchwidth_and_center_chan_for_freq() - Find the channel width
|
* dfs_find_curchwidth_and_center_chan_for_freq() - Find the channel width
|
||||||
@@ -976,20 +959,6 @@ dfs_find_curchwidth_and_center_chan_for_freq(struct wlan_dfs *dfs,
|
|||||||
uint16_t *secondary_chan_freq);
|
uint16_t *secondary_chan_freq);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
|
||||||
* dfs_mark_precac_done() - Mark the channel as preCAC done.
|
|
||||||
* @dfs: Pointer to wlan_dfs structure.
|
|
||||||
* @pri_ch_ieee: Primary channel IEEE.
|
|
||||||
* @sec_ch_ieee: Secondary channel IEEE (only in HT80_80 mode).
|
|
||||||
* @ch_width: Channel width enum.
|
|
||||||
*/
|
|
||||||
#ifdef CONFIG_CHAN_NUM_API
|
|
||||||
void dfs_mark_precac_done(struct wlan_dfs *dfs,
|
|
||||||
uint8_t pri_ch_ieee,
|
|
||||||
uint8_t sec_ch_ieee,
|
|
||||||
enum phy_ch_width ch_width);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_CHAN_FREQ_API
|
#ifdef CONFIG_CHAN_FREQ_API
|
||||||
/**
|
/**
|
||||||
* dfs_mark_precac_done_for_freq() - Mark the channel as preCAC done.
|
* dfs_mark_precac_done_for_freq() - Mark the channel as preCAC done.
|
||||||
@@ -1055,15 +1024,6 @@ void dfs_unmark_precac_nol_for_freq(struct wlan_dfs *dfs, uint16_t chan_freq);
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#ifdef CONFIG_CHAN_NUM_API
|
|
||||||
static inline void
|
|
||||||
dfs_find_chwidth_and_center_chan(struct wlan_dfs *dfs,
|
|
||||||
enum phy_ch_width *chwidth,
|
|
||||||
uint8_t *primary_chan_ieee,
|
|
||||||
uint8_t *secondary_chan_ieee)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_CHAN_FREQ_API
|
#ifdef CONFIG_CHAN_FREQ_API
|
||||||
static inline void
|
static inline void
|
||||||
@@ -1075,15 +1035,6 @@ dfs_find_curchwidth_and_center_chan_for_freq(struct wlan_dfs *dfs,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_CHAN_NUM_API
|
|
||||||
static inline void dfs_mark_precac_done(struct wlan_dfs *dfs,
|
|
||||||
uint8_t pri_ch_ieee,
|
|
||||||
uint8_t sec_ch_ieee,
|
|
||||||
enum phy_ch_width ch_width)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_CHAN_FREQ_API
|
#ifdef CONFIG_CHAN_FREQ_API
|
||||||
static inline void dfs_mark_precac_done_for_freq(struct wlan_dfs *dfs,
|
static inline void dfs_mark_precac_done_for_freq(struct wlan_dfs *dfs,
|
||||||
uint16_t pri_chan_freq,
|
uint16_t pri_chan_freq,
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-2020 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2016-2021 The Linux Foundation. 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
|
||||||
@@ -130,77 +130,6 @@ struct dfs_state *dfs_getchanstate(struct wlan_dfs *dfs, uint8_t *index,
|
|||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
#ifdef CONFIG_CHAN_NUM_API
|
|
||||||
struct dfs_state *dfs_getchanstate(struct wlan_dfs *dfs, uint8_t *index,
|
|
||||||
int ext_chan_flag)
|
|
||||||
{
|
|
||||||
struct dfs_state *rs = NULL;
|
|
||||||
struct dfs_channel *cmp_ch, cmp_ch1;
|
|
||||||
int i;
|
|
||||||
QDF_STATUS err;
|
|
||||||
|
|
||||||
if (!dfs) {
|
|
||||||
dfs_err(dfs, WLAN_DEBUG_DFS_ALWAYS, "dfs is NULL");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
cmp_ch = &cmp_ch1;
|
|
||||||
if (ext_chan_flag) {
|
|
||||||
err = dfs_mlme_get_extchan(dfs->dfs_pdev_obj,
|
|
||||||
&(cmp_ch->dfs_ch_freq),
|
|
||||||
&(cmp_ch->dfs_ch_flags),
|
|
||||||
&(cmp_ch->dfs_ch_flagext),
|
|
||||||
&(cmp_ch->dfs_ch_ieee),
|
|
||||||
&(cmp_ch->dfs_ch_vhtop_ch_freq_seg1),
|
|
||||||
&(cmp_ch->dfs_ch_vhtop_ch_freq_seg2));
|
|
||||||
|
|
||||||
if (err == QDF_STATUS_SUCCESS) {
|
|
||||||
dfs_debug(dfs, WLAN_DEBUG_DFS2,
|
|
||||||
"Extension channel freq = %u flags=0x%x",
|
|
||||||
cmp_ch->dfs_ch_freq,
|
|
||||||
cmp_ch->dfs_ch_flagext);
|
|
||||||
} else
|
|
||||||
return NULL;
|
|
||||||
} else {
|
|
||||||
cmp_ch = dfs->dfs_curchan;
|
|
||||||
dfs_debug(dfs, WLAN_DEBUG_DFS2,
|
|
||||||
"Primary channel freq = %u flags=0x%x",
|
|
||||||
cmp_ch->dfs_ch_freq, cmp_ch->dfs_ch_flagext);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0; i < DFS_NUM_RADAR_STATES; i++) {
|
|
||||||
if ((dfs->dfs_radar[i].rs_chan.dfs_ch_freq ==
|
|
||||||
cmp_ch->dfs_ch_freq) &&
|
|
||||||
(dfs->dfs_radar[i].rs_chan.dfs_ch_flags ==
|
|
||||||
cmp_ch->dfs_ch_flags)
|
|
||||||
) {
|
|
||||||
if (index)
|
|
||||||
*index = (uint8_t)i;
|
|
||||||
return &(dfs->dfs_radar[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/* No existing channel found, look for first free channel state entry.*/
|
|
||||||
for (i = 0; i < DFS_NUM_RADAR_STATES; i++) {
|
|
||||||
if (dfs->dfs_radar[i].rs_chan.dfs_ch_freq == 0) {
|
|
||||||
rs = &(dfs->dfs_radar[i]);
|
|
||||||
/* Found one, set channel info and default thresholds.*/
|
|
||||||
rs->rs_chan = *cmp_ch;
|
|
||||||
|
|
||||||
/* Copy the parameters from the default set. */
|
|
||||||
dfs_phyerr_param_copy(&rs->rs_param,
|
|
||||||
&dfs->dfs_defaultparams);
|
|
||||||
|
|
||||||
if (index)
|
|
||||||
*index = (uint8_t)i;
|
|
||||||
|
|
||||||
return rs;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
dfs_debug(dfs, WLAN_DEBUG_DFS2, "No more radar states left.");
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_CHAN_FREQ_API
|
#ifdef CONFIG_CHAN_FREQ_API
|
||||||
@@ -295,99 +224,6 @@ void dfs_radar_enable(struct wlan_dfs *dfs, int no_cac, uint32_t opmode)
|
|||||||
"No more radar states left");
|
"No more radar states left");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
#ifdef CONFIG_CHAN_NUM_API
|
|
||||||
void dfs_radar_enable(struct wlan_dfs *dfs, int no_cac, uint32_t opmode)
|
|
||||||
{
|
|
||||||
int is_ext_ch;
|
|
||||||
int is_fastclk = 0;
|
|
||||||
struct dfs_channel *ext_ch, extchan;
|
|
||||||
QDF_STATUS err = QDF_STATUS_E_FAILURE;
|
|
||||||
|
|
||||||
if (!dfs) {
|
|
||||||
dfs_err(dfs, WLAN_DEBUG_DFS_ALWAYS, "dfs is NULL");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
is_ext_ch = WLAN_IS_CHAN_11N_HT40(dfs->dfs_curchan);
|
|
||||||
lmac_dfs_disable(dfs->dfs_pdev_obj, no_cac);
|
|
||||||
/*
|
|
||||||
* In all modes, if the primary is DFS then we have to
|
|
||||||
* enable radar detection. In HT80_80, we can have
|
|
||||||
* primary non-DFS 80MHz with extension 80MHz DFS.
|
|
||||||
*/
|
|
||||||
if ((WLAN_IS_CHAN_DFS(dfs->dfs_curchan) ||
|
|
||||||
((WLAN_IS_CHAN_11AC_VHT160(dfs->dfs_curchan) ||
|
|
||||||
WLAN_IS_CHAN_11AC_VHT80_80(dfs->dfs_curchan))
|
|
||||||
&&
|
|
||||||
WLAN_IS_CHAN_DFS_CFREQ2(dfs->dfs_curchan))) ||
|
|
||||||
(dfs_is_precac_timer_running(dfs))) {
|
|
||||||
struct dfs_state *rs_pri = NULL, *rs_ext = NULL;
|
|
||||||
uint8_t index_pri, index_ext;
|
|
||||||
|
|
||||||
dfs->dfs_proc_phyerr |= DFS_AR_EN;
|
|
||||||
dfs->dfs_proc_phyerr |= DFS_RADAR_EN;
|
|
||||||
dfs->dfs_proc_phyerr |= DFS_SECOND_SEGMENT_RADAR_EN;
|
|
||||||
|
|
||||||
ext_ch = &extchan;
|
|
||||||
if (is_ext_ch)
|
|
||||||
err = dfs_mlme_get_extchan(dfs->dfs_pdev_obj,
|
|
||||||
&(ext_ch->dfs_ch_freq),
|
|
||||||
&(ext_ch->dfs_ch_flags),
|
|
||||||
&(ext_ch->dfs_ch_flagext),
|
|
||||||
&(ext_ch->dfs_ch_ieee),
|
|
||||||
&(ext_ch->dfs_ch_vhtop_ch_freq_seg1),
|
|
||||||
&(ext_ch->dfs_ch_vhtop_ch_freq_seg2));
|
|
||||||
|
|
||||||
|
|
||||||
dfs_reset_alldelaylines(dfs);
|
|
||||||
|
|
||||||
rs_pri = dfs_getchanstate(dfs, &index_pri, 0);
|
|
||||||
if (err == QDF_STATUS_SUCCESS)
|
|
||||||
rs_ext = dfs_getchanstate(dfs, &index_ext, 1);
|
|
||||||
|
|
||||||
if (rs_pri && ((err == QDF_STATUS_E_FAILURE) ||
|
|
||||||
(rs_ext))) {
|
|
||||||
struct wlan_dfs_phyerr_param pe;
|
|
||||||
|
|
||||||
qdf_mem_set(&pe, sizeof(pe), '\0');
|
|
||||||
|
|
||||||
if (index_pri != dfs->dfs_curchan_radindex)
|
|
||||||
dfs_reset_alldelaylines(dfs);
|
|
||||||
|
|
||||||
dfs->dfs_curchan_radindex = (int16_t)index_pri;
|
|
||||||
|
|
||||||
if (rs_ext)
|
|
||||||
dfs->dfs_extchan_radindex = (int16_t)index_ext;
|
|
||||||
|
|
||||||
dfs_phyerr_param_copy(&pe, &rs_pri->rs_param);
|
|
||||||
dfs_debug(dfs, WLAN_DEBUG_DFS3,
|
|
||||||
"firpwr=%d, rssi=%d, height=%d, prssi=%d, inband=%d, relpwr=%d, relstep=%d, maxlen=%d",
|
|
||||||
pe.pe_firpwr,
|
|
||||||
pe.pe_rrssi, pe.pe_height,
|
|
||||||
pe.pe_prssi, pe.pe_inband,
|
|
||||||
pe.pe_relpwr, pe.pe_relstep,
|
|
||||||
pe.pe_maxlen);
|
|
||||||
|
|
||||||
lmac_dfs_enable(dfs->dfs_pdev_obj, &is_fastclk,
|
|
||||||
&pe, dfs->dfsdomain);
|
|
||||||
dfs_debug(dfs, WLAN_DEBUG_DFS,
|
|
||||||
"Enabled radar detection on channel %d",
|
|
||||||
dfs->dfs_curchan->dfs_ch_freq);
|
|
||||||
|
|
||||||
dfs->dur_multiplier = is_fastclk ?
|
|
||||||
DFS_FAST_CLOCK_MULTIPLIER :
|
|
||||||
DFS_NO_FAST_CLOCK_MULTIPLIER;
|
|
||||||
|
|
||||||
dfs_debug(dfs, WLAN_DEBUG_DFS3,
|
|
||||||
"duration multiplier is %d",
|
|
||||||
dfs->dur_multiplier);
|
|
||||||
} else
|
|
||||||
dfs_debug(dfs, WLAN_DEBUG_DFS,
|
|
||||||
"No more radar states left");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int dfs_set_thresholds(struct wlan_dfs *dfs, const uint32_t threshtype,
|
int dfs_set_thresholds(struct wlan_dfs *dfs, const uint32_t threshtype,
|
||||||
|
@@ -142,28 +142,6 @@ static os_timer_func(dfs_testtimer_task)
|
|||||||
dfs->dfs_curchan->dfs_ch_mhz_freq_seg2,
|
dfs->dfs_curchan->dfs_ch_mhz_freq_seg2,
|
||||||
dfs->dfs_curchan->dfs_ch_flags);
|
dfs->dfs_curchan->dfs_ch_flags);
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
#ifdef CONFIG_CHAN_NUM_API
|
|
||||||
static os_timer_func(dfs_testtimer_task)
|
|
||||||
{
|
|
||||||
struct wlan_dfs *dfs = NULL;
|
|
||||||
|
|
||||||
OS_GET_TIMER_ARG(dfs, struct wlan_dfs *);
|
|
||||||
dfs->wlan_dfstest = 0;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Flip the channel back to the original channel.
|
|
||||||
* Make sure this is done properly with a CSA.
|
|
||||||
*/
|
|
||||||
dfs_debug(dfs, WLAN_DEBUG_DFS_ALWAYS, "go back to channel %d",
|
|
||||||
dfs->wlan_dfstest_ieeechan);
|
|
||||||
dfs_mlme_start_csa(dfs->dfs_pdev_obj,
|
|
||||||
dfs->wlan_dfstest_ieeechan,
|
|
||||||
dfs->dfs_curchan->dfs_ch_freq,
|
|
||||||
dfs->dfs_curchan->dfs_ch_vhtop_ch_freq_seg2,
|
|
||||||
dfs->dfs_curchan->dfs_ch_flags);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int dfs_get_debug_info(struct wlan_dfs *dfs, void *data)
|
int dfs_get_debug_info(struct wlan_dfs *dfs, void *data)
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-2020 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.
|
||||||
*
|
*
|
||||||
@@ -155,74 +155,6 @@ static os_timer_func(dfs_cac_timeout)
|
|||||||
else
|
else
|
||||||
dfs_process_cac_completion(dfs);
|
dfs_process_cac_completion(dfs);
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
#ifdef CONFIG_CHAN_NUM_API
|
|
||||||
static os_timer_func(dfs_cac_timeout)
|
|
||||||
{
|
|
||||||
struct wlan_dfs *dfs = NULL;
|
|
||||||
enum phy_ch_width ch_width = CH_WIDTH_INVALID;
|
|
||||||
uint8_t primary_chan_ieee = 0, secondary_chan_ieee = 0;
|
|
||||||
|
|
||||||
OS_GET_TIMER_ARG(dfs, struct wlan_dfs *);
|
|
||||||
dfs->dfs_cac_timer_running = 0;
|
|
||||||
|
|
||||||
dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS, "cac expired, chan %d curr time %d",
|
|
||||||
dfs->dfs_curchan->dfs_ch_freq,
|
|
||||||
(qdf_system_ticks_to_msecs(qdf_system_ticks()) / 1000));
|
|
||||||
|
|
||||||
/*
|
|
||||||
* When radar is detected during a CAC we are woken up prematurely to
|
|
||||||
* switch to a new channel. Check the channel to decide how to act.
|
|
||||||
*/
|
|
||||||
if (WLAN_IS_CHAN_RADAR(dfs, dfs->dfs_curchan)) {
|
|
||||||
dfs_mlme_mark_dfs(dfs->dfs_pdev_obj,
|
|
||||||
dfs->dfs_curchan->dfs_ch_ieee,
|
|
||||||
dfs->dfs_curchan->dfs_ch_freq,
|
|
||||||
dfs->dfs_curchan->dfs_ch_vhtop_ch_freq_seg2,
|
|
||||||
dfs->dfs_curchan->dfs_ch_flags);
|
|
||||||
dfs_debug(dfs, WLAN_DEBUG_DFS,
|
|
||||||
"CAC timer on channel %u (%u MHz) stopped due to radar",
|
|
||||||
dfs->dfs_curchan->dfs_ch_ieee,
|
|
||||||
dfs->dfs_curchan->dfs_ch_freq);
|
|
||||||
} else {
|
|
||||||
dfs_debug(dfs, WLAN_DEBUG_DFS,
|
|
||||||
"CAC timer on channel %u (%u MHz) expired; no radar detected",
|
|
||||||
dfs->dfs_curchan->dfs_ch_ieee,
|
|
||||||
dfs->dfs_curchan->dfs_ch_freq);
|
|
||||||
|
|
||||||
/* On CAC completion, set the bit 'cac_valid'.
|
|
||||||
* CAC will not be re-done if this bit is reset.
|
|
||||||
* The flag will be reset when dfs_cac_valid_timer
|
|
||||||
* timesout.
|
|
||||||
*/
|
|
||||||
if (dfs->dfs_cac_valid_time) {
|
|
||||||
dfs->dfs_cac_valid = 1;
|
|
||||||
qdf_timer_mod(&dfs->dfs_cac_valid_timer,
|
|
||||||
dfs->dfs_cac_valid_time * 1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
dfs_find_chwidth_and_center_chan(dfs,
|
|
||||||
&ch_width,
|
|
||||||
&primary_chan_ieee,
|
|
||||||
&secondary_chan_ieee);
|
|
||||||
/* Mark the current channel as preCAC done */
|
|
||||||
dfs_mark_precac_done(dfs, primary_chan_ieee,
|
|
||||||
secondary_chan_ieee, ch_width);
|
|
||||||
}
|
|
||||||
|
|
||||||
dfs_clear_cac_started_chan(dfs);
|
|
||||||
/* Iterate over the nodes, processing the CAC completion event. */
|
|
||||||
dfs_mlme_proc_cac(dfs->dfs_pdev_obj, 0);
|
|
||||||
|
|
||||||
/* Send a CAC timeout, VAP up event to user space */
|
|
||||||
dfs_mlme_deliver_event_up_after_cac(dfs->dfs_pdev_obj);
|
|
||||||
|
|
||||||
if (dfs->dfs_defer_precac_channel_change == 1) {
|
|
||||||
dfs_mlme_channel_change_by_precac(dfs->dfs_pdev_obj);
|
|
||||||
dfs->dfs_defer_precac_channel_change = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef QCA_SUPPORT_DFS_CAC
|
#ifdef QCA_SUPPORT_DFS_CAC
|
||||||
|
@@ -112,62 +112,6 @@ static os_timer_func(dfs_nol_timeout)
|
|||||||
qdf_system_ticks_to_msecs(qdf_system_ticks()));
|
qdf_system_ticks_to_msecs(qdf_system_ticks()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
#ifdef CONFIG_CHAN_NUM_API
|
|
||||||
static os_timer_func(dfs_nol_timeout)
|
|
||||||
{
|
|
||||||
struct dfs_channel *c = NULL, lc;
|
|
||||||
unsigned long oldest, now;
|
|
||||||
struct wlan_dfs *dfs = NULL;
|
|
||||||
int i;
|
|
||||||
int nchans = 0;
|
|
||||||
|
|
||||||
c = &lc;
|
|
||||||
|
|
||||||
OS_GET_TIMER_ARG(dfs, struct wlan_dfs *);
|
|
||||||
dfs_mlme_get_dfs_ch_nchans(dfs->dfs_pdev_obj, &nchans);
|
|
||||||
|
|
||||||
now = oldest = qdf_system_ticks();
|
|
||||||
for (i = 0; i < nchans; i++) {
|
|
||||||
dfs_mlme_get_dfs_ch_channels(dfs->dfs_pdev_obj,
|
|
||||||
&(c->dfs_ch_freq),
|
|
||||||
&(c->dfs_ch_flags),
|
|
||||||
&(c->dfs_ch_flagext),
|
|
||||||
&(c->dfs_ch_ieee),
|
|
||||||
&(c->dfs_ch_vhtop_ch_freq_seg1),
|
|
||||||
&(c->dfs_ch_vhtop_ch_freq_seg2),
|
|
||||||
i);
|
|
||||||
if (WLAN_IS_CHAN_RADAR(dfs, c)) {
|
|
||||||
if (qdf_system_time_after_eq(now,
|
|
||||||
dfs->dfs_nol_event[i] +
|
|
||||||
dfs_get_nol_timeout(dfs))) {
|
|
||||||
c->dfs_ch_flagext &=
|
|
||||||
~WLAN_CHAN_DFS_RADAR_FOUND;
|
|
||||||
if (c->dfs_ch_flags &
|
|
||||||
WLAN_CHAN_DFS_RADAR) {
|
|
||||||
/*
|
|
||||||
* NB: do this here so we get only one
|
|
||||||
* msg instead of one for every channel
|
|
||||||
* table entry.
|
|
||||||
*/
|
|
||||||
dfs_debug(dfs, WLAN_DEBUG_DFS,
|
|
||||||
"radar on channel %u (%u MHz) cleared after timeout",
|
|
||||||
|
|
||||||
c->dfs_ch_ieee,
|
|
||||||
c->dfs_ch_freq);
|
|
||||||
}
|
|
||||||
} else if (dfs->dfs_nol_event[i] < oldest)
|
|
||||||
oldest = dfs->dfs_nol_event[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (oldest != now) {
|
|
||||||
/* Arrange to process next channel up for a status change. */
|
|
||||||
qdf_timer_mod(&dfs->dfs_nol_timer,
|
|
||||||
dfs_get_nol_timeout(dfs) -
|
|
||||||
qdf_system_ticks_to_msecs(qdf_system_ticks()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -348,40 +292,6 @@ static os_timer_func(dfs_remove_from_nol)
|
|||||||
utils_dfs_agile_sm_deliver_evt(dfs->dfs_pdev_obj,
|
utils_dfs_agile_sm_deliver_evt(dfs->dfs_pdev_obj,
|
||||||
DFS_AGILE_SM_EV_AGILE_START);
|
DFS_AGILE_SM_EV_AGILE_START);
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
#ifdef CONFIG_CHAN_NUM_API
|
|
||||||
static os_timer_func(dfs_remove_from_nol)
|
|
||||||
{
|
|
||||||
struct dfs_nolelem *nol_arg;
|
|
||||||
struct wlan_dfs *dfs;
|
|
||||||
uint16_t delfreq;
|
|
||||||
uint16_t delchwidth;
|
|
||||||
uint8_t chan;
|
|
||||||
|
|
||||||
OS_GET_TIMER_ARG(nol_arg, struct dfs_nolelem *);
|
|
||||||
|
|
||||||
dfs = nol_arg->nol_dfs;
|
|
||||||
delfreq = nol_arg->nol_freq;
|
|
||||||
delchwidth = nol_arg->nol_chwidth;
|
|
||||||
|
|
||||||
/* Delete the given NOL entry. */
|
|
||||||
DFS_NOL_DELETE_CHAN_LOCKED(dfs, delfreq, delchwidth);
|
|
||||||
|
|
||||||
/* Update the wireless stack with the new NOL. */
|
|
||||||
dfs_nol_update(dfs);
|
|
||||||
|
|
||||||
dfs_mlme_nol_timeout_notification(dfs->dfs_pdev_obj);
|
|
||||||
chan = utils_dfs_freq_to_chan(delfreq);
|
|
||||||
utils_dfs_deliver_event(dfs->dfs_pdev_obj, delfreq,
|
|
||||||
WLAN_EV_NOL_FINISHED);
|
|
||||||
dfs_debug(dfs, WLAN_DEBUG_DFS_NOL,
|
|
||||||
"remove channel %d from nol", chan);
|
|
||||||
utils_dfs_unmark_precac_nol(dfs->dfs_pdev_obj, chan);
|
|
||||||
utils_dfs_reg_update_nol_ch(dfs->dfs_pdev_obj,
|
|
||||||
&chan, 1, DFS_NOL_RESET);
|
|
||||||
utils_dfs_save_nol(dfs->dfs_pdev_obj);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void dfs_print_nol(struct wlan_dfs *dfs)
|
void dfs_print_nol(struct wlan_dfs *dfs)
|
||||||
@@ -825,69 +735,6 @@ void dfs_clear_nolhistory(struct wlan_dfs *dfs)
|
|||||||
qdf_mem_free(chan_list);
|
qdf_mem_free(chan_list);
|
||||||
qdf_mem_free(nol_freq_list);
|
qdf_mem_free(nol_freq_list);
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
#ifdef CONFIG_CHAN_NUM_API
|
|
||||||
void dfs_clear_nolhistory(struct wlan_dfs *dfs)
|
|
||||||
{
|
|
||||||
struct dfs_channel *chan_list;
|
|
||||||
int nchans;
|
|
||||||
bool sta_opmode;
|
|
||||||
int i;
|
|
||||||
uint8_t *nol_chan_ieee_list = NULL;
|
|
||||||
int num_nol_history_chans;
|
|
||||||
|
|
||||||
if (!dfs->dfs_is_stadfs_enabled)
|
|
||||||
return;
|
|
||||||
|
|
||||||
sta_opmode = dfs_mlme_is_opmode_sta(dfs->dfs_pdev_obj);
|
|
||||||
if (!sta_opmode)
|
|
||||||
return;
|
|
||||||
|
|
||||||
nchans = dfs_get_num_chans();
|
|
||||||
|
|
||||||
if (!nchans) {
|
|
||||||
dfs_err(dfs, WLAN_DEBUG_DFS_ALWAYS, "zero chans");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
chan_list = qdf_mem_malloc(nchans * sizeof(*chan_list));
|
|
||||||
if (!chan_list)
|
|
||||||
return;
|
|
||||||
|
|
||||||
utils_dfs_get_nol_history_chan_list(dfs->dfs_pdev_obj,
|
|
||||||
(void *)chan_list,
|
|
||||||
&num_nol_history_chans);
|
|
||||||
|
|
||||||
if (!num_nol_history_chans) {
|
|
||||||
dfs_err(dfs, WLAN_DEBUG_DFS_ALWAYS, "zero chans");
|
|
||||||
qdf_mem_free(chan_list);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (num_nol_history_chans > nchans)
|
|
||||||
num_nol_history_chans = nchans;
|
|
||||||
|
|
||||||
nol_chan_ieee_list =
|
|
||||||
qdf_mem_malloc(num_nol_history_chans * sizeof(uint8_t));
|
|
||||||
|
|
||||||
if (!nol_chan_ieee_list) {
|
|
||||||
dfs_err(dfs, WLAN_DEBUG_DFS_ALWAYS, "Unable to alloc memory for ieee list");
|
|
||||||
qdf_mem_free(chan_list);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0; i < num_nol_history_chans; i++)
|
|
||||||
nol_chan_ieee_list[i] = chan_list[i].dfs_ch_ieee;
|
|
||||||
|
|
||||||
utils_dfs_reg_update_nol_history_ch(dfs->dfs_pdev_obj,
|
|
||||||
nol_chan_ieee_list,
|
|
||||||
num_nol_history_chans,
|
|
||||||
DFS_NOL_HISTORY_RESET);
|
|
||||||
|
|
||||||
qdf_mem_free(chan_list);
|
|
||||||
qdf_mem_free(nol_chan_ieee_list);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@@ -65,22 +65,6 @@ dfs_mlme_proc_spoof_success(struct wlan_objmgr_pdev *pdev)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
|
||||||
* dfs_mlme_start_csa() - Sends CSA in ieeeChan
|
|
||||||
* @pdev: Pointer to DFS pdev object.
|
|
||||||
* @ieee_chan: Channel number.
|
|
||||||
* @freq: Channel frequency.
|
|
||||||
* @cfreq2: HT80 cfreq2.
|
|
||||||
* @flags: channel flags.
|
|
||||||
*/
|
|
||||||
#ifdef CONFIG_CHAN_NUM_API
|
|
||||||
void dfs_mlme_start_csa(struct wlan_objmgr_pdev *pdev,
|
|
||||||
uint8_t ieee_chan,
|
|
||||||
uint16_t freq,
|
|
||||||
uint8_t cfreq2,
|
|
||||||
uint64_t flags);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* dfs_mlme_start_csa_for_freq() - Sends CSA in ieeeChan
|
* dfs_mlme_start_csa_for_freq() - Sends CSA in ieeeChan
|
||||||
* @pdev: Pointer to DFS pdev object.
|
* @pdev: Pointer to DFS pdev object.
|
||||||
@@ -117,27 +101,6 @@ void dfs_mlme_deliver_event_up_after_cac(struct wlan_objmgr_pdev *pdev);
|
|||||||
*/
|
*/
|
||||||
void dfs_mlme_get_dfs_ch_nchans(struct wlan_objmgr_pdev *pdev, int *nchans);
|
void dfs_mlme_get_dfs_ch_nchans(struct wlan_objmgr_pdev *pdev, int *nchans);
|
||||||
|
|
||||||
/**
|
|
||||||
* dfs_mlme_get_extchan() - Get extension channel.
|
|
||||||
* @pdev: Pointer to DFS pdev object.
|
|
||||||
* @dfs_ch_freq: Frequency in Mhz.
|
|
||||||
* @dfs_ch_flags: Channel flags.
|
|
||||||
* @dfs_ch_flagext: Extended channel flags.
|
|
||||||
* @dfs_ch_ieee: IEEE channel number.
|
|
||||||
* @dfs_ch_vhtop_ch_freq_seg1: Channel Center frequency.
|
|
||||||
* @dfs_ch_vhtop_ch_freq_seg2: Channel Center frequency applicable for 80+80MHz
|
|
||||||
* mode of operation.
|
|
||||||
*/
|
|
||||||
#ifdef CONFIG_CHAN_NUM_API
|
|
||||||
QDF_STATUS dfs_mlme_get_extchan(struct wlan_objmgr_pdev *pdev,
|
|
||||||
uint16_t *dfs_ch_freq,
|
|
||||||
uint64_t *dfs_ch_flags,
|
|
||||||
uint16_t *dfs_ch_flagext,
|
|
||||||
uint8_t *dfs_ch_ieee,
|
|
||||||
uint8_t *dfs_ch_vhtop_ch_freq_seg1,
|
|
||||||
uint8_t *dfs_ch_vhtop_ch_freq_seg2);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* dfs_mlme_get_extchan() - Get extension channel.
|
* dfs_mlme_get_extchan() - Get extension channel.
|
||||||
* @pdev: Pointer to DFS pdev object.
|
* @pdev: Pointer to DFS pdev object.
|
||||||
|
@@ -36,13 +36,11 @@
|
|||||||
* @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.
|
* @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_start_csa: Sends CSA.
|
|
||||||
* @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_dfs_ch_nchans: Get number of channels in the channel
|
* @mlme_get_dfs_ch_nchans: Get number of channels in the channel
|
||||||
* list.
|
* list.
|
||||||
* @mlme_get_extchan: Gets 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_channel: Find dot11 channel.
|
* @mlme_find_dot11_channel: Find dot11 channel.
|
||||||
@@ -95,11 +93,6 @@ struct dfs_to_mlme {
|
|||||||
uint16_t freq,
|
uint16_t freq,
|
||||||
uint16_t vhtop_ch_freq_seg2,
|
uint16_t vhtop_ch_freq_seg2,
|
||||||
uint64_t flags);
|
uint64_t flags);
|
||||||
#ifdef CONFIG_CHAN_NUM_API
|
|
||||||
QDF_STATUS (*mlme_start_csa)(struct wlan_objmgr_pdev *pdev,
|
|
||||||
uint8_t ieee_chan, uint16_t freq,
|
|
||||||
uint8_t cfreq2, uint64_t flags);
|
|
||||||
#endif
|
|
||||||
#ifdef CONFIG_CHAN_FREQ_API
|
#ifdef CONFIG_CHAN_FREQ_API
|
||||||
QDF_STATUS (*mlme_start_csa_for_freq)(struct wlan_objmgr_pdev *pdev,
|
QDF_STATUS (*mlme_start_csa_for_freq)(struct wlan_objmgr_pdev *pdev,
|
||||||
uint8_t ieee_chan, uint16_t freq,
|
uint8_t ieee_chan, uint16_t freq,
|
||||||
@@ -111,15 +104,6 @@ struct dfs_to_mlme {
|
|||||||
struct wlan_objmgr_pdev *pdev);
|
struct wlan_objmgr_pdev *pdev);
|
||||||
QDF_STATUS (*mlme_get_dfs_ch_nchans)(struct wlan_objmgr_pdev *pdev,
|
QDF_STATUS (*mlme_get_dfs_ch_nchans)(struct wlan_objmgr_pdev *pdev,
|
||||||
int *nchans);
|
int *nchans);
|
||||||
#ifdef CONFIG_CHAN_NUM_API
|
|
||||||
QDF_STATUS (*mlme_get_extchan)(struct wlan_objmgr_pdev *pdev,
|
|
||||||
uint16_t *dfs_ch_freq,
|
|
||||||
uint64_t *dfs_ch_flags,
|
|
||||||
uint16_t *dfs_ch_flagext,
|
|
||||||
uint8_t *dfs_ch_ieee,
|
|
||||||
uint8_t *dfs_ch_vhtop_ch_freq_seg1,
|
|
||||||
uint8_t *dfs_ch_vhtop_ch_freq_seg2);
|
|
||||||
#endif
|
|
||||||
#ifdef CONFIG_CHAN_FREQ_API
|
#ifdef CONFIG_CHAN_FREQ_API
|
||||||
QDF_STATUS (*mlme_get_extchan_for_freq)(struct wlan_objmgr_pdev *pdev,
|
QDF_STATUS (*mlme_get_extchan_for_freq)(struct wlan_objmgr_pdev *pdev,
|
||||||
uint16_t *dfs_ch_freq,
|
uint16_t *dfs_ch_freq,
|
||||||
|
@@ -140,17 +140,6 @@ bool utils_dfs_is_freq_in_nol(struct wlan_objmgr_pdev *pdev, uint32_t freq);
|
|||||||
*/
|
*/
|
||||||
QDF_STATUS utils_dfs_reset_precaclists(struct wlan_objmgr_pdev *pdev);
|
QDF_STATUS utils_dfs_reset_precaclists(struct wlan_objmgr_pdev *pdev);
|
||||||
|
|
||||||
/**
|
|
||||||
* utils_dfs_unmark_precac_nol() - Clears precac channel marked as NOL.
|
|
||||||
* @pdev: Pointer to DFS pdev object.
|
|
||||||
* @chan: channel to be unmarked as NOL.
|
|
||||||
*
|
|
||||||
* Return void.
|
|
||||||
*/
|
|
||||||
#ifdef CONFIG_CHAN_NUM_API
|
|
||||||
void utils_dfs_unmark_precac_nol(struct wlan_objmgr_pdev *pdev, uint8_t chan);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* utils_dfs_unmark_precac_nol_for_freq() - Clears precac channel marked as NOL.
|
* utils_dfs_unmark_precac_nol_for_freq() - Clears precac channel marked as NOL.
|
||||||
* @pdev: Pointer to DFS pdev object.
|
* @pdev: Pointer to DFS pdev object.
|
||||||
|
@@ -103,16 +103,6 @@ void dfs_mlme_mark_dfs(struct wlan_objmgr_pdev *pdev,
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef QCA_MCL_DFS_SUPPORT
|
#ifndef QCA_MCL_DFS_SUPPORT
|
||||||
#ifdef CONFIG_CHAN_NUM_API
|
|
||||||
void dfs_mlme_start_csa(struct wlan_objmgr_pdev *pdev,
|
|
||||||
uint8_t ieee_chan, uint16_t freq,
|
|
||||||
uint8_t cfreq2, uint64_t flags)
|
|
||||||
{
|
|
||||||
if (global_dfs_to_mlme.mlme_start_csa)
|
|
||||||
global_dfs_to_mlme.mlme_start_csa(pdev, ieee_chan, freq, cfreq2,
|
|
||||||
flags);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#ifdef CONFIG_CHAN_FREQ_API
|
#ifdef CONFIG_CHAN_FREQ_API
|
||||||
void dfs_mlme_start_csa_for_freq(struct wlan_objmgr_pdev *pdev,
|
void dfs_mlme_start_csa_for_freq(struct wlan_objmgr_pdev *pdev,
|
||||||
uint8_t ieee_chan, uint16_t freq,
|
uint8_t ieee_chan, uint16_t freq,
|
||||||
@@ -124,26 +114,6 @@ void dfs_mlme_start_csa_for_freq(struct wlan_objmgr_pdev *pdev,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#else
|
#else
|
||||||
#ifdef CONFIG_CHAN_NUM_API
|
|
||||||
void dfs_mlme_start_csa(struct wlan_objmgr_pdev *pdev,
|
|
||||||
uint8_t ieee_chan, uint16_t freq,
|
|
||||||
uint8_t cfreq2, uint64_t flags)
|
|
||||||
{
|
|
||||||
struct wlan_objmgr_vdev *vdev;
|
|
||||||
|
|
||||||
if (!pdev) {
|
|
||||||
dfs_err(NULL, WLAN_DEBUG_DFS_ALWAYS, "null pdev");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
vdev = wlan_pdev_peek_active_first_vdev(pdev, WLAN_DFS_ID);
|
|
||||||
|
|
||||||
if (vdev) {
|
|
||||||
dfs_send_radar_ind(pdev, vdev, NULL);
|
|
||||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_DFS_ID);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#ifdef CONFIG_CHAN_FREQ_API
|
#ifdef CONFIG_CHAN_FREQ_API
|
||||||
void dfs_mlme_start_csa_for_freq(struct wlan_objmgr_pdev *pdev,
|
void dfs_mlme_start_csa_for_freq(struct wlan_objmgr_pdev *pdev,
|
||||||
uint8_t ieee_chan, uint16_t freq,
|
uint8_t ieee_chan, uint16_t freq,
|
||||||
@@ -203,28 +173,6 @@ void dfs_mlme_get_dfs_ch_nchans(struct wlan_objmgr_pdev *pdev,
|
|||||||
nchans);
|
nchans);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_CHAN_NUM_API
|
|
||||||
QDF_STATUS dfs_mlme_get_extchan(struct wlan_objmgr_pdev *pdev,
|
|
||||||
uint16_t *dfs_ch_freq,
|
|
||||||
uint64_t *dfs_ch_flags,
|
|
||||||
uint16_t *dfs_ch_flagext,
|
|
||||||
uint8_t *dfs_ch_ieee,
|
|
||||||
uint8_t *dfs_ch_vhtop_ch_freq_seg1,
|
|
||||||
uint8_t *dfs_ch_vhtop_ch_freq_seg2)
|
|
||||||
{
|
|
||||||
if (global_dfs_to_mlme.mlme_get_extchan)
|
|
||||||
return global_dfs_to_mlme.mlme_get_extchan(pdev,
|
|
||||||
dfs_ch_freq,
|
|
||||||
dfs_ch_flags,
|
|
||||||
dfs_ch_flagext,
|
|
||||||
dfs_ch_ieee,
|
|
||||||
dfs_ch_vhtop_ch_freq_seg1,
|
|
||||||
dfs_ch_vhtop_ch_freq_seg2);
|
|
||||||
|
|
||||||
return QDF_STATUS_E_FAILURE;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_CHAN_FREQ_API
|
#ifdef CONFIG_CHAN_FREQ_API
|
||||||
QDF_STATUS dfs_mlme_get_extchan_for_freq(struct wlan_objmgr_pdev *pdev,
|
QDF_STATUS dfs_mlme_get_extchan_for_freq(struct wlan_objmgr_pdev *pdev,
|
||||||
uint16_t *dfs_chan_freq,
|
uint16_t *dfs_chan_freq,
|
||||||
|
@@ -104,21 +104,6 @@ QDF_STATUS utils_dfs_reset_precaclists(struct wlan_objmgr_pdev *pdev)
|
|||||||
}
|
}
|
||||||
qdf_export_symbol(utils_dfs_reset_precaclists);
|
qdf_export_symbol(utils_dfs_reset_precaclists);
|
||||||
|
|
||||||
#ifdef CONFIG_CHAN_NUM_API
|
|
||||||
void utils_dfs_unmark_precac_nol(struct wlan_objmgr_pdev *pdev, uint8_t chan)
|
|
||||||
{
|
|
||||||
struct wlan_dfs *dfs;
|
|
||||||
|
|
||||||
dfs = wlan_pdev_get_dfs_obj(pdev);
|
|
||||||
if (!dfs)
|
|
||||||
return;
|
|
||||||
|
|
||||||
dfs_unmark_precac_nol(dfs, chan);
|
|
||||||
}
|
|
||||||
|
|
||||||
qdf_export_symbol(utils_dfs_unmark_precac_nol);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_CHAN_FREQ_API
|
#ifdef CONFIG_CHAN_FREQ_API
|
||||||
void utils_dfs_unmark_precac_nol_for_freq(struct wlan_objmgr_pdev *pdev,
|
void utils_dfs_unmark_precac_nol_for_freq(struct wlan_objmgr_pdev *pdev,
|
||||||
uint16_t chan_freq)
|
uint16_t chan_freq)
|
||||||
@@ -284,19 +269,6 @@ static void dfs_fill_chan_info(struct dfs_channel *chan,
|
|||||||
chan->dfs_ch_mhz_freq_seg1 = wlan_chan->ch_cfreq1;
|
chan->dfs_ch_mhz_freq_seg1 = wlan_chan->ch_cfreq1;
|
||||||
chan->dfs_ch_mhz_freq_seg2 = wlan_chan->ch_cfreq2;
|
chan->dfs_ch_mhz_freq_seg2 = wlan_chan->ch_cfreq2;
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
#ifdef CONFIG_CHAN_NUM_API
|
|
||||||
static void dfs_fill_chan_info(struct dfs_channel *chan,
|
|
||||||
struct wlan_channel *wlan_chan)
|
|
||||||
{
|
|
||||||
chan->dfs_ch_freq = wlan_chan->ch_freq;
|
|
||||||
chan->dfs_ch_flags = wlan_chan->ch_flags;
|
|
||||||
chan->dfs_ch_flagext = wlan_chan->ch_flagext;
|
|
||||||
chan->dfs_ch_ieee = wlan_chan->ch_ieee;
|
|
||||||
chan->dfs_ch_vhtop_ch_freq_seg1 = wlan_chan->ch_freq_seg1;
|
|
||||||
chan->dfs_ch_vhtop_ch_freq_seg2 = wlan_chan->ch_freq_seg2;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
bool utils_dfs_is_precac_done(struct wlan_objmgr_pdev *pdev,
|
bool utils_dfs_is_precac_done(struct wlan_objmgr_pdev *pdev,
|
||||||
@@ -786,74 +758,7 @@ static void utils_dfs_get_channel_list(struct wlan_objmgr_pdev *pdev,
|
|||||||
|
|
||||||
qdf_mem_free(tmp_chan_list);
|
qdf_mem_free(tmp_chan_list);
|
||||||
}
|
}
|
||||||
#else /* NUM_API */
|
|
||||||
#ifdef CONFIG_CHAN_NUM_API
|
|
||||||
static void utils_dfs_get_channel_list(struct wlan_objmgr_pdev *pdev,
|
|
||||||
struct wlan_objmgr_vdev *vdev,
|
|
||||||
struct dfs_channel *chan_list,
|
|
||||||
uint32_t *num_chan)
|
|
||||||
{
|
|
||||||
struct dfs_channel *tmp_chan_list = NULL;
|
|
||||||
struct wlan_dfs *dfs;
|
|
||||||
bool is_curchan_5g;
|
|
||||||
bool is_curchan_24g;
|
|
||||||
bool is_curchan_49g;
|
|
||||||
uint32_t chan_num;
|
|
||||||
uint32_t center_freq;
|
|
||||||
uint16_t flagext;
|
|
||||||
int i, j = 0;
|
|
||||||
|
|
||||||
dfs = wlan_pdev_get_dfs_obj(pdev);
|
|
||||||
if (!dfs) {
|
|
||||||
dfs_err(dfs, WLAN_DEBUG_DFS_ALWAYS, "null dfs");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
tmp_chan_list = qdf_mem_malloc(*num_chan * sizeof(*tmp_chan_list));
|
|
||||||
if (!tmp_chan_list)
|
|
||||||
return;
|
|
||||||
|
|
||||||
utils_dfs_get_chan_list(pdev, (void *)tmp_chan_list, num_chan);
|
|
||||||
|
|
||||||
chan_num = dfs->dfs_curchan->dfs_ch_ieee;
|
|
||||||
center_freq = dfs->dfs_curchan->dfs_ch_freq;
|
|
||||||
is_curchan_5g = WLAN_REG_IS_5GHZ_CH_FREQ(center_freq);
|
|
||||||
is_curchan_24g = WLAN_REG_IS_24GHZ_CH_FREQ(center_freq);
|
|
||||||
is_curchan_49g = WLAN_REG_IS_49GHZ_FREQ(center_freq);
|
|
||||||
|
|
||||||
for (i = 0; i < *num_chan; i++) {
|
|
||||||
chan_num = tmp_chan_list[i].dfs_ch_ieee;
|
|
||||||
center_freq = tmp_chan_list[i].dfs_ch_freq;
|
|
||||||
flagext = tmp_chan_list[i].dfs_ch_flagext;
|
|
||||||
|
|
||||||
if (!dfs_mlme_check_allowed_prim_chanlist(pdev, chan_num))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if ((is_curchan_5g) && WLAN_REG_IS_5GHZ_CH_FREQ(center_freq)) {
|
|
||||||
chan_list[j].dfs_ch_ieee = chan_num;
|
|
||||||
chan_list[j].dfs_ch_freq = center_freq;
|
|
||||||
chan_list[j].dfs_ch_flagext = flagext;
|
|
||||||
j++;
|
|
||||||
} else if ((is_curchan_24g) &&
|
|
||||||
WLAN_REG_IS_24GHZ_CH_FREQ(center_freq)) {
|
|
||||||
chan_list[j].dfs_ch_ieee = chan_num;
|
|
||||||
chan_list[j].dfs_ch_freq = center_freq;
|
|
||||||
j++;
|
|
||||||
} else if ((is_curchan_49g) &&
|
|
||||||
WLAN_REG_IS_49GHZ_FREQ(center_freq)) {
|
|
||||||
chan_list[j].dfs_ch_ieee = chan_num;
|
|
||||||
chan_list[j].dfs_ch_freq = center_freq;
|
|
||||||
j++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
*num_chan = j;
|
|
||||||
|
|
||||||
qdf_mem_free(tmp_chan_list);
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
void utils_dfs_get_nol_history_chan_list(struct wlan_objmgr_pdev *pdev,
|
void utils_dfs_get_nol_history_chan_list(struct wlan_objmgr_pdev *pdev,
|
||||||
void *clist, uint32_t *num_chan)
|
void *clist, uint32_t *num_chan)
|
||||||
|
Reference in New Issue
Block a user