diff --git a/wmi/inc/wmi_unified_param.h b/wmi/inc/wmi_unified_param.h index 6a66829f32..abe21c8c59 100644 --- a/wmi/inc/wmi_unified_param.h +++ b/wmi/inc/wmi_unified_param.h @@ -6692,7 +6692,6 @@ typedef enum { * @enable_tdls_offchannel: Enable tdls offchannel * @enable_tdls_capability_enhance: Enable tdls capability enhance * @max_tdls_peers: Max tdls peers - * @sta_dual_p2p_support: Indicates sta+p2p+p2p support * @peer_bigdata_getbssinfo_support: Indicates bigdata getbssinfo support * @peer_bigdata_assocreject_info_support: Indicates bigdata assoc reject * info support @@ -6700,6 +6699,7 @@ typedef enum { * @feature_set_version: Indicates feature set version info * @num_antennas: Indicates number of antennas supported * @sta_dump_support: Indicates sta dump info support + * @iface_combinations: Iface combination bit map */ struct target_feature_set { WMI_HOST_WIFI_STANDARD wifi_standard; @@ -6753,13 +6753,13 @@ struct target_feature_set { bool enable_tdls_offchannel; bool enable_tdls_capability_enhance; uint8_t max_tdls_peers; - bool sta_dual_p2p_support; bool peer_bigdata_getbssinfo_support; bool peer_bigdata_assocreject_info_support; bool peer_getstainfo_support; uint16_t feature_set_version; WMI_HOST_NUM_ANTENNAS num_antennas; bool sta_dump_support; + uint32_t iface_combinations; }; #endif diff --git a/wmi/src/wmi_unified_tlv.c b/wmi/src/wmi_unified_tlv.c index 24eddbea4e..d3c8a292e8 100644 --- a/wmi/src/wmi_unified_tlv.c +++ b/wmi/src/wmi_unified_tlv.c @@ -68,6 +68,10 @@ #include #include +#ifdef FEATURE_SET +#include "wlan_mlme_public_struct.h" +#endif + /* * If FW supports WMI_SERVICE_SCAN_CONFIG_PER_CHANNEL, * then channel_list may fill the upper 12 bits with channel flags, @@ -10191,7 +10195,50 @@ static inline void copy_feature_set_info(uint32_t *feature_set_bitmap, WMI_SET_MAX_TDLS_PEERS_SUPPORT(feature_set_bitmap, feature_set->max_tdls_peers); WMI_SET_STA_DUAL_P2P_SUPPORT(feature_set_bitmap, - feature_set->sta_dual_p2p_support); + (feature_set->iface_combinations & + MLME_IFACE_STA_DUAL_P2P_SUPPORT) > 0); + WMI_SET_STA_P2P_SUPPORT(feature_set_bitmap, + (feature_set->iface_combinations & + MLME_IFACE_STA_P2P_SUPPORT) > 0); + WMI_SET_STA_SAP_SUPPORT(feature_set_bitmap, + (feature_set->iface_combinations & + MLME_IFACE_STA_SAP_SUPPORT) > 0); + WMI_SET_STA_NAN_SUPPORT(feature_set_bitmap, + (feature_set->iface_combinations & + MLME_IFACE_STA_NAN_SUPPORT) > 0); + WMI_SET_STA_TDLS_SUPPORT(feature_set_bitmap, + (feature_set->iface_combinations & + MLME_IFACE_STA_TDLS_SUPPORT) > 0); + WMI_SET_STA_SAP_P2P_SUPPORT(feature_set_bitmap, + (feature_set->iface_combinations & + MLME_IFACE_STA_SAP_P2P_SUPPORT) > 0); + WMI_SET_STA_SAP_NAN_SUPPORT(feature_set_bitmap, + (feature_set->iface_combinations & + MLME_IFACE_STA_SAP_NAN_SUPPORT) > 0); + WMI_SET_STA_P2P_NAN_SUPPORT(feature_set_bitmap, + (feature_set->iface_combinations & + MLME_IFACE_STA_P2P_NAN_SUPPORT) > 0); + WMI_SET_STA_P2P_TDLS_SUPPORT(feature_set_bitmap, + (feature_set->iface_combinations & + MLME_IFACE_STA_P2P_TDLS_SUPPORT) > 0); + WMI_SET_STA_SAP_TDLS_SUPPORT(feature_set_bitmap, + (feature_set->iface_combinations & + MLME_IFACE_STA_SAP_TDLS_SUPPORT) > 0); + WMI_SET_STA_NAN_TDLS_SUPPORT(feature_set_bitmap, + (feature_set->iface_combinations & + MLME_IFACE_STA_NAN_TDLS_SUPPORT) > 0); + WMI_SET_STA_SAP_P2P_TDLS_SUPPORT(feature_set_bitmap, + (feature_set->iface_combinations & + MLME_IFACE_STA_SAP_P2P_TDLS_SUPPORT) > 0); + WMI_SET_STA_SAP_NAN_TDLS_SUPPORT(feature_set_bitmap, + (feature_set->iface_combinations & + MLME_IFACE_STA_SAP_NAN_TDLS_SUPPORT) > 0); + WMI_SET_STA_P2P_P2P_TDLS_SUPPORT(feature_set_bitmap, + (feature_set->iface_combinations & + MLME_IFACE_STA_P2P_P2P_TDLS_SUPPORT) > 0); + WMI_SET_STA_P2P_NAN_TDLS_SUPPORT(feature_set_bitmap, + (feature_set->iface_combinations & + MLME_IFACE_STA_P2P_NAN_TDLS_SUPPORT) > 0); WMI_SET_PEER_BIGDATA_GETBSSINFO_API_SUPPORT( feature_set_bitmap, feature_set->peer_bigdata_getbssinfo_support);