qcacld-3.0: Enhance coex_unsafe_chan_nb_user_prefer for P2P mode

Currently, firmware-reported unsafe channels are ignored
and userspace configured channels are honored when
coex_unsafe_chan_nb_user_prefer ini is set. This is supported for
SAP mode only.
But some platforms may want driver to ignore the firmware-
reported coex channels for P2P-GO also.
Enhance the ini to allow user to configure mode specific
bit as mentioned below,

BIT 0: Don't honor fw coex/unsafe channel info for SAP mode
BIT 1: Don't honor fw coex/unsafe channel info for P2P-GO mode

Change-Id: I91a2c6b2da9aba411d081f6ae3b23d374fe53159
CRs-Fixed: 3766393
This commit is contained in:
Srinivas Dasari
2024-03-26 22:40:33 +05:30
committed by Ravindra Konda
parent 4d305e8621
commit 6472be5eda
14 changed files with 128 additions and 28 deletions

View File

@@ -1,6 +1,6 @@
/*
* Copyright (c) 2012-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@@ -413,23 +413,50 @@
"Retain NOL even if the regdomain changes")
#ifdef FEATURE_WLAN_CH_AVOID_EXT
/**
* enum ignore_fw_coex_info_modes - Represents modes
* @IGNORE_FW_COEX_INFO_ON_SAP_MODE: Set this bit to ignore fw coex info on
* SAP mode
* @IGNORE_FW_COEX_INFO_ON_P2P_GO_MODE: Set this bit to ignore fw coex info
* on P2P-GO mode
*/
enum ignore_fw_coex_info_modes {
IGNORE_FW_COEX_INFO_ON_SAP_MODE = 1 << 0,
IGNORE_FW_COEX_INFO_ON_P2P_GO_MODE = 1 << 1
};
/*
* <ini>
* coex_unsafe_chan_nb_user_prefer- Used to handle coex unsafe freq
* event
*
* @Min: 0 (Honor Firmware event)
* @Max: 1 (Don't honor Firmware event)
* Default: 0
* @Min: 0
* @Max: 0xFF
* @Default: 0
*
* Bit map of the modes to consider/ignore firmware provided coex/unsafe
* channels.
* Firmware provided coex/unsafe channel info is ignored if the corresponding
* bit is set to 1.
* Firmware provided coex/unsafe channel info is honored if the corresponding
* bit is set to 0.
*
* BIT 0: Don't honor firmware coex info for SAP mode
* BIT 1: Don't honor firmware coex info for P2P-GO mode
* Rest of the bits are currently reserved
*
* This ini is used to handle coex unsafe freq event
* Usage: External
*
* </ini>
*/
#define CFG_COEX_UNSAFE_CHAN_NB_USER_PREFER CFG_INI_BOOL( \
#define CFG_COEX_UNSAFE_CHAN_NB_USER_PREFER CFG_INI_UINT( \
"coex_unsafe_chan_nb_user_prefer", \
0, \
0xff, \
0, \
CFG_VALUE_OR_DEFAULT, \
"Honor coex unsafe freq event from firmware")
/*
* <ini>

View File

@@ -355,11 +355,29 @@ wlan_mlme_get_wlm_multi_client_ll_caps(struct wlan_objmgr_psoc *psoc)
*
* Return: coex_unsafe_chan_nb_user_prefer
*/
bool wlan_mlme_get_coex_unsafe_chan_nb_user_prefer(
uint32_t wlan_mlme_get_coex_unsafe_chan_nb_user_prefer(
struct wlan_objmgr_psoc *psoc);
bool wlan_mlme_get_coex_unsafe_chan_nb_user_prefer_for_p2p_go(
struct wlan_objmgr_psoc *psoc);
bool wlan_mlme_get_coex_unsafe_chan_nb_user_prefer_for_sap(
struct wlan_objmgr_psoc *psoc);
#else
static inline
bool wlan_mlme_get_coex_unsafe_chan_nb_user_prefer(
uint32_t wlan_mlme_get_coex_unsafe_chan_nb_user_prefer(
struct wlan_objmgr_psoc *psoc)
{
return false;
}
static inline
bool wlan_mlme_get_coex_unsafe_chan_nb_user_prefer_for_sap(
struct wlan_objmgr_psoc *psoc)
{
return false;
}
static inline
bool wlan_mlme_get_coex_unsafe_chan_nb_user_prefer_for_p2p_go(
struct wlan_objmgr_psoc *psoc)
{
return false;

View File

@@ -2768,7 +2768,7 @@ struct wlan_mlme_reg {
bool is_afc_reg_noaction;
#endif
#ifdef FEATURE_WLAN_CH_AVOID_EXT
bool coex_unsafe_chan_nb_user_prefer;
uint32_t coex_unsafe_chan_nb_user_prefer;
bool coex_unsafe_chan_reg_disable;
#endif
};

View File

@@ -1,6 +1,6 @@
/*
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@@ -5076,6 +5076,9 @@ ucfg_mlme_cfg_get_ht_smps(struct wlan_objmgr_psoc *psoc,
bool ucfg_mlme_get_coex_unsafe_chan_nb_user_prefer(
struct wlan_objmgr_psoc *psoc);
bool ucfg_mlme_get_coex_unsafe_chan_nb_user_prefer_for_sap(
struct wlan_objmgr_psoc *psoc);
/**
* ucfg_mlme_get_coex_unsafe_chan_reg_disable() - get reg disable cap for
* coex unsafe channels support
@@ -5093,6 +5096,13 @@ bool ucfg_mlme_get_coex_unsafe_chan_nb_user_prefer(
return false;
}
static inline
bool ucfg_mlme_get_coex_unsafe_chan_nb_user_prefer_for_sap(
struct wlan_objmgr_psoc *psoc)
{
return false;
}
static inline
bool ucfg_mlme_get_coex_unsafe_chan_reg_disable(
struct wlan_objmgr_psoc *psoc)