From b38b14e1fb9e230f623eb1d82ec4f17ca3186f2d Mon Sep 17 00:00:00 2001 From: Li Feng Date: Wed, 22 Apr 2020 19:28:34 +0800 Subject: [PATCH] qcacld-3.0: Support gc+sap scc on dfs channel Once gc connected on dfs channel, allow the scc sap start on the same dfs channel with dfs master capability disabled in the driver if sta_sap_scc_on_dfs_chan ini is set. Change-Id: Ie1c3ad2850fb0bce3f19f8fbe4750e5a97f2be93 CRs-Fixed: 2666581 --- core/hdd/src/wlan_hdd_hostapd.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/core/hdd/src/wlan_hdd_hostapd.c b/core/hdd/src/wlan_hdd_hostapd.c index 381006b23297..e7020beb9f2c 100644 --- a/core/hdd/src/wlan_hdd_hostapd.c +++ b/core/hdd/src/wlan_hdd_hostapd.c @@ -6298,7 +6298,7 @@ static int __wlan_hdd_cfg80211_start_ap(struct wiphy *wiphy, struct sme_sta_inactivity_timeout *sta_inactivity_timer; uint8_t channel, mandt_chnl_list = 0; bool sta_sap_scc_on_dfs_chan; - uint16_t sta_cnt, sap_cnt; + uint16_t sta_cnt, gc_cnt, sap_cnt; bool val; struct wireless_dev *wdev = dev->ieee80211_ptr; struct cfg80211_chan_def new_chandef; @@ -6392,17 +6392,20 @@ static int __wlan_hdd_cfg80211_start_ap(struct wiphy *wiphy, hdd_ctx->psoc); sta_cnt = policy_mgr_mode_specific_connection_count(hdd_ctx->psoc, PM_STA_MODE, NULL); + gc_cnt = policy_mgr_mode_specific_connection_count(hdd_ctx->psoc, + PM_P2P_CLIENT_MODE, NULL); sap_cnt = policy_mgr_mode_specific_connection_count(hdd_ctx->psoc, PM_SAP_MODE, NULL); - hdd_debug("sta_sap_scc_on_dfs_chan %u, sta_cnt %u", - sta_sap_scc_on_dfs_chan, sta_cnt); + hdd_debug("sta_sap_scc_on_dfs_chan %u, sta_cnt %u gc_cnt %u", + sta_sap_scc_on_dfs_chan, sta_cnt, gc_cnt); /* if sta_sap_scc_on_dfs_chan ini is set, DFS master capability is * assumed disabled in the driver. */ if ((wlan_reg_get_channel_state(hdd_ctx->pdev, channel) == - CHANNEL_STATE_DFS) && !sta_cnt && sta_sap_scc_on_dfs_chan && + CHANNEL_STATE_DFS) && !sta_cnt && !gc_cnt && + sta_sap_scc_on_dfs_chan && !ucfg_policy_mgr_get_dfs_master_dynamic_enabled( hdd_ctx->psoc, adapter->vdev_id)) { hdd_err("SAP not allowed on DFS channel if no dfs master capability!!");