qcacld-3.0: Advertize the STA+STA based on service caps

Currently driver advertizes the STA+STA feature in the
get supported feature without checking the FW support.

Advertize this feature only when FW supports it.

CRs-Fixed: 3123324
Change-Id: Icd6a9d2ce93eeeca8962d2c8765930986431d71f
This commit is contained in:
Sachin Ahuja
2022-01-28 19:03:44 +05:30
committed by Madan Koyyalamudi
parent b6bb38f785
commit cce8f3a127
5 changed files with 35 additions and 9 deletions

View File

@@ -213,6 +213,18 @@ policy_mgr_get_allow_mcc_go_diff_bi(struct wlan_objmgr_psoc *psoc,
QDF_STATUS policy_mgr_get_dual_mac_feature(struct wlan_objmgr_psoc *psoc, QDF_STATUS policy_mgr_get_dual_mac_feature(struct wlan_objmgr_psoc *psoc,
uint8_t *dual_mac_feature); uint8_t *dual_mac_feature);
/**
* policy_mgr_allow_multiple_sta_connections() - to find out if STA+STA feature
* is enabled.
* @psoc: pointer to psoc
*
* This API is used to find out whether STA+STA specific feature is enabled
* or not
*
* Return: true if supports else false.
*/
bool policy_mgr_allow_multiple_sta_connections(struct wlan_objmgr_psoc *psoc);
/** /**
* policy_mgr_set_dual_mac_feature() - to set the dual mac feature value * policy_mgr_set_dual_mac_feature() - to set the dual mac feature value
* @psoc: pointer to psoc * @psoc: pointer to psoc

View File

@@ -1,5 +1,6 @@
/* /*
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved. * Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2022 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
@@ -202,6 +203,19 @@ ucfg_policy_mgr_get_allow_mcc_go_diff_bi(struct wlan_objmgr_psoc *psoc,
*/ */
QDF_STATUS ucfg_policy_mgr_get_dual_mac_feature(struct wlan_objmgr_psoc *psoc, QDF_STATUS ucfg_policy_mgr_get_dual_mac_feature(struct wlan_objmgr_psoc *psoc,
uint8_t *dual_mac_feature); uint8_t *dual_mac_feature);
/**
* ucfg_policy_mgr_get_dual_sta_feature() - to find out if DUAL STA feature is
* enabled
* @psoc: pointer to psoc
*
* This API is used to find out whether dual sta specific feature is enabled
* or not.
*
* Return: true if feature is enabled, otherwise false.
*/
bool ucfg_policy_mgr_get_dual_sta_feature(struct wlan_objmgr_psoc *psoc);
/** /**
* ucfg_policy_mgr_get_force_1x1() - to find out if 1x1 connection is enforced * ucfg_policy_mgr_get_force_1x1() - to find out if 1x1 connection is enforced
* *

View File

@@ -3539,14 +3539,7 @@ static inline bool policy_mgr_is_concurrency_allowed_4_port(
{return false; } {return false; }
#endif #endif
/** bool
* policy_mgr_allow_multiple_sta_connections() - check whether multiple STA
* concurrency is allowed and F/W supported
* @psoc: Pointer to soc
*
* Return: true if supports else false.
*/
static bool
policy_mgr_allow_multiple_sta_connections(struct wlan_objmgr_psoc *psoc) policy_mgr_allow_multiple_sta_connections(struct wlan_objmgr_psoc *psoc)
{ {
struct wmi_unified *wmi_handle; struct wmi_unified *wmi_handle;

View File

@@ -201,6 +201,11 @@ QDF_STATUS ucfg_policy_mgr_get_dual_mac_feature(struct wlan_objmgr_psoc *psoc,
return policy_mgr_get_dual_mac_feature(psoc, dual_mac_feature); return policy_mgr_get_dual_mac_feature(psoc, dual_mac_feature);
} }
bool ucfg_policy_mgr_get_dual_sta_feature(struct wlan_objmgr_psoc *psoc)
{
return policy_mgr_allow_multiple_sta_connections(psoc);
}
QDF_STATUS ucfg_policy_mgr_get_force_1x1(struct wlan_objmgr_psoc *psoc, QDF_STATUS ucfg_policy_mgr_get_force_1x1(struct wlan_objmgr_psoc *psoc,
uint8_t *force_1x1) uint8_t *force_1x1)
{ {

View File

@@ -3928,7 +3928,9 @@ __wlan_hdd_cfg80211_get_supported_features(struct wiphy *wiphy,
fset |= WIFI_FEATURE_PNO; fset |= WIFI_FEATURE_PNO;
} }
#endif #endif
fset |= WIFI_FEATURE_ADDITIONAL_STA; if (ucfg_policy_mgr_get_dual_sta_feature(hdd_ctx->psoc))
fset |= WIFI_FEATURE_ADDITIONAL_STA;
#ifdef FEATURE_WLAN_TDLS #ifdef FEATURE_WLAN_TDLS
cfg_tdls_get_support_enable(hdd_ctx->psoc, &bvalue); cfg_tdls_get_support_enable(hdd_ctx->psoc, &bvalue);
if ((bvalue) && sme_is_feature_supported_by_fw(TDLS)) { if ((bvalue) && sme_is_feature_supported_by_fw(TDLS)) {