root/drivers/net/wireless/intel/iwlwifi/fw/api/dbg-tlv.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /******************************************************************************
   2  *
   3  * This file is provided under a dual BSD/GPLv2 license.  When using or
   4  * redistributing this file, you may do so under either license.
   5  *
   6  * GPL LICENSE SUMMARY
   7  *
   8  * Copyright (C) 2018 - 2019 Intel Corporation
   9  *
  10  * This program is free software; you can redistribute it and/or modify
  11  * it under the terms of version 2 of the GNU General Public License as
  12  * published by the Free Software Foundation.
  13  *
  14  * This program is distributed in the hope that it will be useful, but
  15  * WITHOUT ANY WARRANTY; without even the implied warranty of
  16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  17  * General Public License for more details.
  18  *
  19  * The full GNU General Public License is included in this distribution
  20  * in the file called COPYING.
  21  *
  22  * Contact Information:
  23  *  Intel Linux Wireless <linuxwifi@intel.com>
  24  * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
  25  *
  26  * BSD LICENSE
  27  *
  28  * Copyright (C) 2018 - 2019 Intel Corporation
  29  * All rights reserved.
  30  *
  31  * Redistribution and use in source and binary forms, with or without
  32  * modification, are permitted provided that the following conditions
  33  * are met:
  34  *
  35  *  * Redistributions of source code must retain the above copyright
  36  *    notice, this list of conditions and the following disclaimer.
  37  *  * Redistributions in binary form must reproduce the above copyright
  38  *    notice, this list of conditions and the following disclaimer in
  39  *    the documentation and/or other materials provided with the
  40  *    distribution.
  41  *  * Neither the name Intel Corporation nor the names of its
  42  *    contributors may be used to endorse or promote products derived
  43  *    from this software without specific prior written permission.
  44  *
  45  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  46  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  47  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  48  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  49  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  50  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  51  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  52  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  53  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  54  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  55  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  56  *
  57  *****************************************************************************/
  58 #ifndef __iwl_fw_dbg_tlv_h__
  59 #define __iwl_fw_dbg_tlv_h__
  60 
  61 #include <linux/bitops.h>
  62 
  63 /**
  64  * struct iwl_fw_ini_header: Common Header for all debug group TLV's structures
  65  *
  66  * @tlv_version: version info
  67  * @apply_point: &enum iwl_fw_ini_apply_point
  68  * @data: TLV data followed
  69  */
  70 struct iwl_fw_ini_header {
  71         __le32 tlv_version;
  72         __le32 apply_point;
  73         u8 data[];
  74 } __packed; /* FW_DEBUG_TLV_HEADER_S */
  75 
  76 /**
  77  * struct iwl_fw_ini_allocation_tlv - (IWL_UCODE_TLV_TYPE_BUFFER_ALLOCATION)
  78  * buffer allocation TLV - for debug
  79  *
  80  * @iwl_fw_ini_header: header
  81  * @allocation_id: &enum iwl_fw_ini_allocation_id - to bind allocation and hcmd
  82  *      if needed (DBGC1/DBGC2/SDFX/...)
  83  * @buffer_location: type of iwl_fw_ini_buffer_location
  84  * @size: size in bytes
  85  * @max_fragments: the maximum allowed fragmentation in the desired memory
  86  *      allocation above
  87  * @min_frag_size: the minimum allowed fragmentation size in bytes
  88  */
  89 struct iwl_fw_ini_allocation_tlv {
  90         struct iwl_fw_ini_header header;
  91         __le32 allocation_id;
  92         __le32 buffer_location;
  93         __le32 size;
  94         __le32 max_fragments;
  95         __le32 min_frag_size;
  96 } __packed; /* FW_DEBUG_TLV_BUFFER_ALLOCATION_TLV_S_VER_1 */
  97 
  98 /**
  99  * enum iwl_fw_ini_dbg_domain - debug domains
 100  * allows to send host cmd or collect memory region if a given domain is enabled
 101  *
 102  * @IWL_FW_INI_DBG_DOMAIN_ALWAYS_ON: the default domain, always on
 103  * @IWL_FW_INI_DBG_DOMAIN_REPORT_PS: power save domain
 104  */
 105 enum iwl_fw_ini_dbg_domain {
 106         IWL_FW_INI_DBG_DOMAIN_ALWAYS_ON = 0,
 107         IWL_FW_INI_DBG_DOMAIN_REPORT_PS,
 108 }; /* FW_DEBUG_TLV_DOMAIN_API_E_VER_1 */
 109 
 110 /**
 111  * struct iwl_fw_ini_hcmd
 112  *
 113  * @id: the debug configuration command type for instance: 0xf6 / 0xf5 / DHC
 114  * @group: the desired cmd group
 115  * @reserved: to align to FW struct
 116  * @data: all of the relevant command data to be sent
 117  */
 118 struct iwl_fw_ini_hcmd {
 119         u8 id;
 120         u8 group;
 121         __le16 reserved;
 122         u8 data[0];
 123 } __packed; /* FW_DEBUG_TLV_HCMD_DATA_API_S_VER_1 */
 124 
 125 /**
 126  * struct iwl_fw_ini_hcmd_tlv - (IWL_UCODE_TLV_TYPE_HCMD)
 127  * Generic Host command pass through TLV
 128  *
 129  * @header: header
 130  * @domain: send command only if the specific domain is enabled
 131  *      &enum iwl_fw_ini_dbg_domain
 132  * @period_msec: period in which the hcmd will be sent to FW. Measured in msec
 133  *      (0 = one time command).
 134  * @hcmd: a variable length host-command to be sent to apply the configuration.
 135  */
 136 struct iwl_fw_ini_hcmd_tlv {
 137         struct iwl_fw_ini_header header;
 138         __le32 domain;
 139         __le32 period_msec;
 140         struct iwl_fw_ini_hcmd hcmd;
 141 } __packed; /* FW_DEBUG_TLV_HCMD_API_S_VER_1 */
 142 
 143 #define IWL_FW_INI_MAX_REGION_ID        64
 144 #define IWL_FW_INI_MAX_NAME             32
 145 
 146 /**
 147  * struct iwl_fw_ini_region_cfg_dhc - defines dhc response to dump.
 148  *
 149  * @id_and_grp: id and group of dhc response.
 150  * @desc: dhc response descriptor.
 151  */
 152 struct iwl_fw_ini_region_cfg_dhc {
 153         __le32 id_and_grp;
 154         __le32 desc;
 155 } __packed; /* FW_DEBUG_TLV_REGION_DHC_API_S_VER_1 */
 156 
 157 /**
 158  * struct iwl_fw_ini_region_cfg_internal - meta data of internal memory region
 159  *
 160  * @num_of_range: the amount of ranges in the region
 161  * @range_data_size: size of the data to read per range, in bytes.
 162  */
 163 struct iwl_fw_ini_region_cfg_internal {
 164         __le32 num_of_ranges;
 165         __le32 range_data_size;
 166 } __packed; /* FW_DEBUG_TLV_REGION_NIC_INTERNAL_RANGES_S */
 167 
 168 /**
 169  * struct iwl_fw_ini_region_cfg_fifos - meta data of fifos region
 170  *
 171  * @fid1: fifo id 1 - bitmap of lmac tx/rx fifos to include in the region
 172  * @fid2: fifo id 2 - bitmap of umac rx fifos to include in the region.
 173  *      It is unused for tx.
 174  * @num_of_registers: number of prph registers in the region, each register is
 175  *      4 bytes size.
 176  * @header_only: none zero value indicates that this region does not include
 177  *      fifo data and includes only the given registers.
 178  */
 179 struct iwl_fw_ini_region_cfg_fifos {
 180         __le32 fid1;
 181         __le32 fid2;
 182         __le32 num_of_registers;
 183         __le32 header_only;
 184 } __packed; /* FW_DEBUG_TLV_REGION_FIFOS_S */
 185 
 186 /**
 187  * struct iwl_fw_ini_region_cfg
 188  *
 189  * @region_id: ID of this dump configuration
 190  * @region_type: &enum iwl_fw_ini_region_type
 191  * @domain: dump this region only if the specific domain is enabled
 192  *      &enum iwl_fw_ini_dbg_domain
 193  * @name_len: name length
 194  * @name: file name to use for this region
 195  * @internal: used in case the region uses internal memory.
 196  * @allocation_id: For DRAM type field substitutes for allocation_id
 197  * @fifos: used in case of fifos region.
 198  * @dhc_desc: dhc response descriptor.
 199  * @notif_id_and_grp: dump this region only if the specific notification
 200  *      occurred.
 201  * @offset: offset to use for each memory base address
 202  * @start_addr: array of addresses.
 203  */
 204 struct iwl_fw_ini_region_cfg {
 205         __le32 region_id;
 206         __le32 region_type;
 207         __le32 domain;
 208         __le32 name_len;
 209         u8 name[IWL_FW_INI_MAX_NAME];
 210         union {
 211                 struct iwl_fw_ini_region_cfg_internal internal;
 212                 __le32 allocation_id;
 213                 struct iwl_fw_ini_region_cfg_fifos fifos;
 214                 struct iwl_fw_ini_region_cfg_dhc dhc_desc;
 215                 __le32 notif_id_and_grp;
 216         }; /* FW_DEBUG_TLV_REGION_EXT_INT_PARAMS_API_U_VER_1 */
 217         __le32 offset;
 218         __le32 start_addr[];
 219 } __packed; /* FW_DEBUG_TLV_REGION_CONFIG_API_S_VER_1 */
 220 
 221 /**
 222  * struct iwl_fw_ini_region_tlv - (IWL_UCODE_TLV_TYPE_REGIONS)
 223  * defines memory regions to dump
 224  *
 225  * @header: header
 226  * @num_regions: how many different region section and IDs are coming next
 227  * @region_config: list of dump configurations
 228  */
 229 struct iwl_fw_ini_region_tlv {
 230         struct iwl_fw_ini_header header;
 231         __le32 num_regions;
 232         struct iwl_fw_ini_region_cfg region_config[];
 233 } __packed; /* FW_DEBUG_TLV_REGIONS_API_S_VER_1 */
 234 
 235 /**
 236  * struct iwl_fw_ini_trigger
 237  *
 238  * @trigger_id: &enum iwl_fw_ini_trigger_id
 239  * @override_trig: determines how apply trigger in case a trigger with the
 240  *      same id is already in use. Using the first 2 bytes:
 241  *      Byte 0: if 0, override trigger configuration, otherwise use the
 242  *      existing configuration.
 243  *      Byte 1: if 0, override trigger regions, otherwise append regions to
 244  *      existing trigger.
 245  * @dump_delay: delay from trigger fire to dump, in usec
 246  * @occurrences: max amount of times to be fired
 247  * @reserved: to align to FW struct
 248  * @ignore_consec: ignore consecutive triggers, in usec
 249  * @force_restart: force FW restart
 250  * @multi_dut: initiate debug dump data on several DUTs
 251  * @trigger_data: generic data to be utilized per trigger
 252  * @num_regions: number of dump regions defined for this trigger
 253  * @data: region IDs
 254  */
 255 struct iwl_fw_ini_trigger {
 256         __le32 trigger_id;
 257         __le32 override_trig;
 258         __le32 dump_delay;
 259         __le32 occurrences;
 260         __le32 reserved;
 261         __le32 ignore_consec;
 262         __le32 force_restart;
 263         __le32 multi_dut;
 264         __le32 trigger_data;
 265         __le32 num_regions;
 266         __le32 data[];
 267 } __packed; /* FW_TLV_DEBUG_TRIGGER_CONFIG_API_S_VER_1 */
 268 
 269 /**
 270  * struct iwl_fw_ini_trigger_tlv - (IWL_UCODE_TLV_TYPE_TRIGGERS)
 271  * Triggers that hold memory regions to dump in case a trigger fires
 272  *
 273  * @header: header
 274  * @num_triggers: how many different triggers section and IDs are coming next
 275  * @trigger_config: list of trigger configurations
 276  */
 277 struct iwl_fw_ini_trigger_tlv {
 278         struct iwl_fw_ini_header header;
 279         __le32 num_triggers;
 280         struct iwl_fw_ini_trigger trigger_config[];
 281 } __packed; /* FW_TLV_DEBUG_TRIGGERS_API_S_VER_1 */
 282 
 283 #define IWL_FW_INI_MAX_IMG_NAME_LEN 32
 284 #define IWL_FW_INI_MAX_DBG_CFG_NAME_LEN 64
 285 
 286 /**
 287  * struct iwl_fw_ini_debug_info_tlv - (IWL_UCODE_TLV_TYPE_DEBUG_INFO)
 288  *
 289  * holds image name and debug configuration name
 290  *
 291  * @header: header
 292  * @img_name_len: length of the image name string
 293  * @img_name: image name string
 294  * @dbg_cfg_name_len : length of the debug configuration name string
 295  * @dbg_cfg_name: debug configuration name string
 296  */
 297 struct iwl_fw_ini_debug_info_tlv {
 298         struct iwl_fw_ini_header header;
 299         __le32 img_name_len;
 300         u8 img_name[IWL_FW_INI_MAX_IMG_NAME_LEN];
 301         __le32 dbg_cfg_name_len;
 302         u8 dbg_cfg_name[IWL_FW_INI_MAX_DBG_CFG_NAME_LEN];
 303 } __packed; /* FW_DEBUG_TLV_INFO_API_S_VER_1 */
 304 
 305 /**
 306  * enum iwl_fw_ini_trigger_id
 307  *
 308  * @IWL_FW_TRIGGER_ID_FW_ASSERT: FW assert
 309  * @IWL_FW_TRIGGER_ID_FW_HW_ERROR: HW assert
 310  * @IWL_FW_TRIGGER_ID_FW_TFD_Q_HANG: TFD queue hang
 311  * @IWL_FW_TRIGGER_ID_FW_DEBUG_HOST_TRIGGER: FW debug notification
 312  * @IWL_FW_TRIGGER_ID_FW_GENERIC_NOTIFICATION: FW generic notification
 313  * @IWL_FW_TRIGGER_ID_USER_TRIGGER: User trigger
 314  * @IWL_FW_TRIGGER_ID_PERIODIC_TRIGGER: triggers periodically
 315  * @IWL_FW_TRIGGER_ID_HOST_PEER_CLIENT_INACTIVITY: peer inactivity
 316  * @IWL_FW_TRIGGER_ID_HOST_TX_LATENCY_THRESHOLD_CROSSED: TX latency
 317  *      threshold was crossed
 318  * @IWL_FW_TRIGGER_ID_HOST_TX_RESPONSE_STATUS_FAILED: TX failed
 319  * @IWL_FW_TRIGGER_ID_HOST_OS_REQ_DEAUTH_PEER: Deauth initiated by host
 320  * @IWL_FW_TRIGGER_ID_HOST_STOP_GO_REQUEST: stop GO request
 321  * @IWL_FW_TRIGGER_ID_HOST_START_GO_REQUEST: start GO request
 322  * @IWL_FW_TRIGGER_ID_HOST_JOIN_GROUP_REQUEST: join P2P group request
 323  * @IWL_FW_TRIGGER_ID_HOST_SCAN_START: scan started event
 324  * @IWL_FW_TRIGGER_ID_HOST_SCAN_SUBMITTED: undefined
 325  * @IWL_FW_TRIGGER_ID_HOST_SCAN_PARAMS: undefined
 326  * @IWL_FW_TRIGGER_ID_HOST_CHECK_FOR_HANG: undefined
 327  * @IWL_FW_TRIGGER_ID_HOST_BAR_RECEIVED: BAR frame was received
 328  * @IWL_FW_TRIGGER_ID_HOST_AGG_TX_RESPONSE_STATUS_FAILED: agg TX failed
 329  * @IWL_FW_TRIGGER_ID_HOST_EAPOL_TX_RESPONSE_FAILED: EAPOL TX failed
 330  * @IWL_FW_TRIGGER_ID_HOST_FAKE_TX_RESPONSE_SUSPECTED: suspicious TX response
 331  * @IWL_FW_TRIGGER_ID_HOST_AUTH_REQ_FROM_ASSOC_CLIENT: received suspicious auth
 332  * @IWL_FW_TRIGGER_ID_HOST_ROAM_COMPLETE: roaming was completed
 333  * @IWL_FW_TRIGGER_ID_HOST_AUTH_ASSOC_FAST_FAILED: fast assoc failed
 334  * @IWL_FW_TRIGGER_ID_HOST_D3_START: D3 start
 335  * @IWL_FW_TRIGGER_ID_HOST_D3_END: D3 end
 336  * @IWL_FW_TRIGGER_ID_HOST_BSS_MISSED_BEACONS: missed beacon events
 337  * @IWL_FW_TRIGGER_ID_HOST_P2P_CLIENT_MISSED_BEACONS: P2P missed beacon events
 338  * @IWL_FW_TRIGGER_ID_HOST_PEER_CLIENT_TX_FAILURES:  undefined
 339  * @IWL_FW_TRIGGER_ID_HOST_TX_WFD_ACTION_FRAME_FAILED: undefined
 340  * @IWL_FW_TRIGGER_ID_HOST_AUTH_ASSOC_FAILED: authentication / association
 341  *      failed
 342  * @IWL_FW_TRIGGER_ID_HOST_SCAN_COMPLETE: scan complete event
 343  * @IWL_FW_TRIGGER_ID_HOST_SCAN_ABORT: scan abort complete
 344  * @IWL_FW_TRIGGER_ID_HOST_NIC_ALIVE: nic alive message was received
 345  * @IWL_FW_TRIGGER_ID_HOST_CHANNEL_SWITCH_COMPLETE: CSA was completed
 346  * @IWL_FW_TRIGGER_ID_NUM: number of trigger IDs
 347  */
 348 enum iwl_fw_ini_trigger_id {
 349         IWL_FW_TRIGGER_ID_INVALID                               = 0,
 350 
 351         /* Errors triggers */
 352         IWL_FW_TRIGGER_ID_FW_ASSERT                             = 1,
 353         IWL_FW_TRIGGER_ID_FW_HW_ERROR                           = 2,
 354         IWL_FW_TRIGGER_ID_FW_TFD_Q_HANG                         = 3,
 355 
 356         /* FW triggers */
 357         IWL_FW_TRIGGER_ID_FW_DEBUG_HOST_TRIGGER                 = 4,
 358         IWL_FW_TRIGGER_ID_FW_GENERIC_NOTIFICATION               = 5,
 359 
 360         /* User trigger */
 361         IWL_FW_TRIGGER_ID_USER_TRIGGER                          = 6,
 362 
 363         /* periodic uses the data field for the interval time */
 364         IWL_FW_TRIGGER_ID_PERIODIC_TRIGGER                      = 7,
 365 
 366         /* Host triggers */
 367         IWL_FW_TRIGGER_ID_HOST_PEER_CLIENT_INACTIVITY           = 8,
 368         IWL_FW_TRIGGER_ID_HOST_TX_LATENCY_THRESHOLD_CROSSED     = 9,
 369         IWL_FW_TRIGGER_ID_HOST_TX_RESPONSE_STATUS_FAILED        = 10,
 370         IWL_FW_TRIGGER_ID_HOST_OS_REQ_DEAUTH_PEER               = 11,
 371         IWL_FW_TRIGGER_ID_HOST_STOP_GO_REQUEST                  = 12,
 372         IWL_FW_TRIGGER_ID_HOST_START_GO_REQUEST                 = 13,
 373         IWL_FW_TRIGGER_ID_HOST_JOIN_GROUP_REQUEST               = 14,
 374         IWL_FW_TRIGGER_ID_HOST_SCAN_START                       = 15,
 375         IWL_FW_TRIGGER_ID_HOST_SCAN_SUBMITTED                   = 16,
 376         IWL_FW_TRIGGER_ID_HOST_SCAN_PARAMS                      = 17,
 377         IWL_FW_TRIGGER_ID_HOST_CHECK_FOR_HANG                   = 18,
 378         IWL_FW_TRIGGER_ID_HOST_BAR_RECEIVED                     = 19,
 379         IWL_FW_TRIGGER_ID_HOST_AGG_TX_RESPONSE_STATUS_FAILED    = 20,
 380         IWL_FW_TRIGGER_ID_HOST_EAPOL_TX_RESPONSE_FAILED         = 21,
 381         IWL_FW_TRIGGER_ID_HOST_FAKE_TX_RESPONSE_SUSPECTED       = 22,
 382         IWL_FW_TRIGGER_ID_HOST_AUTH_REQ_FROM_ASSOC_CLIENT       = 23,
 383         IWL_FW_TRIGGER_ID_HOST_ROAM_COMPLETE                    = 24,
 384         IWL_FW_TRIGGER_ID_HOST_AUTH_ASSOC_FAST_FAILED           = 25,
 385         IWL_FW_TRIGGER_ID_HOST_D3_START                         = 26,
 386         IWL_FW_TRIGGER_ID_HOST_D3_END                           = 27,
 387         IWL_FW_TRIGGER_ID_HOST_BSS_MISSED_BEACONS               = 28,
 388         IWL_FW_TRIGGER_ID_HOST_P2P_CLIENT_MISSED_BEACONS        = 29,
 389         IWL_FW_TRIGGER_ID_HOST_PEER_CLIENT_TX_FAILURES          = 30,
 390         IWL_FW_TRIGGER_ID_HOST_TX_WFD_ACTION_FRAME_FAILED       = 31,
 391         IWL_FW_TRIGGER_ID_HOST_AUTH_ASSOC_FAILED                = 32,
 392         IWL_FW_TRIGGER_ID_HOST_SCAN_COMPLETE                    = 33,
 393         IWL_FW_TRIGGER_ID_HOST_SCAN_ABORT                       = 34,
 394         IWL_FW_TRIGGER_ID_HOST_NIC_ALIVE                        = 35,
 395         IWL_FW_TRIGGER_ID_HOST_CHANNEL_SWITCH_COMPLETE          = 36,
 396 
 397         IWL_FW_TRIGGER_ID_NUM,
 398 }; /* FW_DEBUG_TLV_TRIGGER_ID_E_VER_1 */
 399 
 400 /**
 401  * enum iwl_fw_ini_allocation_id
 402  *
 403  * @IWL_FW_INI_ALLOCATION_INVALID: invalid
 404  * @IWL_FW_INI_ALLOCATION_ID_DBGC1: allocation meant for DBGC1 configuration
 405  * @IWL_FW_INI_ALLOCATION_ID_DBGC2: allocation meant for DBGC2 configuration
 406  * @IWL_FW_INI_ALLOCATION_ID_DBGC3: allocation meant for DBGC3 configuration
 407  * @IWL_FW_INI_ALLOCATION_ID_SDFX: for SDFX module
 408  * @IWL_FW_INI_ALLOCATION_ID_FW_DUMP: used for crash and runtime dumps
 409  * @IWL_FW_INI_ALLOCATION_ID_USER_DEFINED: for future user scenarios
 410  * @IWL_FW_INI_ALLOCATION_NUM: number of allocation ids
 411 */
 412 enum iwl_fw_ini_allocation_id {
 413         IWL_FW_INI_ALLOCATION_INVALID,
 414         IWL_FW_INI_ALLOCATION_ID_DBGC1,
 415         IWL_FW_INI_ALLOCATION_ID_DBGC2,
 416         IWL_FW_INI_ALLOCATION_ID_DBGC3,
 417         IWL_FW_INI_ALLOCATION_ID_SDFX,
 418         IWL_FW_INI_ALLOCATION_ID_FW_DUMP,
 419         IWL_FW_INI_ALLOCATION_ID_USER_DEFINED,
 420         IWL_FW_INI_ALLOCATION_NUM,
 421 }; /* FW_DEBUG_TLV_ALLOCATION_ID_E_VER_1 */
 422 
 423 /**
 424  * enum iwl_fw_ini_buffer_location
 425  *
 426  * @IWL_FW_INI_LOCATION_INVALID: invalid
 427  * @IWL_FW_INI_LOCATION_SRAM_PATH: SRAM location
 428  * @IWL_FW_INI_LOCATION_DRAM_PATH: DRAM location
 429  * @IWL_FW_INI_LOCATION_NPK_PATH: NPK location
 430  */
 431 enum iwl_fw_ini_buffer_location {
 432         IWL_FW_INI_LOCATION_INVALID,
 433         IWL_FW_INI_LOCATION_SRAM_PATH,
 434         IWL_FW_INI_LOCATION_DRAM_PATH,
 435         IWL_FW_INI_LOCATION_NPK_PATH,
 436 }; /* FW_DEBUG_TLV_BUFFER_LOCATION_E_VER_1 */
 437 
 438 /**
 439  * enum iwl_fw_ini_debug_flow
 440  *
 441  * @IWL_FW_INI_DEBUG_INVALID: invalid
 442  * @IWL_FW_INI_DEBUG_DBTR_FLOW: undefined
 443  * @IWL_FW_INI_DEBUG_TB2DTF_FLOW: undefined
 444  */
 445 enum iwl_fw_ini_debug_flow {
 446         IWL_FW_INI_DEBUG_INVALID,
 447         IWL_FW_INI_DEBUG_DBTR_FLOW,
 448         IWL_FW_INI_DEBUG_TB2DTF_FLOW,
 449 }; /* FW_DEBUG_TLV_FLOW_E_VER_1 */
 450 
 451 /**
 452  * enum iwl_fw_ini_region_type
 453  *
 454  * @IWL_FW_INI_REGION_INVALID: invalid
 455  * @IWL_FW_INI_REGION_DEVICE_MEMORY: device internal memory
 456  * @IWL_FW_INI_REGION_PERIPHERY_MAC: periphery registers of MAC
 457  * @IWL_FW_INI_REGION_PERIPHERY_PHY: periphery registers of PHY
 458  * @IWL_FW_INI_REGION_PERIPHERY_AUX: periphery registers of AUX
 459  * @IWL_FW_INI_REGION_DRAM_BUFFER: DRAM buffer
 460  * @IWL_FW_INI_REGION_DRAM_IMR: IMR memory
 461  * @IWL_FW_INI_REGION_INTERNAL_BUFFER: undefined
 462  * @IWL_FW_INI_REGION_TXF: TX fifos
 463  * @IWL_FW_INI_REGION_RXF: RX fifo
 464  * @IWL_FW_INI_REGION_PAGING: paging memory
 465  * @IWL_FW_INI_REGION_CSR: CSR registers
 466  * @IWL_FW_INI_REGION_NOTIFICATION: FW notification data
 467  * @IWL_FW_INI_REGION_DHC: dhc response to dump
 468  * @IWL_FW_INI_REGION_LMAC_ERROR_TABLE: lmac error table
 469  * @IWL_FW_INI_REGION_UMAC_ERROR_TABLE: umac error table
 470  * @IWL_FW_INI_REGION_NUM: number of region types
 471  */
 472 enum iwl_fw_ini_region_type {
 473         IWL_FW_INI_REGION_INVALID,
 474         IWL_FW_INI_REGION_DEVICE_MEMORY,
 475         IWL_FW_INI_REGION_PERIPHERY_MAC,
 476         IWL_FW_INI_REGION_PERIPHERY_PHY,
 477         IWL_FW_INI_REGION_PERIPHERY_AUX,
 478         IWL_FW_INI_REGION_DRAM_BUFFER,
 479         IWL_FW_INI_REGION_DRAM_IMR,
 480         IWL_FW_INI_REGION_INTERNAL_BUFFER,
 481         IWL_FW_INI_REGION_TXF,
 482         IWL_FW_INI_REGION_RXF,
 483         IWL_FW_INI_REGION_PAGING,
 484         IWL_FW_INI_REGION_CSR,
 485         IWL_FW_INI_REGION_NOTIFICATION,
 486         IWL_FW_INI_REGION_DHC,
 487         IWL_FW_INI_REGION_LMAC_ERROR_TABLE,
 488         IWL_FW_INI_REGION_UMAC_ERROR_TABLE,
 489         IWL_FW_INI_REGION_NUM
 490 }; /* FW_DEBUG_TLV_REGION_TYPE_E_VER_1 */
 491 
 492 /**
 493  * enum iwl_fw_ini_time_point
 494  *
 495  * Hard coded time points in which the driver can send hcmd or perform dump
 496  * collection
 497  *
 498  * @IWL_FW_INI_TIME_POINT_EARLY: pre loading the FW
 499  * @IWL_FW_INI_TIME_POINT_AFTER_ALIVE: first cmd from host after alive notif
 500  * @IWL_FW_INI_TIME_POINT_POST_INIT: last cmd in series of init sequence
 501  * @IWL_FW_INI_TIME_POINT_FW_ASSERT: FW assert
 502  * @IWL_FW_INI_TIME_POINT_FW_HW_ERROR: FW HW error
 503  * @IWL_FW_INI_TIME_POINT_FW_TFD_Q_HANG: TFD queue hang
 504  * @IWL_FW_INI_TIME_POINT_FW_DHC_NOTIFOCATION: DHC cmd response and notif
 505  * @IWL_FW_INI_TIME_POINT_FW_RSP_OR_NOTIF: FW response or notification.
 506  *      data field holds id and group
 507  * @IWL_FW_INI_TIME_POINT_USER_TRIGGER: user trigger time point
 508  * @IWL_FW_INI_TIME_POINT_PERIODIC: periodic timepoint that fires in constant
 509  *      intervals. data field holds the interval time in msec
 510  * @IWL_FW_INI_TIME_POINT_WDG_TIMEOUT: watchdog timeout
 511  * @IWL_FW_INI_TIME_POINT_HOST_ASSERT: Unused
 512  * @IWL_FW_INI_TIME_POINT_HOST_ALIVE_TIMEOUT: alive timeout
 513  * @IWL_FW_INI_TIME_POINT_HOST_DEVICE_ENABLE: device enable
 514  * @IWL_FW_INI_TIME_POINT_HOST_DEVICE_DISABLE: device disable
 515  * @IWL_FW_INI_TIME_POINT_HOST_D3_START: D3 start
 516  * @IWL_FW_INI_TIME_POINT_HOST_D3_END: D3 end
 517  * @IWL_FW_INI_TIME_POINT_MISSED_BEACONS: missed beacons
 518  * @IWL_FW_INI_TIME_POINT_ASSOC_FAILED: association failure
 519  * @IWL_FW_INI_TIME_POINT_TX_FAILED: Tx frame failed
 520  * @IWL_FW_INI_TIME_POINT_TX_WFD_ACTION_FRAME_FAILED: wifi direct action
 521  *      frame failed
 522  * @IWL_FW_INI_TIME_POINT_TX_LATENCY_THRESHOLD: Tx latency threshold
 523  * @IWL_FW_INI_TIME_POINT_HANG_OCCURRED: hang occurred
 524  * @IWL_FW_INI_TIME_POINT_EAPOL_FAILED: EAPOL failed
 525  * @IWL_FW_INI_TIME_POINT_FAKE_TX: fake Tx
 526  * @IWL_FW_INI_TIME_POINT_DEASSOC: de association
 527  * @IWL_FW_INI_TIME_POINT_NUM: number of time points
 528  */
 529 enum iwl_fw_ini_time_point {
 530         IWL_FW_INI_TIME_POINT_INVALID,
 531         IWL_FW_INI_TIME_POINT_EARLY,
 532         IWL_FW_INI_TIME_POINT_AFTER_ALIVE,
 533         IWL_FW_INI_TIME_POINT_POST_INIT,
 534         IWL_FW_INI_TIME_POINT_FW_ASSERT,
 535         IWL_FW_INI_TIME_POINT_FW_HW_ERROR,
 536         IWL_FW_INI_TIME_POINT_FW_TFD_Q_HANG,
 537         IWL_FW_INI_TIME_POINT_FW_DHC_NOTIFOCATION,
 538         IWL_FW_INI_TIME_POINT_FW_RSP_OR_NOTIF,
 539         IWL_FW_INI_TIME_POINT_USER_TRIGGER,
 540         IWL_FW_INI_TIME_POINT_PERIODIC,
 541         IWL_FW_INI_TIME_POINT_WDG_TIMEOUT,
 542         IWL_FW_INI_TIME_POINT_HOST_ASSERT,
 543         IWL_FW_INI_TIME_POINT_HOST_ALIVE_TIMEOUT,
 544         IWL_FW_INI_TIME_POINT_HOST_DEVICE_ENABLE,
 545         IWL_FW_INI_TIME_POINT_HOST_DEVICE_DISABLE,
 546         IWL_FW_INI_TIME_POINT_HOST_D3_START,
 547         IWL_FW_INI_TIME_POINT_HOST_D3_END,
 548         IWL_FW_INI_TIME_POINT_MISSED_BEACONS,
 549         IWL_FW_INI_TIME_POINT_ASSOC_FAILED,
 550         IWL_FW_INI_TIME_POINT_TX_FAILED,
 551         IWL_FW_INI_TIME_POINT_TX_WFD_ACTION_FRAME_FAILED,
 552         IWL_FW_INI_TIME_POINT_TX_LATENCY_THRESHOLD,
 553         IWL_FW_INI_TIME_POINT_HANG_OCCURRED,
 554         IWL_FW_INI_TIME_POINT_EAPOL_FAILED,
 555         IWL_FW_INI_TIME_POINT_FAKE_TX,
 556         IWL_FW_INI_TIME_POINT_DEASSOC,
 557         IWL_FW_INI_TIME_POINT_NUM,
 558 }; /* FW_TLV_DEBUG_TIME_POINT_API_E */
 559 
 560 #endif

/* [<][>][^][v][top][bottom][index][help] */