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:
Ananya Barat
2020-12-22 14:54:34 +05:30
committed by snandini
parent a7717deced
commit 6b309b7dbe
4 changed files with 13 additions and 4 deletions

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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.