qcacld-3.0: Send additional interface combinations to fw

As part of set feature set command, update STA_P2P,
STA_SAP, STA_NAN, STA_TDLS, STA_SAP_P2P, STA_SAP_NAN,
STA_P2P_NAN, STA_P2P_TDLS, STA_SAP_TDLS, STA_NAN_TDLS,
STA_SAP_P2P_TDLS, STA_SAP_NAN_TDLS, STA_P2P_P2P_TDLS,
STA_P2P_NAN_TDLS iface combinations to fw.

Also use WLAN_FEATURE_NO_P2P_CONCURRENCY sta dual p2p
support combination.

Change-Id: I315c219f79995dedb0c2856d326838351d8a3d5e
CRs-Fixed: 3674696
This commit is contained in:
Asutosh Mohapatra
2023-12-04 03:35:33 -08:00
committed by Ravindra Konda
parent c826d492e5
commit a901bcc17e
3 changed files with 204 additions and 7 deletions

View File

@@ -2960,6 +2960,42 @@ struct wlan_change_bi {
};
#ifdef FEATURE_SET
/**
* enum wlan_mlme_iface_combinations - Iface combinations
* @MLME_IFACE_STA_P2P_SUPPORT: STA + P2P concurrency bit
* @MLME_IFACE_STA_SAP_SUPPORT: STA + SAP concurrency bit
* @MLME_IFACE_STA_NAN_SUPPORT: STA + NAN concurrency bit
* @MLME_IFACE_STA_TDLS_SUPPORT: STA + TDLS concurrency bit
* @MLME_IFACE_STA_DUAL_P2P_SUPPORT: STA + P2P + P2P concurrency bit
* @MLME_IFACE_STA_SAP_P2P_SUPPORT: STA + SAP + P2P concurrency bit
* @MLME_IFACE_STA_SAP_NAN_SUPPORT: STA + SAP + NAN concurrency bit
* @MLME_IFACE_STA_P2P_NAN_SUPPORT: STA + P2P + NAN concurrency bit
* @MLME_IFACE_STA_P2P_TDLS_SUPPORT: STA + P2P + TDLS concurrency bit
* @MLME_IFACE_STA_SAP_TDLS_SUPPORT: STA + SAP + TDLS concurrency bit
* @MLME_IFACE_STA_NAN_TDLS_SUPPORT: STA + NAN + TDLS concurrency bit
* @MLME_IFACE_STA_SAP_P2P_TDLS_SUPPORT: STA + SAP + P2P + TDLS concurrency bit
* @MLME_IFACE_STA_SAP_NAN_TDLS_SUPPORT: STA + SAP + NAN + TDLS concurrency bit
* @MLME_IFACE_STA_P2P_P2P_TDLS_SUPPORT: STA + P2P + P2P + TDLS concurrency bit
* @MLME_IFACE_STA_P2P_NAN_TDLS_SUPPORT: STA + P2P + NAN + TDLS concurrency bit
*/
enum wlan_mlme_iface_combinations {
MLME_IFACE_STA_P2P_SUPPORT = 0x1,
MLME_IFACE_STA_SAP_SUPPORT = 0x2,
MLME_IFACE_STA_NAN_SUPPORT = 0x4,
MLME_IFACE_STA_TDLS_SUPPORT = 0x8,
MLME_IFACE_STA_DUAL_P2P_SUPPORT = 0x10,
MLME_IFACE_STA_SAP_P2P_SUPPORT = 0x20,
MLME_IFACE_STA_SAP_NAN_SUPPORT = 0x40,
MLME_IFACE_STA_P2P_NAN_SUPPORT = 0x80,
MLME_IFACE_STA_P2P_TDLS_SUPPORT = 0x100,
MLME_IFACE_STA_SAP_TDLS_SUPPORT = 0x200,
MLME_IFACE_STA_NAN_TDLS_SUPPORT = 0x400,
MLME_IFACE_STA_SAP_P2P_TDLS_SUPPORT = 0x800,
MLME_IFACE_STA_SAP_NAN_TDLS_SUPPORT = 0x1000,
MLME_IFACE_STA_P2P_P2P_TDLS_SUPPORT = 0x2000,
MLME_IFACE_STA_P2P_NAN_TDLS_SUPPORT = 0x4000,
};
/**
* struct wlan_mlme_features - Mlme feature set structure
* @enable_wifi_optimizer: indicates wifi optimizer is enabled or disabled
@@ -2979,8 +3015,8 @@ struct wlan_change_bi {
* @roaming_ctrl_get_cu: Roaming ctrl get cu enabled or disabled
* @vendor_req_1_version: Vendor requirement version 1
* @vendor_req_2_version: Vendor requirement version 2
* @sta_dual_p2p_support: STA + dual p2p support enabled or not
* @enable2x2: Enable 2x2
* @iface_combinations: iface combination bitmask
*/
struct wlan_mlme_features {
bool enable_wifi_optimizer;
@@ -2999,8 +3035,8 @@ struct wlan_mlme_features {
bool roaming_ctrl_get_cu;
WMI_HOST_VENDOR1_REQ1_VERSION vendor_req_1_version;
WMI_HOST_VENDOR1_REQ2_VERSION vendor_req_2_version;
bool sta_dual_p2p_support;
bool enable2x2;
uint32_t iface_combinations;
};
#endif

View File

@@ -7303,7 +7303,8 @@ wlan_mlme_get_adaptive11r_enabled(struct wlan_objmgr_psoc *psoc, bool *val)
}
#endif
#ifdef WLAN_FEATURE_P2P_P2P_STA
#if defined(WLAN_FEATURE_P2P_P2P_STA) && \
!defined(WLAN_FEATURE_NO_P2P_CONCURRENCY)
static bool
wlan_mlme_get_p2p_p2p_host_conc_support(void)
{
@@ -7317,6 +7318,167 @@ wlan_mlme_get_p2p_p2p_host_conc_support(void)
}
#endif
#ifndef WLAN_FEATURE_NO_STA_SAP_CONCURRENCY
static bool
wlan_mlme_get_sta_sap_host_conc_support(void)
{
return true;
}
#else
static bool
wlan_mlme_get_sta_sap_host_conc_support(void)
{
return false;
}
#endif
#ifndef WLAN_FEATURE_NO_STA_NAN_CONCURRENCY
static bool
wlan_mlme_get_sta_nan_host_conc_support(void)
{
return true;
}
#else
static bool
wlan_mlme_get_sta_nan_host_conc_support(void)
{
return false;
}
#endif
#ifdef FEATURE_WLAN_TDLS
static bool
wlan_mlme_get_sta_tdls_host_conc_support(void)
{
return true;
}
#else
static bool
wlan_mlme_get_sta_tdls_host_conc_support(void)
{
return false;
}
#endif
#if !defined(WLAN_FEATURE_NO_STA_SAP_CONCURRENCY) && \
(!defined(WLAN_FEATURE_NO_P2P_CONCURRENCY) || \
defined(WLAN_FEATURE_STA_SAP_P2P_CONCURRENCY))
static bool
wlan_mlme_get_sta_sap_p2p_host_conc_support(void)
{
return true;
}
#else
static bool
wlan_mlme_get_sta_sap_p2p_host_conc_support(void)
{
return false;
}
#endif
#if defined(FEATURE_WLAN_TDLS)
static bool
wlan_mlme_get_sta_p2p_tdls_host_conc_support(void)
{
return true;
}
#else
static bool
wlan_mlme_get_sta_p2p_tdls_host_conc_support(void)
{
return false;
}
#endif
#if defined(FEATURE_WLAN_TDLS) && !defined(WLAN_FEATURE_NO_STA_SAP_CONCURRENCY)
static bool
wlan_mlme_get_sta_sap_tdls_host_conc_support(void)
{
return true;
}
#else
static bool
wlan_mlme_get_sta_sap_tdls_host_conc_support(void)
{
return false;
}
#endif
#if defined(FEATURE_WLAN_TDLS) && \
!defined(WLAN_FEATURE_NO_STA_SAP_CONCURRENCY) && \
(!defined(WLAN_FEATURE_NO_P2P_CONCURRENCY) || \
defined(WLAN_FEATURE_STA_SAP_P2P_CONCURRENCY))
static bool
wlan_mlme_get_sta_sap_p2p_tdls_host_conc_support(void)
{
return true;
}
#else
static bool
wlan_mlme_get_sta_sap_p2p_tdls_host_conc_support(void)
{
return false;
}
#endif
#if defined(FEATURE_WLAN_TDLS) && defined(WLAN_FEATURE_P2P_P2P_STA) && \
!defined(WLAN_FEATURE_NO_P2P_CONCURRENCY)
static bool
wlan_mlme_get_sta_p2p_p2p_tdls_host_conc_support(void)
{
return true;
}
#else
static bool
wlan_mlme_get_sta_p2p_p2p_tdls_host_conc_support(void)
{
return false;
}
#endif
/**
* wlan_mlme_set_iface_combinations() - Set interface combinations
* @mlme_feature_set: Pointer to wlan_mlme_features
*
* Return: None
*/
static void
wlan_mlme_set_iface_combinations(struct wlan_mlme_features *mlme_feature_set)
{
mlme_feature_set->iface_combinations = 0;
mlme_feature_set->iface_combinations |= MLME_IFACE_STA_P2P_SUPPORT;
if (wlan_mlme_get_sta_sap_host_conc_support())
mlme_feature_set->iface_combinations |=
MLME_IFACE_STA_SAP_SUPPORT;
if (wlan_mlme_get_sta_nan_host_conc_support())
mlme_feature_set->iface_combinations |=
MLME_IFACE_STA_NAN_SUPPORT;
if (wlan_mlme_get_sta_tdls_host_conc_support())
mlme_feature_set->iface_combinations |=
MLME_IFACE_STA_TDLS_SUPPORT;
if (wlan_mlme_get_p2p_p2p_host_conc_support())
mlme_feature_set->iface_combinations |=
MLME_IFACE_STA_DUAL_P2P_SUPPORT;
if (wlan_mlme_get_sta_sap_p2p_host_conc_support())
mlme_feature_set->iface_combinations |=
MLME_IFACE_STA_SAP_P2P_SUPPORT;
if (wlan_mlme_get_sta_p2p_tdls_host_conc_support())
mlme_feature_set->iface_combinations |=
MLME_IFACE_STA_P2P_TDLS_SUPPORT;
if (wlan_mlme_get_sta_sap_tdls_host_conc_support())
mlme_feature_set->iface_combinations |=
MLME_IFACE_STA_SAP_TDLS_SUPPORT;
if (wlan_mlme_get_sta_sap_p2p_tdls_host_conc_support())
mlme_feature_set->iface_combinations |=
MLME_IFACE_STA_SAP_P2P_TDLS_SUPPORT;
if (wlan_mlme_get_sta_p2p_p2p_tdls_host_conc_support())
mlme_feature_set->iface_combinations |=
MLME_IFACE_STA_P2P_P2P_TDLS_SUPPORT;
mlme_debug("iface combinations = %x",
mlme_feature_set->iface_combinations);
}
void wlan_mlme_get_feature_info(struct wlan_objmgr_psoc *psoc,
struct wlan_mlme_features *mlme_feature_set)
{
@@ -7363,8 +7525,7 @@ void wlan_mlme_get_feature_info(struct wlan_objmgr_psoc *psoc,
mlme_feature_set->vendor_req_2_version =
WMI_HOST_VENDOR1_REQ2_VERSION_3_50;
mlme_feature_set->sta_dual_p2p_support =
wlan_mlme_get_p2p_p2p_host_conc_support();
wlan_mlme_set_iface_combinations(mlme_feature_set);
wlan_mlme_get_vht_enable2x2(psoc, &mlme_feature_set->enable2x2);
}
#endif