|
@@ -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_*/
|