qcacld-3.0: Config support for STA bss color collision detection

Add INI configuration support to enable/disable BSS color collision
detection offload in STA mode.

Change-Id: I9d8f096813d74242566ccae5f92e872bcaca6295
CRs-Fixed: 2965133
This commit is contained in:
Kiran Kumar Lokere 2021-06-10 09:58:38 -07:00 • committed by Madan Koyyalamudi
commit 1015549545
7 changed files with 65 additions and 1 deletions

View file

@ -1353,6 +1353,8 @@ static void mlme_init_obss_ht40_cfg(struct wlan_objmgr_psoc *psoc,
(bool)cfg_default(CFG_OBSS_DETECTION_OFFLOAD);
obss_ht40->obss_color_collision_offload_enabled =
(bool)cfg_default(CFG_OBSS_COLOR_COLLISION_OFFLOAD);
obss_ht40->bss_color_collision_det_sta =
cfg_get(psoc, CFG_BSS_CLR_COLLISION_DETCN_STA);
}
static void mlme_init_threshold_cfg(struct wlan_objmgr_psoc *psoc,

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 2012-2019 The Linux Foundation. All rights reserved.
* Copyright (c) 2012-2021 The Linux Foundation. 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
@ -243,6 +243,27 @@
0, \
"Enable obss color collision offload")
/*
* <ini>
* bss_color_collision_det_sta - Enables BSS color collision detection in STA
* @Min: 0
* @Max: 1
* @Default: 0
*
* This ini used to enable or disable the BSS color collision detection in
* STA mode if obss_color_collision_offload is enabled.
*
* Supported Feature: STA
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_BSS_CLR_COLLISION_DETCN_STA CFG_INI_BOOL( \
"bss_color_collision_det_sta", \
0, \
"BSS color collision detection in STA")
#define CFG_OBSS_HT40_ALL \
CFG(CFG_OBSS_HT40_SCAN_ACTIVE_DWELL_TIME) \
CFG(CFG_OBSS_HT40_SCAN_PASSIVE_DWELL_TIME) \
@ -253,6 +274,7 @@
CFG(CFG_OBSS_HT40_WIDTH_CH_TRANSITION_DELAY) \
CFG(CFG_OBSS_HT40_OVERRIDE_HT40_20_24GHZ) \
CFG(CFG_OBSS_DETECTION_OFFLOAD) \
CFG(CFG_BSS_CLR_COLLISION_DETCN_STA) \
CFG(CFG_OBSS_COLOR_COLLISION_OFFLOAD)
#endif /* CFG_MLME_OBSS_HT40_H__ */

View file

@ -1396,6 +1396,7 @@ struct wlan_mlme_cfg_twt {
* @is_override_ht20_40_24g: use channel bonding in 2.4 GHz
* @obss_detection_offload_enabled: Enable OBSS detection offload
* @obss_color_collision_offload_enabled: Enable obss color collision
* @bss_color_collision_det_sta: STA BSS color collision detection offload
*/
struct wlan_mlme_obss_ht40 {
uint32_t active_dwelltime;
@ -1408,6 +1409,7 @@ struct wlan_mlme_obss_ht40 {
bool is_override_ht20_40_24g;
bool obss_detection_offload_enabled;
bool obss_color_collision_offload_enabled;
bool bss_color_collision_det_sta;
};
/**

View file

@ -3972,6 +3972,18 @@ QDF_STATUS
ucfg_mlme_set_obss_color_collision_offload_enabled(
struct wlan_objmgr_psoc *psoc, uint8_t value);
/**
* ucfg_mlme_set_bss_color_collision_det_sta() - Enable bss color
* collision detection offload for STA mode
* @psoc: pointer to psoc object
* @value: enable or disable
*
* Return: QDF Status
*/
QDF_STATUS
ucfg_mlme_set_bss_color_collision_det_sta(struct wlan_objmgr_psoc *psoc,
uint8_t value);
/**
* ucfg_mlme_set_restricted_80p80_bw_supp() - Set the restricted 80p80 support
* @psoc: pointer to psoc object

View file

@ -1550,6 +1550,21 @@ ucfg_mlme_set_obss_detection_offload_enabled(struct wlan_objmgr_psoc *psoc,
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
ucfg_mlme_set_bss_color_collision_det_sta(struct wlan_objmgr_psoc *psoc,
uint8_t value)
{
struct wlan_mlme_psoc_ext_obj *mlme_obj;
mlme_obj = mlme_get_psoc_ext_obj(psoc);
if (!mlme_obj)
return QDF_STATUS_E_INVAL;
mlme_obj->cfg.obss_ht40.bss_color_collision_det_sta = value;
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
ucfg_mlme_set_obss_color_collision_offload_enabled(
struct wlan_objmgr_psoc *psoc, uint8_t value)

View file

@ -2691,6 +2691,14 @@ int hdd_update_tgt_cfg(hdd_handle_t hdd_handle, struct wma_tgt_cfg *cfg)
if (QDF_IS_STATUS_ERROR(status))
hdd_err("Failed to set WNI_CFG_OBSS_COLOR_COLLISION_OFFLOAD");
if (!cfg->obss_color_collision_offloaded) {
status = ucfg_mlme_set_bss_color_collision_det_sta(
hdd_ctx->psoc,
cfg->obss_color_collision_offloaded);
if (QDF_IS_STATUS_ERROR(status))
hdd_err("Failed to set CFG_BSS_CLR_COLLISION_DET_STA");
}
hdd_update_score_config(hdd_ctx);
hdd_update_multi_client_thermal_support(hdd_ctx);

View file

@ -686,6 +686,9 @@ struct pe_session *pe_create_session(struct mac_context *mac,
if (status != QDF_STATUS_SUCCESS)
pe_err("cannot create ap_ecsa_timer");
}
if (session_ptr->opmode == QDF_STA_MODE)
session_ptr->is_session_obss_color_collision_det_enabled =
mac->mlme_cfg->obss_ht40.bss_color_collision_det_sta;
pe_init_fils_info(session_ptr);
pe_init_pmf_comeback_timer(mac, session_ptr);
session_ptr->ht_client_cnt = 0;