qcacmn: Enable P2P GO operation on indoor channels
Do not mark REGULATORY_CHAN_NO_IR channel flag for the 5 GHz indoor channels if p2p go support is enabled on indoor channels. Change-Id: I7fbae71766260513aa9946446b7e8bf8507df53b CRs-Fixed: 3411708
This commit is contained in:

committed by
Madan Koyyalamudi

parent
f2fbe214d4
commit
315a1b3f8b
@@ -574,7 +574,9 @@ static void reg_modify_chan_list_for_indoor_channels(
|
|||||||
if (!(REGULATORY_CHAN_DISABLED &
|
if (!(REGULATORY_CHAN_DISABLED &
|
||||||
chan_list[chan_enum].chan_flags) &&
|
chan_list[chan_enum].chan_flags) &&
|
||||||
(REGULATORY_CHAN_INDOOR_ONLY &
|
(REGULATORY_CHAN_INDOOR_ONLY &
|
||||||
chan_list[chan_enum].chan_flags)) {
|
chan_list[chan_enum].chan_flags) &&
|
||||||
|
!(pdev_priv_obj->p2p_indoor_ch_support &&
|
||||||
|
reg_is_5ghz_ch_freq(chan_list[chan_enum].center_freq))) {
|
||||||
chan_list[chan_enum].state =
|
chan_list[chan_enum].state =
|
||||||
CHANNEL_STATE_DFS;
|
CHANNEL_STATE_DFS;
|
||||||
chan_list[chan_enum].chan_flags |=
|
chan_list[chan_enum].chan_flags |=
|
||||||
@@ -599,10 +601,12 @@ static void reg_modify_chan_list_for_indoor_channels(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*reg_modify_chan_list_for_indoor_concurrency() - Enable/Disable the indoor
|
* reg_modify_chan_list_for_indoor_concurrency() - Enable/Disable the indoor
|
||||||
*channels for SAP operation based on the indoor concurrency list
|
* channels for SAP operation based on the indoor concurrency list
|
||||||
*
|
*
|
||||||
* @pdev_priv_obj: Pointer to regulatory private pdev structure.
|
* @pdev_priv_obj: Pointer to regulatory private pdev structure.
|
||||||
|
*
|
||||||
|
* Return: None
|
||||||
*/
|
*/
|
||||||
static void reg_modify_chan_list_for_indoor_concurrency(
|
static void reg_modify_chan_list_for_indoor_concurrency(
|
||||||
struct wlan_regulatory_pdev_priv_obj *pdev_priv_obj)
|
struct wlan_regulatory_pdev_priv_obj *pdev_priv_obj)
|
||||||
@@ -613,6 +617,7 @@ static void reg_modify_chan_list_for_indoor_concurrency(
|
|||||||
uint8_t i;
|
uint8_t i;
|
||||||
|
|
||||||
if (pdev_priv_obj->indoor_chan_enabled ||
|
if (pdev_priv_obj->indoor_chan_enabled ||
|
||||||
|
pdev_priv_obj->p2p_indoor_ch_support ||
|
||||||
!pdev_priv_obj->sta_sap_scc_on_indoor_channel)
|
!pdev_priv_obj->sta_sap_scc_on_indoor_channel)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2014-2021 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2014-2021 The Linux Foundation. All rights reserved.
|
||||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. 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
|
||||||
@@ -127,6 +127,7 @@ QDF_STATUS wlan_regulatory_psoc_obj_created_notification(
|
|||||||
soc_reg_obj->is_ext_tpc_supported = false;
|
soc_reg_obj->is_ext_tpc_supported = false;
|
||||||
soc_reg_obj->sta_sap_scc_on_indoor_channel = true;
|
soc_reg_obj->sta_sap_scc_on_indoor_channel = true;
|
||||||
soc_reg_obj->set_fcc_channel = false;
|
soc_reg_obj->set_fcc_channel = false;
|
||||||
|
soc_reg_obj->p2p_indoor_ch_support = false;
|
||||||
|
|
||||||
for (i = 0; i < MAX_STA_VDEV_CNT; i++)
|
for (i = 0; i < MAX_STA_VDEV_CNT; i++)
|
||||||
soc_reg_obj->vdev_ids_11d[i] = INVALID_VDEV_ID;
|
soc_reg_obj->vdev_ids_11d[i] = INVALID_VDEV_ID;
|
||||||
@@ -361,6 +362,8 @@ QDF_STATUS wlan_regulatory_pdev_obj_created_notification(
|
|||||||
psoc_priv_obj->force_ssc_disable_indoor_channel;
|
psoc_priv_obj->force_ssc_disable_indoor_channel;
|
||||||
pdev_priv_obj->sta_sap_scc_on_indoor_channel =
|
pdev_priv_obj->sta_sap_scc_on_indoor_channel =
|
||||||
psoc_priv_obj->sta_sap_scc_on_indoor_channel;
|
psoc_priv_obj->sta_sap_scc_on_indoor_channel;
|
||||||
|
pdev_priv_obj->p2p_indoor_ch_support =
|
||||||
|
psoc_priv_obj->p2p_indoor_ch_support;
|
||||||
|
|
||||||
for (cnt = 0; cnt < PSOC_MAX_PHY_REG_CAP; cnt++) {
|
for (cnt = 0; cnt < PSOC_MAX_PHY_REG_CAP; cnt++) {
|
||||||
if (!reg_cap_ptr) {
|
if (!reg_cap_ptr) {
|
||||||
|
@@ -195,6 +195,7 @@ struct indoor_concurrency_list {
|
|||||||
* @afc_disable_request_id_check: Whether disable target AFC request id check
|
* @afc_disable_request_id_check: Whether disable target AFC request id check
|
||||||
* @is_afc_reg_noaction: Whether no action to AFC power event
|
* @is_afc_reg_noaction: Whether no action to AFC power event
|
||||||
* @sta_sap_scc_on_indoor_channel: Value of sap+sta scc on indoor support
|
* @sta_sap_scc_on_indoor_channel: Value of sap+sta scc on indoor support
|
||||||
|
* @p2p_indoor_ch_support: Allow P2P GO in indoor channels
|
||||||
* @fcc_rules_ptr: Value of fcc channel frequency and tx_power list received
|
* @fcc_rules_ptr: Value of fcc channel frequency and tx_power list received
|
||||||
* from firmware
|
* from firmware
|
||||||
* @set_fcc_channel: Flag to set fcc channels
|
* @set_fcc_channel: Flag to set fcc channels
|
||||||
@@ -275,6 +276,7 @@ struct wlan_regulatory_psoc_priv_obj {
|
|||||||
bool is_afc_reg_noaction;
|
bool is_afc_reg_noaction;
|
||||||
#endif
|
#endif
|
||||||
bool sta_sap_scc_on_indoor_channel;
|
bool sta_sap_scc_on_indoor_channel;
|
||||||
|
bool p2p_indoor_ch_support;
|
||||||
#ifdef CONFIG_REG_CLIENT
|
#ifdef CONFIG_REG_CLIENT
|
||||||
struct cur_fcc_rule fcc_rules_ptr[MAX_NUM_FCC_RULES];
|
struct cur_fcc_rule fcc_rules_ptr[MAX_NUM_FCC_RULES];
|
||||||
#endif
|
#endif
|
||||||
@@ -356,6 +358,7 @@ struct wlan_regulatory_psoc_priv_obj {
|
|||||||
* take action when AFC Power event is received
|
* take action when AFC Power event is received
|
||||||
* @reg_afc_dev_deployment_type: AFC device deployment type from BDF
|
* @reg_afc_dev_deployment_type: AFC device deployment type from BDF
|
||||||
* @sta_sap_scc_on_indoor_channel: Value of sap+sta scc on indoor support
|
* @sta_sap_scc_on_indoor_channel: Value of sap+sta scc on indoor support
|
||||||
|
* @p2p_indoor_ch_support: Allow P2P GO in indoor channels
|
||||||
* @fcc_rules_ptr : Value of fcc channel frequency and tx_power list received
|
* @fcc_rules_ptr : Value of fcc channel frequency and tx_power list received
|
||||||
* from firmware
|
* from firmware
|
||||||
* @indoor_list: List of current indoor station interfaces
|
* @indoor_list: List of current indoor station interfaces
|
||||||
@@ -436,6 +439,7 @@ struct wlan_regulatory_pdev_priv_obj {
|
|||||||
enum reg_afc_dev_deploy_type reg_afc_dev_deployment_type;
|
enum reg_afc_dev_deploy_type reg_afc_dev_deployment_type;
|
||||||
#endif
|
#endif
|
||||||
bool sta_sap_scc_on_indoor_channel;
|
bool sta_sap_scc_on_indoor_channel;
|
||||||
|
bool p2p_indoor_ch_support;
|
||||||
#ifdef CONFIG_REG_CLIENT
|
#ifdef CONFIG_REG_CLIENT
|
||||||
struct cur_fcc_rule fcc_rules_ptr[MAX_NUM_FCC_RULES];
|
struct cur_fcc_rule fcc_rules_ptr[MAX_NUM_FCC_RULES];
|
||||||
struct indoor_concurrency_list indoor_list[MAX_INDOOR_LIST_SIZE];
|
struct indoor_concurrency_list indoor_list[MAX_INDOOR_LIST_SIZE];
|
||||||
|
@@ -889,6 +889,8 @@ static void reg_change_pdev_for_config(struct wlan_objmgr_psoc *psoc,
|
|||||||
pdev_priv_obj->band_capability = psoc_priv_obj->band_capability;
|
pdev_priv_obj->band_capability = psoc_priv_obj->band_capability;
|
||||||
pdev_priv_obj->sta_sap_scc_on_indoor_channel =
|
pdev_priv_obj->sta_sap_scc_on_indoor_channel =
|
||||||
psoc_priv_obj->sta_sap_scc_on_indoor_channel;
|
psoc_priv_obj->sta_sap_scc_on_indoor_channel;
|
||||||
|
pdev_priv_obj->p2p_indoor_ch_support =
|
||||||
|
psoc_priv_obj->p2p_indoor_ch_support;
|
||||||
|
|
||||||
reg_compute_pdev_current_chan_list(pdev_priv_obj);
|
reg_compute_pdev_current_chan_list(pdev_priv_obj);
|
||||||
|
|
||||||
@@ -951,6 +953,9 @@ QDF_STATUS reg_set_config_vars(struct wlan_objmgr_psoc *psoc,
|
|||||||
reg_get_coex_unsafe_chan_reg_disable(psoc_priv_obj, config_vars);
|
reg_get_coex_unsafe_chan_reg_disable(psoc_priv_obj, config_vars);
|
||||||
psoc_priv_obj->sta_sap_scc_on_indoor_channel =
|
psoc_priv_obj->sta_sap_scc_on_indoor_channel =
|
||||||
config_vars.sta_sap_scc_on_indoor_channel;
|
config_vars.sta_sap_scc_on_indoor_channel;
|
||||||
|
psoc_priv_obj->p2p_indoor_ch_support =
|
||||||
|
config_vars.p2p_indoor_ch_support;
|
||||||
|
|
||||||
reg_set_afc_vars(psoc_priv_obj, &config_vars);
|
reg_set_afc_vars(psoc_priv_obj, &config_vars);
|
||||||
|
|
||||||
status = wlan_objmgr_psoc_try_get_ref(psoc, WLAN_REGULATORY_SB_ID);
|
status = wlan_objmgr_psoc_try_get_ref(psoc, WLAN_REGULATORY_SB_ID);
|
||||||
|
@@ -1575,6 +1575,7 @@ enum restart_beaconing_on_ch_avoid_rule {
|
|||||||
* @afc_disable_request_id_check: Disable target AFC request id check
|
* @afc_disable_request_id_check: Disable target AFC request id check
|
||||||
* @is_afc_reg_noaction: Whether no action to AFC power event
|
* @is_afc_reg_noaction: Whether no action to AFC power event
|
||||||
* @sta_sap_scc_on_indoor_channel: Value of sap+sta scc on indoor support
|
* @sta_sap_scc_on_indoor_channel: Value of sap+sta scc on indoor support
|
||||||
|
* @p2p_indoor_ch_support: Allow P2P GO in indoor channels
|
||||||
*/
|
*/
|
||||||
struct reg_config_vars {
|
struct reg_config_vars {
|
||||||
uint32_t enable_11d_support;
|
uint32_t enable_11d_support;
|
||||||
@@ -1600,6 +1601,7 @@ struct reg_config_vars {
|
|||||||
bool is_afc_reg_noaction;
|
bool is_afc_reg_noaction;
|
||||||
#endif
|
#endif
|
||||||
bool sta_sap_scc_on_indoor_channel;
|
bool sta_sap_scc_on_indoor_channel;
|
||||||
|
bool p2p_indoor_ch_support;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user