From dcab2f892422d179563e15c4ee10ce41c48a11db Mon Sep 17 00:00:00 2001 From: Liangwei Dong Date: Fri, 20 Sep 2019 13:03:31 +0800 Subject: [PATCH] qcacmn: Set DFS channel to radar component vdev_mgr_start_param_update will handle STA and AP mode in vdev start. So, we need to check and only set DFS AP's channel to Radar component by tgt_dfs_set_current_channel. Thist will avoid seting incorrect channel to Radar component in STA+AP(DFS) or AP(2.4G)+AP(5G DFS) concurrency case. Change-Id: If60e1630c5288884d01242a20d68b2cd315942ca CRs-Fixed: 2531766 --- umac/mlme/vdev_mgr/core/src/vdev_mgr_ops.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/umac/mlme/vdev_mgr/core/src/vdev_mgr_ops.c b/umac/mlme/vdev_mgr/core/src/vdev_mgr_ops.c index 8b97f8eab4f0..9ebe1fb4bcce 100644 --- a/umac/mlme/vdev_mgr/core/src/vdev_mgr_ops.c +++ b/umac/mlme/vdev_mgr/core/src/vdev_mgr_ops.c @@ -99,6 +99,7 @@ static QDF_STATUS vdev_mgr_start_param_update( bool set_agile = false, dfs_set_cfreq2 = false; struct wlan_objmgr_vdev *vdev; struct wlan_objmgr_pdev *pdev; + enum QDF_OPMODE op_mode; vdev = mlme_obj->vdev; if (!vdev) { @@ -121,12 +122,17 @@ static QDF_STATUS vdev_mgr_start_param_update( des_chan = wlan_vdev_mlme_get_des_chan(vdev); param->vdev_id = wlan_vdev_get_id(vdev); - tgt_dfs_set_current_channel(pdev, des_chan->ch_freq, - des_chan->ch_flags, - des_chan->ch_flagext, - des_chan->ch_ieee, - des_chan->ch_freq_seg1, - des_chan->ch_freq_seg2); + op_mode = wlan_vdev_mlme_get_opmode(vdev); + if ((op_mode == QDF_SAP_MODE || op_mode == QDF_P2P_GO_MODE) && + (WLAN_REG_IS_5GHZ_CH_FREQ(des_chan->ch_freq) || + WLAN_REG_IS_49GHZ_FREQ(des_chan->ch_freq) || + WLAN_REG_IS_6GHZ_CHAN_FREQ(des_chan->ch_freq))) + tgt_dfs_set_current_channel(pdev, des_chan->ch_freq, + des_chan->ch_flags, + des_chan->ch_flagext, + des_chan->ch_ieee, + des_chan->ch_freq_seg1, + des_chan->ch_freq_seg2); param->beacon_interval = mlme_obj->proto.generic.beacon_interval; param->dtim_period = mlme_obj->proto.generic.dtim_period; @@ -145,7 +151,8 @@ static QDF_STATUS vdev_mgr_start_param_update( param->channel.mhz = des_chan->ch_freq; param->channel.half_rate = mlme_obj->mgmt.rate_info.half_rate; param->channel.quarter_rate = mlme_obj->mgmt.rate_info.quarter_rate; - param->channel.dfs_set = utils_is_dfs_ch(pdev, param->channel.chan_id); + param->channel.dfs_set = wlan_reg_is_dfs_for_freq(pdev, + des_chan->ch_freq); param->channel.dfs_set_cfreq2 = utils_is_dfs_cfreq2_ch(pdev); param->channel.is_chan_passive = utils_is_dfs_ch(pdev, param->channel.chan_id);