Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

qed: Split huge qed_hsi.h header file

The qed_hsi.h is a huge header file containing HSI (Hardware Software
Interface) definitions of storm memory access, debug related, general
and management firmware specific. In order to have a better
code-organization HSI definition, this patch split the code across
multiple files, i.e.
- storm memory access HSI : qed_iro_hsi.h
- debug related HSI : qed_dbg_hsi.h
- Management firmware HSI : qed_mfg_hsi.h
- General HSI : qed_hsi.h

In addition, this patch also fixes existing checkpatch warnings and
few important checks.

Signed-off-by: Ariel Elior <aelior@marvell.com>
Signed-off-by: Shai Malin <smalin@marvell.com>
Signed-off-by: Omkar Kulkarni <okulkarni@marvell.com>
Signed-off-by: Prabhakar Kushwaha <pkushwaha@marvell.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Omkar Kulkarni and committed by
David S. Miller
ee824f4b fb09a1ed

+3794 -3747
+2
drivers/net/ethernet/qlogic/qed/qed.h
··· 23 23 #include <linux/qed/qed_if.h> 24 24 #include "qed_debug.h" 25 25 #include "qed_hsi.h" 26 + #include "qed_dbg_hsi.h" 27 + #include "qed_mfw_hsi.h" 26 28 27 29 extern const struct qed_common_ops qed_common_ops_pass; 28 30
+1491
drivers/net/ethernet/qlogic/qed/qed_dbg_hsi.h
··· 1 + /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */ 2 + /* QLogic qed NIC Driver 3 + * Copyright (c) 2019-2021 Marvell International Ltd. 4 + */ 5 + #ifndef _QED_DBG_HSI_H 6 + #define _QED_DBG_HSI_H 7 + 8 + #include <linux/types.h> 9 + #include <linux/io.h> 10 + #include <linux/bitops.h> 11 + #include <linux/delay.h> 12 + #include <linux/kernel.h> 13 + #include <linux/list.h> 14 + #include <linux/slab.h> 15 + 16 + /****************************************/ 17 + /* Debug Tools HSI constants and macros */ 18 + /****************************************/ 19 + 20 + enum block_id { 21 + BLOCK_GRC, 22 + BLOCK_MISCS, 23 + BLOCK_MISC, 24 + BLOCK_DBU, 25 + BLOCK_PGLUE_B, 26 + BLOCK_CNIG, 27 + BLOCK_CPMU, 28 + BLOCK_NCSI, 29 + BLOCK_OPTE, 30 + BLOCK_BMB, 31 + BLOCK_PCIE, 32 + BLOCK_MCP, 33 + BLOCK_MCP2, 34 + BLOCK_PSWHST, 35 + BLOCK_PSWHST2, 36 + BLOCK_PSWRD, 37 + BLOCK_PSWRD2, 38 + BLOCK_PSWWR, 39 + BLOCK_PSWWR2, 40 + BLOCK_PSWRQ, 41 + BLOCK_PSWRQ2, 42 + BLOCK_PGLCS, 43 + BLOCK_DMAE, 44 + BLOCK_PTU, 45 + BLOCK_TCM, 46 + BLOCK_MCM, 47 + BLOCK_UCM, 48 + BLOCK_XCM, 49 + BLOCK_YCM, 50 + BLOCK_PCM, 51 + BLOCK_QM, 52 + BLOCK_TM, 53 + BLOCK_DORQ, 54 + BLOCK_BRB, 55 + BLOCK_SRC, 56 + BLOCK_PRS, 57 + BLOCK_TSDM, 58 + BLOCK_MSDM, 59 + BLOCK_USDM, 60 + BLOCK_XSDM, 61 + BLOCK_YSDM, 62 + BLOCK_PSDM, 63 + BLOCK_TSEM, 64 + BLOCK_MSEM, 65 + BLOCK_USEM, 66 + BLOCK_XSEM, 67 + BLOCK_YSEM, 68 + BLOCK_PSEM, 69 + BLOCK_RSS, 70 + BLOCK_TMLD, 71 + BLOCK_MULD, 72 + BLOCK_YULD, 73 + BLOCK_XYLD, 74 + BLOCK_PRM, 75 + BLOCK_PBF_PB1, 76 + BLOCK_PBF_PB2, 77 + BLOCK_RPB, 78 + BLOCK_BTB, 79 + BLOCK_PBF, 80 + BLOCK_RDIF, 81 + BLOCK_TDIF, 82 + BLOCK_CDU, 83 + BLOCK_CCFC, 84 + BLOCK_TCFC, 85 + BLOCK_IGU, 86 + BLOCK_CAU, 87 + BLOCK_UMAC, 88 + BLOCK_XMAC, 89 + BLOCK_MSTAT, 90 + BLOCK_DBG, 91 + BLOCK_NIG, 92 + BLOCK_WOL, 93 + BLOCK_BMBN, 94 + BLOCK_IPC, 95 + BLOCK_NWM, 96 + BLOCK_NWS, 97 + BLOCK_MS, 98 + BLOCK_PHY_PCIE, 99 + BLOCK_LED, 100 + BLOCK_AVS_WRAP, 101 + BLOCK_PXPREQBUS, 102 + BLOCK_BAR0_MAP, 103 + BLOCK_MCP_FIO, 104 + BLOCK_LAST_INIT, 105 + BLOCK_PRS_FC, 106 + BLOCK_PBF_FC, 107 + BLOCK_NIG_LB_FC, 108 + BLOCK_NIG_LB_FC_PLLH, 109 + BLOCK_NIG_TX_FC_PLLH, 110 + BLOCK_NIG_TX_FC, 111 + BLOCK_NIG_RX_FC_PLLH, 112 + BLOCK_NIG_RX_FC, 113 + MAX_BLOCK_ID 114 + }; 115 + 116 + /* binary debug buffer types */ 117 + enum bin_dbg_buffer_type { 118 + BIN_BUF_DBG_MODE_TREE, 119 + BIN_BUF_DBG_DUMP_REG, 120 + BIN_BUF_DBG_DUMP_MEM, 121 + BIN_BUF_DBG_IDLE_CHK_REGS, 122 + BIN_BUF_DBG_IDLE_CHK_IMMS, 123 + BIN_BUF_DBG_IDLE_CHK_RULES, 124 + BIN_BUF_DBG_IDLE_CHK_PARSING_DATA, 125 + BIN_BUF_DBG_ATTN_BLOCKS, 126 + BIN_BUF_DBG_ATTN_REGS, 127 + BIN_BUF_DBG_ATTN_INDEXES, 128 + BIN_BUF_DBG_ATTN_NAME_OFFSETS, 129 + BIN_BUF_DBG_BLOCKS, 130 + BIN_BUF_DBG_BLOCKS_CHIP_DATA, 131 + BIN_BUF_DBG_BUS_LINES, 132 + BIN_BUF_DBG_BLOCKS_USER_DATA, 133 + BIN_BUF_DBG_BLOCKS_CHIP_USER_DATA, 134 + BIN_BUF_DBG_BUS_LINE_NAME_OFFSETS, 135 + BIN_BUF_DBG_RESET_REGS, 136 + BIN_BUF_DBG_PARSING_STRINGS, 137 + MAX_BIN_DBG_BUFFER_TYPE 138 + }; 139 + 140 + /* Attention bit mapping */ 141 + struct dbg_attn_bit_mapping { 142 + u16 data; 143 + #define DBG_ATTN_BIT_MAPPING_VAL_MASK 0x7FFF 144 + #define DBG_ATTN_BIT_MAPPING_VAL_SHIFT 0 145 + #define DBG_ATTN_BIT_MAPPING_IS_UNUSED_BIT_CNT_MASK 0x1 146 + #define DBG_ATTN_BIT_MAPPING_IS_UNUSED_BIT_CNT_SHIFT 15 147 + }; 148 + 149 + /* Attention block per-type data */ 150 + struct dbg_attn_block_type_data { 151 + u16 names_offset; 152 + u16 reserved1; 153 + u8 num_regs; 154 + u8 reserved2; 155 + u16 regs_offset; 156 + 157 + }; 158 + 159 + /* Block attentions */ 160 + struct dbg_attn_block { 161 + struct dbg_attn_block_type_data per_type_data[2]; 162 + }; 163 + 164 + /* Attention register result */ 165 + struct dbg_attn_reg_result { 166 + u32 data; 167 + #define DBG_ATTN_REG_RESULT_STS_ADDRESS_MASK 0xFFFFFF 168 + #define DBG_ATTN_REG_RESULT_STS_ADDRESS_SHIFT 0 169 + #define DBG_ATTN_REG_RESULT_NUM_REG_ATTN_MASK 0xFF 170 + #define DBG_ATTN_REG_RESULT_NUM_REG_ATTN_SHIFT 24 171 + u16 block_attn_offset; 172 + u16 reserved; 173 + u32 sts_val; 174 + u32 mask_val; 175 + }; 176 + 177 + /* Attention block result */ 178 + struct dbg_attn_block_result { 179 + u8 block_id; 180 + u8 data; 181 + #define DBG_ATTN_BLOCK_RESULT_ATTN_TYPE_MASK 0x3 182 + #define DBG_ATTN_BLOCK_RESULT_ATTN_TYPE_SHIFT 0 183 + #define DBG_ATTN_BLOCK_RESULT_NUM_REGS_MASK 0x3F 184 + #define DBG_ATTN_BLOCK_RESULT_NUM_REGS_SHIFT 2 185 + u16 names_offset; 186 + struct dbg_attn_reg_result reg_results[15]; 187 + }; 188 + 189 + /* Mode header */ 190 + struct dbg_mode_hdr { 191 + u16 data; 192 + #define DBG_MODE_HDR_EVAL_MODE_MASK 0x1 193 + #define DBG_MODE_HDR_EVAL_MODE_SHIFT 0 194 + #define DBG_MODE_HDR_MODES_BUF_OFFSET_MASK 0x7FFF 195 + #define DBG_MODE_HDR_MODES_BUF_OFFSET_SHIFT 1 196 + }; 197 + 198 + /* Attention register */ 199 + struct dbg_attn_reg { 200 + struct dbg_mode_hdr mode; 201 + u16 block_attn_offset; 202 + u32 data; 203 + #define DBG_ATTN_REG_STS_ADDRESS_MASK 0xFFFFFF 204 + #define DBG_ATTN_REG_STS_ADDRESS_SHIFT 0 205 + #define DBG_ATTN_REG_NUM_REG_ATTN_MASK 0xFF 206 + #define DBG_ATTN_REG_NUM_REG_ATTN_SHIFT 24 207 + u32 sts_clr_address; 208 + u32 mask_address; 209 + }; 210 + 211 + /* Attention types */ 212 + enum dbg_attn_type { 213 + ATTN_TYPE_INTERRUPT, 214 + ATTN_TYPE_PARITY, 215 + MAX_DBG_ATTN_TYPE 216 + }; 217 + 218 + /* Block debug data */ 219 + struct dbg_block { 220 + u8 name[15]; 221 + u8 associated_storm_letter; 222 + }; 223 + 224 + /* Chip-specific block debug data */ 225 + struct dbg_block_chip { 226 + u8 flags; 227 + #define DBG_BLOCK_CHIP_IS_REMOVED_MASK 0x1 228 + #define DBG_BLOCK_CHIP_IS_REMOVED_SHIFT 0 229 + #define DBG_BLOCK_CHIP_HAS_RESET_REG_MASK 0x1 230 + #define DBG_BLOCK_CHIP_HAS_RESET_REG_SHIFT 1 231 + #define DBG_BLOCK_CHIP_UNRESET_BEFORE_DUMP_MASK 0x1 232 + #define DBG_BLOCK_CHIP_UNRESET_BEFORE_DUMP_SHIFT 2 233 + #define DBG_BLOCK_CHIP_HAS_DBG_BUS_MASK 0x1 234 + #define DBG_BLOCK_CHIP_HAS_DBG_BUS_SHIFT 3 235 + #define DBG_BLOCK_CHIP_HAS_LATENCY_EVENTS_MASK 0x1 236 + #define DBG_BLOCK_CHIP_HAS_LATENCY_EVENTS_SHIFT 4 237 + #define DBG_BLOCK_CHIP_RESERVED0_MASK 0x7 238 + #define DBG_BLOCK_CHIP_RESERVED0_SHIFT 5 239 + u8 dbg_client_id; 240 + u8 reset_reg_id; 241 + u8 reset_reg_bit_offset; 242 + struct dbg_mode_hdr dbg_bus_mode; 243 + u16 reserved1; 244 + u8 reserved2; 245 + u8 num_of_dbg_bus_lines; 246 + u16 dbg_bus_lines_offset; 247 + u32 dbg_select_reg_addr; 248 + u32 dbg_dword_enable_reg_addr; 249 + u32 dbg_shift_reg_addr; 250 + u32 dbg_force_valid_reg_addr; 251 + u32 dbg_force_frame_reg_addr; 252 + }; 253 + 254 + /* Chip-specific block user debug data */ 255 + struct dbg_block_chip_user { 256 + u8 num_of_dbg_bus_lines; 257 + u8 has_latency_events; 258 + u16 names_offset; 259 + }; 260 + 261 + /* Block user debug data */ 262 + struct dbg_block_user { 263 + u8 name[16]; 264 + }; 265 + 266 + /* Block Debug line data */ 267 + struct dbg_bus_line { 268 + u8 data; 269 + #define DBG_BUS_LINE_NUM_OF_GROUPS_MASK 0xF 270 + #define DBG_BUS_LINE_NUM_OF_GROUPS_SHIFT 0 271 + #define DBG_BUS_LINE_IS_256B_MASK 0x1 272 + #define DBG_BUS_LINE_IS_256B_SHIFT 4 273 + #define DBG_BUS_LINE_RESERVED_MASK 0x7 274 + #define DBG_BUS_LINE_RESERVED_SHIFT 5 275 + u8 group_sizes; 276 + }; 277 + 278 + /* Condition header for registers dump */ 279 + struct dbg_dump_cond_hdr { 280 + struct dbg_mode_hdr mode; /* Mode header */ 281 + u8 block_id; /* block ID */ 282 + u8 data_size; /* size in dwords of the data following this header */ 283 + }; 284 + 285 + /* Memory data for registers dump */ 286 + struct dbg_dump_mem { 287 + u32 dword0; 288 + #define DBG_DUMP_MEM_ADDRESS_MASK 0xFFFFFF 289 + #define DBG_DUMP_MEM_ADDRESS_SHIFT 0 290 + #define DBG_DUMP_MEM_MEM_GROUP_ID_MASK 0xFF 291 + #define DBG_DUMP_MEM_MEM_GROUP_ID_SHIFT 24 292 + u32 dword1; 293 + #define DBG_DUMP_MEM_LENGTH_MASK 0xFFFFFF 294 + #define DBG_DUMP_MEM_LENGTH_SHIFT 0 295 + #define DBG_DUMP_MEM_WIDE_BUS_MASK 0x1 296 + #define DBG_DUMP_MEM_WIDE_BUS_SHIFT 24 297 + #define DBG_DUMP_MEM_RESERVED_MASK 0x7F 298 + #define DBG_DUMP_MEM_RESERVED_SHIFT 25 299 + }; 300 + 301 + /* Register data for registers dump */ 302 + struct dbg_dump_reg { 303 + u32 data; 304 + #define DBG_DUMP_REG_ADDRESS_MASK 0x7FFFFF 305 + #define DBG_DUMP_REG_ADDRESS_SHIFT 0 306 + #define DBG_DUMP_REG_WIDE_BUS_MASK 0x1 307 + #define DBG_DUMP_REG_WIDE_BUS_SHIFT 23 308 + #define DBG_DUMP_REG_LENGTH_MASK 0xFF 309 + #define DBG_DUMP_REG_LENGTH_SHIFT 24 310 + }; 311 + 312 + /* Split header for registers dump */ 313 + struct dbg_dump_split_hdr { 314 + u32 hdr; 315 + #define DBG_DUMP_SPLIT_HDR_DATA_SIZE_MASK 0xFFFFFF 316 + #define DBG_DUMP_SPLIT_HDR_DATA_SIZE_SHIFT 0 317 + #define DBG_DUMP_SPLIT_HDR_SPLIT_TYPE_ID_MASK 0xFF 318 + #define DBG_DUMP_SPLIT_HDR_SPLIT_TYPE_ID_SHIFT 24 319 + }; 320 + 321 + /* Condition header for idle check */ 322 + struct dbg_idle_chk_cond_hdr { 323 + struct dbg_mode_hdr mode; /* Mode header */ 324 + u16 data_size; /* size in dwords of the data following this header */ 325 + }; 326 + 327 + /* Idle Check condition register */ 328 + struct dbg_idle_chk_cond_reg { 329 + u32 data; 330 + #define DBG_IDLE_CHK_COND_REG_ADDRESS_MASK 0x7FFFFF 331 + #define DBG_IDLE_CHK_COND_REG_ADDRESS_SHIFT 0 332 + #define DBG_IDLE_CHK_COND_REG_WIDE_BUS_MASK 0x1 333 + #define DBG_IDLE_CHK_COND_REG_WIDE_BUS_SHIFT 23 334 + #define DBG_IDLE_CHK_COND_REG_BLOCK_ID_MASK 0xFF 335 + #define DBG_IDLE_CHK_COND_REG_BLOCK_ID_SHIFT 24 336 + u16 num_entries; 337 + u8 entry_size; 338 + u8 start_entry; 339 + }; 340 + 341 + /* Idle Check info register */ 342 + struct dbg_idle_chk_info_reg { 343 + u32 data; 344 + #define DBG_IDLE_CHK_INFO_REG_ADDRESS_MASK 0x7FFFFF 345 + #define DBG_IDLE_CHK_INFO_REG_ADDRESS_SHIFT 0 346 + #define DBG_IDLE_CHK_INFO_REG_WIDE_BUS_MASK 0x1 347 + #define DBG_IDLE_CHK_INFO_REG_WIDE_BUS_SHIFT 23 348 + #define DBG_IDLE_CHK_INFO_REG_BLOCK_ID_MASK 0xFF 349 + #define DBG_IDLE_CHK_INFO_REG_BLOCK_ID_SHIFT 24 350 + u16 size; /* register size in dwords */ 351 + struct dbg_mode_hdr mode; /* Mode header */ 352 + }; 353 + 354 + /* Idle Check register */ 355 + union dbg_idle_chk_reg { 356 + struct dbg_idle_chk_cond_reg cond_reg; /* condition register */ 357 + struct dbg_idle_chk_info_reg info_reg; /* info register */ 358 + }; 359 + 360 + /* Idle Check result header */ 361 + struct dbg_idle_chk_result_hdr { 362 + u16 rule_id; /* Failing rule index */ 363 + u16 mem_entry_id; /* Failing memory entry index */ 364 + u8 num_dumped_cond_regs; /* number of dumped condition registers */ 365 + u8 num_dumped_info_regs; /* number of dumped condition registers */ 366 + u8 severity; /* from dbg_idle_chk_severity_types enum */ 367 + u8 reserved; 368 + }; 369 + 370 + /* Idle Check result register header */ 371 + struct dbg_idle_chk_result_reg_hdr { 372 + u8 data; 373 + #define DBG_IDLE_CHK_RESULT_REG_HDR_IS_MEM_MASK 0x1 374 + #define DBG_IDLE_CHK_RESULT_REG_HDR_IS_MEM_SHIFT 0 375 + #define DBG_IDLE_CHK_RESULT_REG_HDR_REG_ID_MASK 0x7F 376 + #define DBG_IDLE_CHK_RESULT_REG_HDR_REG_ID_SHIFT 1 377 + u8 start_entry; /* index of the first checked entry */ 378 + u16 size; /* register size in dwords */ 379 + }; 380 + 381 + /* Idle Check rule */ 382 + struct dbg_idle_chk_rule { 383 + u16 rule_id; /* Idle Check rule ID */ 384 + u8 severity; /* value from dbg_idle_chk_severity_types enum */ 385 + u8 cond_id; /* Condition ID */ 386 + u8 num_cond_regs; /* number of condition registers */ 387 + u8 num_info_regs; /* number of info registers */ 388 + u8 num_imms; /* number of immediates in the condition */ 389 + u8 reserved1; 390 + u16 reg_offset; /* offset of this rules registers in the idle check 391 + * register array (in dbg_idle_chk_reg units). 392 + */ 393 + u16 imm_offset; /* offset of this rules immediate values in the 394 + * immediate values array (in dwords). 395 + */ 396 + }; 397 + 398 + /* Idle Check rule parsing data */ 399 + struct dbg_idle_chk_rule_parsing_data { 400 + u32 data; 401 + #define DBG_IDLE_CHK_RULE_PARSING_DATA_HAS_FW_MSG_MASK 0x1 402 + #define DBG_IDLE_CHK_RULE_PARSING_DATA_HAS_FW_MSG_SHIFT 0 403 + #define DBG_IDLE_CHK_RULE_PARSING_DATA_STR_OFFSET_MASK 0x7FFFFFFF 404 + #define DBG_IDLE_CHK_RULE_PARSING_DATA_STR_OFFSET_SHIFT 1 405 + }; 406 + 407 + /* Idle check severity types */ 408 + enum dbg_idle_chk_severity_types { 409 + /* idle check failure should cause an error */ 410 + IDLE_CHK_SEVERITY_ERROR, 411 + /* idle check failure should cause an error only if theres no traffic */ 412 + IDLE_CHK_SEVERITY_ERROR_NO_TRAFFIC, 413 + /* idle check failure should cause a warning */ 414 + IDLE_CHK_SEVERITY_WARNING, 415 + MAX_DBG_IDLE_CHK_SEVERITY_TYPES 416 + }; 417 + 418 + /* Reset register */ 419 + struct dbg_reset_reg { 420 + u32 data; 421 + #define DBG_RESET_REG_ADDR_MASK 0xFFFFFF 422 + #define DBG_RESET_REG_ADDR_SHIFT 0 423 + #define DBG_RESET_REG_IS_REMOVED_MASK 0x1 424 + #define DBG_RESET_REG_IS_REMOVED_SHIFT 24 425 + #define DBG_RESET_REG_RESERVED_MASK 0x7F 426 + #define DBG_RESET_REG_RESERVED_SHIFT 25 427 + }; 428 + 429 + /* Debug Bus block data */ 430 + struct dbg_bus_block_data { 431 + u8 enable_mask; 432 + u8 right_shift; 433 + u8 force_valid_mask; 434 + u8 force_frame_mask; 435 + u8 dword_mask; 436 + u8 line_num; 437 + u8 hw_id; 438 + u8 flags; 439 + #define DBG_BUS_BLOCK_DATA_IS_256B_LINE_MASK 0x1 440 + #define DBG_BUS_BLOCK_DATA_IS_256B_LINE_SHIFT 0 441 + #define DBG_BUS_BLOCK_DATA_RESERVED_MASK 0x7F 442 + #define DBG_BUS_BLOCK_DATA_RESERVED_SHIFT 1 443 + }; 444 + 445 + enum dbg_bus_clients { 446 + DBG_BUS_CLIENT_RBCN, 447 + DBG_BUS_CLIENT_RBCP, 448 + DBG_BUS_CLIENT_RBCR, 449 + DBG_BUS_CLIENT_RBCT, 450 + DBG_BUS_CLIENT_RBCU, 451 + DBG_BUS_CLIENT_RBCF, 452 + DBG_BUS_CLIENT_RBCX, 453 + DBG_BUS_CLIENT_RBCS, 454 + DBG_BUS_CLIENT_RBCH, 455 + DBG_BUS_CLIENT_RBCZ, 456 + DBG_BUS_CLIENT_OTHER_ENGINE, 457 + DBG_BUS_CLIENT_TIMESTAMP, 458 + DBG_BUS_CLIENT_CPU, 459 + DBG_BUS_CLIENT_RBCY, 460 + DBG_BUS_CLIENT_RBCQ, 461 + DBG_BUS_CLIENT_RBCM, 462 + DBG_BUS_CLIENT_RBCB, 463 + DBG_BUS_CLIENT_RBCW, 464 + DBG_BUS_CLIENT_RBCV, 465 + MAX_DBG_BUS_CLIENTS 466 + }; 467 + 468 + /* Debug Bus constraint operation types */ 469 + enum dbg_bus_constraint_ops { 470 + DBG_BUS_CONSTRAINT_OP_EQ, 471 + DBG_BUS_CONSTRAINT_OP_NE, 472 + DBG_BUS_CONSTRAINT_OP_LT, 473 + DBG_BUS_CONSTRAINT_OP_LTC, 474 + DBG_BUS_CONSTRAINT_OP_LE, 475 + DBG_BUS_CONSTRAINT_OP_LEC, 476 + DBG_BUS_CONSTRAINT_OP_GT, 477 + DBG_BUS_CONSTRAINT_OP_GTC, 478 + DBG_BUS_CONSTRAINT_OP_GE, 479 + DBG_BUS_CONSTRAINT_OP_GEC, 480 + MAX_DBG_BUS_CONSTRAINT_OPS 481 + }; 482 + 483 + /* Debug Bus trigger state data */ 484 + struct dbg_bus_trigger_state_data { 485 + u8 msg_len; 486 + u8 constraint_dword_mask; 487 + u8 storm_id; 488 + u8 reserved; 489 + }; 490 + 491 + /* Debug Bus memory address */ 492 + struct dbg_bus_mem_addr { 493 + u32 lo; 494 + u32 hi; 495 + }; 496 + 497 + /* Debug Bus PCI buffer data */ 498 + struct dbg_bus_pci_buf_data { 499 + struct dbg_bus_mem_addr phys_addr; /* PCI buffer physical address */ 500 + struct dbg_bus_mem_addr virt_addr; /* PCI buffer virtual address */ 501 + u32 size; /* PCI buffer size in bytes */ 502 + }; 503 + 504 + /* Debug Bus Storm EID range filter params */ 505 + struct dbg_bus_storm_eid_range_params { 506 + u8 min; /* Minimal event ID to filter on */ 507 + u8 max; /* Maximal event ID to filter on */ 508 + }; 509 + 510 + /* Debug Bus Storm EID mask filter params */ 511 + struct dbg_bus_storm_eid_mask_params { 512 + u8 val; /* Event ID value */ 513 + u8 mask; /* Event ID mask. 1s in the mask = dont care bits. */ 514 + }; 515 + 516 + /* Debug Bus Storm EID filter params */ 517 + union dbg_bus_storm_eid_params { 518 + struct dbg_bus_storm_eid_range_params range; 519 + struct dbg_bus_storm_eid_mask_params mask; 520 + }; 521 + 522 + /* Debug Bus Storm data */ 523 + struct dbg_bus_storm_data { 524 + u8 enabled; 525 + u8 mode; 526 + u8 hw_id; 527 + u8 eid_filter_en; 528 + u8 eid_range_not_mask; 529 + u8 cid_filter_en; 530 + union dbg_bus_storm_eid_params eid_filter_params; 531 + u32 cid; 532 + }; 533 + 534 + /* Debug Bus data */ 535 + struct dbg_bus_data { 536 + u32 app_version; 537 + u8 state; 538 + u8 mode_256b_en; 539 + u8 num_enabled_blocks; 540 + u8 num_enabled_storms; 541 + u8 target; 542 + u8 one_shot_en; 543 + u8 grc_input_en; 544 + u8 timestamp_input_en; 545 + u8 filter_en; 546 + u8 adding_filter; 547 + u8 filter_pre_trigger; 548 + u8 filter_post_trigger; 549 + u8 trigger_en; 550 + u8 filter_constraint_dword_mask; 551 + u8 next_trigger_state; 552 + u8 next_constraint_id; 553 + struct dbg_bus_trigger_state_data trigger_states[3]; 554 + u8 filter_msg_len; 555 + u8 rcv_from_other_engine; 556 + u8 blocks_dword_mask; 557 + u8 blocks_dword_overlap; 558 + u32 hw_id_mask; 559 + struct dbg_bus_pci_buf_data pci_buf; 560 + struct dbg_bus_block_data blocks[132]; 561 + struct dbg_bus_storm_data storms[6]; 562 + }; 563 + 564 + /* Debug bus states */ 565 + enum dbg_bus_states { 566 + DBG_BUS_STATE_IDLE, 567 + DBG_BUS_STATE_READY, 568 + DBG_BUS_STATE_RECORDING, 569 + DBG_BUS_STATE_STOPPED, 570 + MAX_DBG_BUS_STATES 571 + }; 572 + 573 + /* Debug Bus Storm modes */ 574 + enum dbg_bus_storm_modes { 575 + DBG_BUS_STORM_MODE_PRINTF, 576 + DBG_BUS_STORM_MODE_PRAM_ADDR, 577 + DBG_BUS_STORM_MODE_DRA_RW, 578 + DBG_BUS_STORM_MODE_DRA_W, 579 + DBG_BUS_STORM_MODE_LD_ST_ADDR, 580 + DBG_BUS_STORM_MODE_DRA_FSM, 581 + DBG_BUS_STORM_MODE_FAST_DBGMUX, 582 + DBG_BUS_STORM_MODE_RH, 583 + DBG_BUS_STORM_MODE_RH_WITH_STORE, 584 + DBG_BUS_STORM_MODE_FOC, 585 + DBG_BUS_STORM_MODE_EXT_STORE, 586 + MAX_DBG_BUS_STORM_MODES 587 + }; 588 + 589 + /* Debug bus target IDs */ 590 + enum dbg_bus_targets { 591 + DBG_BUS_TARGET_ID_INT_BUF, 592 + DBG_BUS_TARGET_ID_NIG, 593 + DBG_BUS_TARGET_ID_PCI, 594 + MAX_DBG_BUS_TARGETS 595 + }; 596 + 597 + /* GRC Dump data */ 598 + struct dbg_grc_data { 599 + u8 params_initialized; 600 + u8 reserved1; 601 + u16 reserved2; 602 + u32 param_val[48]; 603 + }; 604 + 605 + /* Debug GRC params */ 606 + enum dbg_grc_params { 607 + DBG_GRC_PARAM_DUMP_TSTORM, 608 + DBG_GRC_PARAM_DUMP_MSTORM, 609 + DBG_GRC_PARAM_DUMP_USTORM, 610 + DBG_GRC_PARAM_DUMP_XSTORM, 611 + DBG_GRC_PARAM_DUMP_YSTORM, 612 + DBG_GRC_PARAM_DUMP_PSTORM, 613 + DBG_GRC_PARAM_DUMP_REGS, 614 + DBG_GRC_PARAM_DUMP_RAM, 615 + DBG_GRC_PARAM_DUMP_PBUF, 616 + DBG_GRC_PARAM_DUMP_IOR, 617 + DBG_GRC_PARAM_DUMP_VFC, 618 + DBG_GRC_PARAM_DUMP_CM_CTX, 619 + DBG_GRC_PARAM_DUMP_PXP, 620 + DBG_GRC_PARAM_DUMP_RSS, 621 + DBG_GRC_PARAM_DUMP_CAU, 622 + DBG_GRC_PARAM_DUMP_QM, 623 + DBG_GRC_PARAM_DUMP_MCP, 624 + DBG_GRC_PARAM_DUMP_DORQ, 625 + DBG_GRC_PARAM_DUMP_CFC, 626 + DBG_GRC_PARAM_DUMP_IGU, 627 + DBG_GRC_PARAM_DUMP_BRB, 628 + DBG_GRC_PARAM_DUMP_BTB, 629 + DBG_GRC_PARAM_DUMP_BMB, 630 + DBG_GRC_PARAM_RESERVD1, 631 + DBG_GRC_PARAM_DUMP_MULD, 632 + DBG_GRC_PARAM_DUMP_PRS, 633 + DBG_GRC_PARAM_DUMP_DMAE, 634 + DBG_GRC_PARAM_DUMP_TM, 635 + DBG_GRC_PARAM_DUMP_SDM, 636 + DBG_GRC_PARAM_DUMP_DIF, 637 + DBG_GRC_PARAM_DUMP_STATIC, 638 + DBG_GRC_PARAM_UNSTALL, 639 + DBG_GRC_PARAM_RESERVED2, 640 + DBG_GRC_PARAM_MCP_TRACE_META_SIZE, 641 + DBG_GRC_PARAM_EXCLUDE_ALL, 642 + DBG_GRC_PARAM_CRASH, 643 + DBG_GRC_PARAM_PARITY_SAFE, 644 + DBG_GRC_PARAM_DUMP_CM, 645 + DBG_GRC_PARAM_DUMP_PHY, 646 + DBG_GRC_PARAM_NO_MCP, 647 + DBG_GRC_PARAM_NO_FW_VER, 648 + DBG_GRC_PARAM_RESERVED3, 649 + DBG_GRC_PARAM_DUMP_MCP_HW_DUMP, 650 + DBG_GRC_PARAM_DUMP_ILT_CDUC, 651 + DBG_GRC_PARAM_DUMP_ILT_CDUT, 652 + DBG_GRC_PARAM_DUMP_CAU_EXT, 653 + MAX_DBG_GRC_PARAMS 654 + }; 655 + 656 + /* Debug status codes */ 657 + enum dbg_status { 658 + DBG_STATUS_OK, 659 + DBG_STATUS_APP_VERSION_NOT_SET, 660 + DBG_STATUS_UNSUPPORTED_APP_VERSION, 661 + DBG_STATUS_DBG_BLOCK_NOT_RESET, 662 + DBG_STATUS_INVALID_ARGS, 663 + DBG_STATUS_OUTPUT_ALREADY_SET, 664 + DBG_STATUS_INVALID_PCI_BUF_SIZE, 665 + DBG_STATUS_PCI_BUF_ALLOC_FAILED, 666 + DBG_STATUS_PCI_BUF_NOT_ALLOCATED, 667 + DBG_STATUS_INVALID_FILTER_TRIGGER_DWORDS, 668 + DBG_STATUS_NO_MATCHING_FRAMING_MODE, 669 + DBG_STATUS_VFC_READ_ERROR, 670 + DBG_STATUS_STORM_ALREADY_ENABLED, 671 + DBG_STATUS_STORM_NOT_ENABLED, 672 + DBG_STATUS_BLOCK_ALREADY_ENABLED, 673 + DBG_STATUS_BLOCK_NOT_ENABLED, 674 + DBG_STATUS_NO_INPUT_ENABLED, 675 + DBG_STATUS_NO_FILTER_TRIGGER_256B, 676 + DBG_STATUS_FILTER_ALREADY_ENABLED, 677 + DBG_STATUS_TRIGGER_ALREADY_ENABLED, 678 + DBG_STATUS_TRIGGER_NOT_ENABLED, 679 + DBG_STATUS_CANT_ADD_CONSTRAINT, 680 + DBG_STATUS_TOO_MANY_TRIGGER_STATES, 681 + DBG_STATUS_TOO_MANY_CONSTRAINTS, 682 + DBG_STATUS_RECORDING_NOT_STARTED, 683 + DBG_STATUS_DATA_DIDNT_TRIGGER, 684 + DBG_STATUS_NO_DATA_RECORDED, 685 + DBG_STATUS_DUMP_BUF_TOO_SMALL, 686 + DBG_STATUS_DUMP_NOT_CHUNK_ALIGNED, 687 + DBG_STATUS_UNKNOWN_CHIP, 688 + DBG_STATUS_VIRT_MEM_ALLOC_FAILED, 689 + DBG_STATUS_BLOCK_IN_RESET, 690 + DBG_STATUS_INVALID_TRACE_SIGNATURE, 691 + DBG_STATUS_INVALID_NVRAM_BUNDLE, 692 + DBG_STATUS_NVRAM_GET_IMAGE_FAILED, 693 + DBG_STATUS_NON_ALIGNED_NVRAM_IMAGE, 694 + DBG_STATUS_NVRAM_READ_FAILED, 695 + DBG_STATUS_IDLE_CHK_PARSE_FAILED, 696 + DBG_STATUS_MCP_TRACE_BAD_DATA, 697 + DBG_STATUS_MCP_TRACE_NO_META, 698 + DBG_STATUS_MCP_COULD_NOT_HALT, 699 + DBG_STATUS_MCP_COULD_NOT_RESUME, 700 + DBG_STATUS_RESERVED0, 701 + DBG_STATUS_SEMI_FIFO_NOT_EMPTY, 702 + DBG_STATUS_IGU_FIFO_BAD_DATA, 703 + DBG_STATUS_MCP_COULD_NOT_MASK_PRTY, 704 + DBG_STATUS_FW_ASSERTS_PARSE_FAILED, 705 + DBG_STATUS_REG_FIFO_BAD_DATA, 706 + DBG_STATUS_PROTECTION_OVERRIDE_BAD_DATA, 707 + DBG_STATUS_DBG_ARRAY_NOT_SET, 708 + DBG_STATUS_RESERVED1, 709 + DBG_STATUS_NON_MATCHING_LINES, 710 + DBG_STATUS_INSUFFICIENT_HW_IDS, 711 + DBG_STATUS_DBG_BUS_IN_USE, 712 + DBG_STATUS_INVALID_STORM_DBG_MODE, 713 + DBG_STATUS_OTHER_ENGINE_BB_ONLY, 714 + DBG_STATUS_FILTER_SINGLE_HW_ID, 715 + DBG_STATUS_TRIGGER_SINGLE_HW_ID, 716 + DBG_STATUS_MISSING_TRIGGER_STATE_STORM, 717 + MAX_DBG_STATUS 718 + }; 719 + 720 + /* Debug Storms IDs */ 721 + enum dbg_storms { 722 + DBG_TSTORM_ID, 723 + DBG_MSTORM_ID, 724 + DBG_USTORM_ID, 725 + DBG_XSTORM_ID, 726 + DBG_YSTORM_ID, 727 + DBG_PSTORM_ID, 728 + MAX_DBG_STORMS 729 + }; 730 + 731 + /* Idle Check data */ 732 + struct idle_chk_data { 733 + u32 buf_size; 734 + u8 buf_size_set; 735 + u8 reserved1; 736 + u16 reserved2; 737 + }; 738 + 739 + struct pretend_params { 740 + u8 split_type; 741 + u8 reserved; 742 + u16 split_id; 743 + }; 744 + 745 + /* Debug Tools data (per HW function) 746 + */ 747 + struct dbg_tools_data { 748 + struct dbg_grc_data grc; 749 + struct dbg_bus_data bus; 750 + struct idle_chk_data idle_chk; 751 + u8 mode_enable[40]; 752 + u8 block_in_reset[132]; 753 + u8 chip_id; 754 + u8 hw_type; 755 + u8 num_ports; 756 + u8 num_pfs_per_port; 757 + u8 num_vfs; 758 + u8 initialized; 759 + u8 use_dmae; 760 + u8 reserved; 761 + struct pretend_params pretend; 762 + u32 num_regs_read; 763 + }; 764 + 765 + /* ILT Clients */ 766 + enum ilt_clients { 767 + ILT_CLI_CDUC, 768 + ILT_CLI_CDUT, 769 + ILT_CLI_QM, 770 + ILT_CLI_TM, 771 + ILT_CLI_SRC, 772 + ILT_CLI_TSDM, 773 + ILT_CLI_RGFS, 774 + ILT_CLI_TGFS, 775 + MAX_ILT_CLIENTS 776 + }; 777 + 778 + /***************************** Public Functions *******************************/ 779 + 780 + /** 781 + * qed_dbg_set_bin_ptr(): Sets a pointer to the binary data with debug 782 + * arrays. 783 + * 784 + * @p_hwfn: HW device data. 785 + * @bin_ptr: A pointer to the binary data with debug arrays. 786 + * 787 + * Return: enum dbg status. 788 + */ 789 + enum dbg_status qed_dbg_set_bin_ptr(struct qed_hwfn *p_hwfn, 790 + const u8 * const bin_ptr); 791 + 792 + /** 793 + * qed_read_regs(): Reads registers into a buffer (using GRC). 794 + * 795 + * @p_hwfn: HW device data. 796 + * @p_ptt: Ptt window used for writing the registers. 797 + * @buf: Destination buffer. 798 + * @addr: Source GRC address in dwords. 799 + * @len: Number of registers to read. 800 + * 801 + * Return: Void. 802 + */ 803 + void qed_read_regs(struct qed_hwfn *p_hwfn, 804 + struct qed_ptt *p_ptt, u32 *buf, u32 addr, u32 len); 805 + 806 + /** 807 + * qed_read_fw_info(): Reads FW info from the chip. 808 + * 809 + * @p_hwfn: HW device data. 810 + * @p_ptt: Ptt window used for writing the registers. 811 + * @fw_info: (Out) a pointer to write the FW info into. 812 + * 813 + * Return: True if the FW info was read successfully from one of the Storms, 814 + * or false if all Storms are in reset. 815 + * 816 + * The FW info contains FW-related information, such as the FW version, 817 + * FW image (main/L2B/kuku), FW timestamp, etc. 818 + * The FW info is read from the internal RAM of the first Storm that is not in 819 + * reset. 820 + */ 821 + bool qed_read_fw_info(struct qed_hwfn *p_hwfn, 822 + struct qed_ptt *p_ptt, struct fw_info *fw_info); 823 + /** 824 + * qed_dbg_grc_config(): Sets the value of a GRC parameter. 825 + * 826 + * @p_hwfn: HW device data. 827 + * @grc_param: GRC parameter. 828 + * @val: Value to set. 829 + * 830 + * Return: Error if one of the following holds: 831 + * - The version wasn't set. 832 + * - Grc_param is invalid. 833 + * - Val is outside the allowed boundaries. 834 + */ 835 + enum dbg_status qed_dbg_grc_config(struct qed_hwfn *p_hwfn, 836 + enum dbg_grc_params grc_param, u32 val); 837 + 838 + /** 839 + * qed_dbg_grc_set_params_default(): Reverts all GRC parameters to their 840 + * default value. 841 + * 842 + * @p_hwfn: HW device data. 843 + * 844 + * Return: Void. 845 + */ 846 + void qed_dbg_grc_set_params_default(struct qed_hwfn *p_hwfn); 847 + /** 848 + * qed_dbg_grc_get_dump_buf_size(): Returns the required buffer size for 849 + * GRC Dump. 850 + * 851 + * @p_hwfn: HW device data. 852 + * @p_ptt: Ptt window used for writing the registers. 853 + * @buf_size: (OUT) required buffer size (in dwords) for the GRC Dump 854 + * data. 855 + * 856 + * Return: Error if one of the following holds: 857 + * - The version wasn't set 858 + * Otherwise, returns ok. 859 + */ 860 + enum dbg_status qed_dbg_grc_get_dump_buf_size(struct qed_hwfn *p_hwfn, 861 + struct qed_ptt *p_ptt, 862 + u32 *buf_size); 863 + 864 + /** 865 + * qed_dbg_grc_dump(): Dumps GRC data into the specified buffer. 866 + * 867 + * @p_hwfn: HW device data. 868 + * @p_ptt: Ptt window used for writing the registers. 869 + * @dump_buf: Pointer to write the collected GRC data into. 870 + * @buf_size_in_dwords:Size of the specified buffer in dwords. 871 + * @num_dumped_dwords: (OUT) number of dumped dwords. 872 + * 873 + * Return: Error if one of the following holds: 874 + * - The version wasn't set. 875 + * - The specified dump buffer is too small. 876 + * Otherwise, returns ok. 877 + */ 878 + enum dbg_status qed_dbg_grc_dump(struct qed_hwfn *p_hwfn, 879 + struct qed_ptt *p_ptt, 880 + u32 *dump_buf, 881 + u32 buf_size_in_dwords, 882 + u32 *num_dumped_dwords); 883 + 884 + /** 885 + * qed_dbg_idle_chk_get_dump_buf_size(): Returns the required buffer size 886 + * for idle check results. 887 + * 888 + * @p_hwfn: HW device data. 889 + * @p_ptt: Ptt window used for writing the registers. 890 + * @buf_size: (OUT) required buffer size (in dwords) for the idle check 891 + * data. 892 + * 893 + * return: Error if one of the following holds: 894 + * - The version wasn't set. 895 + * Otherwise, returns ok. 896 + */ 897 + enum dbg_status qed_dbg_idle_chk_get_dump_buf_size(struct qed_hwfn *p_hwfn, 898 + struct qed_ptt *p_ptt, 899 + u32 *buf_size); 900 + 901 + /** 902 + * qed_dbg_idle_chk_dump: Performs idle check and writes the results 903 + * into the specified buffer. 904 + * 905 + * @p_hwfn: HW device data. 906 + * @p_ptt: Ptt window used for writing the registers. 907 + * @dump_buf: Pointer to write the idle check data into. 908 + * @buf_size_in_dwords: Size of the specified buffer in dwords. 909 + * @num_dumped_dwords: (OUT) number of dumped dwords. 910 + * 911 + * Return: Error if one of the following holds: 912 + * - The version wasn't set. 913 + * - The specified buffer is too small. 914 + * Otherwise, returns ok. 915 + */ 916 + enum dbg_status qed_dbg_idle_chk_dump(struct qed_hwfn *p_hwfn, 917 + struct qed_ptt *p_ptt, 918 + u32 *dump_buf, 919 + u32 buf_size_in_dwords, 920 + u32 *num_dumped_dwords); 921 + 922 + /** 923 + * qed_dbg_mcp_trace_get_dump_buf_size(): Returns the required buffer size 924 + * for mcp trace results. 925 + * 926 + * @p_hwfn: HW device data. 927 + * @p_ptt: Ptt window used for writing the registers. 928 + * @buf_size: (OUT) Required buffer size (in dwords) for mcp trace data. 929 + * 930 + * Return: Error if one of the following holds: 931 + * - The version wasn't set. 932 + * - The trace data in MCP scratchpad contain an invalid signature. 933 + * - The bundle ID in NVRAM is invalid. 934 + * - The trace meta data cannot be found (in NVRAM or image file). 935 + * Otherwise, returns ok. 936 + */ 937 + enum dbg_status qed_dbg_mcp_trace_get_dump_buf_size(struct qed_hwfn *p_hwfn, 938 + struct qed_ptt *p_ptt, 939 + u32 *buf_size); 940 + 941 + /** 942 + * qed_dbg_mcp_trace_dump(): Performs mcp trace and writes the results 943 + * into the specified buffer. 944 + * 945 + * @p_hwfn: HW device data. 946 + * @p_ptt: Ptt window used for writing the registers. 947 + * @dump_buf: Pointer to write the mcp trace data into. 948 + * @buf_size_in_dwords: Size of the specified buffer in dwords. 949 + * @num_dumped_dwords: (OUT) number of dumped dwords. 950 + * 951 + * Return: Error if one of the following holds: 952 + * - The version wasn't set. 953 + * - The specified buffer is too small. 954 + * - The trace data in MCP scratchpad contain an invalid signature. 955 + * - The bundle ID in NVRAM is invalid. 956 + * - The trace meta data cannot be found (in NVRAM or image file). 957 + * - The trace meta data cannot be read (from NVRAM or image file). 958 + * Otherwise, returns ok. 959 + */ 960 + enum dbg_status qed_dbg_mcp_trace_dump(struct qed_hwfn *p_hwfn, 961 + struct qed_ptt *p_ptt, 962 + u32 *dump_buf, 963 + u32 buf_size_in_dwords, 964 + u32 *num_dumped_dwords); 965 + 966 + /** 967 + * qed_dbg_reg_fifo_get_dump_buf_size(): Returns the required buffer size 968 + * for grc trace fifo results. 969 + * 970 + * @p_hwfn: HW device data. 971 + * @p_ptt: Ptt window used for writing the registers. 972 + * @buf_size: (OUT) Required buffer size (in dwords) for reg fifo data. 973 + * 974 + * Return: Error if one of the following holds: 975 + * - The version wasn't set 976 + * Otherwise, returns ok. 977 + */ 978 + enum dbg_status qed_dbg_reg_fifo_get_dump_buf_size(struct qed_hwfn *p_hwfn, 979 + struct qed_ptt *p_ptt, 980 + u32 *buf_size); 981 + 982 + /** 983 + * qed_dbg_reg_fifo_dump(): Reads the reg fifo and writes the results into 984 + * the specified buffer. 985 + * 986 + * @p_hwfn: HW device data. 987 + * @p_ptt: Ptt window used for writing the registers. 988 + * @dump_buf: Pointer to write the reg fifo data into. 989 + * @buf_size_in_dwords: Size of the specified buffer in dwords. 990 + * @num_dumped_dwords: (OUT) number of dumped dwords. 991 + * 992 + * Return: Error if one of the following holds: 993 + * - The version wasn't set. 994 + * - The specified buffer is too small. 995 + * - DMAE transaction failed. 996 + * Otherwise, returns ok. 997 + */ 998 + enum dbg_status qed_dbg_reg_fifo_dump(struct qed_hwfn *p_hwfn, 999 + struct qed_ptt *p_ptt, 1000 + u32 *dump_buf, 1001 + u32 buf_size_in_dwords, 1002 + u32 *num_dumped_dwords); 1003 + 1004 + /** 1005 + * qed_dbg_igu_fifo_get_dump_buf_size(): Returns the required buffer size 1006 + * for the IGU fifo results. 1007 + * 1008 + * @p_hwfn: HW device data. 1009 + * @p_ptt: Ptt window used for writing the registers. 1010 + * @buf_size: (OUT) Required buffer size (in dwords) for the IGU fifo 1011 + * data. 1012 + * 1013 + * Return: Error if one of the following holds: 1014 + * - The version wasn't set. 1015 + * Otherwise, returns ok. 1016 + */ 1017 + enum dbg_status qed_dbg_igu_fifo_get_dump_buf_size(struct qed_hwfn *p_hwfn, 1018 + struct qed_ptt *p_ptt, 1019 + u32 *buf_size); 1020 + 1021 + /** 1022 + * qed_dbg_igu_fifo_dump(): Reads the IGU fifo and writes the results into 1023 + * the specified buffer. 1024 + * 1025 + * @p_hwfn: HW device data. 1026 + * @p_ptt: Ptt window used for writing the registers. 1027 + * @dump_buf: Pointer to write the IGU fifo data into. 1028 + * @buf_size_in_dwords: Size of the specified buffer in dwords. 1029 + * @num_dumped_dwords: (OUT) number of dumped dwords. 1030 + * 1031 + * Return: Error if one of the following holds: 1032 + * - The version wasn't set 1033 + * - The specified buffer is too small 1034 + * - DMAE transaction failed 1035 + * Otherwise, returns ok. 1036 + */ 1037 + enum dbg_status qed_dbg_igu_fifo_dump(struct qed_hwfn *p_hwfn, 1038 + struct qed_ptt *p_ptt, 1039 + u32 *dump_buf, 1040 + u32 buf_size_in_dwords, 1041 + u32 *num_dumped_dwords); 1042 + 1043 + /** 1044 + * qed_dbg_protection_override_get_dump_buf_size(): Returns the required 1045 + * buffer size for protection override window results. 1046 + * 1047 + * @p_hwfn: HW device data. 1048 + * @p_ptt: Ptt window used for writing the registers. 1049 + * @buf_size: (OUT) Required buffer size (in dwords) for protection 1050 + * override data. 1051 + * 1052 + * Return: Error if one of the following holds: 1053 + * - The version wasn't set 1054 + * Otherwise, returns ok. 1055 + */ 1056 + enum dbg_status 1057 + qed_dbg_protection_override_get_dump_buf_size(struct qed_hwfn *p_hwfn, 1058 + struct qed_ptt *p_ptt, 1059 + u32 *buf_size); 1060 + /** 1061 + * qed_dbg_protection_override_dump(): Reads protection override window 1062 + * entries and writes the results into the specified buffer. 1063 + * 1064 + * @p_hwfn: HW device data. 1065 + * @p_ptt: Ptt window used for writing the registers. 1066 + * @dump_buf: Pointer to write the protection override data into. 1067 + * @buf_size_in_dwords: Size of the specified buffer in dwords. 1068 + * @num_dumped_dwords: (OUT) number of dumped dwords. 1069 + * 1070 + * @return: Error if one of the following holds: 1071 + * - The version wasn't set. 1072 + * - The specified buffer is too small. 1073 + * - DMAE transaction failed. 1074 + * Otherwise, returns ok. 1075 + */ 1076 + enum dbg_status qed_dbg_protection_override_dump(struct qed_hwfn *p_hwfn, 1077 + struct qed_ptt *p_ptt, 1078 + u32 *dump_buf, 1079 + u32 buf_size_in_dwords, 1080 + u32 *num_dumped_dwords); 1081 + /** 1082 + * qed_dbg_fw_asserts_get_dump_buf_size(): Returns the required buffer 1083 + * size for FW Asserts results. 1084 + * 1085 + * @p_hwfn: HW device data. 1086 + * @p_ptt: Ptt window used for writing the registers. 1087 + * @buf_size: (OUT) Required buffer size (in dwords) for FW Asserts data. 1088 + * 1089 + * Return: Error if one of the following holds: 1090 + * - The version wasn't set. 1091 + * Otherwise, returns ok. 1092 + */ 1093 + enum dbg_status qed_dbg_fw_asserts_get_dump_buf_size(struct qed_hwfn *p_hwfn, 1094 + struct qed_ptt *p_ptt, 1095 + u32 *buf_size); 1096 + /** 1097 + * qed_dbg_fw_asserts_dump(): Reads the FW Asserts and writes the results 1098 + * into the specified buffer. 1099 + * 1100 + * @p_hwfn: HW device data. 1101 + * @p_ptt: Ptt window used for writing the registers. 1102 + * @dump_buf: Pointer to write the FW Asserts data into. 1103 + * @buf_size_in_dwords: Size of the specified buffer in dwords. 1104 + * @num_dumped_dwords: (OUT) number of dumped dwords. 1105 + * 1106 + * Return: Error if one of the following holds: 1107 + * - The version wasn't set. 1108 + * - The specified buffer is too small. 1109 + * Otherwise, returns ok. 1110 + */ 1111 + enum dbg_status qed_dbg_fw_asserts_dump(struct qed_hwfn *p_hwfn, 1112 + struct qed_ptt *p_ptt, 1113 + u32 *dump_buf, 1114 + u32 buf_size_in_dwords, 1115 + u32 *num_dumped_dwords); 1116 + 1117 + /** 1118 + * qed_dbg_read_attn(): Reads the attention registers of the specified 1119 + * block and type, and writes the results into the specified buffer. 1120 + * 1121 + * @p_hwfn: HW device data. 1122 + * @p_ptt: Ptt window used for writing the registers. 1123 + * @block: Block ID. 1124 + * @attn_type: Attention type. 1125 + * @clear_status: Indicates if the attention status should be cleared. 1126 + * @results: (OUT) Pointer to write the read results into. 1127 + * 1128 + * Return: Error if one of the following holds: 1129 + * - The version wasn't set 1130 + * Otherwise, returns ok. 1131 + */ 1132 + enum dbg_status qed_dbg_read_attn(struct qed_hwfn *p_hwfn, 1133 + struct qed_ptt *p_ptt, 1134 + enum block_id block, 1135 + enum dbg_attn_type attn_type, 1136 + bool clear_status, 1137 + struct dbg_attn_block_result *results); 1138 + 1139 + /** 1140 + * qed_dbg_print_attn(): Prints attention registers values in the 1141 + * specified results struct. 1142 + * 1143 + * @p_hwfn: HW device data. 1144 + * @results: Pointer to the attention read results 1145 + * 1146 + * Return: Error if one of the following holds: 1147 + * - The version wasn't set 1148 + * Otherwise, returns ok. 1149 + */ 1150 + enum dbg_status qed_dbg_print_attn(struct qed_hwfn *p_hwfn, 1151 + struct dbg_attn_block_result *results); 1152 + 1153 + /******************************* Data Types **********************************/ 1154 + 1155 + struct mcp_trace_format { 1156 + u32 data; 1157 + #define MCP_TRACE_FORMAT_MODULE_MASK 0x0000ffff 1158 + #define MCP_TRACE_FORMAT_MODULE_OFFSET 0 1159 + #define MCP_TRACE_FORMAT_LEVEL_MASK 0x00030000 1160 + #define MCP_TRACE_FORMAT_LEVEL_OFFSET 16 1161 + #define MCP_TRACE_FORMAT_P1_SIZE_MASK 0x000c0000 1162 + #define MCP_TRACE_FORMAT_P1_SIZE_OFFSET 18 1163 + #define MCP_TRACE_FORMAT_P2_SIZE_MASK 0x00300000 1164 + #define MCP_TRACE_FORMAT_P2_SIZE_OFFSET 20 1165 + #define MCP_TRACE_FORMAT_P3_SIZE_MASK 0x00c00000 1166 + #define MCP_TRACE_FORMAT_P3_SIZE_OFFSET 22 1167 + #define MCP_TRACE_FORMAT_LEN_MASK 0xff000000 1168 + #define MCP_TRACE_FORMAT_LEN_OFFSET 24 1169 + 1170 + char *format_str; 1171 + }; 1172 + 1173 + /* MCP Trace Meta data structure */ 1174 + struct mcp_trace_meta { 1175 + u32 modules_num; 1176 + char **modules; 1177 + u32 formats_num; 1178 + struct mcp_trace_format *formats; 1179 + bool is_allocated; 1180 + }; 1181 + 1182 + /* Debug Tools user data */ 1183 + struct dbg_tools_user_data { 1184 + struct mcp_trace_meta mcp_trace_meta; 1185 + const u32 *mcp_trace_user_meta_buf; 1186 + }; 1187 + 1188 + /******************************** Constants **********************************/ 1189 + 1190 + #define MAX_NAME_LEN 16 1191 + 1192 + /***************************** Public Functions *******************************/ 1193 + 1194 + /** 1195 + * qed_dbg_user_set_bin_ptr(): Sets a pointer to the binary data with 1196 + * debug arrays. 1197 + * 1198 + * @p_hwfn: HW device data. 1199 + * @bin_ptr: a pointer to the binary data with debug arrays. 1200 + * 1201 + * Return: dbg_status. 1202 + */ 1203 + enum dbg_status qed_dbg_user_set_bin_ptr(struct qed_hwfn *p_hwfn, 1204 + const u8 * const bin_ptr); 1205 + 1206 + /** 1207 + * qed_dbg_alloc_user_data(): Allocates user debug data. 1208 + * 1209 + * @p_hwfn: HW device data. 1210 + * @user_data_ptr: (OUT) a pointer to the allocated memory. 1211 + * 1212 + * Return: dbg_status. 1213 + */ 1214 + enum dbg_status qed_dbg_alloc_user_data(struct qed_hwfn *p_hwfn, 1215 + void **user_data_ptr); 1216 + 1217 + /** 1218 + * qed_dbg_get_status_str(): Returns a string for the specified status. 1219 + * 1220 + * @status: A debug status code. 1221 + * 1222 + * Return: A string for the specified status. 1223 + */ 1224 + const char *qed_dbg_get_status_str(enum dbg_status status); 1225 + 1226 + /** 1227 + * qed_get_idle_chk_results_buf_size(): Returns the required buffer size 1228 + * for idle check results (in bytes). 1229 + * 1230 + * @p_hwfn: HW device data. 1231 + * @dump_buf: idle check dump buffer. 1232 + * @num_dumped_dwords: number of dwords that were dumped. 1233 + * @results_buf_size: (OUT) required buffer size (in bytes) for the parsed 1234 + * results. 1235 + * 1236 + * Return: Error if the parsing fails, ok otherwise. 1237 + */ 1238 + enum dbg_status qed_get_idle_chk_results_buf_size(struct qed_hwfn *p_hwfn, 1239 + u32 *dump_buf, 1240 + u32 num_dumped_dwords, 1241 + u32 *results_buf_size); 1242 + /** 1243 + * qed_print_idle_chk_results(): Prints idle check results 1244 + * 1245 + * @p_hwfn: HW device data. 1246 + * @dump_buf: idle check dump buffer. 1247 + * @num_dumped_dwords: number of dwords that were dumped. 1248 + * @results_buf: buffer for printing the idle check results. 1249 + * @num_errors: (OUT) number of errors found in idle check. 1250 + * @num_warnings: (OUT) number of warnings found in idle check. 1251 + * 1252 + * Return: Error if the parsing fails, ok otherwise. 1253 + */ 1254 + enum dbg_status qed_print_idle_chk_results(struct qed_hwfn *p_hwfn, 1255 + u32 *dump_buf, 1256 + u32 num_dumped_dwords, 1257 + char *results_buf, 1258 + u32 *num_errors, 1259 + u32 *num_warnings); 1260 + 1261 + /** 1262 + * qed_dbg_mcp_trace_set_meta_data(): Sets the MCP Trace meta data. 1263 + * 1264 + * @p_hwfn: HW device data. 1265 + * @meta_buf: Meta buffer. 1266 + * 1267 + * Return: Void. 1268 + * 1269 + * Needed in case the MCP Trace dump doesn't contain the meta data (e.g. due to 1270 + * no NVRAM access). 1271 + */ 1272 + void qed_dbg_mcp_trace_set_meta_data(struct qed_hwfn *p_hwfn, 1273 + const u32 *meta_buf); 1274 + 1275 + /** 1276 + * qed_get_mcp_trace_results_buf_size(): Returns the required buffer size 1277 + * for MCP Trace results (in bytes). 1278 + * 1279 + * @p_hwfn: HW device data. 1280 + * @dump_buf: MCP Trace dump buffer. 1281 + * @num_dumped_dwords: number of dwords that were dumped. 1282 + * @results_buf_size: (OUT) required buffer size (in bytes) for the parsed 1283 + * results. 1284 + * 1285 + * Return: Rrror if the parsing fails, ok otherwise. 1286 + */ 1287 + enum dbg_status qed_get_mcp_trace_results_buf_size(struct qed_hwfn *p_hwfn, 1288 + u32 *dump_buf, 1289 + u32 num_dumped_dwords, 1290 + u32 *results_buf_size); 1291 + 1292 + /** 1293 + * qed_print_mcp_trace_results(): Prints MCP Trace results 1294 + * 1295 + * @p_hwfn: HW device data. 1296 + * @dump_buf: MCP trace dump buffer, starting from the header. 1297 + * @num_dumped_dwords: Member of dwords that were dumped. 1298 + * @results_buf: Buffer for printing the mcp trace results. 1299 + * 1300 + * Return: Error if the parsing fails, ok otherwise. 1301 + */ 1302 + enum dbg_status qed_print_mcp_trace_results(struct qed_hwfn *p_hwfn, 1303 + u32 *dump_buf, 1304 + u32 num_dumped_dwords, 1305 + char *results_buf); 1306 + 1307 + /** 1308 + * qed_print_mcp_trace_results_cont(): Prints MCP Trace results, and 1309 + * keeps the MCP trace meta data allocated, to support continuous MCP Trace 1310 + * parsing. After the continuous parsing ends, mcp_trace_free_meta_data should 1311 + * be called to free the meta data. 1312 + * 1313 + * @p_hwfn: HW device data. 1314 + * @dump_buf: MVP trace dump buffer, starting from the header. 1315 + * @results_buf: Buffer for printing the mcp trace results. 1316 + * 1317 + * Return: Error if the parsing fails, ok otherwise. 1318 + */ 1319 + enum dbg_status qed_print_mcp_trace_results_cont(struct qed_hwfn *p_hwfn, 1320 + u32 *dump_buf, 1321 + char *results_buf); 1322 + 1323 + /** 1324 + * qed_print_mcp_trace_line(): Prints MCP Trace results for a single line 1325 + * 1326 + * @p_hwfn: HW device data. 1327 + * @dump_buf: MCP trace dump buffer, starting from the header. 1328 + * @num_dumped_bytes: Number of bytes that were dumped. 1329 + * @results_buf: Buffer for printing the mcp trace results. 1330 + * 1331 + * Return: Error if the parsing fails, ok otherwise. 1332 + */ 1333 + enum dbg_status qed_print_mcp_trace_line(struct qed_hwfn *p_hwfn, 1334 + u8 *dump_buf, 1335 + u32 num_dumped_bytes, 1336 + char *results_buf); 1337 + 1338 + /** 1339 + * qed_mcp_trace_free_meta_data(): Frees the MCP Trace meta data. 1340 + * Should be called after continuous MCP Trace parsing. 1341 + * 1342 + * @p_hwfn: HW device data. 1343 + * 1344 + * Return: Void. 1345 + */ 1346 + void qed_mcp_trace_free_meta_data(struct qed_hwfn *p_hwfn); 1347 + 1348 + /** 1349 + * qed_get_reg_fifo_results_buf_size(): Returns the required buffer size 1350 + * for reg_fifo results (in bytes). 1351 + * 1352 + * @p_hwfn: HW device data. 1353 + * @dump_buf: Reg fifo dump buffer. 1354 + * @num_dumped_dwords: Number of dwords that were dumped. 1355 + * @results_buf_size: (OUT) required buffer size (in bytes) for the parsed 1356 + * results. 1357 + * 1358 + * Return: Error if the parsing fails, ok otherwise. 1359 + */ 1360 + enum dbg_status qed_get_reg_fifo_results_buf_size(struct qed_hwfn *p_hwfn, 1361 + u32 *dump_buf, 1362 + u32 num_dumped_dwords, 1363 + u32 *results_buf_size); 1364 + 1365 + /** 1366 + * qed_print_reg_fifo_results(): Prints reg fifo results. 1367 + * 1368 + * @p_hwfn: HW device data. 1369 + * @dump_buf: Reg fifo dump buffer, starting from the header. 1370 + * @num_dumped_dwords: Number of dwords that were dumped. 1371 + * @results_buf: Buffer for printing the reg fifo results. 1372 + * 1373 + * Return: Error if the parsing fails, ok otherwise. 1374 + */ 1375 + enum dbg_status qed_print_reg_fifo_results(struct qed_hwfn *p_hwfn, 1376 + u32 *dump_buf, 1377 + u32 num_dumped_dwords, 1378 + char *results_buf); 1379 + 1380 + /** 1381 + * qed_get_igu_fifo_results_buf_size(): Returns the required buffer size 1382 + * for igu_fifo results (in bytes). 1383 + * 1384 + * @p_hwfn: HW device data. 1385 + * @dump_buf: IGU fifo dump buffer. 1386 + * @num_dumped_dwords: number of dwords that were dumped. 1387 + * @results_buf_size: (OUT) required buffer size (in bytes) for the parsed 1388 + * results. 1389 + * 1390 + * Return: Error if the parsing fails, ok otherwise. 1391 + */ 1392 + enum dbg_status qed_get_igu_fifo_results_buf_size(struct qed_hwfn *p_hwfn, 1393 + u32 *dump_buf, 1394 + u32 num_dumped_dwords, 1395 + u32 *results_buf_size); 1396 + 1397 + /** 1398 + * qed_print_igu_fifo_results(): Prints IGU fifo results 1399 + * 1400 + * @p_hwfn: HW device data. 1401 + * @dump_buf: IGU fifo dump buffer, starting from the header. 1402 + * @num_dumped_dwords: Number of dwords that were dumped. 1403 + * @results_buf: Buffer for printing the IGU fifo results. 1404 + * 1405 + * Return: Error if the parsing fails, ok otherwise. 1406 + */ 1407 + enum dbg_status qed_print_igu_fifo_results(struct qed_hwfn *p_hwfn, 1408 + u32 *dump_buf, 1409 + u32 num_dumped_dwords, 1410 + char *results_buf); 1411 + 1412 + /** 1413 + * qed_get_protection_override_results_buf_size(): Returns the required 1414 + * buffer size for protection override results (in bytes). 1415 + * 1416 + * @p_hwfn: HW device data. 1417 + * @dump_buf: Protection override dump buffer. 1418 + * @num_dumped_dwords: Number of dwords that were dumped. 1419 + * @results_buf_size: (OUT) required buffer size (in bytes) for the parsed 1420 + * results. 1421 + * 1422 + * Return: Error if the parsing fails, ok otherwise. 1423 + */ 1424 + enum dbg_status 1425 + qed_get_protection_override_results_buf_size(struct qed_hwfn *p_hwfn, 1426 + u32 *dump_buf, 1427 + u32 num_dumped_dwords, 1428 + u32 *results_buf_size); 1429 + 1430 + /** 1431 + * qed_print_protection_override_results(): Prints protection override 1432 + * results. 1433 + * 1434 + * @p_hwfn: HW device data. 1435 + * @dump_buf: Protection override dump buffer, starting from the header. 1436 + * @num_dumped_dwords: Number of dwords that were dumped. 1437 + * @results_buf: Buffer for printing the reg fifo results. 1438 + * 1439 + * Return: Error if the parsing fails, ok otherwise. 1440 + */ 1441 + enum dbg_status qed_print_protection_override_results(struct qed_hwfn *p_hwfn, 1442 + u32 *dump_buf, 1443 + u32 num_dumped_dwords, 1444 + char *results_buf); 1445 + 1446 + /** 1447 + * qed_get_fw_asserts_results_buf_size(): Returns the required buffer size 1448 + * for FW Asserts results (in bytes). 1449 + * 1450 + * @p_hwfn: HW device data. 1451 + * @dump_buf: FW Asserts dump buffer. 1452 + * @num_dumped_dwords: number of dwords that were dumped. 1453 + * @results_buf_size: (OUT) required buffer size (in bytes) for the parsed 1454 + * results. 1455 + * 1456 + * Return: Error if the parsing fails, ok otherwise. 1457 + */ 1458 + enum dbg_status qed_get_fw_asserts_results_buf_size(struct qed_hwfn *p_hwfn, 1459 + u32 *dump_buf, 1460 + u32 num_dumped_dwords, 1461 + u32 *results_buf_size); 1462 + 1463 + /** 1464 + * qed_print_fw_asserts_results(): Prints FW Asserts results. 1465 + * 1466 + * @p_hwfn: HW device data. 1467 + * @dump_buf: FW Asserts dump buffer, starting from the header. 1468 + * @num_dumped_dwords: number of dwords that were dumped. 1469 + * @results_buf: buffer for printing the FW Asserts results. 1470 + * 1471 + * Return: Error if the parsing fails, ok otherwise. 1472 + */ 1473 + enum dbg_status qed_print_fw_asserts_results(struct qed_hwfn *p_hwfn, 1474 + u32 *dump_buf, 1475 + u32 num_dumped_dwords, 1476 + char *results_buf); 1477 + 1478 + /** 1479 + * qed_dbg_parse_attn(): Parses and prints attention registers values in 1480 + * the specified results struct. 1481 + * 1482 + * @p_hwfn: HW device data. 1483 + * @results: Pointer to the attention read results 1484 + * 1485 + * Return: Error if one of the following holds: 1486 + * - The version wasn't set. 1487 + * Otherwise, returns ok. 1488 + */ 1489 + enum dbg_status qed_dbg_parse_attn(struct qed_hwfn *p_hwfn, 1490 + struct dbg_attn_block_result *results); 1491 + #endif
+6 -5
drivers/net/ethernet/qlogic/qed/qed_dcbx.h
··· 84 84 extern const struct qed_eth_dcbnl_ops qed_dcbnl_ops_pass; 85 85 86 86 #ifdef CONFIG_DCB 87 - int qed_dcbx_get_config_params(struct qed_hwfn *, struct qed_dcbx_set *); 87 + int qed_dcbx_get_config_params(struct qed_hwfn *p_hwfn, 88 + struct qed_dcbx_set *params); 88 89 89 - int qed_dcbx_config_params(struct qed_hwfn *, 90 - struct qed_ptt *, struct qed_dcbx_set *, bool); 90 + int qed_dcbx_config_params(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt, 91 + struct qed_dcbx_set *params, bool hw_commit); 91 92 #endif 92 93 93 94 /* QED local interface routines */ 94 95 int 95 - qed_dcbx_mib_update_event(struct qed_hwfn *, 96 - struct qed_ptt *, enum qed_mib_read_type); 96 + qed_dcbx_mib_update_event(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt, 97 + enum qed_mib_read_type type); 97 98 98 99 int qed_dcbx_info_alloc(struct qed_hwfn *p_hwfn); 99 100 void qed_dcbx_info_free(struct qed_hwfn *p_hwfn);
+1
drivers/net/ethernet/qlogic/qed/qed_debug.c
··· 10 10 #include "qed.h" 11 11 #include "qed_cxt.h" 12 12 #include "qed_hsi.h" 13 + #include "qed_dbg_hsi.h" 13 14 #include "qed_hw.h" 14 15 #include "qed_mcp.h" 15 16 #include "qed_reg_addr.h"
+1
drivers/net/ethernet/qlogic/qed/qed_dev.c
··· 25 25 #include "qed_dev_api.h" 26 26 #include "qed_fcoe.h" 27 27 #include "qed_hsi.h" 28 + #include "qed_iro_hsi.h" 28 29 #include "qed_hw.h" 29 30 #include "qed_init_ops.h" 30 31 #include "qed_int.h"
-2
drivers/net/ethernet/qlogic/qed/qed_dev_api.h
··· 161 161 */ 162 162 int qed_hw_start_fastpath(struct qed_hwfn *p_hwfn); 163 163 164 - 165 164 /** 166 165 * qed_hw_prepare(): Prepare Qed hardware. 167 166 * ··· 508 509 */ 509 510 int qed_db_recovery_del(struct qed_dev *cdev, 510 511 void __iomem *db_addr, void *db_data); 511 - 512 512 513 513 const char *qed_hw_get_resc_name(enum qed_resources res_id); 514 514 #endif
+1
drivers/net/ethernet/qlogic/qed/qed_fcoe.c
··· 30 30 #include "qed_hsi.h" 31 31 #include "qed_hw.h" 32 32 #include "qed_int.h" 33 + #include "qed_iro_hsi.h" 33 34 #include "qed_ll2.h" 34 35 #include "qed_mcp.h" 35 36 #include "qed_reg_addr.h"
-3723
drivers/net/ethernet/qlogic/qed/qed_hsi.h
··· 1831 1831 u32 size; /* In bytes */ 1832 1832 }; 1833 1833 1834 - /****************************************/ 1835 - /* Debug Tools HSI constants and macros */ 1836 - /****************************************/ 1837 - 1838 - enum block_id { 1839 - BLOCK_GRC, 1840 - BLOCK_MISCS, 1841 - BLOCK_MISC, 1842 - BLOCK_DBU, 1843 - BLOCK_PGLUE_B, 1844 - BLOCK_CNIG, 1845 - BLOCK_CPMU, 1846 - BLOCK_NCSI, 1847 - BLOCK_OPTE, 1848 - BLOCK_BMB, 1849 - BLOCK_PCIE, 1850 - BLOCK_MCP, 1851 - BLOCK_MCP2, 1852 - BLOCK_PSWHST, 1853 - BLOCK_PSWHST2, 1854 - BLOCK_PSWRD, 1855 - BLOCK_PSWRD2, 1856 - BLOCK_PSWWR, 1857 - BLOCK_PSWWR2, 1858 - BLOCK_PSWRQ, 1859 - BLOCK_PSWRQ2, 1860 - BLOCK_PGLCS, 1861 - BLOCK_DMAE, 1862 - BLOCK_PTU, 1863 - BLOCK_TCM, 1864 - BLOCK_MCM, 1865 - BLOCK_UCM, 1866 - BLOCK_XCM, 1867 - BLOCK_YCM, 1868 - BLOCK_PCM, 1869 - BLOCK_QM, 1870 - BLOCK_TM, 1871 - BLOCK_DORQ, 1872 - BLOCK_BRB, 1873 - BLOCK_SRC, 1874 - BLOCK_PRS, 1875 - BLOCK_TSDM, 1876 - BLOCK_MSDM, 1877 - BLOCK_USDM, 1878 - BLOCK_XSDM, 1879 - BLOCK_YSDM, 1880 - BLOCK_PSDM, 1881 - BLOCK_TSEM, 1882 - BLOCK_MSEM, 1883 - BLOCK_USEM, 1884 - BLOCK_XSEM, 1885 - BLOCK_YSEM, 1886 - BLOCK_PSEM, 1887 - BLOCK_RSS, 1888 - BLOCK_TMLD, 1889 - BLOCK_MULD, 1890 - BLOCK_YULD, 1891 - BLOCK_XYLD, 1892 - BLOCK_PRM, 1893 - BLOCK_PBF_PB1, 1894 - BLOCK_PBF_PB2, 1895 - BLOCK_RPB, 1896 - BLOCK_BTB, 1897 - BLOCK_PBF, 1898 - BLOCK_RDIF, 1899 - BLOCK_TDIF, 1900 - BLOCK_CDU, 1901 - BLOCK_CCFC, 1902 - BLOCK_TCFC, 1903 - BLOCK_IGU, 1904 - BLOCK_CAU, 1905 - BLOCK_UMAC, 1906 - BLOCK_XMAC, 1907 - BLOCK_MSTAT, 1908 - BLOCK_DBG, 1909 - BLOCK_NIG, 1910 - BLOCK_WOL, 1911 - BLOCK_BMBN, 1912 - BLOCK_IPC, 1913 - BLOCK_NWM, 1914 - BLOCK_NWS, 1915 - BLOCK_MS, 1916 - BLOCK_PHY_PCIE, 1917 - BLOCK_LED, 1918 - BLOCK_AVS_WRAP, 1919 - BLOCK_PXPREQBUS, 1920 - BLOCK_BAR0_MAP, 1921 - BLOCK_MCP_FIO, 1922 - BLOCK_LAST_INIT, 1923 - BLOCK_PRS_FC, 1924 - BLOCK_PBF_FC, 1925 - BLOCK_NIG_LB_FC, 1926 - BLOCK_NIG_LB_FC_PLLH, 1927 - BLOCK_NIG_TX_FC_PLLH, 1928 - BLOCK_NIG_TX_FC, 1929 - BLOCK_NIG_RX_FC_PLLH, 1930 - BLOCK_NIG_RX_FC, 1931 - MAX_BLOCK_ID 1932 - }; 1933 - 1934 - /* binary debug buffer types */ 1935 - enum bin_dbg_buffer_type { 1936 - BIN_BUF_DBG_MODE_TREE, 1937 - BIN_BUF_DBG_DUMP_REG, 1938 - BIN_BUF_DBG_DUMP_MEM, 1939 - BIN_BUF_DBG_IDLE_CHK_REGS, 1940 - BIN_BUF_DBG_IDLE_CHK_IMMS, 1941 - BIN_BUF_DBG_IDLE_CHK_RULES, 1942 - BIN_BUF_DBG_IDLE_CHK_PARSING_DATA, 1943 - BIN_BUF_DBG_ATTN_BLOCKS, 1944 - BIN_BUF_DBG_ATTN_REGS, 1945 - BIN_BUF_DBG_ATTN_INDEXES, 1946 - BIN_BUF_DBG_ATTN_NAME_OFFSETS, 1947 - BIN_BUF_DBG_BLOCKS, 1948 - BIN_BUF_DBG_BLOCKS_CHIP_DATA, 1949 - BIN_BUF_DBG_BUS_LINES, 1950 - BIN_BUF_DBG_BLOCKS_USER_DATA, 1951 - BIN_BUF_DBG_BLOCKS_CHIP_USER_DATA, 1952 - BIN_BUF_DBG_BUS_LINE_NAME_OFFSETS, 1953 - BIN_BUF_DBG_RESET_REGS, 1954 - BIN_BUF_DBG_PARSING_STRINGS, 1955 - MAX_BIN_DBG_BUFFER_TYPE 1956 - }; 1957 - 1958 - 1959 - /* Attention bit mapping */ 1960 - struct dbg_attn_bit_mapping { 1961 - u16 data; 1962 - #define DBG_ATTN_BIT_MAPPING_VAL_MASK 0x7FFF 1963 - #define DBG_ATTN_BIT_MAPPING_VAL_SHIFT 0 1964 - #define DBG_ATTN_BIT_MAPPING_IS_UNUSED_BIT_CNT_MASK 0x1 1965 - #define DBG_ATTN_BIT_MAPPING_IS_UNUSED_BIT_CNT_SHIFT 15 1966 - }; 1967 - 1968 - /* Attention block per-type data */ 1969 - struct dbg_attn_block_type_data { 1970 - u16 names_offset; 1971 - u16 reserved1; 1972 - u8 num_regs; 1973 - u8 reserved2; 1974 - u16 regs_offset; 1975 - 1976 - }; 1977 - 1978 - /* Block attentions */ 1979 - struct dbg_attn_block { 1980 - struct dbg_attn_block_type_data per_type_data[2]; 1981 - }; 1982 - 1983 - /* Attention register result */ 1984 - struct dbg_attn_reg_result { 1985 - u32 data; 1986 - #define DBG_ATTN_REG_RESULT_STS_ADDRESS_MASK 0xFFFFFF 1987 - #define DBG_ATTN_REG_RESULT_STS_ADDRESS_SHIFT 0 1988 - #define DBG_ATTN_REG_RESULT_NUM_REG_ATTN_MASK 0xFF 1989 - #define DBG_ATTN_REG_RESULT_NUM_REG_ATTN_SHIFT 24 1990 - u16 block_attn_offset; 1991 - u16 reserved; 1992 - u32 sts_val; 1993 - u32 mask_val; 1994 - }; 1995 - 1996 - /* Attention block result */ 1997 - struct dbg_attn_block_result { 1998 - u8 block_id; 1999 - u8 data; 2000 - #define DBG_ATTN_BLOCK_RESULT_ATTN_TYPE_MASK 0x3 2001 - #define DBG_ATTN_BLOCK_RESULT_ATTN_TYPE_SHIFT 0 2002 - #define DBG_ATTN_BLOCK_RESULT_NUM_REGS_MASK 0x3F 2003 - #define DBG_ATTN_BLOCK_RESULT_NUM_REGS_SHIFT 2 2004 - u16 names_offset; 2005 - struct dbg_attn_reg_result reg_results[15]; 2006 - }; 2007 - 2008 - /* Mode header */ 2009 - struct dbg_mode_hdr { 2010 - u16 data; 2011 - #define DBG_MODE_HDR_EVAL_MODE_MASK 0x1 2012 - #define DBG_MODE_HDR_EVAL_MODE_SHIFT 0 2013 - #define DBG_MODE_HDR_MODES_BUF_OFFSET_MASK 0x7FFF 2014 - #define DBG_MODE_HDR_MODES_BUF_OFFSET_SHIFT 1 2015 - }; 2016 - 2017 - /* Attention register */ 2018 - struct dbg_attn_reg { 2019 - struct dbg_mode_hdr mode; 2020 - u16 block_attn_offset; 2021 - u32 data; 2022 - #define DBG_ATTN_REG_STS_ADDRESS_MASK 0xFFFFFF 2023 - #define DBG_ATTN_REG_STS_ADDRESS_SHIFT 0 2024 - #define DBG_ATTN_REG_NUM_REG_ATTN_MASK 0xFF 2025 - #define DBG_ATTN_REG_NUM_REG_ATTN_SHIFT 24 2026 - u32 sts_clr_address; 2027 - u32 mask_address; 2028 - }; 2029 - 2030 - /* Attention types */ 2031 - enum dbg_attn_type { 2032 - ATTN_TYPE_INTERRUPT, 2033 - ATTN_TYPE_PARITY, 2034 - MAX_DBG_ATTN_TYPE 2035 - }; 2036 - 2037 - /* Block debug data */ 2038 - struct dbg_block { 2039 - u8 name[15]; 2040 - u8 associated_storm_letter; 2041 - }; 2042 - 2043 - /* Chip-specific block debug data */ 2044 - struct dbg_block_chip { 2045 - u8 flags; 2046 - #define DBG_BLOCK_CHIP_IS_REMOVED_MASK 0x1 2047 - #define DBG_BLOCK_CHIP_IS_REMOVED_SHIFT 0 2048 - #define DBG_BLOCK_CHIP_HAS_RESET_REG_MASK 0x1 2049 - #define DBG_BLOCK_CHIP_HAS_RESET_REG_SHIFT 1 2050 - #define DBG_BLOCK_CHIP_UNRESET_BEFORE_DUMP_MASK 0x1 2051 - #define DBG_BLOCK_CHIP_UNRESET_BEFORE_DUMP_SHIFT 2 2052 - #define DBG_BLOCK_CHIP_HAS_DBG_BUS_MASK 0x1 2053 - #define DBG_BLOCK_CHIP_HAS_DBG_BUS_SHIFT 3 2054 - #define DBG_BLOCK_CHIP_HAS_LATENCY_EVENTS_MASK 0x1 2055 - #define DBG_BLOCK_CHIP_HAS_LATENCY_EVENTS_SHIFT 4 2056 - #define DBG_BLOCK_CHIP_RESERVED0_MASK 0x7 2057 - #define DBG_BLOCK_CHIP_RESERVED0_SHIFT 5 2058 - u8 dbg_client_id; 2059 - u8 reset_reg_id; 2060 - u8 reset_reg_bit_offset; 2061 - struct dbg_mode_hdr dbg_bus_mode; 2062 - u16 reserved1; 2063 - u8 reserved2; 2064 - u8 num_of_dbg_bus_lines; 2065 - u16 dbg_bus_lines_offset; 2066 - u32 dbg_select_reg_addr; 2067 - u32 dbg_dword_enable_reg_addr; 2068 - u32 dbg_shift_reg_addr; 2069 - u32 dbg_force_valid_reg_addr; 2070 - u32 dbg_force_frame_reg_addr; 2071 - }; 2072 - 2073 - /* Chip-specific block user debug data */ 2074 - struct dbg_block_chip_user { 2075 - u8 num_of_dbg_bus_lines; 2076 - u8 has_latency_events; 2077 - u16 names_offset; 2078 - }; 2079 - 2080 - /* Block user debug data */ 2081 - struct dbg_block_user { 2082 - u8 name[16]; 2083 - }; 2084 - 2085 - /* Block Debug line data */ 2086 - struct dbg_bus_line { 2087 - u8 data; 2088 - #define DBG_BUS_LINE_NUM_OF_GROUPS_MASK 0xF 2089 - #define DBG_BUS_LINE_NUM_OF_GROUPS_SHIFT 0 2090 - #define DBG_BUS_LINE_IS_256B_MASK 0x1 2091 - #define DBG_BUS_LINE_IS_256B_SHIFT 4 2092 - #define DBG_BUS_LINE_RESERVED_MASK 0x7 2093 - #define DBG_BUS_LINE_RESERVED_SHIFT 5 2094 - u8 group_sizes; 2095 - }; 2096 - 2097 - /* Condition header for registers dump */ 2098 - struct dbg_dump_cond_hdr { 2099 - struct dbg_mode_hdr mode; /* Mode header */ 2100 - u8 block_id; /* block ID */ 2101 - u8 data_size; /* size in dwords of the data following this header */ 2102 - }; 2103 - 2104 - /* Memory data for registers dump */ 2105 - struct dbg_dump_mem { 2106 - u32 dword0; 2107 - #define DBG_DUMP_MEM_ADDRESS_MASK 0xFFFFFF 2108 - #define DBG_DUMP_MEM_ADDRESS_SHIFT 0 2109 - #define DBG_DUMP_MEM_MEM_GROUP_ID_MASK 0xFF 2110 - #define DBG_DUMP_MEM_MEM_GROUP_ID_SHIFT 24 2111 - u32 dword1; 2112 - #define DBG_DUMP_MEM_LENGTH_MASK 0xFFFFFF 2113 - #define DBG_DUMP_MEM_LENGTH_SHIFT 0 2114 - #define DBG_DUMP_MEM_WIDE_BUS_MASK 0x1 2115 - #define DBG_DUMP_MEM_WIDE_BUS_SHIFT 24 2116 - #define DBG_DUMP_MEM_RESERVED_MASK 0x7F 2117 - #define DBG_DUMP_MEM_RESERVED_SHIFT 25 2118 - }; 2119 - 2120 - /* Register data for registers dump */ 2121 - struct dbg_dump_reg { 2122 - u32 data; 2123 - #define DBG_DUMP_REG_ADDRESS_MASK 0x7FFFFF 2124 - #define DBG_DUMP_REG_ADDRESS_SHIFT 0 2125 - #define DBG_DUMP_REG_WIDE_BUS_MASK 0x1 2126 - #define DBG_DUMP_REG_WIDE_BUS_SHIFT 23 2127 - #define DBG_DUMP_REG_LENGTH_MASK 0xFF 2128 - #define DBG_DUMP_REG_LENGTH_SHIFT 24 2129 - }; 2130 - 2131 - /* Split header for registers dump */ 2132 - struct dbg_dump_split_hdr { 2133 - u32 hdr; 2134 - #define DBG_DUMP_SPLIT_HDR_DATA_SIZE_MASK 0xFFFFFF 2135 - #define DBG_DUMP_SPLIT_HDR_DATA_SIZE_SHIFT 0 2136 - #define DBG_DUMP_SPLIT_HDR_SPLIT_TYPE_ID_MASK 0xFF 2137 - #define DBG_DUMP_SPLIT_HDR_SPLIT_TYPE_ID_SHIFT 24 2138 - }; 2139 - 2140 - /* Condition header for idle check */ 2141 - struct dbg_idle_chk_cond_hdr { 2142 - struct dbg_mode_hdr mode; /* Mode header */ 2143 - u16 data_size; /* size in dwords of the data following this header */ 2144 - }; 2145 - 2146 - /* Idle Check condition register */ 2147 - struct dbg_idle_chk_cond_reg { 2148 - u32 data; 2149 - #define DBG_IDLE_CHK_COND_REG_ADDRESS_MASK 0x7FFFFF 2150 - #define DBG_IDLE_CHK_COND_REG_ADDRESS_SHIFT 0 2151 - #define DBG_IDLE_CHK_COND_REG_WIDE_BUS_MASK 0x1 2152 - #define DBG_IDLE_CHK_COND_REG_WIDE_BUS_SHIFT 23 2153 - #define DBG_IDLE_CHK_COND_REG_BLOCK_ID_MASK 0xFF 2154 - #define DBG_IDLE_CHK_COND_REG_BLOCK_ID_SHIFT 24 2155 - u16 num_entries; 2156 - u8 entry_size; 2157 - u8 start_entry; 2158 - }; 2159 - 2160 - /* Idle Check info register */ 2161 - struct dbg_idle_chk_info_reg { 2162 - u32 data; 2163 - #define DBG_IDLE_CHK_INFO_REG_ADDRESS_MASK 0x7FFFFF 2164 - #define DBG_IDLE_CHK_INFO_REG_ADDRESS_SHIFT 0 2165 - #define DBG_IDLE_CHK_INFO_REG_WIDE_BUS_MASK 0x1 2166 - #define DBG_IDLE_CHK_INFO_REG_WIDE_BUS_SHIFT 23 2167 - #define DBG_IDLE_CHK_INFO_REG_BLOCK_ID_MASK 0xFF 2168 - #define DBG_IDLE_CHK_INFO_REG_BLOCK_ID_SHIFT 24 2169 - u16 size; /* register size in dwords */ 2170 - struct dbg_mode_hdr mode; /* Mode header */ 2171 - }; 2172 - 2173 - /* Idle Check register */ 2174 - union dbg_idle_chk_reg { 2175 - struct dbg_idle_chk_cond_reg cond_reg; /* condition register */ 2176 - struct dbg_idle_chk_info_reg info_reg; /* info register */ 2177 - }; 2178 - 2179 - /* Idle Check result header */ 2180 - struct dbg_idle_chk_result_hdr { 2181 - u16 rule_id; /* Failing rule index */ 2182 - u16 mem_entry_id; /* Failing memory entry index */ 2183 - u8 num_dumped_cond_regs; /* number of dumped condition registers */ 2184 - u8 num_dumped_info_regs; /* number of dumped condition registers */ 2185 - u8 severity; /* from dbg_idle_chk_severity_types enum */ 2186 - u8 reserved; 2187 - }; 2188 - 2189 - /* Idle Check result register header */ 2190 - struct dbg_idle_chk_result_reg_hdr { 2191 - u8 data; 2192 - #define DBG_IDLE_CHK_RESULT_REG_HDR_IS_MEM_MASK 0x1 2193 - #define DBG_IDLE_CHK_RESULT_REG_HDR_IS_MEM_SHIFT 0 2194 - #define DBG_IDLE_CHK_RESULT_REG_HDR_REG_ID_MASK 0x7F 2195 - #define DBG_IDLE_CHK_RESULT_REG_HDR_REG_ID_SHIFT 1 2196 - u8 start_entry; /* index of the first checked entry */ 2197 - u16 size; /* register size in dwords */ 2198 - }; 2199 - 2200 - /* Idle Check rule */ 2201 - struct dbg_idle_chk_rule { 2202 - u16 rule_id; /* Idle Check rule ID */ 2203 - u8 severity; /* value from dbg_idle_chk_severity_types enum */ 2204 - u8 cond_id; /* Condition ID */ 2205 - u8 num_cond_regs; /* number of condition registers */ 2206 - u8 num_info_regs; /* number of info registers */ 2207 - u8 num_imms; /* number of immediates in the condition */ 2208 - u8 reserved1; 2209 - u16 reg_offset; /* offset of this rules registers in the idle check 2210 - * register array (in dbg_idle_chk_reg units). 2211 - */ 2212 - u16 imm_offset; /* offset of this rules immediate values in the 2213 - * immediate values array (in dwords). 2214 - */ 2215 - }; 2216 - 2217 - /* Idle Check rule parsing data */ 2218 - struct dbg_idle_chk_rule_parsing_data { 2219 - u32 data; 2220 - #define DBG_IDLE_CHK_RULE_PARSING_DATA_HAS_FW_MSG_MASK 0x1 2221 - #define DBG_IDLE_CHK_RULE_PARSING_DATA_HAS_FW_MSG_SHIFT 0 2222 - #define DBG_IDLE_CHK_RULE_PARSING_DATA_STR_OFFSET_MASK 0x7FFFFFFF 2223 - #define DBG_IDLE_CHK_RULE_PARSING_DATA_STR_OFFSET_SHIFT 1 2224 - }; 2225 - 2226 - /* Idle check severity types */ 2227 - enum dbg_idle_chk_severity_types { 2228 - /* idle check failure should cause an error */ 2229 - IDLE_CHK_SEVERITY_ERROR, 2230 - /* idle check failure should cause an error only if theres no traffic */ 2231 - IDLE_CHK_SEVERITY_ERROR_NO_TRAFFIC, 2232 - /* idle check failure should cause a warning */ 2233 - IDLE_CHK_SEVERITY_WARNING, 2234 - MAX_DBG_IDLE_CHK_SEVERITY_TYPES 2235 - }; 2236 - 2237 - /* Reset register */ 2238 - struct dbg_reset_reg { 2239 - u32 data; 2240 - #define DBG_RESET_REG_ADDR_MASK 0xFFFFFF 2241 - #define DBG_RESET_REG_ADDR_SHIFT 0 2242 - #define DBG_RESET_REG_IS_REMOVED_MASK 0x1 2243 - #define DBG_RESET_REG_IS_REMOVED_SHIFT 24 2244 - #define DBG_RESET_REG_RESERVED_MASK 0x7F 2245 - #define DBG_RESET_REG_RESERVED_SHIFT 25 2246 - }; 2247 - 2248 - /* Debug Bus block data */ 2249 - struct dbg_bus_block_data { 2250 - u8 enable_mask; 2251 - u8 right_shift; 2252 - u8 force_valid_mask; 2253 - u8 force_frame_mask; 2254 - u8 dword_mask; 2255 - u8 line_num; 2256 - u8 hw_id; 2257 - u8 flags; 2258 - #define DBG_BUS_BLOCK_DATA_IS_256B_LINE_MASK 0x1 2259 - #define DBG_BUS_BLOCK_DATA_IS_256B_LINE_SHIFT 0 2260 - #define DBG_BUS_BLOCK_DATA_RESERVED_MASK 0x7F 2261 - #define DBG_BUS_BLOCK_DATA_RESERVED_SHIFT 1 2262 - }; 2263 - 2264 - enum dbg_bus_clients { 2265 - DBG_BUS_CLIENT_RBCN, 2266 - DBG_BUS_CLIENT_RBCP, 2267 - DBG_BUS_CLIENT_RBCR, 2268 - DBG_BUS_CLIENT_RBCT, 2269 - DBG_BUS_CLIENT_RBCU, 2270 - DBG_BUS_CLIENT_RBCF, 2271 - DBG_BUS_CLIENT_RBCX, 2272 - DBG_BUS_CLIENT_RBCS, 2273 - DBG_BUS_CLIENT_RBCH, 2274 - DBG_BUS_CLIENT_RBCZ, 2275 - DBG_BUS_CLIENT_OTHER_ENGINE, 2276 - DBG_BUS_CLIENT_TIMESTAMP, 2277 - DBG_BUS_CLIENT_CPU, 2278 - DBG_BUS_CLIENT_RBCY, 2279 - DBG_BUS_CLIENT_RBCQ, 2280 - DBG_BUS_CLIENT_RBCM, 2281 - DBG_BUS_CLIENT_RBCB, 2282 - DBG_BUS_CLIENT_RBCW, 2283 - DBG_BUS_CLIENT_RBCV, 2284 - MAX_DBG_BUS_CLIENTS 2285 - }; 2286 - 2287 - /* Debug Bus constraint operation types */ 2288 - enum dbg_bus_constraint_ops { 2289 - DBG_BUS_CONSTRAINT_OP_EQ, 2290 - DBG_BUS_CONSTRAINT_OP_NE, 2291 - DBG_BUS_CONSTRAINT_OP_LT, 2292 - DBG_BUS_CONSTRAINT_OP_LTC, 2293 - DBG_BUS_CONSTRAINT_OP_LE, 2294 - DBG_BUS_CONSTRAINT_OP_LEC, 2295 - DBG_BUS_CONSTRAINT_OP_GT, 2296 - DBG_BUS_CONSTRAINT_OP_GTC, 2297 - DBG_BUS_CONSTRAINT_OP_GE, 2298 - DBG_BUS_CONSTRAINT_OP_GEC, 2299 - MAX_DBG_BUS_CONSTRAINT_OPS 2300 - }; 2301 - 2302 - /* Debug Bus trigger state data */ 2303 - struct dbg_bus_trigger_state_data { 2304 - u8 msg_len; 2305 - u8 constraint_dword_mask; 2306 - u8 storm_id; 2307 - u8 reserved; 2308 - }; 2309 - 2310 - /* Debug Bus memory address */ 2311 - struct dbg_bus_mem_addr { 2312 - u32 lo; 2313 - u32 hi; 2314 - }; 2315 - 2316 - /* Debug Bus PCI buffer data */ 2317 - struct dbg_bus_pci_buf_data { 2318 - struct dbg_bus_mem_addr phys_addr; /* PCI buffer physical address */ 2319 - struct dbg_bus_mem_addr virt_addr; /* PCI buffer virtual address */ 2320 - u32 size; /* PCI buffer size in bytes */ 2321 - }; 2322 - 2323 - /* Debug Bus Storm EID range filter params */ 2324 - struct dbg_bus_storm_eid_range_params { 2325 - u8 min; /* Minimal event ID to filter on */ 2326 - u8 max; /* Maximal event ID to filter on */ 2327 - }; 2328 - 2329 - /* Debug Bus Storm EID mask filter params */ 2330 - struct dbg_bus_storm_eid_mask_params { 2331 - u8 val; /* Event ID value */ 2332 - u8 mask; /* Event ID mask. 1s in the mask = dont care bits. */ 2333 - }; 2334 - 2335 - /* Debug Bus Storm EID filter params */ 2336 - union dbg_bus_storm_eid_params { 2337 - struct dbg_bus_storm_eid_range_params range; 2338 - struct dbg_bus_storm_eid_mask_params mask; 2339 - }; 2340 - 2341 - /* Debug Bus Storm data */ 2342 - struct dbg_bus_storm_data { 2343 - u8 enabled; 2344 - u8 mode; 2345 - u8 hw_id; 2346 - u8 eid_filter_en; 2347 - u8 eid_range_not_mask; 2348 - u8 cid_filter_en; 2349 - union dbg_bus_storm_eid_params eid_filter_params; 2350 - u32 cid; 2351 - }; 2352 - 2353 - /* Debug Bus data */ 2354 - struct dbg_bus_data { 2355 - u32 app_version; 2356 - u8 state; 2357 - u8 mode_256b_en; 2358 - u8 num_enabled_blocks; 2359 - u8 num_enabled_storms; 2360 - u8 target; 2361 - u8 one_shot_en; 2362 - u8 grc_input_en; 2363 - u8 timestamp_input_en; 2364 - u8 filter_en; 2365 - u8 adding_filter; 2366 - u8 filter_pre_trigger; 2367 - u8 filter_post_trigger; 2368 - u8 trigger_en; 2369 - u8 filter_constraint_dword_mask; 2370 - u8 next_trigger_state; 2371 - u8 next_constraint_id; 2372 - struct dbg_bus_trigger_state_data trigger_states[3]; 2373 - u8 filter_msg_len; 2374 - u8 rcv_from_other_engine; 2375 - u8 blocks_dword_mask; 2376 - u8 blocks_dword_overlap; 2377 - u32 hw_id_mask; 2378 - struct dbg_bus_pci_buf_data pci_buf; 2379 - struct dbg_bus_block_data blocks[132]; 2380 - struct dbg_bus_storm_data storms[6]; 2381 - }; 2382 - 2383 - /* Debug bus states */ 2384 - enum dbg_bus_states { 2385 - DBG_BUS_STATE_IDLE, 2386 - DBG_BUS_STATE_READY, 2387 - DBG_BUS_STATE_RECORDING, 2388 - DBG_BUS_STATE_STOPPED, 2389 - MAX_DBG_BUS_STATES 2390 - }; 2391 - 2392 - /* Debug Bus Storm modes */ 2393 - enum dbg_bus_storm_modes { 2394 - DBG_BUS_STORM_MODE_PRINTF, 2395 - DBG_BUS_STORM_MODE_PRAM_ADDR, 2396 - DBG_BUS_STORM_MODE_DRA_RW, 2397 - DBG_BUS_STORM_MODE_DRA_W, 2398 - DBG_BUS_STORM_MODE_LD_ST_ADDR, 2399 - DBG_BUS_STORM_MODE_DRA_FSM, 2400 - DBG_BUS_STORM_MODE_FAST_DBGMUX, 2401 - DBG_BUS_STORM_MODE_RH, 2402 - DBG_BUS_STORM_MODE_RH_WITH_STORE, 2403 - DBG_BUS_STORM_MODE_FOC, 2404 - DBG_BUS_STORM_MODE_EXT_STORE, 2405 - MAX_DBG_BUS_STORM_MODES 2406 - }; 2407 - 2408 - /* Debug bus target IDs */ 2409 - enum dbg_bus_targets { 2410 - DBG_BUS_TARGET_ID_INT_BUF, 2411 - DBG_BUS_TARGET_ID_NIG, 2412 - DBG_BUS_TARGET_ID_PCI, 2413 - MAX_DBG_BUS_TARGETS 2414 - }; 2415 - 2416 - /* GRC Dump data */ 2417 - struct dbg_grc_data { 2418 - u8 params_initialized; 2419 - u8 reserved1; 2420 - u16 reserved2; 2421 - u32 param_val[48]; 2422 - }; 2423 - 2424 - /* Debug GRC params */ 2425 - enum dbg_grc_params { 2426 - DBG_GRC_PARAM_DUMP_TSTORM, 2427 - DBG_GRC_PARAM_DUMP_MSTORM, 2428 - DBG_GRC_PARAM_DUMP_USTORM, 2429 - DBG_GRC_PARAM_DUMP_XSTORM, 2430 - DBG_GRC_PARAM_DUMP_YSTORM, 2431 - DBG_GRC_PARAM_DUMP_PSTORM, 2432 - DBG_GRC_PARAM_DUMP_REGS, 2433 - DBG_GRC_PARAM_DUMP_RAM, 2434 - DBG_GRC_PARAM_DUMP_PBUF, 2435 - DBG_GRC_PARAM_DUMP_IOR, 2436 - DBG_GRC_PARAM_DUMP_VFC, 2437 - DBG_GRC_PARAM_DUMP_CM_CTX, 2438 - DBG_GRC_PARAM_DUMP_PXP, 2439 - DBG_GRC_PARAM_DUMP_RSS, 2440 - DBG_GRC_PARAM_DUMP_CAU, 2441 - DBG_GRC_PARAM_DUMP_QM, 2442 - DBG_GRC_PARAM_DUMP_MCP, 2443 - DBG_GRC_PARAM_DUMP_DORQ, 2444 - DBG_GRC_PARAM_DUMP_CFC, 2445 - DBG_GRC_PARAM_DUMP_IGU, 2446 - DBG_GRC_PARAM_DUMP_BRB, 2447 - DBG_GRC_PARAM_DUMP_BTB, 2448 - DBG_GRC_PARAM_DUMP_BMB, 2449 - DBG_GRC_PARAM_RESERVD1, 2450 - DBG_GRC_PARAM_DUMP_MULD, 2451 - DBG_GRC_PARAM_DUMP_PRS, 2452 - DBG_GRC_PARAM_DUMP_DMAE, 2453 - DBG_GRC_PARAM_DUMP_TM, 2454 - DBG_GRC_PARAM_DUMP_SDM, 2455 - DBG_GRC_PARAM_DUMP_DIF, 2456 - DBG_GRC_PARAM_DUMP_STATIC, 2457 - DBG_GRC_PARAM_UNSTALL, 2458 - DBG_GRC_PARAM_RESERVED2, 2459 - DBG_GRC_PARAM_MCP_TRACE_META_SIZE, 2460 - DBG_GRC_PARAM_EXCLUDE_ALL, 2461 - DBG_GRC_PARAM_CRASH, 2462 - DBG_GRC_PARAM_PARITY_SAFE, 2463 - DBG_GRC_PARAM_DUMP_CM, 2464 - DBG_GRC_PARAM_DUMP_PHY, 2465 - DBG_GRC_PARAM_NO_MCP, 2466 - DBG_GRC_PARAM_NO_FW_VER, 2467 - DBG_GRC_PARAM_RESERVED3, 2468 - DBG_GRC_PARAM_DUMP_MCP_HW_DUMP, 2469 - DBG_GRC_PARAM_DUMP_ILT_CDUC, 2470 - DBG_GRC_PARAM_DUMP_ILT_CDUT, 2471 - DBG_GRC_PARAM_DUMP_CAU_EXT, 2472 - MAX_DBG_GRC_PARAMS 2473 - }; 2474 - 2475 - /* Debug status codes */ 2476 - enum dbg_status { 2477 - DBG_STATUS_OK, 2478 - DBG_STATUS_APP_VERSION_NOT_SET, 2479 - DBG_STATUS_UNSUPPORTED_APP_VERSION, 2480 - DBG_STATUS_DBG_BLOCK_NOT_RESET, 2481 - DBG_STATUS_INVALID_ARGS, 2482 - DBG_STATUS_OUTPUT_ALREADY_SET, 2483 - DBG_STATUS_INVALID_PCI_BUF_SIZE, 2484 - DBG_STATUS_PCI_BUF_ALLOC_FAILED, 2485 - DBG_STATUS_PCI_BUF_NOT_ALLOCATED, 2486 - DBG_STATUS_INVALID_FILTER_TRIGGER_DWORDS, 2487 - DBG_STATUS_NO_MATCHING_FRAMING_MODE, 2488 - DBG_STATUS_VFC_READ_ERROR, 2489 - DBG_STATUS_STORM_ALREADY_ENABLED, 2490 - DBG_STATUS_STORM_NOT_ENABLED, 2491 - DBG_STATUS_BLOCK_ALREADY_ENABLED, 2492 - DBG_STATUS_BLOCK_NOT_ENABLED, 2493 - DBG_STATUS_NO_INPUT_ENABLED, 2494 - DBG_STATUS_NO_FILTER_TRIGGER_256B, 2495 - DBG_STATUS_FILTER_ALREADY_ENABLED, 2496 - DBG_STATUS_TRIGGER_ALREADY_ENABLED, 2497 - DBG_STATUS_TRIGGER_NOT_ENABLED, 2498 - DBG_STATUS_CANT_ADD_CONSTRAINT, 2499 - DBG_STATUS_TOO_MANY_TRIGGER_STATES, 2500 - DBG_STATUS_TOO_MANY_CONSTRAINTS, 2501 - DBG_STATUS_RECORDING_NOT_STARTED, 2502 - DBG_STATUS_DATA_DIDNT_TRIGGER, 2503 - DBG_STATUS_NO_DATA_RECORDED, 2504 - DBG_STATUS_DUMP_BUF_TOO_SMALL, 2505 - DBG_STATUS_DUMP_NOT_CHUNK_ALIGNED, 2506 - DBG_STATUS_UNKNOWN_CHIP, 2507 - DBG_STATUS_VIRT_MEM_ALLOC_FAILED, 2508 - DBG_STATUS_BLOCK_IN_RESET, 2509 - DBG_STATUS_INVALID_TRACE_SIGNATURE, 2510 - DBG_STATUS_INVALID_NVRAM_BUNDLE, 2511 - DBG_STATUS_NVRAM_GET_IMAGE_FAILED, 2512 - DBG_STATUS_NON_ALIGNED_NVRAM_IMAGE, 2513 - DBG_STATUS_NVRAM_READ_FAILED, 2514 - DBG_STATUS_IDLE_CHK_PARSE_FAILED, 2515 - DBG_STATUS_MCP_TRACE_BAD_DATA, 2516 - DBG_STATUS_MCP_TRACE_NO_META, 2517 - DBG_STATUS_MCP_COULD_NOT_HALT, 2518 - DBG_STATUS_MCP_COULD_NOT_RESUME, 2519 - DBG_STATUS_RESERVED0, 2520 - DBG_STATUS_SEMI_FIFO_NOT_EMPTY, 2521 - DBG_STATUS_IGU_FIFO_BAD_DATA, 2522 - DBG_STATUS_MCP_COULD_NOT_MASK_PRTY, 2523 - DBG_STATUS_FW_ASSERTS_PARSE_FAILED, 2524 - DBG_STATUS_REG_FIFO_BAD_DATA, 2525 - DBG_STATUS_PROTECTION_OVERRIDE_BAD_DATA, 2526 - DBG_STATUS_DBG_ARRAY_NOT_SET, 2527 - DBG_STATUS_RESERVED1, 2528 - DBG_STATUS_NON_MATCHING_LINES, 2529 - DBG_STATUS_INSUFFICIENT_HW_IDS, 2530 - DBG_STATUS_DBG_BUS_IN_USE, 2531 - DBG_STATUS_INVALID_STORM_DBG_MODE, 2532 - DBG_STATUS_OTHER_ENGINE_BB_ONLY, 2533 - DBG_STATUS_FILTER_SINGLE_HW_ID, 2534 - DBG_STATUS_TRIGGER_SINGLE_HW_ID, 2535 - DBG_STATUS_MISSING_TRIGGER_STATE_STORM, 2536 - MAX_DBG_STATUS 2537 - }; 2538 - 2539 - /* Debug Storms IDs */ 2540 - enum dbg_storms { 2541 - DBG_TSTORM_ID, 2542 - DBG_MSTORM_ID, 2543 - DBG_USTORM_ID, 2544 - DBG_XSTORM_ID, 2545 - DBG_YSTORM_ID, 2546 - DBG_PSTORM_ID, 2547 - MAX_DBG_STORMS 2548 - }; 2549 - 2550 - /* Idle Check data */ 2551 - struct idle_chk_data { 2552 - u32 buf_size; 2553 - u8 buf_size_set; 2554 - u8 reserved1; 2555 - u16 reserved2; 2556 - }; 2557 - 2558 - struct pretend_params { 2559 - u8 split_type; 2560 - u8 reserved; 2561 - u16 split_id; 2562 - }; 2563 - 2564 - /* Debug Tools data (per HW function) 2565 - */ 2566 - struct dbg_tools_data { 2567 - struct dbg_grc_data grc; 2568 - struct dbg_bus_data bus; 2569 - struct idle_chk_data idle_chk; 2570 - u8 mode_enable[40]; 2571 - u8 block_in_reset[132]; 2572 - u8 chip_id; 2573 - u8 hw_type; 2574 - u8 num_ports; 2575 - u8 num_pfs_per_port; 2576 - u8 num_vfs; 2577 - u8 initialized; 2578 - u8 use_dmae; 2579 - u8 reserved; 2580 - struct pretend_params pretend; 2581 - u32 num_regs_read; 2582 - }; 2583 - 2584 - /* ILT Clients */ 2585 - enum ilt_clients { 2586 - ILT_CLI_CDUC, 2587 - ILT_CLI_CDUT, 2588 - ILT_CLI_QM, 2589 - ILT_CLI_TM, 2590 - ILT_CLI_SRC, 2591 - ILT_CLI_TSDM, 2592 - ILT_CLI_RGFS, 2593 - ILT_CLI_TGFS, 2594 - MAX_ILT_CLIENTS 2595 - }; 2596 - 2597 1834 /********************************/ 2598 1835 /* HSI Init Functions constants */ 2599 1836 /********************************/ ··· 2246 3009 u16 size; 2247 3010 }; 2248 3011 2249 - /***************************** Public Functions *******************************/ 2250 - 2251 - /** 2252 - * qed_dbg_set_bin_ptr(): Sets a pointer to the binary data with debug 2253 - * arrays. 2254 - * 2255 - * @p_hwfn: HW device data. 2256 - * @bin_ptr: A pointer to the binary data with debug arrays. 2257 - * 2258 - * Return: enum dbg status. 2259 - */ 2260 - enum dbg_status qed_dbg_set_bin_ptr(struct qed_hwfn *p_hwfn, 2261 - const u8 * const bin_ptr); 2262 - 2263 - /** 2264 - * qed_read_regs(): Reads registers into a buffer (using GRC). 2265 - * 2266 - * @p_hwfn: HW device data. 2267 - * @p_ptt: Ptt window used for writing the registers. 2268 - * @buf: Destination buffer. 2269 - * @addr: Source GRC address in dwords. 2270 - * @len: Number of registers to read. 2271 - * 2272 - * Return: Void. 2273 - */ 2274 - void qed_read_regs(struct qed_hwfn *p_hwfn, 2275 - struct qed_ptt *p_ptt, u32 *buf, u32 addr, u32 len); 2276 - 2277 - /** 2278 - * qed_read_fw_info(): Reads FW info from the chip. 2279 - * 2280 - * @p_hwfn: HW device data. 2281 - * @p_ptt: Ptt window used for writing the registers. 2282 - * @fw_info: (Out) a pointer to write the FW info into. 2283 - * 2284 - * Return: True if the FW info was read successfully from one of the Storms, 2285 - * or false if all Storms are in reset. 2286 - * 2287 - * The FW info contains FW-related information, such as the FW version, 2288 - * FW image (main/L2B/kuku), FW timestamp, etc. 2289 - * The FW info is read from the internal RAM of the first Storm that is not in 2290 - * reset. 2291 - */ 2292 - bool qed_read_fw_info(struct qed_hwfn *p_hwfn, 2293 - struct qed_ptt *p_ptt, struct fw_info *fw_info); 2294 - /** 2295 - * qed_dbg_grc_config(): Sets the value of a GRC parameter. 2296 - * 2297 - * @p_hwfn: HW device data. 2298 - * @grc_param: GRC parameter. 2299 - * @val: Value to set. 2300 - * 2301 - * Return: Error if one of the following holds: 2302 - * - The version wasn't set. 2303 - * - Grc_param is invalid. 2304 - * - Val is outside the allowed boundaries. 2305 - */ 2306 - enum dbg_status qed_dbg_grc_config(struct qed_hwfn *p_hwfn, 2307 - enum dbg_grc_params grc_param, u32 val); 2308 - 2309 - /** 2310 - * qed_dbg_grc_set_params_default(): Reverts all GRC parameters to their 2311 - * default value. 2312 - * 2313 - * @p_hwfn: HW device data. 2314 - * 2315 - * Return: Void. 2316 - */ 2317 - void qed_dbg_grc_set_params_default(struct qed_hwfn *p_hwfn); 2318 - /** 2319 - * qed_dbg_grc_get_dump_buf_size(): Returns the required buffer size for 2320 - * GRC Dump. 2321 - * 2322 - * @p_hwfn: HW device data. 2323 - * @p_ptt: Ptt window used for writing the registers. 2324 - * @buf_size: (OUT) required buffer size (in dwords) for the GRC Dump 2325 - * data. 2326 - * 2327 - * Return: Error if one of the following holds: 2328 - * - The version wasn't set 2329 - * Otherwise, returns ok. 2330 - */ 2331 - enum dbg_status qed_dbg_grc_get_dump_buf_size(struct qed_hwfn *p_hwfn, 2332 - struct qed_ptt *p_ptt, 2333 - u32 *buf_size); 2334 - 2335 - /** 2336 - * qed_dbg_grc_dump(): Dumps GRC data into the specified buffer. 2337 - * 2338 - * @p_hwfn: HW device data. 2339 - * @p_ptt: Ptt window used for writing the registers. 2340 - * @dump_buf: Pointer to write the collected GRC data into. 2341 - * @buf_size_in_dwords:Size of the specified buffer in dwords. 2342 - * @num_dumped_dwords: (OUT) number of dumped dwords. 2343 - * 2344 - * Return: Error if one of the following holds: 2345 - * - The version wasn't set. 2346 - * - The specified dump buffer is too small. 2347 - * Otherwise, returns ok. 2348 - */ 2349 - enum dbg_status qed_dbg_grc_dump(struct qed_hwfn *p_hwfn, 2350 - struct qed_ptt *p_ptt, 2351 - u32 *dump_buf, 2352 - u32 buf_size_in_dwords, 2353 - u32 *num_dumped_dwords); 2354 - 2355 - /** 2356 - * qed_dbg_idle_chk_get_dump_buf_size(): Returns the required buffer size 2357 - * for idle check results. 2358 - * 2359 - * @p_hwfn: HW device data. 2360 - * @p_ptt: Ptt window used for writing the registers. 2361 - * @buf_size: (OUT) required buffer size (in dwords) for the idle check 2362 - * data. 2363 - * 2364 - * return: Error if one of the following holds: 2365 - * - The version wasn't set. 2366 - * Otherwise, returns ok. 2367 - */ 2368 - enum dbg_status qed_dbg_idle_chk_get_dump_buf_size(struct qed_hwfn *p_hwfn, 2369 - struct qed_ptt *p_ptt, 2370 - u32 *buf_size); 2371 - 2372 - /** 2373 - * qed_dbg_idle_chk_dump: Performs idle check and writes the results 2374 - * into the specified buffer. 2375 - * 2376 - * @p_hwfn: HW device data. 2377 - * @p_ptt: Ptt window used for writing the registers. 2378 - * @dump_buf: Pointer to write the idle check data into. 2379 - * @buf_size_in_dwords: Size of the specified buffer in dwords. 2380 - * @num_dumped_dwords: (OUT) number of dumped dwords. 2381 - * 2382 - * Return: Error if one of the following holds: 2383 - * - The version wasn't set. 2384 - * - The specified buffer is too small. 2385 - * Otherwise, returns ok. 2386 - */ 2387 - enum dbg_status qed_dbg_idle_chk_dump(struct qed_hwfn *p_hwfn, 2388 - struct qed_ptt *p_ptt, 2389 - u32 *dump_buf, 2390 - u32 buf_size_in_dwords, 2391 - u32 *num_dumped_dwords); 2392 - 2393 - /** 2394 - * qed_dbg_mcp_trace_get_dump_buf_size(): Returns the required buffer size 2395 - * for mcp trace results. 2396 - * 2397 - * @p_hwfn: HW device data. 2398 - * @p_ptt: Ptt window used for writing the registers. 2399 - * @buf_size: (OUT) Required buffer size (in dwords) for mcp trace data. 2400 - * 2401 - * Return: Error if one of the following holds: 2402 - * - The version wasn't set. 2403 - * - The trace data in MCP scratchpad contain an invalid signature. 2404 - * - The bundle ID in NVRAM is invalid. 2405 - * - The trace meta data cannot be found (in NVRAM or image file). 2406 - * Otherwise, returns ok. 2407 - */ 2408 - enum dbg_status qed_dbg_mcp_trace_get_dump_buf_size(struct qed_hwfn *p_hwfn, 2409 - struct qed_ptt *p_ptt, 2410 - u32 *buf_size); 2411 - 2412 - /** 2413 - * qed_dbg_mcp_trace_dump(): Performs mcp trace and writes the results 2414 - * into the specified buffer. 2415 - * 2416 - * @p_hwfn: HW device data. 2417 - * @p_ptt: Ptt window used for writing the registers. 2418 - * @dump_buf: Pointer to write the mcp trace data into. 2419 - * @buf_size_in_dwords: Size of the specified buffer in dwords. 2420 - * @num_dumped_dwords: (OUT) number of dumped dwords. 2421 - * 2422 - * Return: Error if one of the following holds: 2423 - * - The version wasn't set. 2424 - * - The specified buffer is too small. 2425 - * - The trace data in MCP scratchpad contain an invalid signature. 2426 - * - The bundle ID in NVRAM is invalid. 2427 - * - The trace meta data cannot be found (in NVRAM or image file). 2428 - * - The trace meta data cannot be read (from NVRAM or image file). 2429 - * Otherwise, returns ok. 2430 - */ 2431 - enum dbg_status qed_dbg_mcp_trace_dump(struct qed_hwfn *p_hwfn, 2432 - struct qed_ptt *p_ptt, 2433 - u32 *dump_buf, 2434 - u32 buf_size_in_dwords, 2435 - u32 *num_dumped_dwords); 2436 - 2437 - /** 2438 - * qed_dbg_reg_fifo_get_dump_buf_size(): Returns the required buffer size 2439 - * for grc trace fifo results. 2440 - * 2441 - * @p_hwfn: HW device data. 2442 - * @p_ptt: Ptt window used for writing the registers. 2443 - * @buf_size: (OUT) Required buffer size (in dwords) for reg fifo data. 2444 - * 2445 - * Return: Error if one of the following holds: 2446 - * - The version wasn't set 2447 - * Otherwise, returns ok. 2448 - */ 2449 - enum dbg_status qed_dbg_reg_fifo_get_dump_buf_size(struct qed_hwfn *p_hwfn, 2450 - struct qed_ptt *p_ptt, 2451 - u32 *buf_size); 2452 - 2453 - /** 2454 - * qed_dbg_reg_fifo_dump(): Reads the reg fifo and writes the results into 2455 - * the specified buffer. 2456 - * 2457 - * @p_hwfn: HW device data. 2458 - * @p_ptt: Ptt window used for writing the registers. 2459 - * @dump_buf: Pointer to write the reg fifo data into. 2460 - * @buf_size_in_dwords: Size of the specified buffer in dwords. 2461 - * @num_dumped_dwords: (OUT) number of dumped dwords. 2462 - * 2463 - * Return: Error if one of the following holds: 2464 - * - The version wasn't set. 2465 - * - The specified buffer is too small. 2466 - * - DMAE transaction failed. 2467 - * Otherwise, returns ok. 2468 - */ 2469 - enum dbg_status qed_dbg_reg_fifo_dump(struct qed_hwfn *p_hwfn, 2470 - struct qed_ptt *p_ptt, 2471 - u32 *dump_buf, 2472 - u32 buf_size_in_dwords, 2473 - u32 *num_dumped_dwords); 2474 - 2475 - /** 2476 - * qed_dbg_igu_fifo_get_dump_buf_size(): Returns the required buffer size 2477 - * for the IGU fifo results. 2478 - * 2479 - * @p_hwfn: HW device data. 2480 - * @p_ptt: Ptt window used for writing the registers. 2481 - * @buf_size: (OUT) Required buffer size (in dwords) for the IGU fifo 2482 - * data. 2483 - * 2484 - * Return: Error if one of the following holds: 2485 - * - The version wasn't set. 2486 - * Otherwise, returns ok. 2487 - */ 2488 - enum dbg_status qed_dbg_igu_fifo_get_dump_buf_size(struct qed_hwfn *p_hwfn, 2489 - struct qed_ptt *p_ptt, 2490 - u32 *buf_size); 2491 - 2492 - /** 2493 - * qed_dbg_igu_fifo_dump(): Reads the IGU fifo and writes the results into 2494 - * the specified buffer. 2495 - * 2496 - * @p_hwfn: HW device data. 2497 - * @p_ptt: Ptt window used for writing the registers. 2498 - * @dump_buf: Pointer to write the IGU fifo data into. 2499 - * @buf_size_in_dwords: Size of the specified buffer in dwords. 2500 - * @num_dumped_dwords: (OUT) number of dumped dwords. 2501 - * 2502 - * Return: Error if one of the following holds: 2503 - * - The version wasn't set 2504 - * - The specified buffer is too small 2505 - * - DMAE transaction failed 2506 - * Otherwise, returns ok. 2507 - */ 2508 - enum dbg_status qed_dbg_igu_fifo_dump(struct qed_hwfn *p_hwfn, 2509 - struct qed_ptt *p_ptt, 2510 - u32 *dump_buf, 2511 - u32 buf_size_in_dwords, 2512 - u32 *num_dumped_dwords); 2513 - 2514 - /** 2515 - * qed_dbg_protection_override_get_dump_buf_size(): Returns the required 2516 - * buffer size for protection override window results. 2517 - * 2518 - * @p_hwfn: HW device data. 2519 - * @p_ptt: Ptt window used for writing the registers. 2520 - * @buf_size: (OUT) Required buffer size (in dwords) for protection 2521 - * override data. 2522 - * 2523 - * Return: Error if one of the following holds: 2524 - * - The version wasn't set 2525 - * Otherwise, returns ok. 2526 - */ 2527 - enum dbg_status 2528 - qed_dbg_protection_override_get_dump_buf_size(struct qed_hwfn *p_hwfn, 2529 - struct qed_ptt *p_ptt, 2530 - u32 *buf_size); 2531 - /** 2532 - * qed_dbg_protection_override_dump(): Reads protection override window 2533 - * entries and writes the results into the specified buffer. 2534 - * 2535 - * @p_hwfn: HW device data. 2536 - * @p_ptt: Ptt window used for writing the registers. 2537 - * @dump_buf: Pointer to write the protection override data into. 2538 - * @buf_size_in_dwords: Size of the specified buffer in dwords. 2539 - * @num_dumped_dwords: (OUT) number of dumped dwords. 2540 - * 2541 - * @return: Error if one of the following holds: 2542 - * - The version wasn't set. 2543 - * - The specified buffer is too small. 2544 - * - DMAE transaction failed. 2545 - * Otherwise, returns ok. 2546 - */ 2547 - enum dbg_status qed_dbg_protection_override_dump(struct qed_hwfn *p_hwfn, 2548 - struct qed_ptt *p_ptt, 2549 - u32 *dump_buf, 2550 - u32 buf_size_in_dwords, 2551 - u32 *num_dumped_dwords); 2552 - /** 2553 - * qed_dbg_fw_asserts_get_dump_buf_size(): Returns the required buffer 2554 - * size for FW Asserts results. 2555 - * 2556 - * @p_hwfn: HW device data. 2557 - * @p_ptt: Ptt window used for writing the registers. 2558 - * @buf_size: (OUT) Required buffer size (in dwords) for FW Asserts data. 2559 - * 2560 - * Return: Error if one of the following holds: 2561 - * - The version wasn't set. 2562 - * Otherwise, returns ok. 2563 - */ 2564 - enum dbg_status qed_dbg_fw_asserts_get_dump_buf_size(struct qed_hwfn *p_hwfn, 2565 - struct qed_ptt *p_ptt, 2566 - u32 *buf_size); 2567 - /** 2568 - * qed_dbg_fw_asserts_dump(): Reads the FW Asserts and writes the results 2569 - * into the specified buffer. 2570 - * 2571 - * @p_hwfn: HW device data. 2572 - * @p_ptt: Ptt window used for writing the registers. 2573 - * @dump_buf: Pointer to write the FW Asserts data into. 2574 - * @buf_size_in_dwords: Size of the specified buffer in dwords. 2575 - * @num_dumped_dwords: (OUT) number of dumped dwords. 2576 - * 2577 - * Return: Error if one of the following holds: 2578 - * - The version wasn't set. 2579 - * - The specified buffer is too small. 2580 - * Otherwise, returns ok. 2581 - */ 2582 - enum dbg_status qed_dbg_fw_asserts_dump(struct qed_hwfn *p_hwfn, 2583 - struct qed_ptt *p_ptt, 2584 - u32 *dump_buf, 2585 - u32 buf_size_in_dwords, 2586 - u32 *num_dumped_dwords); 2587 - 2588 - /** 2589 - * qed_dbg_read_attn(): Reads the attention registers of the specified 2590 - * block and type, and writes the results into the specified buffer. 2591 - * 2592 - * @p_hwfn: HW device data. 2593 - * @p_ptt: Ptt window used for writing the registers. 2594 - * @block: Block ID. 2595 - * @attn_type: Attention type. 2596 - * @clear_status: Indicates if the attention status should be cleared. 2597 - * @results: (OUT) Pointer to write the read results into. 2598 - * 2599 - * Return: Error if one of the following holds: 2600 - * - The version wasn't set 2601 - * Otherwise, returns ok. 2602 - */ 2603 - enum dbg_status qed_dbg_read_attn(struct qed_hwfn *p_hwfn, 2604 - struct qed_ptt *p_ptt, 2605 - enum block_id block, 2606 - enum dbg_attn_type attn_type, 2607 - bool clear_status, 2608 - struct dbg_attn_block_result *results); 2609 - 2610 - /** 2611 - * qed_dbg_print_attn(): Prints attention registers values in the 2612 - * specified results struct. 2613 - * 2614 - * @p_hwfn: HW device data. 2615 - * @results: Pointer to the attention read results 2616 - * 2617 - * Return: Error if one of the following holds: 2618 - * - The version wasn't set 2619 - * Otherwise, returns ok. 2620 - */ 2621 - enum dbg_status qed_dbg_print_attn(struct qed_hwfn *p_hwfn, 2622 - struct dbg_attn_block_result *results); 2623 - 2624 - /******************************* Data Types **********************************/ 2625 - 2626 - struct mcp_trace_format { 2627 - u32 data; 2628 - #define MCP_TRACE_FORMAT_MODULE_MASK 0x0000ffff 2629 - #define MCP_TRACE_FORMAT_MODULE_OFFSET 0 2630 - #define MCP_TRACE_FORMAT_LEVEL_MASK 0x00030000 2631 - #define MCP_TRACE_FORMAT_LEVEL_OFFSET 16 2632 - #define MCP_TRACE_FORMAT_P1_SIZE_MASK 0x000c0000 2633 - #define MCP_TRACE_FORMAT_P1_SIZE_OFFSET 18 2634 - #define MCP_TRACE_FORMAT_P2_SIZE_MASK 0x00300000 2635 - #define MCP_TRACE_FORMAT_P2_SIZE_OFFSET 20 2636 - #define MCP_TRACE_FORMAT_P3_SIZE_MASK 0x00c00000 2637 - #define MCP_TRACE_FORMAT_P3_SIZE_OFFSET 22 2638 - #define MCP_TRACE_FORMAT_LEN_MASK 0xff000000 2639 - #define MCP_TRACE_FORMAT_LEN_OFFSET 24 2640 - 2641 - char *format_str; 2642 - }; 2643 - 2644 - /* MCP Trace Meta data structure */ 2645 - struct mcp_trace_meta { 2646 - u32 modules_num; 2647 - char **modules; 2648 - u32 formats_num; 2649 - struct mcp_trace_format *formats; 2650 - bool is_allocated; 2651 - }; 2652 - 2653 - /* Debug Tools user data */ 2654 - struct dbg_tools_user_data { 2655 - struct mcp_trace_meta mcp_trace_meta; 2656 - const u32 *mcp_trace_user_meta_buf; 2657 - }; 2658 - 2659 - /******************************** Constants **********************************/ 2660 - 2661 - #define MAX_NAME_LEN 16 2662 - 2663 - /***************************** Public Functions *******************************/ 2664 - 2665 - /** 2666 - * qed_dbg_user_set_bin_ptr(): Sets a pointer to the binary data with 2667 - * debug arrays. 2668 - * 2669 - * @p_hwfn: HW device data. 2670 - * @bin_ptr: a pointer to the binary data with debug arrays. 2671 - * 2672 - * Return: dbg_status. 2673 - */ 2674 - enum dbg_status qed_dbg_user_set_bin_ptr(struct qed_hwfn *p_hwfn, 2675 - const u8 * const bin_ptr); 2676 - 2677 - /** 2678 - * qed_dbg_alloc_user_data(): Allocates user debug data. 2679 - * 2680 - * @p_hwfn: HW device data. 2681 - * @user_data_ptr: (OUT) a pointer to the allocated memory. 2682 - * 2683 - * Return: dbg_status. 2684 - */ 2685 - enum dbg_status qed_dbg_alloc_user_data(struct qed_hwfn *p_hwfn, 2686 - void **user_data_ptr); 2687 - 2688 - /** 2689 - * qed_dbg_get_status_str(): Returns a string for the specified status. 2690 - * 2691 - * @status: A debug status code. 2692 - * 2693 - * Return: A string for the specified status. 2694 - */ 2695 - const char *qed_dbg_get_status_str(enum dbg_status status); 2696 - 2697 - /** 2698 - * qed_get_idle_chk_results_buf_size(): Returns the required buffer size 2699 - * for idle check results (in bytes). 2700 - * 2701 - * @p_hwfn: HW device data. 2702 - * @dump_buf: idle check dump buffer. 2703 - * @num_dumped_dwords: number of dwords that were dumped. 2704 - * @results_buf_size: (OUT) required buffer size (in bytes) for the parsed 2705 - * results. 2706 - * 2707 - * Return: Error if the parsing fails, ok otherwise. 2708 - */ 2709 - enum dbg_status qed_get_idle_chk_results_buf_size(struct qed_hwfn *p_hwfn, 2710 - u32 *dump_buf, 2711 - u32 num_dumped_dwords, 2712 - u32 *results_buf_size); 2713 - /** 2714 - * qed_print_idle_chk_results(): Prints idle check results 2715 - * 2716 - * @p_hwfn: HW device data. 2717 - * @dump_buf: idle check dump buffer. 2718 - * @num_dumped_dwords: number of dwords that were dumped. 2719 - * @results_buf: buffer for printing the idle check results. 2720 - * @num_errors: (OUT) number of errors found in idle check. 2721 - * @num_warnings: (OUT) number of warnings found in idle check. 2722 - * 2723 - * Return: Error if the parsing fails, ok otherwise. 2724 - */ 2725 - enum dbg_status qed_print_idle_chk_results(struct qed_hwfn *p_hwfn, 2726 - u32 *dump_buf, 2727 - u32 num_dumped_dwords, 2728 - char *results_buf, 2729 - u32 *num_errors, 2730 - u32 *num_warnings); 2731 - 2732 - /** 2733 - * qed_dbg_mcp_trace_set_meta_data(): Sets the MCP Trace meta data. 2734 - * 2735 - * @p_hwfn: HW device data. 2736 - * @meta_buf: Meta buffer. 2737 - * 2738 - * Return: Void. 2739 - * 2740 - * Needed in case the MCP Trace dump doesn't contain the meta data (e.g. due to 2741 - * no NVRAM access). 2742 - */ 2743 - void qed_dbg_mcp_trace_set_meta_data(struct qed_hwfn *p_hwfn, 2744 - const u32 *meta_buf); 2745 - 2746 - /** 2747 - * qed_get_mcp_trace_results_buf_size(): Returns the required buffer size 2748 - * for MCP Trace results (in bytes). 2749 - * 2750 - * @p_hwfn: HW device data. 2751 - * @dump_buf: MCP Trace dump buffer. 2752 - * @num_dumped_dwords: number of dwords that were dumped. 2753 - * @results_buf_size: (OUT) required buffer size (in bytes) for the parsed 2754 - * results. 2755 - * 2756 - * Return: Rrror if the parsing fails, ok otherwise. 2757 - */ 2758 - enum dbg_status qed_get_mcp_trace_results_buf_size(struct qed_hwfn *p_hwfn, 2759 - u32 *dump_buf, 2760 - u32 num_dumped_dwords, 2761 - u32 *results_buf_size); 2762 - 2763 - /** 2764 - * qed_print_mcp_trace_results(): Prints MCP Trace results 2765 - * 2766 - * @p_hwfn: HW device data. 2767 - * @dump_buf: MCP trace dump buffer, starting from the header. 2768 - * @num_dumped_dwords: Member of dwords that were dumped. 2769 - * @results_buf: Buffer for printing the mcp trace results. 2770 - * 2771 - * Return: Error if the parsing fails, ok otherwise. 2772 - */ 2773 - enum dbg_status qed_print_mcp_trace_results(struct qed_hwfn *p_hwfn, 2774 - u32 *dump_buf, 2775 - u32 num_dumped_dwords, 2776 - char *results_buf); 2777 - 2778 - /** 2779 - * qed_print_mcp_trace_results_cont(): Prints MCP Trace results, and 2780 - * keeps the MCP trace meta data allocated, to support continuous MCP Trace 2781 - * parsing. After the continuous parsing ends, mcp_trace_free_meta_data should 2782 - * be called to free the meta data. 2783 - * 2784 - * @p_hwfn: HW device data. 2785 - * @dump_buf: MVP trace dump buffer, starting from the header. 2786 - * @results_buf: Buffer for printing the mcp trace results. 2787 - * 2788 - * Return: Error if the parsing fails, ok otherwise. 2789 - */ 2790 - enum dbg_status qed_print_mcp_trace_results_cont(struct qed_hwfn *p_hwfn, 2791 - u32 *dump_buf, 2792 - char *results_buf); 2793 - 2794 - /** 2795 - * qed_print_mcp_trace_line(): Prints MCP Trace results for a single line 2796 - * 2797 - * @p_hwfn: HW device data. 2798 - * @dump_buf: MCP trace dump buffer, starting from the header. 2799 - * @num_dumped_bytes: Number of bytes that were dumped. 2800 - * @results_buf: Buffer for printing the mcp trace results. 2801 - * 2802 - * Return: Error if the parsing fails, ok otherwise. 2803 - */ 2804 - enum dbg_status qed_print_mcp_trace_line(struct qed_hwfn *p_hwfn, 2805 - u8 *dump_buf, 2806 - u32 num_dumped_bytes, 2807 - char *results_buf); 2808 - 2809 - /** 2810 - * qed_mcp_trace_free_meta_data(): Frees the MCP Trace meta data. 2811 - * Should be called after continuous MCP Trace parsing. 2812 - * 2813 - * @p_hwfn: HW device data. 2814 - * 2815 - * Return: Void. 2816 - */ 2817 - void qed_mcp_trace_free_meta_data(struct qed_hwfn *p_hwfn); 2818 - 2819 - /** 2820 - * qed_get_reg_fifo_results_buf_size(): Returns the required buffer size 2821 - * for reg_fifo results (in bytes). 2822 - * 2823 - * @p_hwfn: HW device data. 2824 - * @dump_buf: Reg fifo dump buffer. 2825 - * @num_dumped_dwords: Number of dwords that were dumped. 2826 - * @results_buf_size: (OUT) required buffer size (in bytes) for the parsed 2827 - * results. 2828 - * 2829 - * Return: Error if the parsing fails, ok otherwise. 2830 - */ 2831 - enum dbg_status qed_get_reg_fifo_results_buf_size(struct qed_hwfn *p_hwfn, 2832 - u32 *dump_buf, 2833 - u32 num_dumped_dwords, 2834 - u32 *results_buf_size); 2835 - 2836 - /** 2837 - * qed_print_reg_fifo_results(): Prints reg fifo results. 2838 - * 2839 - * @p_hwfn: HW device data. 2840 - * @dump_buf: Reg fifo dump buffer, starting from the header. 2841 - * @num_dumped_dwords: Number of dwords that were dumped. 2842 - * @results_buf: Buffer for printing the reg fifo results. 2843 - * 2844 - * Return: Error if the parsing fails, ok otherwise. 2845 - */ 2846 - enum dbg_status qed_print_reg_fifo_results(struct qed_hwfn *p_hwfn, 2847 - u32 *dump_buf, 2848 - u32 num_dumped_dwords, 2849 - char *results_buf); 2850 - 2851 - /** 2852 - * qed_get_igu_fifo_results_buf_size(): Returns the required buffer size 2853 - * for igu_fifo results (in bytes). 2854 - * 2855 - * @p_hwfn: HW device data. 2856 - * @dump_buf: IGU fifo dump buffer. 2857 - * @num_dumped_dwords: number of dwords that were dumped. 2858 - * @results_buf_size: (OUT) required buffer size (in bytes) for the parsed 2859 - * results. 2860 - * 2861 - * Return: Error if the parsing fails, ok otherwise. 2862 - */ 2863 - enum dbg_status qed_get_igu_fifo_results_buf_size(struct qed_hwfn *p_hwfn, 2864 - u32 *dump_buf, 2865 - u32 num_dumped_dwords, 2866 - u32 *results_buf_size); 2867 - 2868 - /** 2869 - * qed_print_igu_fifo_results(): Prints IGU fifo results 2870 - * 2871 - * @p_hwfn: HW device data. 2872 - * @dump_buf: IGU fifo dump buffer, starting from the header. 2873 - * @num_dumped_dwords: Number of dwords that were dumped. 2874 - * @results_buf: Buffer for printing the IGU fifo results. 2875 - * 2876 - * Return: Error if the parsing fails, ok otherwise. 2877 - */ 2878 - enum dbg_status qed_print_igu_fifo_results(struct qed_hwfn *p_hwfn, 2879 - u32 *dump_buf, 2880 - u32 num_dumped_dwords, 2881 - char *results_buf); 2882 - 2883 - /** 2884 - * qed_get_protection_override_results_buf_size(): Returns the required 2885 - * buffer size for protection override results (in bytes). 2886 - * 2887 - * @p_hwfn: HW device data. 2888 - * @dump_buf: Protection override dump buffer. 2889 - * @num_dumped_dwords: Number of dwords that were dumped. 2890 - * @results_buf_size: (OUT) required buffer size (in bytes) for the parsed 2891 - * results. 2892 - * 2893 - * Return: Error if the parsing fails, ok otherwise. 2894 - */ 2895 - enum dbg_status 2896 - qed_get_protection_override_results_buf_size(struct qed_hwfn *p_hwfn, 2897 - u32 *dump_buf, 2898 - u32 num_dumped_dwords, 2899 - u32 *results_buf_size); 2900 - 2901 - /** 2902 - * qed_print_protection_override_results(): Prints protection override 2903 - * results. 2904 - * 2905 - * @p_hwfn: HW device data. 2906 - * @dump_buf: Protection override dump buffer, starting from the header. 2907 - * @num_dumped_dwords: Number of dwords that were dumped. 2908 - * @results_buf: Buffer for printing the reg fifo results. 2909 - * 2910 - * Return: Error if the parsing fails, ok otherwise. 2911 - */ 2912 - enum dbg_status qed_print_protection_override_results(struct qed_hwfn *p_hwfn, 2913 - u32 *dump_buf, 2914 - u32 num_dumped_dwords, 2915 - char *results_buf); 2916 - 2917 - /** 2918 - * qed_get_fw_asserts_results_buf_size(): Returns the required buffer size 2919 - * for FW Asserts results (in bytes). 2920 - * 2921 - * @p_hwfn: HW device data. 2922 - * @dump_buf: FW Asserts dump buffer. 2923 - * @num_dumped_dwords: number of dwords that were dumped. 2924 - * @results_buf_size: (OUT) required buffer size (in bytes) for the parsed 2925 - * results. 2926 - * 2927 - * Return: Error if the parsing fails, ok otherwise. 2928 - */ 2929 - enum dbg_status qed_get_fw_asserts_results_buf_size(struct qed_hwfn *p_hwfn, 2930 - u32 *dump_buf, 2931 - u32 num_dumped_dwords, 2932 - u32 *results_buf_size); 2933 - 2934 - /** 2935 - * qed_print_fw_asserts_results(): Prints FW Asserts results. 2936 - * 2937 - * @p_hwfn: HW device data. 2938 - * @dump_buf: FW Asserts dump buffer, starting from the header. 2939 - * @num_dumped_dwords: number of dwords that were dumped. 2940 - * @results_buf: buffer for printing the FW Asserts results. 2941 - * 2942 - * Return: Error if the parsing fails, ok otherwise. 2943 - */ 2944 - enum dbg_status qed_print_fw_asserts_results(struct qed_hwfn *p_hwfn, 2945 - u32 *dump_buf, 2946 - u32 num_dumped_dwords, 2947 - char *results_buf); 2948 - 2949 - /** 2950 - * qed_dbg_parse_attn(): Parses and prints attention registers values in 2951 - * the specified results struct. 2952 - * 2953 - * @p_hwfn: HW device data. 2954 - * @results: Pointer to the attention read results 2955 - * 2956 - * Return: Error if one of the following holds: 2957 - * - The version wasn't set. 2958 - * Otherwise, returns ok. 2959 - */ 2960 - enum dbg_status qed_dbg_parse_attn(struct qed_hwfn *p_hwfn, 2961 - struct dbg_attn_block_result *results); 2962 - 2963 3012 /* Win 2 */ 2964 3013 #define GTT_BAR0_MAP_REG_IGU_CMD 0x00f000UL 2965 3014 ··· 2628 4105 */ 2629 4106 void qed_fw_overlay_mem_free(struct qed_hwfn *p_hwfn, 2630 4107 struct phys_mem_desc *fw_overlay_mem); 2631 - 2632 - /* Ystorm flow control mode. Use enum fw_flow_ctrl_mode */ 2633 - #define YSTORM_FLOW_CONTROL_MODE_OFFSET (IRO[0].base) 2634 - #define YSTORM_FLOW_CONTROL_MODE_SIZE (IRO[0].size) 2635 - 2636 - /* Tstorm port statistics */ 2637 - #define TSTORM_PORT_STAT_OFFSET(port_id) \ 2638 - (IRO[1].base + ((port_id) * IRO[1].m1)) 2639 - #define TSTORM_PORT_STAT_SIZE (IRO[1].size) 2640 - 2641 - /* Tstorm ll2 port statistics */ 2642 - #define TSTORM_LL2_PORT_STAT_OFFSET(port_id) \ 2643 - (IRO[2].base + ((port_id) * IRO[2].m1)) 2644 - #define TSTORM_LL2_PORT_STAT_SIZE (IRO[2].size) 2645 - 2646 - /* Ustorm VF-PF Channel ready flag */ 2647 - #define USTORM_VF_PF_CHANNEL_READY_OFFSET(vf_id) \ 2648 - (IRO[3].base + ((vf_id) * IRO[3].m1)) 2649 - #define USTORM_VF_PF_CHANNEL_READY_SIZE (IRO[3].size) 2650 - 2651 - /* Ustorm Final flr cleanup ack */ 2652 - #define USTORM_FLR_FINAL_ACK_OFFSET(pf_id) \ 2653 - (IRO[4].base + ((pf_id) * IRO[4].m1)) 2654 - #define USTORM_FLR_FINAL_ACK_SIZE (IRO[4].size) 2655 - 2656 - /* Ustorm Event ring consumer */ 2657 - #define USTORM_EQE_CONS_OFFSET(pf_id) \ 2658 - (IRO[5].base + ((pf_id) * IRO[5].m1)) 2659 - #define USTORM_EQE_CONS_SIZE (IRO[5].size) 2660 - 2661 - /* Ustorm eth queue zone */ 2662 - #define USTORM_ETH_QUEUE_ZONE_OFFSET(queue_zone_id) \ 2663 - (IRO[6].base + ((queue_zone_id) * IRO[6].m1)) 2664 - #define USTORM_ETH_QUEUE_ZONE_SIZE (IRO[6].size) 2665 - 2666 - /* Ustorm Common Queue ring consumer */ 2667 - #define USTORM_COMMON_QUEUE_CONS_OFFSET(queue_zone_id) \ 2668 - (IRO[7].base + ((queue_zone_id) * IRO[7].m1)) 2669 - #define USTORM_COMMON_QUEUE_CONS_SIZE (IRO[7].size) 2670 - 2671 - /* Xstorm common PQ info */ 2672 - #define XSTORM_PQ_INFO_OFFSET(pq_id) \ 2673 - (IRO[8].base + ((pq_id) * IRO[8].m1)) 2674 - #define XSTORM_PQ_INFO_SIZE (IRO[8].size) 2675 - 2676 - /* Xstorm Integration Test Data */ 2677 - #define XSTORM_INTEG_TEST_DATA_OFFSET (IRO[9].base) 2678 - #define XSTORM_INTEG_TEST_DATA_SIZE (IRO[9].size) 2679 - 2680 - /* Ystorm Integration Test Data */ 2681 - #define YSTORM_INTEG_TEST_DATA_OFFSET (IRO[10].base) 2682 - #define YSTORM_INTEG_TEST_DATA_SIZE (IRO[10].size) 2683 - 2684 - /* Pstorm Integration Test Data */ 2685 - #define PSTORM_INTEG_TEST_DATA_OFFSET (IRO[11].base) 2686 - #define PSTORM_INTEG_TEST_DATA_SIZE (IRO[11].size) 2687 - 2688 - /* Tstorm Integration Test Data */ 2689 - #define TSTORM_INTEG_TEST_DATA_OFFSET (IRO[12].base) 2690 - #define TSTORM_INTEG_TEST_DATA_SIZE (IRO[12].size) 2691 - 2692 - /* Mstorm Integration Test Data */ 2693 - #define MSTORM_INTEG_TEST_DATA_OFFSET (IRO[13].base) 2694 - #define MSTORM_INTEG_TEST_DATA_SIZE (IRO[13].size) 2695 - 2696 - /* Ustorm Integration Test Data */ 2697 - #define USTORM_INTEG_TEST_DATA_OFFSET (IRO[14].base) 2698 - #define USTORM_INTEG_TEST_DATA_SIZE (IRO[14].size) 2699 - 2700 - /* Xstorm overlay buffer host address */ 2701 - #define XSTORM_OVERLAY_BUF_ADDR_OFFSET (IRO[15].base) 2702 - #define XSTORM_OVERLAY_BUF_ADDR_SIZE (IRO[15].size) 2703 - 2704 - /* Ystorm overlay buffer host address */ 2705 - #define YSTORM_OVERLAY_BUF_ADDR_OFFSET (IRO[16].base) 2706 - #define YSTORM_OVERLAY_BUF_ADDR_SIZE (IRO[16].size) 2707 - 2708 - /* Pstorm overlay buffer host address */ 2709 - #define PSTORM_OVERLAY_BUF_ADDR_OFFSET (IRO[17].base) 2710 - #define PSTORM_OVERLAY_BUF_ADDR_SIZE (IRO[17].size) 2711 - 2712 - /* Tstorm overlay buffer host address */ 2713 - #define TSTORM_OVERLAY_BUF_ADDR_OFFSET (IRO[18].base) 2714 - #define TSTORM_OVERLAY_BUF_ADDR_SIZE (IRO[18].size) 2715 - 2716 - /* Mstorm overlay buffer host address */ 2717 - #define MSTORM_OVERLAY_BUF_ADDR_OFFSET (IRO[19].base) 2718 - #define MSTORM_OVERLAY_BUF_ADDR_SIZE (IRO[19].size) 2719 - 2720 - /* Ustorm overlay buffer host address */ 2721 - #define USTORM_OVERLAY_BUF_ADDR_OFFSET (IRO[20].base) 2722 - #define USTORM_OVERLAY_BUF_ADDR_SIZE (IRO[20].size) 2723 - 2724 - /* Tstorm producers */ 2725 - #define TSTORM_LL2_RX_PRODS_OFFSET(core_rx_queue_id) \ 2726 - (IRO[21].base + ((core_rx_queue_id) * IRO[21].m1)) 2727 - #define TSTORM_LL2_RX_PRODS_SIZE (IRO[21].size) 2728 - 2729 - /* Tstorm LightL2 queue statistics */ 2730 - #define CORE_LL2_TSTORM_PER_QUEUE_STAT_OFFSET(core_rx_queue_id) \ 2731 - (IRO[22].base + ((core_rx_queue_id) * IRO[22].m1)) 2732 - #define CORE_LL2_TSTORM_PER_QUEUE_STAT_SIZE (IRO[22].size) 2733 - 2734 - /* Ustorm LiteL2 queue statistics */ 2735 - #define CORE_LL2_USTORM_PER_QUEUE_STAT_OFFSET(core_rx_queue_id) \ 2736 - (IRO[23].base + ((core_rx_queue_id) * IRO[23].m1)) 2737 - #define CORE_LL2_USTORM_PER_QUEUE_STAT_SIZE (IRO[23].size) 2738 - 2739 - /* Pstorm LiteL2 queue statistics */ 2740 - #define CORE_LL2_PSTORM_PER_QUEUE_STAT_OFFSET(core_tx_stats_id) \ 2741 - (IRO[24].base + ((core_tx_stats_id) * IRO[24].m1)) 2742 - #define CORE_LL2_PSTORM_PER_QUEUE_STAT_SIZE (IRO[24].size) 2743 - 2744 - /* Mstorm queue statistics */ 2745 - #define MSTORM_QUEUE_STAT_OFFSET(stat_counter_id) \ 2746 - (IRO[25].base + ((stat_counter_id) * IRO[25].m1)) 2747 - #define MSTORM_QUEUE_STAT_SIZE (IRO[25].size) 2748 - 2749 - /* TPA agregation timeout in us resolution (on ASIC) */ 2750 - #define MSTORM_TPA_TIMEOUT_US_OFFSET (IRO[26].base) 2751 - #define MSTORM_TPA_TIMEOUT_US_SIZE (IRO[26].size) 2752 - 2753 - /* Mstorm ETH VF queues producers offset in RAM. Used in default VF zone size 2754 - * mode 2755 - */ 2756 - #define MSTORM_ETH_VF_PRODS_OFFSET(vf_id, vf_queue_id) \ 2757 - (IRO[27].base + ((vf_id) * IRO[27].m1) + ((vf_queue_id) * IRO[27].m2)) 2758 - #define MSTORM_ETH_VF_PRODS_SIZE (IRO[27].size) 2759 - 2760 - /* Mstorm ETH PF queues producers */ 2761 - #define MSTORM_ETH_PF_PRODS_OFFSET(queue_id) \ 2762 - (IRO[28].base + ((queue_id) * IRO[28].m1)) 2763 - #define MSTORM_ETH_PF_PRODS_SIZE (IRO[28].size) 2764 - 2765 - /* Mstorm pf statistics */ 2766 - #define MSTORM_ETH_PF_STAT_OFFSET(pf_id) \ 2767 - (IRO[29].base + ((pf_id) * IRO[29].m1)) 2768 - #define MSTORM_ETH_PF_STAT_SIZE (IRO[29].size) 2769 - 2770 - /* Ustorm queue statistics */ 2771 - #define USTORM_QUEUE_STAT_OFFSET(stat_counter_id) \ 2772 - (IRO[30].base + ((stat_counter_id) * IRO[30].m1)) 2773 - #define USTORM_QUEUE_STAT_SIZE (IRO[30].size) 2774 - 2775 - /* Ustorm pf statistics */ 2776 - #define USTORM_ETH_PF_STAT_OFFSET(pf_id) \ 2777 - (IRO[31].base + ((pf_id) * IRO[31].m1)) 2778 - #define USTORM_ETH_PF_STAT_SIZE (IRO[31].size) 2779 - 2780 - /* Pstorm queue statistics */ 2781 - #define PSTORM_QUEUE_STAT_OFFSET(stat_counter_id) \ 2782 - (IRO[32].base + ((stat_counter_id) * IRO[32].m1)) 2783 - #define PSTORM_QUEUE_STAT_SIZE (IRO[32].size) 2784 - 2785 - /* Pstorm pf statistics */ 2786 - #define PSTORM_ETH_PF_STAT_OFFSET(pf_id) \ 2787 - (IRO[33].base + ((pf_id) * IRO[33].m1)) 2788 - #define PSTORM_ETH_PF_STAT_SIZE (IRO[33].size) 2789 - 2790 - /* Control frame's EthType configuration for TX control frame security */ 2791 - #define PSTORM_CTL_FRAME_ETHTYPE_OFFSET(eth_type_id) \ 2792 - (IRO[34].base + ((eth_type_id) * IRO[34].m1)) 2793 - #define PSTORM_CTL_FRAME_ETHTYPE_SIZE (IRO[34].size) 2794 - 2795 - /* Tstorm last parser message */ 2796 - #define TSTORM_ETH_PRS_INPUT_OFFSET (IRO[35].base) 2797 - #define TSTORM_ETH_PRS_INPUT_SIZE (IRO[35].size) 2798 - 2799 - /* Tstorm Eth limit Rx rate */ 2800 - #define ETH_RX_RATE_LIMIT_OFFSET(pf_id) \ 2801 - (IRO[36].base + ((pf_id) * IRO[36].m1)) 2802 - #define ETH_RX_RATE_LIMIT_SIZE (IRO[36].size) 2803 - 2804 - /* RSS indirection table entry update command per PF offset in TSTORM PF BAR0. 2805 - * Use eth_tstorm_rss_update_data for update 2806 - */ 2807 - #define TSTORM_ETH_RSS_UPDATE_OFFSET(pf_id) \ 2808 - (IRO[37].base + ((pf_id) * IRO[37].m1)) 2809 - #define TSTORM_ETH_RSS_UPDATE_SIZE (IRO[37].size) 2810 - 2811 - /* Xstorm queue zone */ 2812 - #define XSTORM_ETH_QUEUE_ZONE_OFFSET(queue_id) \ 2813 - (IRO[38].base + ((queue_id) * IRO[38].m1)) 2814 - #define XSTORM_ETH_QUEUE_ZONE_SIZE (IRO[38].size) 2815 - 2816 - /* Ystorm cqe producer */ 2817 - #define YSTORM_TOE_CQ_PROD_OFFSET(rss_id) \ 2818 - (IRO[39].base + ((rss_id) * IRO[39].m1)) 2819 - #define YSTORM_TOE_CQ_PROD_SIZE (IRO[39].size) 2820 - 2821 - /* Ustorm cqe producer */ 2822 - #define USTORM_TOE_CQ_PROD_OFFSET(rss_id) \ 2823 - (IRO[40].base + ((rss_id) * IRO[40].m1)) 2824 - #define USTORM_TOE_CQ_PROD_SIZE (IRO[40].size) 2825 - 2826 - /* Ustorm grq producer */ 2827 - #define USTORM_TOE_GRQ_PROD_OFFSET(pf_id) \ 2828 - (IRO[41].base + ((pf_id) * IRO[41].m1)) 2829 - #define USTORM_TOE_GRQ_PROD_SIZE (IRO[41].size) 2830 - 2831 - /* Tstorm cmdq-cons of given command queue-id */ 2832 - #define TSTORM_SCSI_CMDQ_CONS_OFFSET(cmdq_queue_id) \ 2833 - (IRO[42].base + ((cmdq_queue_id) * IRO[42].m1)) 2834 - #define TSTORM_SCSI_CMDQ_CONS_SIZE (IRO[42].size) 2835 - 2836 - /* Tstorm (reflects M-Storm) bdq-external-producer of given function ID, 2837 - * BDqueue-id 2838 - */ 2839 - #define TSTORM_SCSI_BDQ_EXT_PROD_OFFSET(storage_func_id, bdq_id) \ 2840 - (IRO[43].base + ((storage_func_id) * IRO[43].m1) + \ 2841 - ((bdq_id) * IRO[43].m2)) 2842 - #define TSTORM_SCSI_BDQ_EXT_PROD_SIZE (IRO[43].size) 2843 - 2844 - /* Mstorm bdq-external-producer of given BDQ resource ID, BDqueue-id */ 2845 - #define MSTORM_SCSI_BDQ_EXT_PROD_OFFSET(storage_func_id, bdq_id) \ 2846 - (IRO[44].base + ((storage_func_id) * IRO[44].m1) + \ 2847 - ((bdq_id) * IRO[44].m2)) 2848 - #define MSTORM_SCSI_BDQ_EXT_PROD_SIZE (IRO[44].size) 2849 - 2850 - /* Tstorm iSCSI RX stats */ 2851 - #define TSTORM_ISCSI_RX_STATS_OFFSET(storage_func_id) \ 2852 - (IRO[45].base + ((storage_func_id) * IRO[45].m1)) 2853 - #define TSTORM_ISCSI_RX_STATS_SIZE (IRO[45].size) 2854 - 2855 - /* Mstorm iSCSI RX stats */ 2856 - #define MSTORM_ISCSI_RX_STATS_OFFSET(storage_func_id) \ 2857 - (IRO[46].base + ((storage_func_id) * IRO[46].m1)) 2858 - #define MSTORM_ISCSI_RX_STATS_SIZE (IRO[46].size) 2859 - 2860 - /* Ustorm iSCSI RX stats */ 2861 - #define USTORM_ISCSI_RX_STATS_OFFSET(storage_func_id) \ 2862 - (IRO[47].base + ((storage_func_id) * IRO[47].m1)) 2863 - #define USTORM_ISCSI_RX_STATS_SIZE (IRO[47].size) 2864 - 2865 - /* Xstorm iSCSI TX stats */ 2866 - #define XSTORM_ISCSI_TX_STATS_OFFSET(storage_func_id) \ 2867 - (IRO[48].base + ((storage_func_id) * IRO[48].m1)) 2868 - #define XSTORM_ISCSI_TX_STATS_SIZE (IRO[48].size) 2869 - 2870 - /* Ystorm iSCSI TX stats */ 2871 - #define YSTORM_ISCSI_TX_STATS_OFFSET(storage_func_id) \ 2872 - (IRO[49].base + ((storage_func_id) * IRO[49].m1)) 2873 - #define YSTORM_ISCSI_TX_STATS_SIZE (IRO[49].size) 2874 - 2875 - /* Pstorm iSCSI TX stats */ 2876 - #define PSTORM_ISCSI_TX_STATS_OFFSET(storage_func_id) \ 2877 - (IRO[50].base + ((storage_func_id) * IRO[50].m1)) 2878 - #define PSTORM_ISCSI_TX_STATS_SIZE (IRO[50].size) 2879 - 2880 - /* Tstorm FCoE RX stats */ 2881 - #define TSTORM_FCOE_RX_STATS_OFFSET(pf_id) \ 2882 - (IRO[51].base + ((pf_id) * IRO[51].m1)) 2883 - #define TSTORM_FCOE_RX_STATS_SIZE (IRO[51].size) 2884 - 2885 - /* Pstorm FCoE TX stats */ 2886 - #define PSTORM_FCOE_TX_STATS_OFFSET(pf_id) \ 2887 - (IRO[52].base + ((pf_id) * IRO[52].m1)) 2888 - #define PSTORM_FCOE_TX_STATS_SIZE (IRO[52].size) 2889 - 2890 - /* Pstorm RDMA queue statistics */ 2891 - #define PSTORM_RDMA_QUEUE_STAT_OFFSET(rdma_stat_counter_id) \ 2892 - (IRO[53].base + ((rdma_stat_counter_id) * IRO[53].m1)) 2893 - #define PSTORM_RDMA_QUEUE_STAT_SIZE (IRO[53].size) 2894 - 2895 - /* Tstorm RDMA queue statistics */ 2896 - #define TSTORM_RDMA_QUEUE_STAT_OFFSET(rdma_stat_counter_id) \ 2897 - (IRO[54].base + ((rdma_stat_counter_id) * IRO[54].m1)) 2898 - #define TSTORM_RDMA_QUEUE_STAT_SIZE (IRO[54].size) 2899 - 2900 - /* Xstorm error level for assert */ 2901 - #define XSTORM_RDMA_ASSERT_LEVEL_OFFSET(pf_id) \ 2902 - (IRO[55].base + ((pf_id) * IRO[55].m1)) 2903 - #define XSTORM_RDMA_ASSERT_LEVEL_SIZE (IRO[55].size) 2904 - 2905 - /* Ystorm error level for assert */ 2906 - #define YSTORM_RDMA_ASSERT_LEVEL_OFFSET(pf_id) \ 2907 - (IRO[56].base + ((pf_id) * IRO[56].m1)) 2908 - #define YSTORM_RDMA_ASSERT_LEVEL_SIZE (IRO[56].size) 2909 - 2910 - /* Pstorm error level for assert */ 2911 - #define PSTORM_RDMA_ASSERT_LEVEL_OFFSET(pf_id) \ 2912 - (IRO[57].base + ((pf_id) * IRO[57].m1)) 2913 - #define PSTORM_RDMA_ASSERT_LEVEL_SIZE (IRO[57].size) 2914 - 2915 - /* Tstorm error level for assert */ 2916 - #define TSTORM_RDMA_ASSERT_LEVEL_OFFSET(pf_id) \ 2917 - (IRO[58].base + ((pf_id) * IRO[58].m1)) 2918 - #define TSTORM_RDMA_ASSERT_LEVEL_SIZE (IRO[58].size) 2919 - 2920 - /* Mstorm error level for assert */ 2921 - #define MSTORM_RDMA_ASSERT_LEVEL_OFFSET(pf_id) \ 2922 - (IRO[59].base + ((pf_id) * IRO[59].m1)) 2923 - #define MSTORM_RDMA_ASSERT_LEVEL_SIZE (IRO[59].size) 2924 - 2925 - /* Ustorm error level for assert */ 2926 - #define USTORM_RDMA_ASSERT_LEVEL_OFFSET(pf_id) \ 2927 - (IRO[60].base + ((pf_id) * IRO[60].m1)) 2928 - #define USTORM_RDMA_ASSERT_LEVEL_SIZE (IRO[60].size) 2929 - 2930 - /* Xstorm iWARP rxmit stats */ 2931 - #define XSTORM_IWARP_RXMIT_STATS_OFFSET(pf_id) \ 2932 - (IRO[61].base + ((pf_id) * IRO[61].m1)) 2933 - #define XSTORM_IWARP_RXMIT_STATS_SIZE (IRO[61].size) 2934 - 2935 - /* Tstorm RoCE Event Statistics */ 2936 - #define TSTORM_ROCE_EVENTS_STAT_OFFSET(roce_pf_id) \ 2937 - (IRO[62].base + ((roce_pf_id) * IRO[62].m1)) 2938 - #define TSTORM_ROCE_EVENTS_STAT_SIZE (IRO[62].size) 2939 - 2940 - /* DCQCN Received Statistics */ 2941 - #define YSTORM_ROCE_DCQCN_RECEIVED_STATS_OFFSET(roce_pf_id)\ 2942 - (IRO[63].base + ((roce_pf_id) * IRO[63].m1)) 2943 - #define YSTORM_ROCE_DCQCN_RECEIVED_STATS_SIZE (IRO[63].size) 2944 - 2945 - /* RoCE Error Statistics */ 2946 - #define YSTORM_ROCE_ERROR_STATS_OFFSET(roce_pf_id) \ 2947 - (IRO[64].base + ((roce_pf_id) * IRO[64].m1)) 2948 - #define YSTORM_ROCE_ERROR_STATS_SIZE (IRO[64].size) 2949 - 2950 - /* DCQCN Sent Statistics */ 2951 - #define PSTORM_ROCE_DCQCN_SENT_STATS_OFFSET(roce_pf_id) \ 2952 - (IRO[65].base + ((roce_pf_id) * IRO[65].m1)) 2953 - #define PSTORM_ROCE_DCQCN_SENT_STATS_SIZE (IRO[65].size) 2954 - 2955 - /* RoCE CQEs Statistics */ 2956 - #define USTORM_ROCE_CQE_STATS_OFFSET(roce_pf_id) \ 2957 - (IRO[66].base + ((roce_pf_id) * IRO[66].m1)) 2958 - #define USTORM_ROCE_CQE_STATS_SIZE (IRO[66].size) 2959 4108 2960 4109 /* Runtime array offsets */ 2961 4110 #define DORQ_REG_PF_MAX_ICID_0_RT_OFFSET 0 ··· 9713 11518 __le32 reg2; 9714 11519 __le32 reg3; 9715 11520 }; 9716 - 9717 - #define MFW_TRACE_SIGNATURE 0x25071946 9718 - 9719 - /* The trace in the buffer */ 9720 - #define MFW_TRACE_EVENTID_MASK 0x00ffff 9721 - #define MFW_TRACE_PRM_SIZE_MASK 0x0f0000 9722 - #define MFW_TRACE_PRM_SIZE_OFFSET 16 9723 - #define MFW_TRACE_ENTRY_SIZE 3 9724 - 9725 - struct mcp_trace { 9726 - u32 signature; /* Help to identify that the trace is valid */ 9727 - u32 size; /* the size of the trace buffer in bytes */ 9728 - u32 curr_level; /* 2 - all will be written to the buffer 9729 - * 1 - debug trace will not be written 9730 - * 0 - just errors will be written to the buffer 9731 - */ 9732 - u32 modules_mask[2]; /* a bit per module, 1 means write it, 0 means 9733 - * mask it. 9734 - */ 9735 - 9736 - /* Warning: the following pointers are assumed to be 32bits as they are 9737 - * used only in the MFW. 9738 - */ 9739 - u32 trace_prod; /* The next trace will be written to this offset */ 9740 - u32 trace_oldest; /* The oldest valid trace starts at this offset 9741 - * (usually very close after the current producer). 9742 - */ 9743 - }; 9744 - 9745 - #define VF_MAX_STATIC 192 9746 - 9747 - #define MCP_GLOB_PATH_MAX 2 9748 - #define MCP_PORT_MAX 2 9749 - #define MCP_GLOB_PORT_MAX 4 9750 - #define MCP_GLOB_FUNC_MAX 16 9751 - 9752 - typedef u32 offsize_t; /* In DWORDS !!! */ 9753 - /* Offset from the beginning of the MCP scratchpad */ 9754 - #define OFFSIZE_OFFSET_SHIFT 0 9755 - #define OFFSIZE_OFFSET_MASK 0x0000ffff 9756 - /* Size of specific element (not the whole array if any) */ 9757 - #define OFFSIZE_SIZE_SHIFT 16 9758 - #define OFFSIZE_SIZE_MASK 0xffff0000 9759 - 9760 - #define SECTION_OFFSET(_offsize) ((((_offsize & \ 9761 - OFFSIZE_OFFSET_MASK) >> \ 9762 - OFFSIZE_OFFSET_SHIFT) << 2)) 9763 - 9764 - #define QED_SECTION_SIZE(_offsize) (((_offsize & \ 9765 - OFFSIZE_SIZE_MASK) >> \ 9766 - OFFSIZE_SIZE_SHIFT) << 2) 9767 - 9768 - #define SECTION_ADDR(_offsize, idx) (MCP_REG_SCRATCH + \ 9769 - SECTION_OFFSET(_offsize) + \ 9770 - (QED_SECTION_SIZE(_offsize) * idx)) 9771 - 9772 - #define SECTION_OFFSIZE_ADDR(_pub_base, _section) \ 9773 - (_pub_base + offsetof(struct mcp_public_data, sections[_section])) 9774 - 9775 - /* PHY configuration */ 9776 - struct eth_phy_cfg { 9777 - u32 speed; 9778 - #define ETH_SPEED_AUTONEG 0x0 9779 - #define ETH_SPEED_SMARTLINQ 0x8 9780 - 9781 - u32 pause; 9782 - #define ETH_PAUSE_NONE 0x0 9783 - #define ETH_PAUSE_AUTONEG 0x1 9784 - #define ETH_PAUSE_RX 0x2 9785 - #define ETH_PAUSE_TX 0x4 9786 - 9787 - u32 adv_speed; 9788 - 9789 - u32 loopback_mode; 9790 - #define ETH_LOOPBACK_NONE 0x0 9791 - #define ETH_LOOPBACK_INT_PHY 0x1 9792 - #define ETH_LOOPBACK_EXT_PHY 0x2 9793 - #define ETH_LOOPBACK_EXT 0x3 9794 - #define ETH_LOOPBACK_MAC 0x4 9795 - #define ETH_LOOPBACK_CNIG_AH_ONLY_0123 0x5 9796 - #define ETH_LOOPBACK_CNIG_AH_ONLY_2301 0x6 9797 - #define ETH_LOOPBACK_PCS_AH_ONLY 0x7 9798 - #define ETH_LOOPBACK_REVERSE_MAC_AH_ONLY 0x8 9799 - #define ETH_LOOPBACK_INT_PHY_FEA_AH_ONLY 0x9 9800 - 9801 - u32 eee_cfg; 9802 - #define EEE_CFG_EEE_ENABLED BIT(0) 9803 - #define EEE_CFG_TX_LPI BIT(1) 9804 - #define EEE_CFG_ADV_SPEED_1G BIT(2) 9805 - #define EEE_CFG_ADV_SPEED_10G BIT(3) 9806 - #define EEE_TX_TIMER_USEC_MASK 0xfffffff0 9807 - #define EEE_TX_TIMER_USEC_OFFSET 4 9808 - #define EEE_TX_TIMER_USEC_BALANCED_TIME 0xa00 9809 - #define EEE_TX_TIMER_USEC_AGGRESSIVE_TIME 0x100 9810 - #define EEE_TX_TIMER_USEC_LATENCY_TIME 0x6000 9811 - 9812 - u32 deprecated; 9813 - 9814 - u32 fec_mode; 9815 - #define FEC_FORCE_MODE_MASK 0x000000ff 9816 - #define FEC_FORCE_MODE_OFFSET 0 9817 - #define FEC_FORCE_MODE_NONE 0x00 9818 - #define FEC_FORCE_MODE_FIRECODE 0x01 9819 - #define FEC_FORCE_MODE_RS 0x02 9820 - #define FEC_FORCE_MODE_AUTO 0x07 9821 - #define FEC_EXTENDED_MODE_MASK 0xffffff00 9822 - #define FEC_EXTENDED_MODE_OFFSET 8 9823 - #define ETH_EXT_FEC_NONE 0x00000100 9824 - #define ETH_EXT_FEC_10G_NONE 0x00000200 9825 - #define ETH_EXT_FEC_10G_BASE_R 0x00000400 9826 - #define ETH_EXT_FEC_20G_NONE 0x00000800 9827 - #define ETH_EXT_FEC_20G_BASE_R 0x00001000 9828 - #define ETH_EXT_FEC_25G_NONE 0x00002000 9829 - #define ETH_EXT_FEC_25G_BASE_R 0x00004000 9830 - #define ETH_EXT_FEC_25G_RS528 0x00008000 9831 - #define ETH_EXT_FEC_40G_NONE 0x00010000 9832 - #define ETH_EXT_FEC_40G_BASE_R 0x00020000 9833 - #define ETH_EXT_FEC_50G_NONE 0x00040000 9834 - #define ETH_EXT_FEC_50G_BASE_R 0x00080000 9835 - #define ETH_EXT_FEC_50G_RS528 0x00100000 9836 - #define ETH_EXT_FEC_50G_RS544 0x00200000 9837 - #define ETH_EXT_FEC_100G_NONE 0x00400000 9838 - #define ETH_EXT_FEC_100G_BASE_R 0x00800000 9839 - #define ETH_EXT_FEC_100G_RS528 0x01000000 9840 - #define ETH_EXT_FEC_100G_RS544 0x02000000 9841 - 9842 - u32 extended_speed; 9843 - #define ETH_EXT_SPEED_MASK 0x0000ffff 9844 - #define ETH_EXT_SPEED_OFFSET 0 9845 - #define ETH_EXT_SPEED_AN 0x00000001 9846 - #define ETH_EXT_SPEED_1G 0x00000002 9847 - #define ETH_EXT_SPEED_10G 0x00000004 9848 - #define ETH_EXT_SPEED_20G 0x00000008 9849 - #define ETH_EXT_SPEED_25G 0x00000010 9850 - #define ETH_EXT_SPEED_40G 0x00000020 9851 - #define ETH_EXT_SPEED_50G_BASE_R 0x00000040 9852 - #define ETH_EXT_SPEED_50G_BASE_R2 0x00000080 9853 - #define ETH_EXT_SPEED_100G_BASE_R2 0x00000100 9854 - #define ETH_EXT_SPEED_100G_BASE_R4 0x00000200 9855 - #define ETH_EXT_SPEED_100G_BASE_P4 0x00000400 9856 - #define ETH_EXT_ADV_SPEED_MASK 0xffff0000 9857 - #define ETH_EXT_ADV_SPEED_OFFSET 16 9858 - #define ETH_EXT_ADV_SPEED_RESERVED 0x00010000 9859 - #define ETH_EXT_ADV_SPEED_1G 0x00020000 9860 - #define ETH_EXT_ADV_SPEED_10G 0x00040000 9861 - #define ETH_EXT_ADV_SPEED_20G 0x00080000 9862 - #define ETH_EXT_ADV_SPEED_25G 0x00100000 9863 - #define ETH_EXT_ADV_SPEED_40G 0x00200000 9864 - #define ETH_EXT_ADV_SPEED_50G_BASE_R 0x00400000 9865 - #define ETH_EXT_ADV_SPEED_50G_BASE_R2 0x00800000 9866 - #define ETH_EXT_ADV_SPEED_100G_BASE_R2 0x01000000 9867 - #define ETH_EXT_ADV_SPEED_100G_BASE_R4 0x02000000 9868 - #define ETH_EXT_ADV_SPEED_100G_BASE_P4 0x04000000 9869 - }; 9870 - 9871 - struct port_mf_cfg { 9872 - u32 dynamic_cfg; 9873 - #define PORT_MF_CFG_OV_TAG_MASK 0x0000ffff 9874 - #define PORT_MF_CFG_OV_TAG_SHIFT 0 9875 - #define PORT_MF_CFG_OV_TAG_DEFAULT PORT_MF_CFG_OV_TAG_MASK 9876 - 9877 - u32 reserved[1]; 9878 - }; 9879 - 9880 - struct eth_stats { 9881 - u64 r64; 9882 - u64 r127; 9883 - u64 r255; 9884 - u64 r511; 9885 - u64 r1023; 9886 - u64 r1518; 9887 - 9888 - union { 9889 - struct { 9890 - u64 r1522; 9891 - u64 r2047; 9892 - u64 r4095; 9893 - u64 r9216; 9894 - u64 r16383; 9895 - } bb0; 9896 - struct { 9897 - u64 unused1; 9898 - u64 r1519_to_max; 9899 - u64 unused2; 9900 - u64 unused3; 9901 - u64 unused4; 9902 - } ah0; 9903 - } u0; 9904 - 9905 - u64 rfcs; 9906 - u64 rxcf; 9907 - u64 rxpf; 9908 - u64 rxpp; 9909 - u64 raln; 9910 - u64 rfcr; 9911 - u64 rovr; 9912 - u64 rjbr; 9913 - u64 rund; 9914 - u64 rfrg; 9915 - u64 t64; 9916 - u64 t127; 9917 - u64 t255; 9918 - u64 t511; 9919 - u64 t1023; 9920 - u64 t1518; 9921 - 9922 - union { 9923 - struct { 9924 - u64 t2047; 9925 - u64 t4095; 9926 - u64 t9216; 9927 - u64 t16383; 9928 - } bb1; 9929 - struct { 9930 - u64 t1519_to_max; 9931 - u64 unused6; 9932 - u64 unused7; 9933 - u64 unused8; 9934 - } ah1; 9935 - } u1; 9936 - 9937 - u64 txpf; 9938 - u64 txpp; 9939 - 9940 - union { 9941 - struct { 9942 - u64 tlpiec; 9943 - u64 tncl; 9944 - } bb2; 9945 - struct { 9946 - u64 unused9; 9947 - u64 unused10; 9948 - } ah2; 9949 - } u2; 9950 - 9951 - u64 rbyte; 9952 - u64 rxuca; 9953 - u64 rxmca; 9954 - u64 rxbca; 9955 - u64 rxpok; 9956 - u64 tbyte; 9957 - u64 txuca; 9958 - u64 txmca; 9959 - u64 txbca; 9960 - u64 txcf; 9961 - }; 9962 - 9963 - struct brb_stats { 9964 - u64 brb_truncate[8]; 9965 - u64 brb_discard[8]; 9966 - }; 9967 - 9968 - struct port_stats { 9969 - struct brb_stats brb; 9970 - struct eth_stats eth; 9971 - }; 9972 - 9973 - struct couple_mode_teaming { 9974 - u8 port_cmt[MCP_GLOB_PORT_MAX]; 9975 - #define PORT_CMT_IN_TEAM (1 << 0) 9976 - 9977 - #define PORT_CMT_PORT_ROLE (1 << 1) 9978 - #define PORT_CMT_PORT_INACTIVE (0 << 1) 9979 - #define PORT_CMT_PORT_ACTIVE (1 << 1) 9980 - 9981 - #define PORT_CMT_TEAM_MASK (1 << 2) 9982 - #define PORT_CMT_TEAM0 (0 << 2) 9983 - #define PORT_CMT_TEAM1 (1 << 2) 9984 - }; 9985 - 9986 - #define LLDP_CHASSIS_ID_STAT_LEN 4 9987 - #define LLDP_PORT_ID_STAT_LEN 4 9988 - #define DCBX_MAX_APP_PROTOCOL 32 9989 - #define MAX_SYSTEM_LLDP_TLV_DATA 32 9990 - 9991 - enum _lldp_agent { 9992 - LLDP_NEAREST_BRIDGE = 0, 9993 - LLDP_NEAREST_NON_TPMR_BRIDGE, 9994 - LLDP_NEAREST_CUSTOMER_BRIDGE, 9995 - LLDP_MAX_LLDP_AGENTS 9996 - }; 9997 - 9998 - struct lldp_config_params_s { 9999 - u32 config; 10000 - #define LLDP_CONFIG_TX_INTERVAL_MASK 0x000000ff 10001 - #define LLDP_CONFIG_TX_INTERVAL_SHIFT 0 10002 - #define LLDP_CONFIG_HOLD_MASK 0x00000f00 10003 - #define LLDP_CONFIG_HOLD_SHIFT 8 10004 - #define LLDP_CONFIG_MAX_CREDIT_MASK 0x0000f000 10005 - #define LLDP_CONFIG_MAX_CREDIT_SHIFT 12 10006 - #define LLDP_CONFIG_ENABLE_RX_MASK 0x40000000 10007 - #define LLDP_CONFIG_ENABLE_RX_SHIFT 30 10008 - #define LLDP_CONFIG_ENABLE_TX_MASK 0x80000000 10009 - #define LLDP_CONFIG_ENABLE_TX_SHIFT 31 10010 - u32 local_chassis_id[LLDP_CHASSIS_ID_STAT_LEN]; 10011 - u32 local_port_id[LLDP_PORT_ID_STAT_LEN]; 10012 - }; 10013 - 10014 - struct lldp_status_params_s { 10015 - u32 prefix_seq_num; 10016 - u32 status; 10017 - u32 peer_chassis_id[LLDP_CHASSIS_ID_STAT_LEN]; 10018 - u32 peer_port_id[LLDP_PORT_ID_STAT_LEN]; 10019 - u32 suffix_seq_num; 10020 - }; 10021 - 10022 - struct dcbx_ets_feature { 10023 - u32 flags; 10024 - #define DCBX_ETS_ENABLED_MASK 0x00000001 10025 - #define DCBX_ETS_ENABLED_SHIFT 0 10026 - #define DCBX_ETS_WILLING_MASK 0x00000002 10027 - #define DCBX_ETS_WILLING_SHIFT 1 10028 - #define DCBX_ETS_ERROR_MASK 0x00000004 10029 - #define DCBX_ETS_ERROR_SHIFT 2 10030 - #define DCBX_ETS_CBS_MASK 0x00000008 10031 - #define DCBX_ETS_CBS_SHIFT 3 10032 - #define DCBX_ETS_MAX_TCS_MASK 0x000000f0 10033 - #define DCBX_ETS_MAX_TCS_SHIFT 4 10034 - #define DCBX_OOO_TC_MASK 0x00000f00 10035 - #define DCBX_OOO_TC_SHIFT 8 10036 - u32 pri_tc_tbl[1]; 10037 - #define DCBX_TCP_OOO_TC (4) 10038 - 10039 - #define NIG_ETS_ISCSI_OOO_CLIENT_OFFSET (DCBX_TCP_OOO_TC + 1) 10040 - #define DCBX_CEE_STRICT_PRIORITY 0xf 10041 - u32 tc_bw_tbl[2]; 10042 - u32 tc_tsa_tbl[2]; 10043 - #define DCBX_ETS_TSA_STRICT 0 10044 - #define DCBX_ETS_TSA_CBS 1 10045 - #define DCBX_ETS_TSA_ETS 2 10046 - }; 10047 - 10048 - #define DCBX_TCP_OOO_TC (4) 10049 - #define DCBX_TCP_OOO_K2_4PORT_TC (3) 10050 - 10051 - struct dcbx_app_priority_entry { 10052 - u32 entry; 10053 - #define DCBX_APP_PRI_MAP_MASK 0x000000ff 10054 - #define DCBX_APP_PRI_MAP_SHIFT 0 10055 - #define DCBX_APP_PRI_0 0x01 10056 - #define DCBX_APP_PRI_1 0x02 10057 - #define DCBX_APP_PRI_2 0x04 10058 - #define DCBX_APP_PRI_3 0x08 10059 - #define DCBX_APP_PRI_4 0x10 10060 - #define DCBX_APP_PRI_5 0x20 10061 - #define DCBX_APP_PRI_6 0x40 10062 - #define DCBX_APP_PRI_7 0x80 10063 - #define DCBX_APP_SF_MASK 0x00000300 10064 - #define DCBX_APP_SF_SHIFT 8 10065 - #define DCBX_APP_SF_ETHTYPE 0 10066 - #define DCBX_APP_SF_PORT 1 10067 - #define DCBX_APP_SF_IEEE_MASK 0x0000f000 10068 - #define DCBX_APP_SF_IEEE_SHIFT 12 10069 - #define DCBX_APP_SF_IEEE_RESERVED 0 10070 - #define DCBX_APP_SF_IEEE_ETHTYPE 1 10071 - #define DCBX_APP_SF_IEEE_TCP_PORT 2 10072 - #define DCBX_APP_SF_IEEE_UDP_PORT 3 10073 - #define DCBX_APP_SF_IEEE_TCP_UDP_PORT 4 10074 - 10075 - #define DCBX_APP_PROTOCOL_ID_MASK 0xffff0000 10076 - #define DCBX_APP_PROTOCOL_ID_SHIFT 16 10077 - }; 10078 - 10079 - struct dcbx_app_priority_feature { 10080 - u32 flags; 10081 - #define DCBX_APP_ENABLED_MASK 0x00000001 10082 - #define DCBX_APP_ENABLED_SHIFT 0 10083 - #define DCBX_APP_WILLING_MASK 0x00000002 10084 - #define DCBX_APP_WILLING_SHIFT 1 10085 - #define DCBX_APP_ERROR_MASK 0x00000004 10086 - #define DCBX_APP_ERROR_SHIFT 2 10087 - #define DCBX_APP_MAX_TCS_MASK 0x0000f000 10088 - #define DCBX_APP_MAX_TCS_SHIFT 12 10089 - #define DCBX_APP_NUM_ENTRIES_MASK 0x00ff0000 10090 - #define DCBX_APP_NUM_ENTRIES_SHIFT 16 10091 - struct dcbx_app_priority_entry app_pri_tbl[DCBX_MAX_APP_PROTOCOL]; 10092 - }; 10093 - 10094 - struct dcbx_features { 10095 - struct dcbx_ets_feature ets; 10096 - u32 pfc; 10097 - #define DCBX_PFC_PRI_EN_BITMAP_MASK 0x000000ff 10098 - #define DCBX_PFC_PRI_EN_BITMAP_SHIFT 0 10099 - #define DCBX_PFC_PRI_EN_BITMAP_PRI_0 0x01 10100 - #define DCBX_PFC_PRI_EN_BITMAP_PRI_1 0x02 10101 - #define DCBX_PFC_PRI_EN_BITMAP_PRI_2 0x04 10102 - #define DCBX_PFC_PRI_EN_BITMAP_PRI_3 0x08 10103 - #define DCBX_PFC_PRI_EN_BITMAP_PRI_4 0x10 10104 - #define DCBX_PFC_PRI_EN_BITMAP_PRI_5 0x20 10105 - #define DCBX_PFC_PRI_EN_BITMAP_PRI_6 0x40 10106 - #define DCBX_PFC_PRI_EN_BITMAP_PRI_7 0x80 10107 - 10108 - #define DCBX_PFC_FLAGS_MASK 0x0000ff00 10109 - #define DCBX_PFC_FLAGS_SHIFT 8 10110 - #define DCBX_PFC_CAPS_MASK 0x00000f00 10111 - #define DCBX_PFC_CAPS_SHIFT 8 10112 - #define DCBX_PFC_MBC_MASK 0x00004000 10113 - #define DCBX_PFC_MBC_SHIFT 14 10114 - #define DCBX_PFC_WILLING_MASK 0x00008000 10115 - #define DCBX_PFC_WILLING_SHIFT 15 10116 - #define DCBX_PFC_ENABLED_MASK 0x00010000 10117 - #define DCBX_PFC_ENABLED_SHIFT 16 10118 - #define DCBX_PFC_ERROR_MASK 0x00020000 10119 - #define DCBX_PFC_ERROR_SHIFT 17 10120 - 10121 - struct dcbx_app_priority_feature app; 10122 - }; 10123 - 10124 - struct dcbx_local_params { 10125 - u32 config; 10126 - #define DCBX_CONFIG_VERSION_MASK 0x00000007 10127 - #define DCBX_CONFIG_VERSION_SHIFT 0 10128 - #define DCBX_CONFIG_VERSION_DISABLED 0 10129 - #define DCBX_CONFIG_VERSION_IEEE 1 10130 - #define DCBX_CONFIG_VERSION_CEE 2 10131 - #define DCBX_CONFIG_VERSION_STATIC 4 10132 - 10133 - u32 flags; 10134 - struct dcbx_features features; 10135 - }; 10136 - 10137 - struct dcbx_mib { 10138 - u32 prefix_seq_num; 10139 - u32 flags; 10140 - struct dcbx_features features; 10141 - u32 suffix_seq_num; 10142 - }; 10143 - 10144 - struct lldp_system_tlvs_buffer_s { 10145 - u16 valid; 10146 - u16 length; 10147 - u32 data[MAX_SYSTEM_LLDP_TLV_DATA]; 10148 - }; 10149 - 10150 - struct dcb_dscp_map { 10151 - u32 flags; 10152 - #define DCB_DSCP_ENABLE_MASK 0x1 10153 - #define DCB_DSCP_ENABLE_SHIFT 0 10154 - #define DCB_DSCP_ENABLE 1 10155 - u32 dscp_pri_map[8]; 10156 - }; 10157 - 10158 - struct public_global { 10159 - u32 max_path; 10160 - u32 max_ports; 10161 - #define MODE_1P 1 10162 - #define MODE_2P 2 10163 - #define MODE_3P 3 10164 - #define MODE_4P 4 10165 - u32 debug_mb_offset; 10166 - u32 phymod_dbg_mb_offset; 10167 - struct couple_mode_teaming cmt; 10168 - s32 internal_temperature; 10169 - u32 mfw_ver; 10170 - u32 running_bundle_id; 10171 - s32 external_temperature; 10172 - u32 mdump_reason; 10173 - u64 reserved; 10174 - u32 data_ptr; 10175 - u32 data_size; 10176 - }; 10177 - 10178 - struct fw_flr_mb { 10179 - u32 aggint; 10180 - u32 opgen_addr; 10181 - u32 accum_ack; 10182 - }; 10183 - 10184 - struct public_path { 10185 - struct fw_flr_mb flr_mb; 10186 - u32 mcp_vf_disabled[VF_MAX_STATIC / 32]; 10187 - 10188 - u32 process_kill; 10189 - #define PROCESS_KILL_COUNTER_MASK 0x0000ffff 10190 - #define PROCESS_KILL_COUNTER_SHIFT 0 10191 - #define PROCESS_KILL_GLOB_AEU_BIT_MASK 0xffff0000 10192 - #define PROCESS_KILL_GLOB_AEU_BIT_SHIFT 16 10193 - #define GLOBAL_AEU_BIT(aeu_reg_id, aeu_bit) (aeu_reg_id * 32 + aeu_bit) 10194 - }; 10195 - 10196 - struct public_port { 10197 - u32 validity_map; 10198 - 10199 - u32 link_status; 10200 - #define LINK_STATUS_LINK_UP 0x00000001 10201 - #define LINK_STATUS_SPEED_AND_DUPLEX_MASK 0x0000001e 10202 - #define LINK_STATUS_SPEED_AND_DUPLEX_1000THD (1 << 1) 10203 - #define LINK_STATUS_SPEED_AND_DUPLEX_1000TFD (2 << 1) 10204 - #define LINK_STATUS_SPEED_AND_DUPLEX_10G (3 << 1) 10205 - #define LINK_STATUS_SPEED_AND_DUPLEX_20G (4 << 1) 10206 - #define LINK_STATUS_SPEED_AND_DUPLEX_40G (5 << 1) 10207 - #define LINK_STATUS_SPEED_AND_DUPLEX_50G (6 << 1) 10208 - #define LINK_STATUS_SPEED_AND_DUPLEX_100G (7 << 1) 10209 - #define LINK_STATUS_SPEED_AND_DUPLEX_25G (8 << 1) 10210 - #define LINK_STATUS_AUTO_NEGOTIATE_ENABLED 0x00000020 10211 - #define LINK_STATUS_AUTO_NEGOTIATE_COMPLETE 0x00000040 10212 - #define LINK_STATUS_PARALLEL_DETECTION_USED 0x00000080 10213 - #define LINK_STATUS_PFC_ENABLED 0x00000100 10214 - #define LINK_STATUS_LINK_PARTNER_1000TFD_CAPABLE 0x00000200 10215 - #define LINK_STATUS_LINK_PARTNER_1000THD_CAPABLE 0x00000400 10216 - #define LINK_STATUS_LINK_PARTNER_10G_CAPABLE 0x00000800 10217 - #define LINK_STATUS_LINK_PARTNER_20G_CAPABLE 0x00001000 10218 - #define LINK_STATUS_LINK_PARTNER_40G_CAPABLE 0x00002000 10219 - #define LINK_STATUS_LINK_PARTNER_50G_CAPABLE 0x00004000 10220 - #define LINK_STATUS_LINK_PARTNER_100G_CAPABLE 0x00008000 10221 - #define LINK_STATUS_LINK_PARTNER_25G_CAPABLE 0x00010000 10222 - #define LINK_STATUS_LINK_PARTNER_FLOW_CONTROL_MASK 0x000c0000 10223 - #define LINK_STATUS_LINK_PARTNER_NOT_PAUSE_CAPABLE (0 << 18) 10224 - #define LINK_STATUS_LINK_PARTNER_SYMMETRIC_PAUSE (1 << 18) 10225 - #define LINK_STATUS_LINK_PARTNER_ASYMMETRIC_PAUSE (2 << 18) 10226 - #define LINK_STATUS_LINK_PARTNER_BOTH_PAUSE (3 << 18) 10227 - #define LINK_STATUS_SFP_TX_FAULT 0x00100000 10228 - #define LINK_STATUS_TX_FLOW_CONTROL_ENABLED 0x00200000 10229 - #define LINK_STATUS_RX_FLOW_CONTROL_ENABLED 0x00400000 10230 - #define LINK_STATUS_RX_SIGNAL_PRESENT 0x00800000 10231 - #define LINK_STATUS_MAC_LOCAL_FAULT 0x01000000 10232 - #define LINK_STATUS_MAC_REMOTE_FAULT 0x02000000 10233 - #define LINK_STATUS_UNSUPPORTED_SPD_REQ 0x04000000 10234 - 10235 - #define LINK_STATUS_FEC_MODE_MASK 0x38000000 10236 - #define LINK_STATUS_FEC_MODE_NONE (0 << 27) 10237 - #define LINK_STATUS_FEC_MODE_FIRECODE_CL74 (1 << 27) 10238 - #define LINK_STATUS_FEC_MODE_RS_CL91 (2 << 27) 10239 - 10240 - u32 link_status1; 10241 - u32 ext_phy_fw_version; 10242 - u32 drv_phy_cfg_addr; 10243 - 10244 - u32 port_stx; 10245 - 10246 - u32 stat_nig_timer; 10247 - 10248 - struct port_mf_cfg port_mf_config; 10249 - struct port_stats stats; 10250 - 10251 - u32 media_type; 10252 - #define MEDIA_UNSPECIFIED 0x0 10253 - #define MEDIA_SFPP_10G_FIBER 0x1 10254 - #define MEDIA_XFP_FIBER 0x2 10255 - #define MEDIA_DA_TWINAX 0x3 10256 - #define MEDIA_BASE_T 0x4 10257 - #define MEDIA_SFP_1G_FIBER 0x5 10258 - #define MEDIA_MODULE_FIBER 0x6 10259 - #define MEDIA_KR 0xf0 10260 - #define MEDIA_NOT_PRESENT 0xff 10261 - 10262 - u32 lfa_status; 10263 - u32 link_change_count; 10264 - 10265 - struct lldp_config_params_s lldp_config_params[LLDP_MAX_LLDP_AGENTS]; 10266 - struct lldp_status_params_s lldp_status_params[LLDP_MAX_LLDP_AGENTS]; 10267 - struct lldp_system_tlvs_buffer_s system_lldp_tlvs_buf; 10268 - 10269 - /* DCBX related MIB */ 10270 - struct dcbx_local_params local_admin_dcbx_mib; 10271 - struct dcbx_mib remote_dcbx_mib; 10272 - struct dcbx_mib operational_dcbx_mib; 10273 - 10274 - u32 reserved[2]; 10275 - 10276 - u32 transceiver_data; 10277 - #define ETH_TRANSCEIVER_STATE_MASK 0x000000ff 10278 - #define ETH_TRANSCEIVER_STATE_SHIFT 0x00000000 10279 - #define ETH_TRANSCEIVER_STATE_OFFSET 0x00000000 10280 - #define ETH_TRANSCEIVER_STATE_UNPLUGGED 0x00000000 10281 - #define ETH_TRANSCEIVER_STATE_PRESENT 0x00000001 10282 - #define ETH_TRANSCEIVER_STATE_VALID 0x00000003 10283 - #define ETH_TRANSCEIVER_STATE_UPDATING 0x00000008 10284 - #define ETH_TRANSCEIVER_TYPE_MASK 0x0000ff00 10285 - #define ETH_TRANSCEIVER_TYPE_OFFSET 0x8 10286 - #define ETH_TRANSCEIVER_TYPE_NONE 0x00 10287 - #define ETH_TRANSCEIVER_TYPE_UNKNOWN 0xff 10288 - #define ETH_TRANSCEIVER_TYPE_1G_PCC 0x01 10289 - #define ETH_TRANSCEIVER_TYPE_1G_ACC 0x02 10290 - #define ETH_TRANSCEIVER_TYPE_1G_LX 0x03 10291 - #define ETH_TRANSCEIVER_TYPE_1G_SX 0x04 10292 - #define ETH_TRANSCEIVER_TYPE_10G_SR 0x05 10293 - #define ETH_TRANSCEIVER_TYPE_10G_LR 0x06 10294 - #define ETH_TRANSCEIVER_TYPE_10G_LRM 0x07 10295 - #define ETH_TRANSCEIVER_TYPE_10G_ER 0x08 10296 - #define ETH_TRANSCEIVER_TYPE_10G_PCC 0x09 10297 - #define ETH_TRANSCEIVER_TYPE_10G_ACC 0x0a 10298 - #define ETH_TRANSCEIVER_TYPE_XLPPI 0x0b 10299 - #define ETH_TRANSCEIVER_TYPE_40G_LR4 0x0c 10300 - #define ETH_TRANSCEIVER_TYPE_40G_SR4 0x0d 10301 - #define ETH_TRANSCEIVER_TYPE_40G_CR4 0x0e 10302 - #define ETH_TRANSCEIVER_TYPE_100G_AOC 0x0f 10303 - #define ETH_TRANSCEIVER_TYPE_100G_SR4 0x10 10304 - #define ETH_TRANSCEIVER_TYPE_100G_LR4 0x11 10305 - #define ETH_TRANSCEIVER_TYPE_100G_ER4 0x12 10306 - #define ETH_TRANSCEIVER_TYPE_100G_ACC 0x13 10307 - #define ETH_TRANSCEIVER_TYPE_100G_CR4 0x14 10308 - #define ETH_TRANSCEIVER_TYPE_4x10G_SR 0x15 10309 - #define ETH_TRANSCEIVER_TYPE_25G_CA_N 0x16 10310 - #define ETH_TRANSCEIVER_TYPE_25G_ACC_S 0x17 10311 - #define ETH_TRANSCEIVER_TYPE_25G_CA_S 0x18 10312 - #define ETH_TRANSCEIVER_TYPE_25G_ACC_M 0x19 10313 - #define ETH_TRANSCEIVER_TYPE_25G_CA_L 0x1a 10314 - #define ETH_TRANSCEIVER_TYPE_25G_ACC_L 0x1b 10315 - #define ETH_TRANSCEIVER_TYPE_25G_SR 0x1c 10316 - #define ETH_TRANSCEIVER_TYPE_25G_LR 0x1d 10317 - #define ETH_TRANSCEIVER_TYPE_25G_AOC 0x1e 10318 - #define ETH_TRANSCEIVER_TYPE_4x10G 0x1f 10319 - #define ETH_TRANSCEIVER_TYPE_4x25G_CR 0x20 10320 - #define ETH_TRANSCEIVER_TYPE_1000BASET 0x21 10321 - #define ETH_TRANSCEIVER_TYPE_10G_BASET 0x22 10322 - #define ETH_TRANSCEIVER_TYPE_MULTI_RATE_10G_40G_SR 0x30 10323 - #define ETH_TRANSCEIVER_TYPE_MULTI_RATE_10G_40G_CR 0x31 10324 - #define ETH_TRANSCEIVER_TYPE_MULTI_RATE_10G_40G_LR 0x32 10325 - #define ETH_TRANSCEIVER_TYPE_MULTI_RATE_40G_100G_SR 0x33 10326 - #define ETH_TRANSCEIVER_TYPE_MULTI_RATE_40G_100G_CR 0x34 10327 - #define ETH_TRANSCEIVER_TYPE_MULTI_RATE_40G_100G_LR 0x35 10328 - #define ETH_TRANSCEIVER_TYPE_MULTI_RATE_40G_100G_AOC 0x36 10329 - #define ETH_TRANSCEIVER_TYPE_MULTI_RATE_10G_25G_SR 0x37 10330 - #define ETH_TRANSCEIVER_TYPE_MULTI_RATE_10G_25G_LR 0x38 10331 - #define ETH_TRANSCEIVER_TYPE_MULTI_RATE_1G_10G_SR 0x39 10332 - #define ETH_TRANSCEIVER_TYPE_MULTI_RATE_1G_10G_LR 0x3a 10333 - 10334 - u32 wol_info; 10335 - u32 wol_pkt_len; 10336 - u32 wol_pkt_details; 10337 - struct dcb_dscp_map dcb_dscp_map; 10338 - 10339 - u32 eee_status; 10340 - #define EEE_ACTIVE_BIT BIT(0) 10341 - #define EEE_LD_ADV_STATUS_MASK 0x000000f0 10342 - #define EEE_LD_ADV_STATUS_OFFSET 4 10343 - #define EEE_1G_ADV BIT(1) 10344 - #define EEE_10G_ADV BIT(2) 10345 - #define EEE_LP_ADV_STATUS_MASK 0x00000f00 10346 - #define EEE_LP_ADV_STATUS_OFFSET 8 10347 - #define EEE_SUPPORTED_SPEED_MASK 0x0000f000 10348 - #define EEE_SUPPORTED_SPEED_OFFSET 12 10349 - #define EEE_1G_SUPPORTED BIT(1) 10350 - #define EEE_10G_SUPPORTED BIT(2) 10351 - 10352 - u32 eee_remote; 10353 - #define EEE_REMOTE_TW_TX_MASK 0x0000ffff 10354 - #define EEE_REMOTE_TW_TX_OFFSET 0 10355 - #define EEE_REMOTE_TW_RX_MASK 0xffff0000 10356 - #define EEE_REMOTE_TW_RX_OFFSET 16 10357 - 10358 - u32 reserved1; 10359 - u32 oem_cfg_port; 10360 - #define OEM_CFG_CHANNEL_TYPE_MASK 0x00000003 10361 - #define OEM_CFG_CHANNEL_TYPE_OFFSET 0 10362 - #define OEM_CFG_CHANNEL_TYPE_VLAN_PARTITION 0x1 10363 - #define OEM_CFG_CHANNEL_TYPE_STAGGED 0x2 10364 - #define OEM_CFG_SCHED_TYPE_MASK 0x0000000C 10365 - #define OEM_CFG_SCHED_TYPE_OFFSET 2 10366 - #define OEM_CFG_SCHED_TYPE_ETS 0x1 10367 - #define OEM_CFG_SCHED_TYPE_VNIC_BW 0x2 10368 - }; 10369 - 10370 - struct public_func { 10371 - u32 reserved0[2]; 10372 - 10373 - u32 mtu_size; 10374 - 10375 - u32 reserved[7]; 10376 - 10377 - u32 config; 10378 - #define FUNC_MF_CFG_FUNC_HIDE 0x00000001 10379 - #define FUNC_MF_CFG_PAUSE_ON_HOST_RING 0x00000002 10380 - #define FUNC_MF_CFG_PAUSE_ON_HOST_RING_SHIFT 0x00000001 10381 - 10382 - #define FUNC_MF_CFG_PROTOCOL_MASK 0x000000f0 10383 - #define FUNC_MF_CFG_PROTOCOL_SHIFT 4 10384 - #define FUNC_MF_CFG_PROTOCOL_ETHERNET 0x00000000 10385 - #define FUNC_MF_CFG_PROTOCOL_ISCSI 0x00000010 10386 - #define FUNC_MF_CFG_PROTOCOL_FCOE 0x00000020 10387 - #define FUNC_MF_CFG_PROTOCOL_ROCE 0x00000030 10388 - #define FUNC_MF_CFG_PROTOCOL_NVMETCP 0x00000040 10389 - #define FUNC_MF_CFG_PROTOCOL_MAX 0x00000040 10390 - 10391 - #define FUNC_MF_CFG_MIN_BW_MASK 0x0000ff00 10392 - #define FUNC_MF_CFG_MIN_BW_SHIFT 8 10393 - #define FUNC_MF_CFG_MIN_BW_DEFAULT 0x00000000 10394 - #define FUNC_MF_CFG_MAX_BW_MASK 0x00ff0000 10395 - #define FUNC_MF_CFG_MAX_BW_SHIFT 16 10396 - #define FUNC_MF_CFG_MAX_BW_DEFAULT 0x00640000 10397 - 10398 - u32 status; 10399 - #define FUNC_STATUS_VIRTUAL_LINK_UP 0x00000001 10400 - 10401 - u32 mac_upper; 10402 - #define FUNC_MF_CFG_UPPERMAC_MASK 0x0000ffff 10403 - #define FUNC_MF_CFG_UPPERMAC_SHIFT 0 10404 - #define FUNC_MF_CFG_UPPERMAC_DEFAULT FUNC_MF_CFG_UPPERMAC_MASK 10405 - u32 mac_lower; 10406 - #define FUNC_MF_CFG_LOWERMAC_DEFAULT 0xffffffff 10407 - 10408 - u32 fcoe_wwn_port_name_upper; 10409 - u32 fcoe_wwn_port_name_lower; 10410 - 10411 - u32 fcoe_wwn_node_name_upper; 10412 - u32 fcoe_wwn_node_name_lower; 10413 - 10414 - u32 ovlan_stag; 10415 - #define FUNC_MF_CFG_OV_STAG_MASK 0x0000ffff 10416 - #define FUNC_MF_CFG_OV_STAG_SHIFT 0 10417 - #define FUNC_MF_CFG_OV_STAG_DEFAULT FUNC_MF_CFG_OV_STAG_MASK 10418 - 10419 - u32 pf_allocation; 10420 - 10421 - u32 preserve_data; 10422 - 10423 - u32 driver_last_activity_ts; 10424 - 10425 - u32 drv_ack_vf_disabled[VF_MAX_STATIC / 32]; 10426 - 10427 - u32 drv_id; 10428 - #define DRV_ID_PDA_COMP_VER_MASK 0x0000ffff 10429 - #define DRV_ID_PDA_COMP_VER_SHIFT 0 10430 - 10431 - #define LOAD_REQ_HSI_VERSION 2 10432 - #define DRV_ID_MCP_HSI_VER_MASK 0x00ff0000 10433 - #define DRV_ID_MCP_HSI_VER_SHIFT 16 10434 - #define DRV_ID_MCP_HSI_VER_CURRENT (LOAD_REQ_HSI_VERSION << \ 10435 - DRV_ID_MCP_HSI_VER_SHIFT) 10436 - 10437 - #define DRV_ID_DRV_TYPE_MASK 0x7f000000 10438 - #define DRV_ID_DRV_TYPE_SHIFT 24 10439 - #define DRV_ID_DRV_TYPE_UNKNOWN (0 << DRV_ID_DRV_TYPE_SHIFT) 10440 - #define DRV_ID_DRV_TYPE_LINUX (1 << DRV_ID_DRV_TYPE_SHIFT) 10441 - 10442 - #define DRV_ID_DRV_INIT_HW_MASK 0x80000000 10443 - #define DRV_ID_DRV_INIT_HW_SHIFT 31 10444 - #define DRV_ID_DRV_INIT_HW_FLAG (1 << DRV_ID_DRV_INIT_HW_SHIFT) 10445 - 10446 - u32 oem_cfg_func; 10447 - #define OEM_CFG_FUNC_TC_MASK 0x0000000F 10448 - #define OEM_CFG_FUNC_TC_OFFSET 0 10449 - #define OEM_CFG_FUNC_TC_0 0x0 10450 - #define OEM_CFG_FUNC_TC_1 0x1 10451 - #define OEM_CFG_FUNC_TC_2 0x2 10452 - #define OEM_CFG_FUNC_TC_3 0x3 10453 - #define OEM_CFG_FUNC_TC_4 0x4 10454 - #define OEM_CFG_FUNC_TC_5 0x5 10455 - #define OEM_CFG_FUNC_TC_6 0x6 10456 - #define OEM_CFG_FUNC_TC_7 0x7 10457 - 10458 - #define OEM_CFG_FUNC_HOST_PRI_CTRL_MASK 0x00000030 10459 - #define OEM_CFG_FUNC_HOST_PRI_CTRL_OFFSET 4 10460 - #define OEM_CFG_FUNC_HOST_PRI_CTRL_VNIC 0x1 10461 - #define OEM_CFG_FUNC_HOST_PRI_CTRL_OS 0x2 10462 - }; 10463 - 10464 - struct mcp_mac { 10465 - u32 mac_upper; 10466 - u32 mac_lower; 10467 - }; 10468 - 10469 - struct mcp_val64 { 10470 - u32 lo; 10471 - u32 hi; 10472 - }; 10473 - 10474 - struct mcp_file_att { 10475 - u32 nvm_start_addr; 10476 - u32 len; 10477 - }; 10478 - 10479 - struct bist_nvm_image_att { 10480 - u32 return_code; 10481 - u32 image_type; 10482 - u32 nvm_start_addr; 10483 - u32 len; 10484 - }; 10485 - 10486 - #define MCP_DRV_VER_STR_SIZE 16 10487 - #define MCP_DRV_VER_STR_SIZE_DWORD (MCP_DRV_VER_STR_SIZE / sizeof(u32)) 10488 - #define MCP_DRV_NVM_BUF_LEN 32 10489 - struct drv_version_stc { 10490 - u32 version; 10491 - u8 name[MCP_DRV_VER_STR_SIZE - 4]; 10492 - }; 10493 - 10494 - struct lan_stats_stc { 10495 - u64 ucast_rx_pkts; 10496 - u64 ucast_tx_pkts; 10497 - u32 fcs_err; 10498 - u32 rserved; 10499 - }; 10500 - 10501 - struct fcoe_stats_stc { 10502 - u64 rx_pkts; 10503 - u64 tx_pkts; 10504 - u32 fcs_err; 10505 - u32 login_failure; 10506 - }; 10507 - 10508 - struct ocbb_data_stc { 10509 - u32 ocbb_host_addr; 10510 - u32 ocsd_host_addr; 10511 - u32 ocsd_req_update_interval; 10512 - }; 10513 - 10514 - #define MAX_NUM_OF_SENSORS 7 10515 - struct temperature_status_stc { 10516 - u32 num_of_sensors; 10517 - u32 sensor[MAX_NUM_OF_SENSORS]; 10518 - }; 10519 - 10520 - /* crash dump configuration header */ 10521 - struct mdump_config_stc { 10522 - u32 version; 10523 - u32 config; 10524 - u32 epoc; 10525 - u32 num_of_logs; 10526 - u32 valid_logs; 10527 - }; 10528 - 10529 - enum resource_id_enum { 10530 - RESOURCE_NUM_SB_E = 0, 10531 - RESOURCE_NUM_L2_QUEUE_E = 1, 10532 - RESOURCE_NUM_VPORT_E = 2, 10533 - RESOURCE_NUM_VMQ_E = 3, 10534 - RESOURCE_FACTOR_NUM_RSS_PF_E = 4, 10535 - RESOURCE_FACTOR_RSS_PER_VF_E = 5, 10536 - RESOURCE_NUM_RL_E = 6, 10537 - RESOURCE_NUM_PQ_E = 7, 10538 - RESOURCE_NUM_VF_E = 8, 10539 - RESOURCE_VFC_FILTER_E = 9, 10540 - RESOURCE_ILT_E = 10, 10541 - RESOURCE_CQS_E = 11, 10542 - RESOURCE_GFT_PROFILES_E = 12, 10543 - RESOURCE_NUM_TC_E = 13, 10544 - RESOURCE_NUM_RSS_ENGINES_E = 14, 10545 - RESOURCE_LL2_QUEUE_E = 15, 10546 - RESOURCE_RDMA_STATS_QUEUE_E = 16, 10547 - RESOURCE_BDQ_E = 17, 10548 - RESOURCE_QCN_E = 18, 10549 - RESOURCE_LLH_FILTER_E = 19, 10550 - RESOURCE_VF_MAC_ADDR = 20, 10551 - RESOURCE_LL2_CQS_E = 21, 10552 - RESOURCE_VF_CNQS = 22, 10553 - RESOURCE_MAX_NUM, 10554 - RESOURCE_NUM_INVALID = 0xFFFFFFFF 10555 - }; 10556 - 10557 - /* Resource ID is to be filled by the driver in the MB request 10558 - * Size, offset & flags to be filled by the MFW in the MB response 10559 - */ 10560 - struct resource_info { 10561 - enum resource_id_enum res_id; 10562 - u32 size; /* number of allocated resources */ 10563 - u32 offset; /* Offset of the 1st resource */ 10564 - u32 vf_size; 10565 - u32 vf_offset; 10566 - u32 flags; 10567 - #define RESOURCE_ELEMENT_STRICT (1 << 0) 10568 - }; 10569 - 10570 - #define DRV_ROLE_NONE 0 10571 - #define DRV_ROLE_PREBOOT 1 10572 - #define DRV_ROLE_OS 2 10573 - #define DRV_ROLE_KDUMP 3 10574 - 10575 - struct load_req_stc { 10576 - u32 drv_ver_0; 10577 - u32 drv_ver_1; 10578 - u32 fw_ver; 10579 - u32 misc0; 10580 - #define LOAD_REQ_ROLE_MASK 0x000000FF 10581 - #define LOAD_REQ_ROLE_SHIFT 0 10582 - #define LOAD_REQ_LOCK_TO_MASK 0x0000FF00 10583 - #define LOAD_REQ_LOCK_TO_SHIFT 8 10584 - #define LOAD_REQ_LOCK_TO_DEFAULT 0 10585 - #define LOAD_REQ_LOCK_TO_NONE 255 10586 - #define LOAD_REQ_FORCE_MASK 0x000F0000 10587 - #define LOAD_REQ_FORCE_SHIFT 16 10588 - #define LOAD_REQ_FORCE_NONE 0 10589 - #define LOAD_REQ_FORCE_PF 1 10590 - #define LOAD_REQ_FORCE_ALL 2 10591 - #define LOAD_REQ_FLAGS0_MASK 0x00F00000 10592 - #define LOAD_REQ_FLAGS0_SHIFT 20 10593 - #define LOAD_REQ_FLAGS0_AVOID_RESET (0x1 << 0) 10594 - }; 10595 - 10596 - struct load_rsp_stc { 10597 - u32 drv_ver_0; 10598 - u32 drv_ver_1; 10599 - u32 fw_ver; 10600 - u32 misc0; 10601 - #define LOAD_RSP_ROLE_MASK 0x000000FF 10602 - #define LOAD_RSP_ROLE_SHIFT 0 10603 - #define LOAD_RSP_HSI_MASK 0x0000FF00 10604 - #define LOAD_RSP_HSI_SHIFT 8 10605 - #define LOAD_RSP_FLAGS0_MASK 0x000F0000 10606 - #define LOAD_RSP_FLAGS0_SHIFT 16 10607 - #define LOAD_RSP_FLAGS0_DRV_EXISTS (0x1 << 0) 10608 - }; 10609 - 10610 - struct mdump_retain_data_stc { 10611 - u32 valid; 10612 - u32 epoch; 10613 - u32 pf; 10614 - u32 status; 10615 - }; 10616 - 10617 - union drv_union_data { 10618 - u32 ver_str[MCP_DRV_VER_STR_SIZE_DWORD]; 10619 - struct mcp_mac wol_mac; 10620 - 10621 - struct eth_phy_cfg drv_phy_cfg; 10622 - 10623 - struct mcp_val64 val64; 10624 - 10625 - u8 raw_data[MCP_DRV_NVM_BUF_LEN]; 10626 - 10627 - struct mcp_file_att file_att; 10628 - 10629 - u32 ack_vf_disabled[VF_MAX_STATIC / 32]; 10630 - 10631 - struct drv_version_stc drv_version; 10632 - 10633 - struct lan_stats_stc lan_stats; 10634 - struct fcoe_stats_stc fcoe_stats; 10635 - struct ocbb_data_stc ocbb_info; 10636 - struct temperature_status_stc temp_info; 10637 - struct resource_info resource; 10638 - struct bist_nvm_image_att nvm_image_att; 10639 - struct mdump_config_stc mdump_config; 10640 - }; 10641 - 10642 - struct public_drv_mb { 10643 - u32 drv_mb_header; 10644 - #define DRV_MSG_CODE_MASK 0xffff0000 10645 - #define DRV_MSG_CODE_LOAD_REQ 0x10000000 10646 - #define DRV_MSG_CODE_LOAD_DONE 0x11000000 10647 - #define DRV_MSG_CODE_INIT_HW 0x12000000 10648 - #define DRV_MSG_CODE_CANCEL_LOAD_REQ 0x13000000 10649 - #define DRV_MSG_CODE_UNLOAD_REQ 0x20000000 10650 - #define DRV_MSG_CODE_UNLOAD_DONE 0x21000000 10651 - #define DRV_MSG_CODE_INIT_PHY 0x22000000 10652 - #define DRV_MSG_CODE_LINK_RESET 0x23000000 10653 - #define DRV_MSG_CODE_SET_DCBX 0x25000000 10654 - #define DRV_MSG_CODE_OV_UPDATE_CURR_CFG 0x26000000 10655 - #define DRV_MSG_CODE_OV_UPDATE_BUS_NUM 0x27000000 10656 - #define DRV_MSG_CODE_OV_UPDATE_BOOT_PROGRESS 0x28000000 10657 - #define DRV_MSG_CODE_OV_UPDATE_STORM_FW_VER 0x29000000 10658 - #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE 0x31000000 10659 - #define DRV_MSG_CODE_BW_UPDATE_ACK 0x32000000 10660 - #define DRV_MSG_CODE_OV_UPDATE_MTU 0x33000000 10661 - #define DRV_MSG_GET_RESOURCE_ALLOC_MSG 0x34000000 10662 - #define DRV_MSG_SET_RESOURCE_VALUE_MSG 0x35000000 10663 - #define DRV_MSG_CODE_OV_UPDATE_WOL 0x38000000 10664 - #define DRV_MSG_CODE_OV_UPDATE_ESWITCH_MODE 0x39000000 10665 - #define DRV_MSG_CODE_GET_OEM_UPDATES 0x41000000 10666 - 10667 - #define DRV_MSG_CODE_BW_UPDATE_ACK 0x32000000 10668 - #define DRV_MSG_CODE_NIG_DRAIN 0x30000000 10669 - #define DRV_MSG_CODE_S_TAG_UPDATE_ACK 0x3b000000 10670 - #define DRV_MSG_CODE_GET_NVM_CFG_OPTION 0x003e0000 10671 - #define DRV_MSG_CODE_SET_NVM_CFG_OPTION 0x003f0000 10672 - #define DRV_MSG_CODE_INITIATE_PF_FLR 0x02010000 10673 - #define DRV_MSG_CODE_VF_DISABLED_DONE 0xc0000000 10674 - #define DRV_MSG_CODE_CFG_VF_MSIX 0xc0010000 10675 - #define DRV_MSG_CODE_CFG_PF_VFS_MSIX 0xc0020000 10676 - #define DRV_MSG_CODE_NVM_PUT_FILE_BEGIN 0x00010000 10677 - #define DRV_MSG_CODE_NVM_PUT_FILE_DATA 0x00020000 10678 - #define DRV_MSG_CODE_NVM_GET_FILE_ATT 0x00030000 10679 - #define DRV_MSG_CODE_NVM_READ_NVRAM 0x00050000 10680 - #define DRV_MSG_CODE_NVM_WRITE_NVRAM 0x00060000 10681 - #define DRV_MSG_CODE_MCP_RESET 0x00090000 10682 - #define DRV_MSG_CODE_SET_VERSION 0x000f0000 10683 - #define DRV_MSG_CODE_MCP_HALT 0x00100000 10684 - #define DRV_MSG_CODE_SET_VMAC 0x00110000 10685 - #define DRV_MSG_CODE_GET_VMAC 0x00120000 10686 - #define DRV_MSG_CODE_VMAC_TYPE_SHIFT 4 10687 - #define DRV_MSG_CODE_VMAC_TYPE_MASK 0x30 10688 - #define DRV_MSG_CODE_VMAC_TYPE_MAC 1 10689 - #define DRV_MSG_CODE_VMAC_TYPE_WWNN 2 10690 - #define DRV_MSG_CODE_VMAC_TYPE_WWPN 3 10691 - 10692 - #define DRV_MSG_CODE_GET_STATS 0x00130000 10693 - #define DRV_MSG_CODE_STATS_TYPE_LAN 1 10694 - #define DRV_MSG_CODE_STATS_TYPE_FCOE 2 10695 - #define DRV_MSG_CODE_STATS_TYPE_ISCSI 3 10696 - #define DRV_MSG_CODE_STATS_TYPE_RDMA 4 10697 - 10698 - #define DRV_MSG_CODE_TRANSCEIVER_READ 0x00160000 10699 - 10700 - #define DRV_MSG_CODE_MASK_PARITIES 0x001a0000 10701 - 10702 - #define DRV_MSG_CODE_BIST_TEST 0x001e0000 10703 - #define DRV_MSG_CODE_SET_LED_MODE 0x00200000 10704 - #define DRV_MSG_CODE_RESOURCE_CMD 0x00230000 10705 - /* Send crash dump commands with param[3:0] - opcode */ 10706 - #define DRV_MSG_CODE_MDUMP_CMD 0x00250000 10707 - #define DRV_MSG_CODE_GET_TLV_DONE 0x002f0000 10708 - #define DRV_MSG_CODE_GET_ENGINE_CONFIG 0x00370000 10709 - #define DRV_MSG_CODE_GET_PPFID_BITMAP 0x43000000 10710 - 10711 - #define DRV_MSG_CODE_DEBUG_DATA_SEND 0xc0040000 10712 - 10713 - #define RESOURCE_CMD_REQ_RESC_MASK 0x0000001F 10714 - #define RESOURCE_CMD_REQ_RESC_SHIFT 0 10715 - #define RESOURCE_CMD_REQ_OPCODE_MASK 0x000000E0 10716 - #define RESOURCE_CMD_REQ_OPCODE_SHIFT 5 10717 - #define RESOURCE_OPCODE_REQ 1 10718 - #define RESOURCE_OPCODE_REQ_WO_AGING 2 10719 - #define RESOURCE_OPCODE_REQ_W_AGING 3 10720 - #define RESOURCE_OPCODE_RELEASE 4 10721 - #define RESOURCE_OPCODE_FORCE_RELEASE 5 10722 - #define RESOURCE_CMD_REQ_AGE_MASK 0x0000FF00 10723 - #define RESOURCE_CMD_REQ_AGE_SHIFT 8 10724 - 10725 - #define RESOURCE_CMD_RSP_OWNER_MASK 0x000000FF 10726 - #define RESOURCE_CMD_RSP_OWNER_SHIFT 0 10727 - #define RESOURCE_CMD_RSP_OPCODE_MASK 0x00000700 10728 - #define RESOURCE_CMD_RSP_OPCODE_SHIFT 8 10729 - #define RESOURCE_OPCODE_GNT 1 10730 - #define RESOURCE_OPCODE_BUSY 2 10731 - #define RESOURCE_OPCODE_RELEASED 3 10732 - #define RESOURCE_OPCODE_RELEASED_PREVIOUS 4 10733 - #define RESOURCE_OPCODE_WRONG_OWNER 5 10734 - #define RESOURCE_OPCODE_UNKNOWN_CMD 255 10735 - 10736 - #define RESOURCE_DUMP 0 10737 - 10738 - /* DRV_MSG_CODE_MDUMP_CMD parameters */ 10739 - #define MDUMP_DRV_PARAM_OPCODE_MASK 0x0000000f 10740 - #define DRV_MSG_CODE_MDUMP_ACK 0x01 10741 - #define DRV_MSG_CODE_MDUMP_SET_VALUES 0x02 10742 - #define DRV_MSG_CODE_MDUMP_TRIGGER 0x03 10743 - #define DRV_MSG_CODE_MDUMP_GET_CONFIG 0x04 10744 - #define DRV_MSG_CODE_MDUMP_SET_ENABLE 0x05 10745 - #define DRV_MSG_CODE_MDUMP_CLEAR_LOGS 0x06 10746 - #define DRV_MSG_CODE_MDUMP_GET_RETAIN 0x07 10747 - #define DRV_MSG_CODE_MDUMP_CLR_RETAIN 0x08 10748 - 10749 - #define DRV_MSG_CODE_HW_DUMP_TRIGGER 0x0a 10750 - #define DRV_MSG_CODE_MDUMP_GEN_MDUMP2 0x0b 10751 - #define DRV_MSG_CODE_MDUMP_FREE_MDUMP2 0x0c 10752 - 10753 - #define DRV_MSG_CODE_GET_PF_RDMA_PROTOCOL 0x002b0000 10754 - #define DRV_MSG_CODE_OS_WOL 0x002e0000 10755 - 10756 - #define DRV_MSG_CODE_FEATURE_SUPPORT 0x00300000 10757 - #define DRV_MSG_CODE_GET_MFW_FEATURE_SUPPORT 0x00310000 10758 - #define DRV_MSG_SEQ_NUMBER_MASK 0x0000ffff 10759 - 10760 - u32 drv_mb_param; 10761 - #define DRV_MB_PARAM_UNLOAD_WOL_UNKNOWN 0x00000000 10762 - #define DRV_MB_PARAM_UNLOAD_WOL_MCP 0x00000001 10763 - #define DRV_MB_PARAM_UNLOAD_WOL_DISABLED 0x00000002 10764 - #define DRV_MB_PARAM_UNLOAD_WOL_ENABLED 0x00000003 10765 - #define DRV_MB_PARAM_DCBX_NOTIFY_MASK 0x000000FF 10766 - #define DRV_MB_PARAM_DCBX_NOTIFY_SHIFT 3 10767 - 10768 - #define DRV_MB_PARAM_NVM_PUT_FILE_BEGIN_MBI 0x3 10769 - #define DRV_MB_PARAM_NVM_OFFSET_OFFSET 0 10770 - #define DRV_MB_PARAM_NVM_OFFSET_MASK 0x00FFFFFF 10771 - #define DRV_MB_PARAM_NVM_LEN_OFFSET 24 10772 - #define DRV_MB_PARAM_NVM_LEN_MASK 0xFF000000 10773 - 10774 - #define DRV_MB_PARAM_CFG_VF_MSIX_VF_ID_SHIFT 0 10775 - #define DRV_MB_PARAM_CFG_VF_MSIX_VF_ID_MASK 0x000000FF 10776 - #define DRV_MB_PARAM_CFG_VF_MSIX_SB_NUM_SHIFT 8 10777 - #define DRV_MB_PARAM_CFG_VF_MSIX_SB_NUM_MASK 0x0000FF00 10778 - #define DRV_MB_PARAM_LLDP_SEND_MASK 0x00000001 10779 - #define DRV_MB_PARAM_LLDP_SEND_SHIFT 0 10780 - 10781 - #define DRV_MB_PARAM_OV_CURR_CFG_SHIFT 0 10782 - #define DRV_MB_PARAM_OV_CURR_CFG_MASK 0x0000000F 10783 - #define DRV_MB_PARAM_OV_CURR_CFG_NONE 0 10784 - #define DRV_MB_PARAM_OV_CURR_CFG_OS 1 10785 - #define DRV_MB_PARAM_OV_CURR_CFG_VENDOR_SPEC 2 10786 - #define DRV_MB_PARAM_OV_CURR_CFG_OTHER 3 10787 - 10788 - #define DRV_MB_PARAM_OV_STORM_FW_VER_SHIFT 0 10789 - #define DRV_MB_PARAM_OV_STORM_FW_VER_MASK 0xFFFFFFFF 10790 - #define DRV_MB_PARAM_OV_STORM_FW_VER_MAJOR_MASK 0xFF000000 10791 - #define DRV_MB_PARAM_OV_STORM_FW_VER_MINOR_MASK 0x00FF0000 10792 - #define DRV_MB_PARAM_OV_STORM_FW_VER_BUILD_MASK 0x0000FF00 10793 - #define DRV_MB_PARAM_OV_STORM_FW_VER_DROP_MASK 0x000000FF 10794 - 10795 - #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_SHIFT 0 10796 - #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_MASK 0xF 10797 - #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_UNKNOWN 0x1 10798 - #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_NOT_LOADED 0x2 10799 - #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_LOADING 0x3 10800 - #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_DISABLED 0x4 10801 - #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_ACTIVE 0x5 10802 - 10803 - #define DRV_MB_PARAM_OV_MTU_SIZE_SHIFT 0 10804 - #define DRV_MB_PARAM_OV_MTU_SIZE_MASK 0xFFFFFFFF 10805 - 10806 - #define DRV_MB_PARAM_WOL_MASK (DRV_MB_PARAM_WOL_DEFAULT | \ 10807 - DRV_MB_PARAM_WOL_DISABLED | \ 10808 - DRV_MB_PARAM_WOL_ENABLED) 10809 - #define DRV_MB_PARAM_WOL_DEFAULT DRV_MB_PARAM_UNLOAD_WOL_MCP 10810 - #define DRV_MB_PARAM_WOL_DISABLED DRV_MB_PARAM_UNLOAD_WOL_DISABLED 10811 - #define DRV_MB_PARAM_WOL_ENABLED DRV_MB_PARAM_UNLOAD_WOL_ENABLED 10812 - 10813 - #define DRV_MB_PARAM_ESWITCH_MODE_MASK (DRV_MB_PARAM_ESWITCH_MODE_NONE | \ 10814 - DRV_MB_PARAM_ESWITCH_MODE_VEB | \ 10815 - DRV_MB_PARAM_ESWITCH_MODE_VEPA) 10816 - #define DRV_MB_PARAM_ESWITCH_MODE_NONE 0x0 10817 - #define DRV_MB_PARAM_ESWITCH_MODE_VEB 0x1 10818 - #define DRV_MB_PARAM_ESWITCH_MODE_VEPA 0x2 10819 - 10820 - #define DRV_MB_PARAM_DUMMY_OEM_UPDATES_MASK 0x1 10821 - #define DRV_MB_PARAM_DUMMY_OEM_UPDATES_OFFSET 0 10822 - 10823 - #define DRV_MB_PARAM_SET_LED_MODE_OPER 0x0 10824 - #define DRV_MB_PARAM_SET_LED_MODE_ON 0x1 10825 - #define DRV_MB_PARAM_SET_LED_MODE_OFF 0x2 10826 - 10827 - #define DRV_MB_PARAM_TRANSCEIVER_PORT_OFFSET 0 10828 - #define DRV_MB_PARAM_TRANSCEIVER_PORT_MASK 0x00000003 10829 - #define DRV_MB_PARAM_TRANSCEIVER_SIZE_OFFSET 2 10830 - #define DRV_MB_PARAM_TRANSCEIVER_SIZE_MASK 0x000000fc 10831 - #define DRV_MB_PARAM_TRANSCEIVER_I2C_ADDRESS_OFFSET 8 10832 - #define DRV_MB_PARAM_TRANSCEIVER_I2C_ADDRESS_MASK 0x0000ff00 10833 - #define DRV_MB_PARAM_TRANSCEIVER_OFFSET_OFFSET 16 10834 - #define DRV_MB_PARAM_TRANSCEIVER_OFFSET_MASK 0xffff0000 10835 - 10836 - /* Resource Allocation params - Driver version support */ 10837 - #define DRV_MB_PARAM_RESOURCE_ALLOC_VERSION_MAJOR_MASK 0xffff0000 10838 - #define DRV_MB_PARAM_RESOURCE_ALLOC_VERSION_MAJOR_SHIFT 16 10839 - #define DRV_MB_PARAM_RESOURCE_ALLOC_VERSION_MINOR_MASK 0x0000ffff 10840 - #define DRV_MB_PARAM_RESOURCE_ALLOC_VERSION_MINOR_SHIFT 0 10841 - 10842 - #define DRV_MB_PARAM_BIST_REGISTER_TEST 1 10843 - #define DRV_MB_PARAM_BIST_CLOCK_TEST 2 10844 - #define DRV_MB_PARAM_BIST_NVM_TEST_NUM_IMAGES 3 10845 - #define DRV_MB_PARAM_BIST_NVM_TEST_IMAGE_BY_INDEX 4 10846 - 10847 - #define DRV_MB_PARAM_BIST_RC_UNKNOWN 0 10848 - #define DRV_MB_PARAM_BIST_RC_PASSED 1 10849 - #define DRV_MB_PARAM_BIST_RC_FAILED 2 10850 - #define DRV_MB_PARAM_BIST_RC_INVALID_PARAMETER 3 10851 - 10852 - #define DRV_MB_PARAM_BIST_TEST_INDEX_SHIFT 0 10853 - #define DRV_MB_PARAM_BIST_TEST_INDEX_MASK 0x000000ff 10854 - #define DRV_MB_PARAM_BIST_TEST_IMAGE_INDEX_SHIFT 8 10855 - #define DRV_MB_PARAM_BIST_TEST_IMAGE_INDEX_MASK 0x0000ff00 10856 - 10857 - #define DRV_MB_PARAM_FEATURE_SUPPORT_PORT_MASK 0x0000ffff 10858 - #define DRV_MB_PARAM_FEATURE_SUPPORT_PORT_OFFSET 0 10859 - #define DRV_MB_PARAM_FEATURE_SUPPORT_PORT_EEE 0x00000002 10860 - #define DRV_MB_PARAM_FEATURE_SUPPORT_PORT_FEC_CONTROL 0x00000004 10861 - #define DRV_MB_PARAM_FEATURE_SUPPORT_PORT_EXT_SPEED_FEC_CONTROL 0x00000008 10862 - #define DRV_MB_PARAM_FEATURE_SUPPORT_FUNC_VLINK 0x00010000 10863 - 10864 - /* DRV_MSG_CODE_DEBUG_DATA_SEND parameters */ 10865 - #define DRV_MSG_CODE_DEBUG_DATA_SEND_SIZE_OFFSET 0 10866 - #define DRV_MSG_CODE_DEBUG_DATA_SEND_SIZE_MASK 0xff 10867 - 10868 - /* Driver attributes params */ 10869 - #define DRV_MB_PARAM_ATTRIBUTE_KEY_OFFSET 0 10870 - #define DRV_MB_PARAM_ATTRIBUTE_KEY_MASK 0x00ffffff 10871 - #define DRV_MB_PARAM_ATTRIBUTE_CMD_OFFSET 24 10872 - #define DRV_MB_PARAM_ATTRIBUTE_CMD_MASK 0xff000000 10873 - 10874 - #define DRV_MB_PARAM_NVM_CFG_OPTION_ID_OFFSET 0 10875 - #define DRV_MB_PARAM_NVM_CFG_OPTION_ID_SHIFT 0 10876 - #define DRV_MB_PARAM_NVM_CFG_OPTION_ID_MASK 0x0000ffff 10877 - #define DRV_MB_PARAM_NVM_CFG_OPTION_ALL_SHIFT 16 10878 - #define DRV_MB_PARAM_NVM_CFG_OPTION_ALL_MASK 0x00010000 10879 - #define DRV_MB_PARAM_NVM_CFG_OPTION_INIT_SHIFT 17 10880 - #define DRV_MB_PARAM_NVM_CFG_OPTION_INIT_MASK 0x00020000 10881 - #define DRV_MB_PARAM_NVM_CFG_OPTION_COMMIT_SHIFT 18 10882 - #define DRV_MB_PARAM_NVM_CFG_OPTION_COMMIT_MASK 0x00040000 10883 - #define DRV_MB_PARAM_NVM_CFG_OPTION_FREE_SHIFT 19 10884 - #define DRV_MB_PARAM_NVM_CFG_OPTION_FREE_MASK 0x00080000 10885 - #define DRV_MB_PARAM_NVM_CFG_OPTION_ENTITY_SEL_SHIFT 20 10886 - #define DRV_MB_PARAM_NVM_CFG_OPTION_ENTITY_SEL_MASK 0x00100000 10887 - #define DRV_MB_PARAM_NVM_CFG_OPTION_ENTITY_ID_SHIFT 24 10888 - #define DRV_MB_PARAM_NVM_CFG_OPTION_ENTITY_ID_MASK 0x0f000000 10889 - 10890 - u32 fw_mb_header; 10891 - #define FW_MSG_CODE_MASK 0xffff0000 10892 - #define FW_MSG_CODE_UNSUPPORTED 0x00000000 10893 - #define FW_MSG_CODE_DRV_LOAD_ENGINE 0x10100000 10894 - #define FW_MSG_CODE_DRV_LOAD_PORT 0x10110000 10895 - #define FW_MSG_CODE_DRV_LOAD_FUNCTION 0x10120000 10896 - #define FW_MSG_CODE_DRV_LOAD_REFUSED_PDA 0x10200000 10897 - #define FW_MSG_CODE_DRV_LOAD_REFUSED_HSI_1 0x10210000 10898 - #define FW_MSG_CODE_DRV_LOAD_REFUSED_DIAG 0x10220000 10899 - #define FW_MSG_CODE_DRV_LOAD_REFUSED_HSI 0x10230000 10900 - #define FW_MSG_CODE_DRV_LOAD_REFUSED_REQUIRES_FORCE 0x10300000 10901 - #define FW_MSG_CODE_DRV_LOAD_REFUSED_REJECT 0x10310000 10902 - #define FW_MSG_CODE_DRV_LOAD_DONE 0x11100000 10903 - #define FW_MSG_CODE_DRV_UNLOAD_ENGINE 0x20110000 10904 - #define FW_MSG_CODE_DRV_UNLOAD_PORT 0x20120000 10905 - #define FW_MSG_CODE_DRV_UNLOAD_FUNCTION 0x20130000 10906 - #define FW_MSG_CODE_DRV_UNLOAD_DONE 0x21100000 10907 - #define FW_MSG_CODE_RESOURCE_ALLOC_OK 0x34000000 10908 - #define FW_MSG_CODE_RESOURCE_ALLOC_UNKNOWN 0x35000000 10909 - #define FW_MSG_CODE_RESOURCE_ALLOC_DEPRECATED 0x36000000 10910 - #define FW_MSG_CODE_S_TAG_UPDATE_ACK_DONE 0x3b000000 10911 - #define FW_MSG_CODE_DRV_CFG_VF_MSIX_DONE 0xb0010000 10912 - 10913 - #define FW_MSG_CODE_NVM_OK 0x00010000 10914 - #define FW_MSG_CODE_NVM_PUT_FILE_FINISH_OK 0x00400000 10915 - #define FW_MSG_CODE_PHY_OK 0x00110000 10916 - #define FW_MSG_CODE_OK 0x00160000 10917 - #define FW_MSG_CODE_ERROR 0x00170000 10918 - #define FW_MSG_CODE_TRANSCEIVER_DIAG_OK 0x00160000 10919 - #define FW_MSG_CODE_TRANSCEIVER_DIAG_ERROR 0x00170000 10920 - #define FW_MSG_CODE_TRANSCEIVER_NOT_PRESENT 0x00020000 10921 - 10922 - #define FW_MSG_CODE_OS_WOL_SUPPORTED 0x00800000 10923 - #define FW_MSG_CODE_OS_WOL_NOT_SUPPORTED 0x00810000 10924 - #define FW_MSG_CODE_DRV_CFG_PF_VFS_MSIX_DONE 0x00870000 10925 - #define FW_MSG_SEQ_NUMBER_MASK 0x0000ffff 10926 - 10927 - #define FW_MSG_CODE_DEBUG_DATA_SEND_INV_ARG 0xb0070000 10928 - #define FW_MSG_CODE_DEBUG_DATA_SEND_BUF_FULL 0xb0080000 10929 - #define FW_MSG_CODE_DEBUG_DATA_SEND_NO_BUF 0xb0090000 10930 - #define FW_MSG_CODE_DEBUG_NOT_ENABLED 0xb00a0000 10931 - #define FW_MSG_CODE_DEBUG_DATA_SEND_OK 0xb00b0000 10932 - 10933 - #define FW_MSG_CODE_MDUMP_INVALID_CMD 0x00030000 10934 - 10935 - u32 fw_mb_param; 10936 - #define FW_MB_PARAM_RESOURCE_ALLOC_VERSION_MAJOR_MASK 0xffff0000 10937 - #define FW_MB_PARAM_RESOURCE_ALLOC_VERSION_MAJOR_SHIFT 16 10938 - #define FW_MB_PARAM_RESOURCE_ALLOC_VERSION_MINOR_MASK 0x0000ffff 10939 - #define FW_MB_PARAM_RESOURCE_ALLOC_VERSION_MINOR_SHIFT 0 10940 - 10941 - /* Get PF RDMA protocol command response */ 10942 - #define FW_MB_PARAM_GET_PF_RDMA_NONE 0x0 10943 - #define FW_MB_PARAM_GET_PF_RDMA_ROCE 0x1 10944 - #define FW_MB_PARAM_GET_PF_RDMA_IWARP 0x2 10945 - #define FW_MB_PARAM_GET_PF_RDMA_BOTH 0x3 10946 - 10947 - /* Get MFW feature support response */ 10948 - #define FW_MB_PARAM_FEATURE_SUPPORT_SMARTLINQ BIT(0) 10949 - #define FW_MB_PARAM_FEATURE_SUPPORT_EEE BIT(1) 10950 - #define FW_MB_PARAM_FEATURE_SUPPORT_FEC_CONTROL BIT(5) 10951 - #define FW_MB_PARAM_FEATURE_SUPPORT_EXT_SPEED_FEC_CONTROL BIT(6) 10952 - #define FW_MB_PARAM_FEATURE_SUPPORT_VLINK BIT(16) 10953 - 10954 - #define FW_MB_PARAM_LOAD_DONE_DID_EFUSE_ERROR BIT(0) 10955 - 10956 - #define FW_MB_PARAM_ENG_CFG_FIR_AFFIN_VALID_MASK 0x00000001 10957 - #define FW_MB_PARAM_ENG_CFG_FIR_AFFIN_VALID_SHIFT 0 10958 - #define FW_MB_PARAM_ENG_CFG_FIR_AFFIN_VALUE_MASK 0x00000002 10959 - #define FW_MB_PARAM_ENG_CFG_FIR_AFFIN_VALUE_SHIFT 1 10960 - #define FW_MB_PARAM_ENG_CFG_L2_AFFIN_VALID_MASK 0x00000004 10961 - #define FW_MB_PARAM_ENG_CFG_L2_AFFIN_VALID_SHIFT 2 10962 - #define FW_MB_PARAM_ENG_CFG_L2_AFFIN_VALUE_MASK 0x00000008 10963 - #define FW_MB_PARAM_ENG_CFG_L2_AFFIN_VALUE_SHIFT 3 10964 - 10965 - #define FW_MB_PARAM_PPFID_BITMAP_MASK 0xff 10966 - #define FW_MB_PARAM_PPFID_BITMAP_SHIFT 0 10967 - 10968 - u32 drv_pulse_mb; 10969 - #define DRV_PULSE_SEQ_MASK 0x00007fff 10970 - #define DRV_PULSE_SYSTEM_TIME_MASK 0xffff0000 10971 - #define DRV_PULSE_ALWAYS_ALIVE 0x00008000 10972 - 10973 - u32 mcp_pulse_mb; 10974 - #define MCP_PULSE_SEQ_MASK 0x00007fff 10975 - #define MCP_PULSE_ALWAYS_ALIVE 0x00008000 10976 - #define MCP_EVENT_MASK 0xffff0000 10977 - #define MCP_EVENT_OTHER_DRIVER_RESET_REQ 0x00010000 10978 - 10979 - union drv_union_data union_data; 10980 - }; 10981 - 10982 - #define FW_MB_PARAM_NVM_PUT_FILE_REQ_OFFSET_MASK 0x00ffffff 10983 - #define FW_MB_PARAM_NVM_PUT_FILE_REQ_OFFSET_SHIFT 0 10984 - #define FW_MB_PARAM_NVM_PUT_FILE_REQ_SIZE_MASK 0xff000000 10985 - #define FW_MB_PARAM_NVM_PUT_FILE_REQ_SIZE_SHIFT 24 10986 - 10987 - enum MFW_DRV_MSG_TYPE { 10988 - MFW_DRV_MSG_LINK_CHANGE, 10989 - MFW_DRV_MSG_FLR_FW_ACK_FAILED, 10990 - MFW_DRV_MSG_VF_DISABLED, 10991 - MFW_DRV_MSG_LLDP_DATA_UPDATED, 10992 - MFW_DRV_MSG_DCBX_REMOTE_MIB_UPDATED, 10993 - MFW_DRV_MSG_DCBX_OPERATIONAL_MIB_UPDATED, 10994 - MFW_DRV_MSG_ERROR_RECOVERY, 10995 - MFW_DRV_MSG_BW_UPDATE, 10996 - MFW_DRV_MSG_S_TAG_UPDATE, 10997 - MFW_DRV_MSG_GET_LAN_STATS, 10998 - MFW_DRV_MSG_GET_FCOE_STATS, 10999 - MFW_DRV_MSG_GET_ISCSI_STATS, 11000 - MFW_DRV_MSG_GET_RDMA_STATS, 11001 - MFW_DRV_MSG_FAILURE_DETECTED, 11002 - MFW_DRV_MSG_TRANSCEIVER_STATE_CHANGE, 11003 - MFW_DRV_MSG_CRITICAL_ERROR_OCCURRED, 11004 - MFW_DRV_MSG_RESERVED, 11005 - MFW_DRV_MSG_GET_TLV_REQ, 11006 - MFW_DRV_MSG_OEM_CFG_UPDATE, 11007 - MFW_DRV_MSG_MAX 11008 - }; 11009 - 11010 - #define MFW_DRV_MSG_MAX_DWORDS(msgs) (((msgs - 1) >> 2) + 1) 11011 - #define MFW_DRV_MSG_DWORD(msg_id) (msg_id >> 2) 11012 - #define MFW_DRV_MSG_OFFSET(msg_id) ((msg_id & 0x3) << 3) 11013 - #define MFW_DRV_MSG_MASK(msg_id) (0xff << MFW_DRV_MSG_OFFSET(msg_id)) 11014 - 11015 - struct public_mfw_mb { 11016 - u32 sup_msgs; 11017 - u32 msg[MFW_DRV_MSG_MAX_DWORDS(MFW_DRV_MSG_MAX)]; 11018 - u32 ack[MFW_DRV_MSG_MAX_DWORDS(MFW_DRV_MSG_MAX)]; 11019 - }; 11020 - 11021 - enum public_sections { 11022 - PUBLIC_DRV_MB, 11023 - PUBLIC_MFW_MB, 11024 - PUBLIC_GLOBAL, 11025 - PUBLIC_PATH, 11026 - PUBLIC_PORT, 11027 - PUBLIC_FUNC, 11028 - PUBLIC_MAX_SECTIONS 11029 - }; 11030 - 11031 - struct mcp_public_data { 11032 - u32 num_sections; 11033 - u32 sections[PUBLIC_MAX_SECTIONS]; 11034 - struct public_drv_mb drv_mb[MCP_GLOB_FUNC_MAX]; 11035 - struct public_mfw_mb mfw_mb[MCP_GLOB_FUNC_MAX]; 11036 - struct public_global global; 11037 - struct public_path path[MCP_GLOB_PATH_MAX]; 11038 - struct public_port port[MCP_GLOB_PORT_MAX]; 11039 - struct public_func func[MCP_GLOB_FUNC_MAX]; 11040 - }; 11041 - 11042 - #define MAX_I2C_TRANSACTION_SIZE 16 11043 - 11044 - /* OCBB definitions */ 11045 - enum tlvs { 11046 - /* Category 1: Device Properties */ 11047 - DRV_TLV_CLP_STR, 11048 - DRV_TLV_CLP_STR_CTD, 11049 - /* Category 6: Device Configuration */ 11050 - DRV_TLV_SCSI_TO, 11051 - DRV_TLV_R_T_TOV, 11052 - DRV_TLV_R_A_TOV, 11053 - DRV_TLV_E_D_TOV, 11054 - DRV_TLV_CR_TOV, 11055 - DRV_TLV_BOOT_TYPE, 11056 - /* Category 8: Port Configuration */ 11057 - DRV_TLV_NPIV_ENABLED, 11058 - /* Category 10: Function Configuration */ 11059 - DRV_TLV_FEATURE_FLAGS, 11060 - DRV_TLV_LOCAL_ADMIN_ADDR, 11061 - DRV_TLV_ADDITIONAL_MAC_ADDR_1, 11062 - DRV_TLV_ADDITIONAL_MAC_ADDR_2, 11063 - DRV_TLV_LSO_MAX_OFFLOAD_SIZE, 11064 - DRV_TLV_LSO_MIN_SEGMENT_COUNT, 11065 - DRV_TLV_PROMISCUOUS_MODE, 11066 - DRV_TLV_TX_DESCRIPTORS_QUEUE_SIZE, 11067 - DRV_TLV_RX_DESCRIPTORS_QUEUE_SIZE, 11068 - DRV_TLV_NUM_OF_NET_QUEUE_VMQ_CFG, 11069 - DRV_TLV_FLEX_NIC_OUTER_VLAN_ID, 11070 - DRV_TLV_OS_DRIVER_STATES, 11071 - DRV_TLV_PXE_BOOT_PROGRESS, 11072 - /* Category 12: FC/FCoE Configuration */ 11073 - DRV_TLV_NPIV_STATE, 11074 - DRV_TLV_NUM_OF_NPIV_IDS, 11075 - DRV_TLV_SWITCH_NAME, 11076 - DRV_TLV_SWITCH_PORT_NUM, 11077 - DRV_TLV_SWITCH_PORT_ID, 11078 - DRV_TLV_VENDOR_NAME, 11079 - DRV_TLV_SWITCH_MODEL, 11080 - DRV_TLV_SWITCH_FW_VER, 11081 - DRV_TLV_QOS_PRIORITY_PER_802_1P, 11082 - DRV_TLV_PORT_ALIAS, 11083 - DRV_TLV_PORT_STATE, 11084 - DRV_TLV_FIP_TX_DESCRIPTORS_QUEUE_SIZE, 11085 - DRV_TLV_FCOE_RX_DESCRIPTORS_QUEUE_SIZE, 11086 - DRV_TLV_LINK_FAILURE_COUNT, 11087 - DRV_TLV_FCOE_BOOT_PROGRESS, 11088 - /* Category 13: iSCSI Configuration */ 11089 - DRV_TLV_TARGET_LLMNR_ENABLED, 11090 - DRV_TLV_HEADER_DIGEST_FLAG_ENABLED, 11091 - DRV_TLV_DATA_DIGEST_FLAG_ENABLED, 11092 - DRV_TLV_AUTHENTICATION_METHOD, 11093 - DRV_TLV_ISCSI_BOOT_TARGET_PORTAL, 11094 - DRV_TLV_MAX_FRAME_SIZE, 11095 - DRV_TLV_PDU_TX_DESCRIPTORS_QUEUE_SIZE, 11096 - DRV_TLV_PDU_RX_DESCRIPTORS_QUEUE_SIZE, 11097 - DRV_TLV_ISCSI_BOOT_PROGRESS, 11098 - /* Category 20: Device Data */ 11099 - DRV_TLV_PCIE_BUS_RX_UTILIZATION, 11100 - DRV_TLV_PCIE_BUS_TX_UTILIZATION, 11101 - DRV_TLV_DEVICE_CPU_CORES_UTILIZATION, 11102 - DRV_TLV_LAST_VALID_DCC_TLV_RECEIVED, 11103 - DRV_TLV_NCSI_RX_BYTES_RECEIVED, 11104 - DRV_TLV_NCSI_TX_BYTES_SENT, 11105 - /* Category 22: Base Port Data */ 11106 - DRV_TLV_RX_DISCARDS, 11107 - DRV_TLV_RX_ERRORS, 11108 - DRV_TLV_TX_ERRORS, 11109 - DRV_TLV_TX_DISCARDS, 11110 - DRV_TLV_RX_FRAMES_RECEIVED, 11111 - DRV_TLV_TX_FRAMES_SENT, 11112 - /* Category 23: FC/FCoE Port Data */ 11113 - DRV_TLV_RX_BROADCAST_PACKETS, 11114 - DRV_TLV_TX_BROADCAST_PACKETS, 11115 - /* Category 28: Base Function Data */ 11116 - DRV_TLV_NUM_OFFLOADED_CONNECTIONS_TCP_IPV4, 11117 - DRV_TLV_NUM_OFFLOADED_CONNECTIONS_TCP_IPV6, 11118 - DRV_TLV_TX_DESCRIPTOR_QUEUE_AVG_DEPTH, 11119 - DRV_TLV_RX_DESCRIPTORS_QUEUE_AVG_DEPTH, 11120 - DRV_TLV_PF_RX_FRAMES_RECEIVED, 11121 - DRV_TLV_RX_BYTES_RECEIVED, 11122 - DRV_TLV_PF_TX_FRAMES_SENT, 11123 - DRV_TLV_TX_BYTES_SENT, 11124 - DRV_TLV_IOV_OFFLOAD, 11125 - DRV_TLV_PCI_ERRORS_CAP_ID, 11126 - DRV_TLV_UNCORRECTABLE_ERROR_STATUS, 11127 - DRV_TLV_UNCORRECTABLE_ERROR_MASK, 11128 - DRV_TLV_CORRECTABLE_ERROR_STATUS, 11129 - DRV_TLV_CORRECTABLE_ERROR_MASK, 11130 - DRV_TLV_PCI_ERRORS_AECC_REGISTER, 11131 - DRV_TLV_TX_QUEUES_EMPTY, 11132 - DRV_TLV_RX_QUEUES_EMPTY, 11133 - DRV_TLV_TX_QUEUES_FULL, 11134 - DRV_TLV_RX_QUEUES_FULL, 11135 - /* Category 29: FC/FCoE Function Data */ 11136 - DRV_TLV_FCOE_TX_DESCRIPTOR_QUEUE_AVG_DEPTH, 11137 - DRV_TLV_FCOE_RX_DESCRIPTORS_QUEUE_AVG_DEPTH, 11138 - DRV_TLV_FCOE_RX_FRAMES_RECEIVED, 11139 - DRV_TLV_FCOE_RX_BYTES_RECEIVED, 11140 - DRV_TLV_FCOE_TX_FRAMES_SENT, 11141 - DRV_TLV_FCOE_TX_BYTES_SENT, 11142 - DRV_TLV_CRC_ERROR_COUNT, 11143 - DRV_TLV_CRC_ERROR_1_RECEIVED_SOURCE_FC_ID, 11144 - DRV_TLV_CRC_ERROR_1_TIMESTAMP, 11145 - DRV_TLV_CRC_ERROR_2_RECEIVED_SOURCE_FC_ID, 11146 - DRV_TLV_CRC_ERROR_2_TIMESTAMP, 11147 - DRV_TLV_CRC_ERROR_3_RECEIVED_SOURCE_FC_ID, 11148 - DRV_TLV_CRC_ERROR_3_TIMESTAMP, 11149 - DRV_TLV_CRC_ERROR_4_RECEIVED_SOURCE_FC_ID, 11150 - DRV_TLV_CRC_ERROR_4_TIMESTAMP, 11151 - DRV_TLV_CRC_ERROR_5_RECEIVED_SOURCE_FC_ID, 11152 - DRV_TLV_CRC_ERROR_5_TIMESTAMP, 11153 - DRV_TLV_LOSS_OF_SYNC_ERROR_COUNT, 11154 - DRV_TLV_LOSS_OF_SIGNAL_ERRORS, 11155 - DRV_TLV_PRIMITIVE_SEQUENCE_PROTOCOL_ERROR_COUNT, 11156 - DRV_TLV_DISPARITY_ERROR_COUNT, 11157 - DRV_TLV_CODE_VIOLATION_ERROR_COUNT, 11158 - DRV_TLV_LAST_FLOGI_ISSUED_COMMON_PARAMETERS_WORD_1, 11159 - DRV_TLV_LAST_FLOGI_ISSUED_COMMON_PARAMETERS_WORD_2, 11160 - DRV_TLV_LAST_FLOGI_ISSUED_COMMON_PARAMETERS_WORD_3, 11161 - DRV_TLV_LAST_FLOGI_ISSUED_COMMON_PARAMETERS_WORD_4, 11162 - DRV_TLV_LAST_FLOGI_TIMESTAMP, 11163 - DRV_TLV_LAST_FLOGI_ACC_COMMON_PARAMETERS_WORD_1, 11164 - DRV_TLV_LAST_FLOGI_ACC_COMMON_PARAMETERS_WORD_2, 11165 - DRV_TLV_LAST_FLOGI_ACC_COMMON_PARAMETERS_WORD_3, 11166 - DRV_TLV_LAST_FLOGI_ACC_COMMON_PARAMETERS_WORD_4, 11167 - DRV_TLV_LAST_FLOGI_ACC_TIMESTAMP, 11168 - DRV_TLV_LAST_FLOGI_RJT, 11169 - DRV_TLV_LAST_FLOGI_RJT_TIMESTAMP, 11170 - DRV_TLV_FDISCS_SENT_COUNT, 11171 - DRV_TLV_FDISC_ACCS_RECEIVED, 11172 - DRV_TLV_FDISC_RJTS_RECEIVED, 11173 - DRV_TLV_PLOGI_SENT_COUNT, 11174 - DRV_TLV_PLOGI_ACCS_RECEIVED, 11175 - DRV_TLV_PLOGI_RJTS_RECEIVED, 11176 - DRV_TLV_PLOGI_1_SENT_DESTINATION_FC_ID, 11177 - DRV_TLV_PLOGI_1_TIMESTAMP, 11178 - DRV_TLV_PLOGI_2_SENT_DESTINATION_FC_ID, 11179 - DRV_TLV_PLOGI_2_TIMESTAMP, 11180 - DRV_TLV_PLOGI_3_SENT_DESTINATION_FC_ID, 11181 - DRV_TLV_PLOGI_3_TIMESTAMP, 11182 - DRV_TLV_PLOGI_4_SENT_DESTINATION_FC_ID, 11183 - DRV_TLV_PLOGI_4_TIMESTAMP, 11184 - DRV_TLV_PLOGI_5_SENT_DESTINATION_FC_ID, 11185 - DRV_TLV_PLOGI_5_TIMESTAMP, 11186 - DRV_TLV_PLOGI_1_ACC_RECEIVED_SOURCE_FC_ID, 11187 - DRV_TLV_PLOGI_1_ACC_TIMESTAMP, 11188 - DRV_TLV_PLOGI_2_ACC_RECEIVED_SOURCE_FC_ID, 11189 - DRV_TLV_PLOGI_2_ACC_TIMESTAMP, 11190 - DRV_TLV_PLOGI_3_ACC_RECEIVED_SOURCE_FC_ID, 11191 - DRV_TLV_PLOGI_3_ACC_TIMESTAMP, 11192 - DRV_TLV_PLOGI_4_ACC_RECEIVED_SOURCE_FC_ID, 11193 - DRV_TLV_PLOGI_4_ACC_TIMESTAMP, 11194 - DRV_TLV_PLOGI_5_ACC_RECEIVED_SOURCE_FC_ID, 11195 - DRV_TLV_PLOGI_5_ACC_TIMESTAMP, 11196 - DRV_TLV_LOGOS_ISSUED, 11197 - DRV_TLV_LOGO_ACCS_RECEIVED, 11198 - DRV_TLV_LOGO_RJTS_RECEIVED, 11199 - DRV_TLV_LOGO_1_RECEIVED_SOURCE_FC_ID, 11200 - DRV_TLV_LOGO_1_TIMESTAMP, 11201 - DRV_TLV_LOGO_2_RECEIVED_SOURCE_FC_ID, 11202 - DRV_TLV_LOGO_2_TIMESTAMP, 11203 - DRV_TLV_LOGO_3_RECEIVED_SOURCE_FC_ID, 11204 - DRV_TLV_LOGO_3_TIMESTAMP, 11205 - DRV_TLV_LOGO_4_RECEIVED_SOURCE_FC_ID, 11206 - DRV_TLV_LOGO_4_TIMESTAMP, 11207 - DRV_TLV_LOGO_5_RECEIVED_SOURCE_FC_ID, 11208 - DRV_TLV_LOGO_5_TIMESTAMP, 11209 - DRV_TLV_LOGOS_RECEIVED, 11210 - DRV_TLV_ACCS_ISSUED, 11211 - DRV_TLV_PRLIS_ISSUED, 11212 - DRV_TLV_ACCS_RECEIVED, 11213 - DRV_TLV_ABTS_SENT_COUNT, 11214 - DRV_TLV_ABTS_ACCS_RECEIVED, 11215 - DRV_TLV_ABTS_RJTS_RECEIVED, 11216 - DRV_TLV_ABTS_1_SENT_DESTINATION_FC_ID, 11217 - DRV_TLV_ABTS_1_TIMESTAMP, 11218 - DRV_TLV_ABTS_2_SENT_DESTINATION_FC_ID, 11219 - DRV_TLV_ABTS_2_TIMESTAMP, 11220 - DRV_TLV_ABTS_3_SENT_DESTINATION_FC_ID, 11221 - DRV_TLV_ABTS_3_TIMESTAMP, 11222 - DRV_TLV_ABTS_4_SENT_DESTINATION_FC_ID, 11223 - DRV_TLV_ABTS_4_TIMESTAMP, 11224 - DRV_TLV_ABTS_5_SENT_DESTINATION_FC_ID, 11225 - DRV_TLV_ABTS_5_TIMESTAMP, 11226 - DRV_TLV_RSCNS_RECEIVED, 11227 - DRV_TLV_LAST_RSCN_RECEIVED_N_PORT_1, 11228 - DRV_TLV_LAST_RSCN_RECEIVED_N_PORT_2, 11229 - DRV_TLV_LAST_RSCN_RECEIVED_N_PORT_3, 11230 - DRV_TLV_LAST_RSCN_RECEIVED_N_PORT_4, 11231 - DRV_TLV_LUN_RESETS_ISSUED, 11232 - DRV_TLV_ABORT_TASK_SETS_ISSUED, 11233 - DRV_TLV_TPRLOS_SENT, 11234 - DRV_TLV_NOS_SENT_COUNT, 11235 - DRV_TLV_NOS_RECEIVED_COUNT, 11236 - DRV_TLV_OLS_COUNT, 11237 - DRV_TLV_LR_COUNT, 11238 - DRV_TLV_LRR_COUNT, 11239 - DRV_TLV_LIP_SENT_COUNT, 11240 - DRV_TLV_LIP_RECEIVED_COUNT, 11241 - DRV_TLV_EOFA_COUNT, 11242 - DRV_TLV_EOFNI_COUNT, 11243 - DRV_TLV_SCSI_STATUS_CHECK_CONDITION_COUNT, 11244 - DRV_TLV_SCSI_STATUS_CONDITION_MET_COUNT, 11245 - DRV_TLV_SCSI_STATUS_BUSY_COUNT, 11246 - DRV_TLV_SCSI_STATUS_INTERMEDIATE_COUNT, 11247 - DRV_TLV_SCSI_STATUS_INTERMEDIATE_CONDITION_MET_COUNT, 11248 - DRV_TLV_SCSI_STATUS_RESERVATION_CONFLICT_COUNT, 11249 - DRV_TLV_SCSI_STATUS_TASK_SET_FULL_COUNT, 11250 - DRV_TLV_SCSI_STATUS_ACA_ACTIVE_COUNT, 11251 - DRV_TLV_SCSI_STATUS_TASK_ABORTED_COUNT, 11252 - DRV_TLV_SCSI_CHECK_CONDITION_1_RECEIVED_SK_ASC_ASCQ, 11253 - DRV_TLV_SCSI_CHECK_1_TIMESTAMP, 11254 - DRV_TLV_SCSI_CHECK_CONDITION_2_RECEIVED_SK_ASC_ASCQ, 11255 - DRV_TLV_SCSI_CHECK_2_TIMESTAMP, 11256 - DRV_TLV_SCSI_CHECK_CONDITION_3_RECEIVED_SK_ASC_ASCQ, 11257 - DRV_TLV_SCSI_CHECK_3_TIMESTAMP, 11258 - DRV_TLV_SCSI_CHECK_CONDITION_4_RECEIVED_SK_ASC_ASCQ, 11259 - DRV_TLV_SCSI_CHECK_4_TIMESTAMP, 11260 - DRV_TLV_SCSI_CHECK_CONDITION_5_RECEIVED_SK_ASC_ASCQ, 11261 - DRV_TLV_SCSI_CHECK_5_TIMESTAMP, 11262 - /* Category 30: iSCSI Function Data */ 11263 - DRV_TLV_PDU_TX_DESCRIPTOR_QUEUE_AVG_DEPTH, 11264 - DRV_TLV_PDU_RX_DESCRIPTORS_QUEUE_AVG_DEPTH, 11265 - DRV_TLV_ISCSI_PDU_RX_FRAMES_RECEIVED, 11266 - DRV_TLV_ISCSI_PDU_RX_BYTES_RECEIVED, 11267 - DRV_TLV_ISCSI_PDU_TX_FRAMES_SENT, 11268 - DRV_TLV_ISCSI_PDU_TX_BYTES_SENT 11269 - }; 11270 - 11271 - struct nvm_cfg_mac_address { 11272 - u32 mac_addr_hi; 11273 - #define NVM_CFG_MAC_ADDRESS_HI_MASK 0x0000ffff 11274 - #define NVM_CFG_MAC_ADDRESS_HI_OFFSET 0 11275 - 11276 - u32 mac_addr_lo; 11277 - }; 11278 - 11279 - struct nvm_cfg1_glob { 11280 - u32 generic_cont0; 11281 - #define NVM_CFG1_GLOB_MF_MODE_MASK 0x00000ff0 11282 - #define NVM_CFG1_GLOB_MF_MODE_OFFSET 4 11283 - #define NVM_CFG1_GLOB_MF_MODE_MF_ALLOWED 0x0 11284 - #define NVM_CFG1_GLOB_MF_MODE_DEFAULT 0x1 11285 - #define NVM_CFG1_GLOB_MF_MODE_SPIO4 0x2 11286 - #define NVM_CFG1_GLOB_MF_MODE_NPAR1_0 0x3 11287 - #define NVM_CFG1_GLOB_MF_MODE_NPAR1_5 0x4 11288 - #define NVM_CFG1_GLOB_MF_MODE_NPAR2_0 0x5 11289 - #define NVM_CFG1_GLOB_MF_MODE_BD 0x6 11290 - #define NVM_CFG1_GLOB_MF_MODE_UFP 0x7 11291 - 11292 - u32 engineering_change[3]; 11293 - u32 manufacturing_id; 11294 - u32 serial_number[4]; 11295 - u32 pcie_cfg; 11296 - u32 mgmt_traffic; 11297 - 11298 - u32 core_cfg; 11299 - #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_MASK 0x000000ff 11300 - #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_OFFSET 0 11301 - #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_BB_2X40G 0x0 11302 - #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_2X50G 0x1 11303 - #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_BB_1X100G 0x2 11304 - #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_4X10G_F 0x3 11305 - #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_BB_4X10G_E 0x4 11306 - #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_BB_4X20G 0x5 11307 - #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_1X40G 0xb 11308 - #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_2X25G 0xc 11309 - #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_1X25G 0xd 11310 - #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_4X25G 0xe 11311 - #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_2X10G 0xf 11312 - #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_AHP_2X50G_R1 0x11 11313 - #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_AHP_4X50G_R1 0x12 11314 - #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_AHP_1X100G_R2 0x13 11315 - #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_AHP_2X100G_R2 0x14 11316 - #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_AHP_1X100G_R4 0x15 11317 - 11318 - u32 e_lane_cfg1; 11319 - u32 e_lane_cfg2; 11320 - u32 f_lane_cfg1; 11321 - u32 f_lane_cfg2; 11322 - u32 mps10_preemphasis; 11323 - u32 mps10_driver_current; 11324 - u32 mps25_preemphasis; 11325 - u32 mps25_driver_current; 11326 - u32 pci_id; 11327 - u32 pci_subsys_id; 11328 - u32 bar; 11329 - u32 mps10_txfir_main; 11330 - u32 mps10_txfir_post; 11331 - u32 mps25_txfir_main; 11332 - u32 mps25_txfir_post; 11333 - u32 manufacture_ver; 11334 - u32 manufacture_time; 11335 - u32 led_global_settings; 11336 - u32 generic_cont1; 11337 - 11338 - u32 mbi_version; 11339 - #define NVM_CFG1_GLOB_MBI_VERSION_0_MASK 0x000000ff 11340 - #define NVM_CFG1_GLOB_MBI_VERSION_0_OFFSET 0 11341 - #define NVM_CFG1_GLOB_MBI_VERSION_1_MASK 0x0000ff00 11342 - #define NVM_CFG1_GLOB_MBI_VERSION_1_OFFSET 8 11343 - #define NVM_CFG1_GLOB_MBI_VERSION_2_MASK 0x00ff0000 11344 - #define NVM_CFG1_GLOB_MBI_VERSION_2_OFFSET 16 11345 - 11346 - u32 mbi_date; 11347 - u32 misc_sig; 11348 - 11349 - u32 device_capabilities; 11350 - #define NVM_CFG1_GLOB_DEVICE_CAPABILITIES_ETHERNET 0x1 11351 - #define NVM_CFG1_GLOB_DEVICE_CAPABILITIES_FCOE 0x2 11352 - #define NVM_CFG1_GLOB_DEVICE_CAPABILITIES_ISCSI 0x4 11353 - #define NVM_CFG1_GLOB_DEVICE_CAPABILITIES_ROCE 0x8 11354 - 11355 - u32 power_dissipated; 11356 - u32 power_consumed; 11357 - u32 efi_version; 11358 - u32 multi_net_modes_cap; 11359 - u32 reserved[41]; 11360 - }; 11361 - 11362 - struct nvm_cfg1_path { 11363 - u32 reserved[30]; 11364 - }; 11365 - 11366 - struct nvm_cfg1_port { 11367 - u32 rel_to_opt123; 11368 - u32 rel_to_opt124; 11369 - 11370 - u32 generic_cont0; 11371 - #define NVM_CFG1_PORT_DCBX_MODE_MASK 0x000f0000 11372 - #define NVM_CFG1_PORT_DCBX_MODE_OFFSET 16 11373 - #define NVM_CFG1_PORT_DCBX_MODE_DISABLED 0x0 11374 - #define NVM_CFG1_PORT_DCBX_MODE_IEEE 0x1 11375 - #define NVM_CFG1_PORT_DCBX_MODE_CEE 0x2 11376 - #define NVM_CFG1_PORT_DCBX_MODE_DYNAMIC 0x3 11377 - #define NVM_CFG1_PORT_DEFAULT_ENABLED_PROTOCOLS_MASK 0x00f00000 11378 - #define NVM_CFG1_PORT_DEFAULT_ENABLED_PROTOCOLS_OFFSET 20 11379 - #define NVM_CFG1_PORT_DEFAULT_ENABLED_PROTOCOLS_ETHERNET 0x1 11380 - #define NVM_CFG1_PORT_DEFAULT_ENABLED_PROTOCOLS_FCOE 0x2 11381 - #define NVM_CFG1_PORT_DEFAULT_ENABLED_PROTOCOLS_ISCSI 0x4 11382 - 11383 - u32 pcie_cfg; 11384 - u32 features; 11385 - 11386 - u32 speed_cap_mask; 11387 - #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_MASK 0x0000ffff 11388 - #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_OFFSET 0 11389 - #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_1G 0x1 11390 - #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_10G 0x2 11391 - #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_20G 0x4 11392 - #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_25G 0x8 11393 - #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_40G 0x10 11394 - #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_50G 0x20 11395 - #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_BB_100G 0x40 11396 - 11397 - u32 link_settings; 11398 - #define NVM_CFG1_PORT_DRV_LINK_SPEED_MASK 0x0000000f 11399 - #define NVM_CFG1_PORT_DRV_LINK_SPEED_OFFSET 0 11400 - #define NVM_CFG1_PORT_DRV_LINK_SPEED_AUTONEG 0x0 11401 - #define NVM_CFG1_PORT_DRV_LINK_SPEED_1G 0x1 11402 - #define NVM_CFG1_PORT_DRV_LINK_SPEED_10G 0x2 11403 - #define NVM_CFG1_PORT_DRV_LINK_SPEED_20G 0x3 11404 - #define NVM_CFG1_PORT_DRV_LINK_SPEED_25G 0x4 11405 - #define NVM_CFG1_PORT_DRV_LINK_SPEED_40G 0x5 11406 - #define NVM_CFG1_PORT_DRV_LINK_SPEED_50G 0x6 11407 - #define NVM_CFG1_PORT_DRV_LINK_SPEED_BB_100G 0x7 11408 - #define NVM_CFG1_PORT_DRV_LINK_SPEED_SMARTLINQ 0x8 11409 - #define NVM_CFG1_PORT_DRV_FLOW_CONTROL_MASK 0x00000070 11410 - #define NVM_CFG1_PORT_DRV_FLOW_CONTROL_OFFSET 4 11411 - #define NVM_CFG1_PORT_DRV_FLOW_CONTROL_AUTONEG 0x1 11412 - #define NVM_CFG1_PORT_DRV_FLOW_CONTROL_RX 0x2 11413 - #define NVM_CFG1_PORT_DRV_FLOW_CONTROL_TX 0x4 11414 - #define NVM_CFG1_PORT_FEC_FORCE_MODE_MASK 0x000e0000 11415 - #define NVM_CFG1_PORT_FEC_FORCE_MODE_OFFSET 17 11416 - #define NVM_CFG1_PORT_FEC_FORCE_MODE_NONE 0x0 11417 - #define NVM_CFG1_PORT_FEC_FORCE_MODE_FIRECODE 0x1 11418 - #define NVM_CFG1_PORT_FEC_FORCE_MODE_RS 0x2 11419 - #define NVM_CFG1_PORT_FEC_FORCE_MODE_AUTO 0x7 11420 - 11421 - u32 phy_cfg; 11422 - u32 mgmt_traffic; 11423 - 11424 - u32 ext_phy; 11425 - /* EEE power saving mode */ 11426 - #define NVM_CFG1_PORT_EEE_POWER_SAVING_MODE_MASK 0x00ff0000 11427 - #define NVM_CFG1_PORT_EEE_POWER_SAVING_MODE_OFFSET 16 11428 - #define NVM_CFG1_PORT_EEE_POWER_SAVING_MODE_DISABLED 0x0 11429 - #define NVM_CFG1_PORT_EEE_POWER_SAVING_MODE_BALANCED 0x1 11430 - #define NVM_CFG1_PORT_EEE_POWER_SAVING_MODE_AGGRESSIVE 0x2 11431 - #define NVM_CFG1_PORT_EEE_POWER_SAVING_MODE_LOW_LATENCY 0x3 11432 - 11433 - u32 mba_cfg1; 11434 - u32 mba_cfg2; 11435 - u32 vf_cfg; 11436 - struct nvm_cfg_mac_address lldp_mac_address; 11437 - u32 led_port_settings; 11438 - u32 transceiver_00; 11439 - u32 device_ids; 11440 - 11441 - u32 board_cfg; 11442 - #define NVM_CFG1_PORT_PORT_TYPE_MASK 0x000000ff 11443 - #define NVM_CFG1_PORT_PORT_TYPE_OFFSET 0 11444 - #define NVM_CFG1_PORT_PORT_TYPE_UNDEFINED 0x0 11445 - #define NVM_CFG1_PORT_PORT_TYPE_MODULE 0x1 11446 - #define NVM_CFG1_PORT_PORT_TYPE_BACKPLANE 0x2 11447 - #define NVM_CFG1_PORT_PORT_TYPE_EXT_PHY 0x3 11448 - #define NVM_CFG1_PORT_PORT_TYPE_MODULE_SLAVE 0x4 11449 - 11450 - u32 mnm_10g_cap; 11451 - u32 mnm_10g_ctrl; 11452 - u32 mnm_10g_misc; 11453 - u32 mnm_25g_cap; 11454 - u32 mnm_25g_ctrl; 11455 - u32 mnm_25g_misc; 11456 - u32 mnm_40g_cap; 11457 - u32 mnm_40g_ctrl; 11458 - u32 mnm_40g_misc; 11459 - u32 mnm_50g_cap; 11460 - u32 mnm_50g_ctrl; 11461 - u32 mnm_50g_misc; 11462 - u32 mnm_100g_cap; 11463 - u32 mnm_100g_ctrl; 11464 - u32 mnm_100g_misc; 11465 - 11466 - u32 temperature; 11467 - u32 ext_phy_cfg1; 11468 - 11469 - u32 extended_speed; 11470 - #define NVM_CFG1_PORT_EXTENDED_SPEED_MASK 0x0000ffff 11471 - #define NVM_CFG1_PORT_EXTENDED_SPEED_OFFSET 0 11472 - #define NVM_CFG1_PORT_EXTENDED_SPEED_EXTND_SPD_AN 0x1 11473 - #define NVM_CFG1_PORT_EXTENDED_SPEED_EXTND_SPD_1G 0x2 11474 - #define NVM_CFG1_PORT_EXTENDED_SPEED_EXTND_SPD_10G 0x4 11475 - #define NVM_CFG1_PORT_EXTENDED_SPEED_EXTND_SPD_20G 0x8 11476 - #define NVM_CFG1_PORT_EXTENDED_SPEED_EXTND_SPD_25G 0x10 11477 - #define NVM_CFG1_PORT_EXTENDED_SPEED_EXTND_SPD_40G 0x20 11478 - #define NVM_CFG1_PORT_EXTENDED_SPEED_EXTND_SPD_50G_R 0x40 11479 - #define NVM_CFG1_PORT_EXTENDED_SPEED_EXTND_SPD_50G_R2 0x80 11480 - #define NVM_CFG1_PORT_EXTENDED_SPEED_EXTND_SPD_100G_R2 0x100 11481 - #define NVM_CFG1_PORT_EXTENDED_SPEED_EXTND_SPD_100G_R4 0x200 11482 - #define NVM_CFG1_PORT_EXTENDED_SPEED_EXTND_SPD_100G_P4 0x400 11483 - #define NVM_CFG1_PORT_EXTENDED_SPEED_CAP_MASK 0xffff0000 11484 - #define NVM_CFG1_PORT_EXTENDED_SPEED_CAP_OFFSET 16 11485 - #define NVM_CFG1_PORT_EXTENDED_SPEED_CAP_EXTND_SPD_RESERVED 0x1 11486 - #define NVM_CFG1_PORT_EXTENDED_SPEED_CAP_EXTND_SPD_1G 0x2 11487 - #define NVM_CFG1_PORT_EXTENDED_SPEED_CAP_EXTND_SPD_10G 0x4 11488 - #define NVM_CFG1_PORT_EXTENDED_SPEED_CAP_EXTND_SPD_20G 0x8 11489 - #define NVM_CFG1_PORT_EXTENDED_SPEED_CAP_EXTND_SPD_25G 0x10 11490 - #define NVM_CFG1_PORT_EXTENDED_SPEED_CAP_EXTND_SPD_40G 0x20 11491 - #define NVM_CFG1_PORT_EXTENDED_SPEED_CAP_EXTND_SPD_50G_R 0x40 11492 - #define NVM_CFG1_PORT_EXTENDED_SPEED_CAP_EXTND_SPD_50G_R2 0x80 11493 - #define NVM_CFG1_PORT_EXTENDED_SPEED_CAP_EXTND_SPD_100G_R2 0x100 11494 - #define NVM_CFG1_PORT_EXTENDED_SPEED_CAP_EXTND_SPD_100G_R4 0x200 11495 - #define NVM_CFG1_PORT_EXTENDED_SPEED_CAP_EXTND_SPD_100G_P4 0x400 11496 - 11497 - u32 extended_fec_mode; 11498 - 11499 - u32 reserved[112]; 11500 - }; 11501 - 11502 - struct nvm_cfg1_func { 11503 - struct nvm_cfg_mac_address mac_address; 11504 - u32 rsrv1; 11505 - u32 rsrv2; 11506 - u32 device_id; 11507 - u32 cmn_cfg; 11508 - u32 pci_cfg; 11509 - struct nvm_cfg_mac_address fcoe_node_wwn_mac_addr; 11510 - struct nvm_cfg_mac_address fcoe_port_wwn_mac_addr; 11511 - u32 preboot_generic_cfg; 11512 - u32 reserved[8]; 11513 - }; 11514 - 11515 - struct nvm_cfg1 { 11516 - struct nvm_cfg1_glob glob; 11517 - struct nvm_cfg1_path path[MCP_GLOB_PATH_MAX]; 11518 - struct nvm_cfg1_port port[MCP_GLOB_PORT_MAX]; 11519 - struct nvm_cfg1_func func[MCP_GLOB_FUNC_MAX]; 11520 - }; 11521 - 11522 - enum spad_sections { 11523 - SPAD_SECTION_TRACE, 11524 - SPAD_SECTION_NVM_CFG, 11525 - SPAD_SECTION_PUBLIC, 11526 - SPAD_SECTION_PRIVATE, 11527 - SPAD_SECTION_MAX 11528 - }; 11529 - 11530 - #define MCP_TRACE_SIZE 2048 /* 2kb */ 11531 - 11532 - /* This section is located at a fixed location in the beginning of the 11533 - * scratchpad, to ensure that the MCP trace is not run over during MFW upgrade. 11534 - * All the rest of data has a floating location which differs from version to 11535 - * version, and is pointed by the mcp_meta_data below. 11536 - * Moreover, the spad_layout section is part of the MFW firmware, and is loaded 11537 - * with it from nvram in order to clear this portion. 11538 - */ 11539 - struct static_init { 11540 - u32 num_sections; 11541 - offsize_t sections[SPAD_SECTION_MAX]; 11542 - #define SECTION(_sec_) (*((offsize_t *)(STRUCT_OFFSET(sections[_sec_])))) 11543 - 11544 - struct mcp_trace trace; 11545 - #define MCP_TRACE_P ((struct mcp_trace *)(STRUCT_OFFSET(trace))) 11546 - u8 trace_buffer[MCP_TRACE_SIZE]; 11547 - #define MCP_TRACE_BUF ((u8 *)(STRUCT_OFFSET(trace_buffer))) 11548 - /* running_mfw has the same definition as in nvm_map.h. 11549 - * This bit indicate both the running dir, and the running bundle. 11550 - * It is set once when the LIM is loaded. 11551 - */ 11552 - u32 running_mfw; 11553 - #define RUNNING_MFW (*((u32 *)(STRUCT_OFFSET(running_mfw)))) 11554 - u32 build_time; 11555 - #define MFW_BUILD_TIME (*((u32 *)(STRUCT_OFFSET(build_time)))) 11556 - u32 reset_type; 11557 - #define RESET_TYPE (*((u32 *)(STRUCT_OFFSET(reset_type)))) 11558 - u32 mfw_secure_mode; 11559 - #define MFW_SECURE_MODE (*((u32 *)(STRUCT_OFFSET(mfw_secure_mode)))) 11560 - u16 pme_status_pf_bitmap; 11561 - #define PME_STATUS_PF_BITMAP (*((u16 *)(STRUCT_OFFSET(pme_status_pf_bitmap)))) 11562 - u16 pme_enable_pf_bitmap; 11563 - #define PME_ENABLE_PF_BITMAP (*((u16 *)(STRUCT_OFFSET(pme_enable_pf_bitmap)))) 11564 - u32 mim_nvm_addr; 11565 - u32 mim_start_addr; 11566 - u32 ah_pcie_link_params; 11567 - #define AH_PCIE_LINK_PARAMS_LINK_SPEED_MASK (0x000000ff) 11568 - #define AH_PCIE_LINK_PARAMS_LINK_SPEED_SHIFT (0) 11569 - #define AH_PCIE_LINK_PARAMS_LINK_WIDTH_MASK (0x0000ff00) 11570 - #define AH_PCIE_LINK_PARAMS_LINK_WIDTH_SHIFT (8) 11571 - #define AH_PCIE_LINK_PARAMS_ASPM_MODE_MASK (0x00ff0000) 11572 - #define AH_PCIE_LINK_PARAMS_ASPM_MODE_SHIFT (16) 11573 - #define AH_PCIE_LINK_PARAMS_ASPM_CAP_MASK (0xff000000) 11574 - #define AH_PCIE_LINK_PARAMS_ASPM_CAP_SHIFT (24) 11575 - #define AH_PCIE_LINK_PARAMS (*((u32 *)(STRUCT_OFFSET(ah_pcie_link_params)))) 11576 - 11577 - u32 rsrv_persist[5]; /* Persist reserved for MFW upgrades */ 11578 - }; 11579 - 11580 - #define NVM_MAGIC_VALUE 0x669955aa 11581 - 11582 - enum nvm_image_type { 11583 - NVM_TYPE_TIM1 = 0x01, 11584 - NVM_TYPE_TIM2 = 0x02, 11585 - NVM_TYPE_MIM1 = 0x03, 11586 - NVM_TYPE_MIM2 = 0x04, 11587 - NVM_TYPE_MBA = 0x05, 11588 - NVM_TYPE_MODULES_PN = 0x06, 11589 - NVM_TYPE_VPD = 0x07, 11590 - NVM_TYPE_MFW_TRACE1 = 0x08, 11591 - NVM_TYPE_MFW_TRACE2 = 0x09, 11592 - NVM_TYPE_NVM_CFG1 = 0x0a, 11593 - NVM_TYPE_L2B = 0x0b, 11594 - NVM_TYPE_DIR1 = 0x0c, 11595 - NVM_TYPE_EAGLE_FW1 = 0x0d, 11596 - NVM_TYPE_FALCON_FW1 = 0x0e, 11597 - NVM_TYPE_PCIE_FW1 = 0x0f, 11598 - NVM_TYPE_HW_SET = 0x10, 11599 - NVM_TYPE_LIM = 0x11, 11600 - NVM_TYPE_AVS_FW1 = 0x12, 11601 - NVM_TYPE_DIR2 = 0x13, 11602 - NVM_TYPE_CCM = 0x14, 11603 - NVM_TYPE_EAGLE_FW2 = 0x15, 11604 - NVM_TYPE_FALCON_FW2 = 0x16, 11605 - NVM_TYPE_PCIE_FW2 = 0x17, 11606 - NVM_TYPE_AVS_FW2 = 0x18, 11607 - NVM_TYPE_INIT_HW = 0x19, 11608 - NVM_TYPE_DEFAULT_CFG = 0x1a, 11609 - NVM_TYPE_MDUMP = 0x1b, 11610 - NVM_TYPE_META = 0x1c, 11611 - NVM_TYPE_ISCSI_CFG = 0x1d, 11612 - NVM_TYPE_FCOE_CFG = 0x1f, 11613 - NVM_TYPE_ETH_PHY_FW1 = 0x20, 11614 - NVM_TYPE_ETH_PHY_FW2 = 0x21, 11615 - NVM_TYPE_BDN = 0x22, 11616 - NVM_TYPE_8485X_PHY_FW = 0x23, 11617 - NVM_TYPE_PUB_KEY = 0x24, 11618 - NVM_TYPE_RECOVERY = 0x25, 11619 - NVM_TYPE_PLDM = 0x26, 11620 - NVM_TYPE_UPK1 = 0x27, 11621 - NVM_TYPE_UPK2 = 0x28, 11622 - NVM_TYPE_MASTER_KC = 0x29, 11623 - NVM_TYPE_BACKUP_KC = 0x2a, 11624 - NVM_TYPE_HW_DUMP = 0x2b, 11625 - NVM_TYPE_HW_DUMP_OUT = 0x2c, 11626 - NVM_TYPE_BIN_NVM_META = 0x30, 11627 - NVM_TYPE_ROM_TEST = 0xf0, 11628 - NVM_TYPE_88X33X0_PHY_FW = 0x31, 11629 - NVM_TYPE_88X33X0_PHY_SLAVE_FW = 0x32, 11630 - NVM_TYPE_MAX, 11631 - }; 11632 - 11633 - #define DIR_ID_1 (0) 11634 11521 11635 11522 #endif
+1
drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c
··· 13 13 #include "qed_hsi.h" 14 14 #include "qed_hw.h" 15 15 #include "qed_init_ops.h" 16 + #include "qed_iro_hsi.h" 16 17 #include "qed_reg_addr.h" 17 18 18 19 #define CDU_VALIDATION_DEFAULT_CFG 61
+339
drivers/net/ethernet/qlogic/qed/qed_iro_hsi.h
··· 1 + /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */ 2 + /* QLogic qed NIC Driver 3 + * Copyright (c) 2019-2021 Marvell International Ltd. 4 + */ 5 + 6 + #ifndef _QED_IRO_HSI_H 7 + #define _QED_IRO_HSI_H 8 + 9 + #include <linux/types.h> 10 + 11 + /* Ystorm flow control mode. Use enum fw_flow_ctrl_mode */ 12 + #define YSTORM_FLOW_CONTROL_MODE_OFFSET (IRO[0].base) 13 + #define YSTORM_FLOW_CONTROL_MODE_SIZE (IRO[0].size) 14 + 15 + /* Tstorm port statistics */ 16 + #define TSTORM_PORT_STAT_OFFSET(port_id) \ 17 + (IRO[1].base + ((port_id) * IRO[1].m1)) 18 + #define TSTORM_PORT_STAT_SIZE (IRO[1].size) 19 + 20 + /* Tstorm ll2 port statistics */ 21 + #define TSTORM_LL2_PORT_STAT_OFFSET(port_id) \ 22 + (IRO[2].base + ((port_id) * IRO[2].m1)) 23 + #define TSTORM_LL2_PORT_STAT_SIZE (IRO[2].size) 24 + 25 + /* Ustorm VF-PF Channel ready flag */ 26 + #define USTORM_VF_PF_CHANNEL_READY_OFFSET(vf_id) \ 27 + (IRO[3].base + ((vf_id) * IRO[3].m1)) 28 + #define USTORM_VF_PF_CHANNEL_READY_SIZE (IRO[3].size) 29 + 30 + /* Ustorm Final flr cleanup ack */ 31 + #define USTORM_FLR_FINAL_ACK_OFFSET(pf_id) \ 32 + (IRO[4].base + ((pf_id) * IRO[4].m1)) 33 + #define USTORM_FLR_FINAL_ACK_SIZE (IRO[4].size) 34 + 35 + /* Ustorm Event ring consumer */ 36 + #define USTORM_EQE_CONS_OFFSET(pf_id) \ 37 + (IRO[5].base + ((pf_id) * IRO[5].m1)) 38 + #define USTORM_EQE_CONS_SIZE (IRO[5].size) 39 + 40 + /* Ustorm eth queue zone */ 41 + #define USTORM_ETH_QUEUE_ZONE_OFFSET(queue_zone_id) \ 42 + (IRO[6].base + ((queue_zone_id) * IRO[6].m1)) 43 + #define USTORM_ETH_QUEUE_ZONE_SIZE (IRO[6].size) 44 + 45 + /* Ustorm Common Queue ring consumer */ 46 + #define USTORM_COMMON_QUEUE_CONS_OFFSET(queue_zone_id) \ 47 + (IRO[7].base + ((queue_zone_id) * IRO[7].m1)) 48 + #define USTORM_COMMON_QUEUE_CONS_SIZE (IRO[7].size) 49 + 50 + /* Xstorm common PQ info */ 51 + #define XSTORM_PQ_INFO_OFFSET(pq_id) \ 52 + (IRO[8].base + ((pq_id) * IRO[8].m1)) 53 + #define XSTORM_PQ_INFO_SIZE (IRO[8].size) 54 + 55 + /* Xstorm Integration Test Data */ 56 + #define XSTORM_INTEG_TEST_DATA_OFFSET (IRO[9].base) 57 + #define XSTORM_INTEG_TEST_DATA_SIZE (IRO[9].size) 58 + 59 + /* Ystorm Integration Test Data */ 60 + #define YSTORM_INTEG_TEST_DATA_OFFSET (IRO[10].base) 61 + #define YSTORM_INTEG_TEST_DATA_SIZE (IRO[10].size) 62 + 63 + /* Pstorm Integration Test Data */ 64 + #define PSTORM_INTEG_TEST_DATA_OFFSET (IRO[11].base) 65 + #define PSTORM_INTEG_TEST_DATA_SIZE (IRO[11].size) 66 + 67 + /* Tstorm Integration Test Data */ 68 + #define TSTORM_INTEG_TEST_DATA_OFFSET (IRO[12].base) 69 + #define TSTORM_INTEG_TEST_DATA_SIZE (IRO[12].size) 70 + 71 + /* Mstorm Integration Test Data */ 72 + #define MSTORM_INTEG_TEST_DATA_OFFSET (IRO[13].base) 73 + #define MSTORM_INTEG_TEST_DATA_SIZE (IRO[13].size) 74 + 75 + /* Ustorm Integration Test Data */ 76 + #define USTORM_INTEG_TEST_DATA_OFFSET (IRO[14].base) 77 + #define USTORM_INTEG_TEST_DATA_SIZE (IRO[14].size) 78 + 79 + /* Xstorm overlay buffer host address */ 80 + #define XSTORM_OVERLAY_BUF_ADDR_OFFSET (IRO[15].base) 81 + #define XSTORM_OVERLAY_BUF_ADDR_SIZE (IRO[15].size) 82 + 83 + /* Ystorm overlay buffer host address */ 84 + #define YSTORM_OVERLAY_BUF_ADDR_OFFSET (IRO[16].base) 85 + #define YSTORM_OVERLAY_BUF_ADDR_SIZE (IRO[16].size) 86 + 87 + /* Pstorm overlay buffer host address */ 88 + #define PSTORM_OVERLAY_BUF_ADDR_OFFSET (IRO[17].base) 89 + #define PSTORM_OVERLAY_BUF_ADDR_SIZE (IRO[17].size) 90 + 91 + /* Tstorm overlay buffer host address */ 92 + #define TSTORM_OVERLAY_BUF_ADDR_OFFSET (IRO[18].base) 93 + #define TSTORM_OVERLAY_BUF_ADDR_SIZE (IRO[18].size) 94 + 95 + /* Mstorm overlay buffer host address */ 96 + #define MSTORM_OVERLAY_BUF_ADDR_OFFSET (IRO[19].base) 97 + #define MSTORM_OVERLAY_BUF_ADDR_SIZE (IRO[19].size) 98 + 99 + /* Ustorm overlay buffer host address */ 100 + #define USTORM_OVERLAY_BUF_ADDR_OFFSET (IRO[20].base) 101 + #define USTORM_OVERLAY_BUF_ADDR_SIZE (IRO[20].size) 102 + 103 + /* Tstorm producers */ 104 + #define TSTORM_LL2_RX_PRODS_OFFSET(core_rx_queue_id) \ 105 + (IRO[21].base + ((core_rx_queue_id) * IRO[21].m1)) 106 + #define TSTORM_LL2_RX_PRODS_SIZE (IRO[21].size) 107 + 108 + /* Tstorm LightL2 queue statistics */ 109 + #define CORE_LL2_TSTORM_PER_QUEUE_STAT_OFFSET(core_rx_queue_id) \ 110 + (IRO[22].base + ((core_rx_queue_id) * IRO[22].m1)) 111 + #define CORE_LL2_TSTORM_PER_QUEUE_STAT_SIZE (IRO[22].size) 112 + 113 + /* Ustorm LiteL2 queue statistics */ 114 + #define CORE_LL2_USTORM_PER_QUEUE_STAT_OFFSET(core_rx_queue_id) \ 115 + (IRO[23].base + ((core_rx_queue_id) * IRO[23].m1)) 116 + #define CORE_LL2_USTORM_PER_QUEUE_STAT_SIZE (IRO[23].size) 117 + 118 + /* Pstorm LiteL2 queue statistics */ 119 + #define CORE_LL2_PSTORM_PER_QUEUE_STAT_OFFSET(core_tx_stats_id) \ 120 + (IRO[24].base + ((core_tx_stats_id) * IRO[24].m1)) 121 + #define CORE_LL2_PSTORM_PER_QUEUE_STAT_SIZE (IRO[24].size) 122 + 123 + /* Mstorm queue statistics */ 124 + #define MSTORM_QUEUE_STAT_OFFSET(stat_counter_id) \ 125 + (IRO[25].base + ((stat_counter_id) * IRO[25].m1)) 126 + #define MSTORM_QUEUE_STAT_SIZE (IRO[25].size) 127 + 128 + /* TPA agregation timeout in us resolution (on ASIC) */ 129 + #define MSTORM_TPA_TIMEOUT_US_OFFSET (IRO[26].base) 130 + #define MSTORM_TPA_TIMEOUT_US_SIZE (IRO[26].size) 131 + 132 + /* Mstorm ETH VF queues producers offset in RAM. Used in default VF zone size 133 + * mode 134 + */ 135 + #define MSTORM_ETH_VF_PRODS_OFFSET(vf_id, vf_queue_id) \ 136 + (IRO[27].base + ((vf_id) * IRO[27].m1) + ((vf_queue_id) * IRO[27].m2)) 137 + #define MSTORM_ETH_VF_PRODS_SIZE (IRO[27].size) 138 + 139 + /* Mstorm ETH PF queues producers */ 140 + #define MSTORM_ETH_PF_PRODS_OFFSET(queue_id) \ 141 + (IRO[28].base + ((queue_id) * IRO[28].m1)) 142 + #define MSTORM_ETH_PF_PRODS_SIZE (IRO[28].size) 143 + 144 + /* Mstorm pf statistics */ 145 + #define MSTORM_ETH_PF_STAT_OFFSET(pf_id) \ 146 + (IRO[29].base + ((pf_id) * IRO[29].m1)) 147 + #define MSTORM_ETH_PF_STAT_SIZE (IRO[29].size) 148 + 149 + /* Ustorm queue statistics */ 150 + #define USTORM_QUEUE_STAT_OFFSET(stat_counter_id) \ 151 + (IRO[30].base + ((stat_counter_id) * IRO[30].m1)) 152 + #define USTORM_QUEUE_STAT_SIZE (IRO[30].size) 153 + 154 + /* Ustorm pf statistics */ 155 + #define USTORM_ETH_PF_STAT_OFFSET(pf_id) \ 156 + (IRO[31].base + ((pf_id) * IRO[31].m1)) 157 + #define USTORM_ETH_PF_STAT_SIZE (IRO[31].size) 158 + 159 + /* Pstorm queue statistics */ 160 + #define PSTORM_QUEUE_STAT_OFFSET(stat_counter_id) \ 161 + (IRO[32].base + ((stat_counter_id) * IRO[32].m1)) 162 + #define PSTORM_QUEUE_STAT_SIZE (IRO[32].size) 163 + 164 + /* Pstorm pf statistics */ 165 + #define PSTORM_ETH_PF_STAT_OFFSET(pf_id) \ 166 + (IRO[33].base + ((pf_id) * IRO[33].m1)) 167 + #define PSTORM_ETH_PF_STAT_SIZE (IRO[33].size) 168 + 169 + /* Control frame's EthType configuration for TX control frame security */ 170 + #define PSTORM_CTL_FRAME_ETHTYPE_OFFSET(eth_type_id) \ 171 + (IRO[34].base + ((eth_type_id) * IRO[34].m1)) 172 + #define PSTORM_CTL_FRAME_ETHTYPE_SIZE (IRO[34].size) 173 + 174 + /* Tstorm last parser message */ 175 + #define TSTORM_ETH_PRS_INPUT_OFFSET (IRO[35].base) 176 + #define TSTORM_ETH_PRS_INPUT_SIZE (IRO[35].size) 177 + 178 + /* Tstorm Eth limit Rx rate */ 179 + #define ETH_RX_RATE_LIMIT_OFFSET(pf_id) \ 180 + (IRO[36].base + ((pf_id) * IRO[36].m1)) 181 + #define ETH_RX_RATE_LIMIT_SIZE (IRO[36].size) 182 + 183 + /* RSS indirection table entry update command per PF offset in TSTORM PF BAR0. 184 + * Use eth_tstorm_rss_update_data for update 185 + */ 186 + #define TSTORM_ETH_RSS_UPDATE_OFFSET(pf_id) \ 187 + (IRO[37].base + ((pf_id) * IRO[37].m1)) 188 + #define TSTORM_ETH_RSS_UPDATE_SIZE (IRO[37].size) 189 + 190 + /* Xstorm queue zone */ 191 + #define XSTORM_ETH_QUEUE_ZONE_OFFSET(queue_id) \ 192 + (IRO[38].base + ((queue_id) * IRO[38].m1)) 193 + #define XSTORM_ETH_QUEUE_ZONE_SIZE (IRO[38].size) 194 + 195 + /* Ystorm cqe producer */ 196 + #define YSTORM_TOE_CQ_PROD_OFFSET(rss_id) \ 197 + (IRO[39].base + ((rss_id) * IRO[39].m1)) 198 + #define YSTORM_TOE_CQ_PROD_SIZE (IRO[39].size) 199 + 200 + /* Ustorm cqe producer */ 201 + #define USTORM_TOE_CQ_PROD_OFFSET(rss_id) \ 202 + (IRO[40].base + ((rss_id) * IRO[40].m1)) 203 + #define USTORM_TOE_CQ_PROD_SIZE (IRO[40].size) 204 + 205 + /* Ustorm grq producer */ 206 + #define USTORM_TOE_GRQ_PROD_OFFSET(pf_id) \ 207 + (IRO[41].base + ((pf_id) * IRO[41].m1)) 208 + #define USTORM_TOE_GRQ_PROD_SIZE (IRO[41].size) 209 + 210 + /* Tstorm cmdq-cons of given command queue-id */ 211 + #define TSTORM_SCSI_CMDQ_CONS_OFFSET(cmdq_queue_id) \ 212 + (IRO[42].base + ((cmdq_queue_id) * IRO[42].m1)) 213 + #define TSTORM_SCSI_CMDQ_CONS_SIZE (IRO[42].size) 214 + 215 + /* Tstorm (reflects M-Storm) bdq-external-producer of given function ID, 216 + * BDqueue-id 217 + */ 218 + #define TSTORM_SCSI_BDQ_EXT_PROD_OFFSET(storage_func_id, bdq_id) \ 219 + (IRO[43].base + ((storage_func_id) * IRO[43].m1) + \ 220 + ((bdq_id) * IRO[43].m2)) 221 + #define TSTORM_SCSI_BDQ_EXT_PROD_SIZE (IRO[43].size) 222 + 223 + /* Mstorm bdq-external-producer of given BDQ resource ID, BDqueue-id */ 224 + #define MSTORM_SCSI_BDQ_EXT_PROD_OFFSET(storage_func_id, bdq_id) \ 225 + (IRO[44].base + ((storage_func_id) * IRO[44].m1) + \ 226 + ((bdq_id) * IRO[44].m2)) 227 + #define MSTORM_SCSI_BDQ_EXT_PROD_SIZE (IRO[44].size) 228 + 229 + /* Tstorm iSCSI RX stats */ 230 + #define TSTORM_ISCSI_RX_STATS_OFFSET(storage_func_id) \ 231 + (IRO[45].base + ((storage_func_id) * IRO[45].m1)) 232 + #define TSTORM_ISCSI_RX_STATS_SIZE (IRO[45].size) 233 + 234 + /* Mstorm iSCSI RX stats */ 235 + #define MSTORM_ISCSI_RX_STATS_OFFSET(storage_func_id) \ 236 + (IRO[46].base + ((storage_func_id) * IRO[46].m1)) 237 + #define MSTORM_ISCSI_RX_STATS_SIZE (IRO[46].size) 238 + 239 + /* Ustorm iSCSI RX stats */ 240 + #define USTORM_ISCSI_RX_STATS_OFFSET(storage_func_id) \ 241 + (IRO[47].base + ((storage_func_id) * IRO[47].m1)) 242 + #define USTORM_ISCSI_RX_STATS_SIZE (IRO[47].size) 243 + 244 + /* Xstorm iSCSI TX stats */ 245 + #define XSTORM_ISCSI_TX_STATS_OFFSET(storage_func_id) \ 246 + (IRO[48].base + ((storage_func_id) * IRO[48].m1)) 247 + #define XSTORM_ISCSI_TX_STATS_SIZE (IRO[48].size) 248 + 249 + /* Ystorm iSCSI TX stats */ 250 + #define YSTORM_ISCSI_TX_STATS_OFFSET(storage_func_id) \ 251 + (IRO[49].base + ((storage_func_id) * IRO[49].m1)) 252 + #define YSTORM_ISCSI_TX_STATS_SIZE (IRO[49].size) 253 + 254 + /* Pstorm iSCSI TX stats */ 255 + #define PSTORM_ISCSI_TX_STATS_OFFSET(storage_func_id) \ 256 + (IRO[50].base + ((storage_func_id) * IRO[50].m1)) 257 + #define PSTORM_ISCSI_TX_STATS_SIZE (IRO[50].size) 258 + 259 + /* Tstorm FCoE RX stats */ 260 + #define TSTORM_FCOE_RX_STATS_OFFSET(pf_id) \ 261 + (IRO[51].base + ((pf_id) * IRO[51].m1)) 262 + #define TSTORM_FCOE_RX_STATS_SIZE (IRO[51].size) 263 + 264 + /* Pstorm FCoE TX stats */ 265 + #define PSTORM_FCOE_TX_STATS_OFFSET(pf_id) \ 266 + (IRO[52].base + ((pf_id) * IRO[52].m1)) 267 + #define PSTORM_FCOE_TX_STATS_SIZE (IRO[52].size) 268 + 269 + /* Pstorm RDMA queue statistics */ 270 + #define PSTORM_RDMA_QUEUE_STAT_OFFSET(rdma_stat_counter_id) \ 271 + (IRO[53].base + ((rdma_stat_counter_id) * IRO[53].m1)) 272 + #define PSTORM_RDMA_QUEUE_STAT_SIZE (IRO[53].size) 273 + 274 + /* Tstorm RDMA queue statistics */ 275 + #define TSTORM_RDMA_QUEUE_STAT_OFFSET(rdma_stat_counter_id) \ 276 + (IRO[54].base + ((rdma_stat_counter_id) * IRO[54].m1)) 277 + #define TSTORM_RDMA_QUEUE_STAT_SIZE (IRO[54].size) 278 + 279 + /* Xstorm error level for assert */ 280 + #define XSTORM_RDMA_ASSERT_LEVEL_OFFSET(pf_id) \ 281 + (IRO[55].base + ((pf_id) * IRO[55].m1)) 282 + #define XSTORM_RDMA_ASSERT_LEVEL_SIZE (IRO[55].size) 283 + 284 + /* Ystorm error level for assert */ 285 + #define YSTORM_RDMA_ASSERT_LEVEL_OFFSET(pf_id) \ 286 + (IRO[56].base + ((pf_id) * IRO[56].m1)) 287 + #define YSTORM_RDMA_ASSERT_LEVEL_SIZE (IRO[56].size) 288 + 289 + /* Pstorm error level for assert */ 290 + #define PSTORM_RDMA_ASSERT_LEVEL_OFFSET(pf_id) \ 291 + (IRO[57].base + ((pf_id) * IRO[57].m1)) 292 + #define PSTORM_RDMA_ASSERT_LEVEL_SIZE (IRO[57].size) 293 + 294 + /* Tstorm error level for assert */ 295 + #define TSTORM_RDMA_ASSERT_LEVEL_OFFSET(pf_id) \ 296 + (IRO[58].base + ((pf_id) * IRO[58].m1)) 297 + #define TSTORM_RDMA_ASSERT_LEVEL_SIZE (IRO[58].size) 298 + 299 + /* Mstorm error level for assert */ 300 + #define MSTORM_RDMA_ASSERT_LEVEL_OFFSET(pf_id) \ 301 + (IRO[59].base + ((pf_id) * IRO[59].m1)) 302 + #define MSTORM_RDMA_ASSERT_LEVEL_SIZE (IRO[59].size) 303 + 304 + /* Ustorm error level for assert */ 305 + #define USTORM_RDMA_ASSERT_LEVEL_OFFSET(pf_id) \ 306 + (IRO[60].base + ((pf_id) * IRO[60].m1)) 307 + #define USTORM_RDMA_ASSERT_LEVEL_SIZE (IRO[60].size) 308 + 309 + /* Xstorm iWARP rxmit stats */ 310 + #define XSTORM_IWARP_RXMIT_STATS_OFFSET(pf_id) \ 311 + (IRO[61].base + ((pf_id) * IRO[61].m1)) 312 + #define XSTORM_IWARP_RXMIT_STATS_SIZE (IRO[61].size) 313 + 314 + /* Tstorm RoCE Event Statistics */ 315 + #define TSTORM_ROCE_EVENTS_STAT_OFFSET(roce_pf_id) \ 316 + (IRO[62].base + ((roce_pf_id) * IRO[62].m1)) 317 + #define TSTORM_ROCE_EVENTS_STAT_SIZE (IRO[62].size) 318 + 319 + /* DCQCN Received Statistics */ 320 + #define YSTORM_ROCE_DCQCN_RECEIVED_STATS_OFFSET(roce_pf_id)\ 321 + (IRO[63].base + ((roce_pf_id) * IRO[63].m1)) 322 + #define YSTORM_ROCE_DCQCN_RECEIVED_STATS_SIZE (IRO[63].size) 323 + 324 + /* RoCE Error Statistics */ 325 + #define YSTORM_ROCE_ERROR_STATS_OFFSET(roce_pf_id) \ 326 + (IRO[64].base + ((roce_pf_id) * IRO[64].m1)) 327 + #define YSTORM_ROCE_ERROR_STATS_SIZE (IRO[64].size) 328 + 329 + /* DCQCN Sent Statistics */ 330 + #define PSTORM_ROCE_DCQCN_SENT_STATS_OFFSET(roce_pf_id) \ 331 + (IRO[65].base + ((roce_pf_id) * IRO[65].m1)) 332 + #define PSTORM_ROCE_DCQCN_SENT_STATS_SIZE (IRO[65].size) 333 + 334 + /* RoCE CQEs Statistics */ 335 + #define USTORM_ROCE_CQE_STATS_OFFSET(roce_pf_id) \ 336 + (IRO[66].base + ((roce_pf_id) * IRO[66].m1)) 337 + #define USTORM_ROCE_CQE_STATS_SIZE (IRO[66].size) 338 + 339 + #endif
+1
drivers/net/ethernet/qlogic/qed/qed_iscsi.c
··· 29 29 #include "qed_hsi.h" 30 30 #include "qed_hw.h" 31 31 #include "qed_int.h" 32 + #include "qed_iro_hsi.h" 32 33 #include "qed_iscsi.h" 33 34 #include "qed_ll2.h" 34 35 #include "qed_mcp.h"
+1
drivers/net/ethernet/qlogic/qed/qed_l2.c
··· 28 28 #include "qed_dev_api.h" 29 29 #include <linux/qed/qed_eth_if.h> 30 30 #include "qed_hsi.h" 31 + #include "qed_iro_hsi.h" 31 32 #include "qed_hw.h" 32 33 #include "qed_int.h" 33 34 #include "qed_l2.h"
+4 -3
drivers/net/ethernet/qlogic/qed/qed_ll2.c
··· 28 28 #include "qed_cxt.h" 29 29 #include "qed_dev_api.h" 30 30 #include "qed_hsi.h" 31 + #include "qed_iro_hsi.h" 31 32 #include "qed_hw.h" 32 33 #include "qed_int.h" 33 34 #include "qed_ll2.h" ··· 107 106 } 108 107 109 108 static int qed_ll2_dealloc_buffer(struct qed_dev *cdev, 110 - struct qed_ll2_buffer *buffer) 109 + struct qed_ll2_buffer *buffer) 111 110 { 112 111 spin_lock_bh(&cdev->ll2->lock); 113 112 ··· 1125 1124 struct qed_spq_entry *p_ent = NULL; 1126 1125 struct qed_sp_init_data init_data; 1127 1126 int rc = -EINVAL; 1127 + 1128 1128 qed_db_recovery_del(p_hwfn->cdev, p_tx->doorbell_addr, &p_tx->db_msg); 1129 1129 1130 1130 /* Get SPQ entry */ ··· 1764 1762 } 1765 1763 } 1766 1764 1767 - /* If we're lacking entires, let's try to flush buffers to FW */ 1765 + /* If we're lacking entries, let's try to flush buffers to FW */ 1768 1766 if (!p_curp || !p_curb) { 1769 1767 rc = -EBUSY; 1770 1768 p_curp = NULL; ··· 2611 2609 DP_NOTICE(cdev, "Failed to add an LLH filter\n"); 2612 2610 goto err3; 2613 2611 } 2614 - 2615 2612 } 2616 2613 2617 2614 ether_addr_copy(cdev->ll2_mac_address, params->ll2_mac_address);
-1
drivers/net/ethernet/qlogic/qed/qed_ll2.h
··· 32 32 #define QED_LL2_LEGACY_CONN_BASE_PF 0 33 33 #define QED_LL2_CTX_CONN_BASE_PF QED_MAX_NUM_OF_LEGACY_LL2_CONNS_PF 34 34 35 - 36 35 struct qed_ll2_rx_packet { 37 36 struct list_head list_entry; 38 37 struct core_rx_bd_with_buff_len *rxq_bd;
+1
drivers/net/ethernet/qlogic/qed/qed_mcp.c
··· 17 17 #include "qed_cxt.h" 18 18 #include "qed_dcbx.h" 19 19 #include "qed_hsi.h" 20 + #include "qed_mfw_hsi.h" 20 21 #include "qed_hw.h" 21 22 #include "qed_mcp.h" 22 23 #include "qed_reg_addr.h"
+1928
drivers/net/ethernet/qlogic/qed/qed_mfw_hsi.h
··· 1 + /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */ 2 + /* QLogic qed NIC Driver 3 + * Copyright (c) 2019-2021 Marvell International Ltd. 4 + */ 5 + 6 + #ifndef _QED_MFW_HSI_H 7 + #define _QED_MFW_HSI_H 8 + 9 + #define MFW_TRACE_SIGNATURE 0x25071946 10 + 11 + /* The trace in the buffer */ 12 + #define MFW_TRACE_EVENTID_MASK 0x00ffff 13 + #define MFW_TRACE_PRM_SIZE_MASK 0x0f0000 14 + #define MFW_TRACE_PRM_SIZE_OFFSET 16 15 + #define MFW_TRACE_ENTRY_SIZE 3 16 + 17 + struct mcp_trace { 18 + u32 signature; /* Help to identify that the trace is valid */ 19 + u32 size; /* the size of the trace buffer in bytes */ 20 + u32 curr_level; /* 2 - all will be written to the buffer 21 + * 1 - debug trace will not be written 22 + * 0 - just errors will be written to the buffer 23 + */ 24 + u32 modules_mask[2]; /* a bit per module, 1 means write it, 0 means 25 + * mask it. 26 + */ 27 + 28 + /* Warning: the following pointers are assumed to be 32bits as they are 29 + * used only in the MFW. 30 + */ 31 + u32 trace_prod; /* The next trace will be written to this offset */ 32 + u32 trace_oldest; /* The oldest valid trace starts at this offset 33 + * (usually very close after the current producer). 34 + */ 35 + }; 36 + 37 + #define VF_MAX_STATIC 192 38 + 39 + #define MCP_GLOB_PATH_MAX 2 40 + #define MCP_PORT_MAX 2 41 + #define MCP_GLOB_PORT_MAX 4 42 + #define MCP_GLOB_FUNC_MAX 16 43 + 44 + typedef u32 offsize_t; /* In DWORDS !!! */ 45 + /* Offset from the beginning of the MCP scratchpad */ 46 + #define OFFSIZE_OFFSET_SHIFT 0 47 + #define OFFSIZE_OFFSET_MASK 0x0000ffff 48 + /* Size of specific element (not the whole array if any) */ 49 + #define OFFSIZE_SIZE_SHIFT 16 50 + #define OFFSIZE_SIZE_MASK 0xffff0000 51 + 52 + #define SECTION_OFFSET(_offsize) (((((_offsize) & \ 53 + OFFSIZE_OFFSET_MASK) >> \ 54 + OFFSIZE_OFFSET_SHIFT) << 2)) 55 + 56 + #define QED_SECTION_SIZE(_offsize) ((((_offsize) & \ 57 + OFFSIZE_SIZE_MASK) >> \ 58 + OFFSIZE_SIZE_SHIFT) << 2) 59 + 60 + #define SECTION_ADDR(_offsize, idx) (MCP_REG_SCRATCH + \ 61 + SECTION_OFFSET((_offsize)) + \ 62 + (QED_SECTION_SIZE((_offsize)) * (idx))) 63 + 64 + #define SECTION_OFFSIZE_ADDR(_pub_base, _section) \ 65 + ((_pub_base) + offsetof(struct mcp_public_data, sections[_section])) 66 + 67 + /* PHY configuration */ 68 + struct eth_phy_cfg { 69 + u32 speed; 70 + #define ETH_SPEED_AUTONEG 0x0 71 + #define ETH_SPEED_SMARTLINQ 0x8 72 + 73 + u32 pause; 74 + #define ETH_PAUSE_NONE 0x0 75 + #define ETH_PAUSE_AUTONEG 0x1 76 + #define ETH_PAUSE_RX 0x2 77 + #define ETH_PAUSE_TX 0x4 78 + 79 + u32 adv_speed; 80 + 81 + u32 loopback_mode; 82 + #define ETH_LOOPBACK_NONE 0x0 83 + #define ETH_LOOPBACK_INT_PHY 0x1 84 + #define ETH_LOOPBACK_EXT_PHY 0x2 85 + #define ETH_LOOPBACK_EXT 0x3 86 + #define ETH_LOOPBACK_MAC 0x4 87 + #define ETH_LOOPBACK_CNIG_AH_ONLY_0123 0x5 88 + #define ETH_LOOPBACK_CNIG_AH_ONLY_2301 0x6 89 + #define ETH_LOOPBACK_PCS_AH_ONLY 0x7 90 + #define ETH_LOOPBACK_REVERSE_MAC_AH_ONLY 0x8 91 + #define ETH_LOOPBACK_INT_PHY_FEA_AH_ONLY 0x9 92 + 93 + u32 eee_cfg; 94 + #define EEE_CFG_EEE_ENABLED BIT(0) 95 + #define EEE_CFG_TX_LPI BIT(1) 96 + #define EEE_CFG_ADV_SPEED_1G BIT(2) 97 + #define EEE_CFG_ADV_SPEED_10G BIT(3) 98 + #define EEE_TX_TIMER_USEC_MASK 0xfffffff0 99 + #define EEE_TX_TIMER_USEC_OFFSET 4 100 + #define EEE_TX_TIMER_USEC_BALANCED_TIME 0xa00 101 + #define EEE_TX_TIMER_USEC_AGGRESSIVE_TIME 0x100 102 + #define EEE_TX_TIMER_USEC_LATENCY_TIME 0x6000 103 + 104 + u32 deprecated; 105 + 106 + u32 fec_mode; 107 + #define FEC_FORCE_MODE_MASK 0x000000ff 108 + #define FEC_FORCE_MODE_OFFSET 0 109 + #define FEC_FORCE_MODE_NONE 0x00 110 + #define FEC_FORCE_MODE_FIRECODE 0x01 111 + #define FEC_FORCE_MODE_RS 0x02 112 + #define FEC_FORCE_MODE_AUTO 0x07 113 + #define FEC_EXTENDED_MODE_MASK 0xffffff00 114 + #define FEC_EXTENDED_MODE_OFFSET 8 115 + #define ETH_EXT_FEC_NONE 0x00000100 116 + #define ETH_EXT_FEC_10G_NONE 0x00000200 117 + #define ETH_EXT_FEC_10G_BASE_R 0x00000400 118 + #define ETH_EXT_FEC_20G_NONE 0x00000800 119 + #define ETH_EXT_FEC_20G_BASE_R 0x00001000 120 + #define ETH_EXT_FEC_25G_NONE 0x00002000 121 + #define ETH_EXT_FEC_25G_BASE_R 0x00004000 122 + #define ETH_EXT_FEC_25G_RS528 0x00008000 123 + #define ETH_EXT_FEC_40G_NONE 0x00010000 124 + #define ETH_EXT_FEC_40G_BASE_R 0x00020000 125 + #define ETH_EXT_FEC_50G_NONE 0x00040000 126 + #define ETH_EXT_FEC_50G_BASE_R 0x00080000 127 + #define ETH_EXT_FEC_50G_RS528 0x00100000 128 + #define ETH_EXT_FEC_50G_RS544 0x00200000 129 + #define ETH_EXT_FEC_100G_NONE 0x00400000 130 + #define ETH_EXT_FEC_100G_BASE_R 0x00800000 131 + #define ETH_EXT_FEC_100G_RS528 0x01000000 132 + #define ETH_EXT_FEC_100G_RS544 0x02000000 133 + 134 + u32 extended_speed; 135 + #define ETH_EXT_SPEED_MASK 0x0000ffff 136 + #define ETH_EXT_SPEED_OFFSET 0 137 + #define ETH_EXT_SPEED_AN 0x00000001 138 + #define ETH_EXT_SPEED_1G 0x00000002 139 + #define ETH_EXT_SPEED_10G 0x00000004 140 + #define ETH_EXT_SPEED_20G 0x00000008 141 + #define ETH_EXT_SPEED_25G 0x00000010 142 + #define ETH_EXT_SPEED_40G 0x00000020 143 + #define ETH_EXT_SPEED_50G_BASE_R 0x00000040 144 + #define ETH_EXT_SPEED_50G_BASE_R2 0x00000080 145 + #define ETH_EXT_SPEED_100G_BASE_R2 0x00000100 146 + #define ETH_EXT_SPEED_100G_BASE_R4 0x00000200 147 + #define ETH_EXT_SPEED_100G_BASE_P4 0x00000400 148 + #define ETH_EXT_ADV_SPEED_MASK 0xffff0000 149 + #define ETH_EXT_ADV_SPEED_OFFSET 16 150 + #define ETH_EXT_ADV_SPEED_RESERVED 0x00010000 151 + #define ETH_EXT_ADV_SPEED_1G 0x00020000 152 + #define ETH_EXT_ADV_SPEED_10G 0x00040000 153 + #define ETH_EXT_ADV_SPEED_20G 0x00080000 154 + #define ETH_EXT_ADV_SPEED_25G 0x00100000 155 + #define ETH_EXT_ADV_SPEED_40G 0x00200000 156 + #define ETH_EXT_ADV_SPEED_50G_BASE_R 0x00400000 157 + #define ETH_EXT_ADV_SPEED_50G_BASE_R2 0x00800000 158 + #define ETH_EXT_ADV_SPEED_100G_BASE_R2 0x01000000 159 + #define ETH_EXT_ADV_SPEED_100G_BASE_R4 0x02000000 160 + #define ETH_EXT_ADV_SPEED_100G_BASE_P4 0x04000000 161 + }; 162 + 163 + struct port_mf_cfg { 164 + u32 dynamic_cfg; 165 + #define PORT_MF_CFG_OV_TAG_MASK 0x0000ffff 166 + #define PORT_MF_CFG_OV_TAG_SHIFT 0 167 + #define PORT_MF_CFG_OV_TAG_DEFAULT PORT_MF_CFG_OV_TAG_MASK 168 + 169 + u32 reserved[1]; 170 + }; 171 + 172 + struct eth_stats { 173 + u64 r64; 174 + u64 r127; 175 + u64 r255; 176 + u64 r511; 177 + u64 r1023; 178 + u64 r1518; 179 + 180 + union { 181 + struct { 182 + u64 r1522; 183 + u64 r2047; 184 + u64 r4095; 185 + u64 r9216; 186 + u64 r16383; 187 + } bb0; 188 + struct { 189 + u64 unused1; 190 + u64 r1519_to_max; 191 + u64 unused2; 192 + u64 unused3; 193 + u64 unused4; 194 + } ah0; 195 + } u0; 196 + 197 + u64 rfcs; 198 + u64 rxcf; 199 + u64 rxpf; 200 + u64 rxpp; 201 + u64 raln; 202 + u64 rfcr; 203 + u64 rovr; 204 + u64 rjbr; 205 + u64 rund; 206 + u64 rfrg; 207 + u64 t64; 208 + u64 t127; 209 + u64 t255; 210 + u64 t511; 211 + u64 t1023; 212 + u64 t1518; 213 + 214 + union { 215 + struct { 216 + u64 t2047; 217 + u64 t4095; 218 + u64 t9216; 219 + u64 t16383; 220 + } bb1; 221 + struct { 222 + u64 t1519_to_max; 223 + u64 unused6; 224 + u64 unused7; 225 + u64 unused8; 226 + } ah1; 227 + } u1; 228 + 229 + u64 txpf; 230 + u64 txpp; 231 + 232 + union { 233 + struct { 234 + u64 tlpiec; 235 + u64 tncl; 236 + } bb2; 237 + struct { 238 + u64 unused9; 239 + u64 unused10; 240 + } ah2; 241 + } u2; 242 + 243 + u64 rbyte; 244 + u64 rxuca; 245 + u64 rxmca; 246 + u64 rxbca; 247 + u64 rxpok; 248 + u64 tbyte; 249 + u64 txuca; 250 + u64 txmca; 251 + u64 txbca; 252 + u64 txcf; 253 + }; 254 + 255 + struct brb_stats { 256 + u64 brb_truncate[8]; 257 + u64 brb_discard[8]; 258 + }; 259 + 260 + struct port_stats { 261 + struct brb_stats brb; 262 + struct eth_stats eth; 263 + }; 264 + 265 + struct couple_mode_teaming { 266 + u8 port_cmt[MCP_GLOB_PORT_MAX]; 267 + #define PORT_CMT_IN_TEAM BIT(0) 268 + 269 + #define PORT_CMT_PORT_ROLE BIT(1) 270 + #define PORT_CMT_PORT_INACTIVE (0 << 1) 271 + #define PORT_CMT_PORT_ACTIVE BIT(1) 272 + 273 + #define PORT_CMT_TEAM_MASK BIT(2) 274 + #define PORT_CMT_TEAM0 (0 << 2) 275 + #define PORT_CMT_TEAM1 BIT(2) 276 + }; 277 + 278 + #define LLDP_CHASSIS_ID_STAT_LEN 4 279 + #define LLDP_PORT_ID_STAT_LEN 4 280 + #define DCBX_MAX_APP_PROTOCOL 32 281 + #define MAX_SYSTEM_LLDP_TLV_DATA 32 282 + 283 + enum _lldp_agent { 284 + LLDP_NEAREST_BRIDGE = 0, 285 + LLDP_NEAREST_NON_TPMR_BRIDGE, 286 + LLDP_NEAREST_CUSTOMER_BRIDGE, 287 + LLDP_MAX_LLDP_AGENTS 288 + }; 289 + 290 + struct lldp_config_params_s { 291 + u32 config; 292 + #define LLDP_CONFIG_TX_INTERVAL_MASK 0x000000ff 293 + #define LLDP_CONFIG_TX_INTERVAL_SHIFT 0 294 + #define LLDP_CONFIG_HOLD_MASK 0x00000f00 295 + #define LLDP_CONFIG_HOLD_SHIFT 8 296 + #define LLDP_CONFIG_MAX_CREDIT_MASK 0x0000f000 297 + #define LLDP_CONFIG_MAX_CREDIT_SHIFT 12 298 + #define LLDP_CONFIG_ENABLE_RX_MASK 0x40000000 299 + #define LLDP_CONFIG_ENABLE_RX_SHIFT 30 300 + #define LLDP_CONFIG_ENABLE_TX_MASK 0x80000000 301 + #define LLDP_CONFIG_ENABLE_TX_SHIFT 31 302 + u32 local_chassis_id[LLDP_CHASSIS_ID_STAT_LEN]; 303 + u32 local_port_id[LLDP_PORT_ID_STAT_LEN]; 304 + }; 305 + 306 + struct lldp_status_params_s { 307 + u32 prefix_seq_num; 308 + u32 status; 309 + u32 peer_chassis_id[LLDP_CHASSIS_ID_STAT_LEN]; 310 + u32 peer_port_id[LLDP_PORT_ID_STAT_LEN]; 311 + u32 suffix_seq_num; 312 + }; 313 + 314 + struct dcbx_ets_feature { 315 + u32 flags; 316 + #define DCBX_ETS_ENABLED_MASK 0x00000001 317 + #define DCBX_ETS_ENABLED_SHIFT 0 318 + #define DCBX_ETS_WILLING_MASK 0x00000002 319 + #define DCBX_ETS_WILLING_SHIFT 1 320 + #define DCBX_ETS_ERROR_MASK 0x00000004 321 + #define DCBX_ETS_ERROR_SHIFT 2 322 + #define DCBX_ETS_CBS_MASK 0x00000008 323 + #define DCBX_ETS_CBS_SHIFT 3 324 + #define DCBX_ETS_MAX_TCS_MASK 0x000000f0 325 + #define DCBX_ETS_MAX_TCS_SHIFT 4 326 + #define DCBX_OOO_TC_MASK 0x00000f00 327 + #define DCBX_OOO_TC_SHIFT 8 328 + u32 pri_tc_tbl[1]; 329 + #define DCBX_TCP_OOO_TC (4) 330 + 331 + #define NIG_ETS_ISCSI_OOO_CLIENT_OFFSET (DCBX_TCP_OOO_TC + 1) 332 + #define DCBX_CEE_STRICT_PRIORITY 0xf 333 + u32 tc_bw_tbl[2]; 334 + u32 tc_tsa_tbl[2]; 335 + #define DCBX_ETS_TSA_STRICT 0 336 + #define DCBX_ETS_TSA_CBS 1 337 + #define DCBX_ETS_TSA_ETS 2 338 + }; 339 + 340 + #define DCBX_TCP_OOO_TC (4) 341 + #define DCBX_TCP_OOO_K2_4PORT_TC (3) 342 + 343 + struct dcbx_app_priority_entry { 344 + u32 entry; 345 + #define DCBX_APP_PRI_MAP_MASK 0x000000ff 346 + #define DCBX_APP_PRI_MAP_SHIFT 0 347 + #define DCBX_APP_PRI_0 0x01 348 + #define DCBX_APP_PRI_1 0x02 349 + #define DCBX_APP_PRI_2 0x04 350 + #define DCBX_APP_PRI_3 0x08 351 + #define DCBX_APP_PRI_4 0x10 352 + #define DCBX_APP_PRI_5 0x20 353 + #define DCBX_APP_PRI_6 0x40 354 + #define DCBX_APP_PRI_7 0x80 355 + #define DCBX_APP_SF_MASK 0x00000300 356 + #define DCBX_APP_SF_SHIFT 8 357 + #define DCBX_APP_SF_ETHTYPE 0 358 + #define DCBX_APP_SF_PORT 1 359 + #define DCBX_APP_SF_IEEE_MASK 0x0000f000 360 + #define DCBX_APP_SF_IEEE_SHIFT 12 361 + #define DCBX_APP_SF_IEEE_RESERVED 0 362 + #define DCBX_APP_SF_IEEE_ETHTYPE 1 363 + #define DCBX_APP_SF_IEEE_TCP_PORT 2 364 + #define DCBX_APP_SF_IEEE_UDP_PORT 3 365 + #define DCBX_APP_SF_IEEE_TCP_UDP_PORT 4 366 + 367 + #define DCBX_APP_PROTOCOL_ID_MASK 0xffff0000 368 + #define DCBX_APP_PROTOCOL_ID_SHIFT 16 369 + }; 370 + 371 + struct dcbx_app_priority_feature { 372 + u32 flags; 373 + #define DCBX_APP_ENABLED_MASK 0x00000001 374 + #define DCBX_APP_ENABLED_SHIFT 0 375 + #define DCBX_APP_WILLING_MASK 0x00000002 376 + #define DCBX_APP_WILLING_SHIFT 1 377 + #define DCBX_APP_ERROR_MASK 0x00000004 378 + #define DCBX_APP_ERROR_SHIFT 2 379 + #define DCBX_APP_MAX_TCS_MASK 0x0000f000 380 + #define DCBX_APP_MAX_TCS_SHIFT 12 381 + #define DCBX_APP_NUM_ENTRIES_MASK 0x00ff0000 382 + #define DCBX_APP_NUM_ENTRIES_SHIFT 16 383 + struct dcbx_app_priority_entry app_pri_tbl[DCBX_MAX_APP_PROTOCOL]; 384 + }; 385 + 386 + struct dcbx_features { 387 + struct dcbx_ets_feature ets; 388 + u32 pfc; 389 + #define DCBX_PFC_PRI_EN_BITMAP_MASK 0x000000ff 390 + #define DCBX_PFC_PRI_EN_BITMAP_SHIFT 0 391 + #define DCBX_PFC_PRI_EN_BITMAP_PRI_0 0x01 392 + #define DCBX_PFC_PRI_EN_BITMAP_PRI_1 0x02 393 + #define DCBX_PFC_PRI_EN_BITMAP_PRI_2 0x04 394 + #define DCBX_PFC_PRI_EN_BITMAP_PRI_3 0x08 395 + #define DCBX_PFC_PRI_EN_BITMAP_PRI_4 0x10 396 + #define DCBX_PFC_PRI_EN_BITMAP_PRI_5 0x20 397 + #define DCBX_PFC_PRI_EN_BITMAP_PRI_6 0x40 398 + #define DCBX_PFC_PRI_EN_BITMAP_PRI_7 0x80 399 + 400 + #define DCBX_PFC_FLAGS_MASK 0x0000ff00 401 + #define DCBX_PFC_FLAGS_SHIFT 8 402 + #define DCBX_PFC_CAPS_MASK 0x00000f00 403 + #define DCBX_PFC_CAPS_SHIFT 8 404 + #define DCBX_PFC_MBC_MASK 0x00004000 405 + #define DCBX_PFC_MBC_SHIFT 14 406 + #define DCBX_PFC_WILLING_MASK 0x00008000 407 + #define DCBX_PFC_WILLING_SHIFT 15 408 + #define DCBX_PFC_ENABLED_MASK 0x00010000 409 + #define DCBX_PFC_ENABLED_SHIFT 16 410 + #define DCBX_PFC_ERROR_MASK 0x00020000 411 + #define DCBX_PFC_ERROR_SHIFT 17 412 + 413 + struct dcbx_app_priority_feature app; 414 + }; 415 + 416 + struct dcbx_local_params { 417 + u32 config; 418 + #define DCBX_CONFIG_VERSION_MASK 0x00000007 419 + #define DCBX_CONFIG_VERSION_SHIFT 0 420 + #define DCBX_CONFIG_VERSION_DISABLED 0 421 + #define DCBX_CONFIG_VERSION_IEEE 1 422 + #define DCBX_CONFIG_VERSION_CEE 2 423 + #define DCBX_CONFIG_VERSION_STATIC 4 424 + 425 + u32 flags; 426 + struct dcbx_features features; 427 + }; 428 + 429 + struct dcbx_mib { 430 + u32 prefix_seq_num; 431 + u32 flags; 432 + struct dcbx_features features; 433 + u32 suffix_seq_num; 434 + }; 435 + 436 + struct lldp_system_tlvs_buffer_s { 437 + u16 valid; 438 + u16 length; 439 + u32 data[MAX_SYSTEM_LLDP_TLV_DATA]; 440 + }; 441 + 442 + struct dcb_dscp_map { 443 + u32 flags; 444 + #define DCB_DSCP_ENABLE_MASK 0x1 445 + #define DCB_DSCP_ENABLE_SHIFT 0 446 + #define DCB_DSCP_ENABLE 1 447 + u32 dscp_pri_map[8]; 448 + }; 449 + 450 + struct public_global { 451 + u32 max_path; 452 + u32 max_ports; 453 + #define MODE_1P 1 454 + #define MODE_2P 2 455 + #define MODE_3P 3 456 + #define MODE_4P 4 457 + u32 debug_mb_offset; 458 + u32 phymod_dbg_mb_offset; 459 + struct couple_mode_teaming cmt; 460 + s32 internal_temperature; 461 + u32 mfw_ver; 462 + u32 running_bundle_id; 463 + s32 external_temperature; 464 + u32 mdump_reason; 465 + u64 reserved; 466 + u32 data_ptr; 467 + u32 data_size; 468 + }; 469 + 470 + struct fw_flr_mb { 471 + u32 aggint; 472 + u32 opgen_addr; 473 + u32 accum_ack; 474 + }; 475 + 476 + struct public_path { 477 + struct fw_flr_mb flr_mb; 478 + u32 mcp_vf_disabled[VF_MAX_STATIC / 32]; 479 + 480 + u32 process_kill; 481 + #define PROCESS_KILL_COUNTER_MASK 0x0000ffff 482 + #define PROCESS_KILL_COUNTER_SHIFT 0 483 + #define PROCESS_KILL_GLOB_AEU_BIT_MASK 0xffff0000 484 + #define PROCESS_KILL_GLOB_AEU_BIT_SHIFT 16 485 + #define GLOBAL_AEU_BIT(aeu_reg_id, aeu_bit) ((aeu_reg_id) * 32 + (aeu_bit)) 486 + }; 487 + 488 + struct public_port { 489 + u32 validity_map; 490 + 491 + u32 link_status; 492 + #define LINK_STATUS_LINK_UP 0x00000001 493 + #define LINK_STATUS_SPEED_AND_DUPLEX_MASK 0x0000001e 494 + #define LINK_STATUS_SPEED_AND_DUPLEX_1000THD BIT(1) 495 + #define LINK_STATUS_SPEED_AND_DUPLEX_1000TFD (2 << 1) 496 + #define LINK_STATUS_SPEED_AND_DUPLEX_10G (3 << 1) 497 + #define LINK_STATUS_SPEED_AND_DUPLEX_20G (4 << 1) 498 + #define LINK_STATUS_SPEED_AND_DUPLEX_40G (5 << 1) 499 + #define LINK_STATUS_SPEED_AND_DUPLEX_50G (6 << 1) 500 + #define LINK_STATUS_SPEED_AND_DUPLEX_100G (7 << 1) 501 + #define LINK_STATUS_SPEED_AND_DUPLEX_25G (8 << 1) 502 + #define LINK_STATUS_AUTO_NEGOTIATE_ENABLED 0x00000020 503 + #define LINK_STATUS_AUTO_NEGOTIATE_COMPLETE 0x00000040 504 + #define LINK_STATUS_PARALLEL_DETECTION_USED 0x00000080 505 + #define LINK_STATUS_PFC_ENABLED 0x00000100 506 + #define LINK_STATUS_LINK_PARTNER_1000TFD_CAPABLE 0x00000200 507 + #define LINK_STATUS_LINK_PARTNER_1000THD_CAPABLE 0x00000400 508 + #define LINK_STATUS_LINK_PARTNER_10G_CAPABLE 0x00000800 509 + #define LINK_STATUS_LINK_PARTNER_20G_CAPABLE 0x00001000 510 + #define LINK_STATUS_LINK_PARTNER_40G_CAPABLE 0x00002000 511 + #define LINK_STATUS_LINK_PARTNER_50G_CAPABLE 0x00004000 512 + #define LINK_STATUS_LINK_PARTNER_100G_CAPABLE 0x00008000 513 + #define LINK_STATUS_LINK_PARTNER_25G_CAPABLE 0x00010000 514 + #define LINK_STATUS_LINK_PARTNER_FLOW_CONTROL_MASK 0x000c0000 515 + #define LINK_STATUS_LINK_PARTNER_NOT_PAUSE_CAPABLE (0 << 18) 516 + #define LINK_STATUS_LINK_PARTNER_SYMMETRIC_PAUSE BIT(18) 517 + #define LINK_STATUS_LINK_PARTNER_ASYMMETRIC_PAUSE (2 << 18) 518 + #define LINK_STATUS_LINK_PARTNER_BOTH_PAUSE (3 << 18) 519 + #define LINK_STATUS_SFP_TX_FAULT 0x00100000 520 + #define LINK_STATUS_TX_FLOW_CONTROL_ENABLED 0x00200000 521 + #define LINK_STATUS_RX_FLOW_CONTROL_ENABLED 0x00400000 522 + #define LINK_STATUS_RX_SIGNAL_PRESENT 0x00800000 523 + #define LINK_STATUS_MAC_LOCAL_FAULT 0x01000000 524 + #define LINK_STATUS_MAC_REMOTE_FAULT 0x02000000 525 + #define LINK_STATUS_UNSUPPORTED_SPD_REQ 0x04000000 526 + 527 + #define LINK_STATUS_FEC_MODE_MASK 0x38000000 528 + #define LINK_STATUS_FEC_MODE_NONE (0 << 27) 529 + #define LINK_STATUS_FEC_MODE_FIRECODE_CL74 BIT(27) 530 + #define LINK_STATUS_FEC_MODE_RS_CL91 (2 << 27) 531 + 532 + u32 link_status1; 533 + u32 ext_phy_fw_version; 534 + u32 drv_phy_cfg_addr; 535 + 536 + u32 port_stx; 537 + 538 + u32 stat_nig_timer; 539 + 540 + struct port_mf_cfg port_mf_config; 541 + struct port_stats stats; 542 + 543 + u32 media_type; 544 + #define MEDIA_UNSPECIFIED 0x0 545 + #define MEDIA_SFPP_10G_FIBER 0x1 546 + #define MEDIA_XFP_FIBER 0x2 547 + #define MEDIA_DA_TWINAX 0x3 548 + #define MEDIA_BASE_T 0x4 549 + #define MEDIA_SFP_1G_FIBER 0x5 550 + #define MEDIA_MODULE_FIBER 0x6 551 + #define MEDIA_KR 0xf0 552 + #define MEDIA_NOT_PRESENT 0xff 553 + 554 + u32 lfa_status; 555 + u32 link_change_count; 556 + 557 + struct lldp_config_params_s lldp_config_params[LLDP_MAX_LLDP_AGENTS]; 558 + struct lldp_status_params_s lldp_status_params[LLDP_MAX_LLDP_AGENTS]; 559 + struct lldp_system_tlvs_buffer_s system_lldp_tlvs_buf; 560 + 561 + /* DCBX related MIB */ 562 + struct dcbx_local_params local_admin_dcbx_mib; 563 + struct dcbx_mib remote_dcbx_mib; 564 + struct dcbx_mib operational_dcbx_mib; 565 + 566 + u32 reserved[2]; 567 + 568 + u32 transceiver_data; 569 + #define ETH_TRANSCEIVER_STATE_MASK 0x000000ff 570 + #define ETH_TRANSCEIVER_STATE_SHIFT 0x00000000 571 + #define ETH_TRANSCEIVER_STATE_OFFSET 0x00000000 572 + #define ETH_TRANSCEIVER_STATE_UNPLUGGED 0x00000000 573 + #define ETH_TRANSCEIVER_STATE_PRESENT 0x00000001 574 + #define ETH_TRANSCEIVER_STATE_VALID 0x00000003 575 + #define ETH_TRANSCEIVER_STATE_UPDATING 0x00000008 576 + #define ETH_TRANSCEIVER_TYPE_MASK 0x0000ff00 577 + #define ETH_TRANSCEIVER_TYPE_OFFSET 0x8 578 + #define ETH_TRANSCEIVER_TYPE_NONE 0x00 579 + #define ETH_TRANSCEIVER_TYPE_UNKNOWN 0xff 580 + #define ETH_TRANSCEIVER_TYPE_1G_PCC 0x01 581 + #define ETH_TRANSCEIVER_TYPE_1G_ACC 0x02 582 + #define ETH_TRANSCEIVER_TYPE_1G_LX 0x03 583 + #define ETH_TRANSCEIVER_TYPE_1G_SX 0x04 584 + #define ETH_TRANSCEIVER_TYPE_10G_SR 0x05 585 + #define ETH_TRANSCEIVER_TYPE_10G_LR 0x06 586 + #define ETH_TRANSCEIVER_TYPE_10G_LRM 0x07 587 + #define ETH_TRANSCEIVER_TYPE_10G_ER 0x08 588 + #define ETH_TRANSCEIVER_TYPE_10G_PCC 0x09 589 + #define ETH_TRANSCEIVER_TYPE_10G_ACC 0x0a 590 + #define ETH_TRANSCEIVER_TYPE_XLPPI 0x0b 591 + #define ETH_TRANSCEIVER_TYPE_40G_LR4 0x0c 592 + #define ETH_TRANSCEIVER_TYPE_40G_SR4 0x0d 593 + #define ETH_TRANSCEIVER_TYPE_40G_CR4 0x0e 594 + #define ETH_TRANSCEIVER_TYPE_100G_AOC 0x0f 595 + #define ETH_TRANSCEIVER_TYPE_100G_SR4 0x10 596 + #define ETH_TRANSCEIVER_TYPE_100G_LR4 0x11 597 + #define ETH_TRANSCEIVER_TYPE_100G_ER4 0x12 598 + #define ETH_TRANSCEIVER_TYPE_100G_ACC 0x13 599 + #define ETH_TRANSCEIVER_TYPE_100G_CR4 0x14 600 + #define ETH_TRANSCEIVER_TYPE_4x10G_SR 0x15 601 + #define ETH_TRANSCEIVER_TYPE_25G_CA_N 0x16 602 + #define ETH_TRANSCEIVER_TYPE_25G_ACC_S 0x17 603 + #define ETH_TRANSCEIVER_TYPE_25G_CA_S 0x18 604 + #define ETH_TRANSCEIVER_TYPE_25G_ACC_M 0x19 605 + #define ETH_TRANSCEIVER_TYPE_25G_CA_L 0x1a 606 + #define ETH_TRANSCEIVER_TYPE_25G_ACC_L 0x1b 607 + #define ETH_TRANSCEIVER_TYPE_25G_SR 0x1c 608 + #define ETH_TRANSCEIVER_TYPE_25G_LR 0x1d 609 + #define ETH_TRANSCEIVER_TYPE_25G_AOC 0x1e 610 + #define ETH_TRANSCEIVER_TYPE_4x10G 0x1f 611 + #define ETH_TRANSCEIVER_TYPE_4x25G_CR 0x20 612 + #define ETH_TRANSCEIVER_TYPE_1000BASET 0x21 613 + #define ETH_TRANSCEIVER_TYPE_10G_BASET 0x22 614 + #define ETH_TRANSCEIVER_TYPE_MULTI_RATE_10G_40G_SR 0x30 615 + #define ETH_TRANSCEIVER_TYPE_MULTI_RATE_10G_40G_CR 0x31 616 + #define ETH_TRANSCEIVER_TYPE_MULTI_RATE_10G_40G_LR 0x32 617 + #define ETH_TRANSCEIVER_TYPE_MULTI_RATE_40G_100G_SR 0x33 618 + #define ETH_TRANSCEIVER_TYPE_MULTI_RATE_40G_100G_CR 0x34 619 + #define ETH_TRANSCEIVER_TYPE_MULTI_RATE_40G_100G_LR 0x35 620 + #define ETH_TRANSCEIVER_TYPE_MULTI_RATE_40G_100G_AOC 0x36 621 + #define ETH_TRANSCEIVER_TYPE_MULTI_RATE_10G_25G_SR 0x37 622 + #define ETH_TRANSCEIVER_TYPE_MULTI_RATE_10G_25G_LR 0x38 623 + #define ETH_TRANSCEIVER_TYPE_MULTI_RATE_1G_10G_SR 0x39 624 + #define ETH_TRANSCEIVER_TYPE_MULTI_RATE_1G_10G_LR 0x3a 625 + 626 + u32 wol_info; 627 + u32 wol_pkt_len; 628 + u32 wol_pkt_details; 629 + struct dcb_dscp_map dcb_dscp_map; 630 + 631 + u32 eee_status; 632 + #define EEE_ACTIVE_BIT BIT(0) 633 + #define EEE_LD_ADV_STATUS_MASK 0x000000f0 634 + #define EEE_LD_ADV_STATUS_OFFSET 4 635 + #define EEE_1G_ADV BIT(1) 636 + #define EEE_10G_ADV BIT(2) 637 + #define EEE_LP_ADV_STATUS_MASK 0x00000f00 638 + #define EEE_LP_ADV_STATUS_OFFSET 8 639 + #define EEE_SUPPORTED_SPEED_MASK 0x0000f000 640 + #define EEE_SUPPORTED_SPEED_OFFSET 12 641 + #define EEE_1G_SUPPORTED BIT(1) 642 + #define EEE_10G_SUPPORTED BIT(2) 643 + 644 + u32 eee_remote; 645 + #define EEE_REMOTE_TW_TX_MASK 0x0000ffff 646 + #define EEE_REMOTE_TW_TX_OFFSET 0 647 + #define EEE_REMOTE_TW_RX_MASK 0xffff0000 648 + #define EEE_REMOTE_TW_RX_OFFSET 16 649 + 650 + u32 reserved1; 651 + u32 oem_cfg_port; 652 + #define OEM_CFG_CHANNEL_TYPE_MASK 0x00000003 653 + #define OEM_CFG_CHANNEL_TYPE_OFFSET 0 654 + #define OEM_CFG_CHANNEL_TYPE_VLAN_PARTITION 0x1 655 + #define OEM_CFG_CHANNEL_TYPE_STAGGED 0x2 656 + #define OEM_CFG_SCHED_TYPE_MASK 0x0000000C 657 + #define OEM_CFG_SCHED_TYPE_OFFSET 2 658 + #define OEM_CFG_SCHED_TYPE_ETS 0x1 659 + #define OEM_CFG_SCHED_TYPE_VNIC_BW 0x2 660 + }; 661 + 662 + struct public_func { 663 + u32 reserved0[2]; 664 + 665 + u32 mtu_size; 666 + 667 + u32 reserved[7]; 668 + 669 + u32 config; 670 + #define FUNC_MF_CFG_FUNC_HIDE 0x00000001 671 + #define FUNC_MF_CFG_PAUSE_ON_HOST_RING 0x00000002 672 + #define FUNC_MF_CFG_PAUSE_ON_HOST_RING_SHIFT 0x00000001 673 + 674 + #define FUNC_MF_CFG_PROTOCOL_MASK 0x000000f0 675 + #define FUNC_MF_CFG_PROTOCOL_SHIFT 4 676 + #define FUNC_MF_CFG_PROTOCOL_ETHERNET 0x00000000 677 + #define FUNC_MF_CFG_PROTOCOL_ISCSI 0x00000010 678 + #define FUNC_MF_CFG_PROTOCOL_FCOE 0x00000020 679 + #define FUNC_MF_CFG_PROTOCOL_ROCE 0x00000030 680 + #define FUNC_MF_CFG_PROTOCOL_NVMETCP 0x00000040 681 + #define FUNC_MF_CFG_PROTOCOL_MAX 0x00000040 682 + 683 + #define FUNC_MF_CFG_MIN_BW_MASK 0x0000ff00 684 + #define FUNC_MF_CFG_MIN_BW_SHIFT 8 685 + #define FUNC_MF_CFG_MIN_BW_DEFAULT 0x00000000 686 + #define FUNC_MF_CFG_MAX_BW_MASK 0x00ff0000 687 + #define FUNC_MF_CFG_MAX_BW_SHIFT 16 688 + #define FUNC_MF_CFG_MAX_BW_DEFAULT 0x00640000 689 + 690 + u32 status; 691 + #define FUNC_STATUS_VIRTUAL_LINK_UP 0x00000001 692 + 693 + u32 mac_upper; 694 + #define FUNC_MF_CFG_UPPERMAC_MASK 0x0000ffff 695 + #define FUNC_MF_CFG_UPPERMAC_SHIFT 0 696 + #define FUNC_MF_CFG_UPPERMAC_DEFAULT FUNC_MF_CFG_UPPERMAC_MASK 697 + u32 mac_lower; 698 + #define FUNC_MF_CFG_LOWERMAC_DEFAULT 0xffffffff 699 + 700 + u32 fcoe_wwn_port_name_upper; 701 + u32 fcoe_wwn_port_name_lower; 702 + 703 + u32 fcoe_wwn_node_name_upper; 704 + u32 fcoe_wwn_node_name_lower; 705 + 706 + u32 ovlan_stag; 707 + #define FUNC_MF_CFG_OV_STAG_MASK 0x0000ffff 708 + #define FUNC_MF_CFG_OV_STAG_SHIFT 0 709 + #define FUNC_MF_CFG_OV_STAG_DEFAULT FUNC_MF_CFG_OV_STAG_MASK 710 + 711 + u32 pf_allocation; 712 + 713 + u32 preserve_data; 714 + 715 + u32 driver_last_activity_ts; 716 + 717 + u32 drv_ack_vf_disabled[VF_MAX_STATIC / 32]; 718 + 719 + u32 drv_id; 720 + #define DRV_ID_PDA_COMP_VER_MASK 0x0000ffff 721 + #define DRV_ID_PDA_COMP_VER_SHIFT 0 722 + 723 + #define LOAD_REQ_HSI_VERSION 2 724 + #define DRV_ID_MCP_HSI_VER_MASK 0x00ff0000 725 + #define DRV_ID_MCP_HSI_VER_SHIFT 16 726 + #define DRV_ID_MCP_HSI_VER_CURRENT (LOAD_REQ_HSI_VERSION << \ 727 + DRV_ID_MCP_HSI_VER_SHIFT) 728 + 729 + #define DRV_ID_DRV_TYPE_MASK 0x7f000000 730 + #define DRV_ID_DRV_TYPE_SHIFT 24 731 + #define DRV_ID_DRV_TYPE_UNKNOWN (0 << DRV_ID_DRV_TYPE_SHIFT) 732 + #define DRV_ID_DRV_TYPE_LINUX BIT(DRV_ID_DRV_TYPE_SHIFT) 733 + 734 + #define DRV_ID_DRV_INIT_HW_MASK 0x80000000 735 + #define DRV_ID_DRV_INIT_HW_SHIFT 31 736 + #define DRV_ID_DRV_INIT_HW_FLAG BIT(DRV_ID_DRV_INIT_HW_SHIFT) 737 + 738 + u32 oem_cfg_func; 739 + #define OEM_CFG_FUNC_TC_MASK 0x0000000F 740 + #define OEM_CFG_FUNC_TC_OFFSET 0 741 + #define OEM_CFG_FUNC_TC_0 0x0 742 + #define OEM_CFG_FUNC_TC_1 0x1 743 + #define OEM_CFG_FUNC_TC_2 0x2 744 + #define OEM_CFG_FUNC_TC_3 0x3 745 + #define OEM_CFG_FUNC_TC_4 0x4 746 + #define OEM_CFG_FUNC_TC_5 0x5 747 + #define OEM_CFG_FUNC_TC_6 0x6 748 + #define OEM_CFG_FUNC_TC_7 0x7 749 + 750 + #define OEM_CFG_FUNC_HOST_PRI_CTRL_MASK 0x00000030 751 + #define OEM_CFG_FUNC_HOST_PRI_CTRL_OFFSET 4 752 + #define OEM_CFG_FUNC_HOST_PRI_CTRL_VNIC 0x1 753 + #define OEM_CFG_FUNC_HOST_PRI_CTRL_OS 0x2 754 + }; 755 + 756 + struct mcp_mac { 757 + u32 mac_upper; 758 + u32 mac_lower; 759 + }; 760 + 761 + struct mcp_val64 { 762 + u32 lo; 763 + u32 hi; 764 + }; 765 + 766 + struct mcp_file_att { 767 + u32 nvm_start_addr; 768 + u32 len; 769 + }; 770 + 771 + struct bist_nvm_image_att { 772 + u32 return_code; 773 + u32 image_type; 774 + u32 nvm_start_addr; 775 + u32 len; 776 + }; 777 + 778 + #define MCP_DRV_VER_STR_SIZE 16 779 + #define MCP_DRV_VER_STR_SIZE_DWORD (MCP_DRV_VER_STR_SIZE / sizeof(u32)) 780 + #define MCP_DRV_NVM_BUF_LEN 32 781 + struct drv_version_stc { 782 + u32 version; 783 + u8 name[MCP_DRV_VER_STR_SIZE - 4]; 784 + }; 785 + 786 + struct lan_stats_stc { 787 + u64 ucast_rx_pkts; 788 + u64 ucast_tx_pkts; 789 + u32 fcs_err; 790 + u32 rserved; 791 + }; 792 + 793 + struct fcoe_stats_stc { 794 + u64 rx_pkts; 795 + u64 tx_pkts; 796 + u32 fcs_err; 797 + u32 login_failure; 798 + }; 799 + 800 + struct ocbb_data_stc { 801 + u32 ocbb_host_addr; 802 + u32 ocsd_host_addr; 803 + u32 ocsd_req_update_interval; 804 + }; 805 + 806 + #define MAX_NUM_OF_SENSORS 7 807 + struct temperature_status_stc { 808 + u32 num_of_sensors; 809 + u32 sensor[MAX_NUM_OF_SENSORS]; 810 + }; 811 + 812 + /* crash dump configuration header */ 813 + struct mdump_config_stc { 814 + u32 version; 815 + u32 config; 816 + u32 epoc; 817 + u32 num_of_logs; 818 + u32 valid_logs; 819 + }; 820 + 821 + enum resource_id_enum { 822 + RESOURCE_NUM_SB_E = 0, 823 + RESOURCE_NUM_L2_QUEUE_E = 1, 824 + RESOURCE_NUM_VPORT_E = 2, 825 + RESOURCE_NUM_VMQ_E = 3, 826 + RESOURCE_FACTOR_NUM_RSS_PF_E = 4, 827 + RESOURCE_FACTOR_RSS_PER_VF_E = 5, 828 + RESOURCE_NUM_RL_E = 6, 829 + RESOURCE_NUM_PQ_E = 7, 830 + RESOURCE_NUM_VF_E = 8, 831 + RESOURCE_VFC_FILTER_E = 9, 832 + RESOURCE_ILT_E = 10, 833 + RESOURCE_CQS_E = 11, 834 + RESOURCE_GFT_PROFILES_E = 12, 835 + RESOURCE_NUM_TC_E = 13, 836 + RESOURCE_NUM_RSS_ENGINES_E = 14, 837 + RESOURCE_LL2_QUEUE_E = 15, 838 + RESOURCE_RDMA_STATS_QUEUE_E = 16, 839 + RESOURCE_BDQ_E = 17, 840 + RESOURCE_QCN_E = 18, 841 + RESOURCE_LLH_FILTER_E = 19, 842 + RESOURCE_VF_MAC_ADDR = 20, 843 + RESOURCE_LL2_CQS_E = 21, 844 + RESOURCE_VF_CNQS = 22, 845 + RESOURCE_MAX_NUM, 846 + RESOURCE_NUM_INVALID = 0xFFFFFFFF 847 + }; 848 + 849 + /* Resource ID is to be filled by the driver in the MB request 850 + * Size, offset & flags to be filled by the MFW in the MB response 851 + */ 852 + struct resource_info { 853 + enum resource_id_enum res_id; 854 + u32 size; /* number of allocated resources */ 855 + u32 offset; /* Offset of the 1st resource */ 856 + u32 vf_size; 857 + u32 vf_offset; 858 + u32 flags; 859 + #define RESOURCE_ELEMENT_STRICT BIT(0) 860 + }; 861 + 862 + #define DRV_ROLE_NONE 0 863 + #define DRV_ROLE_PREBOOT 1 864 + #define DRV_ROLE_OS 2 865 + #define DRV_ROLE_KDUMP 3 866 + 867 + struct load_req_stc { 868 + u32 drv_ver_0; 869 + u32 drv_ver_1; 870 + u32 fw_ver; 871 + u32 misc0; 872 + #define LOAD_REQ_ROLE_MASK 0x000000FF 873 + #define LOAD_REQ_ROLE_SHIFT 0 874 + #define LOAD_REQ_LOCK_TO_MASK 0x0000FF00 875 + #define LOAD_REQ_LOCK_TO_SHIFT 8 876 + #define LOAD_REQ_LOCK_TO_DEFAULT 0 877 + #define LOAD_REQ_LOCK_TO_NONE 255 878 + #define LOAD_REQ_FORCE_MASK 0x000F0000 879 + #define LOAD_REQ_FORCE_SHIFT 16 880 + #define LOAD_REQ_FORCE_NONE 0 881 + #define LOAD_REQ_FORCE_PF 1 882 + #define LOAD_REQ_FORCE_ALL 2 883 + #define LOAD_REQ_FLAGS0_MASK 0x00F00000 884 + #define LOAD_REQ_FLAGS0_SHIFT 20 885 + #define LOAD_REQ_FLAGS0_AVOID_RESET (0x1 << 0) 886 + }; 887 + 888 + struct load_rsp_stc { 889 + u32 drv_ver_0; 890 + u32 drv_ver_1; 891 + u32 fw_ver; 892 + u32 misc0; 893 + #define LOAD_RSP_ROLE_MASK 0x000000FF 894 + #define LOAD_RSP_ROLE_SHIFT 0 895 + #define LOAD_RSP_HSI_MASK 0x0000FF00 896 + #define LOAD_RSP_HSI_SHIFT 8 897 + #define LOAD_RSP_FLAGS0_MASK 0x000F0000 898 + #define LOAD_RSP_FLAGS0_SHIFT 16 899 + #define LOAD_RSP_FLAGS0_DRV_EXISTS (0x1 << 0) 900 + }; 901 + 902 + struct mdump_retain_data_stc { 903 + u32 valid; 904 + u32 epoch; 905 + u32 pf; 906 + u32 status; 907 + }; 908 + 909 + union drv_union_data { 910 + u32 ver_str[MCP_DRV_VER_STR_SIZE_DWORD]; 911 + struct mcp_mac wol_mac; 912 + 913 + struct eth_phy_cfg drv_phy_cfg; 914 + 915 + struct mcp_val64 val64; 916 + 917 + u8 raw_data[MCP_DRV_NVM_BUF_LEN]; 918 + 919 + struct mcp_file_att file_att; 920 + 921 + u32 ack_vf_disabled[VF_MAX_STATIC / 32]; 922 + 923 + struct drv_version_stc drv_version; 924 + 925 + struct lan_stats_stc lan_stats; 926 + struct fcoe_stats_stc fcoe_stats; 927 + struct ocbb_data_stc ocbb_info; 928 + struct temperature_status_stc temp_info; 929 + struct resource_info resource; 930 + struct bist_nvm_image_att nvm_image_att; 931 + struct mdump_config_stc mdump_config; 932 + }; 933 + 934 + struct public_drv_mb { 935 + u32 drv_mb_header; 936 + #define DRV_MSG_CODE_MASK 0xffff0000 937 + #define DRV_MSG_CODE_LOAD_REQ 0x10000000 938 + #define DRV_MSG_CODE_LOAD_DONE 0x11000000 939 + #define DRV_MSG_CODE_INIT_HW 0x12000000 940 + #define DRV_MSG_CODE_CANCEL_LOAD_REQ 0x13000000 941 + #define DRV_MSG_CODE_UNLOAD_REQ 0x20000000 942 + #define DRV_MSG_CODE_UNLOAD_DONE 0x21000000 943 + #define DRV_MSG_CODE_INIT_PHY 0x22000000 944 + #define DRV_MSG_CODE_LINK_RESET 0x23000000 945 + #define DRV_MSG_CODE_SET_DCBX 0x25000000 946 + #define DRV_MSG_CODE_OV_UPDATE_CURR_CFG 0x26000000 947 + #define DRV_MSG_CODE_OV_UPDATE_BUS_NUM 0x27000000 948 + #define DRV_MSG_CODE_OV_UPDATE_BOOT_PROGRESS 0x28000000 949 + #define DRV_MSG_CODE_OV_UPDATE_STORM_FW_VER 0x29000000 950 + #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE 0x31000000 951 + #define DRV_MSG_CODE_BW_UPDATE_ACK 0x32000000 952 + #define DRV_MSG_CODE_OV_UPDATE_MTU 0x33000000 953 + #define DRV_MSG_GET_RESOURCE_ALLOC_MSG 0x34000000 954 + #define DRV_MSG_SET_RESOURCE_VALUE_MSG 0x35000000 955 + #define DRV_MSG_CODE_OV_UPDATE_WOL 0x38000000 956 + #define DRV_MSG_CODE_OV_UPDATE_ESWITCH_MODE 0x39000000 957 + #define DRV_MSG_CODE_GET_OEM_UPDATES 0x41000000 958 + 959 + #define DRV_MSG_CODE_BW_UPDATE_ACK 0x32000000 960 + #define DRV_MSG_CODE_NIG_DRAIN 0x30000000 961 + #define DRV_MSG_CODE_S_TAG_UPDATE_ACK 0x3b000000 962 + #define DRV_MSG_CODE_GET_NVM_CFG_OPTION 0x003e0000 963 + #define DRV_MSG_CODE_SET_NVM_CFG_OPTION 0x003f0000 964 + #define DRV_MSG_CODE_INITIATE_PF_FLR 0x02010000 965 + #define DRV_MSG_CODE_VF_DISABLED_DONE 0xc0000000 966 + #define DRV_MSG_CODE_CFG_VF_MSIX 0xc0010000 967 + #define DRV_MSG_CODE_CFG_PF_VFS_MSIX 0xc0020000 968 + #define DRV_MSG_CODE_NVM_PUT_FILE_BEGIN 0x00010000 969 + #define DRV_MSG_CODE_NVM_PUT_FILE_DATA 0x00020000 970 + #define DRV_MSG_CODE_NVM_GET_FILE_ATT 0x00030000 971 + #define DRV_MSG_CODE_NVM_READ_NVRAM 0x00050000 972 + #define DRV_MSG_CODE_NVM_WRITE_NVRAM 0x00060000 973 + #define DRV_MSG_CODE_MCP_RESET 0x00090000 974 + #define DRV_MSG_CODE_SET_VERSION 0x000f0000 975 + #define DRV_MSG_CODE_MCP_HALT 0x00100000 976 + #define DRV_MSG_CODE_SET_VMAC 0x00110000 977 + #define DRV_MSG_CODE_GET_VMAC 0x00120000 978 + #define DRV_MSG_CODE_VMAC_TYPE_SHIFT 4 979 + #define DRV_MSG_CODE_VMAC_TYPE_MASK 0x30 980 + #define DRV_MSG_CODE_VMAC_TYPE_MAC 1 981 + #define DRV_MSG_CODE_VMAC_TYPE_WWNN 2 982 + #define DRV_MSG_CODE_VMAC_TYPE_WWPN 3 983 + 984 + #define DRV_MSG_CODE_GET_STATS 0x00130000 985 + #define DRV_MSG_CODE_STATS_TYPE_LAN 1 986 + #define DRV_MSG_CODE_STATS_TYPE_FCOE 2 987 + #define DRV_MSG_CODE_STATS_TYPE_ISCSI 3 988 + #define DRV_MSG_CODE_STATS_TYPE_RDMA 4 989 + 990 + #define DRV_MSG_CODE_TRANSCEIVER_READ 0x00160000 991 + 992 + #define DRV_MSG_CODE_MASK_PARITIES 0x001a0000 993 + 994 + #define DRV_MSG_CODE_BIST_TEST 0x001e0000 995 + #define DRV_MSG_CODE_SET_LED_MODE 0x00200000 996 + #define DRV_MSG_CODE_RESOURCE_CMD 0x00230000 997 + /* Send crash dump commands with param[3:0] - opcode */ 998 + #define DRV_MSG_CODE_MDUMP_CMD 0x00250000 999 + #define DRV_MSG_CODE_GET_TLV_DONE 0x002f0000 1000 + #define DRV_MSG_CODE_GET_ENGINE_CONFIG 0x00370000 1001 + #define DRV_MSG_CODE_GET_PPFID_BITMAP 0x43000000 1002 + 1003 + #define DRV_MSG_CODE_DEBUG_DATA_SEND 0xc0040000 1004 + 1005 + #define RESOURCE_CMD_REQ_RESC_MASK 0x0000001F 1006 + #define RESOURCE_CMD_REQ_RESC_SHIFT 0 1007 + #define RESOURCE_CMD_REQ_OPCODE_MASK 0x000000E0 1008 + #define RESOURCE_CMD_REQ_OPCODE_SHIFT 5 1009 + #define RESOURCE_OPCODE_REQ 1 1010 + #define RESOURCE_OPCODE_REQ_WO_AGING 2 1011 + #define RESOURCE_OPCODE_REQ_W_AGING 3 1012 + #define RESOURCE_OPCODE_RELEASE 4 1013 + #define RESOURCE_OPCODE_FORCE_RELEASE 5 1014 + #define RESOURCE_CMD_REQ_AGE_MASK 0x0000FF00 1015 + #define RESOURCE_CMD_REQ_AGE_SHIFT 8 1016 + 1017 + #define RESOURCE_CMD_RSP_OWNER_MASK 0x000000FF 1018 + #define RESOURCE_CMD_RSP_OWNER_SHIFT 0 1019 + #define RESOURCE_CMD_RSP_OPCODE_MASK 0x00000700 1020 + #define RESOURCE_CMD_RSP_OPCODE_SHIFT 8 1021 + #define RESOURCE_OPCODE_GNT 1 1022 + #define RESOURCE_OPCODE_BUSY 2 1023 + #define RESOURCE_OPCODE_RELEASED 3 1024 + #define RESOURCE_OPCODE_RELEASED_PREVIOUS 4 1025 + #define RESOURCE_OPCODE_WRONG_OWNER 5 1026 + #define RESOURCE_OPCODE_UNKNOWN_CMD 255 1027 + 1028 + #define RESOURCE_DUMP 0 1029 + 1030 + /* DRV_MSG_CODE_MDUMP_CMD parameters */ 1031 + #define MDUMP_DRV_PARAM_OPCODE_MASK 0x0000000f 1032 + #define DRV_MSG_CODE_MDUMP_ACK 0x01 1033 + #define DRV_MSG_CODE_MDUMP_SET_VALUES 0x02 1034 + #define DRV_MSG_CODE_MDUMP_TRIGGER 0x03 1035 + #define DRV_MSG_CODE_MDUMP_GET_CONFIG 0x04 1036 + #define DRV_MSG_CODE_MDUMP_SET_ENABLE 0x05 1037 + #define DRV_MSG_CODE_MDUMP_CLEAR_LOGS 0x06 1038 + #define DRV_MSG_CODE_MDUMP_GET_RETAIN 0x07 1039 + #define DRV_MSG_CODE_MDUMP_CLR_RETAIN 0x08 1040 + 1041 + #define DRV_MSG_CODE_HW_DUMP_TRIGGER 0x0a 1042 + #define DRV_MSG_CODE_MDUMP_GEN_MDUMP2 0x0b 1043 + #define DRV_MSG_CODE_MDUMP_FREE_MDUMP2 0x0c 1044 + 1045 + #define DRV_MSG_CODE_GET_PF_RDMA_PROTOCOL 0x002b0000 1046 + #define DRV_MSG_CODE_OS_WOL 0x002e0000 1047 + 1048 + #define DRV_MSG_CODE_FEATURE_SUPPORT 0x00300000 1049 + #define DRV_MSG_CODE_GET_MFW_FEATURE_SUPPORT 0x00310000 1050 + #define DRV_MSG_SEQ_NUMBER_MASK 0x0000ffff 1051 + 1052 + u32 drv_mb_param; 1053 + #define DRV_MB_PARAM_UNLOAD_WOL_UNKNOWN 0x00000000 1054 + #define DRV_MB_PARAM_UNLOAD_WOL_MCP 0x00000001 1055 + #define DRV_MB_PARAM_UNLOAD_WOL_DISABLED 0x00000002 1056 + #define DRV_MB_PARAM_UNLOAD_WOL_ENABLED 0x00000003 1057 + #define DRV_MB_PARAM_DCBX_NOTIFY_MASK 0x000000FF 1058 + #define DRV_MB_PARAM_DCBX_NOTIFY_SHIFT 3 1059 + 1060 + #define DRV_MB_PARAM_NVM_PUT_FILE_BEGIN_MBI 0x3 1061 + #define DRV_MB_PARAM_NVM_OFFSET_OFFSET 0 1062 + #define DRV_MB_PARAM_NVM_OFFSET_MASK 0x00FFFFFF 1063 + #define DRV_MB_PARAM_NVM_LEN_OFFSET 24 1064 + #define DRV_MB_PARAM_NVM_LEN_MASK 0xFF000000 1065 + 1066 + #define DRV_MB_PARAM_CFG_VF_MSIX_VF_ID_SHIFT 0 1067 + #define DRV_MB_PARAM_CFG_VF_MSIX_VF_ID_MASK 0x000000FF 1068 + #define DRV_MB_PARAM_CFG_VF_MSIX_SB_NUM_SHIFT 8 1069 + #define DRV_MB_PARAM_CFG_VF_MSIX_SB_NUM_MASK 0x0000FF00 1070 + #define DRV_MB_PARAM_LLDP_SEND_MASK 0x00000001 1071 + #define DRV_MB_PARAM_LLDP_SEND_SHIFT 0 1072 + 1073 + #define DRV_MB_PARAM_OV_CURR_CFG_SHIFT 0 1074 + #define DRV_MB_PARAM_OV_CURR_CFG_MASK 0x0000000F 1075 + #define DRV_MB_PARAM_OV_CURR_CFG_NONE 0 1076 + #define DRV_MB_PARAM_OV_CURR_CFG_OS 1 1077 + #define DRV_MB_PARAM_OV_CURR_CFG_VENDOR_SPEC 2 1078 + #define DRV_MB_PARAM_OV_CURR_CFG_OTHER 3 1079 + 1080 + #define DRV_MB_PARAM_OV_STORM_FW_VER_SHIFT 0 1081 + #define DRV_MB_PARAM_OV_STORM_FW_VER_MASK 0xFFFFFFFF 1082 + #define DRV_MB_PARAM_OV_STORM_FW_VER_MAJOR_MASK 0xFF000000 1083 + #define DRV_MB_PARAM_OV_STORM_FW_VER_MINOR_MASK 0x00FF0000 1084 + #define DRV_MB_PARAM_OV_STORM_FW_VER_BUILD_MASK 0x0000FF00 1085 + #define DRV_MB_PARAM_OV_STORM_FW_VER_DROP_MASK 0x000000FF 1086 + 1087 + #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_SHIFT 0 1088 + #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_MASK 0xF 1089 + #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_UNKNOWN 0x1 1090 + #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_NOT_LOADED 0x2 1091 + #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_LOADING 0x3 1092 + #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_DISABLED 0x4 1093 + #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_ACTIVE 0x5 1094 + 1095 + #define DRV_MB_PARAM_OV_MTU_SIZE_SHIFT 0 1096 + #define DRV_MB_PARAM_OV_MTU_SIZE_MASK 0xFFFFFFFF 1097 + 1098 + #define DRV_MB_PARAM_WOL_MASK (DRV_MB_PARAM_WOL_DEFAULT | \ 1099 + DRV_MB_PARAM_WOL_DISABLED | \ 1100 + DRV_MB_PARAM_WOL_ENABLED) 1101 + #define DRV_MB_PARAM_WOL_DEFAULT DRV_MB_PARAM_UNLOAD_WOL_MCP 1102 + #define DRV_MB_PARAM_WOL_DISABLED DRV_MB_PARAM_UNLOAD_WOL_DISABLED 1103 + #define DRV_MB_PARAM_WOL_ENABLED DRV_MB_PARAM_UNLOAD_WOL_ENABLED 1104 + 1105 + #define DRV_MB_PARAM_ESWITCH_MODE_MASK (DRV_MB_PARAM_ESWITCH_MODE_NONE | \ 1106 + DRV_MB_PARAM_ESWITCH_MODE_VEB | \ 1107 + DRV_MB_PARAM_ESWITCH_MODE_VEPA) 1108 + #define DRV_MB_PARAM_ESWITCH_MODE_NONE 0x0 1109 + #define DRV_MB_PARAM_ESWITCH_MODE_VEB 0x1 1110 + #define DRV_MB_PARAM_ESWITCH_MODE_VEPA 0x2 1111 + 1112 + #define DRV_MB_PARAM_DUMMY_OEM_UPDATES_MASK 0x1 1113 + #define DRV_MB_PARAM_DUMMY_OEM_UPDATES_OFFSET 0 1114 + 1115 + #define DRV_MB_PARAM_SET_LED_MODE_OPER 0x0 1116 + #define DRV_MB_PARAM_SET_LED_MODE_ON 0x1 1117 + #define DRV_MB_PARAM_SET_LED_MODE_OFF 0x2 1118 + 1119 + #define DRV_MB_PARAM_TRANSCEIVER_PORT_OFFSET 0 1120 + #define DRV_MB_PARAM_TRANSCEIVER_PORT_MASK 0x00000003 1121 + #define DRV_MB_PARAM_TRANSCEIVER_SIZE_OFFSET 2 1122 + #define DRV_MB_PARAM_TRANSCEIVER_SIZE_MASK 0x000000fc 1123 + #define DRV_MB_PARAM_TRANSCEIVER_I2C_ADDRESS_OFFSET 8 1124 + #define DRV_MB_PARAM_TRANSCEIVER_I2C_ADDRESS_MASK 0x0000ff00 1125 + #define DRV_MB_PARAM_TRANSCEIVER_OFFSET_OFFSET 16 1126 + #define DRV_MB_PARAM_TRANSCEIVER_OFFSET_MASK 0xffff0000 1127 + 1128 + /* Resource Allocation params - Driver version support */ 1129 + #define DRV_MB_PARAM_RESOURCE_ALLOC_VERSION_MAJOR_MASK 0xffff0000 1130 + #define DRV_MB_PARAM_RESOURCE_ALLOC_VERSION_MAJOR_SHIFT 16 1131 + #define DRV_MB_PARAM_RESOURCE_ALLOC_VERSION_MINOR_MASK 0x0000ffff 1132 + #define DRV_MB_PARAM_RESOURCE_ALLOC_VERSION_MINOR_SHIFT 0 1133 + 1134 + #define DRV_MB_PARAM_BIST_REGISTER_TEST 1 1135 + #define DRV_MB_PARAM_BIST_CLOCK_TEST 2 1136 + #define DRV_MB_PARAM_BIST_NVM_TEST_NUM_IMAGES 3 1137 + #define DRV_MB_PARAM_BIST_NVM_TEST_IMAGE_BY_INDEX 4 1138 + 1139 + #define DRV_MB_PARAM_BIST_RC_UNKNOWN 0 1140 + #define DRV_MB_PARAM_BIST_RC_PASSED 1 1141 + #define DRV_MB_PARAM_BIST_RC_FAILED 2 1142 + #define DRV_MB_PARAM_BIST_RC_INVALID_PARAMETER 3 1143 + 1144 + #define DRV_MB_PARAM_BIST_TEST_INDEX_SHIFT 0 1145 + #define DRV_MB_PARAM_BIST_TEST_INDEX_MASK 0x000000ff 1146 + #define DRV_MB_PARAM_BIST_TEST_IMAGE_INDEX_SHIFT 8 1147 + #define DRV_MB_PARAM_BIST_TEST_IMAGE_INDEX_MASK 0x0000ff00 1148 + 1149 + #define DRV_MB_PARAM_FEATURE_SUPPORT_PORT_MASK 0x0000ffff 1150 + #define DRV_MB_PARAM_FEATURE_SUPPORT_PORT_OFFSET 0 1151 + #define DRV_MB_PARAM_FEATURE_SUPPORT_PORT_EEE 0x00000002 1152 + #define DRV_MB_PARAM_FEATURE_SUPPORT_PORT_FEC_CONTROL 0x00000004 1153 + #define DRV_MB_PARAM_FEATURE_SUPPORT_PORT_EXT_SPEED_FEC_CONTROL 0x00000008 1154 + #define DRV_MB_PARAM_FEATURE_SUPPORT_FUNC_VLINK 0x00010000 1155 + 1156 + /* DRV_MSG_CODE_DEBUG_DATA_SEND parameters */ 1157 + #define DRV_MSG_CODE_DEBUG_DATA_SEND_SIZE_OFFSET 0 1158 + #define DRV_MSG_CODE_DEBUG_DATA_SEND_SIZE_MASK 0xff 1159 + 1160 + /* Driver attributes params */ 1161 + #define DRV_MB_PARAM_ATTRIBUTE_KEY_OFFSET 0 1162 + #define DRV_MB_PARAM_ATTRIBUTE_KEY_MASK 0x00ffffff 1163 + #define DRV_MB_PARAM_ATTRIBUTE_CMD_OFFSET 24 1164 + #define DRV_MB_PARAM_ATTRIBUTE_CMD_MASK 0xff000000 1165 + 1166 + #define DRV_MB_PARAM_NVM_CFG_OPTION_ID_OFFSET 0 1167 + #define DRV_MB_PARAM_NVM_CFG_OPTION_ID_SHIFT 0 1168 + #define DRV_MB_PARAM_NVM_CFG_OPTION_ID_MASK 0x0000ffff 1169 + #define DRV_MB_PARAM_NVM_CFG_OPTION_ALL_SHIFT 16 1170 + #define DRV_MB_PARAM_NVM_CFG_OPTION_ALL_MASK 0x00010000 1171 + #define DRV_MB_PARAM_NVM_CFG_OPTION_INIT_SHIFT 17 1172 + #define DRV_MB_PARAM_NVM_CFG_OPTION_INIT_MASK 0x00020000 1173 + #define DRV_MB_PARAM_NVM_CFG_OPTION_COMMIT_SHIFT 18 1174 + #define DRV_MB_PARAM_NVM_CFG_OPTION_COMMIT_MASK 0x00040000 1175 + #define DRV_MB_PARAM_NVM_CFG_OPTION_FREE_SHIFT 19 1176 + #define DRV_MB_PARAM_NVM_CFG_OPTION_FREE_MASK 0x00080000 1177 + #define DRV_MB_PARAM_NVM_CFG_OPTION_ENTITY_SEL_SHIFT 20 1178 + #define DRV_MB_PARAM_NVM_CFG_OPTION_ENTITY_SEL_MASK 0x00100000 1179 + #define DRV_MB_PARAM_NVM_CFG_OPTION_ENTITY_ID_SHIFT 24 1180 + #define DRV_MB_PARAM_NVM_CFG_OPTION_ENTITY_ID_MASK 0x0f000000 1181 + 1182 + u32 fw_mb_header; 1183 + #define FW_MSG_CODE_MASK 0xffff0000 1184 + #define FW_MSG_CODE_UNSUPPORTED 0x00000000 1185 + #define FW_MSG_CODE_DRV_LOAD_ENGINE 0x10100000 1186 + #define FW_MSG_CODE_DRV_LOAD_PORT 0x10110000 1187 + #define FW_MSG_CODE_DRV_LOAD_FUNCTION 0x10120000 1188 + #define FW_MSG_CODE_DRV_LOAD_REFUSED_PDA 0x10200000 1189 + #define FW_MSG_CODE_DRV_LOAD_REFUSED_HSI_1 0x10210000 1190 + #define FW_MSG_CODE_DRV_LOAD_REFUSED_DIAG 0x10220000 1191 + #define FW_MSG_CODE_DRV_LOAD_REFUSED_HSI 0x10230000 1192 + #define FW_MSG_CODE_DRV_LOAD_REFUSED_REQUIRES_FORCE 0x10300000 1193 + #define FW_MSG_CODE_DRV_LOAD_REFUSED_REJECT 0x10310000 1194 + #define FW_MSG_CODE_DRV_LOAD_DONE 0x11100000 1195 + #define FW_MSG_CODE_DRV_UNLOAD_ENGINE 0x20110000 1196 + #define FW_MSG_CODE_DRV_UNLOAD_PORT 0x20120000 1197 + #define FW_MSG_CODE_DRV_UNLOAD_FUNCTION 0x20130000 1198 + #define FW_MSG_CODE_DRV_UNLOAD_DONE 0x21100000 1199 + #define FW_MSG_CODE_RESOURCE_ALLOC_OK 0x34000000 1200 + #define FW_MSG_CODE_RESOURCE_ALLOC_UNKNOWN 0x35000000 1201 + #define FW_MSG_CODE_RESOURCE_ALLOC_DEPRECATED 0x36000000 1202 + #define FW_MSG_CODE_S_TAG_UPDATE_ACK_DONE 0x3b000000 1203 + #define FW_MSG_CODE_DRV_CFG_VF_MSIX_DONE 0xb0010000 1204 + 1205 + #define FW_MSG_CODE_NVM_OK 0x00010000 1206 + #define FW_MSG_CODE_NVM_PUT_FILE_FINISH_OK 0x00400000 1207 + #define FW_MSG_CODE_PHY_OK 0x00110000 1208 + #define FW_MSG_CODE_OK 0x00160000 1209 + #define FW_MSG_CODE_ERROR 0x00170000 1210 + #define FW_MSG_CODE_TRANSCEIVER_DIAG_OK 0x00160000 1211 + #define FW_MSG_CODE_TRANSCEIVER_DIAG_ERROR 0x00170000 1212 + #define FW_MSG_CODE_TRANSCEIVER_NOT_PRESENT 0x00020000 1213 + 1214 + #define FW_MSG_CODE_OS_WOL_SUPPORTED 0x00800000 1215 + #define FW_MSG_CODE_OS_WOL_NOT_SUPPORTED 0x00810000 1216 + #define FW_MSG_CODE_DRV_CFG_PF_VFS_MSIX_DONE 0x00870000 1217 + #define FW_MSG_SEQ_NUMBER_MASK 0x0000ffff 1218 + 1219 + #define FW_MSG_CODE_DEBUG_DATA_SEND_INV_ARG 0xb0070000 1220 + #define FW_MSG_CODE_DEBUG_DATA_SEND_BUF_FULL 0xb0080000 1221 + #define FW_MSG_CODE_DEBUG_DATA_SEND_NO_BUF 0xb0090000 1222 + #define FW_MSG_CODE_DEBUG_NOT_ENABLED 0xb00a0000 1223 + #define FW_MSG_CODE_DEBUG_DATA_SEND_OK 0xb00b0000 1224 + 1225 + #define FW_MSG_CODE_MDUMP_INVALID_CMD 0x00030000 1226 + 1227 + u32 fw_mb_param; 1228 + #define FW_MB_PARAM_RESOURCE_ALLOC_VERSION_MAJOR_MASK 0xffff0000 1229 + #define FW_MB_PARAM_RESOURCE_ALLOC_VERSION_MAJOR_SHIFT 16 1230 + #define FW_MB_PARAM_RESOURCE_ALLOC_VERSION_MINOR_MASK 0x0000ffff 1231 + #define FW_MB_PARAM_RESOURCE_ALLOC_VERSION_MINOR_SHIFT 0 1232 + 1233 + /* Get PF RDMA protocol command response */ 1234 + #define FW_MB_PARAM_GET_PF_RDMA_NONE 0x0 1235 + #define FW_MB_PARAM_GET_PF_RDMA_ROCE 0x1 1236 + #define FW_MB_PARAM_GET_PF_RDMA_IWARP 0x2 1237 + #define FW_MB_PARAM_GET_PF_RDMA_BOTH 0x3 1238 + 1239 + /* Get MFW feature support response */ 1240 + #define FW_MB_PARAM_FEATURE_SUPPORT_SMARTLINQ BIT(0) 1241 + #define FW_MB_PARAM_FEATURE_SUPPORT_EEE BIT(1) 1242 + #define FW_MB_PARAM_FEATURE_SUPPORT_FEC_CONTROL BIT(5) 1243 + #define FW_MB_PARAM_FEATURE_SUPPORT_EXT_SPEED_FEC_CONTROL BIT(6) 1244 + #define FW_MB_PARAM_FEATURE_SUPPORT_VLINK BIT(16) 1245 + 1246 + #define FW_MB_PARAM_LOAD_DONE_DID_EFUSE_ERROR BIT(0) 1247 + 1248 + #define FW_MB_PARAM_ENG_CFG_FIR_AFFIN_VALID_MASK 0x00000001 1249 + #define FW_MB_PARAM_ENG_CFG_FIR_AFFIN_VALID_SHIFT 0 1250 + #define FW_MB_PARAM_ENG_CFG_FIR_AFFIN_VALUE_MASK 0x00000002 1251 + #define FW_MB_PARAM_ENG_CFG_FIR_AFFIN_VALUE_SHIFT 1 1252 + #define FW_MB_PARAM_ENG_CFG_L2_AFFIN_VALID_MASK 0x00000004 1253 + #define FW_MB_PARAM_ENG_CFG_L2_AFFIN_VALID_SHIFT 2 1254 + #define FW_MB_PARAM_ENG_CFG_L2_AFFIN_VALUE_MASK 0x00000008 1255 + #define FW_MB_PARAM_ENG_CFG_L2_AFFIN_VALUE_SHIFT 3 1256 + 1257 + #define FW_MB_PARAM_PPFID_BITMAP_MASK 0xff 1258 + #define FW_MB_PARAM_PPFID_BITMAP_SHIFT 0 1259 + 1260 + u32 drv_pulse_mb; 1261 + #define DRV_PULSE_SEQ_MASK 0x00007fff 1262 + #define DRV_PULSE_SYSTEM_TIME_MASK 0xffff0000 1263 + #define DRV_PULSE_ALWAYS_ALIVE 0x00008000 1264 + 1265 + u32 mcp_pulse_mb; 1266 + #define MCP_PULSE_SEQ_MASK 0x00007fff 1267 + #define MCP_PULSE_ALWAYS_ALIVE 0x00008000 1268 + #define MCP_EVENT_MASK 0xffff0000 1269 + #define MCP_EVENT_OTHER_DRIVER_RESET_REQ 0x00010000 1270 + 1271 + union drv_union_data union_data; 1272 + }; 1273 + 1274 + #define FW_MB_PARAM_NVM_PUT_FILE_REQ_OFFSET_MASK 0x00ffffff 1275 + #define FW_MB_PARAM_NVM_PUT_FILE_REQ_OFFSET_SHIFT 0 1276 + #define FW_MB_PARAM_NVM_PUT_FILE_REQ_SIZE_MASK 0xff000000 1277 + #define FW_MB_PARAM_NVM_PUT_FILE_REQ_SIZE_SHIFT 24 1278 + 1279 + enum MFW_DRV_MSG_TYPE { 1280 + MFW_DRV_MSG_LINK_CHANGE, 1281 + MFW_DRV_MSG_FLR_FW_ACK_FAILED, 1282 + MFW_DRV_MSG_VF_DISABLED, 1283 + MFW_DRV_MSG_LLDP_DATA_UPDATED, 1284 + MFW_DRV_MSG_DCBX_REMOTE_MIB_UPDATED, 1285 + MFW_DRV_MSG_DCBX_OPERATIONAL_MIB_UPDATED, 1286 + MFW_DRV_MSG_ERROR_RECOVERY, 1287 + MFW_DRV_MSG_BW_UPDATE, 1288 + MFW_DRV_MSG_S_TAG_UPDATE, 1289 + MFW_DRV_MSG_GET_LAN_STATS, 1290 + MFW_DRV_MSG_GET_FCOE_STATS, 1291 + MFW_DRV_MSG_GET_ISCSI_STATS, 1292 + MFW_DRV_MSG_GET_RDMA_STATS, 1293 + MFW_DRV_MSG_FAILURE_DETECTED, 1294 + MFW_DRV_MSG_TRANSCEIVER_STATE_CHANGE, 1295 + MFW_DRV_MSG_CRITICAL_ERROR_OCCURRED, 1296 + MFW_DRV_MSG_RESERVED, 1297 + MFW_DRV_MSG_GET_TLV_REQ, 1298 + MFW_DRV_MSG_OEM_CFG_UPDATE, 1299 + MFW_DRV_MSG_MAX 1300 + }; 1301 + 1302 + #define MFW_DRV_MSG_MAX_DWORDS(msgs) ((((msgs) - 1) >> 2) + 1) 1303 + #define MFW_DRV_MSG_DWORD(msg_id) ((msg_id) >> 2) 1304 + #define MFW_DRV_MSG_OFFSET(msg_id) (((msg_id) & 0x3) << 3) 1305 + #define MFW_DRV_MSG_MASK(msg_id) (0xff << MFW_DRV_MSG_OFFSET(msg_id)) 1306 + 1307 + struct public_mfw_mb { 1308 + u32 sup_msgs; 1309 + u32 msg[MFW_DRV_MSG_MAX_DWORDS(MFW_DRV_MSG_MAX)]; 1310 + u32 ack[MFW_DRV_MSG_MAX_DWORDS(MFW_DRV_MSG_MAX)]; 1311 + }; 1312 + 1313 + enum public_sections { 1314 + PUBLIC_DRV_MB, 1315 + PUBLIC_MFW_MB, 1316 + PUBLIC_GLOBAL, 1317 + PUBLIC_PATH, 1318 + PUBLIC_PORT, 1319 + PUBLIC_FUNC, 1320 + PUBLIC_MAX_SECTIONS 1321 + }; 1322 + 1323 + struct mcp_public_data { 1324 + u32 num_sections; 1325 + u32 sections[PUBLIC_MAX_SECTIONS]; 1326 + struct public_drv_mb drv_mb[MCP_GLOB_FUNC_MAX]; 1327 + struct public_mfw_mb mfw_mb[MCP_GLOB_FUNC_MAX]; 1328 + struct public_global global; 1329 + struct public_path path[MCP_GLOB_PATH_MAX]; 1330 + struct public_port port[MCP_GLOB_PORT_MAX]; 1331 + struct public_func func[MCP_GLOB_FUNC_MAX]; 1332 + }; 1333 + 1334 + #define MAX_I2C_TRANSACTION_SIZE 16 1335 + 1336 + /* OCBB definitions */ 1337 + enum tlvs { 1338 + /* Category 1: Device Properties */ 1339 + DRV_TLV_CLP_STR, 1340 + DRV_TLV_CLP_STR_CTD, 1341 + /* Category 6: Device Configuration */ 1342 + DRV_TLV_SCSI_TO, 1343 + DRV_TLV_R_T_TOV, 1344 + DRV_TLV_R_A_TOV, 1345 + DRV_TLV_E_D_TOV, 1346 + DRV_TLV_CR_TOV, 1347 + DRV_TLV_BOOT_TYPE, 1348 + /* Category 8: Port Configuration */ 1349 + DRV_TLV_NPIV_ENABLED, 1350 + /* Category 10: Function Configuration */ 1351 + DRV_TLV_FEATURE_FLAGS, 1352 + DRV_TLV_LOCAL_ADMIN_ADDR, 1353 + DRV_TLV_ADDITIONAL_MAC_ADDR_1, 1354 + DRV_TLV_ADDITIONAL_MAC_ADDR_2, 1355 + DRV_TLV_LSO_MAX_OFFLOAD_SIZE, 1356 + DRV_TLV_LSO_MIN_SEGMENT_COUNT, 1357 + DRV_TLV_PROMISCUOUS_MODE, 1358 + DRV_TLV_TX_DESCRIPTORS_QUEUE_SIZE, 1359 + DRV_TLV_RX_DESCRIPTORS_QUEUE_SIZE, 1360 + DRV_TLV_NUM_OF_NET_QUEUE_VMQ_CFG, 1361 + DRV_TLV_FLEX_NIC_OUTER_VLAN_ID, 1362 + DRV_TLV_OS_DRIVER_STATES, 1363 + DRV_TLV_PXE_BOOT_PROGRESS, 1364 + /* Category 12: FC/FCoE Configuration */ 1365 + DRV_TLV_NPIV_STATE, 1366 + DRV_TLV_NUM_OF_NPIV_IDS, 1367 + DRV_TLV_SWITCH_NAME, 1368 + DRV_TLV_SWITCH_PORT_NUM, 1369 + DRV_TLV_SWITCH_PORT_ID, 1370 + DRV_TLV_VENDOR_NAME, 1371 + DRV_TLV_SWITCH_MODEL, 1372 + DRV_TLV_SWITCH_FW_VER, 1373 + DRV_TLV_QOS_PRIORITY_PER_802_1P, 1374 + DRV_TLV_PORT_ALIAS, 1375 + DRV_TLV_PORT_STATE, 1376 + DRV_TLV_FIP_TX_DESCRIPTORS_QUEUE_SIZE, 1377 + DRV_TLV_FCOE_RX_DESCRIPTORS_QUEUE_SIZE, 1378 + DRV_TLV_LINK_FAILURE_COUNT, 1379 + DRV_TLV_FCOE_BOOT_PROGRESS, 1380 + /* Category 13: iSCSI Configuration */ 1381 + DRV_TLV_TARGET_LLMNR_ENABLED, 1382 + DRV_TLV_HEADER_DIGEST_FLAG_ENABLED, 1383 + DRV_TLV_DATA_DIGEST_FLAG_ENABLED, 1384 + DRV_TLV_AUTHENTICATION_METHOD, 1385 + DRV_TLV_ISCSI_BOOT_TARGET_PORTAL, 1386 + DRV_TLV_MAX_FRAME_SIZE, 1387 + DRV_TLV_PDU_TX_DESCRIPTORS_QUEUE_SIZE, 1388 + DRV_TLV_PDU_RX_DESCRIPTORS_QUEUE_SIZE, 1389 + DRV_TLV_ISCSI_BOOT_PROGRESS, 1390 + /* Category 20: Device Data */ 1391 + DRV_TLV_PCIE_BUS_RX_UTILIZATION, 1392 + DRV_TLV_PCIE_BUS_TX_UTILIZATION, 1393 + DRV_TLV_DEVICE_CPU_CORES_UTILIZATION, 1394 + DRV_TLV_LAST_VALID_DCC_TLV_RECEIVED, 1395 + DRV_TLV_NCSI_RX_BYTES_RECEIVED, 1396 + DRV_TLV_NCSI_TX_BYTES_SENT, 1397 + /* Category 22: Base Port Data */ 1398 + DRV_TLV_RX_DISCARDS, 1399 + DRV_TLV_RX_ERRORS, 1400 + DRV_TLV_TX_ERRORS, 1401 + DRV_TLV_TX_DISCARDS, 1402 + DRV_TLV_RX_FRAMES_RECEIVED, 1403 + DRV_TLV_TX_FRAMES_SENT, 1404 + /* Category 23: FC/FCoE Port Data */ 1405 + DRV_TLV_RX_BROADCAST_PACKETS, 1406 + DRV_TLV_TX_BROADCAST_PACKETS, 1407 + /* Category 28: Base Function Data */ 1408 + DRV_TLV_NUM_OFFLOADED_CONNECTIONS_TCP_IPV4, 1409 + DRV_TLV_NUM_OFFLOADED_CONNECTIONS_TCP_IPV6, 1410 + DRV_TLV_TX_DESCRIPTOR_QUEUE_AVG_DEPTH, 1411 + DRV_TLV_RX_DESCRIPTORS_QUEUE_AVG_DEPTH, 1412 + DRV_TLV_PF_RX_FRAMES_RECEIVED, 1413 + DRV_TLV_RX_BYTES_RECEIVED, 1414 + DRV_TLV_PF_TX_FRAMES_SENT, 1415 + DRV_TLV_TX_BYTES_SENT, 1416 + DRV_TLV_IOV_OFFLOAD, 1417 + DRV_TLV_PCI_ERRORS_CAP_ID, 1418 + DRV_TLV_UNCORRECTABLE_ERROR_STATUS, 1419 + DRV_TLV_UNCORRECTABLE_ERROR_MASK, 1420 + DRV_TLV_CORRECTABLE_ERROR_STATUS, 1421 + DRV_TLV_CORRECTABLE_ERROR_MASK, 1422 + DRV_TLV_PCI_ERRORS_AECC_REGISTER, 1423 + DRV_TLV_TX_QUEUES_EMPTY, 1424 + DRV_TLV_RX_QUEUES_EMPTY, 1425 + DRV_TLV_TX_QUEUES_FULL, 1426 + DRV_TLV_RX_QUEUES_FULL, 1427 + /* Category 29: FC/FCoE Function Data */ 1428 + DRV_TLV_FCOE_TX_DESCRIPTOR_QUEUE_AVG_DEPTH, 1429 + DRV_TLV_FCOE_RX_DESCRIPTORS_QUEUE_AVG_DEPTH, 1430 + DRV_TLV_FCOE_RX_FRAMES_RECEIVED, 1431 + DRV_TLV_FCOE_RX_BYTES_RECEIVED, 1432 + DRV_TLV_FCOE_TX_FRAMES_SENT, 1433 + DRV_TLV_FCOE_TX_BYTES_SENT, 1434 + DRV_TLV_CRC_ERROR_COUNT, 1435 + DRV_TLV_CRC_ERROR_1_RECEIVED_SOURCE_FC_ID, 1436 + DRV_TLV_CRC_ERROR_1_TIMESTAMP, 1437 + DRV_TLV_CRC_ERROR_2_RECEIVED_SOURCE_FC_ID, 1438 + DRV_TLV_CRC_ERROR_2_TIMESTAMP, 1439 + DRV_TLV_CRC_ERROR_3_RECEIVED_SOURCE_FC_ID, 1440 + DRV_TLV_CRC_ERROR_3_TIMESTAMP, 1441 + DRV_TLV_CRC_ERROR_4_RECEIVED_SOURCE_FC_ID, 1442 + DRV_TLV_CRC_ERROR_4_TIMESTAMP, 1443 + DRV_TLV_CRC_ERROR_5_RECEIVED_SOURCE_FC_ID, 1444 + DRV_TLV_CRC_ERROR_5_TIMESTAMP, 1445 + DRV_TLV_LOSS_OF_SYNC_ERROR_COUNT, 1446 + DRV_TLV_LOSS_OF_SIGNAL_ERRORS, 1447 + DRV_TLV_PRIMITIVE_SEQUENCE_PROTOCOL_ERROR_COUNT, 1448 + DRV_TLV_DISPARITY_ERROR_COUNT, 1449 + DRV_TLV_CODE_VIOLATION_ERROR_COUNT, 1450 + DRV_TLV_LAST_FLOGI_ISSUED_COMMON_PARAMETERS_WORD_1, 1451 + DRV_TLV_LAST_FLOGI_ISSUED_COMMON_PARAMETERS_WORD_2, 1452 + DRV_TLV_LAST_FLOGI_ISSUED_COMMON_PARAMETERS_WORD_3, 1453 + DRV_TLV_LAST_FLOGI_ISSUED_COMMON_PARAMETERS_WORD_4, 1454 + DRV_TLV_LAST_FLOGI_TIMESTAMP, 1455 + DRV_TLV_LAST_FLOGI_ACC_COMMON_PARAMETERS_WORD_1, 1456 + DRV_TLV_LAST_FLOGI_ACC_COMMON_PARAMETERS_WORD_2, 1457 + DRV_TLV_LAST_FLOGI_ACC_COMMON_PARAMETERS_WORD_3, 1458 + DRV_TLV_LAST_FLOGI_ACC_COMMON_PARAMETERS_WORD_4, 1459 + DRV_TLV_LAST_FLOGI_ACC_TIMESTAMP, 1460 + DRV_TLV_LAST_FLOGI_RJT, 1461 + DRV_TLV_LAST_FLOGI_RJT_TIMESTAMP, 1462 + DRV_TLV_FDISCS_SENT_COUNT, 1463 + DRV_TLV_FDISC_ACCS_RECEIVED, 1464 + DRV_TLV_FDISC_RJTS_RECEIVED, 1465 + DRV_TLV_PLOGI_SENT_COUNT, 1466 + DRV_TLV_PLOGI_ACCS_RECEIVED, 1467 + DRV_TLV_PLOGI_RJTS_RECEIVED, 1468 + DRV_TLV_PLOGI_1_SENT_DESTINATION_FC_ID, 1469 + DRV_TLV_PLOGI_1_TIMESTAMP, 1470 + DRV_TLV_PLOGI_2_SENT_DESTINATION_FC_ID, 1471 + DRV_TLV_PLOGI_2_TIMESTAMP, 1472 + DRV_TLV_PLOGI_3_SENT_DESTINATION_FC_ID, 1473 + DRV_TLV_PLOGI_3_TIMESTAMP, 1474 + DRV_TLV_PLOGI_4_SENT_DESTINATION_FC_ID, 1475 + DRV_TLV_PLOGI_4_TIMESTAMP, 1476 + DRV_TLV_PLOGI_5_SENT_DESTINATION_FC_ID, 1477 + DRV_TLV_PLOGI_5_TIMESTAMP, 1478 + DRV_TLV_PLOGI_1_ACC_RECEIVED_SOURCE_FC_ID, 1479 + DRV_TLV_PLOGI_1_ACC_TIMESTAMP, 1480 + DRV_TLV_PLOGI_2_ACC_RECEIVED_SOURCE_FC_ID, 1481 + DRV_TLV_PLOGI_2_ACC_TIMESTAMP, 1482 + DRV_TLV_PLOGI_3_ACC_RECEIVED_SOURCE_FC_ID, 1483 + DRV_TLV_PLOGI_3_ACC_TIMESTAMP, 1484 + DRV_TLV_PLOGI_4_ACC_RECEIVED_SOURCE_FC_ID, 1485 + DRV_TLV_PLOGI_4_ACC_TIMESTAMP, 1486 + DRV_TLV_PLOGI_5_ACC_RECEIVED_SOURCE_FC_ID, 1487 + DRV_TLV_PLOGI_5_ACC_TIMESTAMP, 1488 + DRV_TLV_LOGOS_ISSUED, 1489 + DRV_TLV_LOGO_ACCS_RECEIVED, 1490 + DRV_TLV_LOGO_RJTS_RECEIVED, 1491 + DRV_TLV_LOGO_1_RECEIVED_SOURCE_FC_ID, 1492 + DRV_TLV_LOGO_1_TIMESTAMP, 1493 + DRV_TLV_LOGO_2_RECEIVED_SOURCE_FC_ID, 1494 + DRV_TLV_LOGO_2_TIMESTAMP, 1495 + DRV_TLV_LOGO_3_RECEIVED_SOURCE_FC_ID, 1496 + DRV_TLV_LOGO_3_TIMESTAMP, 1497 + DRV_TLV_LOGO_4_RECEIVED_SOURCE_FC_ID, 1498 + DRV_TLV_LOGO_4_TIMESTAMP, 1499 + DRV_TLV_LOGO_5_RECEIVED_SOURCE_FC_ID, 1500 + DRV_TLV_LOGO_5_TIMESTAMP, 1501 + DRV_TLV_LOGOS_RECEIVED, 1502 + DRV_TLV_ACCS_ISSUED, 1503 + DRV_TLV_PRLIS_ISSUED, 1504 + DRV_TLV_ACCS_RECEIVED, 1505 + DRV_TLV_ABTS_SENT_COUNT, 1506 + DRV_TLV_ABTS_ACCS_RECEIVED, 1507 + DRV_TLV_ABTS_RJTS_RECEIVED, 1508 + DRV_TLV_ABTS_1_SENT_DESTINATION_FC_ID, 1509 + DRV_TLV_ABTS_1_TIMESTAMP, 1510 + DRV_TLV_ABTS_2_SENT_DESTINATION_FC_ID, 1511 + DRV_TLV_ABTS_2_TIMESTAMP, 1512 + DRV_TLV_ABTS_3_SENT_DESTINATION_FC_ID, 1513 + DRV_TLV_ABTS_3_TIMESTAMP, 1514 + DRV_TLV_ABTS_4_SENT_DESTINATION_FC_ID, 1515 + DRV_TLV_ABTS_4_TIMESTAMP, 1516 + DRV_TLV_ABTS_5_SENT_DESTINATION_FC_ID, 1517 + DRV_TLV_ABTS_5_TIMESTAMP, 1518 + DRV_TLV_RSCNS_RECEIVED, 1519 + DRV_TLV_LAST_RSCN_RECEIVED_N_PORT_1, 1520 + DRV_TLV_LAST_RSCN_RECEIVED_N_PORT_2, 1521 + DRV_TLV_LAST_RSCN_RECEIVED_N_PORT_3, 1522 + DRV_TLV_LAST_RSCN_RECEIVED_N_PORT_4, 1523 + DRV_TLV_LUN_RESETS_ISSUED, 1524 + DRV_TLV_ABORT_TASK_SETS_ISSUED, 1525 + DRV_TLV_TPRLOS_SENT, 1526 + DRV_TLV_NOS_SENT_COUNT, 1527 + DRV_TLV_NOS_RECEIVED_COUNT, 1528 + DRV_TLV_OLS_COUNT, 1529 + DRV_TLV_LR_COUNT, 1530 + DRV_TLV_LRR_COUNT, 1531 + DRV_TLV_LIP_SENT_COUNT, 1532 + DRV_TLV_LIP_RECEIVED_COUNT, 1533 + DRV_TLV_EOFA_COUNT, 1534 + DRV_TLV_EOFNI_COUNT, 1535 + DRV_TLV_SCSI_STATUS_CHECK_CONDITION_COUNT, 1536 + DRV_TLV_SCSI_STATUS_CONDITION_MET_COUNT, 1537 + DRV_TLV_SCSI_STATUS_BUSY_COUNT, 1538 + DRV_TLV_SCSI_STATUS_INTERMEDIATE_COUNT, 1539 + DRV_TLV_SCSI_STATUS_INTERMEDIATE_CONDITION_MET_COUNT, 1540 + DRV_TLV_SCSI_STATUS_RESERVATION_CONFLICT_COUNT, 1541 + DRV_TLV_SCSI_STATUS_TASK_SET_FULL_COUNT, 1542 + DRV_TLV_SCSI_STATUS_ACA_ACTIVE_COUNT, 1543 + DRV_TLV_SCSI_STATUS_TASK_ABORTED_COUNT, 1544 + DRV_TLV_SCSI_CHECK_CONDITION_1_RECEIVED_SK_ASC_ASCQ, 1545 + DRV_TLV_SCSI_CHECK_1_TIMESTAMP, 1546 + DRV_TLV_SCSI_CHECK_CONDITION_2_RECEIVED_SK_ASC_ASCQ, 1547 + DRV_TLV_SCSI_CHECK_2_TIMESTAMP, 1548 + DRV_TLV_SCSI_CHECK_CONDITION_3_RECEIVED_SK_ASC_ASCQ, 1549 + DRV_TLV_SCSI_CHECK_3_TIMESTAMP, 1550 + DRV_TLV_SCSI_CHECK_CONDITION_4_RECEIVED_SK_ASC_ASCQ, 1551 + DRV_TLV_SCSI_CHECK_4_TIMESTAMP, 1552 + DRV_TLV_SCSI_CHECK_CONDITION_5_RECEIVED_SK_ASC_ASCQ, 1553 + DRV_TLV_SCSI_CHECK_5_TIMESTAMP, 1554 + /* Category 30: iSCSI Function Data */ 1555 + DRV_TLV_PDU_TX_DESCRIPTOR_QUEUE_AVG_DEPTH, 1556 + DRV_TLV_PDU_RX_DESCRIPTORS_QUEUE_AVG_DEPTH, 1557 + DRV_TLV_ISCSI_PDU_RX_FRAMES_RECEIVED, 1558 + DRV_TLV_ISCSI_PDU_RX_BYTES_RECEIVED, 1559 + DRV_TLV_ISCSI_PDU_TX_FRAMES_SENT, 1560 + DRV_TLV_ISCSI_PDU_TX_BYTES_SENT 1561 + }; 1562 + 1563 + struct nvm_cfg_mac_address { 1564 + u32 mac_addr_hi; 1565 + #define NVM_CFG_MAC_ADDRESS_HI_MASK 0x0000ffff 1566 + #define NVM_CFG_MAC_ADDRESS_HI_OFFSET 0 1567 + 1568 + u32 mac_addr_lo; 1569 + }; 1570 + 1571 + struct nvm_cfg1_glob { 1572 + u32 generic_cont0; 1573 + #define NVM_CFG1_GLOB_MF_MODE_MASK 0x00000ff0 1574 + #define NVM_CFG1_GLOB_MF_MODE_OFFSET 4 1575 + #define NVM_CFG1_GLOB_MF_MODE_MF_ALLOWED 0x0 1576 + #define NVM_CFG1_GLOB_MF_MODE_DEFAULT 0x1 1577 + #define NVM_CFG1_GLOB_MF_MODE_SPIO4 0x2 1578 + #define NVM_CFG1_GLOB_MF_MODE_NPAR1_0 0x3 1579 + #define NVM_CFG1_GLOB_MF_MODE_NPAR1_5 0x4 1580 + #define NVM_CFG1_GLOB_MF_MODE_NPAR2_0 0x5 1581 + #define NVM_CFG1_GLOB_MF_MODE_BD 0x6 1582 + #define NVM_CFG1_GLOB_MF_MODE_UFP 0x7 1583 + 1584 + u32 engineering_change[3]; 1585 + u32 manufacturing_id; 1586 + u32 serial_number[4]; 1587 + u32 pcie_cfg; 1588 + u32 mgmt_traffic; 1589 + 1590 + u32 core_cfg; 1591 + #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_MASK 0x000000ff 1592 + #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_OFFSET 0 1593 + #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_BB_2X40G 0x0 1594 + #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_2X50G 0x1 1595 + #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_BB_1X100G 0x2 1596 + #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_4X10G_F 0x3 1597 + #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_BB_4X10G_E 0x4 1598 + #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_BB_4X20G 0x5 1599 + #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_1X40G 0xb 1600 + #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_2X25G 0xc 1601 + #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_1X25G 0xd 1602 + #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_4X25G 0xe 1603 + #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_2X10G 0xf 1604 + #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_AHP_2X50G_R1 0x11 1605 + #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_AHP_4X50G_R1 0x12 1606 + #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_AHP_1X100G_R2 0x13 1607 + #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_AHP_2X100G_R2 0x14 1608 + #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_AHP_1X100G_R4 0x15 1609 + 1610 + u32 e_lane_cfg1; 1611 + u32 e_lane_cfg2; 1612 + u32 f_lane_cfg1; 1613 + u32 f_lane_cfg2; 1614 + u32 mps10_preemphasis; 1615 + u32 mps10_driver_current; 1616 + u32 mps25_preemphasis; 1617 + u32 mps25_driver_current; 1618 + u32 pci_id; 1619 + u32 pci_subsys_id; 1620 + u32 bar; 1621 + u32 mps10_txfir_main; 1622 + u32 mps10_txfir_post; 1623 + u32 mps25_txfir_main; 1624 + u32 mps25_txfir_post; 1625 + u32 manufacture_ver; 1626 + u32 manufacture_time; 1627 + u32 led_global_settings; 1628 + u32 generic_cont1; 1629 + 1630 + u32 mbi_version; 1631 + #define NVM_CFG1_GLOB_MBI_VERSION_0_MASK 0x000000ff 1632 + #define NVM_CFG1_GLOB_MBI_VERSION_0_OFFSET 0 1633 + #define NVM_CFG1_GLOB_MBI_VERSION_1_MASK 0x0000ff00 1634 + #define NVM_CFG1_GLOB_MBI_VERSION_1_OFFSET 8 1635 + #define NVM_CFG1_GLOB_MBI_VERSION_2_MASK 0x00ff0000 1636 + #define NVM_CFG1_GLOB_MBI_VERSION_2_OFFSET 16 1637 + 1638 + u32 mbi_date; 1639 + u32 misc_sig; 1640 + 1641 + u32 device_capabilities; 1642 + #define NVM_CFG1_GLOB_DEVICE_CAPABILITIES_ETHERNET 0x1 1643 + #define NVM_CFG1_GLOB_DEVICE_CAPABILITIES_FCOE 0x2 1644 + #define NVM_CFG1_GLOB_DEVICE_CAPABILITIES_ISCSI 0x4 1645 + #define NVM_CFG1_GLOB_DEVICE_CAPABILITIES_ROCE 0x8 1646 + #define NVM_CFG1_GLOB_DEVICE_CAPABILITIES_IWARP 0x10 1647 + 1648 + u32 power_dissipated; 1649 + u32 power_consumed; 1650 + u32 efi_version; 1651 + u32 multi_network_modes_capability; 1652 + u32 reserved[41]; 1653 + }; 1654 + 1655 + struct nvm_cfg1_path { 1656 + u32 reserved[30]; 1657 + }; 1658 + 1659 + struct nvm_cfg1_port { 1660 + u32 rel_to_opt123; 1661 + u32 rel_to_opt124; 1662 + 1663 + u32 generic_cont0; 1664 + #define NVM_CFG1_PORT_DCBX_MODE_MASK 0x000f0000 1665 + #define NVM_CFG1_PORT_DCBX_MODE_OFFSET 16 1666 + #define NVM_CFG1_PORT_DCBX_MODE_DISABLED 0x0 1667 + #define NVM_CFG1_PORT_DCBX_MODE_IEEE 0x1 1668 + #define NVM_CFG1_PORT_DCBX_MODE_CEE 0x2 1669 + #define NVM_CFG1_PORT_DCBX_MODE_DYNAMIC 0x3 1670 + #define NVM_CFG1_PORT_DEFAULT_ENABLED_PROTOCOLS_MASK 0x00f00000 1671 + #define NVM_CFG1_PORT_DEFAULT_ENABLED_PROTOCOLS_OFFSET 20 1672 + #define NVM_CFG1_PORT_DEFAULT_ENABLED_PROTOCOLS_ETHERNET 0x1 1673 + #define NVM_CFG1_PORT_DEFAULT_ENABLED_PROTOCOLS_FCOE 0x2 1674 + #define NVM_CFG1_PORT_DEFAULT_ENABLED_PROTOCOLS_ISCSI 0x4 1675 + 1676 + u32 pcie_cfg; 1677 + u32 features; 1678 + 1679 + u32 speed_cap_mask; 1680 + #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_MASK 0x0000ffff 1681 + #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_OFFSET 0 1682 + #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_1G 0x1 1683 + #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_10G 0x2 1684 + #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_20G 0x4 1685 + #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_25G 0x8 1686 + #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_40G 0x10 1687 + #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_50G 0x20 1688 + #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_BB_100G 0x40 1689 + 1690 + u32 link_settings; 1691 + #define NVM_CFG1_PORT_DRV_LINK_SPEED_MASK 0x0000000f 1692 + #define NVM_CFG1_PORT_DRV_LINK_SPEED_OFFSET 0 1693 + #define NVM_CFG1_PORT_DRV_LINK_SPEED_AUTONEG 0x0 1694 + #define NVM_CFG1_PORT_DRV_LINK_SPEED_1G 0x1 1695 + #define NVM_CFG1_PORT_DRV_LINK_SPEED_10G 0x2 1696 + #define NVM_CFG1_PORT_DRV_LINK_SPEED_20G 0x3 1697 + #define NVM_CFG1_PORT_DRV_LINK_SPEED_25G 0x4 1698 + #define NVM_CFG1_PORT_DRV_LINK_SPEED_40G 0x5 1699 + #define NVM_CFG1_PORT_DRV_LINK_SPEED_50G 0x6 1700 + #define NVM_CFG1_PORT_DRV_LINK_SPEED_BB_100G 0x7 1701 + #define NVM_CFG1_PORT_DRV_LINK_SPEED_SMARTLINQ 0x8 1702 + #define NVM_CFG1_PORT_DRV_FLOW_CONTROL_MASK 0x00000070 1703 + #define NVM_CFG1_PORT_DRV_FLOW_CONTROL_OFFSET 4 1704 + #define NVM_CFG1_PORT_DRV_FLOW_CONTROL_AUTONEG 0x1 1705 + #define NVM_CFG1_PORT_DRV_FLOW_CONTROL_RX 0x2 1706 + #define NVM_CFG1_PORT_DRV_FLOW_CONTROL_TX 0x4 1707 + #define NVM_CFG1_PORT_FEC_FORCE_MODE_MASK 0x000e0000 1708 + #define NVM_CFG1_PORT_FEC_FORCE_MODE_OFFSET 17 1709 + #define NVM_CFG1_PORT_FEC_FORCE_MODE_NONE 0x0 1710 + #define NVM_CFG1_PORT_FEC_FORCE_MODE_FIRECODE 0x1 1711 + #define NVM_CFG1_PORT_FEC_FORCE_MODE_RS 0x2 1712 + #define NVM_CFG1_PORT_FEC_FORCE_MODE_AUTO 0x7 1713 + 1714 + u32 phy_cfg; 1715 + u32 mgmt_traffic; 1716 + 1717 + u32 ext_phy; 1718 + /* EEE power saving mode */ 1719 + #define NVM_CFG1_PORT_EEE_POWER_SAVING_MODE_MASK 0x00ff0000 1720 + #define NVM_CFG1_PORT_EEE_POWER_SAVING_MODE_OFFSET 16 1721 + #define NVM_CFG1_PORT_EEE_POWER_SAVING_MODE_DISABLED 0x0 1722 + #define NVM_CFG1_PORT_EEE_POWER_SAVING_MODE_BALANCED 0x1 1723 + #define NVM_CFG1_PORT_EEE_POWER_SAVING_MODE_AGGRESSIVE 0x2 1724 + #define NVM_CFG1_PORT_EEE_POWER_SAVING_MODE_LOW_LATENCY 0x3 1725 + 1726 + u32 mba_cfg1; 1727 + u32 mba_cfg2; 1728 + u32 vf_cfg; 1729 + struct nvm_cfg_mac_address lldp_mac_address; 1730 + u32 led_port_settings; 1731 + u32 transceiver_00; 1732 + u32 device_ids; 1733 + 1734 + u32 board_cfg; 1735 + #define NVM_CFG1_PORT_PORT_TYPE_MASK 0x000000ff 1736 + #define NVM_CFG1_PORT_PORT_TYPE_OFFSET 0 1737 + #define NVM_CFG1_PORT_PORT_TYPE_UNDEFINED 0x0 1738 + #define NVM_CFG1_PORT_PORT_TYPE_MODULE 0x1 1739 + #define NVM_CFG1_PORT_PORT_TYPE_BACKPLANE 0x2 1740 + #define NVM_CFG1_PORT_PORT_TYPE_EXT_PHY 0x3 1741 + #define NVM_CFG1_PORT_PORT_TYPE_MODULE_SLAVE 0x4 1742 + 1743 + u32 mnm_10g_cap; 1744 + u32 mnm_10g_ctrl; 1745 + u32 mnm_10g_misc; 1746 + u32 mnm_25g_cap; 1747 + u32 mnm_25g_ctrl; 1748 + u32 mnm_25g_misc; 1749 + u32 mnm_40g_cap; 1750 + u32 mnm_40g_ctrl; 1751 + u32 mnm_40g_misc; 1752 + u32 mnm_50g_cap; 1753 + u32 mnm_50g_ctrl; 1754 + u32 mnm_50g_misc; 1755 + u32 mnm_100g_cap; 1756 + u32 mnm_100g_ctrl; 1757 + u32 mnm_100g_misc; 1758 + 1759 + u32 temperature; 1760 + u32 ext_phy_cfg1; 1761 + 1762 + u32 extended_speed; 1763 + #define NVM_CFG1_PORT_EXTENDED_SPEED_MASK 0x0000ffff 1764 + #define NVM_CFG1_PORT_EXTENDED_SPEED_OFFSET 0 1765 + #define NVM_CFG1_PORT_EXTENDED_SPEED_EXTND_SPD_AN 0x1 1766 + #define NVM_CFG1_PORT_EXTENDED_SPEED_EXTND_SPD_1G 0x2 1767 + #define NVM_CFG1_PORT_EXTENDED_SPEED_EXTND_SPD_10G 0x4 1768 + #define NVM_CFG1_PORT_EXTENDED_SPEED_EXTND_SPD_20G 0x8 1769 + #define NVM_CFG1_PORT_EXTENDED_SPEED_EXTND_SPD_25G 0x10 1770 + #define NVM_CFG1_PORT_EXTENDED_SPEED_EXTND_SPD_40G 0x20 1771 + #define NVM_CFG1_PORT_EXTENDED_SPEED_EXTND_SPD_50G_R 0x40 1772 + #define NVM_CFG1_PORT_EXTENDED_SPEED_EXTND_SPD_50G_R2 0x80 1773 + #define NVM_CFG1_PORT_EXTENDED_SPEED_EXTND_SPD_100G_R2 0x100 1774 + #define NVM_CFG1_PORT_EXTENDED_SPEED_EXTND_SPD_100G_R4 0x200 1775 + #define NVM_CFG1_PORT_EXTENDED_SPEED_EXTND_SPD_100G_P4 0x400 1776 + #define NVM_CFG1_PORT_EXTENDED_SPEED_CAP_MASK 0xffff0000 1777 + #define NVM_CFG1_PORT_EXTENDED_SPEED_CAP_OFFSET 16 1778 + #define NVM_CFG1_PORT_EXTENDED_SPEED_CAP_EXTND_SPD_RESERVED 0x1 1779 + #define NVM_CFG1_PORT_EXTENDED_SPEED_CAP_EXTND_SPD_1G 0x2 1780 + #define NVM_CFG1_PORT_EXTENDED_SPEED_CAP_EXTND_SPD_10G 0x4 1781 + #define NVM_CFG1_PORT_EXTENDED_SPEED_CAP_EXTND_SPD_20G 0x8 1782 + #define NVM_CFG1_PORT_EXTENDED_SPEED_CAP_EXTND_SPD_25G 0x10 1783 + #define NVM_CFG1_PORT_EXTENDED_SPEED_CAP_EXTND_SPD_40G 0x20 1784 + #define NVM_CFG1_PORT_EXTENDED_SPEED_CAP_EXTND_SPD_50G_R 0x40 1785 + #define NVM_CFG1_PORT_EXTENDED_SPEED_CAP_EXTND_SPD_50G_R2 0x80 1786 + #define NVM_CFG1_PORT_EXTENDED_SPEED_CAP_EXTND_SPD_100G_R2 0x100 1787 + #define NVM_CFG1_PORT_EXTENDED_SPEED_CAP_EXTND_SPD_100G_R4 0x200 1788 + #define NVM_CFG1_PORT_EXTENDED_SPEED_CAP_EXTND_SPD_100G_P4 0x400 1789 + 1790 + u32 extended_fec_mode; 1791 + 1792 + u32 reserved[112]; 1793 + }; 1794 + 1795 + struct nvm_cfg1_func { 1796 + struct nvm_cfg_mac_address mac_address; 1797 + u32 rsrv1; 1798 + u32 rsrv2; 1799 + u32 device_id; 1800 + u32 cmn_cfg; 1801 + u32 pci_cfg; 1802 + struct nvm_cfg_mac_address fcoe_node_wwn_mac_addr; 1803 + struct nvm_cfg_mac_address fcoe_port_wwn_mac_addr; 1804 + u32 preboot_generic_cfg; 1805 + u32 reserved[8]; 1806 + }; 1807 + 1808 + struct nvm_cfg1 { 1809 + struct nvm_cfg1_glob glob; 1810 + struct nvm_cfg1_path path[MCP_GLOB_PATH_MAX]; 1811 + struct nvm_cfg1_port port[MCP_GLOB_PORT_MAX]; 1812 + struct nvm_cfg1_func func[MCP_GLOB_FUNC_MAX]; 1813 + }; 1814 + 1815 + enum spad_sections { 1816 + SPAD_SECTION_TRACE, 1817 + SPAD_SECTION_NVM_CFG, 1818 + SPAD_SECTION_PUBLIC, 1819 + SPAD_SECTION_PRIVATE, 1820 + SPAD_SECTION_MAX 1821 + }; 1822 + 1823 + #define MCP_TRACE_SIZE 2048 /* 2kb */ 1824 + 1825 + /* This section is located at a fixed location in the beginning of the 1826 + * scratchpad, to ensure that the MCP trace is not run over during MFW upgrade. 1827 + * All the rest of data has a floating location which differs from version to 1828 + * version, and is pointed by the mcp_meta_data below. 1829 + * Moreover, the spad_layout section is part of the MFW firmware, and is loaded 1830 + * with it from nvram in order to clear this portion. 1831 + */ 1832 + struct static_init { 1833 + u32 num_sections; 1834 + offsize_t sections[SPAD_SECTION_MAX]; 1835 + #define SECTION(_sec_) (*((offsize_t *)(STRUCT_OFFSET(sections[_sec_])))) 1836 + 1837 + struct mcp_trace trace; 1838 + #define MCP_TRACE_P ((struct mcp_trace *)(STRUCT_OFFSET(trace))) 1839 + u8 trace_buffer[MCP_TRACE_SIZE]; 1840 + #define MCP_TRACE_BUF ((u8 *)(STRUCT_OFFSET(trace_buffer))) 1841 + /* running_mfw has the same definition as in nvm_map.h. 1842 + * This bit indicate both the running dir, and the running bundle. 1843 + * It is set once when the LIM is loaded. 1844 + */ 1845 + u32 running_mfw; 1846 + #define RUNNING_MFW (*((u32 *)(STRUCT_OFFSET(running_mfw)))) 1847 + u32 build_time; 1848 + #define MFW_BUILD_TIME (*((u32 *)(STRUCT_OFFSET(build_time)))) 1849 + u32 reset_type; 1850 + #define RESET_TYPE (*((u32 *)(STRUCT_OFFSET(reset_type)))) 1851 + u32 mfw_secure_mode; 1852 + #define MFW_SECURE_MODE (*((u32 *)(STRUCT_OFFSET(mfw_secure_mode)))) 1853 + u16 pme_status_pf_bitmap; 1854 + #define PME_STATUS_PF_BITMAP (*((u16 *)(STRUCT_OFFSET(pme_status_pf_bitmap)))) 1855 + u16 pme_enable_pf_bitmap; 1856 + #define PME_ENABLE_PF_BITMAP (*((u16 *)(STRUCT_OFFSET(pme_enable_pf_bitmap)))) 1857 + u32 mim_nvm_addr; 1858 + u32 mim_start_addr; 1859 + u32 ah_pcie_link_params; 1860 + #define AH_PCIE_LINK_PARAMS_LINK_SPEED_MASK (0x000000ff) 1861 + #define AH_PCIE_LINK_PARAMS_LINK_SPEED_SHIFT (0) 1862 + #define AH_PCIE_LINK_PARAMS_LINK_WIDTH_MASK (0x0000ff00) 1863 + #define AH_PCIE_LINK_PARAMS_LINK_WIDTH_SHIFT (8) 1864 + #define AH_PCIE_LINK_PARAMS_ASPM_MODE_MASK (0x00ff0000) 1865 + #define AH_PCIE_LINK_PARAMS_ASPM_MODE_SHIFT (16) 1866 + #define AH_PCIE_LINK_PARAMS_ASPM_CAP_MASK (0xff000000) 1867 + #define AH_PCIE_LINK_PARAMS_ASPM_CAP_SHIFT (24) 1868 + #define AH_PCIE_LINK_PARAMS (*((u32 *)(STRUCT_OFFSET(ah_pcie_link_params)))) 1869 + 1870 + u32 rsrv_persist[5]; /* Persist reserved for MFW upgrades */ 1871 + }; 1872 + 1873 + #define NVM_MAGIC_VALUE 0x669955aa 1874 + 1875 + enum nvm_image_type { 1876 + NVM_TYPE_TIM1 = 0x01, 1877 + NVM_TYPE_TIM2 = 0x02, 1878 + NVM_TYPE_MIM1 = 0x03, 1879 + NVM_TYPE_MIM2 = 0x04, 1880 + NVM_TYPE_MBA = 0x05, 1881 + NVM_TYPE_MODULES_PN = 0x06, 1882 + NVM_TYPE_VPD = 0x07, 1883 + NVM_TYPE_MFW_TRACE1 = 0x08, 1884 + NVM_TYPE_MFW_TRACE2 = 0x09, 1885 + NVM_TYPE_NVM_CFG1 = 0x0a, 1886 + NVM_TYPE_L2B = 0x0b, 1887 + NVM_TYPE_DIR1 = 0x0c, 1888 + NVM_TYPE_EAGLE_FW1 = 0x0d, 1889 + NVM_TYPE_FALCON_FW1 = 0x0e, 1890 + NVM_TYPE_PCIE_FW1 = 0x0f, 1891 + NVM_TYPE_HW_SET = 0x10, 1892 + NVM_TYPE_LIM = 0x11, 1893 + NVM_TYPE_AVS_FW1 = 0x12, 1894 + NVM_TYPE_DIR2 = 0x13, 1895 + NVM_TYPE_CCM = 0x14, 1896 + NVM_TYPE_EAGLE_FW2 = 0x15, 1897 + NVM_TYPE_FALCON_FW2 = 0x16, 1898 + NVM_TYPE_PCIE_FW2 = 0x17, 1899 + NVM_TYPE_AVS_FW2 = 0x18, 1900 + NVM_TYPE_INIT_HW = 0x19, 1901 + NVM_TYPE_DEFAULT_CFG = 0x1a, 1902 + NVM_TYPE_MDUMP = 0x1b, 1903 + NVM_TYPE_META = 0x1c, 1904 + NVM_TYPE_ISCSI_CFG = 0x1d, 1905 + NVM_TYPE_FCOE_CFG = 0x1f, 1906 + NVM_TYPE_ETH_PHY_FW1 = 0x20, 1907 + NVM_TYPE_ETH_PHY_FW2 = 0x21, 1908 + NVM_TYPE_BDN = 0x22, 1909 + NVM_TYPE_8485X_PHY_FW = 0x23, 1910 + NVM_TYPE_PUB_KEY = 0x24, 1911 + NVM_TYPE_RECOVERY = 0x25, 1912 + NVM_TYPE_PLDM = 0x26, 1913 + NVM_TYPE_UPK1 = 0x27, 1914 + NVM_TYPE_UPK2 = 0x28, 1915 + NVM_TYPE_MASTER_KC = 0x29, 1916 + NVM_TYPE_BACKUP_KC = 0x2a, 1917 + NVM_TYPE_HW_DUMP = 0x2b, 1918 + NVM_TYPE_HW_DUMP_OUT = 0x2c, 1919 + NVM_TYPE_BIN_NVM_META = 0x30, 1920 + NVM_TYPE_ROM_TEST = 0xf0, 1921 + NVM_TYPE_88X33X0_PHY_FW = 0x31, 1922 + NVM_TYPE_88X33X0_PHY_SLAVE_FW = 0x32, 1923 + NVM_TYPE_MAX, 1924 + }; 1925 + 1926 + #define DIR_ID_1 (0) 1927 + 1928 + #endif
+1 -2
drivers/net/ethernet/qlogic/qed/qed_rdma.c
··· 22 22 #include "qed.h" 23 23 #include "qed_cxt.h" 24 24 #include "qed_hsi.h" 25 + #include "qed_iro_hsi.h" 25 26 #include "qed_hw.h" 26 27 #include "qed_init_ops.h" 27 28 #include "qed_int.h" ··· 33 32 #include "qed_rdma.h" 34 33 #include "qed_roce.h" 35 34 #include "qed_sp.h" 36 - 37 35 38 36 int qed_rdma_bmap_alloc(struct qed_hwfn *p_hwfn, 39 37 struct qed_bmap *bmap, u32 max_count, char *name) ··· 1902 1902 "Changing DPM_EN state to %d (DCBX=%d, DB_BAR=%d)\n", 1903 1903 val, p_hwfn->dcbx_no_edpm, p_hwfn->db_bar_no_edpm); 1904 1904 } 1905 - 1906 1905 1907 1906 void qed_rdma_dpm_bar(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt) 1908 1907 {
+5 -2
drivers/net/ethernet/qlogic/qed/qed_rdma.h
··· 168 168 169 169 return false; 170 170 } 171 + 171 172 #if IS_ENABLED(CONFIG_QED_RDMA) 172 173 void qed_rdma_dpm_bar(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt); 173 174 void qed_rdma_dpm_conf(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt); 174 175 int qed_rdma_info_alloc(struct qed_hwfn *p_hwfn); 175 176 void qed_rdma_info_free(struct qed_hwfn *p_hwfn); 176 177 #else 177 - static inline void qed_rdma_dpm_conf(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt) {} 178 + static inline void qed_rdma_dpm_conf(struct qed_hwfn *p_hwfn, 179 + struct qed_ptt *p_ptt) {} 178 180 static inline void qed_rdma_dpm_bar(struct qed_hwfn *p_hwfn, 179 181 struct qed_ptt *p_ptt) {} 180 - static inline int qed_rdma_info_alloc(struct qed_hwfn *p_hwfn) {return -EINVAL;} 182 + static inline int qed_rdma_info_alloc(struct qed_hwfn *p_hwfn) 183 + {return -EINVAL; } 181 184 static inline void qed_rdma_info_free(struct qed_hwfn *p_hwfn) {} 182 185 #endif 183 186
-1
drivers/net/ethernet/qlogic/qed/qed_roce.c
··· 792 792 if (rc) 793 793 goto err; 794 794 795 - 796 795 /* Free ORQ - only if ramrod succeeded, in case FW is still using it */ 797 796 dma_free_coherent(&p_hwfn->cdev->pdev->dev, 798 797 qp->orq_num_pages * RDMA_RING_PAGE_SIZE,
+1
drivers/net/ethernet/qlogic/qed/qed_spq.c
··· 20 20 #include "qed_cxt.h" 21 21 #include "qed_dev_api.h" 22 22 #include "qed_hsi.h" 23 + #include "qed_iro_hsi.h" 23 24 #include "qed_hw.h" 24 25 #include "qed_int.h" 25 26 #include "qed_iscsi.h"
+1
drivers/net/ethernet/qlogic/qed/qed_sriov.c
··· 11 11 #include <linux/qed/qed_iov_if.h> 12 12 #include "qed_cxt.h" 13 13 #include "qed_hsi.h" 14 + #include "qed_iro_hsi.h" 14 15 #include "qed_hw.h" 15 16 #include "qed_init_ops.h" 16 17 #include "qed_int.h"
+6 -5
drivers/net/ethernet/qlogic/qed/qed_vf.c
··· 27 27 "preparing to send 0x%04x tlv over vf pf channel\n", 28 28 type); 29 29 30 - /* Reset Requst offset */ 30 + /* Reset Request offset */ 31 31 p_iov->offset = (u8 *)p_iov->vf2pf_request; 32 32 33 33 /* Clear mailbox - both request and reply */ ··· 444 444 u32 reg; 445 445 int rc; 446 446 447 - /* Set number of hwfns - might be overriden once leading hwfn learns 447 + /* Set number of hwfns - might be overridden once leading hwfn learns 448 448 * actual configuration from PF. 449 449 */ 450 450 if (IS_LEAD_HWFN(p_hwfn)) ··· 504 504 QED_MSG_IOV, 505 505 "VF's Request mailbox [%p virt 0x%llx phys], Response mailbox [%p virt 0x%llx phys]\n", 506 506 p_iov->vf2pf_request, 507 - (u64) p_iov->vf2pf_request_phys, 507 + (u64)p_iov->vf2pf_request_phys, 508 508 p_iov->pf2vf_reply, (u64)p_iov->pf2vf_reply_phys); 509 509 510 510 /* Allocate Bulletin board */ ··· 561 561 562 562 return -ENOMEM; 563 563 } 564 + 564 565 #define TSTORM_QZONE_START PXP_VF_BAR0_START_SDM_ZONE_A 565 566 #define MSTORM_QZONE_START(dev) (TSTORM_QZONE_START + \ 566 567 (TSTORM_QZONE_SIZE * NUM_OF_L2_QUEUES(dev))) ··· 1286 1285 1287 1286 /* clear mailbox and prep first tlv */ 1288 1287 req = qed_vf_pf_prep(p_hwfn, CHANNEL_TLV_UCAST_FILTER, sizeof(*req)); 1289 - req->opcode = (u8) p_ucast->opcode; 1290 - req->type = (u8) p_ucast->type; 1288 + req->opcode = (u8)p_ucast->opcode; 1289 + req->type = (u8)p_ucast->type; 1291 1290 memcpy(req->mac, p_ucast->mac, ETH_ALEN); 1292 1291 req->vlan = p_ucast->vlan; 1293 1292
+3 -3
drivers/net/ethernet/qlogic/qed/qed_vf.h
··· 48 48 u16 length; 49 49 }; 50 50 51 - /* header of first vf->pf tlv carries the offset used to calculate reponse 51 + /* header of first vf->pf tlv carries the offset used to calculate response 52 52 * buffer address 53 53 */ 54 54 struct vfpf_first_tlv { ··· 85 85 struct vfpf_first_tlv first_tlv; 86 86 87 87 struct vf_pf_vfdev_info { 88 - #define VFPF_ACQUIRE_CAP_PRE_FP_HSI (1 << 0) /* VF pre-FP hsi version */ 89 - #define VFPF_ACQUIRE_CAP_100G (1 << 1) /* VF can support 100g */ 88 + #define VFPF_ACQUIRE_CAP_PRE_FP_HSI BIT(0) /* VF pre-FP hsi version */ 89 + #define VFPF_ACQUIRE_CAP_100G BIT(1) /* VF can support 100g */ 90 90 /* A requirement for supporting multi-Tx queues on a single queue-zone, 91 91 * VF would pass qids as additional information whenever passing queue 92 92 * references.