qcacld-3.0: Update num tdls vdevs to 2 if fw 11be capab
Update tdls vdevs to 2 if fw 11be capable. Add WMI_SERVICE_11BE_TDLS_SUPPORT update num tdls vdevs to 2 for firmware while init_cmd_send_tlv. Change-Id: I12cced5718cb189ce1f96d204ac64108ccef5ca3 CRs-Fixed: 3436013
This commit is contained in:

committed by
Madan Koyyalamudi

parent
3f820fd0bf
commit
44804ad746
@@ -28,6 +28,7 @@
|
||||
#include "wlan_tdls_peer.h"
|
||||
#include "wlan_tdls_ct.h"
|
||||
#include "wlan_tdls_mgmt.h"
|
||||
#include "wlan_tdls_api.h"
|
||||
#include "wlan_tdls_tgt_api.h"
|
||||
#include "wlan_policy_mgr_public_struct.h"
|
||||
#include "wlan_policy_mgr_api.h"
|
||||
@@ -993,7 +994,8 @@ bool tdls_check_is_tdls_allowed(struct wlan_objmgr_vdev *vdev)
|
||||
goto exit;
|
||||
}
|
||||
|
||||
if (wlan_vdev_mlme_is_mlo_vdev(vdev)) {
|
||||
if (wlan_vdev_mlme_is_mlo_vdev(vdev) &&
|
||||
!wlan_tdls_is_fw_11be_mlo_capable(tdls_soc_obj->soc)) {
|
||||
tdls_debug("TDLS not supported on MLO vdev");
|
||||
goto exit;
|
||||
}
|
||||
@@ -1075,6 +1077,7 @@ void tdls_set_ct_mode(struct wlan_objmgr_psoc *psoc,
|
||||
struct tdls_vdev_priv_obj *tdls_vdev_obj;
|
||||
uint32_t tdls_feature_flags = 0, sta_count, p2p_count;
|
||||
bool state = false;
|
||||
bool tdls_mlo;
|
||||
QDF_STATUS status;
|
||||
|
||||
if (!tdls_check_is_tdls_allowed(vdev))
|
||||
@@ -1101,7 +1104,8 @@ void tdls_set_ct_mode(struct wlan_objmgr_psoc *psoc,
|
||||
policy_mgr_mode_specific_connection_count(psoc,
|
||||
PM_P2P_CLIENT_MODE,
|
||||
NULL);
|
||||
if (sta_count == 1 ||
|
||||
tdls_mlo = wlan_tdls_is_fw_11be_mlo_capable(psoc);
|
||||
if (sta_count == 1 || (sta_count >= 2 && tdls_mlo) ||
|
||||
(policy_mgr_get_connection_count_with_mlo(psoc) == 1 &&
|
||||
p2p_count == 1)) {
|
||||
state = true;
|
||||
@@ -1370,6 +1374,7 @@ void tdls_send_update_to_fw(struct tdls_vdev_priv_obj *tdls_vdev_obj,
|
||||
uint32_t tdls_feature_flags;
|
||||
QDF_STATUS status;
|
||||
uint8_t set_state_cnt;
|
||||
bool tdls_mlo;
|
||||
|
||||
tdls_feature_flags = tdls_soc_obj->tdls_configs.tdls_feature_flags;
|
||||
if (!TDLS_IS_ENABLED(tdls_feature_flags)) {
|
||||
@@ -1378,6 +1383,14 @@ void tdls_send_update_to_fw(struct tdls_vdev_priv_obj *tdls_vdev_obj,
|
||||
}
|
||||
|
||||
set_state_cnt = tdls_soc_obj->set_state_info.set_state_cnt;
|
||||
tdls_mlo = wlan_tdls_is_fw_11be_mlo_capable(tdls_soc_obj->soc);
|
||||
|
||||
/* for mld tdls, it needs to set the second vdev,
|
||||
* set set_state_cnt to 0 to bypass the following check.
|
||||
*/
|
||||
if (tdls_mlo && sta_connect_event && set_state_cnt == 1)
|
||||
set_state_cnt = 0;
|
||||
|
||||
if ((set_state_cnt == 0 && !sta_connect_event) ||
|
||||
(set_state_cnt && sta_connect_event)) {
|
||||
tdls_debug("FW TDLS state is already in requested state");
|
||||
@@ -1433,7 +1446,8 @@ void tdls_send_update_to_fw(struct tdls_vdev_priv_obj *tdls_vdev_obj,
|
||||
* channel switch
|
||||
*/
|
||||
if (TDLS_IS_OFF_CHANNEL_ENABLED(tdls_feature_flags) &&
|
||||
!tdls_chan_swit_prohibited)
|
||||
(!tdls_chan_swit_prohibited) &&
|
||||
(!wlan_tdls_is_fw_11be_mlo_capable(tdls_soc_obj->soc)))
|
||||
tdls_info_to_fw->tdls_options = ENA_TDLS_OFFCHAN;
|
||||
|
||||
if (TDLS_IS_BUFFER_STA_ENABLED(tdls_feature_flags))
|
||||
|
@@ -195,6 +195,7 @@ struct tdls_set_state_info {
|
||||
* based on this flag.
|
||||
* @wake_lock: wake lock
|
||||
* @runtime_lock: runtime lock
|
||||
* @fw_tdls_mlo_capable: is fw tdls mlo capable
|
||||
* @tdls_osif_init_cb: Callback to initialize the tdls private
|
||||
* @tdls_osif_deinit_cb: Callback to deinitialize the tdls private
|
||||
* @tdls_osif_update_cb: Callback for updating osif params
|
||||
@@ -249,6 +250,9 @@ struct tdls_soc_priv_obj {
|
||||
bool is_drv_supported;
|
||||
qdf_wake_lock_t wake_lock;
|
||||
qdf_runtime_lock_t runtime_lock;
|
||||
#endif
|
||||
#ifdef WLAN_FEATURE_11BE_MLO
|
||||
bool fw_tdls_mlo_capable;
|
||||
#endif
|
||||
tdls_vdev_init_cb tdls_osif_init_cb;
|
||||
tdls_vdev_deinit_cb tdls_osif_deinit_cb;
|
||||
|
@@ -26,7 +26,21 @@
|
||||
#include "wlan_objmgr_vdev_obj.h"
|
||||
|
||||
#ifdef FEATURE_WLAN_TDLS
|
||||
|
||||
#ifdef WLAN_FEATURE_11BE_MLO
|
||||
/**
|
||||
* wlan_tdls_is_fw_11be_mlo_capable() - Get TDLS 11be mlo capab
|
||||
* @psoc: psoc context
|
||||
*
|
||||
* Return: True if 11be mlo capable
|
||||
*/
|
||||
bool wlan_tdls_is_fw_11be_mlo_capable(struct wlan_objmgr_psoc *psoc);
|
||||
#else
|
||||
static inline
|
||||
bool wlan_tdls_is_fw_11be_mlo_capable(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
#ifdef FEATURE_SET
|
||||
/**
|
||||
* wlan_tdls_get_features_info() - Get tdls features info
|
||||
@@ -127,6 +141,12 @@ void wlan_tdls_get_features_info(struct wlan_objmgr_psoc *psoc,
|
||||
}
|
||||
#endif
|
||||
|
||||
static inline
|
||||
bool wlan_tdls_is_fw_11be_mlo_capable(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS wlan_tdls_teardown_links(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
|
@@ -163,6 +163,24 @@ return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef WLAN_FEATURE_11BE
|
||||
/**
|
||||
* ucfg_tdls_update_fw_mlo_capability() - update fw mlo capability
|
||||
* @psoc: psoc object
|
||||
* @is_fw_tdls_mlo_capable: bool value
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
void ucfg_tdls_update_fw_mlo_capability(struct wlan_objmgr_psoc *psoc,
|
||||
bool is_fw_tdls_mlo_capable);
|
||||
#else
|
||||
static inline
|
||||
void ucfg_tdls_update_fw_mlo_capability(struct wlan_objmgr_psoc *psoc,
|
||||
bool is_fw_tdls_mlo_capable)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* ucfg_tdls_psoc_enable() - TDLS module enable API
|
||||
* @psoc: psoc object
|
||||
|
@@ -71,6 +71,23 @@ QDF_STATUS wlan_tdls_teardown_links(struct wlan_objmgr_psoc *psoc)
|
||||
return status;
|
||||
}
|
||||
|
||||
#ifdef WLAN_FEATURE_11BE_MLO
|
||||
bool wlan_tdls_is_fw_11be_mlo_capable(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
struct tdls_soc_priv_obj *soc_obj;
|
||||
|
||||
soc_obj = wlan_objmgr_psoc_get_comp_private_obj(psoc,
|
||||
WLAN_UMAC_COMP_TDLS);
|
||||
if (!soc_obj) {
|
||||
tdls_err("Failed to get tdls psoc component");
|
||||
return false;
|
||||
}
|
||||
tdls_debug("FW 11BE capability %d", soc_obj->fw_tdls_mlo_capable);
|
||||
|
||||
return soc_obj->fw_tdls_mlo_capable;
|
||||
}
|
||||
#endif
|
||||
|
||||
void wlan_tdls_teardown_links_sync(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
struct tdls_vdev_priv_obj *vdev_priv_obj;
|
||||
|
@@ -354,6 +354,23 @@ bool ucfg_tdls_is_fw_wideband_capable(struct wlan_objmgr_psoc *psoc)
|
||||
return soc_obj->fw_tdls_wideband_capability;
|
||||
}
|
||||
|
||||
#ifdef WLAN_FEATURE_11BE
|
||||
void ucfg_tdls_update_fw_mlo_capability(struct wlan_objmgr_psoc *psoc,
|
||||
bool is_fw_tdls_mlo_capable)
|
||||
{
|
||||
struct tdls_soc_priv_obj *soc_obj;
|
||||
|
||||
soc_obj = wlan_objmgr_psoc_get_comp_private_obj(psoc,
|
||||
WLAN_UMAC_COMP_TDLS);
|
||||
if (!soc_obj) {
|
||||
tdls_err("Failed to get tdls psoc component");
|
||||
return;
|
||||
}
|
||||
|
||||
soc_obj->fw_tdls_mlo_capable = is_fw_tdls_mlo_capable;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef WLAN_FEATURE_11AX
|
||||
void ucfg_tdls_update_fw_11ax_capability(struct wlan_objmgr_psoc *psoc,
|
||||
bool is_fw_tdls_11ax_capable)
|
||||
|
@@ -1522,6 +1522,20 @@ static void hdd_update_fw_tdls_wideband_capability(struct hdd_context *hdd_ctx,
|
||||
cfg->en_tdls_wideband_support);
|
||||
}
|
||||
|
||||
#ifdef WLAN_FEATURE_11BE
|
||||
static void hdd_update_fw_tdls_mlo_capability(struct hdd_context *hdd_ctx,
|
||||
struct wma_tgt_services *cfg)
|
||||
{
|
||||
ucfg_tdls_update_fw_mlo_capability(hdd_ctx->psoc,
|
||||
cfg->en_tdls_mlo_support);
|
||||
}
|
||||
#else
|
||||
static inline
|
||||
void hdd_update_fw_tdls_mlo_capability(struct hdd_context *hdd_ctx,
|
||||
struct wma_tgt_services *cfg)
|
||||
{}
|
||||
#endif
|
||||
|
||||
#ifdef WLAN_FEATURE_11AX
|
||||
static void hdd_update_fw_tdls_11ax_capability(struct hdd_context *hdd_ctx,
|
||||
struct wma_tgt_services *cfg)
|
||||
@@ -1548,6 +1562,11 @@ void hdd_update_fw_tdls_6g_capability(struct hdd_context *hdd_ctx,
|
||||
{}
|
||||
#endif
|
||||
#else
|
||||
static inline
|
||||
void hdd_update_fw_tdls_mlo_capability(struct hdd_context *hdd_ctx,
|
||||
struct wma_tgt_services *cfg)
|
||||
{}
|
||||
|
||||
static inline
|
||||
void hdd_update_fw_tdls_11ax_capability(struct hdd_context *hdd_ctx,
|
||||
struct wma_tgt_services *cfg)
|
||||
@@ -1693,6 +1712,7 @@ static void hdd_update_tgt_services(struct hdd_context *hdd_ctx,
|
||||
cfg_get(hdd_ctx->psoc,
|
||||
CFG_THERMAL_MITIGATION_ENABLE);
|
||||
hdd_update_fw_tdls_11ax_capability(hdd_ctx, cfg);
|
||||
hdd_update_fw_tdls_mlo_capability(hdd_ctx, cfg);
|
||||
hdd_set_dynamic_macaddr_update_capability(hdd_ctx, cfg);
|
||||
hdd_update_fw_tdls_6g_capability(hdd_ctx, cfg);
|
||||
hdd_update_fw_tdls_wideband_capability(hdd_ctx, cfg);
|
||||
|
@@ -41,6 +41,7 @@
|
||||
* @en_tdls_wideband_support: Get TDLS wideband support
|
||||
* @en_tdls_11ax_support: Get TDLS ax support
|
||||
* @en_tdls_6g_support: Get TDLS 6g fw capability
|
||||
* @en_tdls_mlo_support: Get TDLS mlo fw support
|
||||
* @en_roam_offload: enable roam offload
|
||||
* @en_11ax: enable 11ax
|
||||
* @is_fw_mawc_capable: Motion Aided Wireless Connectivity feature
|
||||
@@ -80,6 +81,9 @@ struct wma_tgt_services {
|
||||
bool en_tdls_11ax_support;
|
||||
bool en_tdls_6g_support;
|
||||
#endif
|
||||
#ifdef WLAN_FEATURE_11BE
|
||||
bool en_tdls_mlo_support;
|
||||
#endif
|
||||
#endif /* FEATURE_WLAN_TDLS */
|
||||
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
|
||||
bool en_roam_offload;
|
||||
|
@@ -3358,6 +3358,25 @@ static void wma_get_service_cap_club_get_sta_in_ll_stats_req(
|
||||
}
|
||||
#endif /* FEATURE_CLUB_LL_STATS_AND_GET_STATION */
|
||||
|
||||
#ifdef WLAN_FEATURE_11BE_MLO
|
||||
static void
|
||||
wma_update_num_tdls_vdevs_if_11be_mlo(struct wlan_objmgr_psoc *psoc,
|
||||
target_resource_config *wlan_res_cfg)
|
||||
{
|
||||
if (!wlan_tdls_is_fw_11be_mlo_capable(psoc))
|
||||
return;
|
||||
|
||||
wlan_res_cfg->num_tdls_vdevs = WLAN_UMAC_MLO_MAX_VDEVS;
|
||||
wma_debug("update tdls num vdevs %d", wlan_res_cfg->num_tdls_vdevs);
|
||||
}
|
||||
#else
|
||||
static void
|
||||
wma_update_num_tdls_vdevs_if_11be_mlo(struct wlan_objmgr_psoc *psoc,
|
||||
target_resource_config *wlan_res_cfg)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* wma_open() - Allocate wma context and initialize it.
|
||||
* @cds_context: cds context
|
||||
@@ -3545,6 +3564,7 @@ QDF_STATUS wma_open(struct wlan_objmgr_psoc *psoc,
|
||||
}
|
||||
|
||||
wma_set_default_tgt_config(wma_handle, wlan_res_cfg, cds_cfg);
|
||||
wma_update_num_tdls_vdevs_if_11be_mlo(psoc, wlan_res_cfg);
|
||||
|
||||
qdf_status = wlan_mlme_get_tx_chainmask_cck(psoc, &val);
|
||||
if (qdf_status != QDF_STATUS_SUCCESS) {
|
||||
@@ -5058,6 +5078,31 @@ wma_get_tdls_wideband_support(struct wmi_unified *wmi_handle,
|
||||
wmi_service_tdls_wideband_support);
|
||||
}
|
||||
|
||||
#ifdef WLAN_FEATURE_11BE
|
||||
/**
|
||||
* wma_get_tdls_mlo_support() - update tgt service with service tdls
|
||||
* be support
|
||||
* @wmi_handle: Unified wmi handle
|
||||
* @cfg: target services
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
static inline void
|
||||
wma_get_tdls_mlo_support(struct wmi_unified *wmi_handle,
|
||||
struct wma_tgt_services *cfg)
|
||||
{
|
||||
cfg->en_tdls_mlo_support =
|
||||
wmi_service_enabled(wmi_handle,
|
||||
wmi_service_tdls_mlo_support);
|
||||
}
|
||||
#else
|
||||
static inline void
|
||||
wma_get_tdls_mlo_support(struct wmi_unified *wmi_handle,
|
||||
struct wma_tgt_services *cfg)
|
||||
{
|
||||
}
|
||||
#endif /* WLAN_FEATURE_11BE */
|
||||
|
||||
#ifdef WLAN_FEATURE_11AX
|
||||
/**
|
||||
* wma_get_tdls_ax_support() - update tgt service with service tdls ax support
|
||||
@@ -5097,6 +5142,12 @@ wma_get_tdls_6g_support(struct wmi_unified *wmi_handle,
|
||||
|
||||
#endif
|
||||
#else
|
||||
static inline void
|
||||
wma_get_tdls_mlo_support(struct wmi_unified *wmi_handle,
|
||||
struct wma_tgt_services *cfg)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void
|
||||
wma_get_tdls_ax_support(struct wmi_unified *wmi_handle,
|
||||
struct wma_tgt_services *cfg)
|
||||
@@ -5272,6 +5323,7 @@ static inline void wma_update_target_services(struct wmi_unified *wmi_handle,
|
||||
|
||||
wma_get_igmp_offload_enable(wmi_handle, cfg);
|
||||
wma_get_tdls_ax_support(wmi_handle, cfg);
|
||||
wma_get_tdls_mlo_support(wmi_handle, cfg);
|
||||
wma_get_tdls_6g_support(wmi_handle, cfg);
|
||||
wma_get_tdls_wideband_support(wmi_handle, cfg);
|
||||
wma_get_dynamic_vdev_macaddr_support(wmi_handle, cfg);
|
||||
|
Reference in New Issue
Block a user