Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/contrib/dev/iwlwifi/fw/api/dbg-tlv.h
48425 views
1
/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
2
/*
3
* Copyright (C) 2018-2025 Intel Corporation
4
*/
5
#ifndef __iwl_fw_dbg_tlv_h__
6
#define __iwl_fw_dbg_tlv_h__
7
8
#include <linux/bitops.h>
9
10
#define IWL_FW_INI_MAX_REGION_ID 64
11
#define IWL_FW_INI_MAX_NAME 32
12
#define IWL_FW_INI_MAX_CFG_NAME 64
13
#define IWL_FW_INI_DOMAIN_ALWAYS_ON 0
14
#define IWL_FW_INI_REGION_ID_MASK GENMASK(15, 0)
15
#define IWL_FW_INI_REGION_DUMP_POLICY_MASK GENMASK(31, 16)
16
#define IWL_FW_INI_PRESET_DISABLE 0xff
17
18
/**
19
* struct iwl_fw_ini_hcmd
20
*
21
* @id: the debug configuration command type for instance: 0xf6 / 0xf5 / DHC
22
* @group: the desired cmd group
23
* @reserved: to align to FW struct
24
* @data: all of the relevant command data to be sent
25
*/
26
struct iwl_fw_ini_hcmd {
27
u8 id;
28
u8 group;
29
__le16 reserved;
30
u8 data[];
31
} __packed; /* FW_DEBUG_TLV_HCMD_DATA_API_S_VER_1 */
32
33
/**
34
* struct iwl_fw_ini_header - Common Header for all ini debug TLV's structures
35
*
36
* @version: TLV version
37
* @domain: domain of the TLV. One of &enum iwl_fw_ini_dbg_domain
38
*/
39
struct iwl_fw_ini_header {
40
__le32 version;
41
__le32 domain;
42
/* followed by the data */
43
} __packed; /* FW_TLV_DEBUG_HEADER_S_VER_1 */
44
45
/**
46
* struct iwl_fw_ini_addr_size - Base address and size that defines
47
* a chunk of memory
48
*
49
* @addr: the base address (fixed size - 4 bytes)
50
* @size: the size to read
51
*/
52
struct iwl_fw_ini_addr_size {
53
__le32 addr;
54
__le32 size;
55
} __packed; /* FW_TLV_DEBUG_ADDR_SIZE_VER_1 */
56
57
/**
58
* struct iwl_fw_ini_region_dev_addr_range - Configuration to read
59
* device address range
60
*
61
* @offset: offset to add to the base address of each chunk
62
* The addrs[] array will be treated as an array of &iwl_fw_ini_addr_size -
63
* an array of (addr, size) pairs.
64
*/
65
struct iwl_fw_ini_region_dev_addr_range {
66
__le32 offset;
67
} __packed; /* FW_TLV_DEBUG_DEVICE_ADDR_RANGE_API_S_VER_1 */
68
69
/**
70
* struct iwl_fw_ini_region_dev_addr - Configuration to read device addresses
71
*
72
* @size: size of each memory chunk
73
* @offset: offset to add to the base address of each chunk
74
*/
75
struct iwl_fw_ini_region_dev_addr {
76
__le32 size;
77
__le32 offset;
78
} __packed; /* FW_TLV_DEBUG_DEVICE_ADDR_API_S_VER_1 */
79
80
/**
81
* struct iwl_fw_ini_region_fifos - Configuration to read Tx/Rx fifos
82
*
83
* @fid: fifos ids array. Used to determine what fifos to collect
84
* @hdr_only: if non zero, collect only the registers
85
* @offset: offset to add to the registers addresses
86
*/
87
struct iwl_fw_ini_region_fifos {
88
__le32 fid[2];
89
__le32 hdr_only;
90
__le32 offset;
91
} __packed; /* FW_TLV_DEBUG_REGION_FIFOS_API_S_VER_1 */
92
93
/**
94
* struct iwl_fw_ini_region_err_table - error table region data
95
*
96
* Configuration to read Umac/Lmac error table
97
*
98
* @version: version of the error table
99
* @base_addr: base address of the error table
100
* @size: size of the error table
101
* @offset: offset to add to &base_addr
102
*/
103
struct iwl_fw_ini_region_err_table {
104
__le32 version;
105
__le32 base_addr;
106
__le32 size;
107
__le32 offset;
108
} __packed; /* FW_TLV_DEBUG_REGION_ERROR_TABLE_API_S_VER_1 */
109
110
/**
111
* struct iwl_fw_ini_region_special_device_memory - special device memory
112
*
113
* Configuration to read a special memory
114
*
115
* @type: type of the special memory
116
* @version: version of the special memory
117
* @base_addr: base address of the error table
118
* @size: size of the error table
119
* @offset: offset to add to &base_addr
120
*/
121
struct iwl_fw_ini_region_special_device_memory {
122
__le16 type;
123
__le16 version;
124
__le32 base_addr;
125
__le32 size;
126
__le32 offset;
127
} __packed; /* FW_TLV_DEBUG_REGION_SPECIAL_DEVICE_ADDR_API_S_VER_1 */
128
129
/**
130
* struct iwl_fw_ini_region_internal_buffer - internal buffer region data
131
*
132
* Configuration to read internal monitor buffer
133
*
134
* @alloc_id: allocation id one of &enum iwl_fw_ini_allocation_id
135
* @base_addr: internal buffer base address
136
* @size: size internal buffer size
137
*/
138
struct iwl_fw_ini_region_internal_buffer {
139
__le32 alloc_id;
140
__le32 base_addr;
141
__le32 size;
142
} __packed; /* FW_TLV_DEBUG_REGION_INTERNAL_BUFFER_API_S_VER_1 */
143
144
/**
145
* struct iwl_fw_ini_region_tlv - region TLV
146
*
147
* Configures parameters for region data collection
148
*
149
* @hdr: debug header
150
* @id: region id. Max id is %IWL_FW_INI_MAX_REGION_ID
151
* @type: region type. One of &enum iwl_fw_ini_region_type
152
* @sub_type: region sub type
153
* @sub_type_ver: region sub type version
154
* @reserved: not in use
155
* @name: region name
156
* @dev_addr: device address configuration. Used by
157
* %IWL_FW_INI_REGION_DEVICE_MEMORY, %IWL_FW_INI_REGION_PERIPHERY_MAC,
158
* %IWL_FW_INI_REGION_PERIPHERY_PHY, %IWL_FW_INI_REGION_PERIPHERY_AUX,
159
* %IWL_FW_INI_REGION_PAGING, %IWL_FW_INI_REGION_CSR,
160
* %IWL_FW_INI_REGION_DRAM_IMR and %IWL_FW_INI_REGION_PCI_IOSF_CONFIG
161
* %IWL_FW_INI_REGION_DBGI_SRAM, %FW_TLV_DEBUG_REGION_TYPE_DBGI_SRAM,
162
* %IWL_FW_INI_REGION_PERIPHERY_SNPS_DPHYIP,
163
* @dev_addr_range: device address range configuration. Used by
164
* %IWL_FW_INI_REGION_PERIPHERY_MAC_RANGE and
165
* %IWL_FW_INI_REGION_PERIPHERY_PHY_RANGE
166
* @fifos: fifos configuration. Used by %IWL_FW_INI_REGION_TXF and
167
* %IWL_FW_INI_REGION_RXF
168
* @err_table: error table configuration. Used by
169
* %IWL_FW_INI_REGION_LMAC_ERROR_TABLE and
170
* %IWL_FW_INI_REGION_UMAC_ERROR_TABLE
171
* @internal_buffer: internal monitor buffer configuration. Used by
172
* %IWL_FW_INI_REGION_INTERNAL_BUFFER
173
* @special_mem: special device memory region, used by
174
* %IWL_FW_INI_REGION_SPECIAL_DEVICE_MEMORY
175
* @dram_alloc_id: dram allocation id. One of &enum iwl_fw_ini_allocation_id.
176
* Used by %IWL_FW_INI_REGION_DRAM_BUFFER
177
* @tlv_mask: tlv collection mask. Used by %IWL_FW_INI_REGION_TLV
178
* @addrs: array of addresses attached to the end of the region tlv
179
*/
180
struct iwl_fw_ini_region_tlv {
181
struct iwl_fw_ini_header hdr;
182
__le32 id;
183
u8 type;
184
u8 sub_type;
185
u8 sub_type_ver;
186
u8 reserved;
187
u8 name[IWL_FW_INI_MAX_NAME];
188
union {
189
struct iwl_fw_ini_region_dev_addr dev_addr;
190
struct iwl_fw_ini_region_dev_addr_range dev_addr_range;
191
struct iwl_fw_ini_region_fifos fifos;
192
struct iwl_fw_ini_region_err_table err_table;
193
struct iwl_fw_ini_region_internal_buffer internal_buffer;
194
struct iwl_fw_ini_region_special_device_memory special_mem;
195
__le32 dram_alloc_id;
196
__le32 tlv_mask;
197
}; /* FW_TLV_DEBUG_REGION_CONF_PARAMS_API_U_VER_1 */
198
__le32 addrs[];
199
} __packed; /* FW_TLV_DEBUG_REGION_API_S_VER_1 */
200
201
/**
202
* struct iwl_fw_ini_debug_info_tlv
203
*
204
* debug configuration name for a specific image
205
*
206
* @hdr: debug header
207
* @image_type: image type
208
* @debug_cfg_name: debug configuration name
209
*/
210
struct iwl_fw_ini_debug_info_tlv {
211
struct iwl_fw_ini_header hdr;
212
__le32 image_type;
213
u8 debug_cfg_name[IWL_FW_INI_MAX_CFG_NAME];
214
} __packed; /* FW_TLV_DEBUG_INFO_API_S_VER_1 */
215
216
/**
217
* struct iwl_fw_ini_allocation_tlv - Allocates DRAM buffers
218
*
219
* @hdr: debug header
220
* @alloc_id: allocation id. One of &enum iwl_fw_ini_allocation_id
221
* @buf_location: buffer location. One of &enum iwl_fw_ini_buffer_location
222
* @req_size: requested buffer size
223
* @max_frags_num: maximum number of fragments
224
* @min_size: minimum buffer size
225
*/
226
struct iwl_fw_ini_allocation_tlv {
227
struct iwl_fw_ini_header hdr;
228
__le32 alloc_id;
229
__le32 buf_location;
230
__le32 req_size;
231
__le32 max_frags_num;
232
__le32 min_size;
233
} __packed; /* FW_TLV_DEBUG_BUFFER_ALLOCATION_API_S_VER_1 */
234
235
/**
236
* struct iwl_fw_ini_trigger_tlv - trigger TLV
237
*
238
* Trigger that upon firing, determines what regions to collect
239
*
240
* @hdr: debug header
241
* @time_point: time point. One of &enum iwl_fw_ini_time_point
242
* @trigger_reason: trigger reason
243
* @apply_policy: uses &enum iwl_fw_ini_trigger_apply_policy
244
* @dump_delay: delay from trigger fire to dump, in usec
245
* @occurrences: max trigger fire occurrences allowed
246
* @reserved: unused
247
* @ignore_consec: ignore consecutive triggers, in usec
248
* @reset_fw: if non zero, will reset and reload the FW
249
* @multi_dut: initiate debug dump data on several DUTs
250
* @regions_mask: mask of regions to collect
251
* @data: trigger data
252
*/
253
struct iwl_fw_ini_trigger_tlv {
254
struct iwl_fw_ini_header hdr;
255
__le32 time_point;
256
__le32 trigger_reason;
257
__le32 apply_policy;
258
__le32 dump_delay;
259
__le32 occurrences;
260
__le32 reserved;
261
__le32 ignore_consec;
262
__le32 reset_fw;
263
__le32 multi_dut;
264
__le64 regions_mask;
265
__le32 data[];
266
} __packed; /* FW_TLV_DEBUG_TRIGGER_API_S_VER_1 */
267
268
/**
269
* struct iwl_fw_ini_hcmd_tlv - Generic Host command pass through TLV
270
*
271
* @hdr: debug header
272
* @time_point: time point. One of &enum iwl_fw_ini_time_point
273
* @period_msec: interval at which the hcmd will be sent to the FW.
274
* Measured in msec (0 = one time command)
275
* @hcmd: a variable length host-command to be sent to apply the configuration
276
*/
277
struct iwl_fw_ini_hcmd_tlv {
278
struct iwl_fw_ini_header hdr;
279
__le32 time_point;
280
__le32 period_msec;
281
struct iwl_fw_ini_hcmd hcmd;
282
} __packed; /* FW_TLV_DEBUG_HCMD_API_S_VER_1 */
283
284
/**
285
* struct iwl_fw_ini_addr_val - Address and value to set it to
286
*
287
* @address: the base address
288
* @value: value to set at address
289
*/
290
struct iwl_fw_ini_addr_val {
291
__le32 address;
292
__le32 value;
293
} __packed; /* FW_TLV_DEBUG_ADDR_VALUE_VER_1 */
294
295
/**
296
* struct iwl_fw_ini_conf_set_tlv - configuration TLV to set register/memory.
297
*
298
* @hdr: debug header
299
* @time_point: time point to apply config. One of &enum iwl_fw_ini_time_point
300
* @set_type: write access type preset token for time point.
301
* one of &enum iwl_fw_ini_config_set_type
302
* @addr_offset: the offset to add to any item in address[0] field
303
* @addr_val: address value pair
304
*/
305
struct iwl_fw_ini_conf_set_tlv {
306
struct iwl_fw_ini_header hdr;
307
__le32 time_point;
308
__le32 set_type;
309
__le32 addr_offset;
310
struct iwl_fw_ini_addr_val addr_val[];
311
} __packed; /* FW_TLV_DEBUG_CONFIG_SET_API_S_VER_1 */
312
313
/**
314
* enum iwl_fw_ini_config_set_type
315
*
316
* @IWL_FW_INI_CONFIG_SET_TYPE_INVALID: invalid config set
317
* @IWL_FW_INI_CONFIG_SET_TYPE_DEVICE_PERIPHERY_MAC: for PERIPHERY MAC configuration
318
* @IWL_FW_INI_CONFIG_SET_TYPE_DEVICE_PERIPHERY_PHY: for PERIPHERY PHY configuration
319
* @IWL_FW_INI_CONFIG_SET_TYPE_DEVICE_PERIPHERY_AUX: for PERIPHERY AUX configuration
320
* @IWL_FW_INI_CONFIG_SET_TYPE_DEVICE_MEMORY: for DEVICE MEMORY configuration
321
* @IWL_FW_INI_CONFIG_SET_TYPE_CSR: for CSR configuration
322
* @IWL_FW_INI_CONFIG_SET_TYPE_DBGC_DRAM_ADDR: for DBGC_DRAM_ADDR configuration
323
* @IWL_FW_INI_CONFIG_SET_TYPE_PERIPH_SCRATCH_HWM: for PERIPH SCRATCH HWM configuration
324
* @IWL_FW_INI_CONFIG_SET_TYPE_MAX_NUM: max number of configuration supported
325
*/
326
327
enum iwl_fw_ini_config_set_type {
328
IWL_FW_INI_CONFIG_SET_TYPE_INVALID = 0,
329
IWL_FW_INI_CONFIG_SET_TYPE_DEVICE_PERIPHERY_MAC,
330
IWL_FW_INI_CONFIG_SET_TYPE_DEVICE_PERIPHERY_PHY,
331
IWL_FW_INI_CONFIG_SET_TYPE_DEVICE_PERIPHERY_AUX,
332
IWL_FW_INI_CONFIG_SET_TYPE_DEVICE_MEMORY,
333
IWL_FW_INI_CONFIG_SET_TYPE_CSR,
334
IWL_FW_INI_CONFIG_SET_TYPE_DBGC_DRAM_ADDR,
335
IWL_FW_INI_CONFIG_SET_TYPE_PERIPH_SCRATCH_HWM,
336
IWL_FW_INI_CONFIG_SET_TYPE_MAX_NUM,
337
} __packed;
338
339
/**
340
* enum iwl_fw_ini_allocation_id
341
*
342
* @IWL_FW_INI_ALLOCATION_INVALID: invalid
343
* @IWL_FW_INI_ALLOCATION_ID_DBGC1: allocation meant for DBGC1 configuration
344
* @IWL_FW_INI_ALLOCATION_ID_DBGC2: allocation meant for DBGC2 configuration
345
* @IWL_FW_INI_ALLOCATION_ID_DBGC3: allocation meant for DBGC3 configuration
346
* @IWL_FW_INI_ALLOCATION_ID_DBGC4: allocation meant for DBGC4 configuration
347
* @IWL_FW_INI_ALLOCATION_NUM: number of allocation ids
348
*/
349
enum iwl_fw_ini_allocation_id {
350
IWL_FW_INI_ALLOCATION_INVALID,
351
IWL_FW_INI_ALLOCATION_ID_DBGC1,
352
IWL_FW_INI_ALLOCATION_ID_DBGC2,
353
IWL_FW_INI_ALLOCATION_ID_DBGC3,
354
IWL_FW_INI_ALLOCATION_ID_DBGC4,
355
IWL_FW_INI_ALLOCATION_NUM,
356
}; /* FW_DEBUG_TLV_ALLOCATION_ID_E_VER_1 */
357
358
/**
359
* enum iwl_fw_ini_buffer_location
360
*
361
* @IWL_FW_INI_LOCATION_INVALID: invalid
362
* @IWL_FW_INI_LOCATION_SRAM_PATH: SRAM location
363
* @IWL_FW_INI_LOCATION_DRAM_PATH: DRAM location
364
* @IWL_FW_INI_LOCATION_NPK_PATH: NPK location
365
* @IWL_FW_INI_LOCATION_NUM: number of valid locations
366
*/
367
enum iwl_fw_ini_buffer_location {
368
IWL_FW_INI_LOCATION_INVALID,
369
IWL_FW_INI_LOCATION_SRAM_PATH,
370
IWL_FW_INI_LOCATION_DRAM_PATH,
371
IWL_FW_INI_LOCATION_NPK_PATH,
372
IWL_FW_INI_LOCATION_NUM,
373
}; /* FW_DEBUG_TLV_BUFFER_LOCATION_E_VER_1 */
374
375
/**
376
* enum iwl_fw_ini_region_type
377
*
378
* @IWL_FW_INI_REGION_INVALID: invalid
379
* @IWL_FW_INI_REGION_TLV: uCode and debug TLVs
380
* @IWL_FW_INI_REGION_INTERNAL_BUFFER: monitor SMEM buffer
381
* @IWL_FW_INI_REGION_DRAM_BUFFER: monitor DRAM buffer
382
* @IWL_FW_INI_REGION_TXF: TX fifos
383
* @IWL_FW_INI_REGION_RXF: RX fifo
384
* @IWL_FW_INI_REGION_LMAC_ERROR_TABLE: lmac error table
385
* @IWL_FW_INI_REGION_UMAC_ERROR_TABLE: umac error table
386
* @IWL_FW_INI_REGION_RSP_OR_NOTIF: FW response or notification data
387
* @IWL_FW_INI_REGION_DEVICE_MEMORY: device internal memory
388
* @IWL_FW_INI_REGION_PERIPHERY_MAC: periphery registers of MAC
389
* @IWL_FW_INI_REGION_PERIPHERY_PHY: periphery registers of PHY
390
* @IWL_FW_INI_REGION_PERIPHERY_AUX: periphery registers of AUX
391
* @IWL_FW_INI_REGION_PAGING: paging memory
392
* @IWL_FW_INI_REGION_CSR: CSR registers
393
* @IWL_FW_INI_REGION_DRAM_IMR: IMR memory
394
* @IWL_FW_INI_REGION_PCI_IOSF_CONFIG: PCI/IOSF config
395
* @IWL_FW_INI_REGION_SPECIAL_DEVICE_MEMORY: special device memory
396
* @IWL_FW_INI_REGION_DBGI_SRAM: periphery registers of DBGI SRAM
397
* @IWL_FW_INI_REGION_PERIPHERY_MAC_RANGE: a range of periphery registers of MAC
398
* @IWL_FW_INI_REGION_PERIPHERY_PHY_RANGE: a range of periphery registers of PHY
399
* @IWL_FW_INI_REGION_PERIPHERY_SNPS_DPHYIP: periphery registers of SNPS DPHYIP
400
* @IWL_FW_INI_REGION_NUM: number of region types
401
*/
402
enum iwl_fw_ini_region_type {
403
IWL_FW_INI_REGION_INVALID,
404
IWL_FW_INI_REGION_TLV,
405
IWL_FW_INI_REGION_INTERNAL_BUFFER,
406
IWL_FW_INI_REGION_DRAM_BUFFER,
407
IWL_FW_INI_REGION_TXF,
408
IWL_FW_INI_REGION_RXF,
409
IWL_FW_INI_REGION_LMAC_ERROR_TABLE,
410
IWL_FW_INI_REGION_UMAC_ERROR_TABLE,
411
IWL_FW_INI_REGION_RSP_OR_NOTIF,
412
IWL_FW_INI_REGION_DEVICE_MEMORY,
413
IWL_FW_INI_REGION_PERIPHERY_MAC,
414
IWL_FW_INI_REGION_PERIPHERY_PHY,
415
IWL_FW_INI_REGION_PERIPHERY_AUX,
416
IWL_FW_INI_REGION_PAGING,
417
IWL_FW_INI_REGION_CSR,
418
IWL_FW_INI_REGION_DRAM_IMR,
419
IWL_FW_INI_REGION_PCI_IOSF_CONFIG,
420
IWL_FW_INI_REGION_SPECIAL_DEVICE_MEMORY,
421
IWL_FW_INI_REGION_DBGI_SRAM,
422
IWL_FW_INI_REGION_PERIPHERY_MAC_RANGE,
423
IWL_FW_INI_REGION_PERIPHERY_PHY_RANGE,
424
IWL_FW_INI_REGION_PERIPHERY_SNPS_DPHYIP,
425
IWL_FW_INI_REGION_NUM
426
}; /* FW_TLV_DEBUG_REGION_TYPE_API_E */
427
428
enum iwl_fw_ini_region_device_memory_subtype {
429
IWL_FW_INI_REGION_DEVICE_MEMORY_SUBTYPE_HW_SMEM = 1,
430
IWL_FW_INI_REGION_DEVICE_MEMORY_SUBTYPE_UMAC_ERROR_TABLE = 5,
431
IWL_FW_INI_REGION_DEVICE_MEMORY_SUBTYPE_LMAC_1_ERROR_TABLE = 7,
432
IWL_FW_INI_REGION_DEVICE_MEMORY_SUBTYPE_LMAC_2_ERROR_TABLE = 10,
433
IWL_FW_INI_REGION_DEVICE_MEMORY_SUBTYPE_TCM_1_ERROR_TABLE = 14,
434
IWL_FW_INI_REGION_DEVICE_MEMORY_SUBTYPE_TCM_2_ERROR_TABLE = 16,
435
IWL_FW_INI_REGION_DEVICE_MEMORY_SUBTYPE_RCM_1_ERROR_TABLE = 18,
436
IWL_FW_INI_REGION_DEVICE_MEMORY_SUBTYPE_RCM_2_ERROR_TABLE = 20,
437
}; /* FW_TLV_DEBUG_REGION_DEVICE_MEMORY_SUBTYPE_API_E */
438
439
/**
440
* enum iwl_fw_ini_time_point
441
*
442
* Hard coded time points in which the driver can send hcmd or perform dump
443
* collection
444
*
445
* @IWL_FW_INI_TIME_POINT_INVALID: invalid timepoint
446
* @IWL_FW_INI_TIME_POINT_EARLY: pre loading the FW
447
* @IWL_FW_INI_TIME_POINT_AFTER_ALIVE: first cmd from host after alive notif
448
* @IWL_FW_INI_TIME_POINT_POST_INIT: last cmd in series of init sequence
449
* @IWL_FW_INI_TIME_POINT_FW_ASSERT: FW assert
450
* @IWL_FW_INI_TIME_POINT_FW_HW_ERROR: FW HW error
451
* @IWL_FW_INI_TIME_POINT_FW_TFD_Q_HANG: TFD queue hang
452
* @IWL_FW_INI_TIME_POINT_FW_DHC_NOTIFICATION: DHC cmd response and notif
453
* @IWL_FW_INI_TIME_POINT_FW_RSP_OR_NOTIF: FW response or notification.
454
* data field holds id and group
455
* @IWL_FW_INI_TIME_POINT_USER_TRIGGER: user trigger time point
456
* @IWL_FW_INI_TIME_POINT_PERIODIC: periodic timepoint that fires in constant
457
* intervals. data field holds the interval time in msec
458
* @IWL_FW_INI_TIME_POINT_RESERVED: reserved
459
* @IWL_FW_INI_TIME_POINT_HOST_ASSERT: Unused
460
* @IWL_FW_INI_TIME_POINT_HOST_ALIVE_TIMEOUT: alive timeout
461
* @IWL_FW_INI_TIME_POINT_HOST_DEVICE_ENABLE: device enable
462
* @IWL_FW_INI_TIME_POINT_HOST_DEVICE_DISABLE: device disable
463
* @IWL_FW_INI_TIME_POINT_HOST_D3_START: D3 start
464
* @IWL_FW_INI_TIME_POINT_HOST_D3_END: D3 end
465
* @IWL_FW_INI_TIME_POINT_MISSED_BEACONS: missed beacons
466
* @IWL_FW_INI_TIME_POINT_ASSOC_FAILED: association failure
467
* @IWL_FW_INI_TIME_POINT_TX_FAILED: Tx frame failed
468
* @IWL_FW_INI_TIME_POINT_TX_WFD_ACTION_FRAME_FAILED: wifi direct action
469
* frame failed
470
* @IWL_FW_INI_TIME_POINT_TX_LATENCY_THRESHOLD: Tx latency threshold
471
* @IWL_FW_INI_TIME_POINT_HANG_OCCURRED: hang occurred
472
* @IWL_FW_INI_TIME_POINT_EAPOL_FAILED: EAPOL failed
473
* @IWL_FW_INI_TIME_POINT_FAKE_TX: fake Tx
474
* @IWL_FW_INI_TIME_POINT_DEASSOC: de association
475
* @IWL_FW_INI_TIME_POINT_PRESET_OVERRIDE_EXT_REQ: request to override preset
476
* @IWL_FW_INI_TIME_POINT_PRESET_OVERRIDE_START: start handling override preset
477
* request
478
* @IWL_FW_INI_TIME_SCAN_FAILURE: failed scan channel list
479
* @IWL_FW_INI_TIME_ESR_LINK_UP: EMLSR is active (several links are activated)
480
* @IWL_FW_INI_TIME_ESR_LINK_DOWN: EMLSR is inactive (only one active link left)
481
* @IWL_FW_INI_TIME_POINT_NUM: number of time points
482
*/
483
enum iwl_fw_ini_time_point {
484
IWL_FW_INI_TIME_POINT_INVALID,
485
IWL_FW_INI_TIME_POINT_EARLY,
486
IWL_FW_INI_TIME_POINT_AFTER_ALIVE,
487
IWL_FW_INI_TIME_POINT_POST_INIT,
488
IWL_FW_INI_TIME_POINT_FW_ASSERT,
489
IWL_FW_INI_TIME_POINT_FW_HW_ERROR,
490
IWL_FW_INI_TIME_POINT_FW_TFD_Q_HANG,
491
IWL_FW_INI_TIME_POINT_FW_DHC_NOTIFICATION,
492
IWL_FW_INI_TIME_POINT_FW_RSP_OR_NOTIF,
493
IWL_FW_INI_TIME_POINT_USER_TRIGGER,
494
IWL_FW_INI_TIME_POINT_PERIODIC,
495
IWL_FW_INI_TIME_POINT_RESERVED,
496
IWL_FW_INI_TIME_POINT_HOST_ASSERT,
497
IWL_FW_INI_TIME_POINT_HOST_ALIVE_TIMEOUT,
498
IWL_FW_INI_TIME_POINT_HOST_DEVICE_ENABLE,
499
IWL_FW_INI_TIME_POINT_HOST_DEVICE_DISABLE,
500
IWL_FW_INI_TIME_POINT_HOST_D3_START,
501
IWL_FW_INI_TIME_POINT_HOST_D3_END,
502
IWL_FW_INI_TIME_POINT_MISSED_BEACONS,
503
IWL_FW_INI_TIME_POINT_ASSOC_FAILED,
504
IWL_FW_INI_TIME_POINT_TX_FAILED,
505
IWL_FW_INI_TIME_POINT_TX_WFD_ACTION_FRAME_FAILED,
506
IWL_FW_INI_TIME_POINT_TX_LATENCY_THRESHOLD,
507
IWL_FW_INI_TIME_POINT_HANG_OCCURRED,
508
IWL_FW_INI_TIME_POINT_EAPOL_FAILED,
509
IWL_FW_INI_TIME_POINT_FAKE_TX,
510
IWL_FW_INI_TIME_POINT_DEASSOC,
511
IWL_FW_INI_TIME_POINT_PRESET_OVERRIDE_EXT_REQ,
512
IWL_FW_INI_TIME_POINT_PRESET_OVERRIDE_START,
513
IWL_FW_INI_TIME_SCAN_FAILURE,
514
IWL_FW_INI_TIME_ESR_LINK_UP,
515
IWL_FW_INI_TIME_ESR_LINK_DOWN,
516
IWL_FW_INI_TIME_POINT_NUM,
517
}; /* FW_TLV_DEBUG_TIME_POINT_API_E */
518
519
/**
520
* enum iwl_fw_ini_trigger_apply_policy - Determines how to apply triggers
521
*
522
* @IWL_FW_INI_APPLY_POLICY_MATCH_TIME_POINT: match by time point
523
* @IWL_FW_INI_APPLY_POLICY_MATCH_DATA: match by trigger data
524
* @IWL_FW_INI_APPLY_POLICY_OVERRIDE_REGIONS: override regions mask.
525
* Append otherwise
526
* @IWL_FW_INI_APPLY_POLICY_OVERRIDE_CFG: override trigger configuration
527
* @IWL_FW_INI_APPLY_POLICY_OVERRIDE_DATA: override trigger data.
528
* Append otherwise
529
* @IWL_FW_INI_APPLY_POLICY_DUMP_COMPLETE_CMD: send cmd once dump collected
530
* @IWL_FW_INI_APPLY_POLICY_SPLIT_DUMP_RESET: split this dump into regions
531
* before and after the reset handshake
532
*/
533
enum iwl_fw_ini_trigger_apply_policy {
534
IWL_FW_INI_APPLY_POLICY_MATCH_TIME_POINT = BIT(0),
535
IWL_FW_INI_APPLY_POLICY_MATCH_DATA = BIT(1),
536
IWL_FW_INI_APPLY_POLICY_OVERRIDE_REGIONS = BIT(8),
537
IWL_FW_INI_APPLY_POLICY_OVERRIDE_CFG = BIT(9),
538
IWL_FW_INI_APPLY_POLICY_OVERRIDE_DATA = BIT(10),
539
IWL_FW_INI_APPLY_POLICY_DUMP_COMPLETE_CMD = BIT(16),
540
IWL_FW_INI_APPLY_POLICY_SPLIT_DUMP_RESET = BIT(17),
541
};
542
543
/**
544
* enum iwl_fw_ini_trigger_reset_fw_policy - Determines how to handle reset
545
*
546
* @IWL_FW_INI_RESET_FW_MODE_NOTHING: do not stop FW and reload (default)
547
* @IWL_FW_INI_RESET_FW_MODE_STOP_FW_ONLY: stop FW without reload FW
548
* @IWL_FW_INI_RESET_FW_MODE_STOP_AND_RELOAD_FW: stop FW with reload FW
549
*/
550
enum iwl_fw_ini_trigger_reset_fw_policy {
551
IWL_FW_INI_RESET_FW_MODE_NOTHING = 0,
552
IWL_FW_INI_RESET_FW_MODE_STOP_FW_ONLY,
553
IWL_FW_INI_RESET_FW_MODE_STOP_AND_RELOAD_FW
554
};
555
556
/**
557
* enum iwl_fw_ini_dump_policy - Determines how to handle dump based on enabled flags
558
*
559
* @IWL_FW_INI_DEBUG_DUMP_POLICY_NO_LIMIT: OS has no limit of dump size
560
* @IWL_FW_INI_DEBUG_DUMP_POLICY_MAX_LIMIT_600KB: mini dump only 600KB region dump
561
* @IWL_FW_IWL_DEBUG_DUMP_POLICY_MAX_LIMIT_5MB: mini dump 5MB size dump
562
* @IWL_FW_IWL_DEBUG_DUMP_POLICY_BEFORE_RESET: dump this region before reset
563
* handshake (if requested by %IWL_FW_INI_APPLY_POLICY_SPLIT_DUMP_RESET)
564
*/
565
enum iwl_fw_ini_dump_policy {
566
IWL_FW_INI_DEBUG_DUMP_POLICY_NO_LIMIT = BIT(0),
567
IWL_FW_INI_DEBUG_DUMP_POLICY_MAX_LIMIT_600KB = BIT(1),
568
IWL_FW_IWL_DEBUG_DUMP_POLICY_MAX_LIMIT_5MB = BIT(2),
569
IWL_FW_IWL_DEBUG_DUMP_POLICY_BEFORE_RESET = BIT(3),
570
};
571
572
/**
573
* enum iwl_fw_ini_dump_type - Determines dump type based on size defined by FW.
574
*
575
* @IWL_FW_INI_DUMP_BRIEF : only dump the most important regions
576
* @IWL_FW_INI_DUMP_MEDIUM: dump more regions than "brief", but not all regions
577
* @IWL_FW_INI_DUMP_VERBOSE : dump all regions
578
*/
579
enum iwl_fw_ini_dump_type {
580
IWL_FW_INI_DUMP_BRIEF,
581
IWL_FW_INI_DUMP_MEDIUM,
582
IWL_FW_INI_DUMP_VERBOSE,
583
};
584
#endif
585
586