Browse Source

qcacmn: Add ext service ready data structures in header file

In order to access ext service ready data from psoc object define
ext service ready data structures in common psoc (ext)service ready
header file.

Change-Id: I74e4759a7fd76a69d84b49539167af9ccc180828
CRs-Fixed: 2001291
Rajeev Kumar 8 years ago
parent
commit
5ab8052a25
1 changed files with 204 additions and 1 deletions
  1. 204 1
      umac/cmn_services/obj_mgr/inc/wlan_objmgr_psoc_service_ready_api.h

+ 204 - 1
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_*/