qcacmn: Enable STA DFS in F/W
If STA DFS is enabled before vdev creation through etc/config/wireless then VDEV START is sent to F/W as a part of the normal flow to bring the VAP up. However, if STA DFS is enabled/disabled on the fly for a running VAP then do a VDEV STOP, followed by a VDEV START of the STA VAP and set/unset WMI_CHAN_FLAG_STA_DFS flag in VDEV start. Change-Id: I032ffa53d89eaafcb43c648670af3b3f2134561f CRs-Fixed: 2843248
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-2020 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2016-2021 The Linux Foundation. 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
|
||||||
@@ -51,6 +51,8 @@ wlan_psoc_get_dfs_txops(struct wlan_objmgr_psoc *psoc)
|
|||||||
return &tx_ops->dfs_tx_ops;
|
return &tx_ops->dfs_tx_ops;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
qdf_export_symbol(wlan_psoc_get_dfs_txops);
|
||||||
|
|
||||||
bool tgt_dfs_is_pdev_5ghz(struct wlan_objmgr_pdev *pdev)
|
bool tgt_dfs_is_pdev_5ghz(struct wlan_objmgr_pdev *pdev)
|
||||||
{
|
{
|
||||||
struct wlan_lmac_if_dfs_tx_ops *dfs_tx_ops;
|
struct wlan_lmac_if_dfs_tx_ops *dfs_tx_ops;
|
||||||
|
@@ -121,7 +121,7 @@ static QDF_STATUS vdev_mgr_start_param_update(
|
|||||||
{
|
{
|
||||||
struct wlan_channel *des_chan;
|
struct wlan_channel *des_chan;
|
||||||
uint32_t dfs_reg;
|
uint32_t dfs_reg;
|
||||||
bool set_agile = false, dfs_set_cfreq2 = false;
|
bool set_agile = false, dfs_set_cfreq2 = false, is_stadfs_en = false;
|
||||||
struct wlan_objmgr_vdev *vdev;
|
struct wlan_objmgr_vdev *vdev;
|
||||||
struct wlan_objmgr_pdev *pdev;
|
struct wlan_objmgr_pdev *pdev;
|
||||||
enum QDF_OPMODE op_mode;
|
enum QDF_OPMODE op_mode;
|
||||||
@@ -174,6 +174,8 @@ static QDF_STATUS vdev_mgr_start_param_update(
|
|||||||
utils_dfs_agile_sm_deliver_evt(pdev,
|
utils_dfs_agile_sm_deliver_evt(pdev,
|
||||||
DFS_AGILE_SM_EV_AGILE_STOP);
|
DFS_AGILE_SM_EV_AGILE_STOP);
|
||||||
|
|
||||||
|
is_stadfs_en = tgt_dfs_is_stadfs_enabled(pdev);
|
||||||
|
param->channel.is_stadfs_en = is_stadfs_en;
|
||||||
param->beacon_interval = mlme_obj->proto.generic.beacon_interval;
|
param->beacon_interval = mlme_obj->proto.generic.beacon_interval;
|
||||||
param->dtim_period = mlme_obj->proto.generic.dtim_period;
|
param->dtim_period = mlme_obj->proto.generic.dtim_period;
|
||||||
param->disable_hw_ack = mlme_obj->mgmt.generic.disable_hw_ack;
|
param->disable_hw_ack = mlme_obj->mgmt.generic.disable_hw_ack;
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2019-2020 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2019-2021 The Linux Foundation. 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
|
||||||
@@ -265,6 +265,7 @@ struct fils_discovery_tmpl_params {
|
|||||||
* @allow_ht: HT allowed in chan
|
* @allow_ht: HT allowed in chan
|
||||||
* @allow_vht: VHT allowed on chan
|
* @allow_vht: VHT allowed on chan
|
||||||
* @set_agile: is agile mode
|
* @set_agile: is agile mode
|
||||||
|
* @is_stadfs_en: STA DFS enabled
|
||||||
* @phy_mode: phymode (vht80 or ht40 or ...)
|
* @phy_mode: phymode (vht80 or ht40 or ...)
|
||||||
* @cfreq1: centre frequency on primary
|
* @cfreq1: centre frequency on primary
|
||||||
* @cfreq2: centre frequency on secondary
|
* @cfreq2: centre frequency on secondary
|
||||||
@@ -285,7 +286,8 @@ struct mlme_channel_param {
|
|||||||
is_chan_passive:1,
|
is_chan_passive:1,
|
||||||
allow_ht:1,
|
allow_ht:1,
|
||||||
allow_vht:1,
|
allow_vht:1,
|
||||||
set_agile:1;
|
set_agile:1,
|
||||||
|
is_stadfs_en:1;
|
||||||
enum wlan_phymode phy_mode;
|
enum wlan_phymode phy_mode;
|
||||||
uint32_t cfreq1;
|
uint32_t cfreq1;
|
||||||
uint32_t cfreq2;
|
uint32_t cfreq2;
|
||||||
|
@@ -1001,6 +1001,9 @@ static inline void copy_channel_info(
|
|||||||
if (req->channel.dfs_set_cfreq2)
|
if (req->channel.dfs_set_cfreq2)
|
||||||
WMI_SET_CHANNEL_FLAG(chan, WMI_CHAN_FLAG_DFS_CFREQ2);
|
WMI_SET_CHANNEL_FLAG(chan, WMI_CHAN_FLAG_DFS_CFREQ2);
|
||||||
|
|
||||||
|
if (req->channel.is_stadfs_en)
|
||||||
|
WMI_SET_CHANNEL_FLAG(chan, WMI_CHAN_FLAG_STA_DFS);
|
||||||
|
|
||||||
/* According to firmware both reg power and max tx power
|
/* According to firmware both reg power and max tx power
|
||||||
* on set channel power is used and set it to max reg
|
* on set channel power is used and set it to max reg
|
||||||
* power from regulatory.
|
* power from regulatory.
|
||||||
|
Reference in New Issue
Block a user