qca-wifi: Move QCA_SUPPORT_DFS_CHAN_POSTNOL to WIN
The macro QCA_SUPPORT_DFS_CHAN_POSTNOL is specific to WIN alone. Therefore move the macro QCA_SUPPORT_DFS_CHAN_POSTNOL and associated code from common-code to Component dev repository. CRs-Fixed: 2829535 Change-Id: I208a499cba1912ddd06c2b43dfcd9fc78732dac9
Este cometimento está contido em:

cometido por
Gerrit - the friendly Code Review server

ascendente
220d421f90
cometimento
48c59f9c03
104
umac/dfs/core/src/dfs_misc.h
Ficheiro normal
104
umac/dfs/core/src/dfs_misc.h
Ficheiro normal
@@ -0,0 +1,104 @@
|
||||
/*
|
||||
* Copyright (c) 2013, 2016-2020 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2005-2006 Atheros Communications, Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
e* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/**
|
||||
* DOC: This file has header files of dfs_misc.c
|
||||
*
|
||||
*/
|
||||
|
||||
#include "dfs.h"
|
||||
#include "wlan_dfs_ucfg_api.h"
|
||||
#include "wlan_lmac_if_def.h"
|
||||
|
||||
#ifdef QCA_SUPPORT_DFS_CHAN_POSTNOL
|
||||
/**
|
||||
* dfs_set_postnol_freq() - DFS API to set postNOL frequency.
|
||||
* @dfs: Pointer to wlan_dfs object.
|
||||
* @postnol_freq: PostNOL frequency value configured by the user.
|
||||
*/
|
||||
void dfs_set_postnol_freq(struct wlan_dfs *dfs, qdf_freq_t postnol_freq);
|
||||
|
||||
/**
|
||||
* dfs_set_postnol_mode() - DFS API to set postNOL mode.
|
||||
* @dfs: Pointer to wlan_dfs object.
|
||||
* @postnol_mode: PostNOL frequency value configured by the user.
|
||||
*/
|
||||
void dfs_set_postnol_mode(struct wlan_dfs *dfs, uint8_t postnol_mode);
|
||||
|
||||
/**
|
||||
* dfs_set_postnol_cfreq2() - DFS API to set postNOL secondary center frequency.
|
||||
* @dfs: Pointer to wlan_dfs object.
|
||||
* @postnol_cfreq2: PostNOL secondary center frequency value configured by the
|
||||
* user.
|
||||
*/
|
||||
void dfs_set_postnol_cfreq2(struct wlan_dfs *dfs, qdf_freq_t postnol_cfreq2);
|
||||
|
||||
/**
|
||||
* dfs_get_postnol_freq() - DFS API to get postNOL frequency.
|
||||
* @dfs: Pointer to wlan_dfs object.
|
||||
* @postnol_freq: PostNOL frequency value configured by the user.
|
||||
*/
|
||||
void dfs_get_postnol_freq(struct wlan_dfs *dfs, qdf_freq_t *postnol_freq);
|
||||
|
||||
/**
|
||||
* dfs_get_postnol_mode() - DFS API to get postNOL mode.
|
||||
* @dfs: Pointer to wlan_dfs object.
|
||||
* @postnol_mode: PostNOL frequency value configured by the user.
|
||||
*/
|
||||
void dfs_get_postnol_mode(struct wlan_dfs *dfs, uint8_t *postnol_mode);
|
||||
|
||||
/**
|
||||
* dfs_get_postnol_cfreq2() - DFS API to get postNOL secondary center frequency.
|
||||
* @dfs: Pointer to wlan_dfs object.
|
||||
* @postnol_cfreq2: PostNOL secondary center frequency value configured by the
|
||||
* user.
|
||||
*/
|
||||
void dfs_get_postnol_cfreq2(struct wlan_dfs *dfs, qdf_freq_t *postnol_cfreq2);
|
||||
#else
|
||||
static inline void
|
||||
dfs_set_postnol_freq(struct wlan_dfs *dfs, qdf_freq_t postnol_freq)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void
|
||||
dfs_set_postnol_mode(struct wlan_dfs *dfs, uint8_t postnol_mode)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void
|
||||
dfs_set_postnol_cfreq2(struct wlan_dfs *dfs, qdf_freq_t postnol_cfreq2)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void
|
||||
dfs_get_postnol_freq(struct wlan_dfs *dfs, qdf_freq_t *postnol_freq)
|
||||
{
|
||||
*postnol_freq = 0;
|
||||
}
|
||||
|
||||
static inline void
|
||||
dfs_get_postnol_mode(struct wlan_dfs *dfs, uint8_t *postnol_mode)
|
||||
{
|
||||
*postnol_mode = CH_WIDTH_INVALID;
|
||||
}
|
||||
|
||||
static inline void
|
||||
dfs_get_postnol_cfreq2(struct wlan_dfs *dfs, qdf_freq_t *postnol_cfreq2)
|
||||
{
|
||||
*postnol_cfreq2 = 0;
|
||||
}
|
||||
#endif /* QCA_SUPPORT_DFS_CHAN_POSTNOL */
|
219
umac/dfs/core/src/misc/dfs_misc.c
Ficheiro normal
219
umac/dfs/core/src/misc/dfs_misc.c
Ficheiro normal
@@ -0,0 +1,219 @@
|
||||
/*
|
||||
* Copyright (c) 2016-2020 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2002-2006, Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/**
|
||||
* DOC: This file contains the miscellanous files
|
||||
*
|
||||
*/
|
||||
|
||||
#include "dfs.h"
|
||||
#include "../dfs_misc.h"
|
||||
#include "dfs_zero_cac.h"
|
||||
#include "wlan_dfs_mlme_api.h"
|
||||
#include "ieee80211_mlme_dfs_interface.h"
|
||||
#include "wlan_dfs_init_deinit_api.h"
|
||||
#include "_ieee80211.h"
|
||||
#include "ieee80211_var.h"
|
||||
#include "ieee80211_mlme_dfs_dispatcher.h"
|
||||
#include "ieee80211_channel.h"
|
||||
#include "wlan_mlme_if.h"
|
||||
#include "dfs_postnol_ucfg.h"
|
||||
|
||||
#if defined(QCA_SUPPORT_DFS_CHAN_POSTNOL)
|
||||
void dfs_postnol_attach(struct wlan_dfs *dfs)
|
||||
{
|
||||
dfs->dfs_chan_postnol_mode = CH_WIDTH_INVALID;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef QCA_SUPPORT_DFS_CHAN_POSTNOL
|
||||
void dfs_set_postnol_freq(struct wlan_dfs *dfs, qdf_freq_t postnol_freq)
|
||||
{
|
||||
dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS,
|
||||
"dfs_chan_postnol_freq configured as %d", postnol_freq);
|
||||
|
||||
dfs->dfs_chan_postnol_freq = postnol_freq;
|
||||
}
|
||||
|
||||
void dfs_set_postnol_mode(struct wlan_dfs *dfs, uint8_t postnol_mode)
|
||||
{
|
||||
if (dfs->dfs_chan_postnol_cfreq2) {
|
||||
dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS,
|
||||
"postNOL cfreq2 has been set,reset it to change mode");
|
||||
return;
|
||||
}
|
||||
|
||||
switch (postnol_mode) {
|
||||
case DFS_CHWIDTH_20_VAL:
|
||||
dfs->dfs_chan_postnol_mode = CH_WIDTH_20MHZ;
|
||||
break;
|
||||
case DFS_CHWIDTH_40_VAL:
|
||||
dfs->dfs_chan_postnol_mode = CH_WIDTH_40MHZ;
|
||||
break;
|
||||
case DFS_CHWIDTH_80_VAL:
|
||||
dfs->dfs_chan_postnol_mode = CH_WIDTH_80MHZ;
|
||||
break;
|
||||
case DFS_CHWIDTH_160_VAL:
|
||||
dfs->dfs_chan_postnol_mode = CH_WIDTH_160MHZ;
|
||||
break;
|
||||
default:
|
||||
dfs_err(dfs, WLAN_DEBUG_DFS_ALWAYS,
|
||||
"Invalid postNOL mode configured");
|
||||
return;
|
||||
}
|
||||
|
||||
dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS,
|
||||
"DFS postnol mode configured as %d",
|
||||
dfs->dfs_chan_postnol_mode);
|
||||
}
|
||||
|
||||
void dfs_set_postnol_cfreq2(struct wlan_dfs *dfs, qdf_freq_t postnol_cfreq2)
|
||||
{
|
||||
dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS,
|
||||
"dfs_chan_postnol_cfreq2 configured as %d", postnol_cfreq2);
|
||||
|
||||
dfs->dfs_chan_postnol_cfreq2 = postnol_cfreq2;
|
||||
|
||||
if (postnol_cfreq2) {
|
||||
dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS,
|
||||
"postNOL cfreq2 is set, changing mode to 80P80");
|
||||
dfs->dfs_chan_postnol_mode = CH_WIDTH_80P80MHZ;
|
||||
}
|
||||
}
|
||||
|
||||
void dfs_get_postnol_freq(struct wlan_dfs *dfs, qdf_freq_t *postnol_freq)
|
||||
{
|
||||
*postnol_freq = dfs->dfs_chan_postnol_freq;
|
||||
}
|
||||
|
||||
void dfs_get_postnol_mode(struct wlan_dfs *dfs, uint8_t *postnol_mode)
|
||||
{
|
||||
*postnol_mode = dfs->dfs_chan_postnol_mode;
|
||||
}
|
||||
|
||||
void dfs_get_postnol_cfreq2(struct wlan_dfs *dfs, qdf_freq_t *postnol_cfreq2)
|
||||
{
|
||||
*postnol_cfreq2 = dfs->dfs_chan_postnol_cfreq2;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef QCA_SUPPORT_DFS_CHAN_POSTNOL
|
||||
bool dfs_switch_to_postnol_chan_if_nol_expired(struct wlan_dfs *dfs)
|
||||
{
|
||||
struct dfs_channel chan;
|
||||
struct dfs_channel *curchan = dfs->dfs_curchan;
|
||||
bool is_curchan_11ac = false, is_curchan_11axa = false;
|
||||
enum wlan_phymode postnol_phymode;
|
||||
|
||||
if (!dfs->dfs_chan_postnol_freq)
|
||||
return false;
|
||||
|
||||
if (WLAN_IS_CHAN_11AC_VHT20(curchan) ||
|
||||
WLAN_IS_CHAN_11AC_VHT40(curchan) ||
|
||||
WLAN_IS_CHAN_11AC_VHT80(curchan) ||
|
||||
WLAN_IS_CHAN_11AC_VHT160(curchan) ||
|
||||
WLAN_IS_CHAN_11AC_VHT80_80(curchan))
|
||||
is_curchan_11ac = true;
|
||||
else if (WLAN_IS_CHAN_11AXA_HE20(curchan) ||
|
||||
WLAN_IS_CHAN_11AXA_HE40PLUS(curchan) ||
|
||||
WLAN_IS_CHAN_11AXA_HE40MINUS(curchan) ||
|
||||
WLAN_IS_CHAN_11AXA_HE80(curchan) ||
|
||||
WLAN_IS_CHAN_11AXA_HE160(curchan) ||
|
||||
WLAN_IS_CHAN_11AXA_HE80_80(curchan))
|
||||
is_curchan_11axa = true;
|
||||
|
||||
switch (dfs->dfs_chan_postnol_mode) {
|
||||
case CH_WIDTH_20MHZ:
|
||||
if (is_curchan_11ac)
|
||||
postnol_phymode = WLAN_PHYMODE_11AC_VHT20;
|
||||
else if (is_curchan_11axa)
|
||||
postnol_phymode = WLAN_PHYMODE_11AXA_HE20;
|
||||
else
|
||||
return false;
|
||||
break;
|
||||
case CH_WIDTH_40MHZ:
|
||||
if (is_curchan_11ac)
|
||||
postnol_phymode = WLAN_PHYMODE_11AC_VHT40;
|
||||
else if (is_curchan_11axa)
|
||||
postnol_phymode = WLAN_PHYMODE_11AXA_HE40;
|
||||
else
|
||||
return false;
|
||||
break;
|
||||
case CH_WIDTH_80MHZ:
|
||||
if (is_curchan_11ac)
|
||||
postnol_phymode = WLAN_PHYMODE_11AC_VHT80;
|
||||
else if (is_curchan_11axa)
|
||||
postnol_phymode = WLAN_PHYMODE_11AXA_HE80;
|
||||
else
|
||||
return false;
|
||||
break;
|
||||
case CH_WIDTH_160MHZ:
|
||||
if (is_curchan_11ac)
|
||||
postnol_phymode = WLAN_PHYMODE_11AC_VHT160;
|
||||
else if (is_curchan_11axa)
|
||||
postnol_phymode = WLAN_PHYMODE_11AXA_HE160;
|
||||
else
|
||||
return false;
|
||||
break;
|
||||
case CH_WIDTH_80P80MHZ:
|
||||
if (is_curchan_11ac)
|
||||
postnol_phymode = WLAN_PHYMODE_11AC_VHT80_80;
|
||||
else if (is_curchan_11axa)
|
||||
postnol_phymode = WLAN_PHYMODE_11AXA_HE80_80;
|
||||
else
|
||||
return false;
|
||||
break;
|
||||
default:
|
||||
dfs_err(dfs, WLAN_DEBUG_DFS_ALWAYS,
|
||||
"Invalid postNOL mode set. Cannot switch to the chan");
|
||||
return false;
|
||||
}
|
||||
|
||||
qdf_mem_zero(&chan, sizeof(struct dfs_channel));
|
||||
if (QDF_STATUS_SUCCESS !=
|
||||
dfs_mlme_find_dot11_chan_for_freq(
|
||||
dfs->dfs_pdev_obj,
|
||||
dfs->dfs_chan_postnol_freq,
|
||||
dfs->dfs_chan_postnol_cfreq2,
|
||||
postnol_phymode,
|
||||
&chan.dfs_ch_freq,
|
||||
&chan.dfs_ch_flags,
|
||||
&chan.dfs_ch_flagext,
|
||||
&chan.dfs_ch_ieee,
|
||||
&chan.dfs_ch_vhtop_ch_freq_seg1,
|
||||
&chan.dfs_ch_vhtop_ch_freq_seg2,
|
||||
&chan.dfs_ch_mhz_freq_seg1,
|
||||
&chan.dfs_ch_mhz_freq_seg2)) {
|
||||
dfs_err(dfs, WLAN_DEBUG_DFS_ALWAYS,
|
||||
"Channel %d not found for mode %d and cfreq2 %d",
|
||||
dfs->dfs_chan_postnol_freq,
|
||||
postnol_phymode,
|
||||
dfs->dfs_chan_postnol_cfreq2);
|
||||
return false;
|
||||
}
|
||||
if (WLAN_IS_CHAN_RADAR(&chan))
|
||||
return false;
|
||||
|
||||
if (global_dfs_to_mlme.mlme_postnol_chan_switch)
|
||||
global_dfs_to_mlme.mlme_postnol_chan_switch(
|
||||
dfs->dfs_pdev_obj,
|
||||
dfs->dfs_chan_postnol_freq,
|
||||
dfs->dfs_chan_postnol_cfreq2,
|
||||
postnol_phymode);
|
||||
return true;
|
||||
}
|
||||
#endif
|
126
umac/dfs/dispatcher/inc/dfs_postnol_ucfg.h
Ficheiro normal
126
umac/dfs/dispatcher/inc/dfs_postnol_ucfg.h
Ficheiro normal
@@ -0,0 +1,126 @@
|
||||
/*
|
||||
* Copyright (c) 2016-2020 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
* above copyright notice and this permission notice appear in all
|
||||
* copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
|
||||
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
|
||||
* AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
|
||||
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
|
||||
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
||||
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/**
|
||||
* DOC: This file has the DFS dispatcher API which is exposed to outside of DFS
|
||||
* component.
|
||||
*/
|
||||
|
||||
#ifdef QCA_SUPPORT_DFS_CHAN_POSTNOL
|
||||
/**
|
||||
* ucfg_dfs_set_postnol_freq() - Set PostNOL freq.
|
||||
* @pdev: Pointer to DFS pdev object.
|
||||
* @postnol_freq: User configured freq to switch to, post NOL, in MHZ.
|
||||
*
|
||||
*/
|
||||
QDF_STATUS ucfg_dfs_set_postnol_freq(struct wlan_objmgr_pdev *pdev,
|
||||
qdf_freq_t postnol_freq);
|
||||
|
||||
/**
|
||||
* ucfg_dfs_set_postnol_mode() - Set PostNOL mode.
|
||||
* @pdev: Pointer to DFS pdev object.
|
||||
* @postnol_mode: User configured mode to switch to, post NOL, in MHZ.
|
||||
*
|
||||
*/
|
||||
QDF_STATUS ucfg_dfs_set_postnol_mode(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t postnol_mode);
|
||||
|
||||
/**
|
||||
* ucfg_dfs_set_postnol_cfreq2() - Set PostNOL secondary center frequency.
|
||||
* @pdev: Pointer to DFS pdev object.
|
||||
* @postnol_freq: User configured secondary center frequency to switch to,
|
||||
* post NOL, in MHZ.
|
||||
*
|
||||
*/
|
||||
QDF_STATUS ucfg_dfs_set_postnol_cfreq2(struct wlan_objmgr_pdev *pdev,
|
||||
qdf_freq_t postnol_cfreq2);
|
||||
|
||||
/**
|
||||
* ucfg_dfs_get_postnol_freq() - Get PostNOL freq.
|
||||
* @pdev: Pointer to DFS pdev object.
|
||||
* @postnol_freq: Pointer to user configured freq to switch to, post NOL.
|
||||
*
|
||||
*/
|
||||
QDF_STATUS ucfg_dfs_get_postnol_freq(struct wlan_objmgr_pdev *pdev,
|
||||
qdf_freq_t *postnol_freq);
|
||||
|
||||
/**
|
||||
* ucfg_dfs_get_postnol_mode() - Set PostNOL mode.
|
||||
* @pdev: Pointer to DFS pdev object.
|
||||
* @postnol_mode: Pointer to user configured mode to switch to, post NOL.
|
||||
*
|
||||
*/
|
||||
QDF_STATUS ucfg_dfs_get_postnol_mode(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t *postnol_mode);
|
||||
|
||||
/**
|
||||
* ucfg_dfs_get_postnol_cfreq2() - Set PostNOL secondary center frequency.
|
||||
* @pdev: Pointer to DFS pdev object.
|
||||
* @postnol_freq: Pointer to user configured secondary center frequency to
|
||||
* switch to post NOL.
|
||||
*
|
||||
*/
|
||||
QDF_STATUS ucfg_dfs_get_postnol_cfreq2(struct wlan_objmgr_pdev *pdev,
|
||||
qdf_freq_t *postnol_cfreq2);
|
||||
#else
|
||||
static inline QDF_STATUS
|
||||
ucfg_dfs_set_postnol_freq(struct wlan_objmgr_pdev *pdev,
|
||||
qdf_freq_t postnol_freq)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
ucfg_dfs_set_postnol_mode(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t postnol_mode)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
ucfg_dfs_set_postnol_cfreq2(struct wlan_objmgr_pdev *pdev,
|
||||
qdf_freq_t postnol_cfreq2)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
ucfg_dfs_get_postnol_freq(struct wlan_objmgr_pdev *pdev,
|
||||
qdf_freq_t *postnol_freq)
|
||||
{
|
||||
*postnol_freq = 0;
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
ucfg_dfs_get_postnol_mode(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t *postnol_mode)
|
||||
{
|
||||
*postnol_mode = CH_WIDTH_INVALID;
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
ucfg_dfs_get_postnol_cfreq2(struct wlan_objmgr_pdev *pdev,
|
||||
qdf_freq_t *postnol_cfreq2)
|
||||
{
|
||||
*postnol_cfreq2 = 0;
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
#endif
|
145
umac/dfs/dispatcher/src/dfs_postnol_ucfg.c
Ficheiro normal
145
umac/dfs/dispatcher/src/dfs_postnol_ucfg.c
Ficheiro normal
@@ -0,0 +1,145 @@
|
||||
/*
|
||||
* Copyright (c) 2016-2020 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
* above copyright notice and this permission notice appear in all
|
||||
* copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
|
||||
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
|
||||
* AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
|
||||
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
|
||||
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
||||
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/**
|
||||
* DOC: This file consits of APIs related to PostNOL feature.
|
||||
*/
|
||||
|
||||
#include "../../core/src/dfs_misc.h"
|
||||
#include "dfs_zero_cac.h"
|
||||
#include "wlan_dfs_mlme_api.h"
|
||||
#include "ieee80211_mlme_dfs_interface.h"
|
||||
#include "wlan_dfs_init_deinit_api.h"
|
||||
#include "_ieee80211.h"
|
||||
#include "ieee80211_var.h"
|
||||
#include "ieee80211_mlme_dfs_dispatcher.h"
|
||||
#include "ieee80211_channel.h"
|
||||
#include "wlan_mlme_if.h"
|
||||
#include "dfs_postnol_ucfg.h"
|
||||
|
||||
#ifdef QCA_SUPPORT_DFS_CHAN_POSTNOL
|
||||
QDF_STATUS ucfg_dfs_set_postnol_freq(struct wlan_objmgr_pdev *pdev,
|
||||
qdf_freq_t postnol_freq)
|
||||
{
|
||||
struct wlan_dfs *dfs;
|
||||
|
||||
dfs = wlan_pdev_get_dfs_obj(pdev);
|
||||
if (!dfs) {
|
||||
dfs_err(dfs, WLAN_DEBUG_DFS_ALWAYS, "null dfs");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
dfs_set_postnol_freq(dfs, postnol_freq);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_dfs_set_postnol_freq);
|
||||
|
||||
QDF_STATUS ucfg_dfs_set_postnol_mode(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t postnol_mode)
|
||||
{
|
||||
struct wlan_dfs *dfs;
|
||||
|
||||
dfs = wlan_pdev_get_dfs_obj(pdev);
|
||||
if (!dfs) {
|
||||
dfs_err(dfs, WLAN_DEBUG_DFS_ALWAYS, "null dfs");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
dfs_set_postnol_mode(dfs, postnol_mode);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_dfs_set_postnol_mode);
|
||||
|
||||
QDF_STATUS ucfg_dfs_set_postnol_cfreq2(struct wlan_objmgr_pdev *pdev,
|
||||
qdf_freq_t postnol_cfreq2)
|
||||
{
|
||||
struct wlan_dfs *dfs;
|
||||
|
||||
dfs = wlan_pdev_get_dfs_obj(pdev);
|
||||
if (!dfs) {
|
||||
dfs_err(dfs, WLAN_DEBUG_DFS_ALWAYS, "null dfs");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
dfs_set_postnol_cfreq2(dfs, postnol_cfreq2);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_dfs_set_postnol_cfreq2);
|
||||
|
||||
QDF_STATUS ucfg_dfs_get_postnol_freq(struct wlan_objmgr_pdev *pdev,
|
||||
qdf_freq_t *postnol_freq)
|
||||
{
|
||||
struct wlan_dfs *dfs;
|
||||
|
||||
dfs = wlan_pdev_get_dfs_obj(pdev);
|
||||
if (!dfs) {
|
||||
dfs_err(dfs, WLAN_DEBUG_DFS_ALWAYS, "null dfs");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
dfs_get_postnol_freq(dfs, postnol_freq);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_dfs_get_postnol_freq);
|
||||
|
||||
QDF_STATUS ucfg_dfs_get_postnol_mode(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t *postnol_mode)
|
||||
{
|
||||
struct wlan_dfs *dfs;
|
||||
|
||||
dfs = wlan_pdev_get_dfs_obj(pdev);
|
||||
if (!dfs) {
|
||||
dfs_err(dfs, WLAN_DEBUG_DFS_ALWAYS, "null dfs");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
dfs_get_postnol_mode(dfs, postnol_mode);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_dfs_get_postnol_mode);
|
||||
|
||||
QDF_STATUS ucfg_dfs_get_postnol_cfreq2(struct wlan_objmgr_pdev *pdev,
|
||||
qdf_freq_t *postnol_cfreq2)
|
||||
{
|
||||
struct wlan_dfs *dfs;
|
||||
|
||||
dfs = wlan_pdev_get_dfs_obj(pdev);
|
||||
if (!dfs) {
|
||||
dfs_err(dfs, WLAN_DEBUG_DFS_ALWAYS, "null dfs");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
dfs_get_postnol_cfreq2(dfs, postnol_cfreq2);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
qdf_export_symbol(ucfg_dfs_get_postnol_cfreq2);
|
||||
#endif
|
||||
|
Criar uma nova questão referindo esta
Bloquear um utilizador