blob: 7c284d8a7486095761999fca7e85127bf3ceada9 [file] [log] [blame]
/*
* Copyright (c) 2017-2018 The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all
* copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
* AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
/**
* DOC: service_ready_param.h
*
* Public structures to access (ext)service ready data
*/
#ifndef _SERVICE_READY_PARAM_H_
#define _SERVICE_READY_PARAM_H_
#include "qdf_types.h"
/**
* struct wlan_psoc_hal_reg_capability - hal reg table in psoc
* @eeprom_rd: regdomain value specified in EEPROM
* @eeprom_rd_ext: regdomain
* @regcap1: CAP1 capabilities bit map
* @regcap2: REGDMN EEPROM CAP
* @wireless_modes: REGDMN MODE
* @low_2ghz_chan: lower 2.4GHz channels
* @high_2ghz_chan: higher 2.4 GHz channels
* @low_5ghz_chan: lower 5 GHz channels
* @high_5ghz_chan: higher 5 GHz channels
*/
struct wlan_psoc_hal_reg_capability {
uint32_t eeprom_rd;
uint32_t eeprom_rd_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_psoc_target_capability_info - target capabilities in psoc
* @phy_capability: PHY capabilities
* @max_frag_entry: Maximum frag entries
* @num_rf_chains: Number of RF chains supported
* @ht_cap_info: HT cap info
* @vht_cap_info: VHT cap info
* @vht_supp_mcs: VHT Supported MCS
* @hw_min_tx_power: HW minimum tx power
* @hw_max_tx_power: HW maximum tx power
* @sys_cap_info: sys capability info
* @min_pkt_size_enable: Enterprise mode short pkt enable
* @max_bcn_ie_size: Max beacon and probe rsp IE offload size
* @max_num_scan_channels: Max scan channels
* @max_supported_macs: max supported MCS
* @wmi_fw_sub_feat_caps: FW sub feature capabilities
* @txrx_chainmask: TXRX chain mask
* @default_dbs_hw_mode_index: DBS hw mode index
* @num_msdu_desc: number of msdu desc
* @fw_version: FW build version
* @fw_version_1: Second dword of FW version (Valid for non-tlv FW)
*/
struct wlan_psoc_target_capability_info {
uint32_t phy_capability;
uint32_t max_frag_entry;
uint32_t num_rf_chains;
uint32_t ht_cap_info;
uint32_t vht_cap_info;
uint32_t vht_supp_mcs;
uint32_t hw_min_tx_power;
uint32_t hw_max_tx_power;
uint32_t sys_cap_info;
uint32_t min_pkt_size_enable;
uint32_t max_bcn_ie_size;
uint32_t max_num_scan_channels;
uint32_t max_supported_macs;
uint32_t wmi_fw_sub_feat_caps;
uint32_t txrx_chainmask;
uint32_t default_dbs_hw_mode_index;
uint32_t num_msdu_desc;
uint32_t fw_version;
uint32_t fw_version_1;
};
/**
* struct wlan_psoc_host_ppe_threshold - PPE threshold
* @numss_m1: NSS - 1
* @ru_bit_mask: RU bit mask indicating the supported RU's
* @ppet16_ppet8_ru3_ru0: ppet8 and ppet16 for max num ss
*/
struct wlan_psoc_host_ppe_threshold {
uint32_t numss_m1;
uint32_t ru_bit_mask;
uint32_t ppet16_ppet8_ru3_ru0[PSOC_HOST_MAX_NUM_SS];
};
/**
* struct wlan_psoc_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
* @hw_mode_config_type: holds the enum wmi_hw_mode_config_type
* @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
* @he_cap_phy_info_2G: 2G HE capability phy field
* @he_cap_phy_info_5G: 5G HE capability phy field
* @he_ppet2G: 2G HE PPET info
* @he_ppet5G: 5G HE PPET info
* @chainmask_table_id: chain mask table id
*/
struct wlan_psoc_host_mac_phy_caps {
uint32_t hw_mode_id;
uint32_t pdev_id;
uint32_t phy_id;
int hw_mode_config_type;
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[PSOC_HOST_MAX_MAC_SIZE];
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[PSOC_HOST_MAX_MAC_SIZE];
uint32_t he_supp_mcs_5G;
uint32_t tx_chain_mask_5G;
uint32_t rx_chain_mask_5G;
uint32_t he_cap_phy_info_2G[PSOC_HOST_MAX_PHY_SIZE];
uint32_t he_cap_phy_info_5G[PSOC_HOST_MAX_PHY_SIZE];
struct wlan_psoc_host_ppe_threshold he_ppet2G;
struct wlan_psoc_host_ppe_threshold he_ppet5G;
uint32_t chainmask_table_id;
};
/**
* struct wlan_psoc_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_psoc_host_hw_mode_caps {
uint32_t hw_mode_id;
uint32_t phy_id_map;
uint32_t hw_mode_config_type;
};
/**
* struct wlan_psoc_host_dbr_ring_caps - Direct buffer rx module ring
* capability maintained by PSOC
* @pdev_id: Pdev id of the pdev
* @mod_id: Module id
* @ring_elems_min: Minimum number of pointers in the ring
* @min_buf_size: Minimum size of each buffer entry in the ring
* @min_buf_align: Minimum alignment of the addresses in the ring
*/
struct wlan_psoc_host_dbr_ring_caps {
uint32_t pdev_id;
uint32_t mod_id;
uint32_t ring_elems_min;
uint32_t min_buf_size;
uint32_t min_buf_align;
};
/**
* struct wlan_psoc_host_chainmask_capabilities - chain mask capabilities list
* @supports_chan_width_20: channel width 20 support for this chain mask.
* @supports_chan_width_40: channel width 40 support for this chain mask.
* @supports_chan_width_80: channel width 80 support for this chain mask.
* @supports_chan_width_160: channel width 160 support for this chain mask.
* @supports_chan_width_80P80: channel width 80P80 support for this chain mask.
* @chain_mask_2G: 2G support for this chain mask.
* @chain_mask_5G: 5G support for this chain mask.
* @chain_mask_tx: Tx support for this chain mask.
* @chain_mask_rx: Rx support for this chain mask.
* @supports_aDFS: Agile DFS support for this chain mask.
* @chainmask: chain mask value.
*/
struct wlan_psoc_host_chainmask_capabilities {
uint32_t supports_chan_width_20:1,
supports_chan_width_40:1,
supports_chan_width_80:1,
supports_chan_width_160:1,
supports_chan_width_80P80:1,
reserved:22,
chain_mask_2G:1,
chain_mask_5G:1,
chain_mask_tx:1,
chain_mask_rx:1,
supports_aDFS:1;
uint32_t chainmask;
};
/**
* struct wlan_psoc_host_chainmask_table - chain mask table
* @table_id: tableid.
* @num_valid_chainmasks: num valid chainmasks.
* @cap_list: pointer to wlan_psoc_host_chainmask_capabilities list.
*/
struct wlan_psoc_host_chainmask_table {
uint32_t table_id;
uint32_t num_valid_chainmasks;
struct wlan_psoc_host_chainmask_capabilities *cap_list;
};
/**
* struct wlan_psoc_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_psoc_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.
* @fw_build_vers_ext: Extended FW build version info.
* bits 27:0 rsvd
* bits 31:28 CRM sub ID
* @num_hw_modes: Number of HW modes in event
* @num_phy: Number of Phy mode.
* @num_chainmask_tables: Number of chain mask tables.
* @num_dbr_ring_caps: Number of direct buf rx ring capabilities
* @max_bssid_indicator: Maximum number of VAPs in MBSS IE
* @chainmask_table: Available chain mask tables.
* @sar_version: SAR version info
*/
struct wlan_psoc_host_service_ext_param {
uint32_t default_conc_scan_config_bits;
uint32_t default_fw_config_bits;
struct wlan_psoc_host_ppe_threshold ppet;
uint32_t he_cap_info;
uint32_t mpdu_density;
uint32_t max_bssid_rx_filters;
uint32_t fw_build_vers_ext;
uint32_t num_hw_modes;
uint32_t num_phy;
uint32_t num_chainmask_tables;
uint32_t num_dbr_ring_caps;
uint32_t max_bssid_indicator;
struct wlan_psoc_host_chainmask_table
chainmask_table[PSOC_MAX_CHAINMASK_TABLES];
uint32_t sar_version;
};
#endif /* _SERVICE_READY_PARAM_H_*/