blob: 9c45136341498cf4df14b6955bd823127c0f8e33 [file] [log] [blame]
/******************************************************************************
*
* Copyright(c) 2013 - 2015 Intel Corporation. All rights reserved.
* Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH
* Copyright (C) 2018 Intel Corporation
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* * Neither the name Intel Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*****************************************************************************/
#ifndef SRC_CONNECTIVITY_WLAN_DRIVERS_THIRD_PARTY_INTEL_IWLWIFI_IWL_DBG_CFG_H_
#define SRC_CONNECTIVITY_WLAN_DRIVERS_THIRD_PARTY_INTEL_IWLWIFI_IWL_DBG_CFG_H_
/*
* with DBG_CFG_REINCLUDE set this file should contain nothing
* but IWL_DBG_CFG() macro invocations so it can be used in
* the C file to generate more code (e.g. for debugfs and the
* struct initialization with default values)
*/
#ifndef DBG_CFG_REINCLUDE
#include <linux/types.h>
struct iwl_dbg_cfg_bin {
const void* data;
unsigned int len;
};
struct iwl_dbg_cfg {
bool loaded;
#define IWL_DBG_CFG(type, name) type name;
#define IWL_DBG_CFG_NODEF(type, name) type name;
#define IWL_DBG_CFG_BIN(name) struct iwl_dbg_cfg_bin name;
#define IWL_DBG_CFG_STR(name) const char* name;
#define IWL_DBG_CFG_BINA(name, max) \
struct iwl_dbg_cfg_bin name[max]; \
int n_##name;
#define IWL_DBG_CFG_RANGE(type, name, min, max) IWL_DBG_CFG(type, name)
#define IWL_MOD_PARAM(type, name) /* do nothing */
#define IWL_MVM_MOD_PARAM(type, name) \
type mvm_##name; \
bool __mvm_mod_param_##name;
#endif /* DBG_CFG_REINCLUDE */
#if IS_ENABLED(CPTCFG_IWLXVT)
IWL_DBG_CFG(uint32_t, XVT_DEFAULT_DBGM_MEM_POWER)
IWL_DBG_CFG(uint32_t, XVT_DEFAULT_DBGM_LMAC_MASK)
IWL_DBG_CFG(uint32_t, XVT_DEFAULT_DBGM_PRPH_MASK)
IWL_MOD_PARAM(bool, xvt_default_mode)
#endif
IWL_DBG_CFG_NODEF(bool, disable_52GHz)
IWL_DBG_CFG_NODEF(bool, disable_24GHz)
#if IS_ENABLED(CPTCFG_IWLMVM) || IS_ENABLED(CPTCFG_IWLFMAC)
IWL_DBG_CFG_NODEF(uint32_t, MVM_CALIB_OVERRIDE_CONTROL)
IWL_DBG_CFG_NODEF(uint32_t, MVM_CALIB_INIT_FLOW)
IWL_DBG_CFG_NODEF(uint32_t, MVM_CALIB_INIT_EVENT)
IWL_DBG_CFG_NODEF(uint32_t, MVM_CALIB_D0_FLOW)
IWL_DBG_CFG_NODEF(uint32_t, MVM_CALIB_D0_EVENT)
IWL_DBG_CFG_NODEF(uint32_t, MVM_CALIB_D3_FLOW)
IWL_DBG_CFG_NODEF(uint32_t, MVM_CALIB_D3_EVENT)
IWL_DBG_CFG_NODEF(bool, enable_timestamp_marker_cmd)
#endif
#if IS_ENABLED(CPTCFG_IWLMVM)
IWL_DBG_CFG(uint32_t, MVM_DEFAULT_PS_TX_DATA_TIMEOUT)
IWL_DBG_CFG(uint32_t, MVM_DEFAULT_PS_RX_DATA_TIMEOUT)
IWL_DBG_CFG(uint32_t, MVM_WOWLAN_PS_TX_DATA_TIMEOUT)
IWL_DBG_CFG(uint32_t, MVM_WOWLAN_PS_RX_DATA_TIMEOUT)
IWL_DBG_CFG(uint32_t, MVM_SHORT_PS_TX_DATA_TIMEOUT)
IWL_DBG_CFG(uint32_t, MVM_SHORT_PS_RX_DATA_TIMEOUT)
IWL_DBG_CFG(uint32_t, MVM_UAPSD_TX_DATA_TIMEOUT)
IWL_DBG_CFG(uint32_t, MVM_UAPSD_RX_DATA_TIMEOUT)
IWL_DBG_CFG(uint32_t, MVM_UAPSD_QUEUES)
IWL_DBG_CFG_NODEF(bool, MVM_USE_PS_POLL)
IWL_DBG_CFG(uint8_t, MVM_PS_HEAVY_TX_THLD_PACKETS)
IWL_DBG_CFG(uint8_t, MVM_PS_HEAVY_RX_THLD_PACKETS)
IWL_DBG_CFG(uint8_t, MVM_PS_SNOOZE_HEAVY_TX_THLD_PACKETS)
IWL_DBG_CFG(uint8_t, MVM_PS_SNOOZE_HEAVY_RX_THLD_PACKETS)
IWL_DBG_CFG(uint8_t, MVM_PS_HEAVY_TX_THLD_PERCENT)
IWL_DBG_CFG(uint8_t, MVM_PS_HEAVY_RX_THLD_PERCENT)
IWL_DBG_CFG(uint16_t, MVM_PS_SNOOZE_INTERVAL)
IWL_DBG_CFG(uint16_t, MVM_PS_SNOOZE_WINDOW)
IWL_DBG_CFG(uint16_t, MVM_WOWLAN_PS_SNOOZE_WINDOW)
IWL_DBG_CFG(uint8_t, MVM_LOWLAT_QUOTA_MIN_PERCENT)
IWL_DBG_CFG(uint16_t, MVM_BT_COEX_EN_RED_TXP_THRESH)
IWL_DBG_CFG(uint16_t, MVM_BT_COEX_DIS_RED_TXP_THRESH)
IWL_DBG_CFG(uint32_t, MVM_BT_COEX_ANTENNA_COUPLING_THRS)
IWL_DBG_CFG(uint32_t, MVM_BT_COEX_MPLUT_REG0)
IWL_DBG_CFG(uint32_t, MVM_BT_COEX_MPLUT_REG1)
IWL_DBG_CFG(bool, MVM_BT_COEX_SYNC2SCO)
IWL_DBG_CFG(bool, MVM_BT_COEX_MPLUT)
IWL_DBG_CFG(bool, MVM_BT_COEX_TTC)
IWL_DBG_CFG(bool, MVM_BT_COEX_RRC)
IWL_DBG_CFG(bool, MVM_FW_MCAST_FILTER_PASS_ALL)
IWL_DBG_CFG(bool, MVM_FW_BCAST_FILTER_PASS_ALL)
IWL_DBG_CFG(bool, MVM_TOF_IS_RESPONDER)
IWL_DBG_CFG(bool, MVM_P2P_LOWLATENCY_PS_ENABLE)
IWL_DBG_CFG(bool, MVM_SW_TX_CSUM_OFFLOAD)
IWL_DBG_CFG(bool, MVM_HW_CSUM_DISABLE)
IWL_DBG_CFG(bool, MVM_PARSE_NVM)
IWL_DBG_CFG(bool, MVM_ADWELL_ENABLE)
IWL_DBG_CFG(uint16_t, MVM_ADWELL_MAX_BUDGET)
IWL_DBG_CFG(uint32_t, MVM_TCM_LOAD_MEDIUM_THRESH)
IWL_DBG_CFG(uint32_t, MVM_TCM_LOAD_HIGH_THRESH)
IWL_DBG_CFG(uint32_t, MVM_TCM_LOWLAT_ENABLE_THRESH)
IWL_DBG_CFG(uint32_t, MVM_UAPSD_NONAGG_PERIOD)
IWL_DBG_CFG_RANGE(uint8_t, MVM_UAPSD_NOAGG_LIST_LEN, 1, IWL_MVM_UAPSD_NOAGG_BSSIDS_NUM)
#ifdef CPTCFG_IWLMVM_ADVANCED_QUOTA_MGMT
IWL_DBG_CFG(bool, MVM_DYNQUOTA_DISABLED)
IWL_DBG_CFG_RANGE(uint8_t, MVM_DYNQUOTA_MIN_PERCENT, 0, 100)
IWL_DBG_CFG_RANGE(uint8_t, MVM_DYNQUOTA_GUARD_PERCENT, 0, 100)
IWL_DBG_CFG_RANGE(uint8_t, MVM_DYNQUOTA_HIGH_WM_PERCENT, 0, 100)
IWL_DBG_CFG_RANGE(uint8_t, MVM_DYNQUOTA_LOW_WM_PERCENT, 0, 100)
IWL_DBG_CFG_RANGE(uint8_t, MVM_DYNQUOTA_START_PERCENT, 0, 100)
IWL_DBG_CFG_RANGE(uint8_t, MVM_DYNQUOTA_INC_HIGH_PERCENT, 0, 100)
IWL_DBG_CFG_RANGE(uint8_t, MVM_LOWLAT_QUOTA_MIN_PCT_P2PCLIENT, 0, 100)
IWL_DBG_CFG_RANGE(uint8_t, MVM_LOWLAT_QUOTA_MIN_PCT_P2PGO, 0, 100)
#endif /* CPTCFG_IWLMVM_ADVANCED_QUOTA_MGMT */
IWL_DBG_CFG(uint8_t, MVM_QUOTA_THRESHOLD)
IWL_DBG_CFG(uint8_t, MVM_RS_RSSI_BASED_INIT_RATE)
IWL_DBG_CFG(uint8_t, MVM_RS_80_20_FAR_RANGE_TWEAK)
IWL_DBG_CFG(uint8_t, MVM_RS_NUM_TRY_BEFORE_ANT_TOGGLE)
IWL_DBG_CFG(uint8_t, MVM_RS_HT_VHT_RETRIES_PER_RATE)
IWL_DBG_CFG(uint8_t, MVM_RS_HT_VHT_RETRIES_PER_RATE_TW)
IWL_DBG_CFG(uint8_t, MVM_RS_INITIAL_MIMO_NUM_RATES)
IWL_DBG_CFG(uint8_t, MVM_RS_INITIAL_SISO_NUM_RATES)
IWL_DBG_CFG(uint8_t, MVM_RS_INITIAL_LEGACY_NUM_RATES)
IWL_DBG_CFG(uint8_t, MVM_RS_INITIAL_LEGACY_RETRIES)
IWL_DBG_CFG(uint8_t, MVM_RS_SECONDARY_LEGACY_RETRIES)
IWL_DBG_CFG(uint8_t, MVM_RS_SECONDARY_LEGACY_NUM_RATES)
IWL_DBG_CFG(uint8_t, MVM_RS_SECONDARY_SISO_NUM_RATES)
IWL_DBG_CFG(uint8_t, MVM_RS_SECONDARY_SISO_RETRIES)
IWL_DBG_CFG(uint8_t, MVM_RS_RATE_MIN_FAILURE_TH)
IWL_DBG_CFG(uint8_t, MVM_RS_RATE_MIN_SUCCESS_TH)
IWL_DBG_CFG(uint8_t, MVM_RS_STAY_IN_COLUMN_TIMEOUT)
IWL_DBG_CFG(uint8_t, MVM_RS_IDLE_TIMEOUT)
IWL_DBG_CFG(uint8_t, MVM_RS_MISSED_RATE_MAX)
IWL_DBG_CFG(uint16_t, MVM_RS_LEGACY_FAILURE_LIMIT)
IWL_DBG_CFG(uint16_t, MVM_RS_LEGACY_SUCCESS_LIMIT)
IWL_DBG_CFG(uint16_t, MVM_RS_LEGACY_TABLE_COUNT)
IWL_DBG_CFG(uint16_t, MVM_RS_NON_LEGACY_FAILURE_LIMIT)
IWL_DBG_CFG(uint16_t, MVM_RS_NON_LEGACY_SUCCESS_LIMIT)
IWL_DBG_CFG(uint16_t, MVM_RS_NON_LEGACY_TABLE_COUNT)
IWL_DBG_CFG(uint16_t, MVM_RS_SR_FORCE_DECREASE)
IWL_DBG_CFG(uint16_t, MVM_RS_SR_NO_DECREASE)
IWL_DBG_CFG(uint16_t, MVM_RS_AGG_TIME_LIMIT)
IWL_DBG_CFG(uint8_t, MVM_RS_AGG_DISABLE_START)
IWL_DBG_CFG(uint8_t, MVM_RS_AGG_START_THRESHOLD)
IWL_DBG_CFG(uint16_t, MVM_RS_TPC_SR_FORCE_INCREASE)
IWL_DBG_CFG(uint16_t, MVM_RS_TPC_SR_NO_INCREASE)
IWL_DBG_CFG(uint8_t, MVM_RS_TPC_TX_POWER_STEP)
IWL_DBG_CFG(bool, MVM_ENABLE_EBS)
IWL_MVM_MOD_PARAM(int, power_scheme)
IWL_MVM_MOD_PARAM(bool, init_dbg)
IWL_MVM_MOD_PARAM(bool, tfd_q_hang_detect)
#endif /* CPTCFG_IWLMVM */
#ifdef CPTCFG_IWLWIFI_FRQ_MGR_TEST
IWL_DBG_CFG_NODEF(uint8_t, fm_debug_mode)
#endif
#if IS_ENABLED(CPTCFG_IWLTEST)
IWL_MOD_PARAM(bool, trans_test)
#endif
#ifdef CPTCFG_IWLWIFI_DEVICE_TESTMODE
IWL_DBG_CFG_NODEF(uint32_t, dnt_out_mode)
/* XXX: should be dbgm_ or dbg_mon_ for consistency? */
IWL_DBG_CFG_NODEF(uint32_t, dbm_destination_path)
/* XXX: should be dbg_mon_ for consistency? */
IWL_DBG_CFG_NODEF(uint32_t, dbgm_enable_mode)
IWL_DBG_CFG_NODEF(uint32_t, dbgm_mem_power)
IWL_DBG_CFG_NODEF(uint32_t, dbg_flags)
IWL_DBG_CFG_NODEF(uint32_t, dbg_mon_sample_ctl_addr)
IWL_DBG_CFG_NODEF(uint32_t, dbg_mon_sample_ctl_val)
IWL_DBG_CFG_NODEF(uint32_t, dbg_mon_buff_base_addr_reg_addr)
IWL_DBG_CFG_NODEF(uint32_t, dbg_mon_buff_end_addr_reg_addr)
IWL_DBG_CFG_NODEF(uint32_t, dbg_mon_data_sel_ctl_addr)
IWL_DBG_CFG_NODEF(uint32_t, dbg_mon_data_sel_ctl_val)
IWL_DBG_CFG_NODEF(uint32_t, dbg_mon_mc_msk_addr)
IWL_DBG_CFG_NODEF(uint32_t, dbg_mon_mc_msk_val)
IWL_DBG_CFG_NODEF(uint32_t, dbg_mon_sample_mask_addr)
IWL_DBG_CFG_NODEF(uint32_t, dbg_mon_sample_mask_val)
IWL_DBG_CFG_NODEF(uint32_t, dbg_mon_start_mask_addr)
IWL_DBG_CFG_NODEF(uint32_t, dbg_mon_start_mask_val)
IWL_DBG_CFG_NODEF(uint32_t, dbg_mon_end_mask_addr)
IWL_DBG_CFG_NODEF(uint32_t, dbg_mon_end_mask_val)
IWL_DBG_CFG_NODEF(uint32_t, dbg_mon_end_threshold_addr)
IWL_DBG_CFG_NODEF(uint32_t, dbg_mon_end_threshold_val)
IWL_DBG_CFG_NODEF(uint32_t, dbg_mon_sample_period_addr)
IWL_DBG_CFG_NODEF(uint32_t, dbg_mon_sample_period_val)
IWL_DBG_CFG_NODEF(uint32_t, dbg_mon_wr_ptr_addr)
IWL_DBG_CFG_NODEF(uint32_t, dbg_mon_cyc_cnt_addr)
IWL_DBG_CFG_NODEF(uint32_t, dbg_mon_dmarb_rd_ctl_addr)
IWL_DBG_CFG_NODEF(uint32_t, dbg_mon_dmarb_rd_data_addr)
IWL_DBG_CFG_NODEF(uint32_t, dbg_marbh_conf_reg)
IWL_DBG_CFG_NODEF(uint32_t, dbg_marbh_conf_mask)
IWL_DBG_CFG_NODEF(uint32_t, dbg_marbh_access_type)
IWL_DBG_CFG_NODEF(uint32_t, dbgc_hb_base_addr)
IWL_DBG_CFG_NODEF(uint32_t, dbgc_hb_end_addr)
IWL_DBG_CFG_NODEF(uint32_t, dbgc_dram_wrptr_addr)
IWL_DBG_CFG_NODEF(uint32_t, dbgc_wrap_count_addr)
IWL_DBG_CFG_NODEF(uint32_t, dbg_mipi_conf_reg)
IWL_DBG_CFG_NODEF(uint32_t, dbg_mipi_conf_mask)
IWL_DBG_CFG_NODEF(uint32_t, dbgc_hb_base_val_smem)
IWL_DBG_CFG_NODEF(uint32_t, dbgc_hb_end_val_smem)
IWL_DBG_CFG_BIN(dbg_conf_monitor_host_command)
IWL_DBG_CFG_BIN(log_level_cmd)
IWL_DBG_CFG_BINA(ldbg_cmd, 32)
IWL_DBG_CFG_NODEF(uint8_t, log_level_cmd_id)
IWL_DBG_CFG_NODEF(uint8_t, dbg_conf_monitor_cmd_id)
IWL_DBG_CFG_NODEF(uint8_t, ldbg_cmd_nums)
IWL_DBG_CFG_NODEF(uint32_t, dbg_mon_buff_base_addr_reg_addr_b_step)
IWL_DBG_CFG_NODEF(uint32_t, dbg_mon_buff_end_addr_reg_addr_b_step)
IWL_DBG_CFG_NODEF(uint32_t, dbg_mon_wr_ptr_addr_b_step)
#endif /* CPTCFG_IWLWIFI_DEVICE_TESTMODE */
IWL_DBG_CFG_BIN(hw_address)
IWL_DBG_CFG_STR(fw_dbg_conf)
IWL_DBG_CFG_STR(nvm_file)
IWL_DBG_CFG_STR(fw_file_pre)
IWL_DBG_CFG_NODEF(uint32_t, d0i3_debug)
IWL_DBG_CFG_NODEF(uint32_t, valid_ants)
IWL_DBG_CFG_NODEF(uint32_t, no_ack_en)
IWL_DBG_CFG_NODEF(bool, no_ldpc)
IWL_DBG_CFG_NODEF(uint16_t, rx_mcs_80)
IWL_DBG_CFG_NODEF(uint16_t, tx_mcs_80)
IWL_DBG_CFG_NODEF(uint16_t, rx_mcs_160)
IWL_DBG_CFG_NODEF(uint16_t, tx_mcs_160)
IWL_DBG_CFG_NODEF(uint32_t, secure_boot_cfg)
IWL_MOD_PARAM(uint32_t, uapsd_disable)
IWL_MOD_PARAM(bool, d0i3_disable)
IWL_MOD_PARAM(bool, lar_disable)
IWL_MOD_PARAM(bool, fw_monitor)
IWL_MOD_PARAM(bool, fw_restart)
IWL_MOD_PARAM(bool, power_save)
IWL_MOD_PARAM(bool, bt_coex_active)
IWL_MOD_PARAM(int, antenna_coupling)
IWL_MOD_PARAM(int, power_level)
IWL_MOD_PARAM(int, led_mode)
IWL_MOD_PARAM(int, amsdu_size)
IWL_MOD_PARAM(int, swcrypto)
IWL_MOD_PARAM(uint, disable_11n)
IWL_MOD_PARAM(uint, d0i3_timeout)
IWL_DBG_CFG_BIN(he_ppe_thres)
IWL_DBG_CFG_NODEF(uint8_t, he_chan_width_dis)
IWL_DBG_CFG_NODEF(uint32_t, vht_cap_flip)
#ifdef CPTCFG_IWLWIFI_DEBUG
IWL_MOD_PARAM(uint32_t, debug_level)
#endif /* CPTCFG_IWLWIFI_DEBUG */
#ifdef CPTCFG_IWLWIFI_DISALLOW_OLDER_FW
IWL_DBG_CFG_NODEF(bool, load_old_fw)
#endif /* CPTCFG_IWLWIFI_DISALLOW_OLDER_FW */
#if IS_ENABLED(CPTCFG_IWLFMAC)
IWL_DBG_CFG_NODEF(bool, intcmd_dbg)
#endif /* CPTCFG_IWLFMAC */
#undef IWL_DBG_CFG
#undef IWL_DBG_CFG_STR
#undef IWL_DBG_CFG_NODEF
#undef IWL_DBG_CFG_BIN
#undef IWL_DBG_CFG_BINA
#undef IWL_DBG_CFG_RANGE
#undef IWL_MOD_PARAM
#undef IWL_MVM_MOD_PARAM
#ifndef DBG_CFG_REINCLUDE
};
extern struct iwl_dbg_cfg current_dbg_config;
void iwl_dbg_cfg_free(struct iwl_dbg_cfg* dbgcfg);
void iwl_dbg_cfg_load_ini(struct device* dev, struct iwl_dbg_cfg* dbgcfg);
#endif /* DBG_CFG_REINCLUDE */
#endif // SRC_CONNECTIVITY_WLAN_DRIVERS_THIRD_PARTY_INTEL_IWLWIFI_IWL_DBG_CFG_H_