diff --git a/umac/cmn_services/obj_mgr/inc/wlan_objmgr_psoc_service_ready_api.h b/umac/cmn_services/obj_mgr/inc/wlan_objmgr_psoc_service_ready_api.h index aedc04ee5b1f..52423ad07019 100644 --- a/umac/cmn_services/obj_mgr/inc/wlan_objmgr_psoc_service_ready_api.h +++ b/umac/cmn_services/obj_mgr/inc/wlan_objmgr_psoc_service_ready_api.h @@ -25,8 +25,14 @@ #include "qdf_types.h" -/* 128 is derived from definition of WMI_MAX_SERVICE */ +/* Below constants are derived from their WMI counter part because of WIN + * direct attach limitation which avoids WMI macro usage in common code + */ #define OBJMGR_SERVICE_BM_SIZE ((128 + sizeof(uint32_t) - 1) / sizeof(uint32_t)) +#define OBJMGR_HOST_MAX_NUM_SS (8) +#define OBJMGR_MAX_HW_MODE (2) +#define OBJMGR_MAX_MAC_PHY_CAP (5) +#define OBJMGR_MAX_PHY_REG_CAP (3) /** * struct wlan_objmgr_hal_reg_capability - hal reg table in psoc @@ -121,4 +127,201 @@ struct wlan_objmgr_psoc_service_ready_param { struct wlan_objmgr_hal_reg_capability hal_reg_cap; }; +/** + * struct wlan_objmgr_host_hal_reg_capabilities_ext: Below are Reg caps per PHY. + * Please note PHY ID starts with 0. + * @phy_id: phy id starts with 0. + * @eeprom_reg_domain: regdomain value specified in EEPROM + * @eeprom_reg_domain_ext: regdomain + * @regcap1: CAP1 capabilities bit map, see REGDMN_CAP1_ defines + * @regcap2: REGDMN EEPROM CAP, see REGDMN_EEPROM_EEREGCAP_ defines + * @wireless_modes: REGDMN MODE, see REGDMN_MODE_ enum + * @low_2ghz_chan: 2G channel low + * @high_2ghz_chan: 2G channel High + * @low_5ghz_chan: 5G channel low + * @high_5ghz_chan: 5G channel High + * + * wlan_objmgr_host_hal_reg_capabilities_ext is derived from + * WMI_HOST_HAL_REG_CAPABILITIES_EXT because of WIN direct attach limitation + * which blocks WMI data structures and WMI APIs direct usage in common code. + * So whenever WMI_HOST_HAL_REG_CAPABILITIES_EXT changes + * wlan_objmgr_host_hal_reg_capabilities_ext also needs to be updated + * accordingly. + */ +struct wlan_objmgr_host_hal_reg_capabilities_ext { + uint32_t phy_id; + uint32_t eeprom_reg_domain; + uint32_t eeprom_reg_domain_ext; + uint32_t regcap1; + uint32_t regcap2; + uint32_t wireless_modes; + uint32_t low_2ghz_chan; + uint32_t high_2ghz_chan; + uint32_t low_5ghz_chan; + uint32_t high_5ghz_chan; +}; + +/** + * struct wlan_objmgr_host_mac_phy_caps - Phy caps recvd in EXT service + * @hw_mode_id: identify a particular set of HW characteristics, + * as specified by the subsequent fields. WMI_MAC_PHY_CAPABILITIES + * element must be mapped to its parent WMI_HW_MODE_CAPABILITIES + * element using hw_mode_id. No particular ordering of + * WMI_MAC_PHY_CAPABILITIES elements should be + * assumed, though in practice the elements may always be ordered + * by hw_mode_id. + * @pdev_id: pdev_id starts with 1. pdev_id 1 => phy_id 0, pdev_id 2 => phy_id 1 + * @phy_id: Starts with 0 + * @bitmap of supported modulations + * @supported_bands: supported bands, enum WLAN_BAND_CAPABILITY + * @ampdu_density: ampdu density 0 for no restriction, 1 for 1/4 us, + * 2 for 1/2 us, 3 for 1 us,4 for 2 us, 5 for 4 us, + * 6 for 8 us,7 for 16 us + * @max_bw_supported_2G: max bw supported 2G, enum wmi_channel_width + * @ht_cap_info_2G: WMI HT Capability, WMI_HT_CAP defines + * @vht_cap_info_2G: VHT capability info field of 802.11ac, WMI_VHT_CAP defines + * @vht_supp_mcs_2G: VHT Supported MCS Set field Rx/Tx same + * The max VHT-MCS for n SS subfield (where n = 1,...,8) is encoded as + * follows + * - 0 indicates support for VHT-MCS 0-7 for n spatial streams + * - 1 indicates support for VHT-MCS 0-8 for n spatial streams + * - 2 indicates support for VHT-MCS 0-9 for n spatial streams + * - 3 indicates that n spatial streams is not supported + * @he_cap_info_2G: HE capability info field of 802.11ax, WMI_HE_CAP defines + * @he_supp_mcs_2G: HE Supported MCS Set field Rx/Tx same + * @tx_chain_mask_2G: Valid Transmit chain mask + * @rx_chain_mask_2G: Valid Receive chain mask + * @max_bw_supported_5G: max bw supported 5G, enum wmi_channel_width + * @ht_cap_info_5G: WMI HT Capability, WMI_HT_CAP defines + * @vht_cap_info_5G: VHT capability info field of 802.11ac, WMI_VHT_CAP defines + * @vht_supp_mcs_5G: VHT Supported MCS Set field Rx/Tx same + * The max VHT-MCS for n SS subfield (where n = 1,...,8) is encoded as + * follows + * - 0 indicates support for VHT-MCS 0-7 for n spatial streams + * - 1 indicates support for VHT-MCS 0-8 for n spatial streams + * - 2 indicates support for VHT-MCS 0-9 for n spatial streams + * - 3 indicates that n spatial streams is not supported + * @he_cap_info_5G: HE capability info field of 802.11ax, WMI_HE_CAP defines + * @he_supp_mcs_5G: HE Supported MCS Set field Rx/Tx same + * @tx_chain_mask_5G: Valid Transmit chain mask + * @rx_chain_mask_5G: Valid Receive chain mask + * + * wlan_objmgr_host_mac_phy_caps is derived from wmi_host_mac_phy_caps + * because of WIN direct attach limitation which blocks WMI data structures and + * WMI APIs direct usage in common code. So whenever wmi_host_mac_phy_caps + * changes wlan_objmgr_host_mac_phy_caps also needs to be updated + * accordingly. + */ +struct wlan_objmgr_host_mac_phy_caps { + uint32_t hw_mode_id; + uint32_t pdev_id; + uint32_t phy_id; + uint32_t supports_11b:1, + supports_11g:1, + supports_11a:1, + supports_11n:1, + supports_11ac:1, + supports_11ax:1; + uint32_t supported_bands; + uint32_t ampdu_density; + uint32_t max_bw_supported_2G; + uint32_t ht_cap_info_2G; + uint32_t vht_cap_info_2G; + uint32_t vht_supp_mcs_2G; + uint32_t he_cap_info_2G; + uint32_t he_supp_mcs_2G; + uint32_t tx_chain_mask_2G; + uint32_t rx_chain_mask_2G; + uint32_t max_bw_supported_5G; + uint32_t ht_cap_info_5G; + uint32_t vht_cap_info_5G; + uint32_t vht_supp_mcs_5G; + uint32_t he_cap_info_5G; + uint32_t he_supp_mcs_5G; + uint32_t tx_chain_mask_5G; + uint32_t rx_chain_mask_5G; +}; + +/** + * struct wlan_objmgr_host_hw_mode_caps - HW mode capabilities in EXT event + * @hw_mode_id: identify a particular set of HW characteristics, + * as specified by the subsequent fields + * @phy_id_map: BIT0 represents phy_id 0, BIT1 represent phy_id 1 and so on + * @hw_mode_config_type: HW mode config type + */ +struct wlan_objmgr_host_hw_mode_caps { + uint32_t hw_mode_id; + uint32_t phy_id_map; + uint32_t hw_mode_config_type; +}; + +/** + * struct wlan_objmgr_host_ppe_threshold - PPE threshold + * @numss_m1: NSS - 1 + * @ru_count: Max RU count + * @ppet16_ppet8_ru3_ru0: ppet8 and ppet16 for max num ss + * + * wlan_objmgr_host_ppe_threshold is derived from wmi_host_ppe_threshold + * because of WIN direct attach limitation which blocks WMI data structures and + * WMI APIs direct usage in common code. So whenever wmi_host_ppe_threshold + * changes wlan_objmgr_host_ppe_threshold also needs to be updated + * accordingly. + */ +struct wlan_objmgr_host_ppe_threshold { + uint32_t numss_m1; + uint32_t ru_count; + uint32_t ppet16_ppet8_ru3_ru0[OBJMGR_HOST_MAX_NUM_SS]; +}; + +/** + * struct wlan_objmgr_host_service_ext_param - EXT service base params in event + * @default_conc_scan_config_bits: Default concurrenct scan config + * @default_fw_config_bits: Default HW config bits + * @wlan_objmgr_host_ppe_threshold ppet: Host PPE threshold struct + * @he_cap_info: HE capabality info + * @mpdu_density: units are microseconds + * @max_bssid_rx_filters: Maximum no of BSSID based RX filters host can program + * Value 0 means FW hasn't given any limit to host. + * @num_hw_modes: Number of HW modes in event + * @num_phy: Number of Phy mode. + * + * wlan_objmgr_host_service_ext_param is derived from wmi_host_service_ext_param + * because of WIN direct attach limitation which blocks WMI data structures and + * WMI APIs direct usage in common code. So whenever wmi_host_service_ext_param + * changes wlan_objmgr_host_service_ext_param also needs to be updated + * accordingly. + */ +struct wlan_objmgr_host_service_ext_param { + uint32_t default_conc_scan_config_bits; + uint32_t default_fw_config_bits; + struct wlan_objmgr_host_ppe_threshold ppet; + uint32_t he_cap_info; + uint32_t mpdu_density; + uint32_t max_bssid_rx_filters; + uint32_t num_hw_modes; + uint32_t num_phy; +}; + +/** + * struct wlan_objmgr_ext_service_ready_param - psoc ext service ready structure + * @service_ext_param: service ext param + * @hw_mode_caps: hw mode caps + * @mac_phy_cap: mac phy cap + * @reg_cap: regulatory capability + * + * wlan_objmgr_ext_service_ready_param is derived from + * wmi_ext_service_ready_param because of WIN direct attach limitation which + * blocks WMI data structures and WMI APIs direct usage in common code. + * So whenever wmi_ext_service_ready_param changes + * wlan_objmgr_ext_service_ready_param also needs to be updated accordingly. + */ +struct wlan_objmgr_ext_service_ready_param { + struct wlan_objmgr_host_service_ext_param service_ext_param; + struct wlan_objmgr_host_hw_mode_caps hw_mode_caps[OBJMGR_MAX_HW_MODE]; + struct wlan_objmgr_host_mac_phy_caps + mac_phy_cap[OBJMGR_MAX_MAC_PHY_CAP]; + struct wlan_objmgr_host_hal_reg_capabilities_ext + reg_cap[OBJMGR_MAX_PHY_REG_CAP]; +}; + #endif /* _WLAN_OBJMGR_PSOC_SERVICE_READY_API_H_*/