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

qed: Update qed_mfw_hsi.h for FW ver 8.59.1.0

The qed_mfw_hsi.h contains HSI (Hardware Software Interface) changes
related to management firmware. It has been updated to support new FW
version 8.59.1.0 with below changes.
- New defines for VF bitmap.
- fec_mode and extended_speed defines updated in struct eth_phy_cfg.
- Updated structutres lldp_system_tlvs_buffer_s, public_global,
public_port, public_func, drv_union_data, public_drv_mb
with all dependent new structures.
- Updates in NVM related structures and defines.
- Msg defines are added in enum drv_msg_code and fw_msg_code.
- Updated/added new defines.

This patch also fixes the existing checkpatch warnings and few important
checks.

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

authored by

Prabhakar Kushwaha and committed by
David S. Miller
f2a74107 484563e2

+795 -258
+7 -9
drivers/net/ethernet/qlogic/qed/qed_main.c
··· 99 99 ETHTOOL_LINK_MODE_10000baseLRM_Full_BIT, 100 100 }; 101 101 102 - static const u32 qed_mfw_ext_20g[] __initconst = { 103 - ETHTOOL_LINK_MODE_20000baseKR2_Full_BIT, 104 - }; 105 - 106 102 static const u32 qed_mfw_ext_25g[] __initconst = { 107 103 ETHTOOL_LINK_MODE_25000baseKR_Full_BIT, 108 104 ETHTOOL_LINK_MODE_25000baseCR_Full_BIT, ··· 144 148 static struct qed_mfw_speed_map qed_mfw_ext_maps[] __ro_after_init = { 145 149 QED_MFW_SPEED_MAP(ETH_EXT_ADV_SPEED_1G, qed_mfw_ext_1g), 146 150 QED_MFW_SPEED_MAP(ETH_EXT_ADV_SPEED_10G, qed_mfw_ext_10g), 147 - QED_MFW_SPEED_MAP(ETH_EXT_ADV_SPEED_20G, qed_mfw_ext_20g), 148 151 QED_MFW_SPEED_MAP(ETH_EXT_ADV_SPEED_25G, qed_mfw_ext_25g), 149 152 QED_MFW_SPEED_MAP(ETH_EXT_ADV_SPEED_40G, qed_mfw_ext_40g), 150 153 QED_MFW_SPEED_MAP(ETH_EXT_ADV_SPEED_50G_BASE_R, ··· 257 262 258 263 /* Check if the DMA controller on the machine can properly handle the DMA 259 264 * addressing required by the device. 260 - */ 265 + */ 261 266 static int qed_set_coherency_mask(struct qed_dev *cdev) 262 267 { 263 268 struct device *dev = &cdev->pdev->dev; ··· 542 547 goto err2; 543 548 } 544 549 545 - DP_INFO(cdev, "qed_probe completed successfully\n"); 550 + DP_INFO(cdev, "%s completed successfully\n", __func__); 546 551 547 552 return cdev; 548 553 ··· 975 980 976 981 rc = qed_set_int_mode(cdev, false); 977 982 if (rc) { 978 - DP_ERR(cdev, "qed_slowpath_setup_int ERR\n"); 983 + DP_ERR(cdev, "%s ERR\n", __func__); 979 984 return rc; 980 985 } 981 986 ··· 1156 1161 /* Memory barrier for setting atomic bit */ 1157 1162 smp_mb__before_atomic(); 1158 1163 set_bit(wq_flag, &hwfn->slowpath_task_flags); 1164 + /* Memory barrier after setting atomic bit */ 1159 1165 smp_mb__after_atomic(); 1160 1166 queue_delayed_work(hwfn->slowpath_wq, &hwfn->slowpath_task, delay); 1161 1167 ··· 1377 1381 (params->drv_minor << 16) | 1378 1382 (params->drv_rev << 8) | 1379 1383 (params->drv_eng); 1380 - strlcpy(drv_version.name, params->name, 1384 + strscpy(drv_version.name, params->name, 1381 1385 MCP_DRV_VER_STR_SIZE - 4); 1382 1386 rc = qed_mcp_send_drv_version(hwfn, hwfn->p_main_ptt, 1383 1387 &drv_version); ··· 3074 3078 DP_VERBOSE(hwfn->cdev, NETIF_MSG_DRV, 3075 3079 "Scheduling slowpath task [Flag: %d]\n", 3076 3080 QED_SLOWPATH_MFW_TLV_REQ); 3081 + /* Memory barrier for setting atomic bit */ 3077 3082 smp_mb__before_atomic(); 3078 3083 set_bit(QED_SLOWPATH_MFW_TLV_REQ, &hwfn->slowpath_task_flags); 3084 + /* Memory barrier after setting atomic bit */ 3079 3085 smp_mb__after_atomic(); 3080 3086 queue_delayed_work(hwfn->slowpath_wq, &hwfn->slowpath_task, 0); 3081 3087
+2 -9
drivers/net/ethernet/qlogic/qed/qed_mcp.c
··· 1527 1527 FW_MB_PARAM_FEATURE_SUPPORT_EXT_SPEED_FEC_CONTROL) { 1528 1528 ext_speed = 0; 1529 1529 if (params->ext_speed.autoneg) 1530 - ext_speed |= ETH_EXT_SPEED_AN; 1530 + ext_speed |= ETH_EXT_SPEED_NONE; 1531 1531 1532 1532 val = params->ext_speed.forced_speed; 1533 1533 if (val & QED_EXT_SPEED_1G) 1534 1534 ext_speed |= ETH_EXT_SPEED_1G; 1535 1535 if (val & QED_EXT_SPEED_10G) 1536 1536 ext_speed |= ETH_EXT_SPEED_10G; 1537 - if (val & QED_EXT_SPEED_20G) 1538 - ext_speed |= ETH_EXT_SPEED_20G; 1539 1537 if (val & QED_EXT_SPEED_25G) 1540 1538 ext_speed |= ETH_EXT_SPEED_25G; 1541 1539 if (val & QED_EXT_SPEED_40G) ··· 1559 1561 ext_speed |= ETH_EXT_ADV_SPEED_1G; 1560 1562 if (val & QED_EXT_SPEED_MASK_10G) 1561 1563 ext_speed |= ETH_EXT_ADV_SPEED_10G; 1562 - if (val & QED_EXT_SPEED_MASK_20G) 1563 - ext_speed |= ETH_EXT_ADV_SPEED_20G; 1564 1564 if (val & QED_EXT_SPEED_MASK_25G) 1565 1565 ext_speed |= ETH_EXT_ADV_SPEED_25G; 1566 1566 if (val & QED_EXT_SPEED_MASK_40G) ··· 2441 2445 break; 2442 2446 case FUNC_MF_CFG_PROTOCOL_ISCSI: 2443 2447 *p_proto = QED_PCI_ISCSI; 2444 - break; 2445 - case FUNC_MF_CFG_PROTOCOL_NVMETCP: 2446 - *p_proto = QED_PCI_NVMETCP; 2447 2448 break; 2448 2449 case FUNC_MF_CFG_PROTOCOL_FCOE: 2449 2450 *p_proto = QED_PCI_FCOE; ··· 3382 3389 type = NVM_TYPE_DEFAULT_CFG; 3383 3390 break; 3384 3391 case QED_NVM_IMAGE_NVM_META: 3385 - type = NVM_TYPE_META; 3392 + type = NVM_TYPE_NVM_META; 3386 3393 break; 3387 3394 default: 3388 3395 DP_NOTICE(p_hwfn, "Unknown request of image_id %08x\n",
+786 -240
drivers/net/ethernet/qlogic/qed/qed_mfw_hsi.h
··· 35 35 }; 36 36 37 37 #define VF_MAX_STATIC 192 38 + #define VF_BITMAP_SIZE_IN_DWORDS (VF_MAX_STATIC / 32) 39 + #define VF_BITMAP_SIZE_IN_BYTES (VF_BITMAP_SIZE_IN_DWORDS * sizeof(u32)) 40 + 41 + #define EXT_VF_MAX_STATIC 240 42 + #define EXT_VF_BITMAP_SIZE_IN_DWORDS (((EXT_VF_MAX_STATIC - 1) / 32) + 1) 43 + #define EXT_VF_BITMAP_SIZE_IN_BYTES (EXT_VF_BITMAP_SIZE_IN_DWORDS * sizeof(u32)) 44 + #define ADDED_VF_BITMAP_SIZE 2 38 45 39 46 #define MCP_GLOB_PATH_MAX 2 40 47 #define MCP_PORT_MAX 2 ··· 108 101 #define EEE_TX_TIMER_USEC_AGGRESSIVE_TIME 0x100 109 102 #define EEE_TX_TIMER_USEC_LATENCY_TIME 0x6000 110 103 111 - u32 deprecated; 104 + u32 link_modes; 112 105 113 106 u32 fec_mode; 114 107 #define FEC_FORCE_MODE_MASK 0x000000ff ··· 119 112 #define FEC_FORCE_MODE_AUTO 0x07 120 113 #define FEC_EXTENDED_MODE_MASK 0xffffff00 121 114 #define FEC_EXTENDED_MODE_OFFSET 8 122 - #define ETH_EXT_FEC_NONE 0x00000100 123 - #define ETH_EXT_FEC_10G_NONE 0x00000200 124 - #define ETH_EXT_FEC_10G_BASE_R 0x00000400 125 - #define ETH_EXT_FEC_20G_NONE 0x00000800 126 - #define ETH_EXT_FEC_20G_BASE_R 0x00001000 127 - #define ETH_EXT_FEC_25G_NONE 0x00002000 128 - #define ETH_EXT_FEC_25G_BASE_R 0x00004000 129 - #define ETH_EXT_FEC_25G_RS528 0x00008000 130 - #define ETH_EXT_FEC_40G_NONE 0x00010000 131 - #define ETH_EXT_FEC_40G_BASE_R 0x00020000 132 - #define ETH_EXT_FEC_50G_NONE 0x00040000 133 - #define ETH_EXT_FEC_50G_BASE_R 0x00080000 134 - #define ETH_EXT_FEC_50G_RS528 0x00100000 135 - #define ETH_EXT_FEC_50G_RS544 0x00200000 136 - #define ETH_EXT_FEC_100G_NONE 0x00400000 137 - #define ETH_EXT_FEC_100G_BASE_R 0x00800000 138 - #define ETH_EXT_FEC_100G_RS528 0x01000000 139 - #define ETH_EXT_FEC_100G_RS544 0x02000000 115 + #define ETH_EXT_FEC_NONE 0x00000000 116 + #define ETH_EXT_FEC_10G_NONE 0x00000100 117 + #define ETH_EXT_FEC_10G_BASE_R 0x00000200 118 + #define ETH_EXT_FEC_25G_NONE 0x00000400 119 + #define ETH_EXT_FEC_25G_BASE_R 0x00000800 120 + #define ETH_EXT_FEC_25G_RS528 0x00001000 121 + #define ETH_EXT_FEC_40G_NONE 0x00002000 122 + #define ETH_EXT_FEC_40G_BASE_R 0x00004000 123 + #define ETH_EXT_FEC_50G_NONE 0x00008000 124 + #define ETH_EXT_FEC_50G_BASE_R 0x00010000 125 + #define ETH_EXT_FEC_50G_RS528 0x00020000 126 + #define ETH_EXT_FEC_50G_RS544 0x00040000 127 + #define ETH_EXT_FEC_100G_NONE 0x00080000 128 + #define ETH_EXT_FEC_100G_BASE_R 0x00100000 129 + #define ETH_EXT_FEC_100G_RS528 0x00200000 130 + #define ETH_EXT_FEC_100G_RS544 0x00400000 140 131 141 132 u32 extended_speed; 142 133 #define ETH_EXT_SPEED_MASK 0x0000ffff 143 134 #define ETH_EXT_SPEED_OFFSET 0 144 - #define ETH_EXT_SPEED_AN 0x00000001 135 + #define ETH_EXT_SPEED_NONE 0x00000001 145 136 #define ETH_EXT_SPEED_1G 0x00000002 146 137 #define ETH_EXT_SPEED_10G 0x00000004 147 - #define ETH_EXT_SPEED_20G 0x00000008 148 - #define ETH_EXT_SPEED_25G 0x00000010 149 - #define ETH_EXT_SPEED_40G 0x00000020 150 - #define ETH_EXT_SPEED_50G_BASE_R 0x00000040 151 - #define ETH_EXT_SPEED_50G_BASE_R2 0x00000080 152 - #define ETH_EXT_SPEED_100G_BASE_R2 0x00000100 153 - #define ETH_EXT_SPEED_100G_BASE_R4 0x00000200 154 - #define ETH_EXT_SPEED_100G_BASE_P4 0x00000400 155 - #define ETH_EXT_ADV_SPEED_MASK 0xffff0000 138 + #define ETH_EXT_SPEED_25G 0x00000008 139 + #define ETH_EXT_SPEED_40G 0x00000010 140 + #define ETH_EXT_SPEED_50G_BASE_R 0x00000020 141 + #define ETH_EXT_SPEED_50G_BASE_R2 0x00000040 142 + #define ETH_EXT_SPEED_100G_BASE_R2 0x00000080 143 + #define ETH_EXT_SPEED_100G_BASE_R4 0x00000100 144 + #define ETH_EXT_SPEED_100G_BASE_P4 0x00000200 145 + #define ETH_EXT_ADV_SPEED_MASK 0xFFFF0000 156 146 #define ETH_EXT_ADV_SPEED_OFFSET 16 157 - #define ETH_EXT_ADV_SPEED_RESERVED 0x00010000 158 - #define ETH_EXT_ADV_SPEED_1G 0x00020000 159 - #define ETH_EXT_ADV_SPEED_10G 0x00040000 160 - #define ETH_EXT_ADV_SPEED_20G 0x00080000 161 - #define ETH_EXT_ADV_SPEED_25G 0x00100000 162 - #define ETH_EXT_ADV_SPEED_40G 0x00200000 163 - #define ETH_EXT_ADV_SPEED_50G_BASE_R 0x00400000 164 - #define ETH_EXT_ADV_SPEED_50G_BASE_R2 0x00800000 165 - #define ETH_EXT_ADV_SPEED_100G_BASE_R2 0x01000000 166 - #define ETH_EXT_ADV_SPEED_100G_BASE_R4 0x02000000 167 - #define ETH_EXT_ADV_SPEED_100G_BASE_P4 0x04000000 147 + #define ETH_EXT_ADV_SPEED_1G 0x00010000 148 + #define ETH_EXT_ADV_SPEED_10G 0x00020000 149 + #define ETH_EXT_ADV_SPEED_25G 0x00040000 150 + #define ETH_EXT_ADV_SPEED_40G 0x00080000 151 + #define ETH_EXT_ADV_SPEED_50G_BASE_R 0x00100000 152 + #define ETH_EXT_ADV_SPEED_50G_BASE_R2 0x00200000 153 + #define ETH_EXT_ADV_SPEED_100G_BASE_R2 0x00400000 154 + #define ETH_EXT_ADV_SPEED_100G_BASE_R4 0x00800000 155 + #define ETH_EXT_ADV_SPEED_100G_BASE_P4 0x01000000 168 156 }; 169 157 170 158 struct port_mf_cfg { ··· 254 252 u64 txcf; 255 253 }; 256 254 255 + struct pkt_type_cnt { 256 + u64 tc_tx_pkt_cnt[8]; 257 + u64 tc_tx_oct_cnt[8]; 258 + u64 priority_rx_pkt_cnt[8]; 259 + u64 priority_rx_oct_cnt[8]; 260 + }; 261 + 257 262 struct brb_stats { 258 263 u64 brb_truncate[8]; 259 264 u64 brb_discard[8]; ··· 288 279 #define LLDP_PORT_ID_STAT_LEN 4 289 280 #define DCBX_MAX_APP_PROTOCOL 32 290 281 #define MAX_SYSTEM_LLDP_TLV_DATA 32 282 + #define MAX_TLV_BUFFER 128 291 283 292 284 enum _lldp_agent { 293 285 LLDP_NEAREST_BRIDGE = 0, ··· 337 327 #define DCBX_OOO_TC_SHIFT 8 338 328 u32 pri_tc_tbl[1]; 339 329 #define DCBX_TCP_OOO_TC (4) 330 + #define DCBX_TCP_OOO_K2_4PORT_TC (3) 340 331 341 332 #define NIG_ETS_ISCSI_OOO_CLIENT_OFFSET (DCBX_TCP_OOO_TC + 1) 342 333 #define DCBX_CEE_STRICT_PRIORITY 0xf ··· 445 434 }; 446 435 447 436 struct lldp_system_tlvs_buffer_s { 448 - u16 valid; 449 - u16 length; 437 + u32 flags; 438 + #define LLDP_SYSTEM_TLV_VALID_MASK 0x1 439 + #define LLDP_SYSTEM_TLV_VALID_OFFSET 0 440 + #define LLDP_SYSTEM_TLV_MANDATORY_MASK 0x2 441 + #define LLDP_SYSTEM_TLV_MANDATORY_SHIFT 1 442 + #define LLDP_SYSTEM_TLV_LENGTH_MASK 0xffff0000 443 + #define LLDP_SYSTEM_TLV_LENGTH_SHIFT 16 450 444 u32 data[MAX_SYSTEM_LLDP_TLV_DATA]; 445 + }; 446 + 447 + struct lldp_received_tlvs_s { 448 + u32 prefix_seq_num; 449 + u32 length; 450 + u32 tlvs_buffer[MAX_TLV_BUFFER]; 451 + u32 suffix_seq_num; 451 452 }; 452 453 453 454 struct dcb_dscp_map { ··· 468 445 #define DCB_DSCP_ENABLE_SHIFT 0 469 446 #define DCB_DSCP_ENABLE 1 470 447 u32 dscp_pri_map[8]; 448 + }; 449 + 450 + struct mcp_val64 { 451 + u32 lo; 452 + u32 hi; 453 + }; 454 + 455 + struct generic_idc_msg_s { 456 + u32 source_pf; 457 + struct mcp_val64 msg; 458 + }; 459 + 460 + struct pcie_stats_stc { 461 + u32 sr_cnt_wr_byte_msb; 462 + u32 sr_cnt_wr_byte_lsb; 463 + u32 sr_cnt_wr_cnt; 464 + u32 sr_cnt_rd_byte_msb; 465 + u32 sr_cnt_rd_byte_lsb; 466 + u32 sr_cnt_rd_cnt; 467 + }; 468 + 469 + enum _attribute_commands_e { 470 + ATTRIBUTE_CMD_READ = 0, 471 + ATTRIBUTE_CMD_WRITE, 472 + ATTRIBUTE_CMD_READ_CLEAR, 473 + ATTRIBUTE_CMD_CLEAR, 474 + ATTRIBUTE_NUM_OF_COMMANDS 471 475 }; 472 476 473 477 struct public_global { ··· 512 462 u32 running_bundle_id; 513 463 s32 external_temperature; 514 464 u32 mdump_reason; 515 - u64 reserved; 465 + u32 ext_phy_upgrade_fw; 466 + u8 runtime_port_swap_map[MODE_4P]; 516 467 u32 data_ptr; 517 468 u32 data_size; 469 + u32 bmb_error_status_cnt; 470 + u32 bmb_jumbo_frame_cnt; 471 + u32 sent_to_bmc_cnt; 472 + u32 handled_by_mfw; 473 + u32 sent_to_nw_cnt; 474 + u32 to_bmc_kb_per_second; 475 + u32 bcast_dropped_to_bmc_cnt; 476 + u32 mcast_dropped_to_bmc_cnt; 477 + u32 ucast_dropped_to_bmc_cnt; 478 + u32 ncsi_response_failure_cnt; 479 + u32 device_attr; 480 + u32 vpd_warning; 518 481 }; 519 482 520 483 struct fw_flr_mb { ··· 546 483 #define PROCESS_KILL_GLOB_AEU_BIT_MASK 0xffff0000 547 484 #define PROCESS_KILL_GLOB_AEU_BIT_SHIFT 16 548 485 #define GLOBAL_AEU_BIT(aeu_reg_id, aeu_bit) ((aeu_reg_id) * 32 + (aeu_bit)) 486 + }; 487 + 488 + #define FC_NPIV_WWPN_SIZE 8 489 + #define FC_NPIV_WWNN_SIZE 8 490 + struct dci_npiv_settings { 491 + u8 npiv_wwpn[FC_NPIV_WWPN_SIZE]; 492 + u8 npiv_wwnn[FC_NPIV_WWNN_SIZE]; 493 + }; 494 + 495 + struct dci_fc_npiv_cfg { 496 + /* hdr used internally by the MFW */ 497 + u32 hdr; 498 + u32 num_of_npiv; 499 + }; 500 + 501 + #define MAX_NUMBER_NPIV 64 502 + struct dci_fc_npiv_tbl { 503 + struct dci_fc_npiv_cfg fc_npiv_cfg; 504 + struct dci_npiv_settings settings[MAX_NUMBER_NPIV]; 505 + }; 506 + 507 + struct pause_flood_monitor { 508 + u8 period_cnt; 509 + u8 any_brb_prs_packet_hist; 510 + u8 any_brb_block_is_full_hist; 511 + u8 flags; 512 + u32 num_of_state_changes; 549 513 }; 550 514 551 515 struct public_port { ··· 618 528 #define LINK_STATUS_FEC_MODE_NONE (0 << 27) 619 529 #define LINK_STATUS_FEC_MODE_FIRECODE_CL74 BIT(27) 620 530 #define LINK_STATUS_FEC_MODE_RS_CL91 (2 << 27) 531 + #define LINK_STATUS_EXT_PHY_LINK_UP BIT(30) 621 532 622 533 u32 link_status1; 623 534 u32 ext_phy_fw_version; ··· 654 563 struct dcbx_mib remote_dcbx_mib; 655 564 struct dcbx_mib operational_dcbx_mib; 656 565 657 - u32 reserved[2]; 566 + u32 fc_npiv_nvram_tbl_addr; 567 + u32 fc_npiv_nvram_tbl_size; 658 568 659 569 u32 transceiver_data; 660 570 #define ETH_TRANSCEIVER_STATE_MASK 0x000000ff ··· 665 573 #define ETH_TRANSCEIVER_STATE_PRESENT 0x00000001 666 574 #define ETH_TRANSCEIVER_STATE_VALID 0x00000003 667 575 #define ETH_TRANSCEIVER_STATE_UPDATING 0x00000008 576 + #define ETH_TRANSCEIVER_STATE_IN_SETUP 0x10 668 577 #define ETH_TRANSCEIVER_TYPE_MASK 0x0000ff00 669 578 #define ETH_TRANSCEIVER_TYPE_OFFSET 0x8 670 579 #define ETH_TRANSCEIVER_TYPE_NONE 0x00 ··· 740 647 #define EEE_REMOTE_TW_RX_MASK 0xffff0000 741 648 #define EEE_REMOTE_TW_RX_OFFSET 16 742 649 743 - u32 reserved1; 650 + u32 module_info; 651 + 744 652 u32 oem_cfg_port; 745 653 #define OEM_CFG_CHANNEL_TYPE_MASK 0x00000003 746 654 #define OEM_CFG_CHANNEL_TYPE_OFFSET 0 ··· 751 657 #define OEM_CFG_SCHED_TYPE_OFFSET 2 752 658 #define OEM_CFG_SCHED_TYPE_ETS 0x1 753 659 #define OEM_CFG_SCHED_TYPE_VNIC_BW 0x2 660 + 661 + struct lldp_received_tlvs_s lldp_received_tlvs[LLDP_MAX_LLDP_AGENTS]; 662 + u32 system_lldp_tlvs_buf2[MAX_SYSTEM_LLDP_TLV_DATA]; 663 + u32 phy_module_temperature; 664 + u32 nig_reg_stat_rx_bmb_packet; 665 + u32 nig_reg_rx_llh_ncsi_mcp_mask; 666 + u32 nig_reg_rx_llh_ncsi_mcp_mask_2; 667 + struct pause_flood_monitor pause_flood_monitor; 668 + u32 nig_drain_cnt; 669 + struct pkt_type_cnt pkt_tc_priority_cnt; 670 + }; 671 + 672 + #define MCP_DRV_VER_STR_SIZE 16 673 + #define MCP_DRV_VER_STR_SIZE_DWORD (MCP_DRV_VER_STR_SIZE / sizeof(u32)) 674 + #define MCP_DRV_NVM_BUF_LEN 32 675 + struct drv_version_stc { 676 + u32 version; 677 + u8 name[MCP_DRV_VER_STR_SIZE - 4]; 754 678 }; 755 679 756 680 struct public_func { 757 - u32 reserved0[2]; 681 + u32 iscsi_boot_signature; 682 + u32 iscsi_boot_block_offset; 758 683 759 684 u32 mtu_size; 760 685 761 - u32 reserved[7]; 686 + u32 c2s_pcp_map_lower; 687 + u32 c2s_pcp_map_upper; 688 + u32 c2s_pcp_map_default; 689 + 690 + struct generic_idc_msg_s generic_idc_msg; 691 + 692 + u32 num_of_msix; 762 693 763 694 u32 config; 764 695 #define FUNC_MF_CFG_FUNC_HIDE 0x00000001 ··· 796 677 #define FUNC_MF_CFG_PROTOCOL_ISCSI 0x00000010 797 678 #define FUNC_MF_CFG_PROTOCOL_FCOE 0x00000020 798 679 #define FUNC_MF_CFG_PROTOCOL_ROCE 0x00000030 799 - #define FUNC_MF_CFG_PROTOCOL_NVMETCP 0x00000040 800 - #define FUNC_MF_CFG_PROTOCOL_MAX 0x00000040 680 + #define FUNC_MF_CFG_PROTOCOL_MAX 0x00000030 801 681 802 682 #define FUNC_MF_CFG_MIN_BW_MASK 0x0000ff00 803 683 #define FUNC_MF_CFG_MIN_BW_SHIFT 8 ··· 869 751 #define OEM_CFG_FUNC_HOST_PRI_CTRL_OFFSET 4 870 752 #define OEM_CFG_FUNC_HOST_PRI_CTRL_VNIC 0x1 871 753 #define OEM_CFG_FUNC_HOST_PRI_CTRL_OS 0x2 754 + 755 + struct drv_version_stc drv_ver; 872 756 }; 873 757 874 758 struct mcp_mac { 875 759 u32 mac_upper; 876 760 u32 mac_lower; 877 - }; 878 - 879 - struct mcp_val64 { 880 - u32 lo; 881 - u32 hi; 882 761 }; 883 762 884 763 struct mcp_file_att { ··· 888 773 u32 image_type; 889 774 u32 nvm_start_addr; 890 775 u32 len; 891 - }; 892 - 893 - #define MCP_DRV_VER_STR_SIZE 16 894 - #define MCP_DRV_VER_STR_SIZE_DWORD (MCP_DRV_VER_STR_SIZE / sizeof(u32)) 895 - #define MCP_DRV_NVM_BUF_LEN 32 896 - struct drv_version_stc { 897 - u32 version; 898 - u8 name[MCP_DRV_VER_STR_SIZE - 4]; 899 776 }; 900 777 901 778 struct lan_stats_stc { ··· 904 797 u32 login_failure; 905 798 }; 906 799 800 + struct iscsi_stats_stc { 801 + u64 rx_pdus; 802 + u64 tx_pdus; 803 + u64 rx_bytes; 804 + u64 tx_bytes; 805 + }; 806 + 807 + struct rdma_stats_stc { 808 + u64 rx_pkts; 809 + u64 tx_pkts; 810 + u64 rx_bytes; 811 + u64 tx_bytes; 812 + }; 813 + 907 814 struct ocbb_data_stc { 908 815 u32 ocbb_host_addr; 909 816 u32 ocsd_host_addr; 910 817 u32 ocsd_req_update_interval; 818 + }; 819 + 820 + struct fcoe_cap_stc { 821 + u32 max_ios; 822 + u32 max_log; 823 + u32 max_exch; 824 + u32 max_npiv; 825 + u32 max_tgt; 826 + u32 max_outstnd; 911 827 }; 912 828 913 829 #define MAX_NUM_OF_SENSORS 7 ··· 989 859 #define RESOURCE_ELEMENT_STRICT BIT(0) 990 860 }; 991 861 862 + struct mcp_wwn { 863 + u32 wwn_upper; 864 + u32 wwn_lower; 865 + }; 866 + 992 867 #define DRV_ROLE_NONE 0 993 868 #define DRV_ROLE_PREBOOT 1 994 869 #define DRV_ROLE_OS 2 ··· 1041 906 u32 status; 1042 907 }; 1043 908 909 + struct attribute_cmd_write_stc { 910 + u32 val; 911 + u32 mask; 912 + u32 offset; 913 + }; 914 + 915 + struct lldp_stats_stc { 916 + u32 tx_frames_total; 917 + u32 rx_frames_total; 918 + u32 rx_frames_discarded; 919 + u32 rx_age_outs; 920 + }; 921 + 922 + struct get_att_ctrl_stc { 923 + u32 disabled_attns; 924 + u32 controllable_attns; 925 + }; 926 + 927 + struct trace_filter_stc { 928 + u32 level; 929 + u32 modules; 930 + }; 931 + 1044 932 union drv_union_data { 1045 - u32 ver_str[MCP_DRV_VER_STR_SIZE_DWORD]; 1046 933 struct mcp_mac wol_mac; 1047 934 1048 935 struct eth_phy_cfg drv_phy_cfg; ··· 1075 918 1076 919 struct mcp_file_att file_att; 1077 920 1078 - u32 ack_vf_disabled[VF_MAX_STATIC / 32]; 921 + u32 ack_vf_disabled[EXT_VF_BITMAP_SIZE_IN_DWORDS]; 1079 922 1080 923 struct drv_version_stc drv_version; 1081 924 1082 925 struct lan_stats_stc lan_stats; 1083 926 struct fcoe_stats_stc fcoe_stats; 927 + struct iscsi_stats_stc iscsi_stats; 928 + struct rdma_stats_stc rdma_stats; 1084 929 struct ocbb_data_stc ocbb_info; 1085 930 struct temperature_status_stc temp_info; 1086 931 struct resource_info resource; 1087 932 struct bist_nvm_image_att nvm_image_att; 1088 933 struct mdump_config_stc mdump_config; 934 + struct mcp_mac lldp_mac; 935 + struct mcp_wwn fcoe_fabric_name; 936 + u32 dword; 937 + 938 + struct load_req_stc load_req; 939 + struct load_rsp_stc load_rsp; 940 + struct mdump_retain_data_stc mdump_retain; 941 + struct attribute_cmd_write_stc attribute_cmd_write; 942 + struct lldp_stats_stc lldp_stats; 943 + struct pcie_stats_stc pcie_stats; 944 + 945 + struct get_att_ctrl_stc get_att_ctrl; 946 + struct fcoe_cap_stc fcoe_cap; 947 + struct trace_filter_stc trace_filter; 1089 948 }; 1090 949 1091 950 struct public_drv_mb { 1092 951 u32 drv_mb_header; 952 + #define DRV_MSG_SEQ_NUMBER_MASK 0x0000ffff 953 + #define DRV_MSG_SEQ_NUMBER_OFFSET 0 1093 954 #define DRV_MSG_CODE_MASK 0xffff0000 1094 - #define DRV_MSG_CODE_LOAD_REQ 0x10000000 1095 - #define DRV_MSG_CODE_LOAD_DONE 0x11000000 1096 - #define DRV_MSG_CODE_INIT_HW 0x12000000 1097 - #define DRV_MSG_CODE_CANCEL_LOAD_REQ 0x13000000 1098 - #define DRV_MSG_CODE_UNLOAD_REQ 0x20000000 1099 - #define DRV_MSG_CODE_UNLOAD_DONE 0x21000000 1100 - #define DRV_MSG_CODE_INIT_PHY 0x22000000 1101 - #define DRV_MSG_CODE_LINK_RESET 0x23000000 1102 - #define DRV_MSG_CODE_SET_DCBX 0x25000000 1103 - #define DRV_MSG_CODE_OV_UPDATE_CURR_CFG 0x26000000 1104 - #define DRV_MSG_CODE_OV_UPDATE_BUS_NUM 0x27000000 1105 - #define DRV_MSG_CODE_OV_UPDATE_BOOT_PROGRESS 0x28000000 1106 - #define DRV_MSG_CODE_OV_UPDATE_STORM_FW_VER 0x29000000 1107 - #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE 0x31000000 1108 - #define DRV_MSG_CODE_BW_UPDATE_ACK 0x32000000 1109 - #define DRV_MSG_CODE_OV_UPDATE_MTU 0x33000000 1110 - #define DRV_MSG_GET_RESOURCE_ALLOC_MSG 0x34000000 1111 - #define DRV_MSG_SET_RESOURCE_VALUE_MSG 0x35000000 1112 - #define DRV_MSG_CODE_OV_UPDATE_WOL 0x38000000 1113 - #define DRV_MSG_CODE_OV_UPDATE_ESWITCH_MODE 0x39000000 1114 - #define DRV_MSG_CODE_GET_OEM_UPDATES 0x41000000 955 + #define DRV_MSG_CODE_OFFSET 16 1115 956 1116 - #define DRV_MSG_CODE_BW_UPDATE_ACK 0x32000000 1117 - #define DRV_MSG_CODE_NIG_DRAIN 0x30000000 1118 - #define DRV_MSG_CODE_S_TAG_UPDATE_ACK 0x3b000000 1119 - #define DRV_MSG_CODE_GET_NVM_CFG_OPTION 0x003e0000 1120 - #define DRV_MSG_CODE_SET_NVM_CFG_OPTION 0x003f0000 1121 - #define DRV_MSG_CODE_INITIATE_PF_FLR 0x02010000 1122 - #define DRV_MSG_CODE_VF_DISABLED_DONE 0xc0000000 1123 - #define DRV_MSG_CODE_CFG_VF_MSIX 0xc0010000 1124 - #define DRV_MSG_CODE_CFG_PF_VFS_MSIX 0xc0020000 1125 - #define DRV_MSG_CODE_NVM_PUT_FILE_BEGIN 0x00010000 1126 - #define DRV_MSG_CODE_NVM_PUT_FILE_DATA 0x00020000 1127 - #define DRV_MSG_CODE_NVM_GET_FILE_ATT 0x00030000 1128 - #define DRV_MSG_CODE_NVM_READ_NVRAM 0x00050000 1129 - #define DRV_MSG_CODE_NVM_WRITE_NVRAM 0x00060000 1130 - #define DRV_MSG_CODE_MCP_RESET 0x00090000 1131 - #define DRV_MSG_CODE_SET_VERSION 0x000f0000 1132 - #define DRV_MSG_CODE_MCP_HALT 0x00100000 1133 - #define DRV_MSG_CODE_SET_VMAC 0x00110000 1134 - #define DRV_MSG_CODE_GET_VMAC 0x00120000 957 + u32 drv_mb_param; 958 + 959 + u32 fw_mb_header; 960 + #define FW_MSG_SEQ_NUMBER_MASK 0x0000ffff 961 + #define FW_MSG_SEQ_NUMBER_OFFSET 0 962 + #define FW_MSG_CODE_MASK 0xffff0000 963 + #define FW_MSG_CODE_OFFSET 16 964 + 965 + u32 fw_mb_param; 966 + 967 + u32 drv_pulse_mb; 968 + #define DRV_PULSE_SEQ_MASK 0x00007fff 969 + #define DRV_PULSE_SYSTEM_TIME_MASK 0xffff0000 970 + #define DRV_PULSE_ALWAYS_ALIVE 0x00008000 971 + 972 + u32 mcp_pulse_mb; 973 + #define MCP_PULSE_SEQ_MASK 0x00007fff 974 + #define MCP_PULSE_ALWAYS_ALIVE 0x00008000 975 + #define MCP_EVENT_MASK 0xffff0000 976 + #define MCP_EVENT_OTHER_DRIVER_RESET_REQ 0x00010000 977 + 978 + union drv_union_data union_data; 979 + }; 980 + 981 + #define DRV_MSG_CODE(_code_) ((_code_) << DRV_MSG_CODE_OFFSET) 982 + enum drv_msg_code_enum { 983 + DRV_MSG_CODE_NVM_PUT_FILE_BEGIN = DRV_MSG_CODE(0x0001), 984 + DRV_MSG_CODE_NVM_PUT_FILE_DATA = DRV_MSG_CODE(0x0002), 985 + DRV_MSG_CODE_NVM_GET_FILE_ATT = DRV_MSG_CODE(0x0003), 986 + DRV_MSG_CODE_NVM_READ_NVRAM = DRV_MSG_CODE(0x0005), 987 + DRV_MSG_CODE_NVM_WRITE_NVRAM = DRV_MSG_CODE(0x0006), 988 + DRV_MSG_CODE_MCP_RESET = DRV_MSG_CODE(0x0009), 989 + DRV_MSG_CODE_SET_VERSION = DRV_MSG_CODE(0x000f), 990 + DRV_MSG_CODE_MCP_HALT = DRV_MSG_CODE(0x0010), 991 + DRV_MSG_CODE_SET_VMAC = DRV_MSG_CODE(0x0011), 992 + DRV_MSG_CODE_GET_VMAC = DRV_MSG_CODE(0x0012), 993 + DRV_MSG_CODE_GET_STATS = DRV_MSG_CODE(0x0013), 994 + DRV_MSG_CODE_TRANSCEIVER_READ = DRV_MSG_CODE(0x0016), 995 + DRV_MSG_CODE_MASK_PARITIES = DRV_MSG_CODE(0x001a), 996 + DRV_MSG_CODE_BIST_TEST = DRV_MSG_CODE(0x001e), 997 + DRV_MSG_CODE_SET_LED_MODE = DRV_MSG_CODE(0x0020), 998 + DRV_MSG_CODE_RESOURCE_CMD = DRV_MSG_CODE(0x0023), 999 + DRV_MSG_CODE_MDUMP_CMD = DRV_MSG_CODE(0x0025), 1000 + DRV_MSG_CODE_GET_PF_RDMA_PROTOCOL = DRV_MSG_CODE(0x002b), 1001 + DRV_MSG_CODE_OS_WOL = DRV_MSG_CODE(0x002e), 1002 + DRV_MSG_CODE_GET_TLV_DONE = DRV_MSG_CODE(0x002f), 1003 + DRV_MSG_CODE_FEATURE_SUPPORT = DRV_MSG_CODE(0x0030), 1004 + DRV_MSG_CODE_GET_MFW_FEATURE_SUPPORT = DRV_MSG_CODE(0x0031), 1005 + DRV_MSG_CODE_GET_ENGINE_CONFIG = DRV_MSG_CODE(0x0037), 1006 + DRV_MSG_CODE_GET_NVM_CFG_OPTION = DRV_MSG_CODE(0x003e), 1007 + DRV_MSG_CODE_SET_NVM_CFG_OPTION = DRV_MSG_CODE(0x003f), 1008 + DRV_MSG_CODE_INITIATE_PF_FLR = DRV_MSG_CODE(0x0201), 1009 + DRV_MSG_CODE_LOAD_REQ = DRV_MSG_CODE(0x1000), 1010 + DRV_MSG_CODE_LOAD_DONE = DRV_MSG_CODE(0x1100), 1011 + DRV_MSG_CODE_INIT_HW = DRV_MSG_CODE(0x1200), 1012 + DRV_MSG_CODE_CANCEL_LOAD_REQ = DRV_MSG_CODE(0x1300), 1013 + DRV_MSG_CODE_UNLOAD_REQ = DRV_MSG_CODE(0x2000), 1014 + DRV_MSG_CODE_UNLOAD_DONE = DRV_MSG_CODE(0x2100), 1015 + DRV_MSG_CODE_INIT_PHY = DRV_MSG_CODE(0x2200), 1016 + DRV_MSG_CODE_LINK_RESET = DRV_MSG_CODE(0x2300), 1017 + DRV_MSG_CODE_SET_DCBX = DRV_MSG_CODE(0x2500), 1018 + DRV_MSG_CODE_OV_UPDATE_CURR_CFG = DRV_MSG_CODE(0x2600), 1019 + DRV_MSG_CODE_OV_UPDATE_BUS_NUM = DRV_MSG_CODE(0x2700), 1020 + DRV_MSG_CODE_OV_UPDATE_BOOT_PROGRESS = DRV_MSG_CODE(0x2800), 1021 + DRV_MSG_CODE_OV_UPDATE_STORM_FW_VER = DRV_MSG_CODE(0x2900), 1022 + DRV_MSG_CODE_NIG_DRAIN = DRV_MSG_CODE(0x3000), 1023 + DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE = DRV_MSG_CODE(0x3100), 1024 + DRV_MSG_CODE_BW_UPDATE_ACK = DRV_MSG_CODE(0x3200), 1025 + DRV_MSG_CODE_OV_UPDATE_MTU = DRV_MSG_CODE(0x3300), 1026 + DRV_MSG_GET_RESOURCE_ALLOC_MSG = DRV_MSG_CODE(0x3400), 1027 + DRV_MSG_SET_RESOURCE_VALUE_MSG = DRV_MSG_CODE(0x3500), 1028 + DRV_MSG_CODE_OV_UPDATE_WOL = DRV_MSG_CODE(0x3800), 1029 + DRV_MSG_CODE_OV_UPDATE_ESWITCH_MODE = DRV_MSG_CODE(0x3900), 1030 + DRV_MSG_CODE_S_TAG_UPDATE_ACK = DRV_MSG_CODE(0x3b00), 1031 + DRV_MSG_CODE_GET_OEM_UPDATES = DRV_MSG_CODE(0x4100), 1032 + DRV_MSG_CODE_GET_PPFID_BITMAP = DRV_MSG_CODE(0x4300), 1033 + DRV_MSG_CODE_VF_DISABLED_DONE = DRV_MSG_CODE(0xc000), 1034 + DRV_MSG_CODE_CFG_VF_MSIX = DRV_MSG_CODE(0xc001), 1035 + DRV_MSG_CODE_CFG_PF_VFS_MSIX = DRV_MSG_CODE(0xc002), 1036 + DRV_MSG_CODE_DEBUG_DATA_SEND = DRV_MSG_CODE(0xc004), 1037 + }; 1038 + 1135 1039 #define DRV_MSG_CODE_VMAC_TYPE_SHIFT 4 1136 1040 #define DRV_MSG_CODE_VMAC_TYPE_MASK 0x30 1137 1041 #define DRV_MSG_CODE_VMAC_TYPE_MAC 1 1138 1042 #define DRV_MSG_CODE_VMAC_TYPE_WWNN 2 1139 1043 #define DRV_MSG_CODE_VMAC_TYPE_WWPN 3 1140 1044 1141 - #define DRV_MSG_CODE_GET_STATS 0x00130000 1045 + /* DRV_MSG_CODE_RETAIN_VMAC parameters */ 1046 + #define DRV_MSG_CODE_RETAIN_VMAC_FUNC_SHIFT 0 1047 + #define DRV_MSG_CODE_RETAIN_VMAC_FUNC_MASK 0xf 1048 + 1049 + #define DRV_MSG_CODE_RETAIN_VMAC_TYPE_SHIFT 4 1050 + #define DRV_MSG_CODE_RETAIN_VMAC_TYPE_MASK 0x70 1051 + #define DRV_MSG_CODE_RETAIN_VMAC_TYPE_L2 0 1052 + #define DRV_MSG_CODE_RETAIN_VMAC_TYPE_ISCSI 1 1053 + #define DRV_MSG_CODE_RETAIN_VMAC_TYPE_FCOE 2 1054 + #define DRV_MSG_CODE_RETAIN_VMAC_TYPE_WWNN 3 1055 + #define DRV_MSG_CODE_RETAIN_VMAC_TYPE_WWPN 4 1056 + 1057 + #define DRV_MSG_CODE_MCP_RESET_FORCE 0xf04ce 1058 + 1142 1059 #define DRV_MSG_CODE_STATS_TYPE_LAN 1 1143 1060 #define DRV_MSG_CODE_STATS_TYPE_FCOE 2 1144 1061 #define DRV_MSG_CODE_STATS_TYPE_ISCSI 3 1145 1062 #define DRV_MSG_CODE_STATS_TYPE_RDMA 4 1146 1063 1147 - #define DRV_MSG_CODE_TRANSCEIVER_READ 0x00160000 1064 + #define BW_MAX_MASK 0x000000ff 1065 + #define BW_MAX_OFFSET 0 1066 + #define BW_MIN_MASK 0x0000ff00 1067 + #define BW_MIN_OFFSET 8 1148 1068 1149 - #define DRV_MSG_CODE_MASK_PARITIES 0x001a0000 1150 - 1151 - #define DRV_MSG_CODE_BIST_TEST 0x001e0000 1152 - #define DRV_MSG_CODE_SET_LED_MODE 0x00200000 1153 - #define DRV_MSG_CODE_RESOURCE_CMD 0x00230000 1154 - /* Send crash dump commands with param[3:0] - opcode */ 1155 - #define DRV_MSG_CODE_MDUMP_CMD 0x00250000 1156 - #define DRV_MSG_CODE_GET_TLV_DONE 0x002f0000 1157 - #define DRV_MSG_CODE_GET_ENGINE_CONFIG 0x00370000 1158 - #define DRV_MSG_CODE_GET_PPFID_BITMAP 0x43000000 1159 - 1160 - #define DRV_MSG_CODE_DEBUG_DATA_SEND 0xc0040000 1069 + #define DRV_MSG_FAN_FAILURE_TYPE BIT(0) 1070 + #define DRV_MSG_TEMPERATURE_FAILURE_TYPE BIT(1) 1161 1071 1162 1072 #define RESOURCE_CMD_REQ_RESC_MASK 0x0000001F 1163 1073 #define RESOURCE_CMD_REQ_RESC_SHIFT 0 ··· 1252 1028 #define RESOURCE_DUMP 0 1253 1029 1254 1030 /* DRV_MSG_CODE_MDUMP_CMD parameters */ 1255 - #define MDUMP_DRV_PARAM_OPCODE_MASK 0x0000000f 1031 + #define MDUMP_DRV_PARAM_OPCODE_MASK 0x000000ff 1256 1032 #define DRV_MSG_CODE_MDUMP_ACK 0x01 1257 1033 #define DRV_MSG_CODE_MDUMP_SET_VALUES 0x02 1258 1034 #define DRV_MSG_CODE_MDUMP_TRIGGER 0x03 ··· 1263 1039 #define DRV_MSG_CODE_MDUMP_CLR_RETAIN 0x08 1264 1040 1265 1041 #define DRV_MSG_CODE_HW_DUMP_TRIGGER 0x0a 1266 - #define DRV_MSG_CODE_MDUMP_GEN_MDUMP2 0x0b 1267 - #define DRV_MSG_CODE_MDUMP_FREE_MDUMP2 0x0c 1268 1042 1269 - #define DRV_MSG_CODE_GET_PF_RDMA_PROTOCOL 0x002b0000 1270 - #define DRV_MSG_CODE_OS_WOL 0x002e0000 1043 + #define DRV_MSG_CODE_MDUMP_FREE_DRIVER_BUF 0x0b 1044 + #define DRV_MSG_CODE_MDUMP_GEN_LINK_DUMP 0x0c 1045 + #define DRV_MSG_CODE_MDUMP_GEN_IDLE_CHK 0x0d 1271 1046 1272 - #define DRV_MSG_CODE_FEATURE_SUPPORT 0x00300000 1273 - #define DRV_MSG_CODE_GET_MFW_FEATURE_SUPPORT 0x00310000 1274 - #define DRV_MSG_SEQ_NUMBER_MASK 0x0000ffff 1047 + /* DRV_MSG_CODE_MDUMP_CMD options */ 1048 + #define MDUMP_DRV_PARAM_OPTION_MASK 0x00000f00 1049 + #define DRV_MSG_CODE_MDUMP_USE_DRIVER_BUF_OFFSET 8 1050 + #define DRV_MSG_CODE_MDUMP_USE_DRIVER_BUF_MASK 0x100 1275 1051 1276 - u32 drv_mb_param; 1277 - #define DRV_MB_PARAM_UNLOAD_WOL_UNKNOWN 0x00000000 1278 - #define DRV_MB_PARAM_UNLOAD_WOL_MCP 0x00000001 1279 - #define DRV_MB_PARAM_UNLOAD_WOL_DISABLED 0x00000002 1280 - #define DRV_MB_PARAM_UNLOAD_WOL_ENABLED 0x00000003 1281 - #define DRV_MB_PARAM_DCBX_NOTIFY_MASK 0x000000FF 1282 - #define DRV_MB_PARAM_DCBX_NOTIFY_SHIFT 3 1052 + /* DRV_MSG_CODE_EXT_PHY_READ/DRV_MSG_CODE_EXT_PHY_WRITE parameters */ 1053 + #define DRV_MB_PARAM_ADDR_SHIFT 0 1054 + #define DRV_MB_PARAM_ADDR_MASK 0x0000FFFF 1055 + #define DRV_MB_PARAM_DEVAD_SHIFT 16 1056 + #define DRV_MB_PARAM_DEVAD_MASK 0x001F0000 1057 + #define DRV_MB_PARAM_PORT_SHIFT 21 1058 + #define DRV_MB_PARAM_PORT_MASK 0x00600000 1059 + 1060 + /* DRV_MSG_CODE_PMBUS_READ/DRV_MSG_CODE_PMBUS_WRITE parameters */ 1061 + #define DRV_MB_PARAM_PMBUS_CMD_SHIFT 0 1062 + #define DRV_MB_PARAM_PMBUS_CMD_MASK 0xFF 1063 + #define DRV_MB_PARAM_PMBUS_LEN_SHIFT 8 1064 + #define DRV_MB_PARAM_PMBUS_LEN_MASK 0x300 1065 + #define DRV_MB_PARAM_PMBUS_DATA_SHIFT 16 1066 + #define DRV_MB_PARAM_PMBUS_DATA_MASK 0xFFFF0000 1067 + 1068 + /* UNLOAD_REQ params */ 1069 + #define DRV_MB_PARAM_UNLOAD_WOL_UNKNOWN 0x00000000 1070 + #define DRV_MB_PARAM_UNLOAD_WOL_MCP 0x00000001 1071 + #define DRV_MB_PARAM_UNLOAD_WOL_DISABLED 0x00000002 1072 + #define DRV_MB_PARAM_UNLOAD_WOL_ENABLED 0x00000003 1073 + 1074 + /* UNLOAD_DONE_params */ 1075 + #define DRV_MB_PARAM_UNLOAD_NON_D3_POWER 0x00000001 1076 + 1077 + /* INIT_PHY params */ 1078 + #define DRV_MB_PARAM_INIT_PHY_FORCE 0x00000001 1079 + #define DRV_MB_PARAM_INIT_PHY_DONT_CARE 0x00000002 1080 + 1081 + /* LLDP / DCBX params*/ 1082 + #define DRV_MB_PARAM_LLDP_SEND_MASK 0x00000001 1083 + #define DRV_MB_PARAM_LLDP_SEND_SHIFT 0 1084 + #define DRV_MB_PARAM_LLDP_AGENT_MASK 0x00000006 1085 + #define DRV_MB_PARAM_LLDP_AGENT_SHIFT 1 1086 + #define DRV_MB_PARAM_LLDP_TLV_RX_VALID_MASK 0x00000001 1087 + #define DRV_MB_PARAM_LLDP_TLV_RX_VALID_SHIFT 0 1088 + #define DRV_MB_PARAM_LLDP_TLV_RX_TYPE_MASK 0x000007f0 1089 + #define DRV_MB_PARAM_LLDP_TLV_RX_TYPE_SHIFT 4 1090 + #define DRV_MB_PARAM_DCBX_NOTIFY_MASK 0x00000008 1091 + #define DRV_MB_PARAM_DCBX_NOTIFY_SHIFT 3 1092 + #define DRV_MB_PARAM_DCBX_ADMIN_CFG_NOTIFY_MASK 0x00000010 1093 + #define DRV_MB_PARAM_DCBX_ADMIN_CFG_NOTIFY_SHIFT 4 1094 + 1095 + #define DRV_MB_PARAM_NIG_DRAIN_PERIOD_MS_MASK 0x000000FF 1096 + #define DRV_MB_PARAM_NIG_DRAIN_PERIOD_MS_SHIFT 0 1097 + 1098 + #define DRV_MB_PARAM_NVM_PUT_FILE_TYPE_MASK 0x000000ff 1099 + #define DRV_MB_PARAM_NVM_PUT_FILE_TYPE_SHIFT 0 1100 + #define DRV_MB_PARAM_NVM_PUT_FILE_BEGIN_MFW 0x1 1101 + #define DRV_MB_PARAM_NVM_PUT_FILE_BEGIN_IMAGE 0x2 1283 1102 1284 1103 #define DRV_MB_PARAM_NVM_PUT_FILE_BEGIN_MBI 0x3 1285 1104 #define DRV_MB_PARAM_NVM_OFFSET_OFFSET 0 ··· 1334 1067 #define DRV_MB_PARAM_CFG_VF_MSIX_VF_ID_MASK 0x000000FF 1335 1068 #define DRV_MB_PARAM_CFG_VF_MSIX_SB_NUM_SHIFT 8 1336 1069 #define DRV_MB_PARAM_CFG_VF_MSIX_SB_NUM_MASK 0x0000FF00 1337 - #define DRV_MB_PARAM_LLDP_SEND_MASK 0x00000001 1338 - #define DRV_MB_PARAM_LLDP_SEND_SHIFT 0 1339 1070 1340 1071 #define DRV_MB_PARAM_OV_CURR_CFG_SHIFT 0 1341 1072 #define DRV_MB_PARAM_OV_CURR_CFG_MASK 0x0000000F ··· 1396 1131 #define DRV_MB_PARAM_RESOURCE_ALLOC_VERSION_MINOR_MASK 0x0000ffff 1397 1132 #define DRV_MB_PARAM_RESOURCE_ALLOC_VERSION_MINOR_SHIFT 0 1398 1133 1134 + #define DRV_MB_PARAM_BIST_UNKNOWN_TEST 0 1399 1135 #define DRV_MB_PARAM_BIST_REGISTER_TEST 1 1400 1136 #define DRV_MB_PARAM_BIST_CLOCK_TEST 2 1401 1137 #define DRV_MB_PARAM_BIST_NVM_TEST_NUM_IMAGES 3 ··· 1414 1148 1415 1149 #define DRV_MB_PARAM_FEATURE_SUPPORT_PORT_MASK 0x0000ffff 1416 1150 #define DRV_MB_PARAM_FEATURE_SUPPORT_PORT_OFFSET 0 1151 + #define DRV_MB_PARAM_FEATURE_SUPPORT_PORT_SMARTLINQ 0x00000001 1417 1152 #define DRV_MB_PARAM_FEATURE_SUPPORT_PORT_EEE 0x00000002 1418 1153 #define DRV_MB_PARAM_FEATURE_SUPPORT_PORT_FEC_CONTROL 0x00000004 1419 1154 #define DRV_MB_PARAM_FEATURE_SUPPORT_PORT_EXT_SPEED_FEC_CONTROL 0x00000008 ··· 1431 1164 #define DRV_MB_PARAM_ATTRIBUTE_CMD_MASK 0xff000000 1432 1165 1433 1166 #define DRV_MB_PARAM_NVM_CFG_OPTION_ID_OFFSET 0 1434 - #define DRV_MB_PARAM_NVM_CFG_OPTION_ID_SHIFT 0 1435 1167 #define DRV_MB_PARAM_NVM_CFG_OPTION_ID_MASK 0x0000ffff 1168 + #define DRV_MB_PARAM_NVM_CFG_OPTION_ID_IGNORE 0x0000ffff 1169 + #define DRV_MB_PARAM_NVM_CFG_OPTION_ID_SHIFT 0 1436 1170 #define DRV_MB_PARAM_NVM_CFG_OPTION_ALL_SHIFT 16 1437 1171 #define DRV_MB_PARAM_NVM_CFG_OPTION_ALL_MASK 0x00010000 1438 1172 #define DRV_MB_PARAM_NVM_CFG_OPTION_INIT_SHIFT 17 ··· 1444 1176 #define DRV_MB_PARAM_NVM_CFG_OPTION_FREE_MASK 0x00080000 1445 1177 #define DRV_MB_PARAM_NVM_CFG_OPTION_ENTITY_SEL_SHIFT 20 1446 1178 #define DRV_MB_PARAM_NVM_CFG_OPTION_ENTITY_SEL_MASK 0x00100000 1179 + #define DRV_MB_PARAM_NVM_CFG_OPTION_DEFAULT_RESTORE_ALL_SHIFT 21 1180 + #define DRV_MB_PARAM_NVM_CFG_OPTION_DEFAULT_RESTORE_ALL_MASK 0x00200000 1447 1181 #define DRV_MB_PARAM_NVM_CFG_OPTION_ENTITY_ID_SHIFT 24 1448 1182 #define DRV_MB_PARAM_NVM_CFG_OPTION_ENTITY_ID_MASK 0x0f000000 1449 1183 1450 - u32 fw_mb_header; 1451 - #define FW_MSG_CODE_MASK 0xffff0000 1452 - #define FW_MSG_CODE_UNSUPPORTED 0x00000000 1453 - #define FW_MSG_CODE_DRV_LOAD_ENGINE 0x10100000 1454 - #define FW_MSG_CODE_DRV_LOAD_PORT 0x10110000 1455 - #define FW_MSG_CODE_DRV_LOAD_FUNCTION 0x10120000 1456 - #define FW_MSG_CODE_DRV_LOAD_REFUSED_PDA 0x10200000 1457 - #define FW_MSG_CODE_DRV_LOAD_REFUSED_HSI_1 0x10210000 1458 - #define FW_MSG_CODE_DRV_LOAD_REFUSED_DIAG 0x10220000 1459 - #define FW_MSG_CODE_DRV_LOAD_REFUSED_HSI 0x10230000 1460 - #define FW_MSG_CODE_DRV_LOAD_REFUSED_REQUIRES_FORCE 0x10300000 1461 - #define FW_MSG_CODE_DRV_LOAD_REFUSED_REJECT 0x10310000 1462 - #define FW_MSG_CODE_DRV_LOAD_DONE 0x11100000 1463 - #define FW_MSG_CODE_DRV_UNLOAD_ENGINE 0x20110000 1464 - #define FW_MSG_CODE_DRV_UNLOAD_PORT 0x20120000 1465 - #define FW_MSG_CODE_DRV_UNLOAD_FUNCTION 0x20130000 1466 - #define FW_MSG_CODE_DRV_UNLOAD_DONE 0x21100000 1467 - #define FW_MSG_CODE_RESOURCE_ALLOC_OK 0x34000000 1468 - #define FW_MSG_CODE_RESOURCE_ALLOC_UNKNOWN 0x35000000 1469 - #define FW_MSG_CODE_RESOURCE_ALLOC_DEPRECATED 0x36000000 1470 - #define FW_MSG_CODE_S_TAG_UPDATE_ACK_DONE 0x3b000000 1471 - #define FW_MSG_CODE_DRV_CFG_VF_MSIX_DONE 0xb0010000 1184 + /*DRV_MSG_CODE_GET_PERM_MAC parametres*/ 1185 + #define DRV_MSG_CODE_GET_PERM_MAC_TYPE_SHIFT 0 1186 + #define DRV_MSG_CODE_GET_PERM_MAC_TYPE_MASK 0xF 1187 + #define DRV_MSG_CODE_GET_PERM_MAC_TYPE_PF 0 1188 + #define DRV_MSG_CODE_GET_PERM_MAC_TYPE_BMC 1 1189 + #define DRV_MSG_CODE_GET_PERM_MAC_TYPE_VF 2 1190 + #define DRV_MSG_CODE_GET_PERM_MAC_TYPE_LLDP 3 1191 + #define DRV_MSG_CODE_GET_PERM_MAC_TYPE_MAX 4 1192 + #define DRV_MSG_CODE_GET_PERM_MAC_INDEX_SHIFT 8 1193 + #define DRV_MSG_CODE_GET_PERM_MAC_INDEX_MASK 0xFFFF00 1472 1194 1473 - #define FW_MSG_CODE_NVM_OK 0x00010000 1474 - #define FW_MSG_CODE_NVM_PUT_FILE_FINISH_OK 0x00400000 1475 - #define FW_MSG_CODE_PHY_OK 0x00110000 1476 - #define FW_MSG_CODE_OK 0x00160000 1477 - #define FW_MSG_CODE_ERROR 0x00170000 1478 - #define FW_MSG_CODE_TRANSCEIVER_DIAG_OK 0x00160000 1479 - #define FW_MSG_CODE_TRANSCEIVER_DIAG_ERROR 0x00170000 1480 - #define FW_MSG_CODE_TRANSCEIVER_NOT_PRESENT 0x00020000 1195 + #define FW_MSG_CODE(_code_) ((_code_) << FW_MSG_CODE_OFFSET) 1196 + enum fw_msg_code_enum { 1197 + FW_MSG_CODE_UNSUPPORTED = FW_MSG_CODE(0x0000), 1198 + FW_MSG_CODE_NVM_OK = FW_MSG_CODE(0x0001), 1199 + FW_MSG_CODE_NVM_PUT_FILE_FINISH_OK = FW_MSG_CODE(0x0040), 1200 + FW_MSG_CODE_PHY_OK = FW_MSG_CODE(0x0011), 1201 + FW_MSG_CODE_OK = FW_MSG_CODE(0x0016), 1202 + FW_MSG_CODE_ERROR = FW_MSG_CODE(0x0017), 1203 + FW_MSG_CODE_TRANSCEIVER_DIAG_OK = FW_MSG_CODE(0x0016), 1204 + FW_MSG_CODE_TRANSCEIVER_NOT_PRESENT = FW_MSG_CODE(0x0002), 1205 + FW_MSG_CODE_MDUMP_INVALID_CMD = FW_MSG_CODE(0x0003), 1206 + FW_MSG_CODE_OS_WOL_SUPPORTED = FW_MSG_CODE(0x0080), 1207 + FW_MSG_CODE_DRV_CFG_PF_VFS_MSIX_DONE = FW_MSG_CODE(0x0087), 1208 + FW_MSG_CODE_DRV_LOAD_ENGINE = FW_MSG_CODE(0x1010), 1209 + FW_MSG_CODE_DRV_LOAD_PORT = FW_MSG_CODE(0x1011), 1210 + FW_MSG_CODE_DRV_LOAD_FUNCTION = FW_MSG_CODE(0x1012), 1211 + FW_MSG_CODE_DRV_LOAD_REFUSED_PDA = FW_MSG_CODE(0x1020), 1212 + FW_MSG_CODE_DRV_LOAD_REFUSED_HSI_1 = FW_MSG_CODE(0x1021), 1213 + FW_MSG_CODE_DRV_LOAD_REFUSED_DIAG = FW_MSG_CODE(0x1022), 1214 + FW_MSG_CODE_DRV_LOAD_REFUSED_HSI = FW_MSG_CODE(0x1023), 1215 + FW_MSG_CODE_DRV_LOAD_REFUSED_REQUIRES_FORCE = FW_MSG_CODE(0x1030), 1216 + FW_MSG_CODE_DRV_LOAD_REFUSED_REJECT = FW_MSG_CODE(0x1031), 1217 + FW_MSG_CODE_DRV_LOAD_DONE = FW_MSG_CODE(0x1110), 1218 + FW_MSG_CODE_DRV_UNLOAD_ENGINE = FW_MSG_CODE(0x2011), 1219 + FW_MSG_CODE_DRV_UNLOAD_PORT = FW_MSG_CODE(0x2012), 1220 + FW_MSG_CODE_DRV_UNLOAD_FUNCTION = FW_MSG_CODE(0x2013), 1221 + FW_MSG_CODE_DRV_UNLOAD_DONE = FW_MSG_CODE(0x2110), 1222 + FW_MSG_CODE_RESOURCE_ALLOC_OK = FW_MSG_CODE(0x3400), 1223 + FW_MSG_CODE_RESOURCE_ALLOC_UNKNOWN = FW_MSG_CODE(0x3500), 1224 + FW_MSG_CODE_S_TAG_UPDATE_ACK_DONE = FW_MSG_CODE(0x3b00), 1225 + FW_MSG_CODE_DRV_CFG_VF_MSIX_DONE = FW_MSG_CODE(0xb001), 1226 + FW_MSG_CODE_DEBUG_NOT_ENABLED = FW_MSG_CODE(0xb00a), 1227 + FW_MSG_CODE_DEBUG_DATA_SEND_OK = FW_MSG_CODE(0xb00b), 1228 + }; 1481 1229 1482 - #define FW_MSG_CODE_OS_WOL_SUPPORTED 0x00800000 1483 - #define FW_MSG_CODE_OS_WOL_NOT_SUPPORTED 0x00810000 1484 - #define FW_MSG_CODE_DRV_CFG_PF_VFS_MSIX_DONE 0x00870000 1485 - #define FW_MSG_SEQ_NUMBER_MASK 0x0000ffff 1486 - 1487 - #define FW_MSG_CODE_DEBUG_DATA_SEND_INV_ARG 0xb0070000 1488 - #define FW_MSG_CODE_DEBUG_DATA_SEND_BUF_FULL 0xb0080000 1489 - #define FW_MSG_CODE_DEBUG_DATA_SEND_NO_BUF 0xb0090000 1490 - #define FW_MSG_CODE_DEBUG_NOT_ENABLED 0xb00a0000 1491 - #define FW_MSG_CODE_DEBUG_DATA_SEND_OK 0xb00b0000 1492 - 1493 - #define FW_MSG_CODE_MDUMP_INVALID_CMD 0x00030000 1494 - 1495 - u32 fw_mb_param; 1496 1230 #define FW_MB_PARAM_RESOURCE_ALLOC_VERSION_MAJOR_MASK 0xffff0000 1497 1231 #define FW_MB_PARAM_RESOURCE_ALLOC_VERSION_MAJOR_SHIFT 16 1498 1232 #define FW_MB_PARAM_RESOURCE_ALLOC_VERSION_MINOR_MASK 0x0000ffff 1499 1233 #define FW_MB_PARAM_RESOURCE_ALLOC_VERSION_MINOR_SHIFT 0 1500 1234 1501 - /* Get PF RDMA protocol command response */ 1235 + /* Get PF RDMA protocol command response */ 1502 1236 #define FW_MB_PARAM_GET_PF_RDMA_NONE 0x0 1503 1237 #define FW_MB_PARAM_GET_PF_RDMA_ROCE 0x1 1504 1238 #define FW_MB_PARAM_GET_PF_RDMA_IWARP 0x2 1505 1239 #define FW_MB_PARAM_GET_PF_RDMA_BOTH 0x3 1506 1240 1507 - /* Get MFW feature support response */ 1241 + /* Get MFW feature support response */ 1508 1242 #define FW_MB_PARAM_FEATURE_SUPPORT_SMARTLINQ BIT(0) 1509 1243 #define FW_MB_PARAM_FEATURE_SUPPORT_EEE BIT(1) 1244 + #define FW_MB_PARAM_FEATURE_SUPPORT_DRV_LOAD_TO BIT(2) 1245 + #define FW_MB_PARAM_FEATURE_SUPPORT_LP_PRES_DET BIT(3) 1246 + #define FW_MB_PARAM_FEATURE_SUPPORT_RELAXED_ORD BIT(4) 1510 1247 #define FW_MB_PARAM_FEATURE_SUPPORT_FEC_CONTROL BIT(5) 1511 1248 #define FW_MB_PARAM_FEATURE_SUPPORT_EXT_SPEED_FEC_CONTROL BIT(6) 1249 + #define FW_MB_PARAM_FEATURE_SUPPORT_IGU_CLEANUP BIT(7) 1250 + #define FW_MB_PARAM_FEATURE_SUPPORT_VF_DPM BIT(8) 1251 + #define FW_MB_PARAM_FEATURE_SUPPORT_IDLE_CHK BIT(9) 1512 1252 #define FW_MB_PARAM_FEATURE_SUPPORT_VLINK BIT(16) 1253 + #define FW_MB_PARAM_FEATURE_SUPPORT_DISABLE_LLDP BIT(17) 1254 + #define FW_MB_PARAM_FEATURE_SUPPORT_ENHANCED_SYS_LCK BIT(18) 1255 + #define FW_MB_PARAM_FEATURE_SUPPORT_RESTORE_DEFAULT_CFG BIT(19) 1256 + 1257 + #define FW_MB_PARAM_MANAGEMENT_STATUS_LOCKDOWN_ENABLED 0x00000001 1513 1258 1514 1259 #define FW_MB_PARAM_LOAD_DONE_DID_EFUSE_ERROR BIT(0) 1515 1260 ··· 1537 1256 1538 1257 #define FW_MB_PARAM_PPFID_BITMAP_MASK 0xff 1539 1258 #define FW_MB_PARAM_PPFID_BITMAP_SHIFT 0 1540 - 1541 - u32 drv_pulse_mb; 1542 - #define DRV_PULSE_SEQ_MASK 0x00007fff 1543 - #define DRV_PULSE_SYSTEM_TIME_MASK 0xffff0000 1544 - #define DRV_PULSE_ALWAYS_ALIVE 0x00008000 1545 - 1546 - u32 mcp_pulse_mb; 1547 - #define MCP_PULSE_SEQ_MASK 0x00007fff 1548 - #define MCP_PULSE_ALWAYS_ALIVE 0x00008000 1549 - #define MCP_EVENT_MASK 0xffff0000 1550 - #define MCP_EVENT_OTHER_DRIVER_RESET_REQ 0x00010000 1551 - 1552 - union drv_union_data union_data; 1553 - }; 1554 1259 1555 1260 #define FW_MB_PARAM_NVM_PUT_FILE_REQ_OFFSET_MASK 0x00ffffff 1556 1261 #define FW_MB_PARAM_NVM_PUT_FILE_REQ_OFFSET_SHIFT 0 ··· 1560 1293 MFW_DRV_MSG_FAILURE_DETECTED, 1561 1294 MFW_DRV_MSG_TRANSCEIVER_STATE_CHANGE, 1562 1295 MFW_DRV_MSG_CRITICAL_ERROR_OCCURRED, 1563 - MFW_DRV_MSG_RESERVED, 1296 + MFW_DRV_MSG_EEE_NEGOTIATION_COMPLETE, 1564 1297 MFW_DRV_MSG_GET_TLV_REQ, 1565 1298 MFW_DRV_MSG_OEM_CFG_UPDATE, 1299 + MFW_DRV_MSG_LLDP_RECEIVED_TLVS_UPDATED, 1300 + MFW_DRV_MSG_GENERIC_IDC, 1301 + MFW_DRV_MSG_XCVR_TX_FAULT, 1302 + MFW_DRV_MSG_XCVR_RX_LOS, 1303 + MFW_DRV_MSG_GET_FCOE_CAP, 1304 + MFW_DRV_MSG_GEN_LINK_DUMP, 1305 + MFW_DRV_MSG_GEN_IDLE_CHK, 1306 + MFW_DRV_MSG_DCBX_ADMIN_CFG_APPLIED, 1566 1307 MFW_DRV_MSG_MAX 1567 1308 }; 1568 1309 ··· 1595 1320 PUBLIC_MAX_SECTIONS 1596 1321 }; 1597 1322 1323 + struct drv_ver_info_stc { 1324 + u32 ver; 1325 + u8 name[32]; 1326 + }; 1327 + 1328 + /* Runtime data needs about 1/2K. We use 2K to be on the safe side. 1329 + * Please make sure data does not exceed this size. 1330 + */ 1331 + #define NUM_RUNTIME_DWORDS 16 1332 + struct drv_init_hw_stc { 1333 + u32 init_hw_bitmask[NUM_RUNTIME_DWORDS]; 1334 + u32 init_hw_data[NUM_RUNTIME_DWORDS * 32]; 1335 + }; 1336 + 1598 1337 struct mcp_public_data { 1599 1338 u32 num_sections; 1600 1339 u32 sections[PUBLIC_MAX_SECTIONS]; ··· 1620 1331 struct public_func func[MCP_GLOB_FUNC_MAX]; 1621 1332 }; 1622 1333 1334 + #define I2C_TRANSCEIVER_ADDR 0xa0 1623 1335 #define MAX_I2C_TRANSACTION_SIZE 16 1336 + #define MAX_I2C_TRANSCEIVER_PAGE_SIZE 256 1624 1337 1625 1338 /* OCBB definitions */ 1626 1339 enum tlvs { ··· 1848 1557 DRV_TLV_ISCSI_PDU_RX_FRAMES_RECEIVED, 1849 1558 DRV_TLV_ISCSI_PDU_RX_BYTES_RECEIVED, 1850 1559 DRV_TLV_ISCSI_PDU_TX_FRAMES_SENT, 1851 - DRV_TLV_ISCSI_PDU_TX_BYTES_SENT 1560 + DRV_TLV_ISCSI_PDU_TX_BYTES_SENT, 1561 + DRV_TLV_RDMA_DRV_VERSION 1852 1562 }; 1563 + 1564 + #define I2C_DEV_ADDR_A2 0xa2 1565 + #define SFP_EEPROM_A2_TEMPERATURE_ADDR 0x60 1566 + #define SFP_EEPROM_A2_TEMPERATURE_SIZE 2 1567 + #define SFP_EEPROM_A2_VCC_ADDR 0x62 1568 + #define SFP_EEPROM_A2_VCC_SIZE 2 1569 + #define SFP_EEPROM_A2_TX_BIAS_ADDR 0x64 1570 + #define SFP_EEPROM_A2_TX_BIAS_SIZE 2 1571 + #define SFP_EEPROM_A2_TX_POWER_ADDR 0x66 1572 + #define SFP_EEPROM_A2_TX_POWER_SIZE 2 1573 + #define SFP_EEPROM_A2_RX_POWER_ADDR 0x68 1574 + #define SFP_EEPROM_A2_RX_POWER_SIZE 2 1575 + 1576 + #define I2C_DEV_ADDR_A0 0xa0 1577 + #define QSFP_EEPROM_A0_TEMPERATURE_ADDR 0x16 1578 + #define QSFP_EEPROM_A0_TEMPERATURE_SIZE 2 1579 + #define QSFP_EEPROM_A0_VCC_ADDR 0x1a 1580 + #define QSFP_EEPROM_A0_VCC_SIZE 2 1581 + #define QSFP_EEPROM_A0_TX1_BIAS_ADDR 0x2a 1582 + #define QSFP_EEPROM_A0_TX1_BIAS_SIZE 2 1583 + #define QSFP_EEPROM_A0_TX1_POWER_ADDR 0x32 1584 + #define QSFP_EEPROM_A0_TX1_POWER_SIZE 2 1585 + #define QSFP_EEPROM_A0_RX1_POWER_ADDR 0x22 1586 + #define QSFP_EEPROM_A0_RX1_POWER_SIZE 2 1853 1587 1854 1588 struct nvm_cfg_mac_address { 1855 1589 u32 mac_addr_hi; ··· 1965 1649 u32 power_consumed; 1966 1650 u32 efi_version; 1967 1651 u32 multi_network_modes_capability; 1968 - u32 reserved[41]; 1652 + u32 nvm_cfg_version; 1653 + u32 nvm_cfg_new_option_seq; 1654 + u32 nvm_cfg_removed_option_seq; 1655 + u32 nvm_cfg_updated_value_seq; 1656 + u32 extended_serial_number[8]; 1657 + u32 option_kit_pn[8]; 1658 + u32 spare_pn[8]; 1659 + u32 mps25_active_txfir_pre; 1660 + u32 mps25_active_txfir_main; 1661 + u32 mps25_active_txfir_post; 1662 + u32 features; 1663 + u32 tx_rx_eq_25g_hlpc; 1664 + u32 tx_rx_eq_25g_llpc; 1665 + u32 tx_rx_eq_25g_ac; 1666 + u32 tx_rx_eq_10g_pc; 1667 + u32 tx_rx_eq_10g_ac; 1668 + u32 tx_rx_eq_1g; 1669 + u32 tx_rx_eq_25g_bt; 1670 + u32 tx_rx_eq_10g_bt; 1671 + u32 generic_cont4; 1672 + u32 preboot_debug_mode_std; 1673 + u32 preboot_debug_mode_ext; 1674 + u32 ext_phy_cfg1; 1675 + u32 clocks; 1676 + u32 pre2_generic_cont_1; 1677 + u32 pre2_generic_cont_2; 1678 + u32 pre2_generic_cont_3; 1679 + u32 tx_rx_eq_50g_hlpc; 1680 + u32 tx_rx_eq_50g_mlpc; 1681 + u32 tx_rx_eq_50g_llpc; 1682 + u32 tx_rx_eq_50g_ac; 1683 + u32 trace_modules; 1684 + u32 pcie_class_code_fcoe; 1685 + u32 pcie_class_code_iscsi; 1686 + u32 no_provisioned_mac; 1687 + u32 lowest_mbi_version; 1688 + u32 generic_cont5; 1689 + u32 pre2_generic_cont_4; 1690 + u32 reserved[40]; 1969 1691 }; 1970 1692 1971 1693 struct nvm_cfg1_path { 1972 - u32 reserved[30]; 1694 + u32 reserved[1]; 1973 1695 }; 1974 1696 1975 1697 struct nvm_cfg1_port { ··· 2142 1788 #define NVM_CFG1_PORT_EXTENDED_SPEED_CAP_EXTND_SPD_100G_P4 0x400 2143 1789 2144 1790 u32 extended_fec_mode; 2145 - 2146 - u32 reserved[112]; 1791 + u32 port_generic_cont_01; 1792 + u32 port_generic_cont_02; 1793 + u32 phy_temp_monitor; 1794 + u32 reserved[109]; 2147 1795 }; 2148 1796 2149 1797 struct nvm_cfg1_func { ··· 2158 1802 struct nvm_cfg_mac_address fcoe_node_wwn_mac_addr; 2159 1803 struct nvm_cfg_mac_address fcoe_port_wwn_mac_addr; 2160 1804 u32 preboot_generic_cfg; 2161 - u32 reserved[8]; 1805 + u32 features; 1806 + u32 mf_mode_feature; 1807 + u32 reserved[6]; 2162 1808 }; 2163 1809 2164 1810 struct nvm_cfg1 { ··· 2170 1812 struct nvm_cfg1_func func[MCP_GLOB_FUNC_MAX]; 2171 1813 }; 2172 1814 1815 + struct board_info { 1816 + u16 vendor_id; 1817 + u16 eth_did_suffix; 1818 + u16 sub_vendor_id; 1819 + u16 sub_device_id; 1820 + char *board_name; 1821 + char *friendly_name; 1822 + }; 1823 + 1824 + struct trace_module_info { 1825 + char *module_name; 1826 + }; 1827 + 1828 + #define NUM_TRACE_MODULES 25 1829 + 1830 + enum nvm_cfg_sections { 1831 + NVM_CFG_SECTION_NVM_CFG1, 1832 + NVM_CFG_SECTION_MAX 1833 + }; 1834 + 1835 + struct nvm_cfg { 1836 + u32 num_sections; 1837 + u32 sections_offset[NVM_CFG_SECTION_MAX]; 1838 + struct nvm_cfg1 cfg1; 1839 + }; 1840 + 1841 + #define PORT_0 0 1842 + #define PORT_1 1 1843 + #define PORT_2 2 1844 + #define PORT_3 3 1845 + 1846 + extern struct spad_layout g_spad; 1847 + struct spad_layout { 1848 + struct nvm_cfg nvm_cfg; 1849 + struct mcp_public_data public_data; 1850 + }; 1851 + 1852 + #define MCP_SPAD_SIZE 0x00028000 /* 160 KB */ 1853 + 1854 + #define SPAD_OFFSET(addr) (((u32)(addr) - (u32)CPU_SPAD_BASE)) 1855 + 1856 + #define TO_OFFSIZE(_offset, _size) \ 1857 + ((u32)((((u32)(_offset) >> 2) << OFFSIZE_OFFSET_OFFSET) | \ 1858 + (((u32)(_size) >> 2) << OFFSIZE_SIZE_OFFSET))) 1859 + 2173 1860 enum spad_sections { 2174 1861 SPAD_SECTION_TRACE, 2175 1862 SPAD_SECTION_NVM_CFG, ··· 2223 1820 SPAD_SECTION_MAX 2224 1821 }; 2225 1822 2226 - #define MCP_TRACE_SIZE 2048 /* 2kb */ 1823 + #define STRUCT_OFFSET(f) (STATIC_INIT_BASE + \ 1824 + __builtin_offsetof(struct static_init, f)) 2227 1825 2228 1826 /* This section is located at a fixed location in the beginning of the 2229 1827 * scratchpad, to ensure that the MCP trace is not run over during MFW upgrade. ··· 2238 1834 offsize_t sections[SPAD_SECTION_MAX]; 2239 1835 #define SECTION(_sec_) (*((offsize_t *)(STRUCT_OFFSET(sections[_sec_])))) 2240 1836 1837 + u32 tim_hash[8]; 1838 + #define PRESERVED_TIM_HASH ((u8 *)(STRUCT_OFFSET(tim_hash))) 1839 + u32 tpu_hash[8]; 1840 + #define PRESERVED_TPU_HASH ((u8 *)(STRUCT_OFFSET(tpu_hash))) 1841 + u32 secure_pcie_fw_ver; 1842 + #define SECURE_PCIE_FW_VER (*((u32 *)(STRUCT_OFFSET(secure_pcie_fw_ver)))) 1843 + u32 secure_running_mfw; 1844 + #define SECURE_RUNNING_MFW (*((u32 *)(STRUCT_OFFSET(secure_running_mfw)))) 2241 1845 struct mcp_trace trace; 2242 - #define MCP_TRACE_P ((struct mcp_trace *)(STRUCT_OFFSET(trace))) 2243 - u8 trace_buffer[MCP_TRACE_SIZE]; 2244 - #define MCP_TRACE_BUF ((u8 *)(STRUCT_OFFSET(trace_buffer))) 2245 - /* running_mfw has the same definition as in nvm_map.h. 2246 - * This bit indicate both the running dir, and the running bundle. 2247 - * It is set once when the LIM is loaded. 2248 - */ 2249 - u32 running_mfw; 2250 - #define RUNNING_MFW (*((u32 *)(STRUCT_OFFSET(running_mfw)))) 2251 - u32 build_time; 2252 - #define MFW_BUILD_TIME (*((u32 *)(STRUCT_OFFSET(build_time)))) 2253 - u32 reset_type; 2254 - #define RESET_TYPE (*((u32 *)(STRUCT_OFFSET(reset_type)))) 2255 - u32 mfw_secure_mode; 2256 - #define MFW_SECURE_MODE (*((u32 *)(STRUCT_OFFSET(mfw_secure_mode)))) 2257 - u16 pme_status_pf_bitmap; 2258 - #define PME_STATUS_PF_BITMAP (*((u16 *)(STRUCT_OFFSET(pme_status_pf_bitmap)))) 2259 - u16 pme_enable_pf_bitmap; 2260 - #define PME_ENABLE_PF_BITMAP (*((u16 *)(STRUCT_OFFSET(pme_enable_pf_bitmap)))) 2261 - u32 mim_nvm_addr; 2262 - u32 mim_start_addr; 2263 - u32 ah_pcie_link_params; 2264 - #define AH_PCIE_LINK_PARAMS_LINK_SPEED_MASK (0x000000ff) 2265 - #define AH_PCIE_LINK_PARAMS_LINK_SPEED_SHIFT (0) 2266 - #define AH_PCIE_LINK_PARAMS_LINK_WIDTH_MASK (0x0000ff00) 2267 - #define AH_PCIE_LINK_PARAMS_LINK_WIDTH_SHIFT (8) 2268 - #define AH_PCIE_LINK_PARAMS_ASPM_MODE_MASK (0x00ff0000) 2269 - #define AH_PCIE_LINK_PARAMS_ASPM_MODE_SHIFT (16) 2270 - #define AH_PCIE_LINK_PARAMS_ASPM_CAP_MASK (0xff000000) 2271 - #define AH_PCIE_LINK_PARAMS_ASPM_CAP_SHIFT (24) 2272 - #define AH_PCIE_LINK_PARAMS (*((u32 *)(STRUCT_OFFSET(ah_pcie_link_params)))) 2273 - 2274 - u32 rsrv_persist[5]; /* Persist reserved for MFW upgrades */ 2275 1846 }; 2276 1847 2277 - #define NVM_MAGIC_VALUE 0x669955aa 1848 + #define CRC_MAGIC_VALUE 0xDEBB20E3 1849 + #define CRC32_POLYNOMIAL 0xEDB88320 1850 + #define _KB(x) ((x) * 1024) 1851 + #define _MB(x) (_KB(x) * 1024) 1852 + #define NVM_CRC_SIZE (sizeof(u32)) 1853 + enum nvm_sw_arbitrator { 1854 + NVM_SW_ARB_HOST, 1855 + NVM_SW_ARB_MCP, 1856 + NVM_SW_ARB_UART, 1857 + NVM_SW_ARB_RESERVED 1858 + }; 1859 + 1860 + struct legacy_bootstrap_region { 1861 + u32 magic_value; 1862 + #define NVM_MAGIC_VALUE 0x669955aa 1863 + u32 sram_start_addr; 1864 + u32 code_len; 1865 + u32 code_start_addr; 1866 + u32 crc; 1867 + }; 1868 + 1869 + struct nvm_code_entry { 1870 + u32 image_type; 1871 + u32 nvm_start_addr; 1872 + u32 len; 1873 + u32 sram_start_addr; 1874 + u32 sram_run_addr; 1875 + }; 2278 1876 2279 1877 enum nvm_image_type { 2280 1878 NVM_TYPE_TIM1 = 0x01, ··· 2306 1900 NVM_TYPE_INIT_HW = 0x19, 2307 1901 NVM_TYPE_DEFAULT_CFG = 0x1a, 2308 1902 NVM_TYPE_MDUMP = 0x1b, 2309 - NVM_TYPE_META = 0x1c, 1903 + NVM_TYPE_NVM_META = 0x1c, 2310 1904 NVM_TYPE_ISCSI_CFG = 0x1d, 2311 1905 NVM_TYPE_FCOE_CFG = 0x1f, 2312 1906 NVM_TYPE_ETH_PHY_FW1 = 0x20, ··· 2326 1920 NVM_TYPE_ROM_TEST = 0xf0, 2327 1921 NVM_TYPE_88X33X0_PHY_FW = 0x31, 2328 1922 NVM_TYPE_88X33X0_PHY_SLAVE_FW = 0x32, 1923 + NVM_TYPE_IDLE_CHK = 0x33, 2329 1924 NVM_TYPE_MAX, 2330 1925 }; 2331 1926 2332 - #define DIR_ID_1 (0) 1927 + #define MAX_NVM_DIR_ENTRIES 100 2333 1928 1929 + struct nvm_dir_meta { 1930 + u32 dir_id; 1931 + u32 nvm_dir_addr; 1932 + u32 num_images; 1933 + u32 next_mfw_to_run; 1934 + }; 1935 + 1936 + struct nvm_dir { 1937 + s32 seq; 1938 + #define NVM_DIR_NEXT_MFW_MASK 0x00000001 1939 + #define NVM_DIR_SEQ_MASK 0xfffffffe 1940 + #define NVM_DIR_NEXT_MFW(seq) ((seq) & NVM_DIR_NEXT_MFW_MASK) 1941 + #define NVM_DIR_UPDATE_SEQ(_seq, swap_mfw)\ 1942 + ({ \ 1943 + _seq = (((_seq + 2) & \ 1944 + NVM_DIR_SEQ_MASK) | \ 1945 + (NVM_DIR_NEXT_MFW(_seq ^ (swap_mfw))));\ 1946 + }) 1947 + 1948 + #define IS_DIR_SEQ_VALID(seq) (((seq) & NVM_DIR_SEQ_MASK) != \ 1949 + NVM_DIR_SEQ_MASK) 1950 + 1951 + u32 num_images; 1952 + u32 rsrv; 1953 + struct nvm_code_entry code[1]; /* Up to MAX_NVM_DIR_ENTRIES */ 1954 + }; 1955 + 1956 + #define NVM_DIR_SIZE(_num_images) (sizeof(struct nvm_dir) + \ 1957 + ((_num_images) - 1) *\ 1958 + sizeof(struct nvm_code_entry) +\ 1959 + NVM_CRC_SIZE) 1960 + 1961 + struct nvm_vpd_image { 1962 + u32 format_revision; 1963 + #define VPD_IMAGE_VERSION 1 1964 + 1965 + u8 vpd_data[1]; 1966 + }; 1967 + 1968 + #define DIR_ID_1 (0) 1969 + #define DIR_ID_2 (1) 1970 + #define MAX_DIR_IDS (2) 1971 + 1972 + #define MFW_BUNDLE_1 (0) 1973 + #define MFW_BUNDLE_2 (1) 1974 + #define MAX_MFW_BUNDLES (2) 1975 + 1976 + #define FLASH_PAGE_SIZE 0x1000 1977 + #define NVM_DIR_MAX_SIZE (FLASH_PAGE_SIZE) 1978 + #define LEGACY_ASIC_MIM_MAX_SIZE (_KB(1200)) 1979 + 1980 + #define FPGA_MIM_MAX_SIZE (0x40000) 1981 + 1982 + #define LIM_MAX_SIZE ((2 * FLASH_PAGE_SIZE) - \ 1983 + sizeof(struct legacy_bootstrap_region) \ 1984 + - NVM_RSV_SIZE) 1985 + #define LIM_OFFSET (NVM_OFFSET(lim_image)) 1986 + #define NVM_RSV_SIZE (44) 1987 + #define GET_MIM_MAX_SIZE(is_asic, is_e4) (LEGACY_ASIC_MIM_MAX_SIZE) 1988 + #define GET_MIM_OFFSET(idx, is_asic, is_e4) (NVM_OFFSET(dir[MAX_MFW_BUNDLES])\ 1989 + + (((idx) == NVM_TYPE_MIM2) ? \ 1990 + GET_MIM_MAX_SIZE(is_asic, is_e4)\ 1991 + : 0)) 1992 + #define GET_NVM_FIXED_AREA_SIZE(is_asic, is_e4) (sizeof(struct nvm_image) + \ 1993 + GET_MIM_MAX_SIZE(is_asic,\ 1994 + is_e4) * 2) 1995 + 1996 + union nvm_dir_union { 1997 + struct nvm_dir dir; 1998 + u8 page[FLASH_PAGE_SIZE]; 1999 + }; 2000 + 2001 + struct nvm_image { 2002 + struct legacy_bootstrap_region bootstrap; 2003 + u8 rsrv[NVM_RSV_SIZE]; 2004 + u8 lim_image[LIM_MAX_SIZE]; 2005 + union nvm_dir_union dir[MAX_MFW_BUNDLES]; 2006 + }; 2007 + 2008 + #define NVM_OFFSET(f) ((u32_t)((int_ptr_t)(&(((struct nvm_image *)0)->(f))))) 2009 + 2010 + struct hw_set_info { 2011 + u32 reg_type; 2012 + #define GRC_REG_TYPE 1 2013 + #define PHY_REG_TYPE 2 2014 + #define PCI_REG_TYPE 4 2015 + 2016 + u32 bank_num; 2017 + u32 pf_num; 2018 + u32 operation; 2019 + #define READ_OP 1 2020 + #define WRITE_OP 2 2021 + #define RMW_SET_OP 3 2022 + #define RMW_CLR_OP 4 2023 + 2024 + u32 reg_addr; 2025 + u32 reg_data; 2026 + 2027 + u32 reset_type; 2028 + #define POR_RESET_TYPE BIT(0) 2029 + #define HARD_RESET_TYPE BIT(1) 2030 + #define CORE_RESET_TYPE BIT(2) 2031 + #define MCP_RESET_TYPE BIT(3) 2032 + #define PERSET_ASSERT BIT(4) 2033 + #define PERSET_DEASSERT BIT(5) 2034 + }; 2035 + 2036 + struct hw_set_image { 2037 + u32 format_version; 2038 + #define HW_SET_IMAGE_VERSION 1 2039 + u32 no_hw_sets; 2040 + struct hw_set_info hw_sets[1]; 2041 + }; 2042 + 2043 + #define MAX_SUPPORTED_NVM_OPTIONS 1000 2044 + 2045 + #define NVM_META_BIN_OPTION_OFFSET_MASK 0x0000ffff 2046 + #define NVM_META_BIN_OPTION_OFFSET_SHIFT 0 2047 + #define NVM_META_BIN_OPTION_LEN_MASK 0x00ff0000 2048 + #define NVM_META_BIN_OPTION_LEN_OFFSET 16 2049 + #define NVM_META_BIN_OPTION_ENTITY_MASK 0x03000000 2050 + #define NVM_META_BIN_OPTION_ENTITY_SHIFT 24 2051 + #define NVM_META_BIN_OPTION_ENTITY_GLOB 0 2052 + #define NVM_META_BIN_OPTION_ENTITY_PORT 1 2053 + #define NVM_META_BIN_OPTION_ENTITY_FUNC 2 2054 + #define NVM_META_BIN_OPTION_CONFIG_TYPE_MASK 0x0c000000 2055 + #define NVM_META_BIN_OPTION_CONFIG_TYPE_SHIFT 26 2056 + #define NVM_META_BIN_OPTION_CONFIG_TYPE_USER 0 2057 + #define NVM_META_BIN_OPTION_CONFIG_TYPE_FIXED 1 2058 + #define NVM_META_BIN_OPTION_CONFIG_TYPE_FORCED 2 2059 + 2060 + struct nvm_meta_bin_t { 2061 + u32 magic; 2062 + #define NVM_META_BIN_MAGIC 0x669955bb 2063 + u32 version; 2064 + #define NVM_META_BIN_VERSION 1 2065 + u32 num_options; 2066 + u32 options[0]; 2067 + }; 2334 2068 #endif