162306a36Sopenharmony_ci/* bnx2x_hsi.h: Qlogic Everest network driver. 262306a36Sopenharmony_ci * 362306a36Sopenharmony_ci * Copyright (c) 2007-2013 Broadcom Corporation 462306a36Sopenharmony_ci * Copyright (c) 2014 QLogic Corporation 562306a36Sopenharmony_ci * All rights reserved 662306a36Sopenharmony_ci * 762306a36Sopenharmony_ci * This program is free software; you can redistribute it and/or modify 862306a36Sopenharmony_ci * it under the terms of the GNU General Public License as published by 962306a36Sopenharmony_ci * the Free Software Foundation. 1062306a36Sopenharmony_ci */ 1162306a36Sopenharmony_ci#ifndef BNX2X_HSI_H 1262306a36Sopenharmony_ci#define BNX2X_HSI_H 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci#include "bnx2x_fw_defs.h" 1562306a36Sopenharmony_ci#include "bnx2x_mfw_req.h" 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci#define FW_ENCODE_32BIT_PATTERN 0x1e1e1e1e 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_cistruct license_key { 2062306a36Sopenharmony_ci u32 reserved[6]; 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci u32 max_iscsi_conn; 2362306a36Sopenharmony_ci#define BNX2X_MAX_ISCSI_TRGT_CONN_MASK 0xFFFF 2462306a36Sopenharmony_ci#define BNX2X_MAX_ISCSI_TRGT_CONN_SHIFT 0 2562306a36Sopenharmony_ci#define BNX2X_MAX_ISCSI_INIT_CONN_MASK 0xFFFF0000 2662306a36Sopenharmony_ci#define BNX2X_MAX_ISCSI_INIT_CONN_SHIFT 16 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci u32 reserved_a; 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ci u32 max_fcoe_conn; 3162306a36Sopenharmony_ci#define BNX2X_MAX_FCOE_TRGT_CONN_MASK 0xFFFF 3262306a36Sopenharmony_ci#define BNX2X_MAX_FCOE_TRGT_CONN_SHIFT 0 3362306a36Sopenharmony_ci#define BNX2X_MAX_FCOE_INIT_CONN_MASK 0xFFFF0000 3462306a36Sopenharmony_ci#define BNX2X_MAX_FCOE_INIT_CONN_SHIFT 16 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ci u32 reserved_b[4]; 3762306a36Sopenharmony_ci}; 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_ci/**************************************************************************** 4062306a36Sopenharmony_ci * Shared HW configuration * 4162306a36Sopenharmony_ci ****************************************************************************/ 4262306a36Sopenharmony_ci#define PIN_CFG_NA 0x00000000 4362306a36Sopenharmony_ci#define PIN_CFG_GPIO0_P0 0x00000001 4462306a36Sopenharmony_ci#define PIN_CFG_GPIO1_P0 0x00000002 4562306a36Sopenharmony_ci#define PIN_CFG_GPIO2_P0 0x00000003 4662306a36Sopenharmony_ci#define PIN_CFG_GPIO3_P0 0x00000004 4762306a36Sopenharmony_ci#define PIN_CFG_GPIO0_P1 0x00000005 4862306a36Sopenharmony_ci#define PIN_CFG_GPIO1_P1 0x00000006 4962306a36Sopenharmony_ci#define PIN_CFG_GPIO2_P1 0x00000007 5062306a36Sopenharmony_ci#define PIN_CFG_GPIO3_P1 0x00000008 5162306a36Sopenharmony_ci#define PIN_CFG_EPIO0 0x00000009 5262306a36Sopenharmony_ci#define PIN_CFG_EPIO1 0x0000000a 5362306a36Sopenharmony_ci#define PIN_CFG_EPIO2 0x0000000b 5462306a36Sopenharmony_ci#define PIN_CFG_EPIO3 0x0000000c 5562306a36Sopenharmony_ci#define PIN_CFG_EPIO4 0x0000000d 5662306a36Sopenharmony_ci#define PIN_CFG_EPIO5 0x0000000e 5762306a36Sopenharmony_ci#define PIN_CFG_EPIO6 0x0000000f 5862306a36Sopenharmony_ci#define PIN_CFG_EPIO7 0x00000010 5962306a36Sopenharmony_ci#define PIN_CFG_EPIO8 0x00000011 6062306a36Sopenharmony_ci#define PIN_CFG_EPIO9 0x00000012 6162306a36Sopenharmony_ci#define PIN_CFG_EPIO10 0x00000013 6262306a36Sopenharmony_ci#define PIN_CFG_EPIO11 0x00000014 6362306a36Sopenharmony_ci#define PIN_CFG_EPIO12 0x00000015 6462306a36Sopenharmony_ci#define PIN_CFG_EPIO13 0x00000016 6562306a36Sopenharmony_ci#define PIN_CFG_EPIO14 0x00000017 6662306a36Sopenharmony_ci#define PIN_CFG_EPIO15 0x00000018 6762306a36Sopenharmony_ci#define PIN_CFG_EPIO16 0x00000019 6862306a36Sopenharmony_ci#define PIN_CFG_EPIO17 0x0000001a 6962306a36Sopenharmony_ci#define PIN_CFG_EPIO18 0x0000001b 7062306a36Sopenharmony_ci#define PIN_CFG_EPIO19 0x0000001c 7162306a36Sopenharmony_ci#define PIN_CFG_EPIO20 0x0000001d 7262306a36Sopenharmony_ci#define PIN_CFG_EPIO21 0x0000001e 7362306a36Sopenharmony_ci#define PIN_CFG_EPIO22 0x0000001f 7462306a36Sopenharmony_ci#define PIN_CFG_EPIO23 0x00000020 7562306a36Sopenharmony_ci#define PIN_CFG_EPIO24 0x00000021 7662306a36Sopenharmony_ci#define PIN_CFG_EPIO25 0x00000022 7762306a36Sopenharmony_ci#define PIN_CFG_EPIO26 0x00000023 7862306a36Sopenharmony_ci#define PIN_CFG_EPIO27 0x00000024 7962306a36Sopenharmony_ci#define PIN_CFG_EPIO28 0x00000025 8062306a36Sopenharmony_ci#define PIN_CFG_EPIO29 0x00000026 8162306a36Sopenharmony_ci#define PIN_CFG_EPIO30 0x00000027 8262306a36Sopenharmony_ci#define PIN_CFG_EPIO31 0x00000028 8362306a36Sopenharmony_ci 8462306a36Sopenharmony_ci/* EPIO definition */ 8562306a36Sopenharmony_ci#define EPIO_CFG_NA 0x00000000 8662306a36Sopenharmony_ci#define EPIO_CFG_EPIO0 0x00000001 8762306a36Sopenharmony_ci#define EPIO_CFG_EPIO1 0x00000002 8862306a36Sopenharmony_ci#define EPIO_CFG_EPIO2 0x00000003 8962306a36Sopenharmony_ci#define EPIO_CFG_EPIO3 0x00000004 9062306a36Sopenharmony_ci#define EPIO_CFG_EPIO4 0x00000005 9162306a36Sopenharmony_ci#define EPIO_CFG_EPIO5 0x00000006 9262306a36Sopenharmony_ci#define EPIO_CFG_EPIO6 0x00000007 9362306a36Sopenharmony_ci#define EPIO_CFG_EPIO7 0x00000008 9462306a36Sopenharmony_ci#define EPIO_CFG_EPIO8 0x00000009 9562306a36Sopenharmony_ci#define EPIO_CFG_EPIO9 0x0000000a 9662306a36Sopenharmony_ci#define EPIO_CFG_EPIO10 0x0000000b 9762306a36Sopenharmony_ci#define EPIO_CFG_EPIO11 0x0000000c 9862306a36Sopenharmony_ci#define EPIO_CFG_EPIO12 0x0000000d 9962306a36Sopenharmony_ci#define EPIO_CFG_EPIO13 0x0000000e 10062306a36Sopenharmony_ci#define EPIO_CFG_EPIO14 0x0000000f 10162306a36Sopenharmony_ci#define EPIO_CFG_EPIO15 0x00000010 10262306a36Sopenharmony_ci#define EPIO_CFG_EPIO16 0x00000011 10362306a36Sopenharmony_ci#define EPIO_CFG_EPIO17 0x00000012 10462306a36Sopenharmony_ci#define EPIO_CFG_EPIO18 0x00000013 10562306a36Sopenharmony_ci#define EPIO_CFG_EPIO19 0x00000014 10662306a36Sopenharmony_ci#define EPIO_CFG_EPIO20 0x00000015 10762306a36Sopenharmony_ci#define EPIO_CFG_EPIO21 0x00000016 10862306a36Sopenharmony_ci#define EPIO_CFG_EPIO22 0x00000017 10962306a36Sopenharmony_ci#define EPIO_CFG_EPIO23 0x00000018 11062306a36Sopenharmony_ci#define EPIO_CFG_EPIO24 0x00000019 11162306a36Sopenharmony_ci#define EPIO_CFG_EPIO25 0x0000001a 11262306a36Sopenharmony_ci#define EPIO_CFG_EPIO26 0x0000001b 11362306a36Sopenharmony_ci#define EPIO_CFG_EPIO27 0x0000001c 11462306a36Sopenharmony_ci#define EPIO_CFG_EPIO28 0x0000001d 11562306a36Sopenharmony_ci#define EPIO_CFG_EPIO29 0x0000001e 11662306a36Sopenharmony_ci#define EPIO_CFG_EPIO30 0x0000001f 11762306a36Sopenharmony_ci#define EPIO_CFG_EPIO31 0x00000020 11862306a36Sopenharmony_ci 11962306a36Sopenharmony_cistruct mac_addr { 12062306a36Sopenharmony_ci u32 upper; 12162306a36Sopenharmony_ci u32 lower; 12262306a36Sopenharmony_ci}; 12362306a36Sopenharmony_ci 12462306a36Sopenharmony_cistruct shared_hw_cfg { /* NVRAM Offset */ 12562306a36Sopenharmony_ci /* Up to 16 bytes of NULL-terminated string */ 12662306a36Sopenharmony_ci u8 part_num[16]; /* 0x104 */ 12762306a36Sopenharmony_ci 12862306a36Sopenharmony_ci u32 config; /* 0x114 */ 12962306a36Sopenharmony_ci #define SHARED_HW_CFG_MDIO_VOLTAGE_MASK 0x00000001 13062306a36Sopenharmony_ci #define SHARED_HW_CFG_MDIO_VOLTAGE_SHIFT 0 13162306a36Sopenharmony_ci #define SHARED_HW_CFG_MDIO_VOLTAGE_1_2V 0x00000000 13262306a36Sopenharmony_ci #define SHARED_HW_CFG_MDIO_VOLTAGE_2_5V 0x00000001 13362306a36Sopenharmony_ci #define SHARED_HW_CFG_MCP_RST_ON_CORE_RST_EN 0x00000002 13462306a36Sopenharmony_ci 13562306a36Sopenharmony_ci #define SHARED_HW_CFG_PORT_SWAP 0x00000004 13662306a36Sopenharmony_ci 13762306a36Sopenharmony_ci #define SHARED_HW_CFG_BEACON_WOL_EN 0x00000008 13862306a36Sopenharmony_ci 13962306a36Sopenharmony_ci #define SHARED_HW_CFG_PCIE_GEN3_DISABLED 0x00000000 14062306a36Sopenharmony_ci #define SHARED_HW_CFG_PCIE_GEN3_ENABLED 0x00000010 14162306a36Sopenharmony_ci 14262306a36Sopenharmony_ci #define SHARED_HW_CFG_MFW_SELECT_MASK 0x00000700 14362306a36Sopenharmony_ci #define SHARED_HW_CFG_MFW_SELECT_SHIFT 8 14462306a36Sopenharmony_ci /* Whatever MFW found in NVM 14562306a36Sopenharmony_ci (if multiple found, priority order is: NC-SI, UMP, IPMI) */ 14662306a36Sopenharmony_ci #define SHARED_HW_CFG_MFW_SELECT_DEFAULT 0x00000000 14762306a36Sopenharmony_ci #define SHARED_HW_CFG_MFW_SELECT_NC_SI 0x00000100 14862306a36Sopenharmony_ci #define SHARED_HW_CFG_MFW_SELECT_UMP 0x00000200 14962306a36Sopenharmony_ci #define SHARED_HW_CFG_MFW_SELECT_IPMI 0x00000300 15062306a36Sopenharmony_ci /* Use SPIO4 as an arbiter between: 0-NC_SI, 1-IPMI 15162306a36Sopenharmony_ci (can only be used when an add-in board, not BMC, pulls-down SPIO4) */ 15262306a36Sopenharmony_ci #define SHARED_HW_CFG_MFW_SELECT_SPIO4_NC_SI_IPMI 0x00000400 15362306a36Sopenharmony_ci /* Use SPIO4 as an arbiter between: 0-UMP, 1-IPMI 15462306a36Sopenharmony_ci (can only be used when an add-in board, not BMC, pulls-down SPIO4) */ 15562306a36Sopenharmony_ci #define SHARED_HW_CFG_MFW_SELECT_SPIO4_UMP_IPMI 0x00000500 15662306a36Sopenharmony_ci /* Use SPIO4 as an arbiter between: 0-NC-SI, 1-UMP 15762306a36Sopenharmony_ci (can only be used when an add-in board, not BMC, pulls-down SPIO4) */ 15862306a36Sopenharmony_ci #define SHARED_HW_CFG_MFW_SELECT_SPIO4_NC_SI_UMP 0x00000600 15962306a36Sopenharmony_ci 16062306a36Sopenharmony_ci #define SHARED_HW_CFG_LED_MODE_MASK 0x000f0000 16162306a36Sopenharmony_ci #define SHARED_HW_CFG_LED_MODE_SHIFT 16 16262306a36Sopenharmony_ci #define SHARED_HW_CFG_LED_MAC1 0x00000000 16362306a36Sopenharmony_ci #define SHARED_HW_CFG_LED_PHY1 0x00010000 16462306a36Sopenharmony_ci #define SHARED_HW_CFG_LED_PHY2 0x00020000 16562306a36Sopenharmony_ci #define SHARED_HW_CFG_LED_PHY3 0x00030000 16662306a36Sopenharmony_ci #define SHARED_HW_CFG_LED_MAC2 0x00040000 16762306a36Sopenharmony_ci #define SHARED_HW_CFG_LED_PHY4 0x00050000 16862306a36Sopenharmony_ci #define SHARED_HW_CFG_LED_PHY5 0x00060000 16962306a36Sopenharmony_ci #define SHARED_HW_CFG_LED_PHY6 0x00070000 17062306a36Sopenharmony_ci #define SHARED_HW_CFG_LED_MAC3 0x00080000 17162306a36Sopenharmony_ci #define SHARED_HW_CFG_LED_PHY7 0x00090000 17262306a36Sopenharmony_ci #define SHARED_HW_CFG_LED_PHY9 0x000a0000 17362306a36Sopenharmony_ci #define SHARED_HW_CFG_LED_PHY11 0x000b0000 17462306a36Sopenharmony_ci #define SHARED_HW_CFG_LED_MAC4 0x000c0000 17562306a36Sopenharmony_ci #define SHARED_HW_CFG_LED_PHY8 0x000d0000 17662306a36Sopenharmony_ci #define SHARED_HW_CFG_LED_EXTPHY1 0x000e0000 17762306a36Sopenharmony_ci #define SHARED_HW_CFG_LED_EXTPHY2 0x000f0000 17862306a36Sopenharmony_ci 17962306a36Sopenharmony_ci 18062306a36Sopenharmony_ci #define SHARED_HW_CFG_AN_ENABLE_MASK 0x3f000000 18162306a36Sopenharmony_ci #define SHARED_HW_CFG_AN_ENABLE_SHIFT 24 18262306a36Sopenharmony_ci #define SHARED_HW_CFG_AN_ENABLE_CL37 0x01000000 18362306a36Sopenharmony_ci #define SHARED_HW_CFG_AN_ENABLE_CL73 0x02000000 18462306a36Sopenharmony_ci #define SHARED_HW_CFG_AN_ENABLE_BAM 0x04000000 18562306a36Sopenharmony_ci #define SHARED_HW_CFG_AN_ENABLE_PARALLEL_DETECTION 0x08000000 18662306a36Sopenharmony_ci #define SHARED_HW_CFG_AN_EN_SGMII_FIBER_AUTO_DETECT 0x10000000 18762306a36Sopenharmony_ci #define SHARED_HW_CFG_AN_ENABLE_REMOTE_PHY 0x20000000 18862306a36Sopenharmony_ci 18962306a36Sopenharmony_ci #define SHARED_HW_CFG_SRIOV_MASK 0x40000000 19062306a36Sopenharmony_ci #define SHARED_HW_CFG_SRIOV_DISABLED 0x00000000 19162306a36Sopenharmony_ci #define SHARED_HW_CFG_SRIOV_ENABLED 0x40000000 19262306a36Sopenharmony_ci 19362306a36Sopenharmony_ci #define SHARED_HW_CFG_ATC_MASK 0x80000000 19462306a36Sopenharmony_ci #define SHARED_HW_CFG_ATC_DISABLED 0x00000000 19562306a36Sopenharmony_ci #define SHARED_HW_CFG_ATC_ENABLED 0x80000000 19662306a36Sopenharmony_ci 19762306a36Sopenharmony_ci u32 config2; /* 0x118 */ 19862306a36Sopenharmony_ci /* one time auto detect grace period (in sec) */ 19962306a36Sopenharmony_ci #define SHARED_HW_CFG_GRACE_PERIOD_MASK 0x000000ff 20062306a36Sopenharmony_ci #define SHARED_HW_CFG_GRACE_PERIOD_SHIFT 0 20162306a36Sopenharmony_ci 20262306a36Sopenharmony_ci #define SHARED_HW_CFG_PCIE_GEN2_ENABLED 0x00000100 20362306a36Sopenharmony_ci #define SHARED_HW_CFG_PCIE_GEN2_DISABLED 0x00000000 20462306a36Sopenharmony_ci 20562306a36Sopenharmony_ci /* The default value for the core clock is 250MHz and it is 20662306a36Sopenharmony_ci achieved by setting the clock change to 4 */ 20762306a36Sopenharmony_ci #define SHARED_HW_CFG_CLOCK_CHANGE_MASK 0x00000e00 20862306a36Sopenharmony_ci #define SHARED_HW_CFG_CLOCK_CHANGE_SHIFT 9 20962306a36Sopenharmony_ci 21062306a36Sopenharmony_ci #define SHARED_HW_CFG_SMBUS_TIMING_MASK 0x00001000 21162306a36Sopenharmony_ci #define SHARED_HW_CFG_SMBUS_TIMING_100KHZ 0x00000000 21262306a36Sopenharmony_ci #define SHARED_HW_CFG_SMBUS_TIMING_400KHZ 0x00001000 21362306a36Sopenharmony_ci 21462306a36Sopenharmony_ci #define SHARED_HW_CFG_HIDE_PORT1 0x00002000 21562306a36Sopenharmony_ci 21662306a36Sopenharmony_ci #define SHARED_HW_CFG_WOL_CAPABLE_MASK 0x00004000 21762306a36Sopenharmony_ci #define SHARED_HW_CFG_WOL_CAPABLE_DISABLED 0x00000000 21862306a36Sopenharmony_ci #define SHARED_HW_CFG_WOL_CAPABLE_ENABLED 0x00004000 21962306a36Sopenharmony_ci 22062306a36Sopenharmony_ci /* Output low when PERST is asserted */ 22162306a36Sopenharmony_ci #define SHARED_HW_CFG_SPIO4_FOLLOW_PERST_MASK 0x00008000 22262306a36Sopenharmony_ci #define SHARED_HW_CFG_SPIO4_FOLLOW_PERST_DISABLED 0x00000000 22362306a36Sopenharmony_ci #define SHARED_HW_CFG_SPIO4_FOLLOW_PERST_ENABLED 0x00008000 22462306a36Sopenharmony_ci 22562306a36Sopenharmony_ci #define SHARED_HW_CFG_PCIE_GEN2_PREEMPHASIS_MASK 0x00070000 22662306a36Sopenharmony_ci #define SHARED_HW_CFG_PCIE_GEN2_PREEMPHASIS_SHIFT 16 22762306a36Sopenharmony_ci #define SHARED_HW_CFG_PCIE_GEN2_PREEMPHASIS_HW 0x00000000 22862306a36Sopenharmony_ci #define SHARED_HW_CFG_PCIE_GEN2_PREEMPHASIS_0DB 0x00010000 22962306a36Sopenharmony_ci #define SHARED_HW_CFG_PCIE_GEN2_PREEMPHASIS_3_5DB 0x00020000 23062306a36Sopenharmony_ci #define SHARED_HW_CFG_PCIE_GEN2_PREEMPHASIS_6_0DB 0x00030000 23162306a36Sopenharmony_ci 23262306a36Sopenharmony_ci /* The fan failure mechanism is usually related to the PHY type 23362306a36Sopenharmony_ci since the power consumption of the board is determined by the PHY. 23462306a36Sopenharmony_ci Currently, fan is required for most designs with SFX7101, BCM8727 23562306a36Sopenharmony_ci and BCM8481. If a fan is not required for a board which uses one 23662306a36Sopenharmony_ci of those PHYs, this field should be set to "Disabled". If a fan is 23762306a36Sopenharmony_ci required for a different PHY type, this option should be set to 23862306a36Sopenharmony_ci "Enabled". The fan failure indication is expected on SPIO5 */ 23962306a36Sopenharmony_ci #define SHARED_HW_CFG_FAN_FAILURE_MASK 0x00180000 24062306a36Sopenharmony_ci #define SHARED_HW_CFG_FAN_FAILURE_SHIFT 19 24162306a36Sopenharmony_ci #define SHARED_HW_CFG_FAN_FAILURE_PHY_TYPE 0x00000000 24262306a36Sopenharmony_ci #define SHARED_HW_CFG_FAN_FAILURE_DISABLED 0x00080000 24362306a36Sopenharmony_ci #define SHARED_HW_CFG_FAN_FAILURE_ENABLED 0x00100000 24462306a36Sopenharmony_ci 24562306a36Sopenharmony_ci /* ASPM Power Management support */ 24662306a36Sopenharmony_ci #define SHARED_HW_CFG_ASPM_SUPPORT_MASK 0x00600000 24762306a36Sopenharmony_ci #define SHARED_HW_CFG_ASPM_SUPPORT_SHIFT 21 24862306a36Sopenharmony_ci #define SHARED_HW_CFG_ASPM_SUPPORT_L0S_L1_ENABLED 0x00000000 24962306a36Sopenharmony_ci #define SHARED_HW_CFG_ASPM_SUPPORT_L0S_DISABLED 0x00200000 25062306a36Sopenharmony_ci #define SHARED_HW_CFG_ASPM_SUPPORT_L1_DISABLED 0x00400000 25162306a36Sopenharmony_ci #define SHARED_HW_CFG_ASPM_SUPPORT_L0S_L1_DISABLED 0x00600000 25262306a36Sopenharmony_ci 25362306a36Sopenharmony_ci /* The value of PM_TL_IGNORE_REQS (bit0) in PCI register 25462306a36Sopenharmony_ci tl_control_0 (register 0x2800) */ 25562306a36Sopenharmony_ci #define SHARED_HW_CFG_PREVENT_L1_ENTRY_MASK 0x00800000 25662306a36Sopenharmony_ci #define SHARED_HW_CFG_PREVENT_L1_ENTRY_DISABLED 0x00000000 25762306a36Sopenharmony_ci #define SHARED_HW_CFG_PREVENT_L1_ENTRY_ENABLED 0x00800000 25862306a36Sopenharmony_ci 25962306a36Sopenharmony_ci #define SHARED_HW_CFG_PORT_MODE_MASK 0x01000000 26062306a36Sopenharmony_ci #define SHARED_HW_CFG_PORT_MODE_2 0x00000000 26162306a36Sopenharmony_ci #define SHARED_HW_CFG_PORT_MODE_4 0x01000000 26262306a36Sopenharmony_ci 26362306a36Sopenharmony_ci #define SHARED_HW_CFG_PATH_SWAP_MASK 0x02000000 26462306a36Sopenharmony_ci #define SHARED_HW_CFG_PATH_SWAP_DISABLED 0x00000000 26562306a36Sopenharmony_ci #define SHARED_HW_CFG_PATH_SWAP_ENABLED 0x02000000 26662306a36Sopenharmony_ci 26762306a36Sopenharmony_ci /* Set the MDC/MDIO access for the first external phy */ 26862306a36Sopenharmony_ci #define SHARED_HW_CFG_MDC_MDIO_ACCESS1_MASK 0x1C000000 26962306a36Sopenharmony_ci #define SHARED_HW_CFG_MDC_MDIO_ACCESS1_SHIFT 26 27062306a36Sopenharmony_ci #define SHARED_HW_CFG_MDC_MDIO_ACCESS1_PHY_TYPE 0x00000000 27162306a36Sopenharmony_ci #define SHARED_HW_CFG_MDC_MDIO_ACCESS1_EMAC0 0x04000000 27262306a36Sopenharmony_ci #define SHARED_HW_CFG_MDC_MDIO_ACCESS1_EMAC1 0x08000000 27362306a36Sopenharmony_ci #define SHARED_HW_CFG_MDC_MDIO_ACCESS1_BOTH 0x0c000000 27462306a36Sopenharmony_ci #define SHARED_HW_CFG_MDC_MDIO_ACCESS1_SWAPPED 0x10000000 27562306a36Sopenharmony_ci 27662306a36Sopenharmony_ci /* Set the MDC/MDIO access for the second external phy */ 27762306a36Sopenharmony_ci #define SHARED_HW_CFG_MDC_MDIO_ACCESS2_MASK 0xE0000000 27862306a36Sopenharmony_ci #define SHARED_HW_CFG_MDC_MDIO_ACCESS2_SHIFT 29 27962306a36Sopenharmony_ci #define SHARED_HW_CFG_MDC_MDIO_ACCESS2_PHY_TYPE 0x00000000 28062306a36Sopenharmony_ci #define SHARED_HW_CFG_MDC_MDIO_ACCESS2_EMAC0 0x20000000 28162306a36Sopenharmony_ci #define SHARED_HW_CFG_MDC_MDIO_ACCESS2_EMAC1 0x40000000 28262306a36Sopenharmony_ci #define SHARED_HW_CFG_MDC_MDIO_ACCESS2_BOTH 0x60000000 28362306a36Sopenharmony_ci #define SHARED_HW_CFG_MDC_MDIO_ACCESS2_SWAPPED 0x80000000 28462306a36Sopenharmony_ci 28562306a36Sopenharmony_ci u32 config_3; /* 0x11C */ 28662306a36Sopenharmony_ci #define SHARED_HW_CFG_EXTENDED_MF_MODE_MASK 0x00000F00 28762306a36Sopenharmony_ci #define SHARED_HW_CFG_EXTENDED_MF_MODE_SHIFT 8 28862306a36Sopenharmony_ci #define SHARED_HW_CFG_EXTENDED_MF_MODE_NPAR1_DOT_5 0x00000000 28962306a36Sopenharmony_ci #define SHARED_HW_CFG_EXTENDED_MF_MODE_NPAR2_DOT_0 0x00000100 29062306a36Sopenharmony_ci 29162306a36Sopenharmony_ci u32 ump_nc_si_config; /* 0x120 */ 29262306a36Sopenharmony_ci #define SHARED_HW_CFG_UMP_NC_SI_MII_MODE_MASK 0x00000003 29362306a36Sopenharmony_ci #define SHARED_HW_CFG_UMP_NC_SI_MII_MODE_SHIFT 0 29462306a36Sopenharmony_ci #define SHARED_HW_CFG_UMP_NC_SI_MII_MODE_MAC 0x00000000 29562306a36Sopenharmony_ci #define SHARED_HW_CFG_UMP_NC_SI_MII_MODE_PHY 0x00000001 29662306a36Sopenharmony_ci #define SHARED_HW_CFG_UMP_NC_SI_MII_MODE_MII 0x00000000 29762306a36Sopenharmony_ci #define SHARED_HW_CFG_UMP_NC_SI_MII_MODE_RMII 0x00000002 29862306a36Sopenharmony_ci 29962306a36Sopenharmony_ci #define SHARED_HW_CFG_UMP_NC_SI_NUM_DEVS_MASK 0x00000f00 30062306a36Sopenharmony_ci #define SHARED_HW_CFG_UMP_NC_SI_NUM_DEVS_SHIFT 8 30162306a36Sopenharmony_ci 30262306a36Sopenharmony_ci #define SHARED_HW_CFG_UMP_NC_SI_EXT_PHY_TYPE_MASK 0x00ff0000 30362306a36Sopenharmony_ci #define SHARED_HW_CFG_UMP_NC_SI_EXT_PHY_TYPE_SHIFT 16 30462306a36Sopenharmony_ci #define SHARED_HW_CFG_UMP_NC_SI_EXT_PHY_TYPE_NONE 0x00000000 30562306a36Sopenharmony_ci #define SHARED_HW_CFG_UMP_NC_SI_EXT_PHY_TYPE_BCM5221 0x00010000 30662306a36Sopenharmony_ci 30762306a36Sopenharmony_ci u32 board; /* 0x124 */ 30862306a36Sopenharmony_ci #define SHARED_HW_CFG_E3_I2C_MUX0_MASK 0x0000003F 30962306a36Sopenharmony_ci #define SHARED_HW_CFG_E3_I2C_MUX0_SHIFT 0 31062306a36Sopenharmony_ci #define SHARED_HW_CFG_E3_I2C_MUX1_MASK 0x00000FC0 31162306a36Sopenharmony_ci #define SHARED_HW_CFG_E3_I2C_MUX1_SHIFT 6 31262306a36Sopenharmony_ci /* Use the PIN_CFG_XXX defines on top */ 31362306a36Sopenharmony_ci #define SHARED_HW_CFG_BOARD_REV_MASK 0x00ff0000 31462306a36Sopenharmony_ci #define SHARED_HW_CFG_BOARD_REV_SHIFT 16 31562306a36Sopenharmony_ci 31662306a36Sopenharmony_ci #define SHARED_HW_CFG_BOARD_MAJOR_VER_MASK 0x0f000000 31762306a36Sopenharmony_ci #define SHARED_HW_CFG_BOARD_MAJOR_VER_SHIFT 24 31862306a36Sopenharmony_ci 31962306a36Sopenharmony_ci #define SHARED_HW_CFG_BOARD_MINOR_VER_MASK 0xf0000000 32062306a36Sopenharmony_ci #define SHARED_HW_CFG_BOARD_MINOR_VER_SHIFT 28 32162306a36Sopenharmony_ci 32262306a36Sopenharmony_ci u32 wc_lane_config; /* 0x128 */ 32362306a36Sopenharmony_ci #define SHARED_HW_CFG_LANE_SWAP_CFG_MASK 0x0000FFFF 32462306a36Sopenharmony_ci #define SHARED_HW_CFG_LANE_SWAP_CFG_SHIFT 0 32562306a36Sopenharmony_ci #define SHARED_HW_CFG_LANE_SWAP_CFG_32103210 0x00001b1b 32662306a36Sopenharmony_ci #define SHARED_HW_CFG_LANE_SWAP_CFG_32100123 0x00001be4 32762306a36Sopenharmony_ci #define SHARED_HW_CFG_LANE_SWAP_CFG_01233210 0x0000e41b 32862306a36Sopenharmony_ci #define SHARED_HW_CFG_LANE_SWAP_CFG_01230123 0x0000e4e4 32962306a36Sopenharmony_ci #define SHARED_HW_CFG_LANE_SWAP_CFG_TX_MASK 0x000000FF 33062306a36Sopenharmony_ci #define SHARED_HW_CFG_LANE_SWAP_CFG_TX_SHIFT 0 33162306a36Sopenharmony_ci #define SHARED_HW_CFG_LANE_SWAP_CFG_RX_MASK 0x0000FF00 33262306a36Sopenharmony_ci #define SHARED_HW_CFG_LANE_SWAP_CFG_RX_SHIFT 8 33362306a36Sopenharmony_ci 33462306a36Sopenharmony_ci /* TX lane Polarity swap */ 33562306a36Sopenharmony_ci #define SHARED_HW_CFG_TX_LANE0_POL_FLIP_ENABLED 0x00010000 33662306a36Sopenharmony_ci #define SHARED_HW_CFG_TX_LANE1_POL_FLIP_ENABLED 0x00020000 33762306a36Sopenharmony_ci #define SHARED_HW_CFG_TX_LANE2_POL_FLIP_ENABLED 0x00040000 33862306a36Sopenharmony_ci #define SHARED_HW_CFG_TX_LANE3_POL_FLIP_ENABLED 0x00080000 33962306a36Sopenharmony_ci /* TX lane Polarity swap */ 34062306a36Sopenharmony_ci #define SHARED_HW_CFG_RX_LANE0_POL_FLIP_ENABLED 0x00100000 34162306a36Sopenharmony_ci #define SHARED_HW_CFG_RX_LANE1_POL_FLIP_ENABLED 0x00200000 34262306a36Sopenharmony_ci #define SHARED_HW_CFG_RX_LANE2_POL_FLIP_ENABLED 0x00400000 34362306a36Sopenharmony_ci #define SHARED_HW_CFG_RX_LANE3_POL_FLIP_ENABLED 0x00800000 34462306a36Sopenharmony_ci 34562306a36Sopenharmony_ci /* Selects the port layout of the board */ 34662306a36Sopenharmony_ci #define SHARED_HW_CFG_E3_PORT_LAYOUT_MASK 0x0F000000 34762306a36Sopenharmony_ci #define SHARED_HW_CFG_E3_PORT_LAYOUT_SHIFT 24 34862306a36Sopenharmony_ci #define SHARED_HW_CFG_E3_PORT_LAYOUT_2P_01 0x00000000 34962306a36Sopenharmony_ci #define SHARED_HW_CFG_E3_PORT_LAYOUT_2P_10 0x01000000 35062306a36Sopenharmony_ci #define SHARED_HW_CFG_E3_PORT_LAYOUT_4P_0123 0x02000000 35162306a36Sopenharmony_ci #define SHARED_HW_CFG_E3_PORT_LAYOUT_4P_1032 0x03000000 35262306a36Sopenharmony_ci #define SHARED_HW_CFG_E3_PORT_LAYOUT_4P_2301 0x04000000 35362306a36Sopenharmony_ci #define SHARED_HW_CFG_E3_PORT_LAYOUT_4P_3210 0x05000000 35462306a36Sopenharmony_ci}; 35562306a36Sopenharmony_ci 35662306a36Sopenharmony_ci 35762306a36Sopenharmony_ci/**************************************************************************** 35862306a36Sopenharmony_ci * Port HW configuration * 35962306a36Sopenharmony_ci ****************************************************************************/ 36062306a36Sopenharmony_cistruct port_hw_cfg { /* port 0: 0x12c port 1: 0x2bc */ 36162306a36Sopenharmony_ci 36262306a36Sopenharmony_ci u32 pci_id; 36362306a36Sopenharmony_ci #define PORT_HW_CFG_PCI_VENDOR_ID_MASK 0xffff0000 36462306a36Sopenharmony_ci #define PORT_HW_CFG_PCI_DEVICE_ID_MASK 0x0000ffff 36562306a36Sopenharmony_ci 36662306a36Sopenharmony_ci u32 pci_sub_id; 36762306a36Sopenharmony_ci #define PORT_HW_CFG_PCI_SUBSYS_DEVICE_ID_MASK 0xffff0000 36862306a36Sopenharmony_ci #define PORT_HW_CFG_PCI_SUBSYS_VENDOR_ID_MASK 0x0000ffff 36962306a36Sopenharmony_ci 37062306a36Sopenharmony_ci u32 power_dissipated; 37162306a36Sopenharmony_ci #define PORT_HW_CFG_POWER_DIS_D0_MASK 0x000000ff 37262306a36Sopenharmony_ci #define PORT_HW_CFG_POWER_DIS_D0_SHIFT 0 37362306a36Sopenharmony_ci #define PORT_HW_CFG_POWER_DIS_D1_MASK 0x0000ff00 37462306a36Sopenharmony_ci #define PORT_HW_CFG_POWER_DIS_D1_SHIFT 8 37562306a36Sopenharmony_ci #define PORT_HW_CFG_POWER_DIS_D2_MASK 0x00ff0000 37662306a36Sopenharmony_ci #define PORT_HW_CFG_POWER_DIS_D2_SHIFT 16 37762306a36Sopenharmony_ci #define PORT_HW_CFG_POWER_DIS_D3_MASK 0xff000000 37862306a36Sopenharmony_ci #define PORT_HW_CFG_POWER_DIS_D3_SHIFT 24 37962306a36Sopenharmony_ci 38062306a36Sopenharmony_ci u32 power_consumed; 38162306a36Sopenharmony_ci #define PORT_HW_CFG_POWER_CONS_D0_MASK 0x000000ff 38262306a36Sopenharmony_ci #define PORT_HW_CFG_POWER_CONS_D0_SHIFT 0 38362306a36Sopenharmony_ci #define PORT_HW_CFG_POWER_CONS_D1_MASK 0x0000ff00 38462306a36Sopenharmony_ci #define PORT_HW_CFG_POWER_CONS_D1_SHIFT 8 38562306a36Sopenharmony_ci #define PORT_HW_CFG_POWER_CONS_D2_MASK 0x00ff0000 38662306a36Sopenharmony_ci #define PORT_HW_CFG_POWER_CONS_D2_SHIFT 16 38762306a36Sopenharmony_ci #define PORT_HW_CFG_POWER_CONS_D3_MASK 0xff000000 38862306a36Sopenharmony_ci #define PORT_HW_CFG_POWER_CONS_D3_SHIFT 24 38962306a36Sopenharmony_ci 39062306a36Sopenharmony_ci u32 mac_upper; 39162306a36Sopenharmony_ci #define PORT_HW_CFG_UPPERMAC_MASK 0x0000ffff 39262306a36Sopenharmony_ci #define PORT_HW_CFG_UPPERMAC_SHIFT 0 39362306a36Sopenharmony_ci u32 mac_lower; 39462306a36Sopenharmony_ci 39562306a36Sopenharmony_ci u32 iscsi_mac_upper; /* Upper 16 bits are always zeroes */ 39662306a36Sopenharmony_ci u32 iscsi_mac_lower; 39762306a36Sopenharmony_ci 39862306a36Sopenharmony_ci u32 rdma_mac_upper; /* Upper 16 bits are always zeroes */ 39962306a36Sopenharmony_ci u32 rdma_mac_lower; 40062306a36Sopenharmony_ci 40162306a36Sopenharmony_ci u32 serdes_config; 40262306a36Sopenharmony_ci #define PORT_HW_CFG_SERDES_TX_DRV_PRE_EMPHASIS_MASK 0x0000ffff 40362306a36Sopenharmony_ci #define PORT_HW_CFG_SERDES_TX_DRV_PRE_EMPHASIS_SHIFT 0 40462306a36Sopenharmony_ci 40562306a36Sopenharmony_ci #define PORT_HW_CFG_SERDES_RX_DRV_EQUALIZER_MASK 0xffff0000 40662306a36Sopenharmony_ci #define PORT_HW_CFG_SERDES_RX_DRV_EQUALIZER_SHIFT 16 40762306a36Sopenharmony_ci 40862306a36Sopenharmony_ci 40962306a36Sopenharmony_ci /* Default values: 2P-64, 4P-32 */ 41062306a36Sopenharmony_ci u32 pf_config; /* 0x158 */ 41162306a36Sopenharmony_ci #define PORT_HW_CFG_PF_NUM_VF_MASK 0x0000007F 41262306a36Sopenharmony_ci #define PORT_HW_CFG_PF_NUM_VF_SHIFT 0 41362306a36Sopenharmony_ci 41462306a36Sopenharmony_ci /* Default values: 17 */ 41562306a36Sopenharmony_ci #define PORT_HW_CFG_PF_NUM_MSIX_VECTORS_MASK 0x00007F00 41662306a36Sopenharmony_ci #define PORT_HW_CFG_PF_NUM_MSIX_VECTORS_SHIFT 8 41762306a36Sopenharmony_ci 41862306a36Sopenharmony_ci #define PORT_HW_CFG_ENABLE_FLR_MASK 0x00010000 41962306a36Sopenharmony_ci #define PORT_HW_CFG_FLR_ENABLED 0x00010000 42062306a36Sopenharmony_ci 42162306a36Sopenharmony_ci u32 vf_config; /* 0x15C */ 42262306a36Sopenharmony_ci #define PORT_HW_CFG_VF_NUM_MSIX_VECTORS_MASK 0x0000007F 42362306a36Sopenharmony_ci #define PORT_HW_CFG_VF_NUM_MSIX_VECTORS_SHIFT 0 42462306a36Sopenharmony_ci 42562306a36Sopenharmony_ci #define PORT_HW_CFG_VF_PCI_DEVICE_ID_MASK 0xFFFF0000 42662306a36Sopenharmony_ci #define PORT_HW_CFG_VF_PCI_DEVICE_ID_SHIFT 16 42762306a36Sopenharmony_ci 42862306a36Sopenharmony_ci u32 mf_pci_id; /* 0x160 */ 42962306a36Sopenharmony_ci #define PORT_HW_CFG_MF_PCI_DEVICE_ID_MASK 0x0000FFFF 43062306a36Sopenharmony_ci #define PORT_HW_CFG_MF_PCI_DEVICE_ID_SHIFT 0 43162306a36Sopenharmony_ci 43262306a36Sopenharmony_ci /* Controls the TX laser of the SFP+ module */ 43362306a36Sopenharmony_ci u32 sfp_ctrl; /* 0x164 */ 43462306a36Sopenharmony_ci #define PORT_HW_CFG_TX_LASER_MASK 0x000000FF 43562306a36Sopenharmony_ci #define PORT_HW_CFG_TX_LASER_SHIFT 0 43662306a36Sopenharmony_ci #define PORT_HW_CFG_TX_LASER_MDIO 0x00000000 43762306a36Sopenharmony_ci #define PORT_HW_CFG_TX_LASER_GPIO0 0x00000001 43862306a36Sopenharmony_ci #define PORT_HW_CFG_TX_LASER_GPIO1 0x00000002 43962306a36Sopenharmony_ci #define PORT_HW_CFG_TX_LASER_GPIO2 0x00000003 44062306a36Sopenharmony_ci #define PORT_HW_CFG_TX_LASER_GPIO3 0x00000004 44162306a36Sopenharmony_ci 44262306a36Sopenharmony_ci /* Controls the fault module LED of the SFP+ */ 44362306a36Sopenharmony_ci #define PORT_HW_CFG_FAULT_MODULE_LED_MASK 0x0000FF00 44462306a36Sopenharmony_ci #define PORT_HW_CFG_FAULT_MODULE_LED_SHIFT 8 44562306a36Sopenharmony_ci #define PORT_HW_CFG_FAULT_MODULE_LED_GPIO0 0x00000000 44662306a36Sopenharmony_ci #define PORT_HW_CFG_FAULT_MODULE_LED_GPIO1 0x00000100 44762306a36Sopenharmony_ci #define PORT_HW_CFG_FAULT_MODULE_LED_GPIO2 0x00000200 44862306a36Sopenharmony_ci #define PORT_HW_CFG_FAULT_MODULE_LED_GPIO3 0x00000300 44962306a36Sopenharmony_ci #define PORT_HW_CFG_FAULT_MODULE_LED_DISABLED 0x00000400 45062306a36Sopenharmony_ci 45162306a36Sopenharmony_ci /* The output pin TX_DIS that controls the TX laser of the SFP+ 45262306a36Sopenharmony_ci module. Use the PIN_CFG_XXX defines on top */ 45362306a36Sopenharmony_ci u32 e3_sfp_ctrl; /* 0x168 */ 45462306a36Sopenharmony_ci #define PORT_HW_CFG_E3_TX_LASER_MASK 0x000000FF 45562306a36Sopenharmony_ci #define PORT_HW_CFG_E3_TX_LASER_SHIFT 0 45662306a36Sopenharmony_ci 45762306a36Sopenharmony_ci /* The output pin for SFPP_TYPE which turns on the Fault module LED */ 45862306a36Sopenharmony_ci #define PORT_HW_CFG_E3_FAULT_MDL_LED_MASK 0x0000FF00 45962306a36Sopenharmony_ci #define PORT_HW_CFG_E3_FAULT_MDL_LED_SHIFT 8 46062306a36Sopenharmony_ci 46162306a36Sopenharmony_ci /* The input pin MOD_ABS that indicates whether SFP+ module is 46262306a36Sopenharmony_ci present or not. Use the PIN_CFG_XXX defines on top */ 46362306a36Sopenharmony_ci #define PORT_HW_CFG_E3_MOD_ABS_MASK 0x00FF0000 46462306a36Sopenharmony_ci #define PORT_HW_CFG_E3_MOD_ABS_SHIFT 16 46562306a36Sopenharmony_ci 46662306a36Sopenharmony_ci /* The output pin PWRDIS_SFP_X which disable the power of the SFP+ 46762306a36Sopenharmony_ci module. Use the PIN_CFG_XXX defines on top */ 46862306a36Sopenharmony_ci #define PORT_HW_CFG_E3_PWR_DIS_MASK 0xFF000000 46962306a36Sopenharmony_ci #define PORT_HW_CFG_E3_PWR_DIS_SHIFT 24 47062306a36Sopenharmony_ci 47162306a36Sopenharmony_ci /* 47262306a36Sopenharmony_ci * The input pin which signals module transmit fault. Use the 47362306a36Sopenharmony_ci * PIN_CFG_XXX defines on top 47462306a36Sopenharmony_ci */ 47562306a36Sopenharmony_ci u32 e3_cmn_pin_cfg; /* 0x16C */ 47662306a36Sopenharmony_ci #define PORT_HW_CFG_E3_TX_FAULT_MASK 0x000000FF 47762306a36Sopenharmony_ci #define PORT_HW_CFG_E3_TX_FAULT_SHIFT 0 47862306a36Sopenharmony_ci 47962306a36Sopenharmony_ci /* The output pin which reset the PHY. Use the PIN_CFG_XXX defines on 48062306a36Sopenharmony_ci top */ 48162306a36Sopenharmony_ci #define PORT_HW_CFG_E3_PHY_RESET_MASK 0x0000FF00 48262306a36Sopenharmony_ci #define PORT_HW_CFG_E3_PHY_RESET_SHIFT 8 48362306a36Sopenharmony_ci 48462306a36Sopenharmony_ci /* 48562306a36Sopenharmony_ci * The output pin which powers down the PHY. Use the PIN_CFG_XXX 48662306a36Sopenharmony_ci * defines on top 48762306a36Sopenharmony_ci */ 48862306a36Sopenharmony_ci #define PORT_HW_CFG_E3_PWR_DOWN_MASK 0x00FF0000 48962306a36Sopenharmony_ci #define PORT_HW_CFG_E3_PWR_DOWN_SHIFT 16 49062306a36Sopenharmony_ci 49162306a36Sopenharmony_ci /* The output pin values BSC_SEL which selects the I2C for this port 49262306a36Sopenharmony_ci in the I2C Mux */ 49362306a36Sopenharmony_ci #define PORT_HW_CFG_E3_I2C_MUX0_MASK 0x01000000 49462306a36Sopenharmony_ci #define PORT_HW_CFG_E3_I2C_MUX1_MASK 0x02000000 49562306a36Sopenharmony_ci 49662306a36Sopenharmony_ci 49762306a36Sopenharmony_ci /* 49862306a36Sopenharmony_ci * The input pin I_FAULT which indicate over-current has occurred. 49962306a36Sopenharmony_ci * Use the PIN_CFG_XXX defines on top 50062306a36Sopenharmony_ci */ 50162306a36Sopenharmony_ci u32 e3_cmn_pin_cfg1; /* 0x170 */ 50262306a36Sopenharmony_ci #define PORT_HW_CFG_E3_OVER_CURRENT_MASK 0x000000FF 50362306a36Sopenharmony_ci #define PORT_HW_CFG_E3_OVER_CURRENT_SHIFT 0 50462306a36Sopenharmony_ci 50562306a36Sopenharmony_ci /* pause on host ring */ 50662306a36Sopenharmony_ci u32 generic_features; /* 0x174 */ 50762306a36Sopenharmony_ci #define PORT_HW_CFG_PAUSE_ON_HOST_RING_MASK 0x00000001 50862306a36Sopenharmony_ci #define PORT_HW_CFG_PAUSE_ON_HOST_RING_SHIFT 0 50962306a36Sopenharmony_ci #define PORT_HW_CFG_PAUSE_ON_HOST_RING_DISABLED 0x00000000 51062306a36Sopenharmony_ci #define PORT_HW_CFG_PAUSE_ON_HOST_RING_ENABLED 0x00000001 51162306a36Sopenharmony_ci 51262306a36Sopenharmony_ci /* SFP+ Tx Equalization: NIC recommended and tested value is 0xBEB2 51362306a36Sopenharmony_ci * LOM recommended and tested value is 0xBEB2. Using a different 51462306a36Sopenharmony_ci * value means using a value not tested by BRCM 51562306a36Sopenharmony_ci */ 51662306a36Sopenharmony_ci u32 sfi_tap_values; /* 0x178 */ 51762306a36Sopenharmony_ci #define PORT_HW_CFG_TX_EQUALIZATION_MASK 0x0000FFFF 51862306a36Sopenharmony_ci #define PORT_HW_CFG_TX_EQUALIZATION_SHIFT 0 51962306a36Sopenharmony_ci 52062306a36Sopenharmony_ci /* SFP+ Tx driver broadcast IDRIVER: NIC recommended and tested 52162306a36Sopenharmony_ci * value is 0x2. LOM recommended and tested value is 0x2. Using a 52262306a36Sopenharmony_ci * different value means using a value not tested by BRCM 52362306a36Sopenharmony_ci */ 52462306a36Sopenharmony_ci #define PORT_HW_CFG_TX_DRV_BROADCAST_MASK 0x000F0000 52562306a36Sopenharmony_ci #define PORT_HW_CFG_TX_DRV_BROADCAST_SHIFT 16 52662306a36Sopenharmony_ci /* Set non-default values for TXFIR in SFP mode. */ 52762306a36Sopenharmony_ci #define PORT_HW_CFG_TX_DRV_IFIR_MASK 0x00F00000 52862306a36Sopenharmony_ci #define PORT_HW_CFG_TX_DRV_IFIR_SHIFT 20 52962306a36Sopenharmony_ci 53062306a36Sopenharmony_ci /* Set non-default values for IPREDRIVER in SFP mode. */ 53162306a36Sopenharmony_ci #define PORT_HW_CFG_TX_DRV_IPREDRIVER_MASK 0x0F000000 53262306a36Sopenharmony_ci #define PORT_HW_CFG_TX_DRV_IPREDRIVER_SHIFT 24 53362306a36Sopenharmony_ci 53462306a36Sopenharmony_ci /* Set non-default values for POST2 in SFP mode. */ 53562306a36Sopenharmony_ci #define PORT_HW_CFG_TX_DRV_POST2_MASK 0xF0000000 53662306a36Sopenharmony_ci #define PORT_HW_CFG_TX_DRV_POST2_SHIFT 28 53762306a36Sopenharmony_ci 53862306a36Sopenharmony_ci u32 reserved0[5]; /* 0x17c */ 53962306a36Sopenharmony_ci 54062306a36Sopenharmony_ci u32 aeu_int_mask; /* 0x190 */ 54162306a36Sopenharmony_ci 54262306a36Sopenharmony_ci u32 media_type; /* 0x194 */ 54362306a36Sopenharmony_ci #define PORT_HW_CFG_MEDIA_TYPE_PHY0_MASK 0x000000FF 54462306a36Sopenharmony_ci #define PORT_HW_CFG_MEDIA_TYPE_PHY0_SHIFT 0 54562306a36Sopenharmony_ci 54662306a36Sopenharmony_ci #define PORT_HW_CFG_MEDIA_TYPE_PHY1_MASK 0x0000FF00 54762306a36Sopenharmony_ci #define PORT_HW_CFG_MEDIA_TYPE_PHY1_SHIFT 8 54862306a36Sopenharmony_ci 54962306a36Sopenharmony_ci #define PORT_HW_CFG_MEDIA_TYPE_PHY2_MASK 0x00FF0000 55062306a36Sopenharmony_ci #define PORT_HW_CFG_MEDIA_TYPE_PHY2_SHIFT 16 55162306a36Sopenharmony_ci 55262306a36Sopenharmony_ci /* 4 times 16 bits for all 4 lanes. In case external PHY is present 55362306a36Sopenharmony_ci (not direct mode), those values will not take effect on the 4 XGXS 55462306a36Sopenharmony_ci lanes. For some external PHYs (such as 8706 and 8726) the values 55562306a36Sopenharmony_ci will be used to configure the external PHY in those cases, not 55662306a36Sopenharmony_ci all 4 values are needed. */ 55762306a36Sopenharmony_ci u16 xgxs_config_rx[4]; /* 0x198 */ 55862306a36Sopenharmony_ci u16 xgxs_config_tx[4]; /* 0x1A0 */ 55962306a36Sopenharmony_ci 56062306a36Sopenharmony_ci /* For storing FCOE mac on shared memory */ 56162306a36Sopenharmony_ci u32 fcoe_fip_mac_upper; 56262306a36Sopenharmony_ci #define PORT_HW_CFG_FCOE_UPPERMAC_MASK 0x0000ffff 56362306a36Sopenharmony_ci #define PORT_HW_CFG_FCOE_UPPERMAC_SHIFT 0 56462306a36Sopenharmony_ci u32 fcoe_fip_mac_lower; 56562306a36Sopenharmony_ci 56662306a36Sopenharmony_ci u32 fcoe_wwn_port_name_upper; 56762306a36Sopenharmony_ci u32 fcoe_wwn_port_name_lower; 56862306a36Sopenharmony_ci 56962306a36Sopenharmony_ci u32 fcoe_wwn_node_name_upper; 57062306a36Sopenharmony_ci u32 fcoe_wwn_node_name_lower; 57162306a36Sopenharmony_ci 57262306a36Sopenharmony_ci u32 Reserved1[49]; /* 0x1C0 */ 57362306a36Sopenharmony_ci 57462306a36Sopenharmony_ci /* Enable RJ45 magjack pair swapping on 10GBase-T PHY (0=default), 57562306a36Sopenharmony_ci 84833 only */ 57662306a36Sopenharmony_ci u32 xgbt_phy_cfg; /* 0x284 */ 57762306a36Sopenharmony_ci #define PORT_HW_CFG_RJ45_PAIR_SWAP_MASK 0x000000FF 57862306a36Sopenharmony_ci #define PORT_HW_CFG_RJ45_PAIR_SWAP_SHIFT 0 57962306a36Sopenharmony_ci 58062306a36Sopenharmony_ci u32 default_cfg; /* 0x288 */ 58162306a36Sopenharmony_ci #define PORT_HW_CFG_GPIO0_CONFIG_MASK 0x00000003 58262306a36Sopenharmony_ci #define PORT_HW_CFG_GPIO0_CONFIG_SHIFT 0 58362306a36Sopenharmony_ci #define PORT_HW_CFG_GPIO0_CONFIG_NA 0x00000000 58462306a36Sopenharmony_ci #define PORT_HW_CFG_GPIO0_CONFIG_LOW 0x00000001 58562306a36Sopenharmony_ci #define PORT_HW_CFG_GPIO0_CONFIG_HIGH 0x00000002 58662306a36Sopenharmony_ci #define PORT_HW_CFG_GPIO0_CONFIG_INPUT 0x00000003 58762306a36Sopenharmony_ci 58862306a36Sopenharmony_ci #define PORT_HW_CFG_GPIO1_CONFIG_MASK 0x0000000C 58962306a36Sopenharmony_ci #define PORT_HW_CFG_GPIO1_CONFIG_SHIFT 2 59062306a36Sopenharmony_ci #define PORT_HW_CFG_GPIO1_CONFIG_NA 0x00000000 59162306a36Sopenharmony_ci #define PORT_HW_CFG_GPIO1_CONFIG_LOW 0x00000004 59262306a36Sopenharmony_ci #define PORT_HW_CFG_GPIO1_CONFIG_HIGH 0x00000008 59362306a36Sopenharmony_ci #define PORT_HW_CFG_GPIO1_CONFIG_INPUT 0x0000000c 59462306a36Sopenharmony_ci 59562306a36Sopenharmony_ci #define PORT_HW_CFG_GPIO2_CONFIG_MASK 0x00000030 59662306a36Sopenharmony_ci #define PORT_HW_CFG_GPIO2_CONFIG_SHIFT 4 59762306a36Sopenharmony_ci #define PORT_HW_CFG_GPIO2_CONFIG_NA 0x00000000 59862306a36Sopenharmony_ci #define PORT_HW_CFG_GPIO2_CONFIG_LOW 0x00000010 59962306a36Sopenharmony_ci #define PORT_HW_CFG_GPIO2_CONFIG_HIGH 0x00000020 60062306a36Sopenharmony_ci #define PORT_HW_CFG_GPIO2_CONFIG_INPUT 0x00000030 60162306a36Sopenharmony_ci 60262306a36Sopenharmony_ci #define PORT_HW_CFG_GPIO3_CONFIG_MASK 0x000000C0 60362306a36Sopenharmony_ci #define PORT_HW_CFG_GPIO3_CONFIG_SHIFT 6 60462306a36Sopenharmony_ci #define PORT_HW_CFG_GPIO3_CONFIG_NA 0x00000000 60562306a36Sopenharmony_ci #define PORT_HW_CFG_GPIO3_CONFIG_LOW 0x00000040 60662306a36Sopenharmony_ci #define PORT_HW_CFG_GPIO3_CONFIG_HIGH 0x00000080 60762306a36Sopenharmony_ci #define PORT_HW_CFG_GPIO3_CONFIG_INPUT 0x000000c0 60862306a36Sopenharmony_ci 60962306a36Sopenharmony_ci /* When KR link is required to be set to force which is not 61062306a36Sopenharmony_ci KR-compliant, this parameter determine what is the trigger for it. 61162306a36Sopenharmony_ci When GPIO is selected, low input will force the speed. Currently 61262306a36Sopenharmony_ci default speed is 1G. In the future, it may be widen to select the 61362306a36Sopenharmony_ci forced speed in with another parameter. Note when force-1G is 61462306a36Sopenharmony_ci enabled, it override option 56: Link Speed option. */ 61562306a36Sopenharmony_ci #define PORT_HW_CFG_FORCE_KR_ENABLER_MASK 0x00000F00 61662306a36Sopenharmony_ci #define PORT_HW_CFG_FORCE_KR_ENABLER_SHIFT 8 61762306a36Sopenharmony_ci #define PORT_HW_CFG_FORCE_KR_ENABLER_NOT_FORCED 0x00000000 61862306a36Sopenharmony_ci #define PORT_HW_CFG_FORCE_KR_ENABLER_GPIO0_P0 0x00000100 61962306a36Sopenharmony_ci #define PORT_HW_CFG_FORCE_KR_ENABLER_GPIO1_P0 0x00000200 62062306a36Sopenharmony_ci #define PORT_HW_CFG_FORCE_KR_ENABLER_GPIO2_P0 0x00000300 62162306a36Sopenharmony_ci #define PORT_HW_CFG_FORCE_KR_ENABLER_GPIO3_P0 0x00000400 62262306a36Sopenharmony_ci #define PORT_HW_CFG_FORCE_KR_ENABLER_GPIO0_P1 0x00000500 62362306a36Sopenharmony_ci #define PORT_HW_CFG_FORCE_KR_ENABLER_GPIO1_P1 0x00000600 62462306a36Sopenharmony_ci #define PORT_HW_CFG_FORCE_KR_ENABLER_GPIO2_P1 0x00000700 62562306a36Sopenharmony_ci #define PORT_HW_CFG_FORCE_KR_ENABLER_GPIO3_P1 0x00000800 62662306a36Sopenharmony_ci #define PORT_HW_CFG_FORCE_KR_ENABLER_FORCED 0x00000900 62762306a36Sopenharmony_ci /* Enable to determine with which GPIO to reset the external phy */ 62862306a36Sopenharmony_ci #define PORT_HW_CFG_EXT_PHY_GPIO_RST_MASK 0x000F0000 62962306a36Sopenharmony_ci #define PORT_HW_CFG_EXT_PHY_GPIO_RST_SHIFT 16 63062306a36Sopenharmony_ci #define PORT_HW_CFG_EXT_PHY_GPIO_RST_PHY_TYPE 0x00000000 63162306a36Sopenharmony_ci #define PORT_HW_CFG_EXT_PHY_GPIO_RST_GPIO0_P0 0x00010000 63262306a36Sopenharmony_ci #define PORT_HW_CFG_EXT_PHY_GPIO_RST_GPIO1_P0 0x00020000 63362306a36Sopenharmony_ci #define PORT_HW_CFG_EXT_PHY_GPIO_RST_GPIO2_P0 0x00030000 63462306a36Sopenharmony_ci #define PORT_HW_CFG_EXT_PHY_GPIO_RST_GPIO3_P0 0x00040000 63562306a36Sopenharmony_ci #define PORT_HW_CFG_EXT_PHY_GPIO_RST_GPIO0_P1 0x00050000 63662306a36Sopenharmony_ci #define PORT_HW_CFG_EXT_PHY_GPIO_RST_GPIO1_P1 0x00060000 63762306a36Sopenharmony_ci #define PORT_HW_CFG_EXT_PHY_GPIO_RST_GPIO2_P1 0x00070000 63862306a36Sopenharmony_ci #define PORT_HW_CFG_EXT_PHY_GPIO_RST_GPIO3_P1 0x00080000 63962306a36Sopenharmony_ci 64062306a36Sopenharmony_ci /* Enable BAM on KR */ 64162306a36Sopenharmony_ci #define PORT_HW_CFG_ENABLE_BAM_ON_KR_MASK 0x00100000 64262306a36Sopenharmony_ci #define PORT_HW_CFG_ENABLE_BAM_ON_KR_SHIFT 20 64362306a36Sopenharmony_ci #define PORT_HW_CFG_ENABLE_BAM_ON_KR_DISABLED 0x00000000 64462306a36Sopenharmony_ci #define PORT_HW_CFG_ENABLE_BAM_ON_KR_ENABLED 0x00100000 64562306a36Sopenharmony_ci 64662306a36Sopenharmony_ci /* Enable Common Mode Sense */ 64762306a36Sopenharmony_ci #define PORT_HW_CFG_ENABLE_CMS_MASK 0x00200000 64862306a36Sopenharmony_ci #define PORT_HW_CFG_ENABLE_CMS_SHIFT 21 64962306a36Sopenharmony_ci #define PORT_HW_CFG_ENABLE_CMS_DISABLED 0x00000000 65062306a36Sopenharmony_ci #define PORT_HW_CFG_ENABLE_CMS_ENABLED 0x00200000 65162306a36Sopenharmony_ci 65262306a36Sopenharmony_ci /* Determine the Serdes electrical interface */ 65362306a36Sopenharmony_ci #define PORT_HW_CFG_NET_SERDES_IF_MASK 0x0F000000 65462306a36Sopenharmony_ci #define PORT_HW_CFG_NET_SERDES_IF_SHIFT 24 65562306a36Sopenharmony_ci #define PORT_HW_CFG_NET_SERDES_IF_SGMII 0x00000000 65662306a36Sopenharmony_ci #define PORT_HW_CFG_NET_SERDES_IF_XFI 0x01000000 65762306a36Sopenharmony_ci #define PORT_HW_CFG_NET_SERDES_IF_SFI 0x02000000 65862306a36Sopenharmony_ci #define PORT_HW_CFG_NET_SERDES_IF_KR 0x03000000 65962306a36Sopenharmony_ci #define PORT_HW_CFG_NET_SERDES_IF_DXGXS 0x04000000 66062306a36Sopenharmony_ci #define PORT_HW_CFG_NET_SERDES_IF_KR2 0x05000000 66162306a36Sopenharmony_ci 66262306a36Sopenharmony_ci 66362306a36Sopenharmony_ci u32 speed_capability_mask2; /* 0x28C */ 66462306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY2_D3_MASK 0x0000FFFF 66562306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY2_D3_SHIFT 0 66662306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY2_D3_10M_FULL 0x00000001 66762306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY2_D3__ 0x00000002 66862306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY2_D3___ 0x00000004 66962306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY2_D3_100M_FULL 0x00000008 67062306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY2_D3_1G 0x00000010 67162306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY2_D3_2_DOT_5G 0x00000020 67262306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY2_D3_10G 0x00000040 67362306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY2_D3_20G 0x00000080 67462306a36Sopenharmony_ci 67562306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY2_D0_MASK 0xFFFF0000 67662306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY2_D0_SHIFT 16 67762306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY2_D0_10M_FULL 0x00010000 67862306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY2_D0__ 0x00020000 67962306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY2_D0___ 0x00040000 68062306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY2_D0_100M_FULL 0x00080000 68162306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY2_D0_1G 0x00100000 68262306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY2_D0_2_DOT_5G 0x00200000 68362306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY2_D0_10G 0x00400000 68462306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY2_D0_20G 0x00800000 68562306a36Sopenharmony_ci 68662306a36Sopenharmony_ci 68762306a36Sopenharmony_ci /* In the case where two media types (e.g. copper and fiber) are 68862306a36Sopenharmony_ci present and electrically active at the same time, PHY Selection 68962306a36Sopenharmony_ci will determine which of the two PHYs will be designated as the 69062306a36Sopenharmony_ci Active PHY and used for a connection to the network. */ 69162306a36Sopenharmony_ci u32 multi_phy_config; /* 0x290 */ 69262306a36Sopenharmony_ci #define PORT_HW_CFG_PHY_SELECTION_MASK 0x00000007 69362306a36Sopenharmony_ci #define PORT_HW_CFG_PHY_SELECTION_SHIFT 0 69462306a36Sopenharmony_ci #define PORT_HW_CFG_PHY_SELECTION_HARDWARE_DEFAULT 0x00000000 69562306a36Sopenharmony_ci #define PORT_HW_CFG_PHY_SELECTION_FIRST_PHY 0x00000001 69662306a36Sopenharmony_ci #define PORT_HW_CFG_PHY_SELECTION_SECOND_PHY 0x00000002 69762306a36Sopenharmony_ci #define PORT_HW_CFG_PHY_SELECTION_FIRST_PHY_PRIORITY 0x00000003 69862306a36Sopenharmony_ci #define PORT_HW_CFG_PHY_SELECTION_SECOND_PHY_PRIORITY 0x00000004 69962306a36Sopenharmony_ci 70062306a36Sopenharmony_ci /* When enabled, all second phy nvram parameters will be swapped 70162306a36Sopenharmony_ci with the first phy parameters */ 70262306a36Sopenharmony_ci #define PORT_HW_CFG_PHY_SWAPPED_MASK 0x00000008 70362306a36Sopenharmony_ci #define PORT_HW_CFG_PHY_SWAPPED_SHIFT 3 70462306a36Sopenharmony_ci #define PORT_HW_CFG_PHY_SWAPPED_DISABLED 0x00000000 70562306a36Sopenharmony_ci #define PORT_HW_CFG_PHY_SWAPPED_ENABLED 0x00000008 70662306a36Sopenharmony_ci 70762306a36Sopenharmony_ci 70862306a36Sopenharmony_ci /* Address of the second external phy */ 70962306a36Sopenharmony_ci u32 external_phy_config2; /* 0x294 */ 71062306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY2_ADDR_MASK 0x000000FF 71162306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY2_ADDR_SHIFT 0 71262306a36Sopenharmony_ci 71362306a36Sopenharmony_ci /* The second XGXS external PHY type */ 71462306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_MASK 0x0000FF00 71562306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_SHIFT 8 71662306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_DIRECT 0x00000000 71762306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_BCM8071 0x00000100 71862306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_BCM8072 0x00000200 71962306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_BCM8073 0x00000300 72062306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_BCM8705 0x00000400 72162306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_BCM8706 0x00000500 72262306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_BCM8726 0x00000600 72362306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_BCM8481 0x00000700 72462306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_SFX7101 0x00000800 72562306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_BCM8727 0x00000900 72662306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_BCM8727_NOC 0x00000a00 72762306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_BCM84823 0x00000b00 72862306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_BCM54640 0x00000c00 72962306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_BCM84833 0x00000d00 73062306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_BCM54618SE 0x00000e00 73162306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_BCM8722 0x00000f00 73262306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_BCM54616 0x00001000 73362306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_BCM84834 0x00001100 73462306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_BCM84858 0x00001200 73562306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_FAILURE 0x0000fd00 73662306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_NOT_CONN 0x0000ff00 73762306a36Sopenharmony_ci 73862306a36Sopenharmony_ci 73962306a36Sopenharmony_ci /* 4 times 16 bits for all 4 lanes. For some external PHYs (such as 74062306a36Sopenharmony_ci 8706, 8726 and 8727) not all 4 values are needed. */ 74162306a36Sopenharmony_ci u16 xgxs_config2_rx[4]; /* 0x296 */ 74262306a36Sopenharmony_ci u16 xgxs_config2_tx[4]; /* 0x2A0 */ 74362306a36Sopenharmony_ci 74462306a36Sopenharmony_ci u32 lane_config; 74562306a36Sopenharmony_ci #define PORT_HW_CFG_LANE_SWAP_CFG_MASK 0x0000ffff 74662306a36Sopenharmony_ci #define PORT_HW_CFG_LANE_SWAP_CFG_SHIFT 0 74762306a36Sopenharmony_ci /* AN and forced */ 74862306a36Sopenharmony_ci #define PORT_HW_CFG_LANE_SWAP_CFG_01230123 0x00001b1b 74962306a36Sopenharmony_ci /* forced only */ 75062306a36Sopenharmony_ci #define PORT_HW_CFG_LANE_SWAP_CFG_01233210 0x00001be4 75162306a36Sopenharmony_ci /* forced only */ 75262306a36Sopenharmony_ci #define PORT_HW_CFG_LANE_SWAP_CFG_31203120 0x0000d8d8 75362306a36Sopenharmony_ci /* forced only */ 75462306a36Sopenharmony_ci #define PORT_HW_CFG_LANE_SWAP_CFG_32103210 0x0000e4e4 75562306a36Sopenharmony_ci #define PORT_HW_CFG_LANE_SWAP_CFG_TX_MASK 0x000000ff 75662306a36Sopenharmony_ci #define PORT_HW_CFG_LANE_SWAP_CFG_TX_SHIFT 0 75762306a36Sopenharmony_ci #define PORT_HW_CFG_LANE_SWAP_CFG_RX_MASK 0x0000ff00 75862306a36Sopenharmony_ci #define PORT_HW_CFG_LANE_SWAP_CFG_RX_SHIFT 8 75962306a36Sopenharmony_ci #define PORT_HW_CFG_LANE_SWAP_CFG_MASTER_MASK 0x0000c000 76062306a36Sopenharmony_ci #define PORT_HW_CFG_LANE_SWAP_CFG_MASTER_SHIFT 14 76162306a36Sopenharmony_ci 76262306a36Sopenharmony_ci /* Indicate whether to swap the external phy polarity */ 76362306a36Sopenharmony_ci #define PORT_HW_CFG_SWAP_PHY_POLARITY_MASK 0x00010000 76462306a36Sopenharmony_ci #define PORT_HW_CFG_SWAP_PHY_POLARITY_DISABLED 0x00000000 76562306a36Sopenharmony_ci #define PORT_HW_CFG_SWAP_PHY_POLARITY_ENABLED 0x00010000 76662306a36Sopenharmony_ci 76762306a36Sopenharmony_ci 76862306a36Sopenharmony_ci u32 external_phy_config; 76962306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY_ADDR_MASK 0x000000ff 77062306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY_ADDR_SHIFT 0 77162306a36Sopenharmony_ci 77262306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_MASK 0x0000ff00 77362306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SHIFT 8 77462306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT 0x00000000 77562306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8071 0x00000100 77662306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072 0x00000200 77762306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073 0x00000300 77862306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8705 0x00000400 77962306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8706 0x00000500 78062306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726 0x00000600 78162306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481 0x00000700 78262306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101 0x00000800 78362306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727 0x00000900 78462306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727_NOC 0x00000a00 78562306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM84823 0x00000b00 78662306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM54640 0x00000c00 78762306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM84833 0x00000d00 78862306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM54618SE 0x00000e00 78962306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8722 0x00000f00 79062306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM54616 0x00001000 79162306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM84834 0x00001100 79262306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM84858 0x00001200 79362306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT_WC 0x0000fc00 79462306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_FAILURE 0x0000fd00 79562306a36Sopenharmony_ci #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_NOT_CONN 0x0000ff00 79662306a36Sopenharmony_ci 79762306a36Sopenharmony_ci #define PORT_HW_CFG_SERDES_EXT_PHY_ADDR_MASK 0x00ff0000 79862306a36Sopenharmony_ci #define PORT_HW_CFG_SERDES_EXT_PHY_ADDR_SHIFT 16 79962306a36Sopenharmony_ci 80062306a36Sopenharmony_ci #define PORT_HW_CFG_SERDES_EXT_PHY_TYPE_MASK 0xff000000 80162306a36Sopenharmony_ci #define PORT_HW_CFG_SERDES_EXT_PHY_TYPE_SHIFT 24 80262306a36Sopenharmony_ci #define PORT_HW_CFG_SERDES_EXT_PHY_TYPE_DIRECT 0x00000000 80362306a36Sopenharmony_ci #define PORT_HW_CFG_SERDES_EXT_PHY_TYPE_BCM5482 0x01000000 80462306a36Sopenharmony_ci #define PORT_HW_CFG_SERDES_EXT_PHY_TYPE_DIRECT_SD 0x02000000 80562306a36Sopenharmony_ci #define PORT_HW_CFG_SERDES_EXT_PHY_TYPE_NOT_CONN 0xff000000 80662306a36Sopenharmony_ci 80762306a36Sopenharmony_ci u32 speed_capability_mask; 80862306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY_D3_MASK 0x0000ffff 80962306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY_D3_SHIFT 0 81062306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY_D3_10M_FULL 0x00000001 81162306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY_D3_10M_HALF 0x00000002 81262306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY_D3_100M_HALF 0x00000004 81362306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY_D3_100M_FULL 0x00000008 81462306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY_D3_1G 0x00000010 81562306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY_D3_2_5G 0x00000020 81662306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY_D3_10G 0x00000040 81762306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY_D3_20G 0x00000080 81862306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY_D3_RESERVED 0x0000f000 81962306a36Sopenharmony_ci 82062306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY_D0_MASK 0xffff0000 82162306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY_D0_SHIFT 16 82262306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY_D0_10M_FULL 0x00010000 82362306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY_D0_10M_HALF 0x00020000 82462306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY_D0_100M_HALF 0x00040000 82562306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY_D0_100M_FULL 0x00080000 82662306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY_D0_1G 0x00100000 82762306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY_D0_2_5G 0x00200000 82862306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY_D0_10G 0x00400000 82962306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY_D0_20G 0x00800000 83062306a36Sopenharmony_ci #define PORT_HW_CFG_SPEED_CAPABILITY_D0_RESERVED 0xf0000000 83162306a36Sopenharmony_ci 83262306a36Sopenharmony_ci /* A place to hold the original MAC address as a backup */ 83362306a36Sopenharmony_ci u32 backup_mac_upper; /* 0x2B4 */ 83462306a36Sopenharmony_ci u32 backup_mac_lower; /* 0x2B8 */ 83562306a36Sopenharmony_ci 83662306a36Sopenharmony_ci}; 83762306a36Sopenharmony_ci 83862306a36Sopenharmony_ci 83962306a36Sopenharmony_ci/**************************************************************************** 84062306a36Sopenharmony_ci * Shared Feature configuration * 84162306a36Sopenharmony_ci ****************************************************************************/ 84262306a36Sopenharmony_cistruct shared_feat_cfg { /* NVRAM Offset */ 84362306a36Sopenharmony_ci 84462306a36Sopenharmony_ci u32 config; /* 0x450 */ 84562306a36Sopenharmony_ci #define SHARED_FEATURE_BMC_ECHO_MODE_EN 0x00000001 84662306a36Sopenharmony_ci 84762306a36Sopenharmony_ci /* Use NVRAM values instead of HW default values */ 84862306a36Sopenharmony_ci #define SHARED_FEAT_CFG_OVERRIDE_PREEMPHASIS_CFG_MASK \ 84962306a36Sopenharmony_ci 0x00000002 85062306a36Sopenharmony_ci #define SHARED_FEAT_CFG_OVERRIDE_PREEMPHASIS_CFG_DISABLED \ 85162306a36Sopenharmony_ci 0x00000000 85262306a36Sopenharmony_ci #define SHARED_FEAT_CFG_OVERRIDE_PREEMPHASIS_CFG_ENABLED \ 85362306a36Sopenharmony_ci 0x00000002 85462306a36Sopenharmony_ci 85562306a36Sopenharmony_ci #define SHARED_FEAT_CFG_NCSI_ID_METHOD_MASK 0x00000008 85662306a36Sopenharmony_ci #define SHARED_FEAT_CFG_NCSI_ID_METHOD_SPIO 0x00000000 85762306a36Sopenharmony_ci #define SHARED_FEAT_CFG_NCSI_ID_METHOD_NVRAM 0x00000008 85862306a36Sopenharmony_ci 85962306a36Sopenharmony_ci #define SHARED_FEAT_CFG_NCSI_ID_MASK 0x00000030 86062306a36Sopenharmony_ci #define SHARED_FEAT_CFG_NCSI_ID_SHIFT 4 86162306a36Sopenharmony_ci 86262306a36Sopenharmony_ci /* Override the OTP back to single function mode. When using GPIO, 86362306a36Sopenharmony_ci high means only SF, 0 is according to CLP configuration */ 86462306a36Sopenharmony_ci #define SHARED_FEAT_CFG_FORCE_SF_MODE_MASK 0x00000700 86562306a36Sopenharmony_ci #define SHARED_FEAT_CFG_FORCE_SF_MODE_SHIFT 8 86662306a36Sopenharmony_ci #define SHARED_FEAT_CFG_FORCE_SF_MODE_MF_ALLOWED 0x00000000 86762306a36Sopenharmony_ci #define SHARED_FEAT_CFG_FORCE_SF_MODE_FORCED_SF 0x00000100 86862306a36Sopenharmony_ci #define SHARED_FEAT_CFG_FORCE_SF_MODE_SPIO4 0x00000200 86962306a36Sopenharmony_ci #define SHARED_FEAT_CFG_FORCE_SF_MODE_SWITCH_INDEPT 0x00000300 87062306a36Sopenharmony_ci #define SHARED_FEAT_CFG_FORCE_SF_MODE_AFEX_MODE 0x00000400 87162306a36Sopenharmony_ci #define SHARED_FEAT_CFG_FORCE_SF_MODE_BD_MODE 0x00000500 87262306a36Sopenharmony_ci #define SHARED_FEAT_CFG_FORCE_SF_MODE_UFP_MODE 0x00000600 87362306a36Sopenharmony_ci #define SHARED_FEAT_CFG_FORCE_SF_MODE_EXTENDED_MODE 0x00000700 87462306a36Sopenharmony_ci 87562306a36Sopenharmony_ci /* The interval in seconds between sending LLDP packets. Set to zero 87662306a36Sopenharmony_ci to disable the feature */ 87762306a36Sopenharmony_ci #define SHARED_FEAT_CFG_LLDP_XMIT_INTERVAL_MASK 0x00ff0000 87862306a36Sopenharmony_ci #define SHARED_FEAT_CFG_LLDP_XMIT_INTERVAL_SHIFT 16 87962306a36Sopenharmony_ci 88062306a36Sopenharmony_ci /* The assigned device type ID for LLDP usage */ 88162306a36Sopenharmony_ci #define SHARED_FEAT_CFG_LLDP_DEVICE_TYPE_ID_MASK 0xff000000 88262306a36Sopenharmony_ci #define SHARED_FEAT_CFG_LLDP_DEVICE_TYPE_ID_SHIFT 24 88362306a36Sopenharmony_ci 88462306a36Sopenharmony_ci}; 88562306a36Sopenharmony_ci 88662306a36Sopenharmony_ci 88762306a36Sopenharmony_ci/**************************************************************************** 88862306a36Sopenharmony_ci * Port Feature configuration * 88962306a36Sopenharmony_ci ****************************************************************************/ 89062306a36Sopenharmony_cistruct port_feat_cfg { /* port 0: 0x454 port 1: 0x4c8 */ 89162306a36Sopenharmony_ci 89262306a36Sopenharmony_ci u32 config; 89362306a36Sopenharmony_ci #define PORT_FEATURE_BAR1_SIZE_MASK 0x0000000f 89462306a36Sopenharmony_ci #define PORT_FEATURE_BAR1_SIZE_SHIFT 0 89562306a36Sopenharmony_ci #define PORT_FEATURE_BAR1_SIZE_DISABLED 0x00000000 89662306a36Sopenharmony_ci #define PORT_FEATURE_BAR1_SIZE_64K 0x00000001 89762306a36Sopenharmony_ci #define PORT_FEATURE_BAR1_SIZE_128K 0x00000002 89862306a36Sopenharmony_ci #define PORT_FEATURE_BAR1_SIZE_256K 0x00000003 89962306a36Sopenharmony_ci #define PORT_FEATURE_BAR1_SIZE_512K 0x00000004 90062306a36Sopenharmony_ci #define PORT_FEATURE_BAR1_SIZE_1M 0x00000005 90162306a36Sopenharmony_ci #define PORT_FEATURE_BAR1_SIZE_2M 0x00000006 90262306a36Sopenharmony_ci #define PORT_FEATURE_BAR1_SIZE_4M 0x00000007 90362306a36Sopenharmony_ci #define PORT_FEATURE_BAR1_SIZE_8M 0x00000008 90462306a36Sopenharmony_ci #define PORT_FEATURE_BAR1_SIZE_16M 0x00000009 90562306a36Sopenharmony_ci #define PORT_FEATURE_BAR1_SIZE_32M 0x0000000a 90662306a36Sopenharmony_ci #define PORT_FEATURE_BAR1_SIZE_64M 0x0000000b 90762306a36Sopenharmony_ci #define PORT_FEATURE_BAR1_SIZE_128M 0x0000000c 90862306a36Sopenharmony_ci #define PORT_FEATURE_BAR1_SIZE_256M 0x0000000d 90962306a36Sopenharmony_ci #define PORT_FEATURE_BAR1_SIZE_512M 0x0000000e 91062306a36Sopenharmony_ci #define PORT_FEATURE_BAR1_SIZE_1G 0x0000000f 91162306a36Sopenharmony_ci #define PORT_FEATURE_BAR2_SIZE_MASK 0x000000f0 91262306a36Sopenharmony_ci #define PORT_FEATURE_BAR2_SIZE_SHIFT 4 91362306a36Sopenharmony_ci #define PORT_FEATURE_BAR2_SIZE_DISABLED 0x00000000 91462306a36Sopenharmony_ci #define PORT_FEATURE_BAR2_SIZE_64K 0x00000010 91562306a36Sopenharmony_ci #define PORT_FEATURE_BAR2_SIZE_128K 0x00000020 91662306a36Sopenharmony_ci #define PORT_FEATURE_BAR2_SIZE_256K 0x00000030 91762306a36Sopenharmony_ci #define PORT_FEATURE_BAR2_SIZE_512K 0x00000040 91862306a36Sopenharmony_ci #define PORT_FEATURE_BAR2_SIZE_1M 0x00000050 91962306a36Sopenharmony_ci #define PORT_FEATURE_BAR2_SIZE_2M 0x00000060 92062306a36Sopenharmony_ci #define PORT_FEATURE_BAR2_SIZE_4M 0x00000070 92162306a36Sopenharmony_ci #define PORT_FEATURE_BAR2_SIZE_8M 0x00000080 92262306a36Sopenharmony_ci #define PORT_FEATURE_BAR2_SIZE_16M 0x00000090 92362306a36Sopenharmony_ci #define PORT_FEATURE_BAR2_SIZE_32M 0x000000a0 92462306a36Sopenharmony_ci #define PORT_FEATURE_BAR2_SIZE_64M 0x000000b0 92562306a36Sopenharmony_ci #define PORT_FEATURE_BAR2_SIZE_128M 0x000000c0 92662306a36Sopenharmony_ci #define PORT_FEATURE_BAR2_SIZE_256M 0x000000d0 92762306a36Sopenharmony_ci #define PORT_FEATURE_BAR2_SIZE_512M 0x000000e0 92862306a36Sopenharmony_ci #define PORT_FEATURE_BAR2_SIZE_1G 0x000000f0 92962306a36Sopenharmony_ci 93062306a36Sopenharmony_ci #define PORT_FEAT_CFG_DCBX_MASK 0x00000100 93162306a36Sopenharmony_ci #define PORT_FEAT_CFG_DCBX_DISABLED 0x00000000 93262306a36Sopenharmony_ci #define PORT_FEAT_CFG_DCBX_ENABLED 0x00000100 93362306a36Sopenharmony_ci 93462306a36Sopenharmony_ci #define PORT_FEAT_CFG_STORAGE_PERSONALITY_MASK 0x00000C00 93562306a36Sopenharmony_ci #define PORT_FEAT_CFG_STORAGE_PERSONALITY_FCOE 0x00000400 93662306a36Sopenharmony_ci #define PORT_FEAT_CFG_STORAGE_PERSONALITY_ISCSI 0x00000800 93762306a36Sopenharmony_ci 93862306a36Sopenharmony_ci #define PORT_FEATURE_EN_SIZE_MASK 0x0f000000 93962306a36Sopenharmony_ci #define PORT_FEATURE_EN_SIZE_SHIFT 24 94062306a36Sopenharmony_ci #define PORT_FEATURE_WOL_ENABLED 0x01000000 94162306a36Sopenharmony_ci #define PORT_FEATURE_MBA_ENABLED 0x02000000 94262306a36Sopenharmony_ci #define PORT_FEATURE_MFW_ENABLED 0x04000000 94362306a36Sopenharmony_ci 94462306a36Sopenharmony_ci /* Advertise expansion ROM even if MBA is disabled */ 94562306a36Sopenharmony_ci #define PORT_FEAT_CFG_FORCE_EXP_ROM_ADV_MASK 0x08000000 94662306a36Sopenharmony_ci #define PORT_FEAT_CFG_FORCE_EXP_ROM_ADV_DISABLED 0x00000000 94762306a36Sopenharmony_ci #define PORT_FEAT_CFG_FORCE_EXP_ROM_ADV_ENABLED 0x08000000 94862306a36Sopenharmony_ci 94962306a36Sopenharmony_ci /* Check the optic vendor via i2c against a list of approved modules 95062306a36Sopenharmony_ci in a separate nvram image */ 95162306a36Sopenharmony_ci #define PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_MASK 0xe0000000 95262306a36Sopenharmony_ci #define PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_SHIFT 29 95362306a36Sopenharmony_ci #define PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_NO_ENFORCEMENT \ 95462306a36Sopenharmony_ci 0x00000000 95562306a36Sopenharmony_ci #define PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_DISABLE_TX_LASER \ 95662306a36Sopenharmony_ci 0x20000000 95762306a36Sopenharmony_ci #define PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_WARNING_MSG 0x40000000 95862306a36Sopenharmony_ci #define PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_POWER_DOWN 0x60000000 95962306a36Sopenharmony_ci 96062306a36Sopenharmony_ci u32 wol_config; 96162306a36Sopenharmony_ci /* Default is used when driver sets to "auto" mode */ 96262306a36Sopenharmony_ci #define PORT_FEATURE_WOL_DEFAULT_MASK 0x00000003 96362306a36Sopenharmony_ci #define PORT_FEATURE_WOL_DEFAULT_SHIFT 0 96462306a36Sopenharmony_ci #define PORT_FEATURE_WOL_DEFAULT_DISABLE 0x00000000 96562306a36Sopenharmony_ci #define PORT_FEATURE_WOL_DEFAULT_MAGIC 0x00000001 96662306a36Sopenharmony_ci #define PORT_FEATURE_WOL_DEFAULT_ACPI 0x00000002 96762306a36Sopenharmony_ci #define PORT_FEATURE_WOL_DEFAULT_MAGIC_AND_ACPI 0x00000003 96862306a36Sopenharmony_ci #define PORT_FEATURE_WOL_RES_PAUSE_CAP 0x00000004 96962306a36Sopenharmony_ci #define PORT_FEATURE_WOL_RES_ASYM_PAUSE_CAP 0x00000008 97062306a36Sopenharmony_ci #define PORT_FEATURE_WOL_ACPI_UPON_MGMT 0x00000010 97162306a36Sopenharmony_ci 97262306a36Sopenharmony_ci u32 mba_config; 97362306a36Sopenharmony_ci #define PORT_FEATURE_MBA_BOOT_AGENT_TYPE_MASK 0x00000007 97462306a36Sopenharmony_ci #define PORT_FEATURE_MBA_BOOT_AGENT_TYPE_SHIFT 0 97562306a36Sopenharmony_ci #define PORT_FEATURE_MBA_BOOT_AGENT_TYPE_PXE 0x00000000 97662306a36Sopenharmony_ci #define PORT_FEATURE_MBA_BOOT_AGENT_TYPE_RPL 0x00000001 97762306a36Sopenharmony_ci #define PORT_FEATURE_MBA_BOOT_AGENT_TYPE_BOOTP 0x00000002 97862306a36Sopenharmony_ci #define PORT_FEATURE_MBA_BOOT_AGENT_TYPE_ISCSIB 0x00000003 97962306a36Sopenharmony_ci #define PORT_FEATURE_MBA_BOOT_AGENT_TYPE_FCOE_BOOT 0x00000004 98062306a36Sopenharmony_ci #define PORT_FEATURE_MBA_BOOT_AGENT_TYPE_NONE 0x00000007 98162306a36Sopenharmony_ci 98262306a36Sopenharmony_ci #define PORT_FEATURE_MBA_BOOT_RETRY_MASK 0x00000038 98362306a36Sopenharmony_ci #define PORT_FEATURE_MBA_BOOT_RETRY_SHIFT 3 98462306a36Sopenharmony_ci 98562306a36Sopenharmony_ci #define PORT_FEATURE_MBA_RES_PAUSE_CAP 0x00000100 98662306a36Sopenharmony_ci #define PORT_FEATURE_MBA_RES_ASYM_PAUSE_CAP 0x00000200 98762306a36Sopenharmony_ci #define PORT_FEATURE_MBA_SETUP_PROMPT_ENABLE 0x00000400 98862306a36Sopenharmony_ci #define PORT_FEATURE_MBA_HOTKEY_MASK 0x00000800 98962306a36Sopenharmony_ci #define PORT_FEATURE_MBA_HOTKEY_CTRL_S 0x00000000 99062306a36Sopenharmony_ci #define PORT_FEATURE_MBA_HOTKEY_CTRL_B 0x00000800 99162306a36Sopenharmony_ci #define PORT_FEATURE_MBA_EXP_ROM_SIZE_MASK 0x000ff000 99262306a36Sopenharmony_ci #define PORT_FEATURE_MBA_EXP_ROM_SIZE_SHIFT 12 99362306a36Sopenharmony_ci #define PORT_FEATURE_MBA_EXP_ROM_SIZE_DISABLED 0x00000000 99462306a36Sopenharmony_ci #define PORT_FEATURE_MBA_EXP_ROM_SIZE_2K 0x00001000 99562306a36Sopenharmony_ci #define PORT_FEATURE_MBA_EXP_ROM_SIZE_4K 0x00002000 99662306a36Sopenharmony_ci #define PORT_FEATURE_MBA_EXP_ROM_SIZE_8K 0x00003000 99762306a36Sopenharmony_ci #define PORT_FEATURE_MBA_EXP_ROM_SIZE_16K 0x00004000 99862306a36Sopenharmony_ci #define PORT_FEATURE_MBA_EXP_ROM_SIZE_32K 0x00005000 99962306a36Sopenharmony_ci #define PORT_FEATURE_MBA_EXP_ROM_SIZE_64K 0x00006000 100062306a36Sopenharmony_ci #define PORT_FEATURE_MBA_EXP_ROM_SIZE_128K 0x00007000 100162306a36Sopenharmony_ci #define PORT_FEATURE_MBA_EXP_ROM_SIZE_256K 0x00008000 100262306a36Sopenharmony_ci #define PORT_FEATURE_MBA_EXP_ROM_SIZE_512K 0x00009000 100362306a36Sopenharmony_ci #define PORT_FEATURE_MBA_EXP_ROM_SIZE_1M 0x0000a000 100462306a36Sopenharmony_ci #define PORT_FEATURE_MBA_EXP_ROM_SIZE_2M 0x0000b000 100562306a36Sopenharmony_ci #define PORT_FEATURE_MBA_EXP_ROM_SIZE_4M 0x0000c000 100662306a36Sopenharmony_ci #define PORT_FEATURE_MBA_EXP_ROM_SIZE_8M 0x0000d000 100762306a36Sopenharmony_ci #define PORT_FEATURE_MBA_EXP_ROM_SIZE_16M 0x0000e000 100862306a36Sopenharmony_ci #define PORT_FEATURE_MBA_EXP_ROM_SIZE_32M 0x0000f000 100962306a36Sopenharmony_ci #define PORT_FEATURE_MBA_MSG_TIMEOUT_MASK 0x00f00000 101062306a36Sopenharmony_ci #define PORT_FEATURE_MBA_MSG_TIMEOUT_SHIFT 20 101162306a36Sopenharmony_ci #define PORT_FEATURE_MBA_BIOS_BOOTSTRAP_MASK 0x03000000 101262306a36Sopenharmony_ci #define PORT_FEATURE_MBA_BIOS_BOOTSTRAP_SHIFT 24 101362306a36Sopenharmony_ci #define PORT_FEATURE_MBA_BIOS_BOOTSTRAP_AUTO 0x00000000 101462306a36Sopenharmony_ci #define PORT_FEATURE_MBA_BIOS_BOOTSTRAP_BBS 0x01000000 101562306a36Sopenharmony_ci #define PORT_FEATURE_MBA_BIOS_BOOTSTRAP_INT18H 0x02000000 101662306a36Sopenharmony_ci #define PORT_FEATURE_MBA_BIOS_BOOTSTRAP_INT19H 0x03000000 101762306a36Sopenharmony_ci #define PORT_FEATURE_MBA_LINK_SPEED_MASK 0x3c000000 101862306a36Sopenharmony_ci #define PORT_FEATURE_MBA_LINK_SPEED_SHIFT 26 101962306a36Sopenharmony_ci #define PORT_FEATURE_MBA_LINK_SPEED_AUTO 0x00000000 102062306a36Sopenharmony_ci #define PORT_FEATURE_MBA_LINK_SPEED_10HD 0x04000000 102162306a36Sopenharmony_ci #define PORT_FEATURE_MBA_LINK_SPEED_10FD 0x08000000 102262306a36Sopenharmony_ci #define PORT_FEATURE_MBA_LINK_SPEED_100HD 0x0c000000 102362306a36Sopenharmony_ci #define PORT_FEATURE_MBA_LINK_SPEED_100FD 0x10000000 102462306a36Sopenharmony_ci #define PORT_FEATURE_MBA_LINK_SPEED_1GBPS 0x14000000 102562306a36Sopenharmony_ci #define PORT_FEATURE_MBA_LINK_SPEED_2_5GBPS 0x18000000 102662306a36Sopenharmony_ci #define PORT_FEATURE_MBA_LINK_SPEED_10GBPS_CX4 0x1c000000 102762306a36Sopenharmony_ci #define PORT_FEATURE_MBA_LINK_SPEED_20GBPS 0x20000000 102862306a36Sopenharmony_ci u32 bmc_config; 102962306a36Sopenharmony_ci #define PORT_FEATURE_BMC_LINK_OVERRIDE_MASK 0x00000001 103062306a36Sopenharmony_ci #define PORT_FEATURE_BMC_LINK_OVERRIDE_DEFAULT 0x00000000 103162306a36Sopenharmony_ci #define PORT_FEATURE_BMC_LINK_OVERRIDE_EN 0x00000001 103262306a36Sopenharmony_ci 103362306a36Sopenharmony_ci u32 mba_vlan_cfg; 103462306a36Sopenharmony_ci #define PORT_FEATURE_MBA_VLAN_TAG_MASK 0x0000ffff 103562306a36Sopenharmony_ci #define PORT_FEATURE_MBA_VLAN_TAG_SHIFT 0 103662306a36Sopenharmony_ci #define PORT_FEATURE_MBA_VLAN_EN 0x00010000 103762306a36Sopenharmony_ci 103862306a36Sopenharmony_ci u32 resource_cfg; 103962306a36Sopenharmony_ci #define PORT_FEATURE_RESOURCE_CFG_VALID 0x00000001 104062306a36Sopenharmony_ci #define PORT_FEATURE_RESOURCE_CFG_DIAG 0x00000002 104162306a36Sopenharmony_ci #define PORT_FEATURE_RESOURCE_CFG_L2 0x00000004 104262306a36Sopenharmony_ci #define PORT_FEATURE_RESOURCE_CFG_ISCSI 0x00000008 104362306a36Sopenharmony_ci #define PORT_FEATURE_RESOURCE_CFG_RDMA 0x00000010 104462306a36Sopenharmony_ci 104562306a36Sopenharmony_ci u32 smbus_config; 104662306a36Sopenharmony_ci #define PORT_FEATURE_SMBUS_ADDR_MASK 0x000000fe 104762306a36Sopenharmony_ci #define PORT_FEATURE_SMBUS_ADDR_SHIFT 1 104862306a36Sopenharmony_ci 104962306a36Sopenharmony_ci u32 vf_config; 105062306a36Sopenharmony_ci #define PORT_FEAT_CFG_VF_BAR2_SIZE_MASK 0x0000000f 105162306a36Sopenharmony_ci #define PORT_FEAT_CFG_VF_BAR2_SIZE_SHIFT 0 105262306a36Sopenharmony_ci #define PORT_FEAT_CFG_VF_BAR2_SIZE_DISABLED 0x00000000 105362306a36Sopenharmony_ci #define PORT_FEAT_CFG_VF_BAR2_SIZE_4K 0x00000001 105462306a36Sopenharmony_ci #define PORT_FEAT_CFG_VF_BAR2_SIZE_8K 0x00000002 105562306a36Sopenharmony_ci #define PORT_FEAT_CFG_VF_BAR2_SIZE_16K 0x00000003 105662306a36Sopenharmony_ci #define PORT_FEAT_CFG_VF_BAR2_SIZE_32K 0x00000004 105762306a36Sopenharmony_ci #define PORT_FEAT_CFG_VF_BAR2_SIZE_64K 0x00000005 105862306a36Sopenharmony_ci #define PORT_FEAT_CFG_VF_BAR2_SIZE_128K 0x00000006 105962306a36Sopenharmony_ci #define PORT_FEAT_CFG_VF_BAR2_SIZE_256K 0x00000007 106062306a36Sopenharmony_ci #define PORT_FEAT_CFG_VF_BAR2_SIZE_512K 0x00000008 106162306a36Sopenharmony_ci #define PORT_FEAT_CFG_VF_BAR2_SIZE_1M 0x00000009 106262306a36Sopenharmony_ci #define PORT_FEAT_CFG_VF_BAR2_SIZE_2M 0x0000000a 106362306a36Sopenharmony_ci #define PORT_FEAT_CFG_VF_BAR2_SIZE_4M 0x0000000b 106462306a36Sopenharmony_ci #define PORT_FEAT_CFG_VF_BAR2_SIZE_8M 0x0000000c 106562306a36Sopenharmony_ci #define PORT_FEAT_CFG_VF_BAR2_SIZE_16M 0x0000000d 106662306a36Sopenharmony_ci #define PORT_FEAT_CFG_VF_BAR2_SIZE_32M 0x0000000e 106762306a36Sopenharmony_ci #define PORT_FEAT_CFG_VF_BAR2_SIZE_64M 0x0000000f 106862306a36Sopenharmony_ci 106962306a36Sopenharmony_ci u32 link_config; /* Used as HW defaults for the driver */ 107062306a36Sopenharmony_ci #define PORT_FEATURE_CONNECTED_SWITCH_MASK 0x03000000 107162306a36Sopenharmony_ci #define PORT_FEATURE_CONNECTED_SWITCH_SHIFT 24 107262306a36Sopenharmony_ci /* (forced) low speed switch (< 10G) */ 107362306a36Sopenharmony_ci #define PORT_FEATURE_CON_SWITCH_1G_SWITCH 0x00000000 107462306a36Sopenharmony_ci /* (forced) high speed switch (>= 10G) */ 107562306a36Sopenharmony_ci #define PORT_FEATURE_CON_SWITCH_10G_SWITCH 0x01000000 107662306a36Sopenharmony_ci #define PORT_FEATURE_CON_SWITCH_AUTO_DETECT 0x02000000 107762306a36Sopenharmony_ci #define PORT_FEATURE_CON_SWITCH_ONE_TIME_DETECT 0x03000000 107862306a36Sopenharmony_ci 107962306a36Sopenharmony_ci #define PORT_FEATURE_LINK_SPEED_MASK 0x000f0000 108062306a36Sopenharmony_ci #define PORT_FEATURE_LINK_SPEED_SHIFT 16 108162306a36Sopenharmony_ci #define PORT_FEATURE_LINK_SPEED_AUTO 0x00000000 108262306a36Sopenharmony_ci #define PORT_FEATURE_LINK_SPEED_10M_FULL 0x00010000 108362306a36Sopenharmony_ci #define PORT_FEATURE_LINK_SPEED_10M_HALF 0x00020000 108462306a36Sopenharmony_ci #define PORT_FEATURE_LINK_SPEED_100M_HALF 0x00030000 108562306a36Sopenharmony_ci #define PORT_FEATURE_LINK_SPEED_100M_FULL 0x00040000 108662306a36Sopenharmony_ci #define PORT_FEATURE_LINK_SPEED_1G 0x00050000 108762306a36Sopenharmony_ci #define PORT_FEATURE_LINK_SPEED_2_5G 0x00060000 108862306a36Sopenharmony_ci #define PORT_FEATURE_LINK_SPEED_10G_CX4 0x00070000 108962306a36Sopenharmony_ci #define PORT_FEATURE_LINK_SPEED_20G 0x00080000 109062306a36Sopenharmony_ci 109162306a36Sopenharmony_ci #define PORT_FEATURE_FLOW_CONTROL_MASK 0x00000700 109262306a36Sopenharmony_ci #define PORT_FEATURE_FLOW_CONTROL_SHIFT 8 109362306a36Sopenharmony_ci #define PORT_FEATURE_FLOW_CONTROL_AUTO 0x00000000 109462306a36Sopenharmony_ci #define PORT_FEATURE_FLOW_CONTROL_TX 0x00000100 109562306a36Sopenharmony_ci #define PORT_FEATURE_FLOW_CONTROL_RX 0x00000200 109662306a36Sopenharmony_ci #define PORT_FEATURE_FLOW_CONTROL_BOTH 0x00000300 109762306a36Sopenharmony_ci #define PORT_FEATURE_FLOW_CONTROL_NONE 0x00000400 109862306a36Sopenharmony_ci 109962306a36Sopenharmony_ci /* The default for MCP link configuration, 110062306a36Sopenharmony_ci uses the same defines as link_config */ 110162306a36Sopenharmony_ci u32 mfw_wol_link_cfg; 110262306a36Sopenharmony_ci 110362306a36Sopenharmony_ci /* The default for the driver of the second external phy, 110462306a36Sopenharmony_ci uses the same defines as link_config */ 110562306a36Sopenharmony_ci u32 link_config2; /* 0x47C */ 110662306a36Sopenharmony_ci 110762306a36Sopenharmony_ci /* The default for MCP of the second external phy, 110862306a36Sopenharmony_ci uses the same defines as link_config */ 110962306a36Sopenharmony_ci u32 mfw_wol_link_cfg2; /* 0x480 */ 111062306a36Sopenharmony_ci 111162306a36Sopenharmony_ci 111262306a36Sopenharmony_ci /* EEE power saving mode */ 111362306a36Sopenharmony_ci u32 eee_power_mode; /* 0x484 */ 111462306a36Sopenharmony_ci #define PORT_FEAT_CFG_EEE_POWER_MODE_MASK 0x000000FF 111562306a36Sopenharmony_ci #define PORT_FEAT_CFG_EEE_POWER_MODE_SHIFT 0 111662306a36Sopenharmony_ci #define PORT_FEAT_CFG_EEE_POWER_MODE_DISABLED 0x00000000 111762306a36Sopenharmony_ci #define PORT_FEAT_CFG_EEE_POWER_MODE_BALANCED 0x00000001 111862306a36Sopenharmony_ci #define PORT_FEAT_CFG_EEE_POWER_MODE_AGGRESSIVE 0x00000002 111962306a36Sopenharmony_ci #define PORT_FEAT_CFG_EEE_POWER_MODE_LOW_LATENCY 0x00000003 112062306a36Sopenharmony_ci 112162306a36Sopenharmony_ci 112262306a36Sopenharmony_ci u32 Reserved2[16]; /* 0x488 */ 112362306a36Sopenharmony_ci}; 112462306a36Sopenharmony_ci 112562306a36Sopenharmony_ci 112662306a36Sopenharmony_ci/**************************************************************************** 112762306a36Sopenharmony_ci * Device Information * 112862306a36Sopenharmony_ci ****************************************************************************/ 112962306a36Sopenharmony_cistruct shm_dev_info { /* size */ 113062306a36Sopenharmony_ci 113162306a36Sopenharmony_ci u32 bc_rev; /* 8 bits each: major, minor, build */ /* 4 */ 113262306a36Sopenharmony_ci 113362306a36Sopenharmony_ci struct shared_hw_cfg shared_hw_config; /* 40 */ 113462306a36Sopenharmony_ci 113562306a36Sopenharmony_ci struct port_hw_cfg port_hw_config[PORT_MAX]; /* 400*2=800 */ 113662306a36Sopenharmony_ci 113762306a36Sopenharmony_ci struct shared_feat_cfg shared_feature_config; /* 4 */ 113862306a36Sopenharmony_ci 113962306a36Sopenharmony_ci struct port_feat_cfg port_feature_config[PORT_MAX];/* 116*2=232 */ 114062306a36Sopenharmony_ci 114162306a36Sopenharmony_ci}; 114262306a36Sopenharmony_ci 114362306a36Sopenharmony_cistruct extended_dev_info_shared_cfg { 114462306a36Sopenharmony_ci u32 reserved[18]; 114562306a36Sopenharmony_ci u32 mbi_version; 114662306a36Sopenharmony_ci u32 mbi_date; 114762306a36Sopenharmony_ci}; 114862306a36Sopenharmony_ci 114962306a36Sopenharmony_ci#if !defined(__LITTLE_ENDIAN) && !defined(__BIG_ENDIAN) 115062306a36Sopenharmony_ci #error "Missing either LITTLE_ENDIAN or BIG_ENDIAN definition." 115162306a36Sopenharmony_ci#endif 115262306a36Sopenharmony_ci 115362306a36Sopenharmony_ci#define FUNC_0 0 115462306a36Sopenharmony_ci#define FUNC_1 1 115562306a36Sopenharmony_ci#define FUNC_2 2 115662306a36Sopenharmony_ci#define FUNC_3 3 115762306a36Sopenharmony_ci#define FUNC_4 4 115862306a36Sopenharmony_ci#define FUNC_5 5 115962306a36Sopenharmony_ci#define FUNC_6 6 116062306a36Sopenharmony_ci#define FUNC_7 7 116162306a36Sopenharmony_ci#define E1_FUNC_MAX 2 116262306a36Sopenharmony_ci#define E1H_FUNC_MAX 8 116362306a36Sopenharmony_ci#define E2_FUNC_MAX 4 /* per path */ 116462306a36Sopenharmony_ci 116562306a36Sopenharmony_ci#define VN_0 0 116662306a36Sopenharmony_ci#define VN_1 1 116762306a36Sopenharmony_ci#define VN_2 2 116862306a36Sopenharmony_ci#define VN_3 3 116962306a36Sopenharmony_ci#define E1VN_MAX 1 117062306a36Sopenharmony_ci#define E1HVN_MAX 4 117162306a36Sopenharmony_ci 117262306a36Sopenharmony_ci#define E2_VF_MAX 64 /* HC_REG_VF_CONFIGURATION_SIZE */ 117362306a36Sopenharmony_ci/* This value (in milliseconds) determines the frequency of the driver 117462306a36Sopenharmony_ci * issuing the PULSE message code. The firmware monitors this periodic 117562306a36Sopenharmony_ci * pulse to determine when to switch to an OS-absent mode. */ 117662306a36Sopenharmony_ci#define DRV_PULSE_PERIOD_MS 250 117762306a36Sopenharmony_ci 117862306a36Sopenharmony_ci/* This value (in milliseconds) determines how long the driver should 117962306a36Sopenharmony_ci * wait for an acknowledgement from the firmware before timing out. Once 118062306a36Sopenharmony_ci * the firmware has timed out, the driver will assume there is no firmware 118162306a36Sopenharmony_ci * running and there won't be any firmware-driver synchronization during a 118262306a36Sopenharmony_ci * driver reset. */ 118362306a36Sopenharmony_ci#define FW_ACK_TIME_OUT_MS 5000 118462306a36Sopenharmony_ci 118562306a36Sopenharmony_ci#define FW_ACK_POLL_TIME_MS 1 118662306a36Sopenharmony_ci 118762306a36Sopenharmony_ci#define FW_ACK_NUM_OF_POLL (FW_ACK_TIME_OUT_MS/FW_ACK_POLL_TIME_MS) 118862306a36Sopenharmony_ci 118962306a36Sopenharmony_ci#define MFW_TRACE_SIGNATURE 0x54524342 119062306a36Sopenharmony_ci 119162306a36Sopenharmony_ci/**************************************************************************** 119262306a36Sopenharmony_ci * Driver <-> FW Mailbox * 119362306a36Sopenharmony_ci ****************************************************************************/ 119462306a36Sopenharmony_cistruct drv_port_mb { 119562306a36Sopenharmony_ci 119662306a36Sopenharmony_ci u32 link_status; 119762306a36Sopenharmony_ci /* Driver should update this field on any link change event */ 119862306a36Sopenharmony_ci 119962306a36Sopenharmony_ci #define LINK_STATUS_NONE (0<<0) 120062306a36Sopenharmony_ci #define LINK_STATUS_LINK_FLAG_MASK 0x00000001 120162306a36Sopenharmony_ci #define LINK_STATUS_LINK_UP 0x00000001 120262306a36Sopenharmony_ci #define LINK_STATUS_SPEED_AND_DUPLEX_MASK 0x0000001E 120362306a36Sopenharmony_ci #define LINK_STATUS_SPEED_AND_DUPLEX_AN_NOT_COMPLETE (0<<1) 120462306a36Sopenharmony_ci #define LINK_STATUS_SPEED_AND_DUPLEX_10THD (1<<1) 120562306a36Sopenharmony_ci #define LINK_STATUS_SPEED_AND_DUPLEX_10TFD (2<<1) 120662306a36Sopenharmony_ci #define LINK_STATUS_SPEED_AND_DUPLEX_100TXHD (3<<1) 120762306a36Sopenharmony_ci #define LINK_STATUS_SPEED_AND_DUPLEX_100T4 (4<<1) 120862306a36Sopenharmony_ci #define LINK_STATUS_SPEED_AND_DUPLEX_100TXFD (5<<1) 120962306a36Sopenharmony_ci #define LINK_STATUS_SPEED_AND_DUPLEX_1000THD (6<<1) 121062306a36Sopenharmony_ci #define LINK_STATUS_SPEED_AND_DUPLEX_1000TFD (7<<1) 121162306a36Sopenharmony_ci #define LINK_STATUS_SPEED_AND_DUPLEX_1000XFD (7<<1) 121262306a36Sopenharmony_ci #define LINK_STATUS_SPEED_AND_DUPLEX_2500THD (8<<1) 121362306a36Sopenharmony_ci #define LINK_STATUS_SPEED_AND_DUPLEX_2500TFD (9<<1) 121462306a36Sopenharmony_ci #define LINK_STATUS_SPEED_AND_DUPLEX_2500XFD (9<<1) 121562306a36Sopenharmony_ci #define LINK_STATUS_SPEED_AND_DUPLEX_10GTFD (10<<1) 121662306a36Sopenharmony_ci #define LINK_STATUS_SPEED_AND_DUPLEX_10GXFD (10<<1) 121762306a36Sopenharmony_ci #define LINK_STATUS_SPEED_AND_DUPLEX_20GTFD (11<<1) 121862306a36Sopenharmony_ci #define LINK_STATUS_SPEED_AND_DUPLEX_20GXFD (11<<1) 121962306a36Sopenharmony_ci 122062306a36Sopenharmony_ci #define LINK_STATUS_AUTO_NEGOTIATE_FLAG_MASK 0x00000020 122162306a36Sopenharmony_ci #define LINK_STATUS_AUTO_NEGOTIATE_ENABLED 0x00000020 122262306a36Sopenharmony_ci 122362306a36Sopenharmony_ci #define LINK_STATUS_AUTO_NEGOTIATE_COMPLETE 0x00000040 122462306a36Sopenharmony_ci #define LINK_STATUS_PARALLEL_DETECTION_FLAG_MASK 0x00000080 122562306a36Sopenharmony_ci #define LINK_STATUS_PARALLEL_DETECTION_USED 0x00000080 122662306a36Sopenharmony_ci 122762306a36Sopenharmony_ci #define LINK_STATUS_LINK_PARTNER_1000TFD_CAPABLE 0x00000200 122862306a36Sopenharmony_ci #define LINK_STATUS_LINK_PARTNER_1000THD_CAPABLE 0x00000400 122962306a36Sopenharmony_ci #define LINK_STATUS_LINK_PARTNER_100T4_CAPABLE 0x00000800 123062306a36Sopenharmony_ci #define LINK_STATUS_LINK_PARTNER_100TXFD_CAPABLE 0x00001000 123162306a36Sopenharmony_ci #define LINK_STATUS_LINK_PARTNER_100TXHD_CAPABLE 0x00002000 123262306a36Sopenharmony_ci #define LINK_STATUS_LINK_PARTNER_10TFD_CAPABLE 0x00004000 123362306a36Sopenharmony_ci #define LINK_STATUS_LINK_PARTNER_10THD_CAPABLE 0x00008000 123462306a36Sopenharmony_ci 123562306a36Sopenharmony_ci #define LINK_STATUS_TX_FLOW_CONTROL_FLAG_MASK 0x00010000 123662306a36Sopenharmony_ci #define LINK_STATUS_TX_FLOW_CONTROL_ENABLED 0x00010000 123762306a36Sopenharmony_ci 123862306a36Sopenharmony_ci #define LINK_STATUS_RX_FLOW_CONTROL_FLAG_MASK 0x00020000 123962306a36Sopenharmony_ci #define LINK_STATUS_RX_FLOW_CONTROL_ENABLED 0x00020000 124062306a36Sopenharmony_ci 124162306a36Sopenharmony_ci #define LINK_STATUS_LINK_PARTNER_FLOW_CONTROL_MASK 0x000C0000 124262306a36Sopenharmony_ci #define LINK_STATUS_LINK_PARTNER_NOT_PAUSE_CAPABLE (0<<18) 124362306a36Sopenharmony_ci #define LINK_STATUS_LINK_PARTNER_SYMMETRIC_PAUSE (1<<18) 124462306a36Sopenharmony_ci #define LINK_STATUS_LINK_PARTNER_ASYMMETRIC_PAUSE (2<<18) 124562306a36Sopenharmony_ci #define LINK_STATUS_LINK_PARTNER_BOTH_PAUSE (3<<18) 124662306a36Sopenharmony_ci 124762306a36Sopenharmony_ci #define LINK_STATUS_SERDES_LINK 0x00100000 124862306a36Sopenharmony_ci 124962306a36Sopenharmony_ci #define LINK_STATUS_LINK_PARTNER_2500XFD_CAPABLE 0x00200000 125062306a36Sopenharmony_ci #define LINK_STATUS_LINK_PARTNER_2500XHD_CAPABLE 0x00400000 125162306a36Sopenharmony_ci #define LINK_STATUS_LINK_PARTNER_10GXFD_CAPABLE 0x00800000 125262306a36Sopenharmony_ci #define LINK_STATUS_LINK_PARTNER_20GXFD_CAPABLE 0x10000000 125362306a36Sopenharmony_ci 125462306a36Sopenharmony_ci #define LINK_STATUS_PFC_ENABLED 0x20000000 125562306a36Sopenharmony_ci 125662306a36Sopenharmony_ci #define LINK_STATUS_PHYSICAL_LINK_FLAG 0x40000000 125762306a36Sopenharmony_ci #define LINK_STATUS_SFP_TX_FAULT 0x80000000 125862306a36Sopenharmony_ci 125962306a36Sopenharmony_ci u32 port_stx; 126062306a36Sopenharmony_ci 126162306a36Sopenharmony_ci u32 stat_nig_timer; 126262306a36Sopenharmony_ci 126362306a36Sopenharmony_ci /* MCP firmware does not use this field */ 126462306a36Sopenharmony_ci u32 ext_phy_fw_version; 126562306a36Sopenharmony_ci 126662306a36Sopenharmony_ci}; 126762306a36Sopenharmony_ci 126862306a36Sopenharmony_ci 126962306a36Sopenharmony_cistruct drv_func_mb { 127062306a36Sopenharmony_ci 127162306a36Sopenharmony_ci u32 drv_mb_header; 127262306a36Sopenharmony_ci #define DRV_MSG_CODE_MASK 0xffff0000 127362306a36Sopenharmony_ci #define DRV_MSG_CODE_LOAD_REQ 0x10000000 127462306a36Sopenharmony_ci #define DRV_MSG_CODE_LOAD_DONE 0x11000000 127562306a36Sopenharmony_ci #define DRV_MSG_CODE_UNLOAD_REQ_WOL_EN 0x20000000 127662306a36Sopenharmony_ci #define DRV_MSG_CODE_UNLOAD_REQ_WOL_DIS 0x20010000 127762306a36Sopenharmony_ci #define DRV_MSG_CODE_UNLOAD_REQ_WOL_MCP 0x20020000 127862306a36Sopenharmony_ci #define DRV_MSG_CODE_UNLOAD_DONE 0x21000000 127962306a36Sopenharmony_ci #define DRV_MSG_CODE_DCC_OK 0x30000000 128062306a36Sopenharmony_ci #define DRV_MSG_CODE_DCC_FAILURE 0x31000000 128162306a36Sopenharmony_ci #define DRV_MSG_CODE_DIAG_ENTER_REQ 0x50000000 128262306a36Sopenharmony_ci #define DRV_MSG_CODE_DIAG_EXIT_REQ 0x60000000 128362306a36Sopenharmony_ci #define DRV_MSG_CODE_VALIDATE_KEY 0x70000000 128462306a36Sopenharmony_ci #define DRV_MSG_CODE_GET_CURR_KEY 0x80000000 128562306a36Sopenharmony_ci #define DRV_MSG_CODE_GET_UPGRADE_KEY 0x81000000 128662306a36Sopenharmony_ci #define DRV_MSG_CODE_GET_MANUF_KEY 0x82000000 128762306a36Sopenharmony_ci #define DRV_MSG_CODE_LOAD_L2B_PRAM 0x90000000 128862306a36Sopenharmony_ci #define DRV_MSG_CODE_OEM_OK 0x00010000 128962306a36Sopenharmony_ci #define DRV_MSG_CODE_OEM_FAILURE 0x00020000 129062306a36Sopenharmony_ci #define DRV_MSG_CODE_OEM_UPDATE_SVID_OK 0x00030000 129162306a36Sopenharmony_ci #define DRV_MSG_CODE_OEM_UPDATE_SVID_FAILURE 0x00040000 129262306a36Sopenharmony_ci /* 129362306a36Sopenharmony_ci * The optic module verification command requires bootcode 129462306a36Sopenharmony_ci * v5.0.6 or later, te specific optic module verification command 129562306a36Sopenharmony_ci * requires bootcode v5.2.12 or later 129662306a36Sopenharmony_ci */ 129762306a36Sopenharmony_ci #define DRV_MSG_CODE_VRFY_FIRST_PHY_OPT_MDL 0xa0000000 129862306a36Sopenharmony_ci #define REQ_BC_VER_4_VRFY_FIRST_PHY_OPT_MDL 0x00050006 129962306a36Sopenharmony_ci #define DRV_MSG_CODE_VRFY_SPECIFIC_PHY_OPT_MDL 0xa1000000 130062306a36Sopenharmony_ci #define REQ_BC_VER_4_VRFY_SPECIFIC_PHY_OPT_MDL 0x00050234 130162306a36Sopenharmony_ci #define DRV_MSG_CODE_VRFY_AFEX_SUPPORTED 0xa2000000 130262306a36Sopenharmony_ci #define REQ_BC_VER_4_VRFY_AFEX_SUPPORTED 0x00070002 130362306a36Sopenharmony_ci #define REQ_BC_VER_4_SFP_TX_DISABLE_SUPPORTED 0x00070014 130462306a36Sopenharmony_ci #define REQ_BC_VER_4_MT_SUPPORTED 0x00070201 130562306a36Sopenharmony_ci #define REQ_BC_VER_4_PFC_STATS_SUPPORTED 0x00070201 130662306a36Sopenharmony_ci #define REQ_BC_VER_4_FCOE_FEATURES 0x00070209 130762306a36Sopenharmony_ci 130862306a36Sopenharmony_ci #define DRV_MSG_CODE_DCBX_ADMIN_PMF_MSG 0xb0000000 130962306a36Sopenharmony_ci #define DRV_MSG_CODE_DCBX_PMF_DRV_OK 0xb2000000 131062306a36Sopenharmony_ci #define REQ_BC_VER_4_DCBX_ADMIN_MSG_NON_PMF 0x00070401 131162306a36Sopenharmony_ci 131262306a36Sopenharmony_ci #define DRV_MSG_CODE_VF_DISABLED_DONE 0xc0000000 131362306a36Sopenharmony_ci 131462306a36Sopenharmony_ci #define DRV_MSG_CODE_AFEX_DRIVER_SETMAC 0xd0000000 131562306a36Sopenharmony_ci #define DRV_MSG_CODE_AFEX_LISTGET_ACK 0xd1000000 131662306a36Sopenharmony_ci #define DRV_MSG_CODE_AFEX_LISTSET_ACK 0xd2000000 131762306a36Sopenharmony_ci #define DRV_MSG_CODE_AFEX_STATSGET_ACK 0xd3000000 131862306a36Sopenharmony_ci #define DRV_MSG_CODE_AFEX_VIFSET_ACK 0xd4000000 131962306a36Sopenharmony_ci 132062306a36Sopenharmony_ci #define DRV_MSG_CODE_DRV_INFO_ACK 0xd8000000 132162306a36Sopenharmony_ci #define DRV_MSG_CODE_DRV_INFO_NACK 0xd9000000 132262306a36Sopenharmony_ci 132362306a36Sopenharmony_ci #define DRV_MSG_CODE_EEE_RESULTS_ACK 0xda000000 132462306a36Sopenharmony_ci 132562306a36Sopenharmony_ci #define DRV_MSG_CODE_RMMOD 0xdb000000 132662306a36Sopenharmony_ci #define REQ_BC_VER_4_RMMOD_CMD 0x0007080f 132762306a36Sopenharmony_ci 132862306a36Sopenharmony_ci #define DRV_MSG_CODE_SET_MF_BW 0xe0000000 132962306a36Sopenharmony_ci #define REQ_BC_VER_4_SET_MF_BW 0x00060202 133062306a36Sopenharmony_ci #define DRV_MSG_CODE_SET_MF_BW_ACK 0xe1000000 133162306a36Sopenharmony_ci 133262306a36Sopenharmony_ci #define DRV_MSG_CODE_LINK_STATUS_CHANGED 0x01000000 133362306a36Sopenharmony_ci 133462306a36Sopenharmony_ci #define DRV_MSG_CODE_INITIATE_FLR 0x02000000 133562306a36Sopenharmony_ci #define REQ_BC_VER_4_INITIATE_FLR 0x00070213 133662306a36Sopenharmony_ci 133762306a36Sopenharmony_ci #define BIOS_MSG_CODE_LIC_CHALLENGE 0xff010000 133862306a36Sopenharmony_ci #define BIOS_MSG_CODE_LIC_RESPONSE 0xff020000 133962306a36Sopenharmony_ci #define BIOS_MSG_CODE_VIRT_MAC_PRIM 0xff030000 134062306a36Sopenharmony_ci #define BIOS_MSG_CODE_VIRT_MAC_ISCSI 0xff040000 134162306a36Sopenharmony_ci 134262306a36Sopenharmony_ci #define DRV_MSG_SEQ_NUMBER_MASK 0x0000ffff 134362306a36Sopenharmony_ci 134462306a36Sopenharmony_ci u32 drv_mb_param; 134562306a36Sopenharmony_ci #define DRV_MSG_CODE_SET_MF_BW_MIN_MASK 0x00ff0000 134662306a36Sopenharmony_ci #define DRV_MSG_CODE_SET_MF_BW_MAX_MASK 0xff000000 134762306a36Sopenharmony_ci 134862306a36Sopenharmony_ci #define DRV_MSG_CODE_UNLOAD_SKIP_LINK_RESET 0x00000002 134962306a36Sopenharmony_ci 135062306a36Sopenharmony_ci #define DRV_MSG_CODE_LOAD_REQ_WITH_LFA 0x0000100a 135162306a36Sopenharmony_ci #define DRV_MSG_CODE_LOAD_REQ_FORCE_LFA 0x00002000 135262306a36Sopenharmony_ci 135362306a36Sopenharmony_ci u32 fw_mb_header; 135462306a36Sopenharmony_ci #define FW_MSG_CODE_MASK 0xffff0000 135562306a36Sopenharmony_ci #define FW_MSG_CODE_DRV_LOAD_COMMON 0x10100000 135662306a36Sopenharmony_ci #define FW_MSG_CODE_DRV_LOAD_PORT 0x10110000 135762306a36Sopenharmony_ci #define FW_MSG_CODE_DRV_LOAD_FUNCTION 0x10120000 135862306a36Sopenharmony_ci /* Load common chip is supported from bc 6.0.0 */ 135962306a36Sopenharmony_ci #define REQ_BC_VER_4_DRV_LOAD_COMMON_CHIP 0x00060000 136062306a36Sopenharmony_ci #define FW_MSG_CODE_DRV_LOAD_COMMON_CHIP 0x10130000 136162306a36Sopenharmony_ci 136262306a36Sopenharmony_ci #define FW_MSG_CODE_DRV_LOAD_REFUSED 0x10200000 136362306a36Sopenharmony_ci #define FW_MSG_CODE_DRV_LOAD_DONE 0x11100000 136462306a36Sopenharmony_ci #define FW_MSG_CODE_DRV_UNLOAD_COMMON 0x20100000 136562306a36Sopenharmony_ci #define FW_MSG_CODE_DRV_UNLOAD_PORT 0x20110000 136662306a36Sopenharmony_ci #define FW_MSG_CODE_DRV_UNLOAD_FUNCTION 0x20120000 136762306a36Sopenharmony_ci #define FW_MSG_CODE_DRV_UNLOAD_DONE 0x21100000 136862306a36Sopenharmony_ci #define FW_MSG_CODE_DCC_DONE 0x30100000 136962306a36Sopenharmony_ci #define FW_MSG_CODE_LLDP_DONE 0x40100000 137062306a36Sopenharmony_ci #define FW_MSG_CODE_DIAG_ENTER_DONE 0x50100000 137162306a36Sopenharmony_ci #define FW_MSG_CODE_DIAG_REFUSE 0x50200000 137262306a36Sopenharmony_ci #define FW_MSG_CODE_DIAG_EXIT_DONE 0x60100000 137362306a36Sopenharmony_ci #define FW_MSG_CODE_VALIDATE_KEY_SUCCESS 0x70100000 137462306a36Sopenharmony_ci #define FW_MSG_CODE_VALIDATE_KEY_FAILURE 0x70200000 137562306a36Sopenharmony_ci #define FW_MSG_CODE_GET_KEY_DONE 0x80100000 137662306a36Sopenharmony_ci #define FW_MSG_CODE_NO_KEY 0x80f00000 137762306a36Sopenharmony_ci #define FW_MSG_CODE_LIC_INFO_NOT_READY 0x80f80000 137862306a36Sopenharmony_ci #define FW_MSG_CODE_L2B_PRAM_LOADED 0x90100000 137962306a36Sopenharmony_ci #define FW_MSG_CODE_L2B_PRAM_T_LOAD_FAILURE 0x90210000 138062306a36Sopenharmony_ci #define FW_MSG_CODE_L2B_PRAM_C_LOAD_FAILURE 0x90220000 138162306a36Sopenharmony_ci #define FW_MSG_CODE_L2B_PRAM_X_LOAD_FAILURE 0x90230000 138262306a36Sopenharmony_ci #define FW_MSG_CODE_L2B_PRAM_U_LOAD_FAILURE 0x90240000 138362306a36Sopenharmony_ci #define FW_MSG_CODE_VRFY_OPT_MDL_SUCCESS 0xa0100000 138462306a36Sopenharmony_ci #define FW_MSG_CODE_VRFY_OPT_MDL_INVLD_IMG 0xa0200000 138562306a36Sopenharmony_ci #define FW_MSG_CODE_VRFY_OPT_MDL_UNAPPROVED 0xa0300000 138662306a36Sopenharmony_ci #define FW_MSG_CODE_VF_DISABLED_DONE 0xb0000000 138762306a36Sopenharmony_ci #define FW_MSG_CODE_HW_SET_INVALID_IMAGE 0xb0100000 138862306a36Sopenharmony_ci 138962306a36Sopenharmony_ci #define FW_MSG_CODE_AFEX_DRIVER_SETMAC_DONE 0xd0100000 139062306a36Sopenharmony_ci #define FW_MSG_CODE_AFEX_LISTGET_ACK 0xd1100000 139162306a36Sopenharmony_ci #define FW_MSG_CODE_AFEX_LISTSET_ACK 0xd2100000 139262306a36Sopenharmony_ci #define FW_MSG_CODE_AFEX_STATSGET_ACK 0xd3100000 139362306a36Sopenharmony_ci #define FW_MSG_CODE_AFEX_VIFSET_ACK 0xd4100000 139462306a36Sopenharmony_ci 139562306a36Sopenharmony_ci #define FW_MSG_CODE_DRV_INFO_ACK 0xd8100000 139662306a36Sopenharmony_ci #define FW_MSG_CODE_DRV_INFO_NACK 0xd9100000 139762306a36Sopenharmony_ci 139862306a36Sopenharmony_ci #define FW_MSG_CODE_EEE_RESULS_ACK 0xda100000 139962306a36Sopenharmony_ci 140062306a36Sopenharmony_ci #define FW_MSG_CODE_RMMOD_ACK 0xdb100000 140162306a36Sopenharmony_ci 140262306a36Sopenharmony_ci #define FW_MSG_CODE_SET_MF_BW_SENT 0xe0000000 140362306a36Sopenharmony_ci #define FW_MSG_CODE_SET_MF_BW_DONE 0xe1000000 140462306a36Sopenharmony_ci 140562306a36Sopenharmony_ci #define FW_MSG_CODE_LINK_CHANGED_ACK 0x01100000 140662306a36Sopenharmony_ci 140762306a36Sopenharmony_ci #define FW_MSG_CODE_LIC_CHALLENGE 0xff010000 140862306a36Sopenharmony_ci #define FW_MSG_CODE_LIC_RESPONSE 0xff020000 140962306a36Sopenharmony_ci #define FW_MSG_CODE_VIRT_MAC_PRIM 0xff030000 141062306a36Sopenharmony_ci #define FW_MSG_CODE_VIRT_MAC_ISCSI 0xff040000 141162306a36Sopenharmony_ci 141262306a36Sopenharmony_ci #define FW_MSG_SEQ_NUMBER_MASK 0x0000ffff 141362306a36Sopenharmony_ci 141462306a36Sopenharmony_ci u32 fw_mb_param; 141562306a36Sopenharmony_ci 141662306a36Sopenharmony_ci u32 drv_pulse_mb; 141762306a36Sopenharmony_ci #define DRV_PULSE_SEQ_MASK 0x00007fff 141862306a36Sopenharmony_ci #define DRV_PULSE_SYSTEM_TIME_MASK 0xffff0000 141962306a36Sopenharmony_ci /* 142062306a36Sopenharmony_ci * The system time is in the format of 142162306a36Sopenharmony_ci * (year-2001)*12*32 + month*32 + day. 142262306a36Sopenharmony_ci */ 142362306a36Sopenharmony_ci #define DRV_PULSE_ALWAYS_ALIVE 0x00008000 142462306a36Sopenharmony_ci /* 142562306a36Sopenharmony_ci * Indicate to the firmware not to go into the 142662306a36Sopenharmony_ci * OS-absent when it is not getting driver pulse. 142762306a36Sopenharmony_ci * This is used for debugging as well for PXE(MBA). 142862306a36Sopenharmony_ci */ 142962306a36Sopenharmony_ci 143062306a36Sopenharmony_ci u32 mcp_pulse_mb; 143162306a36Sopenharmony_ci #define MCP_PULSE_SEQ_MASK 0x00007fff 143262306a36Sopenharmony_ci #define MCP_PULSE_ALWAYS_ALIVE 0x00008000 143362306a36Sopenharmony_ci /* Indicates to the driver not to assert due to lack 143462306a36Sopenharmony_ci * of MCP response */ 143562306a36Sopenharmony_ci #define MCP_EVENT_MASK 0xffff0000 143662306a36Sopenharmony_ci #define MCP_EVENT_OTHER_DRIVER_RESET_REQ 0x00010000 143762306a36Sopenharmony_ci 143862306a36Sopenharmony_ci u32 iscsi_boot_signature; 143962306a36Sopenharmony_ci u32 iscsi_boot_block_offset; 144062306a36Sopenharmony_ci 144162306a36Sopenharmony_ci u32 drv_status; 144262306a36Sopenharmony_ci #define DRV_STATUS_PMF 0x00000001 144362306a36Sopenharmony_ci #define DRV_STATUS_VF_DISABLED 0x00000002 144462306a36Sopenharmony_ci #define DRV_STATUS_SET_MF_BW 0x00000004 144562306a36Sopenharmony_ci #define DRV_STATUS_LINK_EVENT 0x00000008 144662306a36Sopenharmony_ci 144762306a36Sopenharmony_ci #define DRV_STATUS_OEM_EVENT_MASK 0x00000070 144862306a36Sopenharmony_ci #define DRV_STATUS_OEM_DISABLE_ENABLE_PF 0x00000010 144962306a36Sopenharmony_ci #define DRV_STATUS_OEM_BANDWIDTH_ALLOCATION 0x00000020 145062306a36Sopenharmony_ci 145162306a36Sopenharmony_ci #define DRV_STATUS_OEM_UPDATE_SVID 0x00000080 145262306a36Sopenharmony_ci 145362306a36Sopenharmony_ci #define DRV_STATUS_DCC_EVENT_MASK 0x0000ff00 145462306a36Sopenharmony_ci #define DRV_STATUS_DCC_DISABLE_ENABLE_PF 0x00000100 145562306a36Sopenharmony_ci #define DRV_STATUS_DCC_BANDWIDTH_ALLOCATION 0x00000200 145662306a36Sopenharmony_ci #define DRV_STATUS_DCC_CHANGE_MAC_ADDRESS 0x00000400 145762306a36Sopenharmony_ci #define DRV_STATUS_DCC_RESERVED1 0x00000800 145862306a36Sopenharmony_ci #define DRV_STATUS_DCC_SET_PROTOCOL 0x00001000 145962306a36Sopenharmony_ci #define DRV_STATUS_DCC_SET_PRIORITY 0x00002000 146062306a36Sopenharmony_ci 146162306a36Sopenharmony_ci #define DRV_STATUS_DCBX_EVENT_MASK 0x000f0000 146262306a36Sopenharmony_ci #define DRV_STATUS_DCBX_NEGOTIATION_RESULTS 0x00010000 146362306a36Sopenharmony_ci #define DRV_STATUS_AFEX_EVENT_MASK 0x03f00000 146462306a36Sopenharmony_ci #define DRV_STATUS_AFEX_LISTGET_REQ 0x00100000 146562306a36Sopenharmony_ci #define DRV_STATUS_AFEX_LISTSET_REQ 0x00200000 146662306a36Sopenharmony_ci #define DRV_STATUS_AFEX_STATSGET_REQ 0x00400000 146762306a36Sopenharmony_ci #define DRV_STATUS_AFEX_VIFSET_REQ 0x00800000 146862306a36Sopenharmony_ci 146962306a36Sopenharmony_ci #define DRV_STATUS_DRV_INFO_REQ 0x04000000 147062306a36Sopenharmony_ci 147162306a36Sopenharmony_ci #define DRV_STATUS_EEE_NEGOTIATION_RESULTS 0x08000000 147262306a36Sopenharmony_ci 147362306a36Sopenharmony_ci u32 virt_mac_upper; 147462306a36Sopenharmony_ci #define VIRT_MAC_SIGN_MASK 0xffff0000 147562306a36Sopenharmony_ci #define VIRT_MAC_SIGNATURE 0x564d0000 147662306a36Sopenharmony_ci u32 virt_mac_lower; 147762306a36Sopenharmony_ci 147862306a36Sopenharmony_ci}; 147962306a36Sopenharmony_ci 148062306a36Sopenharmony_ci 148162306a36Sopenharmony_ci/**************************************************************************** 148262306a36Sopenharmony_ci * Management firmware state * 148362306a36Sopenharmony_ci ****************************************************************************/ 148462306a36Sopenharmony_ci/* Allocate 440 bytes for management firmware */ 148562306a36Sopenharmony_ci#define MGMTFW_STATE_WORD_SIZE 110 148662306a36Sopenharmony_ci 148762306a36Sopenharmony_cistruct mgmtfw_state { 148862306a36Sopenharmony_ci u32 opaque[MGMTFW_STATE_WORD_SIZE]; 148962306a36Sopenharmony_ci}; 149062306a36Sopenharmony_ci 149162306a36Sopenharmony_ci 149262306a36Sopenharmony_ci/**************************************************************************** 149362306a36Sopenharmony_ci * Multi-Function configuration * 149462306a36Sopenharmony_ci ****************************************************************************/ 149562306a36Sopenharmony_cistruct shared_mf_cfg { 149662306a36Sopenharmony_ci 149762306a36Sopenharmony_ci u32 clp_mb; 149862306a36Sopenharmony_ci #define SHARED_MF_CLP_SET_DEFAULT 0x00000000 149962306a36Sopenharmony_ci /* set by CLP */ 150062306a36Sopenharmony_ci #define SHARED_MF_CLP_EXIT 0x00000001 150162306a36Sopenharmony_ci /* set by MCP */ 150262306a36Sopenharmony_ci #define SHARED_MF_CLP_EXIT_DONE 0x00010000 150362306a36Sopenharmony_ci 150462306a36Sopenharmony_ci}; 150562306a36Sopenharmony_ci 150662306a36Sopenharmony_cistruct port_mf_cfg { 150762306a36Sopenharmony_ci 150862306a36Sopenharmony_ci u32 dynamic_cfg; /* device control channel */ 150962306a36Sopenharmony_ci #define PORT_MF_CFG_E1HOV_TAG_MASK 0x0000ffff 151062306a36Sopenharmony_ci #define PORT_MF_CFG_E1HOV_TAG_SHIFT 0 151162306a36Sopenharmony_ci #define PORT_MF_CFG_E1HOV_TAG_DEFAULT PORT_MF_CFG_E1HOV_TAG_MASK 151262306a36Sopenharmony_ci 151362306a36Sopenharmony_ci u32 reserved[1]; 151462306a36Sopenharmony_ci 151562306a36Sopenharmony_ci}; 151662306a36Sopenharmony_ci 151762306a36Sopenharmony_cistruct func_mf_cfg { 151862306a36Sopenharmony_ci 151962306a36Sopenharmony_ci u32 config; 152062306a36Sopenharmony_ci /* E/R/I/D */ 152162306a36Sopenharmony_ci /* function 0 of each port cannot be hidden */ 152262306a36Sopenharmony_ci #define FUNC_MF_CFG_FUNC_HIDE 0x00000001 152362306a36Sopenharmony_ci 152462306a36Sopenharmony_ci #define FUNC_MF_CFG_PROTOCOL_MASK 0x00000006 152562306a36Sopenharmony_ci #define FUNC_MF_CFG_PROTOCOL_FCOE 0x00000000 152662306a36Sopenharmony_ci #define FUNC_MF_CFG_PROTOCOL_ETHERNET 0x00000002 152762306a36Sopenharmony_ci #define FUNC_MF_CFG_PROTOCOL_ETHERNET_WITH_RDMA 0x00000004 152862306a36Sopenharmony_ci #define FUNC_MF_CFG_PROTOCOL_ISCSI 0x00000006 152962306a36Sopenharmony_ci #define FUNC_MF_CFG_PROTOCOL_DEFAULT \ 153062306a36Sopenharmony_ci FUNC_MF_CFG_PROTOCOL_ETHERNET_WITH_RDMA 153162306a36Sopenharmony_ci 153262306a36Sopenharmony_ci #define FUNC_MF_CFG_FUNC_DISABLED 0x00000008 153362306a36Sopenharmony_ci #define FUNC_MF_CFG_FUNC_DELETED 0x00000010 153462306a36Sopenharmony_ci 153562306a36Sopenharmony_ci /* PRI */ 153662306a36Sopenharmony_ci /* 0 - low priority, 3 - high priority */ 153762306a36Sopenharmony_ci #define FUNC_MF_CFG_TRANSMIT_PRIORITY_MASK 0x00000300 153862306a36Sopenharmony_ci #define FUNC_MF_CFG_TRANSMIT_PRIORITY_SHIFT 8 153962306a36Sopenharmony_ci #define FUNC_MF_CFG_TRANSMIT_PRIORITY_DEFAULT 0x00000000 154062306a36Sopenharmony_ci 154162306a36Sopenharmony_ci /* MINBW, MAXBW */ 154262306a36Sopenharmony_ci /* value range - 0..100, increments in 100Mbps */ 154362306a36Sopenharmony_ci #define FUNC_MF_CFG_MIN_BW_MASK 0x00ff0000 154462306a36Sopenharmony_ci #define FUNC_MF_CFG_MIN_BW_SHIFT 16 154562306a36Sopenharmony_ci #define FUNC_MF_CFG_MIN_BW_DEFAULT 0x00000000 154662306a36Sopenharmony_ci #define FUNC_MF_CFG_MAX_BW_MASK 0xff000000 154762306a36Sopenharmony_ci #define FUNC_MF_CFG_MAX_BW_SHIFT 24 154862306a36Sopenharmony_ci #define FUNC_MF_CFG_MAX_BW_DEFAULT 0x64000000 154962306a36Sopenharmony_ci 155062306a36Sopenharmony_ci u32 mac_upper; /* MAC */ 155162306a36Sopenharmony_ci #define FUNC_MF_CFG_UPPERMAC_MASK 0x0000ffff 155262306a36Sopenharmony_ci #define FUNC_MF_CFG_UPPERMAC_SHIFT 0 155362306a36Sopenharmony_ci #define FUNC_MF_CFG_UPPERMAC_DEFAULT FUNC_MF_CFG_UPPERMAC_MASK 155462306a36Sopenharmony_ci u32 mac_lower; 155562306a36Sopenharmony_ci #define FUNC_MF_CFG_LOWERMAC_DEFAULT 0xffffffff 155662306a36Sopenharmony_ci 155762306a36Sopenharmony_ci u32 e1hov_tag; /* VNI */ 155862306a36Sopenharmony_ci #define FUNC_MF_CFG_E1HOV_TAG_MASK 0x0000ffff 155962306a36Sopenharmony_ci #define FUNC_MF_CFG_E1HOV_TAG_SHIFT 0 156062306a36Sopenharmony_ci #define FUNC_MF_CFG_E1HOV_TAG_DEFAULT FUNC_MF_CFG_E1HOV_TAG_MASK 156162306a36Sopenharmony_ci 156262306a36Sopenharmony_ci /* afex default VLAN ID - 12 bits */ 156362306a36Sopenharmony_ci #define FUNC_MF_CFG_AFEX_VLAN_MASK 0x0fff0000 156462306a36Sopenharmony_ci #define FUNC_MF_CFG_AFEX_VLAN_SHIFT 16 156562306a36Sopenharmony_ci 156662306a36Sopenharmony_ci u32 afex_config; 156762306a36Sopenharmony_ci #define FUNC_MF_CFG_AFEX_COS_FILTER_MASK 0x000000ff 156862306a36Sopenharmony_ci #define FUNC_MF_CFG_AFEX_COS_FILTER_SHIFT 0 156962306a36Sopenharmony_ci #define FUNC_MF_CFG_AFEX_MBA_ENABLED_MASK 0x0000ff00 157062306a36Sopenharmony_ci #define FUNC_MF_CFG_AFEX_MBA_ENABLED_SHIFT 8 157162306a36Sopenharmony_ci #define FUNC_MF_CFG_AFEX_MBA_ENABLED_VAL 0x00000100 157262306a36Sopenharmony_ci #define FUNC_MF_CFG_AFEX_VLAN_MODE_MASK 0x000f0000 157362306a36Sopenharmony_ci #define FUNC_MF_CFG_AFEX_VLAN_MODE_SHIFT 16 157462306a36Sopenharmony_ci 157562306a36Sopenharmony_ci u32 reserved; 157662306a36Sopenharmony_ci}; 157762306a36Sopenharmony_ci 157862306a36Sopenharmony_cienum mf_cfg_afex_vlan_mode { 157962306a36Sopenharmony_ci FUNC_MF_CFG_AFEX_VLAN_TRUNK_MODE = 0, 158062306a36Sopenharmony_ci FUNC_MF_CFG_AFEX_VLAN_ACCESS_MODE, 158162306a36Sopenharmony_ci FUNC_MF_CFG_AFEX_VLAN_TRUNK_TAG_NATIVE_MODE 158262306a36Sopenharmony_ci}; 158362306a36Sopenharmony_ci 158462306a36Sopenharmony_ci/* This structure is not applicable and should not be accessed on 57711 */ 158562306a36Sopenharmony_cistruct func_ext_cfg { 158662306a36Sopenharmony_ci u32 func_cfg; 158762306a36Sopenharmony_ci #define MACP_FUNC_CFG_FLAGS_MASK 0x0000007F 158862306a36Sopenharmony_ci #define MACP_FUNC_CFG_FLAGS_SHIFT 0 158962306a36Sopenharmony_ci #define MACP_FUNC_CFG_FLAGS_ENABLED 0x00000001 159062306a36Sopenharmony_ci #define MACP_FUNC_CFG_FLAGS_ETHERNET 0x00000002 159162306a36Sopenharmony_ci #define MACP_FUNC_CFG_FLAGS_ISCSI_OFFLOAD 0x00000004 159262306a36Sopenharmony_ci #define MACP_FUNC_CFG_FLAGS_FCOE_OFFLOAD 0x00000008 159362306a36Sopenharmony_ci #define MACP_FUNC_CFG_PAUSE_ON_HOST_RING 0x00000080 159462306a36Sopenharmony_ci 159562306a36Sopenharmony_ci u32 iscsi_mac_addr_upper; 159662306a36Sopenharmony_ci u32 iscsi_mac_addr_lower; 159762306a36Sopenharmony_ci 159862306a36Sopenharmony_ci u32 fcoe_mac_addr_upper; 159962306a36Sopenharmony_ci u32 fcoe_mac_addr_lower; 160062306a36Sopenharmony_ci 160162306a36Sopenharmony_ci u32 fcoe_wwn_port_name_upper; 160262306a36Sopenharmony_ci u32 fcoe_wwn_port_name_lower; 160362306a36Sopenharmony_ci 160462306a36Sopenharmony_ci u32 fcoe_wwn_node_name_upper; 160562306a36Sopenharmony_ci u32 fcoe_wwn_node_name_lower; 160662306a36Sopenharmony_ci 160762306a36Sopenharmony_ci u32 preserve_data; 160862306a36Sopenharmony_ci #define MF_FUNC_CFG_PRESERVE_L2_MAC (1<<0) 160962306a36Sopenharmony_ci #define MF_FUNC_CFG_PRESERVE_ISCSI_MAC (1<<1) 161062306a36Sopenharmony_ci #define MF_FUNC_CFG_PRESERVE_FCOE_MAC (1<<2) 161162306a36Sopenharmony_ci #define MF_FUNC_CFG_PRESERVE_FCOE_WWN_P (1<<3) 161262306a36Sopenharmony_ci #define MF_FUNC_CFG_PRESERVE_FCOE_WWN_N (1<<4) 161362306a36Sopenharmony_ci #define MF_FUNC_CFG_PRESERVE_TX_BW (1<<5) 161462306a36Sopenharmony_ci}; 161562306a36Sopenharmony_ci 161662306a36Sopenharmony_cistruct mf_cfg { 161762306a36Sopenharmony_ci 161862306a36Sopenharmony_ci struct shared_mf_cfg shared_mf_config; /* 0x4 */ 161962306a36Sopenharmony_ci /* 0x8*2*2=0x20 */ 162062306a36Sopenharmony_ci struct port_mf_cfg port_mf_config[NVM_PATH_MAX][PORT_MAX]; 162162306a36Sopenharmony_ci /* for all chips, there are 8 mf functions */ 162262306a36Sopenharmony_ci struct func_mf_cfg func_mf_config[E1H_FUNC_MAX]; /* 0x18 * 8 = 0xc0 */ 162362306a36Sopenharmony_ci /* 162462306a36Sopenharmony_ci * Extended configuration per function - this array does not exist and 162562306a36Sopenharmony_ci * should not be accessed on 57711 162662306a36Sopenharmony_ci */ 162762306a36Sopenharmony_ci struct func_ext_cfg func_ext_config[E1H_FUNC_MAX]; /* 0x28 * 8 = 0x140*/ 162862306a36Sopenharmony_ci}; /* 0x224 */ 162962306a36Sopenharmony_ci 163062306a36Sopenharmony_ci/**************************************************************************** 163162306a36Sopenharmony_ci * Shared Memory Region * 163262306a36Sopenharmony_ci ****************************************************************************/ 163362306a36Sopenharmony_cistruct shmem_region { /* SharedMem Offset (size) */ 163462306a36Sopenharmony_ci 163562306a36Sopenharmony_ci u32 validity_map[PORT_MAX]; /* 0x0 (4*2 = 0x8) */ 163662306a36Sopenharmony_ci #define SHR_MEM_FORMAT_REV_MASK 0xff000000 163762306a36Sopenharmony_ci #define SHR_MEM_FORMAT_REV_ID ('A'<<24) 163862306a36Sopenharmony_ci /* validity bits */ 163962306a36Sopenharmony_ci #define SHR_MEM_VALIDITY_PCI_CFG 0x00100000 164062306a36Sopenharmony_ci #define SHR_MEM_VALIDITY_MB 0x00200000 164162306a36Sopenharmony_ci #define SHR_MEM_VALIDITY_DEV_INFO 0x00400000 164262306a36Sopenharmony_ci #define SHR_MEM_VALIDITY_RESERVED 0x00000007 164362306a36Sopenharmony_ci /* One licensing bit should be set */ 164462306a36Sopenharmony_ci #define SHR_MEM_VALIDITY_LIC_KEY_IN_EFFECT_MASK 0x00000038 164562306a36Sopenharmony_ci #define SHR_MEM_VALIDITY_LIC_MANUF_KEY_IN_EFFECT 0x00000008 164662306a36Sopenharmony_ci #define SHR_MEM_VALIDITY_LIC_UPGRADE_KEY_IN_EFFECT 0x00000010 164762306a36Sopenharmony_ci #define SHR_MEM_VALIDITY_LIC_NO_KEY_IN_EFFECT 0x00000020 164862306a36Sopenharmony_ci /* Active MFW */ 164962306a36Sopenharmony_ci #define SHR_MEM_VALIDITY_ACTIVE_MFW_UNKNOWN 0x00000000 165062306a36Sopenharmony_ci #define SHR_MEM_VALIDITY_ACTIVE_MFW_MASK 0x000001c0 165162306a36Sopenharmony_ci #define SHR_MEM_VALIDITY_ACTIVE_MFW_IPMI 0x00000040 165262306a36Sopenharmony_ci #define SHR_MEM_VALIDITY_ACTIVE_MFW_UMP 0x00000080 165362306a36Sopenharmony_ci #define SHR_MEM_VALIDITY_ACTIVE_MFW_NCSI 0x000000c0 165462306a36Sopenharmony_ci #define SHR_MEM_VALIDITY_ACTIVE_MFW_NONE 0x000001c0 165562306a36Sopenharmony_ci 165662306a36Sopenharmony_ci struct shm_dev_info dev_info; /* 0x8 (0x438) */ 165762306a36Sopenharmony_ci 165862306a36Sopenharmony_ci struct license_key drv_lic_key[PORT_MAX]; /* 0x440 (52*2=0x68) */ 165962306a36Sopenharmony_ci 166062306a36Sopenharmony_ci /* FW information (for internal FW use) */ 166162306a36Sopenharmony_ci u32 fw_info_fio_offset; /* 0x4a8 (0x4) */ 166262306a36Sopenharmony_ci struct mgmtfw_state mgmtfw_state; /* 0x4ac (0x1b8) */ 166362306a36Sopenharmony_ci 166462306a36Sopenharmony_ci struct drv_port_mb port_mb[PORT_MAX]; /* 0x664 (16*2=0x20) */ 166562306a36Sopenharmony_ci 166662306a36Sopenharmony_ci#ifdef BMAPI 166762306a36Sopenharmony_ci /* This is a variable length array */ 166862306a36Sopenharmony_ci /* the number of function depends on the chip type */ 166962306a36Sopenharmony_ci struct drv_func_mb func_mb[1]; /* 0x684 (44*2/4/8=0x58/0xb0/0x160) */ 167062306a36Sopenharmony_ci#else 167162306a36Sopenharmony_ci /* the number of function depends on the chip type */ 167262306a36Sopenharmony_ci struct drv_func_mb func_mb[]; /* 0x684 (44*2/4/8=0x58/0xb0/0x160) */ 167362306a36Sopenharmony_ci#endif /* BMAPI */ 167462306a36Sopenharmony_ci 167562306a36Sopenharmony_ci}; /* 57710 = 0x6dc | 57711 = 0x7E4 | 57712 = 0x734 */ 167662306a36Sopenharmony_ci 167762306a36Sopenharmony_ci/**************************************************************************** 167862306a36Sopenharmony_ci * Shared Memory 2 Region * 167962306a36Sopenharmony_ci ****************************************************************************/ 168062306a36Sopenharmony_ci/* The fw_flr_ack is actually built in the following way: */ 168162306a36Sopenharmony_ci/* 8 bit: PF ack */ 168262306a36Sopenharmony_ci/* 64 bit: VF ack */ 168362306a36Sopenharmony_ci/* 8 bit: ios_dis_ack */ 168462306a36Sopenharmony_ci/* In order to maintain endianity in the mailbox hsi, we want to keep using */ 168562306a36Sopenharmony_ci/* u32. The fw must have the VF right after the PF since this is how it */ 168662306a36Sopenharmony_ci/* access arrays(it expects always the VF to reside after the PF, and that */ 168762306a36Sopenharmony_ci/* makes the calculation much easier for it. ) */ 168862306a36Sopenharmony_ci/* In order to answer both limitations, and keep the struct small, the code */ 168962306a36Sopenharmony_ci/* will abuse the structure defined here to achieve the actual partition */ 169062306a36Sopenharmony_ci/* above */ 169162306a36Sopenharmony_ci/****************************************************************************/ 169262306a36Sopenharmony_cistruct fw_flr_ack { 169362306a36Sopenharmony_ci u32 pf_ack; 169462306a36Sopenharmony_ci u32 vf_ack[1]; 169562306a36Sopenharmony_ci u32 iov_dis_ack; 169662306a36Sopenharmony_ci}; 169762306a36Sopenharmony_ci 169862306a36Sopenharmony_cistruct fw_flr_mb { 169962306a36Sopenharmony_ci u32 aggint; 170062306a36Sopenharmony_ci u32 opgen_addr; 170162306a36Sopenharmony_ci struct fw_flr_ack ack; 170262306a36Sopenharmony_ci}; 170362306a36Sopenharmony_ci 170462306a36Sopenharmony_cistruct eee_remote_vals { 170562306a36Sopenharmony_ci u32 tx_tw; 170662306a36Sopenharmony_ci u32 rx_tw; 170762306a36Sopenharmony_ci}; 170862306a36Sopenharmony_ci 170962306a36Sopenharmony_ci/**** SUPPORT FOR SHMEM ARRRAYS *** 171062306a36Sopenharmony_ci * The SHMEM HSI is aligned on 32 bit boundaries which makes it difficult to 171162306a36Sopenharmony_ci * define arrays with storage types smaller then unsigned dwords. 171262306a36Sopenharmony_ci * The macros below add generic support for SHMEM arrays with numeric elements 171362306a36Sopenharmony_ci * that can span 2,4,8 or 16 bits. The array underlying type is a 32 bit dword 171462306a36Sopenharmony_ci * array with individual bit-filed elements accessed using shifts and masks. 171562306a36Sopenharmony_ci * 171662306a36Sopenharmony_ci */ 171762306a36Sopenharmony_ci 171862306a36Sopenharmony_ci/* eb is the bitwidth of a single element */ 171962306a36Sopenharmony_ci#define SHMEM_ARRAY_MASK(eb) ((1<<(eb))-1) 172062306a36Sopenharmony_ci#define SHMEM_ARRAY_ENTRY(i, eb) ((i)/(32/(eb))) 172162306a36Sopenharmony_ci 172262306a36Sopenharmony_ci/* the bit-position macro allows the used to flip the order of the arrays 172362306a36Sopenharmony_ci * elements on a per byte or word boundary. 172462306a36Sopenharmony_ci * 172562306a36Sopenharmony_ci * example: an array with 8 entries each 4 bit wide. This array will fit into 172662306a36Sopenharmony_ci * a single dword. The diagrmas below show the array order of the nibbles. 172762306a36Sopenharmony_ci * 172862306a36Sopenharmony_ci * SHMEM_ARRAY_BITPOS(i, 4, 4) defines the stadard ordering: 172962306a36Sopenharmony_ci * 173062306a36Sopenharmony_ci * | | | | 173162306a36Sopenharmony_ci * 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 173262306a36Sopenharmony_ci * | | | | 173362306a36Sopenharmony_ci * 173462306a36Sopenharmony_ci * SHMEM_ARRAY_BITPOS(i, 4, 8) defines a flip ordering per byte: 173562306a36Sopenharmony_ci * 173662306a36Sopenharmony_ci * | | | | 173762306a36Sopenharmony_ci * 1 | 0 | 3 | 2 | 5 | 4 | 7 | 6 | 173862306a36Sopenharmony_ci * | | | | 173962306a36Sopenharmony_ci * 174062306a36Sopenharmony_ci * SHMEM_ARRAY_BITPOS(i, 4, 16) defines a flip ordering per word: 174162306a36Sopenharmony_ci * 174262306a36Sopenharmony_ci * | | | | 174362306a36Sopenharmony_ci * 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 174462306a36Sopenharmony_ci * | | | | 174562306a36Sopenharmony_ci */ 174662306a36Sopenharmony_ci#define SHMEM_ARRAY_BITPOS(i, eb, fb) \ 174762306a36Sopenharmony_ci ((((32/(fb)) - 1 - ((i)/((fb)/(eb))) % (32/(fb))) * (fb)) + \ 174862306a36Sopenharmony_ci (((i)%((fb)/(eb))) * (eb))) 174962306a36Sopenharmony_ci 175062306a36Sopenharmony_ci#define SHMEM_ARRAY_GET(a, i, eb, fb) \ 175162306a36Sopenharmony_ci ((a[SHMEM_ARRAY_ENTRY(i, eb)] >> SHMEM_ARRAY_BITPOS(i, eb, fb)) & \ 175262306a36Sopenharmony_ci SHMEM_ARRAY_MASK(eb)) 175362306a36Sopenharmony_ci 175462306a36Sopenharmony_ci#define SHMEM_ARRAY_SET(a, i, eb, fb, val) \ 175562306a36Sopenharmony_cido { \ 175662306a36Sopenharmony_ci a[SHMEM_ARRAY_ENTRY(i, eb)] &= ~(SHMEM_ARRAY_MASK(eb) << \ 175762306a36Sopenharmony_ci SHMEM_ARRAY_BITPOS(i, eb, fb)); \ 175862306a36Sopenharmony_ci a[SHMEM_ARRAY_ENTRY(i, eb)] |= (((val) & SHMEM_ARRAY_MASK(eb)) << \ 175962306a36Sopenharmony_ci SHMEM_ARRAY_BITPOS(i, eb, fb)); \ 176062306a36Sopenharmony_ci} while (0) 176162306a36Sopenharmony_ci 176262306a36Sopenharmony_ci 176362306a36Sopenharmony_ci/****START OF DCBX STRUCTURES DECLARATIONS****/ 176462306a36Sopenharmony_ci#define DCBX_MAX_NUM_PRI_PG_ENTRIES 8 176562306a36Sopenharmony_ci#define DCBX_PRI_PG_BITWIDTH 4 176662306a36Sopenharmony_ci#define DCBX_PRI_PG_FBITS 8 176762306a36Sopenharmony_ci#define DCBX_PRI_PG_GET(a, i) \ 176862306a36Sopenharmony_ci SHMEM_ARRAY_GET(a, i, DCBX_PRI_PG_BITWIDTH, DCBX_PRI_PG_FBITS) 176962306a36Sopenharmony_ci#define DCBX_PRI_PG_SET(a, i, val) \ 177062306a36Sopenharmony_ci SHMEM_ARRAY_SET(a, i, DCBX_PRI_PG_BITWIDTH, DCBX_PRI_PG_FBITS, val) 177162306a36Sopenharmony_ci#define DCBX_MAX_NUM_PG_BW_ENTRIES 8 177262306a36Sopenharmony_ci#define DCBX_BW_PG_BITWIDTH 8 177362306a36Sopenharmony_ci#define DCBX_PG_BW_GET(a, i) \ 177462306a36Sopenharmony_ci SHMEM_ARRAY_GET(a, i, DCBX_BW_PG_BITWIDTH, DCBX_BW_PG_BITWIDTH) 177562306a36Sopenharmony_ci#define DCBX_PG_BW_SET(a, i, val) \ 177662306a36Sopenharmony_ci SHMEM_ARRAY_SET(a, i, DCBX_BW_PG_BITWIDTH, DCBX_BW_PG_BITWIDTH, val) 177762306a36Sopenharmony_ci#define DCBX_STRICT_PRI_PG 15 177862306a36Sopenharmony_ci#define DCBX_MAX_APP_PROTOCOL 16 177962306a36Sopenharmony_ci#define FCOE_APP_IDX 0 178062306a36Sopenharmony_ci#define ISCSI_APP_IDX 1 178162306a36Sopenharmony_ci#define PREDEFINED_APP_IDX_MAX 2 178262306a36Sopenharmony_ci 178362306a36Sopenharmony_ci 178462306a36Sopenharmony_ci/* Big/Little endian have the same representation. */ 178562306a36Sopenharmony_cistruct dcbx_ets_feature { 178662306a36Sopenharmony_ci /* 178762306a36Sopenharmony_ci * For Admin MIB - is this feature supported by the 178862306a36Sopenharmony_ci * driver | For Local MIB - should this feature be enabled. 178962306a36Sopenharmony_ci */ 179062306a36Sopenharmony_ci u32 enabled; 179162306a36Sopenharmony_ci u32 pg_bw_tbl[2]; 179262306a36Sopenharmony_ci u32 pri_pg_tbl[1]; 179362306a36Sopenharmony_ci}; 179462306a36Sopenharmony_ci 179562306a36Sopenharmony_ci/* Driver structure in LE */ 179662306a36Sopenharmony_cistruct dcbx_pfc_feature { 179762306a36Sopenharmony_ci#ifdef __BIG_ENDIAN 179862306a36Sopenharmony_ci u8 pri_en_bitmap; 179962306a36Sopenharmony_ci #define DCBX_PFC_PRI_0 0x01 180062306a36Sopenharmony_ci #define DCBX_PFC_PRI_1 0x02 180162306a36Sopenharmony_ci #define DCBX_PFC_PRI_2 0x04 180262306a36Sopenharmony_ci #define DCBX_PFC_PRI_3 0x08 180362306a36Sopenharmony_ci #define DCBX_PFC_PRI_4 0x10 180462306a36Sopenharmony_ci #define DCBX_PFC_PRI_5 0x20 180562306a36Sopenharmony_ci #define DCBX_PFC_PRI_6 0x40 180662306a36Sopenharmony_ci #define DCBX_PFC_PRI_7 0x80 180762306a36Sopenharmony_ci u8 pfc_caps; 180862306a36Sopenharmony_ci u8 reserved; 180962306a36Sopenharmony_ci u8 enabled; 181062306a36Sopenharmony_ci#elif defined(__LITTLE_ENDIAN) 181162306a36Sopenharmony_ci u8 enabled; 181262306a36Sopenharmony_ci u8 reserved; 181362306a36Sopenharmony_ci u8 pfc_caps; 181462306a36Sopenharmony_ci u8 pri_en_bitmap; 181562306a36Sopenharmony_ci #define DCBX_PFC_PRI_0 0x01 181662306a36Sopenharmony_ci #define DCBX_PFC_PRI_1 0x02 181762306a36Sopenharmony_ci #define DCBX_PFC_PRI_2 0x04 181862306a36Sopenharmony_ci #define DCBX_PFC_PRI_3 0x08 181962306a36Sopenharmony_ci #define DCBX_PFC_PRI_4 0x10 182062306a36Sopenharmony_ci #define DCBX_PFC_PRI_5 0x20 182162306a36Sopenharmony_ci #define DCBX_PFC_PRI_6 0x40 182262306a36Sopenharmony_ci #define DCBX_PFC_PRI_7 0x80 182362306a36Sopenharmony_ci#endif 182462306a36Sopenharmony_ci}; 182562306a36Sopenharmony_ci 182662306a36Sopenharmony_cistruct dcbx_app_priority_entry { 182762306a36Sopenharmony_ci#ifdef __BIG_ENDIAN 182862306a36Sopenharmony_ci u16 app_id; 182962306a36Sopenharmony_ci u8 pri_bitmap; 183062306a36Sopenharmony_ci u8 appBitfield; 183162306a36Sopenharmony_ci #define DCBX_APP_ENTRY_VALID 0x01 183262306a36Sopenharmony_ci #define DCBX_APP_ENTRY_SF_MASK 0xF0 183362306a36Sopenharmony_ci #define DCBX_APP_ENTRY_SF_SHIFT 4 183462306a36Sopenharmony_ci #define DCBX_APP_SF_ETH_TYPE 0x10 183562306a36Sopenharmony_ci #define DCBX_APP_SF_PORT 0x20 183662306a36Sopenharmony_ci #define DCBX_APP_SF_UDP 0x40 183762306a36Sopenharmony_ci #define DCBX_APP_SF_DEFAULT 0x80 183862306a36Sopenharmony_ci#elif defined(__LITTLE_ENDIAN) 183962306a36Sopenharmony_ci u8 appBitfield; 184062306a36Sopenharmony_ci #define DCBX_APP_ENTRY_VALID 0x01 184162306a36Sopenharmony_ci #define DCBX_APP_ENTRY_SF_MASK 0xF0 184262306a36Sopenharmony_ci #define DCBX_APP_ENTRY_SF_SHIFT 4 184362306a36Sopenharmony_ci #define DCBX_APP_ENTRY_VALID 0x01 184462306a36Sopenharmony_ci #define DCBX_APP_SF_ETH_TYPE 0x10 184562306a36Sopenharmony_ci #define DCBX_APP_SF_PORT 0x20 184662306a36Sopenharmony_ci #define DCBX_APP_SF_UDP 0x40 184762306a36Sopenharmony_ci #define DCBX_APP_SF_DEFAULT 0x80 184862306a36Sopenharmony_ci u8 pri_bitmap; 184962306a36Sopenharmony_ci u16 app_id; 185062306a36Sopenharmony_ci#endif 185162306a36Sopenharmony_ci}; 185262306a36Sopenharmony_ci 185362306a36Sopenharmony_ci 185462306a36Sopenharmony_ci/* FW structure in BE */ 185562306a36Sopenharmony_cistruct dcbx_app_priority_feature { 185662306a36Sopenharmony_ci#ifdef __BIG_ENDIAN 185762306a36Sopenharmony_ci u8 reserved; 185862306a36Sopenharmony_ci u8 default_pri; 185962306a36Sopenharmony_ci u8 tc_supported; 186062306a36Sopenharmony_ci u8 enabled; 186162306a36Sopenharmony_ci#elif defined(__LITTLE_ENDIAN) 186262306a36Sopenharmony_ci u8 enabled; 186362306a36Sopenharmony_ci u8 tc_supported; 186462306a36Sopenharmony_ci u8 default_pri; 186562306a36Sopenharmony_ci u8 reserved; 186662306a36Sopenharmony_ci#endif 186762306a36Sopenharmony_ci struct dcbx_app_priority_entry app_pri_tbl[DCBX_MAX_APP_PROTOCOL]; 186862306a36Sopenharmony_ci}; 186962306a36Sopenharmony_ci 187062306a36Sopenharmony_ci/* FW structure in BE */ 187162306a36Sopenharmony_cistruct dcbx_features { 187262306a36Sopenharmony_ci /* PG feature */ 187362306a36Sopenharmony_ci struct dcbx_ets_feature ets; 187462306a36Sopenharmony_ci /* PFC feature */ 187562306a36Sopenharmony_ci struct dcbx_pfc_feature pfc; 187662306a36Sopenharmony_ci /* APP feature */ 187762306a36Sopenharmony_ci struct dcbx_app_priority_feature app; 187862306a36Sopenharmony_ci}; 187962306a36Sopenharmony_ci 188062306a36Sopenharmony_ci/* LLDP protocol parameters */ 188162306a36Sopenharmony_ci/* FW structure in BE */ 188262306a36Sopenharmony_cistruct lldp_params { 188362306a36Sopenharmony_ci#ifdef __BIG_ENDIAN 188462306a36Sopenharmony_ci u8 msg_fast_tx_interval; 188562306a36Sopenharmony_ci u8 msg_tx_hold; 188662306a36Sopenharmony_ci u8 msg_tx_interval; 188762306a36Sopenharmony_ci u8 admin_status; 188862306a36Sopenharmony_ci #define LLDP_TX_ONLY 0x01 188962306a36Sopenharmony_ci #define LLDP_RX_ONLY 0x02 189062306a36Sopenharmony_ci #define LLDP_TX_RX 0x03 189162306a36Sopenharmony_ci #define LLDP_DISABLED 0x04 189262306a36Sopenharmony_ci u8 reserved1; 189362306a36Sopenharmony_ci u8 tx_fast; 189462306a36Sopenharmony_ci u8 tx_crd_max; 189562306a36Sopenharmony_ci u8 tx_crd; 189662306a36Sopenharmony_ci#elif defined(__LITTLE_ENDIAN) 189762306a36Sopenharmony_ci u8 admin_status; 189862306a36Sopenharmony_ci #define LLDP_TX_ONLY 0x01 189962306a36Sopenharmony_ci #define LLDP_RX_ONLY 0x02 190062306a36Sopenharmony_ci #define LLDP_TX_RX 0x03 190162306a36Sopenharmony_ci #define LLDP_DISABLED 0x04 190262306a36Sopenharmony_ci u8 msg_tx_interval; 190362306a36Sopenharmony_ci u8 msg_tx_hold; 190462306a36Sopenharmony_ci u8 msg_fast_tx_interval; 190562306a36Sopenharmony_ci u8 tx_crd; 190662306a36Sopenharmony_ci u8 tx_crd_max; 190762306a36Sopenharmony_ci u8 tx_fast; 190862306a36Sopenharmony_ci u8 reserved1; 190962306a36Sopenharmony_ci#endif 191062306a36Sopenharmony_ci #define REM_CHASSIS_ID_STAT_LEN 4 191162306a36Sopenharmony_ci #define REM_PORT_ID_STAT_LEN 4 191262306a36Sopenharmony_ci /* Holds remote Chassis ID TLV header, subtype and 9B of payload. */ 191362306a36Sopenharmony_ci u32 peer_chassis_id[REM_CHASSIS_ID_STAT_LEN]; 191462306a36Sopenharmony_ci /* Holds remote Port ID TLV header, subtype and 9B of payload. */ 191562306a36Sopenharmony_ci u32 peer_port_id[REM_PORT_ID_STAT_LEN]; 191662306a36Sopenharmony_ci}; 191762306a36Sopenharmony_ci 191862306a36Sopenharmony_cistruct lldp_dcbx_stat { 191962306a36Sopenharmony_ci #define LOCAL_CHASSIS_ID_STAT_LEN 2 192062306a36Sopenharmony_ci #define LOCAL_PORT_ID_STAT_LEN 2 192162306a36Sopenharmony_ci /* Holds local Chassis ID 8B payload of constant subtype 4. */ 192262306a36Sopenharmony_ci u32 local_chassis_id[LOCAL_CHASSIS_ID_STAT_LEN]; 192362306a36Sopenharmony_ci /* Holds local Port ID 8B payload of constant subtype 3. */ 192462306a36Sopenharmony_ci u32 local_port_id[LOCAL_PORT_ID_STAT_LEN]; 192562306a36Sopenharmony_ci /* Number of DCBX frames transmitted. */ 192662306a36Sopenharmony_ci u32 num_tx_dcbx_pkts; 192762306a36Sopenharmony_ci /* Number of DCBX frames received. */ 192862306a36Sopenharmony_ci u32 num_rx_dcbx_pkts; 192962306a36Sopenharmony_ci}; 193062306a36Sopenharmony_ci 193162306a36Sopenharmony_ci/* ADMIN MIB - DCBX local machine default configuration. */ 193262306a36Sopenharmony_cistruct lldp_admin_mib { 193362306a36Sopenharmony_ci u32 ver_cfg_flags; 193462306a36Sopenharmony_ci #define DCBX_ETS_CONFIG_TX_ENABLED 0x00000001 193562306a36Sopenharmony_ci #define DCBX_PFC_CONFIG_TX_ENABLED 0x00000002 193662306a36Sopenharmony_ci #define DCBX_APP_CONFIG_TX_ENABLED 0x00000004 193762306a36Sopenharmony_ci #define DCBX_ETS_RECO_TX_ENABLED 0x00000008 193862306a36Sopenharmony_ci #define DCBX_ETS_RECO_VALID 0x00000010 193962306a36Sopenharmony_ci #define DCBX_ETS_WILLING 0x00000020 194062306a36Sopenharmony_ci #define DCBX_PFC_WILLING 0x00000040 194162306a36Sopenharmony_ci #define DCBX_APP_WILLING 0x00000080 194262306a36Sopenharmony_ci #define DCBX_VERSION_CEE 0x00000100 194362306a36Sopenharmony_ci #define DCBX_VERSION_IEEE 0x00000200 194462306a36Sopenharmony_ci #define DCBX_DCBX_ENABLED 0x00000400 194562306a36Sopenharmony_ci #define DCBX_CEE_VERSION_MASK 0x0000f000 194662306a36Sopenharmony_ci #define DCBX_CEE_VERSION_SHIFT 12 194762306a36Sopenharmony_ci #define DCBX_CEE_MAX_VERSION_MASK 0x000f0000 194862306a36Sopenharmony_ci #define DCBX_CEE_MAX_VERSION_SHIFT 16 194962306a36Sopenharmony_ci struct dcbx_features features; 195062306a36Sopenharmony_ci}; 195162306a36Sopenharmony_ci 195262306a36Sopenharmony_ci/* REMOTE MIB - remote machine DCBX configuration. */ 195362306a36Sopenharmony_cistruct lldp_remote_mib { 195462306a36Sopenharmony_ci u32 prefix_seq_num; 195562306a36Sopenharmony_ci u32 flags; 195662306a36Sopenharmony_ci #define DCBX_ETS_TLV_RX 0x00000001 195762306a36Sopenharmony_ci #define DCBX_PFC_TLV_RX 0x00000002 195862306a36Sopenharmony_ci #define DCBX_APP_TLV_RX 0x00000004 195962306a36Sopenharmony_ci #define DCBX_ETS_RX_ERROR 0x00000010 196062306a36Sopenharmony_ci #define DCBX_PFC_RX_ERROR 0x00000020 196162306a36Sopenharmony_ci #define DCBX_APP_RX_ERROR 0x00000040 196262306a36Sopenharmony_ci #define DCBX_ETS_REM_WILLING 0x00000100 196362306a36Sopenharmony_ci #define DCBX_PFC_REM_WILLING 0x00000200 196462306a36Sopenharmony_ci #define DCBX_APP_REM_WILLING 0x00000400 196562306a36Sopenharmony_ci #define DCBX_REMOTE_ETS_RECO_VALID 0x00001000 196662306a36Sopenharmony_ci #define DCBX_REMOTE_MIB_VALID 0x00002000 196762306a36Sopenharmony_ci struct dcbx_features features; 196862306a36Sopenharmony_ci u32 suffix_seq_num; 196962306a36Sopenharmony_ci}; 197062306a36Sopenharmony_ci 197162306a36Sopenharmony_ci/* LOCAL MIB - operational DCBX configuration - transmitted on Tx LLDPDU. */ 197262306a36Sopenharmony_cistruct lldp_local_mib { 197362306a36Sopenharmony_ci u32 prefix_seq_num; 197462306a36Sopenharmony_ci /* Indicates if there is mismatch with negotiation results. */ 197562306a36Sopenharmony_ci u32 error; 197662306a36Sopenharmony_ci #define DCBX_LOCAL_ETS_ERROR 0x00000001 197762306a36Sopenharmony_ci #define DCBX_LOCAL_PFC_ERROR 0x00000002 197862306a36Sopenharmony_ci #define DCBX_LOCAL_APP_ERROR 0x00000004 197962306a36Sopenharmony_ci #define DCBX_LOCAL_PFC_MISMATCH 0x00000010 198062306a36Sopenharmony_ci #define DCBX_LOCAL_APP_MISMATCH 0x00000020 198162306a36Sopenharmony_ci #define DCBX_REMOTE_MIB_ERROR 0x00000040 198262306a36Sopenharmony_ci #define DCBX_REMOTE_ETS_TLV_NOT_FOUND 0x00000080 198362306a36Sopenharmony_ci #define DCBX_REMOTE_PFC_TLV_NOT_FOUND 0x00000100 198462306a36Sopenharmony_ci #define DCBX_REMOTE_APP_TLV_NOT_FOUND 0x00000200 198562306a36Sopenharmony_ci struct dcbx_features features; 198662306a36Sopenharmony_ci u32 suffix_seq_num; 198762306a36Sopenharmony_ci}; 198862306a36Sopenharmony_ci/***END OF DCBX STRUCTURES DECLARATIONS***/ 198962306a36Sopenharmony_ci 199062306a36Sopenharmony_ci/***********************************************************/ 199162306a36Sopenharmony_ci/* Elink section */ 199262306a36Sopenharmony_ci/***********************************************************/ 199362306a36Sopenharmony_ci#define SHMEM_LINK_CONFIG_SIZE 2 199462306a36Sopenharmony_cistruct shmem_lfa { 199562306a36Sopenharmony_ci u32 req_duplex; 199662306a36Sopenharmony_ci #define REQ_DUPLEX_PHY0_MASK 0x0000ffff 199762306a36Sopenharmony_ci #define REQ_DUPLEX_PHY0_SHIFT 0 199862306a36Sopenharmony_ci #define REQ_DUPLEX_PHY1_MASK 0xffff0000 199962306a36Sopenharmony_ci #define REQ_DUPLEX_PHY1_SHIFT 16 200062306a36Sopenharmony_ci u32 req_flow_ctrl; 200162306a36Sopenharmony_ci #define REQ_FLOW_CTRL_PHY0_MASK 0x0000ffff 200262306a36Sopenharmony_ci #define REQ_FLOW_CTRL_PHY0_SHIFT 0 200362306a36Sopenharmony_ci #define REQ_FLOW_CTRL_PHY1_MASK 0xffff0000 200462306a36Sopenharmony_ci #define REQ_FLOW_CTRL_PHY1_SHIFT 16 200562306a36Sopenharmony_ci u32 req_line_speed; /* Also determine AutoNeg */ 200662306a36Sopenharmony_ci #define REQ_LINE_SPD_PHY0_MASK 0x0000ffff 200762306a36Sopenharmony_ci #define REQ_LINE_SPD_PHY0_SHIFT 0 200862306a36Sopenharmony_ci #define REQ_LINE_SPD_PHY1_MASK 0xffff0000 200962306a36Sopenharmony_ci #define REQ_LINE_SPD_PHY1_SHIFT 16 201062306a36Sopenharmony_ci u32 speed_cap_mask[SHMEM_LINK_CONFIG_SIZE]; 201162306a36Sopenharmony_ci u32 additional_config; 201262306a36Sopenharmony_ci #define REQ_FC_AUTO_ADV_MASK 0x0000ffff 201362306a36Sopenharmony_ci #define REQ_FC_AUTO_ADV0_SHIFT 0 201462306a36Sopenharmony_ci #define NO_LFA_DUE_TO_DCC_MASK 0x00010000 201562306a36Sopenharmony_ci u32 lfa_sts; 201662306a36Sopenharmony_ci #define LFA_LINK_FLAP_REASON_OFFSET 0 201762306a36Sopenharmony_ci #define LFA_LINK_FLAP_REASON_MASK 0x000000ff 201862306a36Sopenharmony_ci #define LFA_LINK_DOWN 0x1 201962306a36Sopenharmony_ci #define LFA_LOOPBACK_ENABLED 0x2 202062306a36Sopenharmony_ci #define LFA_DUPLEX_MISMATCH 0x3 202162306a36Sopenharmony_ci #define LFA_MFW_IS_TOO_OLD 0x4 202262306a36Sopenharmony_ci #define LFA_LINK_SPEED_MISMATCH 0x5 202362306a36Sopenharmony_ci #define LFA_FLOW_CTRL_MISMATCH 0x6 202462306a36Sopenharmony_ci #define LFA_SPEED_CAP_MISMATCH 0x7 202562306a36Sopenharmony_ci #define LFA_DCC_LFA_DISABLED 0x8 202662306a36Sopenharmony_ci #define LFA_EEE_MISMATCH 0x9 202762306a36Sopenharmony_ci 202862306a36Sopenharmony_ci #define LINK_FLAP_AVOIDANCE_COUNT_OFFSET 8 202962306a36Sopenharmony_ci #define LINK_FLAP_AVOIDANCE_COUNT_MASK 0x0000ff00 203062306a36Sopenharmony_ci 203162306a36Sopenharmony_ci #define LINK_FLAP_COUNT_OFFSET 16 203262306a36Sopenharmony_ci #define LINK_FLAP_COUNT_MASK 0x00ff0000 203362306a36Sopenharmony_ci 203462306a36Sopenharmony_ci #define LFA_FLAGS_MASK 0xff000000 203562306a36Sopenharmony_ci #define SHMEM_LFA_DONT_CLEAR_STAT (1<<24) 203662306a36Sopenharmony_ci}; 203762306a36Sopenharmony_ci 203862306a36Sopenharmony_ci/* Used to support NSCI get OS driver version 203962306a36Sopenharmony_ci * on driver load the version value will be set 204062306a36Sopenharmony_ci * on driver unload driver value of 0x0 will be set. 204162306a36Sopenharmony_ci */ 204262306a36Sopenharmony_cistruct os_drv_ver { 204362306a36Sopenharmony_ci#define DRV_VER_NOT_LOADED 0 204462306a36Sopenharmony_ci 204562306a36Sopenharmony_ci /* personalties order is important */ 204662306a36Sopenharmony_ci#define DRV_PERS_ETHERNET 0 204762306a36Sopenharmony_ci#define DRV_PERS_ISCSI 1 204862306a36Sopenharmony_ci#define DRV_PERS_FCOE 2 204962306a36Sopenharmony_ci 205062306a36Sopenharmony_ci /* shmem2 struct is constant can't add more personalties here */ 205162306a36Sopenharmony_ci#define MAX_DRV_PERS 3 205262306a36Sopenharmony_ci u32 versions[MAX_DRV_PERS]; 205362306a36Sopenharmony_ci}; 205462306a36Sopenharmony_ci 205562306a36Sopenharmony_cistruct ncsi_oem_fcoe_features { 205662306a36Sopenharmony_ci u32 fcoe_features1; 205762306a36Sopenharmony_ci #define FCOE_FEATURES1_IOS_PER_CONNECTION_MASK 0x0000FFFF 205862306a36Sopenharmony_ci #define FCOE_FEATURES1_IOS_PER_CONNECTION_OFFSET 0 205962306a36Sopenharmony_ci 206062306a36Sopenharmony_ci #define FCOE_FEATURES1_LOGINS_PER_PORT_MASK 0xFFFF0000 206162306a36Sopenharmony_ci #define FCOE_FEATURES1_LOGINS_PER_PORT_OFFSET 16 206262306a36Sopenharmony_ci 206362306a36Sopenharmony_ci u32 fcoe_features2; 206462306a36Sopenharmony_ci #define FCOE_FEATURES2_EXCHANGES_MASK 0x0000FFFF 206562306a36Sopenharmony_ci #define FCOE_FEATURES2_EXCHANGES_OFFSET 0 206662306a36Sopenharmony_ci 206762306a36Sopenharmony_ci #define FCOE_FEATURES2_NPIV_WWN_PER_PORT_MASK 0xFFFF0000 206862306a36Sopenharmony_ci #define FCOE_FEATURES2_NPIV_WWN_PER_PORT_OFFSET 16 206962306a36Sopenharmony_ci 207062306a36Sopenharmony_ci u32 fcoe_features3; 207162306a36Sopenharmony_ci #define FCOE_FEATURES3_TARGETS_SUPPORTED_MASK 0x0000FFFF 207262306a36Sopenharmony_ci #define FCOE_FEATURES3_TARGETS_SUPPORTED_OFFSET 0 207362306a36Sopenharmony_ci 207462306a36Sopenharmony_ci #define FCOE_FEATURES3_OUTSTANDING_COMMANDS_MASK 0xFFFF0000 207562306a36Sopenharmony_ci #define FCOE_FEATURES3_OUTSTANDING_COMMANDS_OFFSET 16 207662306a36Sopenharmony_ci 207762306a36Sopenharmony_ci u32 fcoe_features4; 207862306a36Sopenharmony_ci #define FCOE_FEATURES4_FEATURE_SETTINGS_MASK 0x0000000F 207962306a36Sopenharmony_ci #define FCOE_FEATURES4_FEATURE_SETTINGS_OFFSET 0 208062306a36Sopenharmony_ci}; 208162306a36Sopenharmony_ci 208262306a36Sopenharmony_cienum curr_cfg_method_e { 208362306a36Sopenharmony_ci CURR_CFG_MET_NONE = 0, /* default config */ 208462306a36Sopenharmony_ci CURR_CFG_MET_OS = 1, 208562306a36Sopenharmony_ci CURR_CFG_MET_VENDOR_SPEC = 2,/* e.g. Option ROM, NPAR, O/S Cfg Utils */ 208662306a36Sopenharmony_ci}; 208762306a36Sopenharmony_ci 208862306a36Sopenharmony_ci#define FC_NPIV_WWPN_SIZE 8 208962306a36Sopenharmony_ci#define FC_NPIV_WWNN_SIZE 8 209062306a36Sopenharmony_cistruct bdn_npiv_settings { 209162306a36Sopenharmony_ci u8 npiv_wwpn[FC_NPIV_WWPN_SIZE]; 209262306a36Sopenharmony_ci u8 npiv_wwnn[FC_NPIV_WWNN_SIZE]; 209362306a36Sopenharmony_ci}; 209462306a36Sopenharmony_ci 209562306a36Sopenharmony_cistruct bdn_fc_npiv_cfg { 209662306a36Sopenharmony_ci /* hdr used internally by the MFW */ 209762306a36Sopenharmony_ci u32 hdr; 209862306a36Sopenharmony_ci u32 num_of_npiv; 209962306a36Sopenharmony_ci}; 210062306a36Sopenharmony_ci 210162306a36Sopenharmony_ci#define MAX_NUMBER_NPIV 64 210262306a36Sopenharmony_cistruct bdn_fc_npiv_tbl { 210362306a36Sopenharmony_ci struct bdn_fc_npiv_cfg fc_npiv_cfg; 210462306a36Sopenharmony_ci struct bdn_npiv_settings settings[MAX_NUMBER_NPIV]; 210562306a36Sopenharmony_ci}; 210662306a36Sopenharmony_ci 210762306a36Sopenharmony_cistruct mdump_driver_info { 210862306a36Sopenharmony_ci u32 epoc; 210962306a36Sopenharmony_ci u32 drv_ver; 211062306a36Sopenharmony_ci u32 fw_ver; 211162306a36Sopenharmony_ci 211262306a36Sopenharmony_ci u32 valid_dump; 211362306a36Sopenharmony_ci #define FIRST_DUMP_VALID (1 << 0) 211462306a36Sopenharmony_ci #define SECOND_DUMP_VALID (1 << 1) 211562306a36Sopenharmony_ci 211662306a36Sopenharmony_ci u32 flags; 211762306a36Sopenharmony_ci #define ENABLE_ALL_TRIGGERS (0x7fffffff) 211862306a36Sopenharmony_ci #define TRIGGER_MDUMP_ONCE (1 << 31) 211962306a36Sopenharmony_ci}; 212062306a36Sopenharmony_ci 212162306a36Sopenharmony_cistruct ncsi_oem_data { 212262306a36Sopenharmony_ci u32 driver_version[4]; 212362306a36Sopenharmony_ci struct ncsi_oem_fcoe_features ncsi_oem_fcoe_features; 212462306a36Sopenharmony_ci}; 212562306a36Sopenharmony_ci 212662306a36Sopenharmony_cistruct shmem2_region { 212762306a36Sopenharmony_ci 212862306a36Sopenharmony_ci u32 size; /* 0x0000 */ 212962306a36Sopenharmony_ci 213062306a36Sopenharmony_ci u32 dcc_support; /* 0x0004 */ 213162306a36Sopenharmony_ci #define SHMEM_DCC_SUPPORT_NONE 0x00000000 213262306a36Sopenharmony_ci #define SHMEM_DCC_SUPPORT_DISABLE_ENABLE_PF_TLV 0x00000001 213362306a36Sopenharmony_ci #define SHMEM_DCC_SUPPORT_BANDWIDTH_ALLOCATION_TLV 0x00000004 213462306a36Sopenharmony_ci #define SHMEM_DCC_SUPPORT_CHANGE_MAC_ADDRESS_TLV 0x00000008 213562306a36Sopenharmony_ci #define SHMEM_DCC_SUPPORT_SET_PROTOCOL_TLV 0x00000040 213662306a36Sopenharmony_ci #define SHMEM_DCC_SUPPORT_SET_PRIORITY_TLV 0x00000080 213762306a36Sopenharmony_ci 213862306a36Sopenharmony_ci u32 ext_phy_fw_version2[PORT_MAX]; /* 0x0008 */ 213962306a36Sopenharmony_ci /* 214062306a36Sopenharmony_ci * For backwards compatibility, if the mf_cfg_addr does not exist 214162306a36Sopenharmony_ci * (the size filed is smaller than 0xc) the mf_cfg resides at the 214262306a36Sopenharmony_ci * end of struct shmem_region 214362306a36Sopenharmony_ci */ 214462306a36Sopenharmony_ci u32 mf_cfg_addr; /* 0x0010 */ 214562306a36Sopenharmony_ci #define SHMEM_MF_CFG_ADDR_NONE 0x00000000 214662306a36Sopenharmony_ci 214762306a36Sopenharmony_ci struct fw_flr_mb flr_mb; /* 0x0014 */ 214862306a36Sopenharmony_ci u32 dcbx_lldp_params_offset; /* 0x0028 */ 214962306a36Sopenharmony_ci #define SHMEM_LLDP_DCBX_PARAMS_NONE 0x00000000 215062306a36Sopenharmony_ci u32 dcbx_neg_res_offset; /* 0x002c */ 215162306a36Sopenharmony_ci #define SHMEM_DCBX_NEG_RES_NONE 0x00000000 215262306a36Sopenharmony_ci u32 dcbx_remote_mib_offset; /* 0x0030 */ 215362306a36Sopenharmony_ci #define SHMEM_DCBX_REMOTE_MIB_NONE 0x00000000 215462306a36Sopenharmony_ci /* 215562306a36Sopenharmony_ci * The other shmemX_base_addr holds the other path's shmem address 215662306a36Sopenharmony_ci * required for example in case of common phy init, or for path1 to know 215762306a36Sopenharmony_ci * the address of mcp debug trace which is located in offset from shmem 215862306a36Sopenharmony_ci * of path0 215962306a36Sopenharmony_ci */ 216062306a36Sopenharmony_ci u32 other_shmem_base_addr; /* 0x0034 */ 216162306a36Sopenharmony_ci u32 other_shmem2_base_addr; /* 0x0038 */ 216262306a36Sopenharmony_ci /* 216362306a36Sopenharmony_ci * mcp_vf_disabled is set by the MCP to indicate the driver about VFs 216462306a36Sopenharmony_ci * which were disabled/flred 216562306a36Sopenharmony_ci */ 216662306a36Sopenharmony_ci u32 mcp_vf_disabled[E2_VF_MAX / 32]; /* 0x003c */ 216762306a36Sopenharmony_ci 216862306a36Sopenharmony_ci /* 216962306a36Sopenharmony_ci * drv_ack_vf_disabled is set by the PF driver to ack handled disabled 217062306a36Sopenharmony_ci * VFs 217162306a36Sopenharmony_ci */ 217262306a36Sopenharmony_ci u32 drv_ack_vf_disabled[E2_FUNC_MAX][E2_VF_MAX / 32]; /* 0x0044 */ 217362306a36Sopenharmony_ci 217462306a36Sopenharmony_ci u32 dcbx_lldp_dcbx_stat_offset; /* 0x0064 */ 217562306a36Sopenharmony_ci #define SHMEM_LLDP_DCBX_STAT_NONE 0x00000000 217662306a36Sopenharmony_ci 217762306a36Sopenharmony_ci /* 217862306a36Sopenharmony_ci * edebug_driver_if field is used to transfer messages between edebug 217962306a36Sopenharmony_ci * app to the driver through shmem2. 218062306a36Sopenharmony_ci * 218162306a36Sopenharmony_ci * message format: 218262306a36Sopenharmony_ci * bits 0-2 - function number / instance of driver to perform request 218362306a36Sopenharmony_ci * bits 3-5 - op code / is_ack? 218462306a36Sopenharmony_ci * bits 6-63 - data 218562306a36Sopenharmony_ci */ 218662306a36Sopenharmony_ci u32 edebug_driver_if[2]; /* 0x0068 */ 218762306a36Sopenharmony_ci #define EDEBUG_DRIVER_IF_OP_CODE_GET_PHYS_ADDR 1 218862306a36Sopenharmony_ci #define EDEBUG_DRIVER_IF_OP_CODE_GET_BUS_ADDR 2 218962306a36Sopenharmony_ci #define EDEBUG_DRIVER_IF_OP_CODE_DISABLE_STAT 3 219062306a36Sopenharmony_ci 219162306a36Sopenharmony_ci u32 nvm_retain_bitmap_addr; /* 0x0070 */ 219262306a36Sopenharmony_ci 219362306a36Sopenharmony_ci /* afex support of that driver */ 219462306a36Sopenharmony_ci u32 afex_driver_support; /* 0x0074 */ 219562306a36Sopenharmony_ci #define SHMEM_AFEX_VERSION_MASK 0x100f 219662306a36Sopenharmony_ci #define SHMEM_AFEX_SUPPORTED_VERSION_ONE 0x1001 219762306a36Sopenharmony_ci #define SHMEM_AFEX_REDUCED_DRV_LOADED 0x8000 219862306a36Sopenharmony_ci 219962306a36Sopenharmony_ci /* driver receives addr in scratchpad to which it should respond */ 220062306a36Sopenharmony_ci u32 afex_scratchpad_addr_to_write[E2_FUNC_MAX]; 220162306a36Sopenharmony_ci 220262306a36Sopenharmony_ci /* generic params from MCP to driver (value depends on the msg sent 220362306a36Sopenharmony_ci * to driver 220462306a36Sopenharmony_ci */ 220562306a36Sopenharmony_ci u32 afex_param1_to_driver[E2_FUNC_MAX]; /* 0x0088 */ 220662306a36Sopenharmony_ci u32 afex_param2_to_driver[E2_FUNC_MAX]; /* 0x0098 */ 220762306a36Sopenharmony_ci 220862306a36Sopenharmony_ci u32 swim_base_addr; /* 0x0108 */ 220962306a36Sopenharmony_ci u32 swim_funcs; 221062306a36Sopenharmony_ci u32 swim_main_cb; 221162306a36Sopenharmony_ci 221262306a36Sopenharmony_ci /* bitmap notifying which VIF profiles stored in nvram are enabled by 221362306a36Sopenharmony_ci * switch 221462306a36Sopenharmony_ci */ 221562306a36Sopenharmony_ci u32 afex_profiles_enabled[2]; 221662306a36Sopenharmony_ci 221762306a36Sopenharmony_ci /* generic flags controlled by the driver */ 221862306a36Sopenharmony_ci u32 drv_flags; 221962306a36Sopenharmony_ci #define DRV_FLAGS_DCB_CONFIGURED 0x0 222062306a36Sopenharmony_ci #define DRV_FLAGS_DCB_CONFIGURATION_ABORTED 0x1 222162306a36Sopenharmony_ci #define DRV_FLAGS_DCB_MFW_CONFIGURED 0x2 222262306a36Sopenharmony_ci 222362306a36Sopenharmony_ci #define DRV_FLAGS_PORT_MASK ((1 << DRV_FLAGS_DCB_CONFIGURED) | \ 222462306a36Sopenharmony_ci (1 << DRV_FLAGS_DCB_CONFIGURATION_ABORTED) | \ 222562306a36Sopenharmony_ci (1 << DRV_FLAGS_DCB_MFW_CONFIGURED)) 222662306a36Sopenharmony_ci /* pointer to extended dev_info shared data copied from nvm image */ 222762306a36Sopenharmony_ci u32 extended_dev_info_shared_addr; 222862306a36Sopenharmony_ci u32 ncsi_oem_data_addr; 222962306a36Sopenharmony_ci 223062306a36Sopenharmony_ci u32 ocsd_host_addr; /* initialized by option ROM */ 223162306a36Sopenharmony_ci u32 ocbb_host_addr; /* initialized by option ROM */ 223262306a36Sopenharmony_ci u32 ocsd_req_update_interval; /* initialized by option ROM */ 223362306a36Sopenharmony_ci u32 temperature_in_half_celsius; 223462306a36Sopenharmony_ci u32 glob_struct_in_host; 223562306a36Sopenharmony_ci 223662306a36Sopenharmony_ci u32 dcbx_neg_res_ext_offset; 223762306a36Sopenharmony_ci#define SHMEM_DCBX_NEG_RES_EXT_NONE 0x00000000 223862306a36Sopenharmony_ci 223962306a36Sopenharmony_ci u32 drv_capabilities_flag[E2_FUNC_MAX]; 224062306a36Sopenharmony_ci#define DRV_FLAGS_CAPABILITIES_LOADED_SUPPORTED 0x00000001 224162306a36Sopenharmony_ci#define DRV_FLAGS_CAPABILITIES_LOADED_L2 0x00000002 224262306a36Sopenharmony_ci#define DRV_FLAGS_CAPABILITIES_LOADED_FCOE 0x00000004 224362306a36Sopenharmony_ci#define DRV_FLAGS_CAPABILITIES_LOADED_ISCSI 0x00000008 224462306a36Sopenharmony_ci#define DRV_FLAGS_MTU_MASK 0xffff0000 224562306a36Sopenharmony_ci#define DRV_FLAGS_MTU_SHIFT 16 224662306a36Sopenharmony_ci 224762306a36Sopenharmony_ci u32 extended_dev_info_shared_cfg_size; 224862306a36Sopenharmony_ci 224962306a36Sopenharmony_ci u32 dcbx_en[PORT_MAX]; 225062306a36Sopenharmony_ci 225162306a36Sopenharmony_ci /* The offset points to the multi threaded meta structure */ 225262306a36Sopenharmony_ci u32 multi_thread_data_offset; 225362306a36Sopenharmony_ci 225462306a36Sopenharmony_ci /* address of DMAable host address holding values from the drivers */ 225562306a36Sopenharmony_ci u32 drv_info_host_addr_lo; 225662306a36Sopenharmony_ci u32 drv_info_host_addr_hi; 225762306a36Sopenharmony_ci 225862306a36Sopenharmony_ci /* general values written by the MFW (such as current version) */ 225962306a36Sopenharmony_ci u32 drv_info_control; 226062306a36Sopenharmony_ci#define DRV_INFO_CONTROL_VER_MASK 0x000000ff 226162306a36Sopenharmony_ci#define DRV_INFO_CONTROL_VER_SHIFT 0 226262306a36Sopenharmony_ci#define DRV_INFO_CONTROL_OP_CODE_MASK 0x0000ff00 226362306a36Sopenharmony_ci#define DRV_INFO_CONTROL_OP_CODE_SHIFT 8 226462306a36Sopenharmony_ci u32 ibft_host_addr; /* initialized by option ROM */ 226562306a36Sopenharmony_ci struct eee_remote_vals eee_remote_vals[PORT_MAX]; 226662306a36Sopenharmony_ci u32 reserved[E2_FUNC_MAX]; 226762306a36Sopenharmony_ci 226862306a36Sopenharmony_ci 226962306a36Sopenharmony_ci /* the status of EEE auto-negotiation 227062306a36Sopenharmony_ci * bits 15:0 the configured tx-lpi entry timer value. Depends on bit 31. 227162306a36Sopenharmony_ci * bits 19:16 the supported modes for EEE. 227262306a36Sopenharmony_ci * bits 23:20 the speeds advertised for EEE. 227362306a36Sopenharmony_ci * bits 27:24 the speeds the Link partner advertised for EEE. 227462306a36Sopenharmony_ci * The supported/adv. modes in bits 27:19 originate from the 227562306a36Sopenharmony_ci * SHMEM_EEE_XXX_ADV definitions (where XXX is replaced by speed). 227662306a36Sopenharmony_ci * bit 28 when 1'b1 EEE was requested. 227762306a36Sopenharmony_ci * bit 29 when 1'b1 tx lpi was requested. 227862306a36Sopenharmony_ci * bit 30 when 1'b1 EEE was negotiated. Tx lpi will be asserted iff 227962306a36Sopenharmony_ci * 30:29 are 2'b11. 228062306a36Sopenharmony_ci * bit 31 when 1'b0 bits 15:0 contain a PORT_FEAT_CFG_EEE_ define as 228162306a36Sopenharmony_ci * value. When 1'b1 those bits contains a value times 16 microseconds. 228262306a36Sopenharmony_ci */ 228362306a36Sopenharmony_ci u32 eee_status[PORT_MAX]; 228462306a36Sopenharmony_ci #define SHMEM_EEE_TIMER_MASK 0x0000ffff 228562306a36Sopenharmony_ci #define SHMEM_EEE_SUPPORTED_MASK 0x000f0000 228662306a36Sopenharmony_ci #define SHMEM_EEE_SUPPORTED_SHIFT 16 228762306a36Sopenharmony_ci #define SHMEM_EEE_ADV_STATUS_MASK 0x00f00000 228862306a36Sopenharmony_ci #define SHMEM_EEE_100M_ADV (1<<0) 228962306a36Sopenharmony_ci #define SHMEM_EEE_1G_ADV (1<<1) 229062306a36Sopenharmony_ci #define SHMEM_EEE_10G_ADV (1<<2) 229162306a36Sopenharmony_ci #define SHMEM_EEE_ADV_STATUS_SHIFT 20 229262306a36Sopenharmony_ci #define SHMEM_EEE_LP_ADV_STATUS_MASK 0x0f000000 229362306a36Sopenharmony_ci #define SHMEM_EEE_LP_ADV_STATUS_SHIFT 24 229462306a36Sopenharmony_ci #define SHMEM_EEE_REQUESTED_BIT 0x10000000 229562306a36Sopenharmony_ci #define SHMEM_EEE_LPI_REQUESTED_BIT 0x20000000 229662306a36Sopenharmony_ci #define SHMEM_EEE_ACTIVE_BIT 0x40000000 229762306a36Sopenharmony_ci #define SHMEM_EEE_TIME_OUTPUT_BIT 0x80000000 229862306a36Sopenharmony_ci 229962306a36Sopenharmony_ci u32 sizeof_port_stats; 230062306a36Sopenharmony_ci 230162306a36Sopenharmony_ci /* Link Flap Avoidance */ 230262306a36Sopenharmony_ci u32 lfa_host_addr[PORT_MAX]; 230362306a36Sopenharmony_ci u32 reserved1; 230462306a36Sopenharmony_ci 230562306a36Sopenharmony_ci u32 reserved2; /* Offset 0x148 */ 230662306a36Sopenharmony_ci u32 reserved3; /* Offset 0x14C */ 230762306a36Sopenharmony_ci u32 reserved4; /* Offset 0x150 */ 230862306a36Sopenharmony_ci u32 link_attr_sync[PORT_MAX]; /* Offset 0x154 */ 230962306a36Sopenharmony_ci #define LINK_ATTR_SYNC_KR2_ENABLE 0x00000001 231062306a36Sopenharmony_ci #define LINK_ATTR_84858 0x00000002 231162306a36Sopenharmony_ci #define LINK_SFP_EEPROM_COMP_CODE_MASK 0x0000ff00 231262306a36Sopenharmony_ci #define LINK_SFP_EEPROM_COMP_CODE_SHIFT 8 231362306a36Sopenharmony_ci #define LINK_SFP_EEPROM_COMP_CODE_SR 0x00001000 231462306a36Sopenharmony_ci #define LINK_SFP_EEPROM_COMP_CODE_LR 0x00002000 231562306a36Sopenharmony_ci #define LINK_SFP_EEPROM_COMP_CODE_LRM 0x00004000 231662306a36Sopenharmony_ci 231762306a36Sopenharmony_ci u32 reserved5[2]; 231862306a36Sopenharmony_ci u32 link_change_count[PORT_MAX]; /* Offset 0x160-0x164 */ 231962306a36Sopenharmony_ci #define LINK_CHANGE_COUNT_MASK 0xff /* Offset 0x168 */ 232062306a36Sopenharmony_ci /* driver version for each personality */ 232162306a36Sopenharmony_ci struct os_drv_ver func_os_drv_ver[E2_FUNC_MAX]; /* Offset 0x16c */ 232262306a36Sopenharmony_ci 232362306a36Sopenharmony_ci /* Flag to the driver that PF's drv_info_host_addr buffer was read */ 232462306a36Sopenharmony_ci u32 mfw_drv_indication; 232562306a36Sopenharmony_ci 232662306a36Sopenharmony_ci /* We use indication for each PF (0..3) */ 232762306a36Sopenharmony_ci#define MFW_DRV_IND_READ_DONE_OFFSET(_pf_) (1 << (_pf_)) 232862306a36Sopenharmony_ci union { /* For various OEMs */ /* Offset 0x1a0 */ 232962306a36Sopenharmony_ci u8 storage_boot_prog[E2_FUNC_MAX]; 233062306a36Sopenharmony_ci #define STORAGE_BOOT_PROG_MASK 0x000000FF 233162306a36Sopenharmony_ci #define STORAGE_BOOT_PROG_NONE 0x00000000 233262306a36Sopenharmony_ci #define STORAGE_BOOT_PROG_ISCSI_IP_ACQUIRED 0x00000002 233362306a36Sopenharmony_ci #define STORAGE_BOOT_PROG_FCOE_FABRIC_LOGIN_SUCCESS 0x00000002 233462306a36Sopenharmony_ci #define STORAGE_BOOT_PROG_TARGET_FOUND 0x00000004 233562306a36Sopenharmony_ci #define STORAGE_BOOT_PROG_ISCSI_CHAP_SUCCESS 0x00000008 233662306a36Sopenharmony_ci #define STORAGE_BOOT_PROG_FCOE_LUN_FOUND 0x00000008 233762306a36Sopenharmony_ci #define STORAGE_BOOT_PROG_LOGGED_INTO_TGT 0x00000010 233862306a36Sopenharmony_ci #define STORAGE_BOOT_PROG_IMG_DOWNLOADED 0x00000020 233962306a36Sopenharmony_ci #define STORAGE_BOOT_PROG_OS_HANDOFF 0x00000040 234062306a36Sopenharmony_ci #define STORAGE_BOOT_PROG_COMPLETED 0x00000080 234162306a36Sopenharmony_ci 234262306a36Sopenharmony_ci u32 oem_i2c_data_addr; 234362306a36Sopenharmony_ci }; 234462306a36Sopenharmony_ci 234562306a36Sopenharmony_ci /* 9 entires for the C2S PCP map for each inner VLAN PCP + 1 default */ 234662306a36Sopenharmony_ci /* For PCP values 0-3 use the map lower */ 234762306a36Sopenharmony_ci /* 0xFF000000 - PCP 0, 0x00FF0000 - PCP 1, 234862306a36Sopenharmony_ci * 0x0000FF00 - PCP 2, 0x000000FF PCP 3 234962306a36Sopenharmony_ci */ 235062306a36Sopenharmony_ci u32 c2s_pcp_map_lower[E2_FUNC_MAX]; /* 0x1a4 */ 235162306a36Sopenharmony_ci 235262306a36Sopenharmony_ci /* For PCP values 4-7 use the map upper */ 235362306a36Sopenharmony_ci /* 0xFF000000 - PCP 4, 0x00FF0000 - PCP 5, 235462306a36Sopenharmony_ci * 0x0000FF00 - PCP 6, 0x000000FF PCP 7 235562306a36Sopenharmony_ci */ 235662306a36Sopenharmony_ci u32 c2s_pcp_map_upper[E2_FUNC_MAX]; /* 0x1b4 */ 235762306a36Sopenharmony_ci 235862306a36Sopenharmony_ci /* For PCP default value get the MSB byte of the map default */ 235962306a36Sopenharmony_ci u32 c2s_pcp_map_default[E2_FUNC_MAX]; /* 0x1c4 */ 236062306a36Sopenharmony_ci 236162306a36Sopenharmony_ci /* FC_NPIV table offset in NVRAM */ 236262306a36Sopenharmony_ci u32 fc_npiv_nvram_tbl_addr[PORT_MAX]; /* 0x1d4 */ 236362306a36Sopenharmony_ci 236462306a36Sopenharmony_ci /* Shows last method that changed configuration of this device */ 236562306a36Sopenharmony_ci enum curr_cfg_method_e curr_cfg; /* 0x1dc */ 236662306a36Sopenharmony_ci 236762306a36Sopenharmony_ci /* Storm FW version, shold be kept in the format 0xMMmmbbdd: 236862306a36Sopenharmony_ci * MM - Major, mm - Minor, bb - Build ,dd - Drop 236962306a36Sopenharmony_ci */ 237062306a36Sopenharmony_ci u32 netproc_fw_ver; /* 0x1e0 */ 237162306a36Sopenharmony_ci 237262306a36Sopenharmony_ci /* Option ROM SMASH CLP version */ 237362306a36Sopenharmony_ci u32 clp_ver; /* 0x1e4 */ 237462306a36Sopenharmony_ci 237562306a36Sopenharmony_ci u32 pcie_bus_num; /* 0x1e8 */ 237662306a36Sopenharmony_ci 237762306a36Sopenharmony_ci u32 sriov_switch_mode; /* 0x1ec */ 237862306a36Sopenharmony_ci #define SRIOV_SWITCH_MODE_NONE 0x0 237962306a36Sopenharmony_ci #define SRIOV_SWITCH_MODE_VEB 0x1 238062306a36Sopenharmony_ci #define SRIOV_SWITCH_MODE_VEPA 0x2 238162306a36Sopenharmony_ci 238262306a36Sopenharmony_ci u8 rsrv2[E2_FUNC_MAX]; /* 0x1f0 */ 238362306a36Sopenharmony_ci 238462306a36Sopenharmony_ci u32 img_inv_table_addr; /* Address to INV_TABLE_P */ /* 0x1f4 */ 238562306a36Sopenharmony_ci 238662306a36Sopenharmony_ci u32 mtu_size[E2_FUNC_MAX]; /* 0x1f8 */ 238762306a36Sopenharmony_ci 238862306a36Sopenharmony_ci u32 os_driver_state[E2_FUNC_MAX]; /* 0x208 */ 238962306a36Sopenharmony_ci #define OS_DRIVER_STATE_NOT_LOADED 0 /* not installed */ 239062306a36Sopenharmony_ci #define OS_DRIVER_STATE_LOADING 1 /* transition state */ 239162306a36Sopenharmony_ci #define OS_DRIVER_STATE_DISABLED 2 /* installed but disabled */ 239262306a36Sopenharmony_ci #define OS_DRIVER_STATE_ACTIVE 3 /* installed and active */ 239362306a36Sopenharmony_ci 239462306a36Sopenharmony_ci /* mini dump driver info */ 239562306a36Sopenharmony_ci struct mdump_driver_info drv_info; /* 0x218 */ 239662306a36Sopenharmony_ci}; 239762306a36Sopenharmony_ci 239862306a36Sopenharmony_ci 239962306a36Sopenharmony_cistruct emac_stats { 240062306a36Sopenharmony_ci u32 rx_stat_ifhcinoctets; 240162306a36Sopenharmony_ci u32 rx_stat_ifhcinbadoctets; 240262306a36Sopenharmony_ci u32 rx_stat_etherstatsfragments; 240362306a36Sopenharmony_ci u32 rx_stat_ifhcinucastpkts; 240462306a36Sopenharmony_ci u32 rx_stat_ifhcinmulticastpkts; 240562306a36Sopenharmony_ci u32 rx_stat_ifhcinbroadcastpkts; 240662306a36Sopenharmony_ci u32 rx_stat_dot3statsfcserrors; 240762306a36Sopenharmony_ci u32 rx_stat_dot3statsalignmenterrors; 240862306a36Sopenharmony_ci u32 rx_stat_dot3statscarriersenseerrors; 240962306a36Sopenharmony_ci u32 rx_stat_xonpauseframesreceived; 241062306a36Sopenharmony_ci u32 rx_stat_xoffpauseframesreceived; 241162306a36Sopenharmony_ci u32 rx_stat_maccontrolframesreceived; 241262306a36Sopenharmony_ci u32 rx_stat_xoffstateentered; 241362306a36Sopenharmony_ci u32 rx_stat_dot3statsframestoolong; 241462306a36Sopenharmony_ci u32 rx_stat_etherstatsjabbers; 241562306a36Sopenharmony_ci u32 rx_stat_etherstatsundersizepkts; 241662306a36Sopenharmony_ci u32 rx_stat_etherstatspkts64octets; 241762306a36Sopenharmony_ci u32 rx_stat_etherstatspkts65octetsto127octets; 241862306a36Sopenharmony_ci u32 rx_stat_etherstatspkts128octetsto255octets; 241962306a36Sopenharmony_ci u32 rx_stat_etherstatspkts256octetsto511octets; 242062306a36Sopenharmony_ci u32 rx_stat_etherstatspkts512octetsto1023octets; 242162306a36Sopenharmony_ci u32 rx_stat_etherstatspkts1024octetsto1522octets; 242262306a36Sopenharmony_ci u32 rx_stat_etherstatspktsover1522octets; 242362306a36Sopenharmony_ci 242462306a36Sopenharmony_ci u32 rx_stat_falsecarriererrors; 242562306a36Sopenharmony_ci 242662306a36Sopenharmony_ci u32 tx_stat_ifhcoutoctets; 242762306a36Sopenharmony_ci u32 tx_stat_ifhcoutbadoctets; 242862306a36Sopenharmony_ci u32 tx_stat_etherstatscollisions; 242962306a36Sopenharmony_ci u32 tx_stat_outxonsent; 243062306a36Sopenharmony_ci u32 tx_stat_outxoffsent; 243162306a36Sopenharmony_ci u32 tx_stat_flowcontroldone; 243262306a36Sopenharmony_ci u32 tx_stat_dot3statssinglecollisionframes; 243362306a36Sopenharmony_ci u32 tx_stat_dot3statsmultiplecollisionframes; 243462306a36Sopenharmony_ci u32 tx_stat_dot3statsdeferredtransmissions; 243562306a36Sopenharmony_ci u32 tx_stat_dot3statsexcessivecollisions; 243662306a36Sopenharmony_ci u32 tx_stat_dot3statslatecollisions; 243762306a36Sopenharmony_ci u32 tx_stat_ifhcoutucastpkts; 243862306a36Sopenharmony_ci u32 tx_stat_ifhcoutmulticastpkts; 243962306a36Sopenharmony_ci u32 tx_stat_ifhcoutbroadcastpkts; 244062306a36Sopenharmony_ci u32 tx_stat_etherstatspkts64octets; 244162306a36Sopenharmony_ci u32 tx_stat_etherstatspkts65octetsto127octets; 244262306a36Sopenharmony_ci u32 tx_stat_etherstatspkts128octetsto255octets; 244362306a36Sopenharmony_ci u32 tx_stat_etherstatspkts256octetsto511octets; 244462306a36Sopenharmony_ci u32 tx_stat_etherstatspkts512octetsto1023octets; 244562306a36Sopenharmony_ci u32 tx_stat_etherstatspkts1024octetsto1522octets; 244662306a36Sopenharmony_ci u32 tx_stat_etherstatspktsover1522octets; 244762306a36Sopenharmony_ci u32 tx_stat_dot3statsinternalmactransmiterrors; 244862306a36Sopenharmony_ci}; 244962306a36Sopenharmony_ci 245062306a36Sopenharmony_ci 245162306a36Sopenharmony_cistruct bmac1_stats { 245262306a36Sopenharmony_ci u32 tx_stat_gtpkt_lo; 245362306a36Sopenharmony_ci u32 tx_stat_gtpkt_hi; 245462306a36Sopenharmony_ci u32 tx_stat_gtxpf_lo; 245562306a36Sopenharmony_ci u32 tx_stat_gtxpf_hi; 245662306a36Sopenharmony_ci u32 tx_stat_gtfcs_lo; 245762306a36Sopenharmony_ci u32 tx_stat_gtfcs_hi; 245862306a36Sopenharmony_ci u32 tx_stat_gtmca_lo; 245962306a36Sopenharmony_ci u32 tx_stat_gtmca_hi; 246062306a36Sopenharmony_ci u32 tx_stat_gtbca_lo; 246162306a36Sopenharmony_ci u32 tx_stat_gtbca_hi; 246262306a36Sopenharmony_ci u32 tx_stat_gtfrg_lo; 246362306a36Sopenharmony_ci u32 tx_stat_gtfrg_hi; 246462306a36Sopenharmony_ci u32 tx_stat_gtovr_lo; 246562306a36Sopenharmony_ci u32 tx_stat_gtovr_hi; 246662306a36Sopenharmony_ci u32 tx_stat_gt64_lo; 246762306a36Sopenharmony_ci u32 tx_stat_gt64_hi; 246862306a36Sopenharmony_ci u32 tx_stat_gt127_lo; 246962306a36Sopenharmony_ci u32 tx_stat_gt127_hi; 247062306a36Sopenharmony_ci u32 tx_stat_gt255_lo; 247162306a36Sopenharmony_ci u32 tx_stat_gt255_hi; 247262306a36Sopenharmony_ci u32 tx_stat_gt511_lo; 247362306a36Sopenharmony_ci u32 tx_stat_gt511_hi; 247462306a36Sopenharmony_ci u32 tx_stat_gt1023_lo; 247562306a36Sopenharmony_ci u32 tx_stat_gt1023_hi; 247662306a36Sopenharmony_ci u32 tx_stat_gt1518_lo; 247762306a36Sopenharmony_ci u32 tx_stat_gt1518_hi; 247862306a36Sopenharmony_ci u32 tx_stat_gt2047_lo; 247962306a36Sopenharmony_ci u32 tx_stat_gt2047_hi; 248062306a36Sopenharmony_ci u32 tx_stat_gt4095_lo; 248162306a36Sopenharmony_ci u32 tx_stat_gt4095_hi; 248262306a36Sopenharmony_ci u32 tx_stat_gt9216_lo; 248362306a36Sopenharmony_ci u32 tx_stat_gt9216_hi; 248462306a36Sopenharmony_ci u32 tx_stat_gt16383_lo; 248562306a36Sopenharmony_ci u32 tx_stat_gt16383_hi; 248662306a36Sopenharmony_ci u32 tx_stat_gtmax_lo; 248762306a36Sopenharmony_ci u32 tx_stat_gtmax_hi; 248862306a36Sopenharmony_ci u32 tx_stat_gtufl_lo; 248962306a36Sopenharmony_ci u32 tx_stat_gtufl_hi; 249062306a36Sopenharmony_ci u32 tx_stat_gterr_lo; 249162306a36Sopenharmony_ci u32 tx_stat_gterr_hi; 249262306a36Sopenharmony_ci u32 tx_stat_gtbyt_lo; 249362306a36Sopenharmony_ci u32 tx_stat_gtbyt_hi; 249462306a36Sopenharmony_ci 249562306a36Sopenharmony_ci u32 rx_stat_gr64_lo; 249662306a36Sopenharmony_ci u32 rx_stat_gr64_hi; 249762306a36Sopenharmony_ci u32 rx_stat_gr127_lo; 249862306a36Sopenharmony_ci u32 rx_stat_gr127_hi; 249962306a36Sopenharmony_ci u32 rx_stat_gr255_lo; 250062306a36Sopenharmony_ci u32 rx_stat_gr255_hi; 250162306a36Sopenharmony_ci u32 rx_stat_gr511_lo; 250262306a36Sopenharmony_ci u32 rx_stat_gr511_hi; 250362306a36Sopenharmony_ci u32 rx_stat_gr1023_lo; 250462306a36Sopenharmony_ci u32 rx_stat_gr1023_hi; 250562306a36Sopenharmony_ci u32 rx_stat_gr1518_lo; 250662306a36Sopenharmony_ci u32 rx_stat_gr1518_hi; 250762306a36Sopenharmony_ci u32 rx_stat_gr2047_lo; 250862306a36Sopenharmony_ci u32 rx_stat_gr2047_hi; 250962306a36Sopenharmony_ci u32 rx_stat_gr4095_lo; 251062306a36Sopenharmony_ci u32 rx_stat_gr4095_hi; 251162306a36Sopenharmony_ci u32 rx_stat_gr9216_lo; 251262306a36Sopenharmony_ci u32 rx_stat_gr9216_hi; 251362306a36Sopenharmony_ci u32 rx_stat_gr16383_lo; 251462306a36Sopenharmony_ci u32 rx_stat_gr16383_hi; 251562306a36Sopenharmony_ci u32 rx_stat_grmax_lo; 251662306a36Sopenharmony_ci u32 rx_stat_grmax_hi; 251762306a36Sopenharmony_ci u32 rx_stat_grpkt_lo; 251862306a36Sopenharmony_ci u32 rx_stat_grpkt_hi; 251962306a36Sopenharmony_ci u32 rx_stat_grfcs_lo; 252062306a36Sopenharmony_ci u32 rx_stat_grfcs_hi; 252162306a36Sopenharmony_ci u32 rx_stat_grmca_lo; 252262306a36Sopenharmony_ci u32 rx_stat_grmca_hi; 252362306a36Sopenharmony_ci u32 rx_stat_grbca_lo; 252462306a36Sopenharmony_ci u32 rx_stat_grbca_hi; 252562306a36Sopenharmony_ci u32 rx_stat_grxcf_lo; 252662306a36Sopenharmony_ci u32 rx_stat_grxcf_hi; 252762306a36Sopenharmony_ci u32 rx_stat_grxpf_lo; 252862306a36Sopenharmony_ci u32 rx_stat_grxpf_hi; 252962306a36Sopenharmony_ci u32 rx_stat_grxuo_lo; 253062306a36Sopenharmony_ci u32 rx_stat_grxuo_hi; 253162306a36Sopenharmony_ci u32 rx_stat_grjbr_lo; 253262306a36Sopenharmony_ci u32 rx_stat_grjbr_hi; 253362306a36Sopenharmony_ci u32 rx_stat_grovr_lo; 253462306a36Sopenharmony_ci u32 rx_stat_grovr_hi; 253562306a36Sopenharmony_ci u32 rx_stat_grflr_lo; 253662306a36Sopenharmony_ci u32 rx_stat_grflr_hi; 253762306a36Sopenharmony_ci u32 rx_stat_grmeg_lo; 253862306a36Sopenharmony_ci u32 rx_stat_grmeg_hi; 253962306a36Sopenharmony_ci u32 rx_stat_grmeb_lo; 254062306a36Sopenharmony_ci u32 rx_stat_grmeb_hi; 254162306a36Sopenharmony_ci u32 rx_stat_grbyt_lo; 254262306a36Sopenharmony_ci u32 rx_stat_grbyt_hi; 254362306a36Sopenharmony_ci u32 rx_stat_grund_lo; 254462306a36Sopenharmony_ci u32 rx_stat_grund_hi; 254562306a36Sopenharmony_ci u32 rx_stat_grfrg_lo; 254662306a36Sopenharmony_ci u32 rx_stat_grfrg_hi; 254762306a36Sopenharmony_ci u32 rx_stat_grerb_lo; 254862306a36Sopenharmony_ci u32 rx_stat_grerb_hi; 254962306a36Sopenharmony_ci u32 rx_stat_grfre_lo; 255062306a36Sopenharmony_ci u32 rx_stat_grfre_hi; 255162306a36Sopenharmony_ci u32 rx_stat_gripj_lo; 255262306a36Sopenharmony_ci u32 rx_stat_gripj_hi; 255362306a36Sopenharmony_ci}; 255462306a36Sopenharmony_ci 255562306a36Sopenharmony_cistruct bmac2_stats { 255662306a36Sopenharmony_ci u32 tx_stat_gtpk_lo; /* gtpok */ 255762306a36Sopenharmony_ci u32 tx_stat_gtpk_hi; /* gtpok */ 255862306a36Sopenharmony_ci u32 tx_stat_gtxpf_lo; /* gtpf */ 255962306a36Sopenharmony_ci u32 tx_stat_gtxpf_hi; /* gtpf */ 256062306a36Sopenharmony_ci u32 tx_stat_gtpp_lo; /* NEW BMAC2 */ 256162306a36Sopenharmony_ci u32 tx_stat_gtpp_hi; /* NEW BMAC2 */ 256262306a36Sopenharmony_ci u32 tx_stat_gtfcs_lo; 256362306a36Sopenharmony_ci u32 tx_stat_gtfcs_hi; 256462306a36Sopenharmony_ci u32 tx_stat_gtuca_lo; /* NEW BMAC2 */ 256562306a36Sopenharmony_ci u32 tx_stat_gtuca_hi; /* NEW BMAC2 */ 256662306a36Sopenharmony_ci u32 tx_stat_gtmca_lo; 256762306a36Sopenharmony_ci u32 tx_stat_gtmca_hi; 256862306a36Sopenharmony_ci u32 tx_stat_gtbca_lo; 256962306a36Sopenharmony_ci u32 tx_stat_gtbca_hi; 257062306a36Sopenharmony_ci u32 tx_stat_gtovr_lo; 257162306a36Sopenharmony_ci u32 tx_stat_gtovr_hi; 257262306a36Sopenharmony_ci u32 tx_stat_gtfrg_lo; 257362306a36Sopenharmony_ci u32 tx_stat_gtfrg_hi; 257462306a36Sopenharmony_ci u32 tx_stat_gtpkt1_lo; /* gtpkt */ 257562306a36Sopenharmony_ci u32 tx_stat_gtpkt1_hi; /* gtpkt */ 257662306a36Sopenharmony_ci u32 tx_stat_gt64_lo; 257762306a36Sopenharmony_ci u32 tx_stat_gt64_hi; 257862306a36Sopenharmony_ci u32 tx_stat_gt127_lo; 257962306a36Sopenharmony_ci u32 tx_stat_gt127_hi; 258062306a36Sopenharmony_ci u32 tx_stat_gt255_lo; 258162306a36Sopenharmony_ci u32 tx_stat_gt255_hi; 258262306a36Sopenharmony_ci u32 tx_stat_gt511_lo; 258362306a36Sopenharmony_ci u32 tx_stat_gt511_hi; 258462306a36Sopenharmony_ci u32 tx_stat_gt1023_lo; 258562306a36Sopenharmony_ci u32 tx_stat_gt1023_hi; 258662306a36Sopenharmony_ci u32 tx_stat_gt1518_lo; 258762306a36Sopenharmony_ci u32 tx_stat_gt1518_hi; 258862306a36Sopenharmony_ci u32 tx_stat_gt2047_lo; 258962306a36Sopenharmony_ci u32 tx_stat_gt2047_hi; 259062306a36Sopenharmony_ci u32 tx_stat_gt4095_lo; 259162306a36Sopenharmony_ci u32 tx_stat_gt4095_hi; 259262306a36Sopenharmony_ci u32 tx_stat_gt9216_lo; 259362306a36Sopenharmony_ci u32 tx_stat_gt9216_hi; 259462306a36Sopenharmony_ci u32 tx_stat_gt16383_lo; 259562306a36Sopenharmony_ci u32 tx_stat_gt16383_hi; 259662306a36Sopenharmony_ci u32 tx_stat_gtmax_lo; 259762306a36Sopenharmony_ci u32 tx_stat_gtmax_hi; 259862306a36Sopenharmony_ci u32 tx_stat_gtufl_lo; 259962306a36Sopenharmony_ci u32 tx_stat_gtufl_hi; 260062306a36Sopenharmony_ci u32 tx_stat_gterr_lo; 260162306a36Sopenharmony_ci u32 tx_stat_gterr_hi; 260262306a36Sopenharmony_ci u32 tx_stat_gtbyt_lo; 260362306a36Sopenharmony_ci u32 tx_stat_gtbyt_hi; 260462306a36Sopenharmony_ci 260562306a36Sopenharmony_ci u32 rx_stat_gr64_lo; 260662306a36Sopenharmony_ci u32 rx_stat_gr64_hi; 260762306a36Sopenharmony_ci u32 rx_stat_gr127_lo; 260862306a36Sopenharmony_ci u32 rx_stat_gr127_hi; 260962306a36Sopenharmony_ci u32 rx_stat_gr255_lo; 261062306a36Sopenharmony_ci u32 rx_stat_gr255_hi; 261162306a36Sopenharmony_ci u32 rx_stat_gr511_lo; 261262306a36Sopenharmony_ci u32 rx_stat_gr511_hi; 261362306a36Sopenharmony_ci u32 rx_stat_gr1023_lo; 261462306a36Sopenharmony_ci u32 rx_stat_gr1023_hi; 261562306a36Sopenharmony_ci u32 rx_stat_gr1518_lo; 261662306a36Sopenharmony_ci u32 rx_stat_gr1518_hi; 261762306a36Sopenharmony_ci u32 rx_stat_gr2047_lo; 261862306a36Sopenharmony_ci u32 rx_stat_gr2047_hi; 261962306a36Sopenharmony_ci u32 rx_stat_gr4095_lo; 262062306a36Sopenharmony_ci u32 rx_stat_gr4095_hi; 262162306a36Sopenharmony_ci u32 rx_stat_gr9216_lo; 262262306a36Sopenharmony_ci u32 rx_stat_gr9216_hi; 262362306a36Sopenharmony_ci u32 rx_stat_gr16383_lo; 262462306a36Sopenharmony_ci u32 rx_stat_gr16383_hi; 262562306a36Sopenharmony_ci u32 rx_stat_grmax_lo; 262662306a36Sopenharmony_ci u32 rx_stat_grmax_hi; 262762306a36Sopenharmony_ci u32 rx_stat_grpkt_lo; 262862306a36Sopenharmony_ci u32 rx_stat_grpkt_hi; 262962306a36Sopenharmony_ci u32 rx_stat_grfcs_lo; 263062306a36Sopenharmony_ci u32 rx_stat_grfcs_hi; 263162306a36Sopenharmony_ci u32 rx_stat_gruca_lo; 263262306a36Sopenharmony_ci u32 rx_stat_gruca_hi; 263362306a36Sopenharmony_ci u32 rx_stat_grmca_lo; 263462306a36Sopenharmony_ci u32 rx_stat_grmca_hi; 263562306a36Sopenharmony_ci u32 rx_stat_grbca_lo; 263662306a36Sopenharmony_ci u32 rx_stat_grbca_hi; 263762306a36Sopenharmony_ci u32 rx_stat_grxpf_lo; /* grpf */ 263862306a36Sopenharmony_ci u32 rx_stat_grxpf_hi; /* grpf */ 263962306a36Sopenharmony_ci u32 rx_stat_grpp_lo; 264062306a36Sopenharmony_ci u32 rx_stat_grpp_hi; 264162306a36Sopenharmony_ci u32 rx_stat_grxuo_lo; /* gruo */ 264262306a36Sopenharmony_ci u32 rx_stat_grxuo_hi; /* gruo */ 264362306a36Sopenharmony_ci u32 rx_stat_grjbr_lo; 264462306a36Sopenharmony_ci u32 rx_stat_grjbr_hi; 264562306a36Sopenharmony_ci u32 rx_stat_grovr_lo; 264662306a36Sopenharmony_ci u32 rx_stat_grovr_hi; 264762306a36Sopenharmony_ci u32 rx_stat_grxcf_lo; /* grcf */ 264862306a36Sopenharmony_ci u32 rx_stat_grxcf_hi; /* grcf */ 264962306a36Sopenharmony_ci u32 rx_stat_grflr_lo; 265062306a36Sopenharmony_ci u32 rx_stat_grflr_hi; 265162306a36Sopenharmony_ci u32 rx_stat_grpok_lo; 265262306a36Sopenharmony_ci u32 rx_stat_grpok_hi; 265362306a36Sopenharmony_ci u32 rx_stat_grmeg_lo; 265462306a36Sopenharmony_ci u32 rx_stat_grmeg_hi; 265562306a36Sopenharmony_ci u32 rx_stat_grmeb_lo; 265662306a36Sopenharmony_ci u32 rx_stat_grmeb_hi; 265762306a36Sopenharmony_ci u32 rx_stat_grbyt_lo; 265862306a36Sopenharmony_ci u32 rx_stat_grbyt_hi; 265962306a36Sopenharmony_ci u32 rx_stat_grund_lo; 266062306a36Sopenharmony_ci u32 rx_stat_grund_hi; 266162306a36Sopenharmony_ci u32 rx_stat_grfrg_lo; 266262306a36Sopenharmony_ci u32 rx_stat_grfrg_hi; 266362306a36Sopenharmony_ci u32 rx_stat_grerb_lo; /* grerrbyt */ 266462306a36Sopenharmony_ci u32 rx_stat_grerb_hi; /* grerrbyt */ 266562306a36Sopenharmony_ci u32 rx_stat_grfre_lo; /* grfrerr */ 266662306a36Sopenharmony_ci u32 rx_stat_grfre_hi; /* grfrerr */ 266762306a36Sopenharmony_ci u32 rx_stat_gripj_lo; 266862306a36Sopenharmony_ci u32 rx_stat_gripj_hi; 266962306a36Sopenharmony_ci}; 267062306a36Sopenharmony_ci 267162306a36Sopenharmony_cistruct mstat_stats { 267262306a36Sopenharmony_ci struct { 267362306a36Sopenharmony_ci /* OTE MSTAT on E3 has a bug where this register's contents are 267462306a36Sopenharmony_ci * actually tx_gtxpok + tx_gtxpf + (possibly)tx_gtxpp 267562306a36Sopenharmony_ci */ 267662306a36Sopenharmony_ci u32 tx_gtxpok_lo; 267762306a36Sopenharmony_ci u32 tx_gtxpok_hi; 267862306a36Sopenharmony_ci u32 tx_gtxpf_lo; 267962306a36Sopenharmony_ci u32 tx_gtxpf_hi; 268062306a36Sopenharmony_ci u32 tx_gtxpp_lo; 268162306a36Sopenharmony_ci u32 tx_gtxpp_hi; 268262306a36Sopenharmony_ci u32 tx_gtfcs_lo; 268362306a36Sopenharmony_ci u32 tx_gtfcs_hi; 268462306a36Sopenharmony_ci u32 tx_gtuca_lo; 268562306a36Sopenharmony_ci u32 tx_gtuca_hi; 268662306a36Sopenharmony_ci u32 tx_gtmca_lo; 268762306a36Sopenharmony_ci u32 tx_gtmca_hi; 268862306a36Sopenharmony_ci u32 tx_gtgca_lo; 268962306a36Sopenharmony_ci u32 tx_gtgca_hi; 269062306a36Sopenharmony_ci u32 tx_gtpkt_lo; 269162306a36Sopenharmony_ci u32 tx_gtpkt_hi; 269262306a36Sopenharmony_ci u32 tx_gt64_lo; 269362306a36Sopenharmony_ci u32 tx_gt64_hi; 269462306a36Sopenharmony_ci u32 tx_gt127_lo; 269562306a36Sopenharmony_ci u32 tx_gt127_hi; 269662306a36Sopenharmony_ci u32 tx_gt255_lo; 269762306a36Sopenharmony_ci u32 tx_gt255_hi; 269862306a36Sopenharmony_ci u32 tx_gt511_lo; 269962306a36Sopenharmony_ci u32 tx_gt511_hi; 270062306a36Sopenharmony_ci u32 tx_gt1023_lo; 270162306a36Sopenharmony_ci u32 tx_gt1023_hi; 270262306a36Sopenharmony_ci u32 tx_gt1518_lo; 270362306a36Sopenharmony_ci u32 tx_gt1518_hi; 270462306a36Sopenharmony_ci u32 tx_gt2047_lo; 270562306a36Sopenharmony_ci u32 tx_gt2047_hi; 270662306a36Sopenharmony_ci u32 tx_gt4095_lo; 270762306a36Sopenharmony_ci u32 tx_gt4095_hi; 270862306a36Sopenharmony_ci u32 tx_gt9216_lo; 270962306a36Sopenharmony_ci u32 tx_gt9216_hi; 271062306a36Sopenharmony_ci u32 tx_gt16383_lo; 271162306a36Sopenharmony_ci u32 tx_gt16383_hi; 271262306a36Sopenharmony_ci u32 tx_gtufl_lo; 271362306a36Sopenharmony_ci u32 tx_gtufl_hi; 271462306a36Sopenharmony_ci u32 tx_gterr_lo; 271562306a36Sopenharmony_ci u32 tx_gterr_hi; 271662306a36Sopenharmony_ci u32 tx_gtbyt_lo; 271762306a36Sopenharmony_ci u32 tx_gtbyt_hi; 271862306a36Sopenharmony_ci u32 tx_collisions_lo; 271962306a36Sopenharmony_ci u32 tx_collisions_hi; 272062306a36Sopenharmony_ci u32 tx_singlecollision_lo; 272162306a36Sopenharmony_ci u32 tx_singlecollision_hi; 272262306a36Sopenharmony_ci u32 tx_multiplecollisions_lo; 272362306a36Sopenharmony_ci u32 tx_multiplecollisions_hi; 272462306a36Sopenharmony_ci u32 tx_deferred_lo; 272562306a36Sopenharmony_ci u32 tx_deferred_hi; 272662306a36Sopenharmony_ci u32 tx_excessivecollisions_lo; 272762306a36Sopenharmony_ci u32 tx_excessivecollisions_hi; 272862306a36Sopenharmony_ci u32 tx_latecollisions_lo; 272962306a36Sopenharmony_ci u32 tx_latecollisions_hi; 273062306a36Sopenharmony_ci } stats_tx; 273162306a36Sopenharmony_ci 273262306a36Sopenharmony_ci struct { 273362306a36Sopenharmony_ci u32 rx_gr64_lo; 273462306a36Sopenharmony_ci u32 rx_gr64_hi; 273562306a36Sopenharmony_ci u32 rx_gr127_lo; 273662306a36Sopenharmony_ci u32 rx_gr127_hi; 273762306a36Sopenharmony_ci u32 rx_gr255_lo; 273862306a36Sopenharmony_ci u32 rx_gr255_hi; 273962306a36Sopenharmony_ci u32 rx_gr511_lo; 274062306a36Sopenharmony_ci u32 rx_gr511_hi; 274162306a36Sopenharmony_ci u32 rx_gr1023_lo; 274262306a36Sopenharmony_ci u32 rx_gr1023_hi; 274362306a36Sopenharmony_ci u32 rx_gr1518_lo; 274462306a36Sopenharmony_ci u32 rx_gr1518_hi; 274562306a36Sopenharmony_ci u32 rx_gr2047_lo; 274662306a36Sopenharmony_ci u32 rx_gr2047_hi; 274762306a36Sopenharmony_ci u32 rx_gr4095_lo; 274862306a36Sopenharmony_ci u32 rx_gr4095_hi; 274962306a36Sopenharmony_ci u32 rx_gr9216_lo; 275062306a36Sopenharmony_ci u32 rx_gr9216_hi; 275162306a36Sopenharmony_ci u32 rx_gr16383_lo; 275262306a36Sopenharmony_ci u32 rx_gr16383_hi; 275362306a36Sopenharmony_ci u32 rx_grpkt_lo; 275462306a36Sopenharmony_ci u32 rx_grpkt_hi; 275562306a36Sopenharmony_ci u32 rx_grfcs_lo; 275662306a36Sopenharmony_ci u32 rx_grfcs_hi; 275762306a36Sopenharmony_ci u32 rx_gruca_lo; 275862306a36Sopenharmony_ci u32 rx_gruca_hi; 275962306a36Sopenharmony_ci u32 rx_grmca_lo; 276062306a36Sopenharmony_ci u32 rx_grmca_hi; 276162306a36Sopenharmony_ci u32 rx_grbca_lo; 276262306a36Sopenharmony_ci u32 rx_grbca_hi; 276362306a36Sopenharmony_ci u32 rx_grxpf_lo; 276462306a36Sopenharmony_ci u32 rx_grxpf_hi; 276562306a36Sopenharmony_ci u32 rx_grxpp_lo; 276662306a36Sopenharmony_ci u32 rx_grxpp_hi; 276762306a36Sopenharmony_ci u32 rx_grxuo_lo; 276862306a36Sopenharmony_ci u32 rx_grxuo_hi; 276962306a36Sopenharmony_ci u32 rx_grovr_lo; 277062306a36Sopenharmony_ci u32 rx_grovr_hi; 277162306a36Sopenharmony_ci u32 rx_grxcf_lo; 277262306a36Sopenharmony_ci u32 rx_grxcf_hi; 277362306a36Sopenharmony_ci u32 rx_grflr_lo; 277462306a36Sopenharmony_ci u32 rx_grflr_hi; 277562306a36Sopenharmony_ci u32 rx_grpok_lo; 277662306a36Sopenharmony_ci u32 rx_grpok_hi; 277762306a36Sopenharmony_ci u32 rx_grbyt_lo; 277862306a36Sopenharmony_ci u32 rx_grbyt_hi; 277962306a36Sopenharmony_ci u32 rx_grund_lo; 278062306a36Sopenharmony_ci u32 rx_grund_hi; 278162306a36Sopenharmony_ci u32 rx_grfrg_lo; 278262306a36Sopenharmony_ci u32 rx_grfrg_hi; 278362306a36Sopenharmony_ci u32 rx_grerb_lo; 278462306a36Sopenharmony_ci u32 rx_grerb_hi; 278562306a36Sopenharmony_ci u32 rx_grfre_lo; 278662306a36Sopenharmony_ci u32 rx_grfre_hi; 278762306a36Sopenharmony_ci 278862306a36Sopenharmony_ci u32 rx_alignmenterrors_lo; 278962306a36Sopenharmony_ci u32 rx_alignmenterrors_hi; 279062306a36Sopenharmony_ci u32 rx_falsecarrier_lo; 279162306a36Sopenharmony_ci u32 rx_falsecarrier_hi; 279262306a36Sopenharmony_ci u32 rx_llfcmsgcnt_lo; 279362306a36Sopenharmony_ci u32 rx_llfcmsgcnt_hi; 279462306a36Sopenharmony_ci } stats_rx; 279562306a36Sopenharmony_ci}; 279662306a36Sopenharmony_ci 279762306a36Sopenharmony_ciunion mac_stats { 279862306a36Sopenharmony_ci struct emac_stats emac_stats; 279962306a36Sopenharmony_ci struct bmac1_stats bmac1_stats; 280062306a36Sopenharmony_ci struct bmac2_stats bmac2_stats; 280162306a36Sopenharmony_ci struct mstat_stats mstat_stats; 280262306a36Sopenharmony_ci}; 280362306a36Sopenharmony_ci 280462306a36Sopenharmony_ci 280562306a36Sopenharmony_cistruct mac_stx { 280662306a36Sopenharmony_ci /* in_bad_octets */ 280762306a36Sopenharmony_ci u32 rx_stat_ifhcinbadoctets_hi; 280862306a36Sopenharmony_ci u32 rx_stat_ifhcinbadoctets_lo; 280962306a36Sopenharmony_ci 281062306a36Sopenharmony_ci /* out_bad_octets */ 281162306a36Sopenharmony_ci u32 tx_stat_ifhcoutbadoctets_hi; 281262306a36Sopenharmony_ci u32 tx_stat_ifhcoutbadoctets_lo; 281362306a36Sopenharmony_ci 281462306a36Sopenharmony_ci /* crc_receive_errors */ 281562306a36Sopenharmony_ci u32 rx_stat_dot3statsfcserrors_hi; 281662306a36Sopenharmony_ci u32 rx_stat_dot3statsfcserrors_lo; 281762306a36Sopenharmony_ci /* alignment_errors */ 281862306a36Sopenharmony_ci u32 rx_stat_dot3statsalignmenterrors_hi; 281962306a36Sopenharmony_ci u32 rx_stat_dot3statsalignmenterrors_lo; 282062306a36Sopenharmony_ci /* carrier_sense_errors */ 282162306a36Sopenharmony_ci u32 rx_stat_dot3statscarriersenseerrors_hi; 282262306a36Sopenharmony_ci u32 rx_stat_dot3statscarriersenseerrors_lo; 282362306a36Sopenharmony_ci /* false_carrier_detections */ 282462306a36Sopenharmony_ci u32 rx_stat_falsecarriererrors_hi; 282562306a36Sopenharmony_ci u32 rx_stat_falsecarriererrors_lo; 282662306a36Sopenharmony_ci 282762306a36Sopenharmony_ci /* runt_packets_received */ 282862306a36Sopenharmony_ci u32 rx_stat_etherstatsundersizepkts_hi; 282962306a36Sopenharmony_ci u32 rx_stat_etherstatsundersizepkts_lo; 283062306a36Sopenharmony_ci /* jabber_packets_received */ 283162306a36Sopenharmony_ci u32 rx_stat_dot3statsframestoolong_hi; 283262306a36Sopenharmony_ci u32 rx_stat_dot3statsframestoolong_lo; 283362306a36Sopenharmony_ci 283462306a36Sopenharmony_ci /* error_runt_packets_received */ 283562306a36Sopenharmony_ci u32 rx_stat_etherstatsfragments_hi; 283662306a36Sopenharmony_ci u32 rx_stat_etherstatsfragments_lo; 283762306a36Sopenharmony_ci /* error_jabber_packets_received */ 283862306a36Sopenharmony_ci u32 rx_stat_etherstatsjabbers_hi; 283962306a36Sopenharmony_ci u32 rx_stat_etherstatsjabbers_lo; 284062306a36Sopenharmony_ci 284162306a36Sopenharmony_ci /* control_frames_received */ 284262306a36Sopenharmony_ci u32 rx_stat_maccontrolframesreceived_hi; 284362306a36Sopenharmony_ci u32 rx_stat_maccontrolframesreceived_lo; 284462306a36Sopenharmony_ci u32 rx_stat_mac_xpf_hi; 284562306a36Sopenharmony_ci u32 rx_stat_mac_xpf_lo; 284662306a36Sopenharmony_ci u32 rx_stat_mac_xcf_hi; 284762306a36Sopenharmony_ci u32 rx_stat_mac_xcf_lo; 284862306a36Sopenharmony_ci 284962306a36Sopenharmony_ci /* xoff_state_entered */ 285062306a36Sopenharmony_ci u32 rx_stat_xoffstateentered_hi; 285162306a36Sopenharmony_ci u32 rx_stat_xoffstateentered_lo; 285262306a36Sopenharmony_ci /* pause_xon_frames_received */ 285362306a36Sopenharmony_ci u32 rx_stat_xonpauseframesreceived_hi; 285462306a36Sopenharmony_ci u32 rx_stat_xonpauseframesreceived_lo; 285562306a36Sopenharmony_ci /* pause_xoff_frames_received */ 285662306a36Sopenharmony_ci u32 rx_stat_xoffpauseframesreceived_hi; 285762306a36Sopenharmony_ci u32 rx_stat_xoffpauseframesreceived_lo; 285862306a36Sopenharmony_ci /* pause_xon_frames_transmitted */ 285962306a36Sopenharmony_ci u32 tx_stat_outxonsent_hi; 286062306a36Sopenharmony_ci u32 tx_stat_outxonsent_lo; 286162306a36Sopenharmony_ci /* pause_xoff_frames_transmitted */ 286262306a36Sopenharmony_ci u32 tx_stat_outxoffsent_hi; 286362306a36Sopenharmony_ci u32 tx_stat_outxoffsent_lo; 286462306a36Sopenharmony_ci /* flow_control_done */ 286562306a36Sopenharmony_ci u32 tx_stat_flowcontroldone_hi; 286662306a36Sopenharmony_ci u32 tx_stat_flowcontroldone_lo; 286762306a36Sopenharmony_ci 286862306a36Sopenharmony_ci /* ether_stats_collisions */ 286962306a36Sopenharmony_ci u32 tx_stat_etherstatscollisions_hi; 287062306a36Sopenharmony_ci u32 tx_stat_etherstatscollisions_lo; 287162306a36Sopenharmony_ci /* single_collision_transmit_frames */ 287262306a36Sopenharmony_ci u32 tx_stat_dot3statssinglecollisionframes_hi; 287362306a36Sopenharmony_ci u32 tx_stat_dot3statssinglecollisionframes_lo; 287462306a36Sopenharmony_ci /* multiple_collision_transmit_frames */ 287562306a36Sopenharmony_ci u32 tx_stat_dot3statsmultiplecollisionframes_hi; 287662306a36Sopenharmony_ci u32 tx_stat_dot3statsmultiplecollisionframes_lo; 287762306a36Sopenharmony_ci /* deferred_transmissions */ 287862306a36Sopenharmony_ci u32 tx_stat_dot3statsdeferredtransmissions_hi; 287962306a36Sopenharmony_ci u32 tx_stat_dot3statsdeferredtransmissions_lo; 288062306a36Sopenharmony_ci /* excessive_collision_frames */ 288162306a36Sopenharmony_ci u32 tx_stat_dot3statsexcessivecollisions_hi; 288262306a36Sopenharmony_ci u32 tx_stat_dot3statsexcessivecollisions_lo; 288362306a36Sopenharmony_ci /* late_collision_frames */ 288462306a36Sopenharmony_ci u32 tx_stat_dot3statslatecollisions_hi; 288562306a36Sopenharmony_ci u32 tx_stat_dot3statslatecollisions_lo; 288662306a36Sopenharmony_ci 288762306a36Sopenharmony_ci /* frames_transmitted_64_bytes */ 288862306a36Sopenharmony_ci u32 tx_stat_etherstatspkts64octets_hi; 288962306a36Sopenharmony_ci u32 tx_stat_etherstatspkts64octets_lo; 289062306a36Sopenharmony_ci /* frames_transmitted_65_127_bytes */ 289162306a36Sopenharmony_ci u32 tx_stat_etherstatspkts65octetsto127octets_hi; 289262306a36Sopenharmony_ci u32 tx_stat_etherstatspkts65octetsto127octets_lo; 289362306a36Sopenharmony_ci /* frames_transmitted_128_255_bytes */ 289462306a36Sopenharmony_ci u32 tx_stat_etherstatspkts128octetsto255octets_hi; 289562306a36Sopenharmony_ci u32 tx_stat_etherstatspkts128octetsto255octets_lo; 289662306a36Sopenharmony_ci /* frames_transmitted_256_511_bytes */ 289762306a36Sopenharmony_ci u32 tx_stat_etherstatspkts256octetsto511octets_hi; 289862306a36Sopenharmony_ci u32 tx_stat_etherstatspkts256octetsto511octets_lo; 289962306a36Sopenharmony_ci /* frames_transmitted_512_1023_bytes */ 290062306a36Sopenharmony_ci u32 tx_stat_etherstatspkts512octetsto1023octets_hi; 290162306a36Sopenharmony_ci u32 tx_stat_etherstatspkts512octetsto1023octets_lo; 290262306a36Sopenharmony_ci /* frames_transmitted_1024_1522_bytes */ 290362306a36Sopenharmony_ci u32 tx_stat_etherstatspkts1024octetsto1522octets_hi; 290462306a36Sopenharmony_ci u32 tx_stat_etherstatspkts1024octetsto1522octets_lo; 290562306a36Sopenharmony_ci /* frames_transmitted_1523_9022_bytes */ 290662306a36Sopenharmony_ci u32 tx_stat_etherstatspktsover1522octets_hi; 290762306a36Sopenharmony_ci u32 tx_stat_etherstatspktsover1522octets_lo; 290862306a36Sopenharmony_ci u32 tx_stat_mac_2047_hi; 290962306a36Sopenharmony_ci u32 tx_stat_mac_2047_lo; 291062306a36Sopenharmony_ci u32 tx_stat_mac_4095_hi; 291162306a36Sopenharmony_ci u32 tx_stat_mac_4095_lo; 291262306a36Sopenharmony_ci u32 tx_stat_mac_9216_hi; 291362306a36Sopenharmony_ci u32 tx_stat_mac_9216_lo; 291462306a36Sopenharmony_ci u32 tx_stat_mac_16383_hi; 291562306a36Sopenharmony_ci u32 tx_stat_mac_16383_lo; 291662306a36Sopenharmony_ci 291762306a36Sopenharmony_ci /* internal_mac_transmit_errors */ 291862306a36Sopenharmony_ci u32 tx_stat_dot3statsinternalmactransmiterrors_hi; 291962306a36Sopenharmony_ci u32 tx_stat_dot3statsinternalmactransmiterrors_lo; 292062306a36Sopenharmony_ci 292162306a36Sopenharmony_ci /* if_out_discards */ 292262306a36Sopenharmony_ci u32 tx_stat_mac_ufl_hi; 292362306a36Sopenharmony_ci u32 tx_stat_mac_ufl_lo; 292462306a36Sopenharmony_ci}; 292562306a36Sopenharmony_ci 292662306a36Sopenharmony_ci 292762306a36Sopenharmony_ci#define MAC_STX_IDX_MAX 2 292862306a36Sopenharmony_ci 292962306a36Sopenharmony_cistruct host_port_stats { 293062306a36Sopenharmony_ci u32 host_port_stats_counter; 293162306a36Sopenharmony_ci 293262306a36Sopenharmony_ci struct mac_stx mac_stx[MAC_STX_IDX_MAX]; 293362306a36Sopenharmony_ci 293462306a36Sopenharmony_ci u32 brb_drop_hi; 293562306a36Sopenharmony_ci u32 brb_drop_lo; 293662306a36Sopenharmony_ci 293762306a36Sopenharmony_ci u32 not_used; /* obsolete */ 293862306a36Sopenharmony_ci u32 pfc_frames_tx_hi; 293962306a36Sopenharmony_ci u32 pfc_frames_tx_lo; 294062306a36Sopenharmony_ci u32 pfc_frames_rx_hi; 294162306a36Sopenharmony_ci u32 pfc_frames_rx_lo; 294262306a36Sopenharmony_ci 294362306a36Sopenharmony_ci u32 eee_lpi_count_hi; 294462306a36Sopenharmony_ci u32 eee_lpi_count_lo; 294562306a36Sopenharmony_ci}; 294662306a36Sopenharmony_ci 294762306a36Sopenharmony_ci 294862306a36Sopenharmony_cistruct host_func_stats { 294962306a36Sopenharmony_ci u32 host_func_stats_start; 295062306a36Sopenharmony_ci 295162306a36Sopenharmony_ci u32 total_bytes_received_hi; 295262306a36Sopenharmony_ci u32 total_bytes_received_lo; 295362306a36Sopenharmony_ci 295462306a36Sopenharmony_ci u32 total_bytes_transmitted_hi; 295562306a36Sopenharmony_ci u32 total_bytes_transmitted_lo; 295662306a36Sopenharmony_ci 295762306a36Sopenharmony_ci u32 total_unicast_packets_received_hi; 295862306a36Sopenharmony_ci u32 total_unicast_packets_received_lo; 295962306a36Sopenharmony_ci 296062306a36Sopenharmony_ci u32 total_multicast_packets_received_hi; 296162306a36Sopenharmony_ci u32 total_multicast_packets_received_lo; 296262306a36Sopenharmony_ci 296362306a36Sopenharmony_ci u32 total_broadcast_packets_received_hi; 296462306a36Sopenharmony_ci u32 total_broadcast_packets_received_lo; 296562306a36Sopenharmony_ci 296662306a36Sopenharmony_ci u32 total_unicast_packets_transmitted_hi; 296762306a36Sopenharmony_ci u32 total_unicast_packets_transmitted_lo; 296862306a36Sopenharmony_ci 296962306a36Sopenharmony_ci u32 total_multicast_packets_transmitted_hi; 297062306a36Sopenharmony_ci u32 total_multicast_packets_transmitted_lo; 297162306a36Sopenharmony_ci 297262306a36Sopenharmony_ci u32 total_broadcast_packets_transmitted_hi; 297362306a36Sopenharmony_ci u32 total_broadcast_packets_transmitted_lo; 297462306a36Sopenharmony_ci 297562306a36Sopenharmony_ci u32 valid_bytes_received_hi; 297662306a36Sopenharmony_ci u32 valid_bytes_received_lo; 297762306a36Sopenharmony_ci 297862306a36Sopenharmony_ci u32 host_func_stats_end; 297962306a36Sopenharmony_ci}; 298062306a36Sopenharmony_ci 298162306a36Sopenharmony_ci/* VIC definitions */ 298262306a36Sopenharmony_ci#define VICSTATST_UIF_INDEX 2 298362306a36Sopenharmony_ci 298462306a36Sopenharmony_ci 298562306a36Sopenharmony_ci/* stats collected for afex. 298662306a36Sopenharmony_ci * NOTE: structure is exactly as expected to be received by the switch. 298762306a36Sopenharmony_ci * order must remain exactly as is unless protocol changes ! 298862306a36Sopenharmony_ci */ 298962306a36Sopenharmony_cistruct afex_stats { 299062306a36Sopenharmony_ci u32 tx_unicast_frames_hi; 299162306a36Sopenharmony_ci u32 tx_unicast_frames_lo; 299262306a36Sopenharmony_ci u32 tx_unicast_bytes_hi; 299362306a36Sopenharmony_ci u32 tx_unicast_bytes_lo; 299462306a36Sopenharmony_ci u32 tx_multicast_frames_hi; 299562306a36Sopenharmony_ci u32 tx_multicast_frames_lo; 299662306a36Sopenharmony_ci u32 tx_multicast_bytes_hi; 299762306a36Sopenharmony_ci u32 tx_multicast_bytes_lo; 299862306a36Sopenharmony_ci u32 tx_broadcast_frames_hi; 299962306a36Sopenharmony_ci u32 tx_broadcast_frames_lo; 300062306a36Sopenharmony_ci u32 tx_broadcast_bytes_hi; 300162306a36Sopenharmony_ci u32 tx_broadcast_bytes_lo; 300262306a36Sopenharmony_ci u32 tx_frames_discarded_hi; 300362306a36Sopenharmony_ci u32 tx_frames_discarded_lo; 300462306a36Sopenharmony_ci u32 tx_frames_dropped_hi; 300562306a36Sopenharmony_ci u32 tx_frames_dropped_lo; 300662306a36Sopenharmony_ci 300762306a36Sopenharmony_ci u32 rx_unicast_frames_hi; 300862306a36Sopenharmony_ci u32 rx_unicast_frames_lo; 300962306a36Sopenharmony_ci u32 rx_unicast_bytes_hi; 301062306a36Sopenharmony_ci u32 rx_unicast_bytes_lo; 301162306a36Sopenharmony_ci u32 rx_multicast_frames_hi; 301262306a36Sopenharmony_ci u32 rx_multicast_frames_lo; 301362306a36Sopenharmony_ci u32 rx_multicast_bytes_hi; 301462306a36Sopenharmony_ci u32 rx_multicast_bytes_lo; 301562306a36Sopenharmony_ci u32 rx_broadcast_frames_hi; 301662306a36Sopenharmony_ci u32 rx_broadcast_frames_lo; 301762306a36Sopenharmony_ci u32 rx_broadcast_bytes_hi; 301862306a36Sopenharmony_ci u32 rx_broadcast_bytes_lo; 301962306a36Sopenharmony_ci u32 rx_frames_discarded_hi; 302062306a36Sopenharmony_ci u32 rx_frames_discarded_lo; 302162306a36Sopenharmony_ci u32 rx_frames_dropped_hi; 302262306a36Sopenharmony_ci u32 rx_frames_dropped_lo; 302362306a36Sopenharmony_ci}; 302462306a36Sopenharmony_ci 302562306a36Sopenharmony_ci#define BCM_5710_FW_MAJOR_VERSION 7 302662306a36Sopenharmony_ci#define BCM_5710_FW_MINOR_VERSION 13 302762306a36Sopenharmony_ci#define BCM_5710_FW_REVISION_VERSION 21 302862306a36Sopenharmony_ci#define BCM_5710_FW_REVISION_VERSION_V15 15 302962306a36Sopenharmony_ci#define BCM_5710_FW_ENGINEERING_VERSION 0 303062306a36Sopenharmony_ci#define BCM_5710_FW_COMPILE_FLAGS 1 303162306a36Sopenharmony_ci 303262306a36Sopenharmony_ci 303362306a36Sopenharmony_ci/* 303462306a36Sopenharmony_ci * attention bits 303562306a36Sopenharmony_ci */ 303662306a36Sopenharmony_cistruct atten_sp_status_block { 303762306a36Sopenharmony_ci __le32 attn_bits; 303862306a36Sopenharmony_ci __le32 attn_bits_ack; 303962306a36Sopenharmony_ci u8 status_block_id; 304062306a36Sopenharmony_ci u8 reserved0; 304162306a36Sopenharmony_ci __le16 attn_bits_index; 304262306a36Sopenharmony_ci __le32 reserved1; 304362306a36Sopenharmony_ci}; 304462306a36Sopenharmony_ci 304562306a36Sopenharmony_ci 304662306a36Sopenharmony_ci/* 304762306a36Sopenharmony_ci * The eth aggregative context of Cstorm 304862306a36Sopenharmony_ci */ 304962306a36Sopenharmony_cistruct cstorm_eth_ag_context { 305062306a36Sopenharmony_ci u32 __reserved0[10]; 305162306a36Sopenharmony_ci}; 305262306a36Sopenharmony_ci 305362306a36Sopenharmony_ci 305462306a36Sopenharmony_ci/* 305562306a36Sopenharmony_ci * dmae command structure 305662306a36Sopenharmony_ci */ 305762306a36Sopenharmony_cistruct dmae_command { 305862306a36Sopenharmony_ci u32 opcode; 305962306a36Sopenharmony_ci#define DMAE_COMMAND_SRC (0x1<<0) 306062306a36Sopenharmony_ci#define DMAE_COMMAND_SRC_SHIFT 0 306162306a36Sopenharmony_ci#define DMAE_COMMAND_DST (0x3<<1) 306262306a36Sopenharmony_ci#define DMAE_COMMAND_DST_SHIFT 1 306362306a36Sopenharmony_ci#define DMAE_COMMAND_C_DST (0x1<<3) 306462306a36Sopenharmony_ci#define DMAE_COMMAND_C_DST_SHIFT 3 306562306a36Sopenharmony_ci#define DMAE_COMMAND_C_TYPE_ENABLE (0x1<<4) 306662306a36Sopenharmony_ci#define DMAE_COMMAND_C_TYPE_ENABLE_SHIFT 4 306762306a36Sopenharmony_ci#define DMAE_COMMAND_C_TYPE_CRC_ENABLE (0x1<<5) 306862306a36Sopenharmony_ci#define DMAE_COMMAND_C_TYPE_CRC_ENABLE_SHIFT 5 306962306a36Sopenharmony_ci#define DMAE_COMMAND_C_TYPE_CRC_OFFSET (0x7<<6) 307062306a36Sopenharmony_ci#define DMAE_COMMAND_C_TYPE_CRC_OFFSET_SHIFT 6 307162306a36Sopenharmony_ci#define DMAE_COMMAND_ENDIANITY (0x3<<9) 307262306a36Sopenharmony_ci#define DMAE_COMMAND_ENDIANITY_SHIFT 9 307362306a36Sopenharmony_ci#define DMAE_COMMAND_PORT (0x1<<11) 307462306a36Sopenharmony_ci#define DMAE_COMMAND_PORT_SHIFT 11 307562306a36Sopenharmony_ci#define DMAE_COMMAND_CRC_RESET (0x1<<12) 307662306a36Sopenharmony_ci#define DMAE_COMMAND_CRC_RESET_SHIFT 12 307762306a36Sopenharmony_ci#define DMAE_COMMAND_SRC_RESET (0x1<<13) 307862306a36Sopenharmony_ci#define DMAE_COMMAND_SRC_RESET_SHIFT 13 307962306a36Sopenharmony_ci#define DMAE_COMMAND_DST_RESET (0x1<<14) 308062306a36Sopenharmony_ci#define DMAE_COMMAND_DST_RESET_SHIFT 14 308162306a36Sopenharmony_ci#define DMAE_COMMAND_E1HVN (0x3<<15) 308262306a36Sopenharmony_ci#define DMAE_COMMAND_E1HVN_SHIFT 15 308362306a36Sopenharmony_ci#define DMAE_COMMAND_DST_VN (0x3<<17) 308462306a36Sopenharmony_ci#define DMAE_COMMAND_DST_VN_SHIFT 17 308562306a36Sopenharmony_ci#define DMAE_COMMAND_C_FUNC (0x1<<19) 308662306a36Sopenharmony_ci#define DMAE_COMMAND_C_FUNC_SHIFT 19 308762306a36Sopenharmony_ci#define DMAE_COMMAND_ERR_POLICY (0x3<<20) 308862306a36Sopenharmony_ci#define DMAE_COMMAND_ERR_POLICY_SHIFT 20 308962306a36Sopenharmony_ci#define DMAE_COMMAND_RESERVED0 (0x3FF<<22) 309062306a36Sopenharmony_ci#define DMAE_COMMAND_RESERVED0_SHIFT 22 309162306a36Sopenharmony_ci u32 src_addr_lo; 309262306a36Sopenharmony_ci u32 src_addr_hi; 309362306a36Sopenharmony_ci u32 dst_addr_lo; 309462306a36Sopenharmony_ci u32 dst_addr_hi; 309562306a36Sopenharmony_ci#if defined(__BIG_ENDIAN) 309662306a36Sopenharmony_ci u16 opcode_iov; 309762306a36Sopenharmony_ci#define DMAE_COMMAND_SRC_VFID (0x3F<<0) 309862306a36Sopenharmony_ci#define DMAE_COMMAND_SRC_VFID_SHIFT 0 309962306a36Sopenharmony_ci#define DMAE_COMMAND_SRC_VFPF (0x1<<6) 310062306a36Sopenharmony_ci#define DMAE_COMMAND_SRC_VFPF_SHIFT 6 310162306a36Sopenharmony_ci#define DMAE_COMMAND_RESERVED1 (0x1<<7) 310262306a36Sopenharmony_ci#define DMAE_COMMAND_RESERVED1_SHIFT 7 310362306a36Sopenharmony_ci#define DMAE_COMMAND_DST_VFID (0x3F<<8) 310462306a36Sopenharmony_ci#define DMAE_COMMAND_DST_VFID_SHIFT 8 310562306a36Sopenharmony_ci#define DMAE_COMMAND_DST_VFPF (0x1<<14) 310662306a36Sopenharmony_ci#define DMAE_COMMAND_DST_VFPF_SHIFT 14 310762306a36Sopenharmony_ci#define DMAE_COMMAND_RESERVED2 (0x1<<15) 310862306a36Sopenharmony_ci#define DMAE_COMMAND_RESERVED2_SHIFT 15 310962306a36Sopenharmony_ci u16 len; 311062306a36Sopenharmony_ci#elif defined(__LITTLE_ENDIAN) 311162306a36Sopenharmony_ci u16 len; 311262306a36Sopenharmony_ci u16 opcode_iov; 311362306a36Sopenharmony_ci#define DMAE_COMMAND_SRC_VFID (0x3F<<0) 311462306a36Sopenharmony_ci#define DMAE_COMMAND_SRC_VFID_SHIFT 0 311562306a36Sopenharmony_ci#define DMAE_COMMAND_SRC_VFPF (0x1<<6) 311662306a36Sopenharmony_ci#define DMAE_COMMAND_SRC_VFPF_SHIFT 6 311762306a36Sopenharmony_ci#define DMAE_COMMAND_RESERVED1 (0x1<<7) 311862306a36Sopenharmony_ci#define DMAE_COMMAND_RESERVED1_SHIFT 7 311962306a36Sopenharmony_ci#define DMAE_COMMAND_DST_VFID (0x3F<<8) 312062306a36Sopenharmony_ci#define DMAE_COMMAND_DST_VFID_SHIFT 8 312162306a36Sopenharmony_ci#define DMAE_COMMAND_DST_VFPF (0x1<<14) 312262306a36Sopenharmony_ci#define DMAE_COMMAND_DST_VFPF_SHIFT 14 312362306a36Sopenharmony_ci#define DMAE_COMMAND_RESERVED2 (0x1<<15) 312462306a36Sopenharmony_ci#define DMAE_COMMAND_RESERVED2_SHIFT 15 312562306a36Sopenharmony_ci#endif 312662306a36Sopenharmony_ci u32 comp_addr_lo; 312762306a36Sopenharmony_ci u32 comp_addr_hi; 312862306a36Sopenharmony_ci u32 comp_val; 312962306a36Sopenharmony_ci u32 crc32; 313062306a36Sopenharmony_ci u32 crc32_c; 313162306a36Sopenharmony_ci#if defined(__BIG_ENDIAN) 313262306a36Sopenharmony_ci u16 crc16_c; 313362306a36Sopenharmony_ci u16 crc16; 313462306a36Sopenharmony_ci#elif defined(__LITTLE_ENDIAN) 313562306a36Sopenharmony_ci u16 crc16; 313662306a36Sopenharmony_ci u16 crc16_c; 313762306a36Sopenharmony_ci#endif 313862306a36Sopenharmony_ci#if defined(__BIG_ENDIAN) 313962306a36Sopenharmony_ci u16 reserved3; 314062306a36Sopenharmony_ci u16 crc_t10; 314162306a36Sopenharmony_ci#elif defined(__LITTLE_ENDIAN) 314262306a36Sopenharmony_ci u16 crc_t10; 314362306a36Sopenharmony_ci u16 reserved3; 314462306a36Sopenharmony_ci#endif 314562306a36Sopenharmony_ci#if defined(__BIG_ENDIAN) 314662306a36Sopenharmony_ci u16 xsum8; 314762306a36Sopenharmony_ci u16 xsum16; 314862306a36Sopenharmony_ci#elif defined(__LITTLE_ENDIAN) 314962306a36Sopenharmony_ci u16 xsum16; 315062306a36Sopenharmony_ci u16 xsum8; 315162306a36Sopenharmony_ci#endif 315262306a36Sopenharmony_ci}; 315362306a36Sopenharmony_ci 315462306a36Sopenharmony_ci 315562306a36Sopenharmony_ci/* 315662306a36Sopenharmony_ci * common data for all protocols 315762306a36Sopenharmony_ci */ 315862306a36Sopenharmony_cistruct doorbell_hdr { 315962306a36Sopenharmony_ci u8 header; 316062306a36Sopenharmony_ci#define DOORBELL_HDR_RX (0x1<<0) 316162306a36Sopenharmony_ci#define DOORBELL_HDR_RX_SHIFT 0 316262306a36Sopenharmony_ci#define DOORBELL_HDR_DB_TYPE (0x1<<1) 316362306a36Sopenharmony_ci#define DOORBELL_HDR_DB_TYPE_SHIFT 1 316462306a36Sopenharmony_ci#define DOORBELL_HDR_DPM_SIZE (0x3<<2) 316562306a36Sopenharmony_ci#define DOORBELL_HDR_DPM_SIZE_SHIFT 2 316662306a36Sopenharmony_ci#define DOORBELL_HDR_CONN_TYPE (0xF<<4) 316762306a36Sopenharmony_ci#define DOORBELL_HDR_CONN_TYPE_SHIFT 4 316862306a36Sopenharmony_ci}; 316962306a36Sopenharmony_ci 317062306a36Sopenharmony_ci/* 317162306a36Sopenharmony_ci * Ethernet doorbell 317262306a36Sopenharmony_ci */ 317362306a36Sopenharmony_cistruct eth_tx_doorbell { 317462306a36Sopenharmony_ci#if defined(__BIG_ENDIAN) 317562306a36Sopenharmony_ci u16 npackets; 317662306a36Sopenharmony_ci u8 params; 317762306a36Sopenharmony_ci#define ETH_TX_DOORBELL_NUM_BDS (0x3F<<0) 317862306a36Sopenharmony_ci#define ETH_TX_DOORBELL_NUM_BDS_SHIFT 0 317962306a36Sopenharmony_ci#define ETH_TX_DOORBELL_RESERVED_TX_FIN_FLAG (0x1<<6) 318062306a36Sopenharmony_ci#define ETH_TX_DOORBELL_RESERVED_TX_FIN_FLAG_SHIFT 6 318162306a36Sopenharmony_ci#define ETH_TX_DOORBELL_SPARE (0x1<<7) 318262306a36Sopenharmony_ci#define ETH_TX_DOORBELL_SPARE_SHIFT 7 318362306a36Sopenharmony_ci struct doorbell_hdr hdr; 318462306a36Sopenharmony_ci#elif defined(__LITTLE_ENDIAN) 318562306a36Sopenharmony_ci struct doorbell_hdr hdr; 318662306a36Sopenharmony_ci u8 params; 318762306a36Sopenharmony_ci#define ETH_TX_DOORBELL_NUM_BDS (0x3F<<0) 318862306a36Sopenharmony_ci#define ETH_TX_DOORBELL_NUM_BDS_SHIFT 0 318962306a36Sopenharmony_ci#define ETH_TX_DOORBELL_RESERVED_TX_FIN_FLAG (0x1<<6) 319062306a36Sopenharmony_ci#define ETH_TX_DOORBELL_RESERVED_TX_FIN_FLAG_SHIFT 6 319162306a36Sopenharmony_ci#define ETH_TX_DOORBELL_SPARE (0x1<<7) 319262306a36Sopenharmony_ci#define ETH_TX_DOORBELL_SPARE_SHIFT 7 319362306a36Sopenharmony_ci u16 npackets; 319462306a36Sopenharmony_ci#endif 319562306a36Sopenharmony_ci}; 319662306a36Sopenharmony_ci 319762306a36Sopenharmony_ci 319862306a36Sopenharmony_ci/* 319962306a36Sopenharmony_ci * 3 lines. status block 320062306a36Sopenharmony_ci */ 320162306a36Sopenharmony_cistruct hc_status_block_e1x { 320262306a36Sopenharmony_ci __le16 index_values[HC_SB_MAX_INDICES_E1X]; 320362306a36Sopenharmony_ci __le16 running_index[HC_SB_MAX_SM]; 320462306a36Sopenharmony_ci __le32 rsrv[11]; 320562306a36Sopenharmony_ci}; 320662306a36Sopenharmony_ci 320762306a36Sopenharmony_ci/* 320862306a36Sopenharmony_ci * host status block 320962306a36Sopenharmony_ci */ 321062306a36Sopenharmony_cistruct host_hc_status_block_e1x { 321162306a36Sopenharmony_ci struct hc_status_block_e1x sb; 321262306a36Sopenharmony_ci}; 321362306a36Sopenharmony_ci 321462306a36Sopenharmony_ci 321562306a36Sopenharmony_ci/* 321662306a36Sopenharmony_ci * 3 lines. status block 321762306a36Sopenharmony_ci */ 321862306a36Sopenharmony_cistruct hc_status_block_e2 { 321962306a36Sopenharmony_ci __le16 index_values[HC_SB_MAX_INDICES_E2]; 322062306a36Sopenharmony_ci __le16 running_index[HC_SB_MAX_SM]; 322162306a36Sopenharmony_ci __le32 reserved[11]; 322262306a36Sopenharmony_ci}; 322362306a36Sopenharmony_ci 322462306a36Sopenharmony_ci/* 322562306a36Sopenharmony_ci * host status block 322662306a36Sopenharmony_ci */ 322762306a36Sopenharmony_cistruct host_hc_status_block_e2 { 322862306a36Sopenharmony_ci struct hc_status_block_e2 sb; 322962306a36Sopenharmony_ci}; 323062306a36Sopenharmony_ci 323162306a36Sopenharmony_ci 323262306a36Sopenharmony_ci/* 323362306a36Sopenharmony_ci * 5 lines. slow-path status block 323462306a36Sopenharmony_ci */ 323562306a36Sopenharmony_cistruct hc_sp_status_block { 323662306a36Sopenharmony_ci __le16 index_values[HC_SP_SB_MAX_INDICES]; 323762306a36Sopenharmony_ci __le16 running_index; 323862306a36Sopenharmony_ci __le16 rsrv; 323962306a36Sopenharmony_ci u32 rsrv1; 324062306a36Sopenharmony_ci}; 324162306a36Sopenharmony_ci 324262306a36Sopenharmony_ci/* 324362306a36Sopenharmony_ci * host status block 324462306a36Sopenharmony_ci */ 324562306a36Sopenharmony_cistruct host_sp_status_block { 324662306a36Sopenharmony_ci struct atten_sp_status_block atten_status_block; 324762306a36Sopenharmony_ci struct hc_sp_status_block sp_sb; 324862306a36Sopenharmony_ci}; 324962306a36Sopenharmony_ci 325062306a36Sopenharmony_ci 325162306a36Sopenharmony_ci/* 325262306a36Sopenharmony_ci * IGU driver acknowledgment register 325362306a36Sopenharmony_ci */ 325462306a36Sopenharmony_cistruct igu_ack_register { 325562306a36Sopenharmony_ci#if defined(__BIG_ENDIAN) 325662306a36Sopenharmony_ci u16 sb_id_and_flags; 325762306a36Sopenharmony_ci#define IGU_ACK_REGISTER_STATUS_BLOCK_ID (0x1F<<0) 325862306a36Sopenharmony_ci#define IGU_ACK_REGISTER_STATUS_BLOCK_ID_SHIFT 0 325962306a36Sopenharmony_ci#define IGU_ACK_REGISTER_STORM_ID (0x7<<5) 326062306a36Sopenharmony_ci#define IGU_ACK_REGISTER_STORM_ID_SHIFT 5 326162306a36Sopenharmony_ci#define IGU_ACK_REGISTER_UPDATE_INDEX (0x1<<8) 326262306a36Sopenharmony_ci#define IGU_ACK_REGISTER_UPDATE_INDEX_SHIFT 8 326362306a36Sopenharmony_ci#define IGU_ACK_REGISTER_INTERRUPT_MODE (0x3<<9) 326462306a36Sopenharmony_ci#define IGU_ACK_REGISTER_INTERRUPT_MODE_SHIFT 9 326562306a36Sopenharmony_ci#define IGU_ACK_REGISTER_RESERVED (0x1F<<11) 326662306a36Sopenharmony_ci#define IGU_ACK_REGISTER_RESERVED_SHIFT 11 326762306a36Sopenharmony_ci u16 status_block_index; 326862306a36Sopenharmony_ci#elif defined(__LITTLE_ENDIAN) 326962306a36Sopenharmony_ci u16 status_block_index; 327062306a36Sopenharmony_ci u16 sb_id_and_flags; 327162306a36Sopenharmony_ci#define IGU_ACK_REGISTER_STATUS_BLOCK_ID (0x1F<<0) 327262306a36Sopenharmony_ci#define IGU_ACK_REGISTER_STATUS_BLOCK_ID_SHIFT 0 327362306a36Sopenharmony_ci#define IGU_ACK_REGISTER_STORM_ID (0x7<<5) 327462306a36Sopenharmony_ci#define IGU_ACK_REGISTER_STORM_ID_SHIFT 5 327562306a36Sopenharmony_ci#define IGU_ACK_REGISTER_UPDATE_INDEX (0x1<<8) 327662306a36Sopenharmony_ci#define IGU_ACK_REGISTER_UPDATE_INDEX_SHIFT 8 327762306a36Sopenharmony_ci#define IGU_ACK_REGISTER_INTERRUPT_MODE (0x3<<9) 327862306a36Sopenharmony_ci#define IGU_ACK_REGISTER_INTERRUPT_MODE_SHIFT 9 327962306a36Sopenharmony_ci#define IGU_ACK_REGISTER_RESERVED (0x1F<<11) 328062306a36Sopenharmony_ci#define IGU_ACK_REGISTER_RESERVED_SHIFT 11 328162306a36Sopenharmony_ci#endif 328262306a36Sopenharmony_ci}; 328362306a36Sopenharmony_ci 328462306a36Sopenharmony_ci 328562306a36Sopenharmony_ci/* 328662306a36Sopenharmony_ci * IGU driver acknowledgement register 328762306a36Sopenharmony_ci */ 328862306a36Sopenharmony_cistruct igu_backward_compatible { 328962306a36Sopenharmony_ci u32 sb_id_and_flags; 329062306a36Sopenharmony_ci#define IGU_BACKWARD_COMPATIBLE_SB_INDEX (0xFFFF<<0) 329162306a36Sopenharmony_ci#define IGU_BACKWARD_COMPATIBLE_SB_INDEX_SHIFT 0 329262306a36Sopenharmony_ci#define IGU_BACKWARD_COMPATIBLE_SB_SELECT (0x1F<<16) 329362306a36Sopenharmony_ci#define IGU_BACKWARD_COMPATIBLE_SB_SELECT_SHIFT 16 329462306a36Sopenharmony_ci#define IGU_BACKWARD_COMPATIBLE_SEGMENT_ACCESS (0x7<<21) 329562306a36Sopenharmony_ci#define IGU_BACKWARD_COMPATIBLE_SEGMENT_ACCESS_SHIFT 21 329662306a36Sopenharmony_ci#define IGU_BACKWARD_COMPATIBLE_BUPDATE (0x1<<24) 329762306a36Sopenharmony_ci#define IGU_BACKWARD_COMPATIBLE_BUPDATE_SHIFT 24 329862306a36Sopenharmony_ci#define IGU_BACKWARD_COMPATIBLE_ENABLE_INT (0x3<<25) 329962306a36Sopenharmony_ci#define IGU_BACKWARD_COMPATIBLE_ENABLE_INT_SHIFT 25 330062306a36Sopenharmony_ci#define IGU_BACKWARD_COMPATIBLE_RESERVED_0 (0x1F<<27) 330162306a36Sopenharmony_ci#define IGU_BACKWARD_COMPATIBLE_RESERVED_0_SHIFT 27 330262306a36Sopenharmony_ci u32 reserved_2; 330362306a36Sopenharmony_ci}; 330462306a36Sopenharmony_ci 330562306a36Sopenharmony_ci 330662306a36Sopenharmony_ci/* 330762306a36Sopenharmony_ci * IGU driver acknowledgement register 330862306a36Sopenharmony_ci */ 330962306a36Sopenharmony_cistruct igu_regular { 331062306a36Sopenharmony_ci u32 sb_id_and_flags; 331162306a36Sopenharmony_ci#define IGU_REGULAR_SB_INDEX (0xFFFFF<<0) 331262306a36Sopenharmony_ci#define IGU_REGULAR_SB_INDEX_SHIFT 0 331362306a36Sopenharmony_ci#define IGU_REGULAR_RESERVED0 (0x1<<20) 331462306a36Sopenharmony_ci#define IGU_REGULAR_RESERVED0_SHIFT 20 331562306a36Sopenharmony_ci#define IGU_REGULAR_SEGMENT_ACCESS (0x7<<21) 331662306a36Sopenharmony_ci#define IGU_REGULAR_SEGMENT_ACCESS_SHIFT 21 331762306a36Sopenharmony_ci#define IGU_REGULAR_BUPDATE (0x1<<24) 331862306a36Sopenharmony_ci#define IGU_REGULAR_BUPDATE_SHIFT 24 331962306a36Sopenharmony_ci#define IGU_REGULAR_ENABLE_INT (0x3<<25) 332062306a36Sopenharmony_ci#define IGU_REGULAR_ENABLE_INT_SHIFT 25 332162306a36Sopenharmony_ci#define IGU_REGULAR_RESERVED_1 (0x1<<27) 332262306a36Sopenharmony_ci#define IGU_REGULAR_RESERVED_1_SHIFT 27 332362306a36Sopenharmony_ci#define IGU_REGULAR_CLEANUP_TYPE (0x3<<28) 332462306a36Sopenharmony_ci#define IGU_REGULAR_CLEANUP_TYPE_SHIFT 28 332562306a36Sopenharmony_ci#define IGU_REGULAR_CLEANUP_SET (0x1<<30) 332662306a36Sopenharmony_ci#define IGU_REGULAR_CLEANUP_SET_SHIFT 30 332762306a36Sopenharmony_ci#define IGU_REGULAR_BCLEANUP (0x1<<31) 332862306a36Sopenharmony_ci#define IGU_REGULAR_BCLEANUP_SHIFT 31 332962306a36Sopenharmony_ci u32 reserved_2; 333062306a36Sopenharmony_ci}; 333162306a36Sopenharmony_ci 333262306a36Sopenharmony_ci/* 333362306a36Sopenharmony_ci * IGU driver acknowledgement register 333462306a36Sopenharmony_ci */ 333562306a36Sopenharmony_ciunion igu_consprod_reg { 333662306a36Sopenharmony_ci struct igu_regular regular; 333762306a36Sopenharmony_ci struct igu_backward_compatible backward_compatible; 333862306a36Sopenharmony_ci}; 333962306a36Sopenharmony_ci 334062306a36Sopenharmony_ci 334162306a36Sopenharmony_ci/* 334262306a36Sopenharmony_ci * Igu control commands 334362306a36Sopenharmony_ci */ 334462306a36Sopenharmony_cienum igu_ctrl_cmd { 334562306a36Sopenharmony_ci IGU_CTRL_CMD_TYPE_RD, 334662306a36Sopenharmony_ci IGU_CTRL_CMD_TYPE_WR, 334762306a36Sopenharmony_ci MAX_IGU_CTRL_CMD 334862306a36Sopenharmony_ci}; 334962306a36Sopenharmony_ci 335062306a36Sopenharmony_ci 335162306a36Sopenharmony_ci/* 335262306a36Sopenharmony_ci * Control register for the IGU command register 335362306a36Sopenharmony_ci */ 335462306a36Sopenharmony_cistruct igu_ctrl_reg { 335562306a36Sopenharmony_ci u32 ctrl_data; 335662306a36Sopenharmony_ci#define IGU_CTRL_REG_ADDRESS (0xFFF<<0) 335762306a36Sopenharmony_ci#define IGU_CTRL_REG_ADDRESS_SHIFT 0 335862306a36Sopenharmony_ci#define IGU_CTRL_REG_FID (0x7F<<12) 335962306a36Sopenharmony_ci#define IGU_CTRL_REG_FID_SHIFT 12 336062306a36Sopenharmony_ci#define IGU_CTRL_REG_RESERVED (0x1<<19) 336162306a36Sopenharmony_ci#define IGU_CTRL_REG_RESERVED_SHIFT 19 336262306a36Sopenharmony_ci#define IGU_CTRL_REG_TYPE (0x1<<20) 336362306a36Sopenharmony_ci#define IGU_CTRL_REG_TYPE_SHIFT 20 336462306a36Sopenharmony_ci#define IGU_CTRL_REG_UNUSED (0x7FF<<21) 336562306a36Sopenharmony_ci#define IGU_CTRL_REG_UNUSED_SHIFT 21 336662306a36Sopenharmony_ci}; 336762306a36Sopenharmony_ci 336862306a36Sopenharmony_ci 336962306a36Sopenharmony_ci/* 337062306a36Sopenharmony_ci * Igu interrupt command 337162306a36Sopenharmony_ci */ 337262306a36Sopenharmony_cienum igu_int_cmd { 337362306a36Sopenharmony_ci IGU_INT_ENABLE, 337462306a36Sopenharmony_ci IGU_INT_DISABLE, 337562306a36Sopenharmony_ci IGU_INT_NOP, 337662306a36Sopenharmony_ci IGU_INT_NOP2, 337762306a36Sopenharmony_ci MAX_IGU_INT_CMD 337862306a36Sopenharmony_ci}; 337962306a36Sopenharmony_ci 338062306a36Sopenharmony_ci 338162306a36Sopenharmony_ci/* 338262306a36Sopenharmony_ci * Igu segments 338362306a36Sopenharmony_ci */ 338462306a36Sopenharmony_cienum igu_seg_access { 338562306a36Sopenharmony_ci IGU_SEG_ACCESS_NORM, 338662306a36Sopenharmony_ci IGU_SEG_ACCESS_DEF, 338762306a36Sopenharmony_ci IGU_SEG_ACCESS_ATTN, 338862306a36Sopenharmony_ci MAX_IGU_SEG_ACCESS 338962306a36Sopenharmony_ci}; 339062306a36Sopenharmony_ci 339162306a36Sopenharmony_ci 339262306a36Sopenharmony_ci/* 339362306a36Sopenharmony_ci * Parser parsing flags field 339462306a36Sopenharmony_ci */ 339562306a36Sopenharmony_cistruct parsing_flags { 339662306a36Sopenharmony_ci __le16 flags; 339762306a36Sopenharmony_ci#define PARSING_FLAGS_ETHERNET_ADDRESS_TYPE (0x1<<0) 339862306a36Sopenharmony_ci#define PARSING_FLAGS_ETHERNET_ADDRESS_TYPE_SHIFT 0 339962306a36Sopenharmony_ci#define PARSING_FLAGS_VLAN (0x1<<1) 340062306a36Sopenharmony_ci#define PARSING_FLAGS_VLAN_SHIFT 1 340162306a36Sopenharmony_ci#define PARSING_FLAGS_EXTRA_VLAN (0x1<<2) 340262306a36Sopenharmony_ci#define PARSING_FLAGS_EXTRA_VLAN_SHIFT 2 340362306a36Sopenharmony_ci#define PARSING_FLAGS_OVER_ETHERNET_PROTOCOL (0x3<<3) 340462306a36Sopenharmony_ci#define PARSING_FLAGS_OVER_ETHERNET_PROTOCOL_SHIFT 3 340562306a36Sopenharmony_ci#define PARSING_FLAGS_IP_OPTIONS (0x1<<5) 340662306a36Sopenharmony_ci#define PARSING_FLAGS_IP_OPTIONS_SHIFT 5 340762306a36Sopenharmony_ci#define PARSING_FLAGS_FRAGMENTATION_STATUS (0x1<<6) 340862306a36Sopenharmony_ci#define PARSING_FLAGS_FRAGMENTATION_STATUS_SHIFT 6 340962306a36Sopenharmony_ci#define PARSING_FLAGS_OVER_IP_PROTOCOL (0x3<<7) 341062306a36Sopenharmony_ci#define PARSING_FLAGS_OVER_IP_PROTOCOL_SHIFT 7 341162306a36Sopenharmony_ci#define PARSING_FLAGS_PURE_ACK_INDICATION (0x1<<9) 341262306a36Sopenharmony_ci#define PARSING_FLAGS_PURE_ACK_INDICATION_SHIFT 9 341362306a36Sopenharmony_ci#define PARSING_FLAGS_TCP_OPTIONS_EXIST (0x1<<10) 341462306a36Sopenharmony_ci#define PARSING_FLAGS_TCP_OPTIONS_EXIST_SHIFT 10 341562306a36Sopenharmony_ci#define PARSING_FLAGS_TIME_STAMP_EXIST_FLAG (0x1<<11) 341662306a36Sopenharmony_ci#define PARSING_FLAGS_TIME_STAMP_EXIST_FLAG_SHIFT 11 341762306a36Sopenharmony_ci#define PARSING_FLAGS_CONNECTION_MATCH (0x1<<12) 341862306a36Sopenharmony_ci#define PARSING_FLAGS_CONNECTION_MATCH_SHIFT 12 341962306a36Sopenharmony_ci#define PARSING_FLAGS_LLC_SNAP (0x1<<13) 342062306a36Sopenharmony_ci#define PARSING_FLAGS_LLC_SNAP_SHIFT 13 342162306a36Sopenharmony_ci#define PARSING_FLAGS_RESERVED0 (0x3<<14) 342262306a36Sopenharmony_ci#define PARSING_FLAGS_RESERVED0_SHIFT 14 342362306a36Sopenharmony_ci}; 342462306a36Sopenharmony_ci 342562306a36Sopenharmony_ci 342662306a36Sopenharmony_ci/* 342762306a36Sopenharmony_ci * Parsing flags for TCP ACK type 342862306a36Sopenharmony_ci */ 342962306a36Sopenharmony_cienum prs_flags_ack_type { 343062306a36Sopenharmony_ci PRS_FLAG_PUREACK_PIGGY, 343162306a36Sopenharmony_ci PRS_FLAG_PUREACK_PURE, 343262306a36Sopenharmony_ci MAX_PRS_FLAGS_ACK_TYPE 343362306a36Sopenharmony_ci}; 343462306a36Sopenharmony_ci 343562306a36Sopenharmony_ci 343662306a36Sopenharmony_ci/* 343762306a36Sopenharmony_ci * Parsing flags for Ethernet address type 343862306a36Sopenharmony_ci */ 343962306a36Sopenharmony_cienum prs_flags_eth_addr_type { 344062306a36Sopenharmony_ci PRS_FLAG_ETHTYPE_NON_UNICAST, 344162306a36Sopenharmony_ci PRS_FLAG_ETHTYPE_UNICAST, 344262306a36Sopenharmony_ci MAX_PRS_FLAGS_ETH_ADDR_TYPE 344362306a36Sopenharmony_ci}; 344462306a36Sopenharmony_ci 344562306a36Sopenharmony_ci 344662306a36Sopenharmony_ci/* 344762306a36Sopenharmony_ci * Parsing flags for over-ethernet protocol 344862306a36Sopenharmony_ci */ 344962306a36Sopenharmony_cienum prs_flags_over_eth { 345062306a36Sopenharmony_ci PRS_FLAG_OVERETH_UNKNOWN, 345162306a36Sopenharmony_ci PRS_FLAG_OVERETH_IPV4, 345262306a36Sopenharmony_ci PRS_FLAG_OVERETH_IPV6, 345362306a36Sopenharmony_ci PRS_FLAG_OVERETH_LLCSNAP_UNKNOWN, 345462306a36Sopenharmony_ci MAX_PRS_FLAGS_OVER_ETH 345562306a36Sopenharmony_ci}; 345662306a36Sopenharmony_ci 345762306a36Sopenharmony_ci 345862306a36Sopenharmony_ci/* 345962306a36Sopenharmony_ci * Parsing flags for over-IP protocol 346062306a36Sopenharmony_ci */ 346162306a36Sopenharmony_cienum prs_flags_over_ip { 346262306a36Sopenharmony_ci PRS_FLAG_OVERIP_UNKNOWN, 346362306a36Sopenharmony_ci PRS_FLAG_OVERIP_TCP, 346462306a36Sopenharmony_ci PRS_FLAG_OVERIP_UDP, 346562306a36Sopenharmony_ci MAX_PRS_FLAGS_OVER_IP 346662306a36Sopenharmony_ci}; 346762306a36Sopenharmony_ci 346862306a36Sopenharmony_ci 346962306a36Sopenharmony_ci/* 347062306a36Sopenharmony_ci * SDM operation gen command (generate aggregative interrupt) 347162306a36Sopenharmony_ci */ 347262306a36Sopenharmony_cistruct sdm_op_gen { 347362306a36Sopenharmony_ci __le32 command; 347462306a36Sopenharmony_ci#define SDM_OP_GEN_COMP_PARAM (0x1F<<0) 347562306a36Sopenharmony_ci#define SDM_OP_GEN_COMP_PARAM_SHIFT 0 347662306a36Sopenharmony_ci#define SDM_OP_GEN_COMP_TYPE (0x7<<5) 347762306a36Sopenharmony_ci#define SDM_OP_GEN_COMP_TYPE_SHIFT 5 347862306a36Sopenharmony_ci#define SDM_OP_GEN_AGG_VECT_IDX (0xFF<<8) 347962306a36Sopenharmony_ci#define SDM_OP_GEN_AGG_VECT_IDX_SHIFT 8 348062306a36Sopenharmony_ci#define SDM_OP_GEN_AGG_VECT_IDX_VALID (0x1<<16) 348162306a36Sopenharmony_ci#define SDM_OP_GEN_AGG_VECT_IDX_VALID_SHIFT 16 348262306a36Sopenharmony_ci#define SDM_OP_GEN_RESERVED (0x7FFF<<17) 348362306a36Sopenharmony_ci#define SDM_OP_GEN_RESERVED_SHIFT 17 348462306a36Sopenharmony_ci}; 348562306a36Sopenharmony_ci 348662306a36Sopenharmony_ci 348762306a36Sopenharmony_ci/* 348862306a36Sopenharmony_ci * Timers connection context 348962306a36Sopenharmony_ci */ 349062306a36Sopenharmony_cistruct timers_block_context { 349162306a36Sopenharmony_ci u32 __reserved_0; 349262306a36Sopenharmony_ci u32 __reserved_1; 349362306a36Sopenharmony_ci u32 __reserved_2; 349462306a36Sopenharmony_ci u32 flags; 349562306a36Sopenharmony_ci#define __TIMERS_BLOCK_CONTEXT_NUM_OF_ACTIVE_TIMERS (0x3<<0) 349662306a36Sopenharmony_ci#define __TIMERS_BLOCK_CONTEXT_NUM_OF_ACTIVE_TIMERS_SHIFT 0 349762306a36Sopenharmony_ci#define TIMERS_BLOCK_CONTEXT_CONN_VALID_FLG (0x1<<2) 349862306a36Sopenharmony_ci#define TIMERS_BLOCK_CONTEXT_CONN_VALID_FLG_SHIFT 2 349962306a36Sopenharmony_ci#define __TIMERS_BLOCK_CONTEXT_RESERVED0 (0x1FFFFFFF<<3) 350062306a36Sopenharmony_ci#define __TIMERS_BLOCK_CONTEXT_RESERVED0_SHIFT 3 350162306a36Sopenharmony_ci}; 350262306a36Sopenharmony_ci 350362306a36Sopenharmony_ci 350462306a36Sopenharmony_ci/* 350562306a36Sopenharmony_ci * The eth aggregative context of Tstorm 350662306a36Sopenharmony_ci */ 350762306a36Sopenharmony_cistruct tstorm_eth_ag_context { 350862306a36Sopenharmony_ci u32 __reserved0[14]; 350962306a36Sopenharmony_ci}; 351062306a36Sopenharmony_ci 351162306a36Sopenharmony_ci 351262306a36Sopenharmony_ci/* 351362306a36Sopenharmony_ci * The eth aggregative context of Ustorm 351462306a36Sopenharmony_ci */ 351562306a36Sopenharmony_cistruct ustorm_eth_ag_context { 351662306a36Sopenharmony_ci u32 __reserved0; 351762306a36Sopenharmony_ci#if defined(__BIG_ENDIAN) 351862306a36Sopenharmony_ci u8 cdu_usage; 351962306a36Sopenharmony_ci u8 __reserved2; 352062306a36Sopenharmony_ci u16 __reserved1; 352162306a36Sopenharmony_ci#elif defined(__LITTLE_ENDIAN) 352262306a36Sopenharmony_ci u16 __reserved1; 352362306a36Sopenharmony_ci u8 __reserved2; 352462306a36Sopenharmony_ci u8 cdu_usage; 352562306a36Sopenharmony_ci#endif 352662306a36Sopenharmony_ci u32 __reserved3[6]; 352762306a36Sopenharmony_ci}; 352862306a36Sopenharmony_ci 352962306a36Sopenharmony_ci 353062306a36Sopenharmony_ci/* 353162306a36Sopenharmony_ci * The eth aggregative context of Xstorm 353262306a36Sopenharmony_ci */ 353362306a36Sopenharmony_cistruct xstorm_eth_ag_context { 353462306a36Sopenharmony_ci u32 reserved0; 353562306a36Sopenharmony_ci#if defined(__BIG_ENDIAN) 353662306a36Sopenharmony_ci u8 cdu_reserved; 353762306a36Sopenharmony_ci u8 reserved2; 353862306a36Sopenharmony_ci u16 reserved1; 353962306a36Sopenharmony_ci#elif defined(__LITTLE_ENDIAN) 354062306a36Sopenharmony_ci u16 reserved1; 354162306a36Sopenharmony_ci u8 reserved2; 354262306a36Sopenharmony_ci u8 cdu_reserved; 354362306a36Sopenharmony_ci#endif 354462306a36Sopenharmony_ci u32 reserved3[30]; 354562306a36Sopenharmony_ci}; 354662306a36Sopenharmony_ci 354762306a36Sopenharmony_ci 354862306a36Sopenharmony_ci/* 354962306a36Sopenharmony_ci * doorbell message sent to the chip 355062306a36Sopenharmony_ci */ 355162306a36Sopenharmony_cistruct doorbell { 355262306a36Sopenharmony_ci#if defined(__BIG_ENDIAN) 355362306a36Sopenharmony_ci u16 zero_fill2; 355462306a36Sopenharmony_ci u8 zero_fill1; 355562306a36Sopenharmony_ci struct doorbell_hdr header; 355662306a36Sopenharmony_ci#elif defined(__LITTLE_ENDIAN) 355762306a36Sopenharmony_ci struct doorbell_hdr header; 355862306a36Sopenharmony_ci u8 zero_fill1; 355962306a36Sopenharmony_ci u16 zero_fill2; 356062306a36Sopenharmony_ci#endif 356162306a36Sopenharmony_ci}; 356262306a36Sopenharmony_ci 356362306a36Sopenharmony_ci 356462306a36Sopenharmony_ci/* 356562306a36Sopenharmony_ci * doorbell message sent to the chip 356662306a36Sopenharmony_ci */ 356762306a36Sopenharmony_cistruct doorbell_set_prod { 356862306a36Sopenharmony_ci#if defined(__BIG_ENDIAN) 356962306a36Sopenharmony_ci u16 prod; 357062306a36Sopenharmony_ci u8 zero_fill1; 357162306a36Sopenharmony_ci struct doorbell_hdr header; 357262306a36Sopenharmony_ci#elif defined(__LITTLE_ENDIAN) 357362306a36Sopenharmony_ci struct doorbell_hdr header; 357462306a36Sopenharmony_ci u8 zero_fill1; 357562306a36Sopenharmony_ci u16 prod; 357662306a36Sopenharmony_ci#endif 357762306a36Sopenharmony_ci}; 357862306a36Sopenharmony_ci 357962306a36Sopenharmony_ci 358062306a36Sopenharmony_cistruct regpair { 358162306a36Sopenharmony_ci __le32 lo; 358262306a36Sopenharmony_ci __le32 hi; 358362306a36Sopenharmony_ci}; 358462306a36Sopenharmony_ci 358562306a36Sopenharmony_cistruct regpair_native { 358662306a36Sopenharmony_ci u32 lo; 358762306a36Sopenharmony_ci u32 hi; 358862306a36Sopenharmony_ci}; 358962306a36Sopenharmony_ci 359062306a36Sopenharmony_ci/* 359162306a36Sopenharmony_ci * Classify rule opcodes in E2/E3 359262306a36Sopenharmony_ci */ 359362306a36Sopenharmony_cienum classify_rule { 359462306a36Sopenharmony_ci CLASSIFY_RULE_OPCODE_MAC, 359562306a36Sopenharmony_ci CLASSIFY_RULE_OPCODE_VLAN, 359662306a36Sopenharmony_ci CLASSIFY_RULE_OPCODE_PAIR, 359762306a36Sopenharmony_ci CLASSIFY_RULE_OPCODE_IMAC_VNI, 359862306a36Sopenharmony_ci MAX_CLASSIFY_RULE 359962306a36Sopenharmony_ci}; 360062306a36Sopenharmony_ci 360162306a36Sopenharmony_ci 360262306a36Sopenharmony_ci/* 360362306a36Sopenharmony_ci * Classify rule types in E2/E3 360462306a36Sopenharmony_ci */ 360562306a36Sopenharmony_cienum classify_rule_action_type { 360662306a36Sopenharmony_ci CLASSIFY_RULE_REMOVE, 360762306a36Sopenharmony_ci CLASSIFY_RULE_ADD, 360862306a36Sopenharmony_ci MAX_CLASSIFY_RULE_ACTION_TYPE 360962306a36Sopenharmony_ci}; 361062306a36Sopenharmony_ci 361162306a36Sopenharmony_ci 361262306a36Sopenharmony_ci/* 361362306a36Sopenharmony_ci * client init ramrod data 361462306a36Sopenharmony_ci */ 361562306a36Sopenharmony_cistruct client_init_general_data { 361662306a36Sopenharmony_ci u8 client_id; 361762306a36Sopenharmony_ci u8 statistics_counter_id; 361862306a36Sopenharmony_ci u8 statistics_en_flg; 361962306a36Sopenharmony_ci u8 is_fcoe_flg; 362062306a36Sopenharmony_ci u8 activate_flg; 362162306a36Sopenharmony_ci u8 sp_client_id; 362262306a36Sopenharmony_ci __le16 mtu; 362362306a36Sopenharmony_ci u8 statistics_zero_flg; 362462306a36Sopenharmony_ci u8 func_id; 362562306a36Sopenharmony_ci u8 cos; 362662306a36Sopenharmony_ci u8 traffic_type; 362762306a36Sopenharmony_ci u8 fp_hsi_ver; 362862306a36Sopenharmony_ci u8 reserved0[3]; 362962306a36Sopenharmony_ci}; 363062306a36Sopenharmony_ci 363162306a36Sopenharmony_ci 363262306a36Sopenharmony_ci/* 363362306a36Sopenharmony_ci * client init rx data 363462306a36Sopenharmony_ci */ 363562306a36Sopenharmony_cistruct client_init_rx_data { 363662306a36Sopenharmony_ci u8 tpa_en; 363762306a36Sopenharmony_ci#define CLIENT_INIT_RX_DATA_TPA_EN_IPV4 (0x1<<0) 363862306a36Sopenharmony_ci#define CLIENT_INIT_RX_DATA_TPA_EN_IPV4_SHIFT 0 363962306a36Sopenharmony_ci#define CLIENT_INIT_RX_DATA_TPA_EN_IPV6 (0x1<<1) 364062306a36Sopenharmony_ci#define CLIENT_INIT_RX_DATA_TPA_EN_IPV6_SHIFT 1 364162306a36Sopenharmony_ci#define CLIENT_INIT_RX_DATA_TPA_MODE (0x1<<2) 364262306a36Sopenharmony_ci#define CLIENT_INIT_RX_DATA_TPA_MODE_SHIFT 2 364362306a36Sopenharmony_ci#define CLIENT_INIT_RX_DATA_TPA_OVER_VLAN_DISABLE (0x1<<3) 364462306a36Sopenharmony_ci#define CLIENT_INIT_RX_DATA_TPA_OVER_VLAN_DISABLE_SHIFT 3 364562306a36Sopenharmony_ci#define CLIENT_INIT_RX_DATA_RESERVED5 (0xF<<4) 364662306a36Sopenharmony_ci#define CLIENT_INIT_RX_DATA_RESERVED5_SHIFT 4 364762306a36Sopenharmony_ci u8 vmqueue_mode_en_flg; 364862306a36Sopenharmony_ci u8 extra_data_over_sgl_en_flg; 364962306a36Sopenharmony_ci u8 cache_line_alignment_log_size; 365062306a36Sopenharmony_ci u8 enable_dynamic_hc; 365162306a36Sopenharmony_ci u8 max_sges_for_packet; 365262306a36Sopenharmony_ci u8 client_qzone_id; 365362306a36Sopenharmony_ci u8 drop_ip_cs_err_flg; 365462306a36Sopenharmony_ci u8 drop_tcp_cs_err_flg; 365562306a36Sopenharmony_ci u8 drop_ttl0_flg; 365662306a36Sopenharmony_ci u8 drop_udp_cs_err_flg; 365762306a36Sopenharmony_ci u8 inner_vlan_removal_enable_flg; 365862306a36Sopenharmony_ci u8 outer_vlan_removal_enable_flg; 365962306a36Sopenharmony_ci u8 status_block_id; 366062306a36Sopenharmony_ci u8 rx_sb_index_number; 366162306a36Sopenharmony_ci u8 dont_verify_rings_pause_thr_flg; 366262306a36Sopenharmony_ci u8 max_tpa_queues; 366362306a36Sopenharmony_ci u8 silent_vlan_removal_flg; 366462306a36Sopenharmony_ci __le16 max_bytes_on_bd; 366562306a36Sopenharmony_ci __le16 sge_buff_size; 366662306a36Sopenharmony_ci u8 approx_mcast_engine_id; 366762306a36Sopenharmony_ci u8 rss_engine_id; 366862306a36Sopenharmony_ci struct regpair bd_page_base; 366962306a36Sopenharmony_ci struct regpair sge_page_base; 367062306a36Sopenharmony_ci struct regpair cqe_page_base; 367162306a36Sopenharmony_ci u8 is_leading_rss; 367262306a36Sopenharmony_ci u8 is_approx_mcast; 367362306a36Sopenharmony_ci __le16 max_agg_size; 367462306a36Sopenharmony_ci __le16 state; 367562306a36Sopenharmony_ci#define CLIENT_INIT_RX_DATA_UCAST_DROP_ALL (0x1<<0) 367662306a36Sopenharmony_ci#define CLIENT_INIT_RX_DATA_UCAST_DROP_ALL_SHIFT 0 367762306a36Sopenharmony_ci#define CLIENT_INIT_RX_DATA_UCAST_ACCEPT_ALL (0x1<<1) 367862306a36Sopenharmony_ci#define CLIENT_INIT_RX_DATA_UCAST_ACCEPT_ALL_SHIFT 1 367962306a36Sopenharmony_ci#define CLIENT_INIT_RX_DATA_UCAST_ACCEPT_UNMATCHED (0x1<<2) 368062306a36Sopenharmony_ci#define CLIENT_INIT_RX_DATA_UCAST_ACCEPT_UNMATCHED_SHIFT 2 368162306a36Sopenharmony_ci#define CLIENT_INIT_RX_DATA_MCAST_DROP_ALL (0x1<<3) 368262306a36Sopenharmony_ci#define CLIENT_INIT_RX_DATA_MCAST_DROP_ALL_SHIFT 3 368362306a36Sopenharmony_ci#define CLIENT_INIT_RX_DATA_MCAST_ACCEPT_ALL (0x1<<4) 368462306a36Sopenharmony_ci#define CLIENT_INIT_RX_DATA_MCAST_ACCEPT_ALL_SHIFT 4 368562306a36Sopenharmony_ci#define CLIENT_INIT_RX_DATA_BCAST_ACCEPT_ALL (0x1<<5) 368662306a36Sopenharmony_ci#define CLIENT_INIT_RX_DATA_BCAST_ACCEPT_ALL_SHIFT 5 368762306a36Sopenharmony_ci#define CLIENT_INIT_RX_DATA_ACCEPT_ANY_VLAN (0x1<<6) 368862306a36Sopenharmony_ci#define CLIENT_INIT_RX_DATA_ACCEPT_ANY_VLAN_SHIFT 6 368962306a36Sopenharmony_ci#define CLIENT_INIT_RX_DATA_RESERVED2 (0x1FF<<7) 369062306a36Sopenharmony_ci#define CLIENT_INIT_RX_DATA_RESERVED2_SHIFT 7 369162306a36Sopenharmony_ci __le16 cqe_pause_thr_low; 369262306a36Sopenharmony_ci __le16 cqe_pause_thr_high; 369362306a36Sopenharmony_ci __le16 bd_pause_thr_low; 369462306a36Sopenharmony_ci __le16 bd_pause_thr_high; 369562306a36Sopenharmony_ci __le16 sge_pause_thr_low; 369662306a36Sopenharmony_ci __le16 sge_pause_thr_high; 369762306a36Sopenharmony_ci __le16 rx_cos_mask; 369862306a36Sopenharmony_ci __le16 silent_vlan_value; 369962306a36Sopenharmony_ci __le16 silent_vlan_mask; 370062306a36Sopenharmony_ci u8 handle_ptp_pkts_flg; 370162306a36Sopenharmony_ci u8 reserved6[3]; 370262306a36Sopenharmony_ci __le32 reserved7; 370362306a36Sopenharmony_ci}; 370462306a36Sopenharmony_ci 370562306a36Sopenharmony_ci/* 370662306a36Sopenharmony_ci * client init tx data 370762306a36Sopenharmony_ci */ 370862306a36Sopenharmony_cistruct client_init_tx_data { 370962306a36Sopenharmony_ci u8 enforce_security_flg; 371062306a36Sopenharmony_ci u8 tx_status_block_id; 371162306a36Sopenharmony_ci u8 tx_sb_index_number; 371262306a36Sopenharmony_ci u8 tss_leading_client_id; 371362306a36Sopenharmony_ci u8 tx_switching_flg; 371462306a36Sopenharmony_ci u8 anti_spoofing_flg; 371562306a36Sopenharmony_ci __le16 default_vlan; 371662306a36Sopenharmony_ci struct regpair tx_bd_page_base; 371762306a36Sopenharmony_ci __le16 state; 371862306a36Sopenharmony_ci#define CLIENT_INIT_TX_DATA_UCAST_ACCEPT_ALL (0x1<<0) 371962306a36Sopenharmony_ci#define CLIENT_INIT_TX_DATA_UCAST_ACCEPT_ALL_SHIFT 0 372062306a36Sopenharmony_ci#define CLIENT_INIT_TX_DATA_MCAST_ACCEPT_ALL (0x1<<1) 372162306a36Sopenharmony_ci#define CLIENT_INIT_TX_DATA_MCAST_ACCEPT_ALL_SHIFT 1 372262306a36Sopenharmony_ci#define CLIENT_INIT_TX_DATA_BCAST_ACCEPT_ALL (0x1<<2) 372362306a36Sopenharmony_ci#define CLIENT_INIT_TX_DATA_BCAST_ACCEPT_ALL_SHIFT 2 372462306a36Sopenharmony_ci#define CLIENT_INIT_TX_DATA_ACCEPT_ANY_VLAN (0x1<<3) 372562306a36Sopenharmony_ci#define CLIENT_INIT_TX_DATA_ACCEPT_ANY_VLAN_SHIFT 3 372662306a36Sopenharmony_ci#define CLIENT_INIT_TX_DATA_RESERVED0 (0xFFF<<4) 372762306a36Sopenharmony_ci#define CLIENT_INIT_TX_DATA_RESERVED0_SHIFT 4 372862306a36Sopenharmony_ci u8 default_vlan_flg; 372962306a36Sopenharmony_ci u8 force_default_pri_flg; 373062306a36Sopenharmony_ci u8 tunnel_lso_inc_ip_id; 373162306a36Sopenharmony_ci u8 refuse_outband_vlan_flg; 373262306a36Sopenharmony_ci u8 tunnel_non_lso_pcsum_location; 373362306a36Sopenharmony_ci u8 tunnel_non_lso_outer_ip_csum_location; 373462306a36Sopenharmony_ci}; 373562306a36Sopenharmony_ci 373662306a36Sopenharmony_ci/* 373762306a36Sopenharmony_ci * client init ramrod data 373862306a36Sopenharmony_ci */ 373962306a36Sopenharmony_cistruct client_init_ramrod_data { 374062306a36Sopenharmony_ci struct client_init_general_data general; 374162306a36Sopenharmony_ci struct client_init_rx_data rx; 374262306a36Sopenharmony_ci struct client_init_tx_data tx; 374362306a36Sopenharmony_ci}; 374462306a36Sopenharmony_ci 374562306a36Sopenharmony_ci 374662306a36Sopenharmony_ci/* 374762306a36Sopenharmony_ci * client update ramrod data 374862306a36Sopenharmony_ci */ 374962306a36Sopenharmony_cistruct client_update_ramrod_data { 375062306a36Sopenharmony_ci u8 client_id; 375162306a36Sopenharmony_ci u8 func_id; 375262306a36Sopenharmony_ci u8 inner_vlan_removal_enable_flg; 375362306a36Sopenharmony_ci u8 inner_vlan_removal_change_flg; 375462306a36Sopenharmony_ci u8 outer_vlan_removal_enable_flg; 375562306a36Sopenharmony_ci u8 outer_vlan_removal_change_flg; 375662306a36Sopenharmony_ci u8 anti_spoofing_enable_flg; 375762306a36Sopenharmony_ci u8 anti_spoofing_change_flg; 375862306a36Sopenharmony_ci u8 activate_flg; 375962306a36Sopenharmony_ci u8 activate_change_flg; 376062306a36Sopenharmony_ci __le16 default_vlan; 376162306a36Sopenharmony_ci u8 default_vlan_enable_flg; 376262306a36Sopenharmony_ci u8 default_vlan_change_flg; 376362306a36Sopenharmony_ci __le16 silent_vlan_value; 376462306a36Sopenharmony_ci __le16 silent_vlan_mask; 376562306a36Sopenharmony_ci u8 silent_vlan_removal_flg; 376662306a36Sopenharmony_ci u8 silent_vlan_change_flg; 376762306a36Sopenharmony_ci u8 refuse_outband_vlan_flg; 376862306a36Sopenharmony_ci u8 refuse_outband_vlan_change_flg; 376962306a36Sopenharmony_ci u8 tx_switching_flg; 377062306a36Sopenharmony_ci u8 tx_switching_change_flg; 377162306a36Sopenharmony_ci u8 handle_ptp_pkts_flg; 377262306a36Sopenharmony_ci u8 handle_ptp_pkts_change_flg; 377362306a36Sopenharmony_ci __le16 reserved1; 377462306a36Sopenharmony_ci __le32 echo; 377562306a36Sopenharmony_ci}; 377662306a36Sopenharmony_ci 377762306a36Sopenharmony_ci 377862306a36Sopenharmony_ci/* 377962306a36Sopenharmony_ci * The eth storm context of Cstorm 378062306a36Sopenharmony_ci */ 378162306a36Sopenharmony_cistruct cstorm_eth_st_context { 378262306a36Sopenharmony_ci u32 __reserved0[4]; 378362306a36Sopenharmony_ci}; 378462306a36Sopenharmony_ci 378562306a36Sopenharmony_ci 378662306a36Sopenharmony_cistruct double_regpair { 378762306a36Sopenharmony_ci u32 regpair0_lo; 378862306a36Sopenharmony_ci u32 regpair0_hi; 378962306a36Sopenharmony_ci u32 regpair1_lo; 379062306a36Sopenharmony_ci u32 regpair1_hi; 379162306a36Sopenharmony_ci}; 379262306a36Sopenharmony_ci 379362306a36Sopenharmony_ci/* 2nd parse bd type used in ethernet tx BDs */ 379462306a36Sopenharmony_cienum eth_2nd_parse_bd_type { 379562306a36Sopenharmony_ci ETH_2ND_PARSE_BD_TYPE_LSO_TUNNEL, 379662306a36Sopenharmony_ci MAX_ETH_2ND_PARSE_BD_TYPE 379762306a36Sopenharmony_ci}; 379862306a36Sopenharmony_ci 379962306a36Sopenharmony_ci/* 380062306a36Sopenharmony_ci * Ethernet address typesm used in ethernet tx BDs 380162306a36Sopenharmony_ci */ 380262306a36Sopenharmony_cienum eth_addr_type { 380362306a36Sopenharmony_ci UNKNOWN_ADDRESS, 380462306a36Sopenharmony_ci UNICAST_ADDRESS, 380562306a36Sopenharmony_ci MULTICAST_ADDRESS, 380662306a36Sopenharmony_ci BROADCAST_ADDRESS, 380762306a36Sopenharmony_ci MAX_ETH_ADDR_TYPE 380862306a36Sopenharmony_ci}; 380962306a36Sopenharmony_ci 381062306a36Sopenharmony_ci 381162306a36Sopenharmony_ci/* 381262306a36Sopenharmony_ci * 381362306a36Sopenharmony_ci */ 381462306a36Sopenharmony_cistruct eth_classify_cmd_header { 381562306a36Sopenharmony_ci u8 cmd_general_data; 381662306a36Sopenharmony_ci#define ETH_CLASSIFY_CMD_HEADER_RX_CMD (0x1<<0) 381762306a36Sopenharmony_ci#define ETH_CLASSIFY_CMD_HEADER_RX_CMD_SHIFT 0 381862306a36Sopenharmony_ci#define ETH_CLASSIFY_CMD_HEADER_TX_CMD (0x1<<1) 381962306a36Sopenharmony_ci#define ETH_CLASSIFY_CMD_HEADER_TX_CMD_SHIFT 1 382062306a36Sopenharmony_ci#define ETH_CLASSIFY_CMD_HEADER_OPCODE (0x3<<2) 382162306a36Sopenharmony_ci#define ETH_CLASSIFY_CMD_HEADER_OPCODE_SHIFT 2 382262306a36Sopenharmony_ci#define ETH_CLASSIFY_CMD_HEADER_IS_ADD (0x1<<4) 382362306a36Sopenharmony_ci#define ETH_CLASSIFY_CMD_HEADER_IS_ADD_SHIFT 4 382462306a36Sopenharmony_ci#define ETH_CLASSIFY_CMD_HEADER_RESERVED0 (0x7<<5) 382562306a36Sopenharmony_ci#define ETH_CLASSIFY_CMD_HEADER_RESERVED0_SHIFT 5 382662306a36Sopenharmony_ci u8 func_id; 382762306a36Sopenharmony_ci u8 client_id; 382862306a36Sopenharmony_ci u8 reserved1; 382962306a36Sopenharmony_ci}; 383062306a36Sopenharmony_ci 383162306a36Sopenharmony_ci 383262306a36Sopenharmony_ci/* 383362306a36Sopenharmony_ci * header for eth classification config ramrod 383462306a36Sopenharmony_ci */ 383562306a36Sopenharmony_cistruct eth_classify_header { 383662306a36Sopenharmony_ci u8 rule_cnt; 383762306a36Sopenharmony_ci u8 warning_on_error; 383862306a36Sopenharmony_ci __le16 reserved1; 383962306a36Sopenharmony_ci __le32 echo; 384062306a36Sopenharmony_ci}; 384162306a36Sopenharmony_ci 384262306a36Sopenharmony_ci/* 384362306a36Sopenharmony_ci * Command for adding/removing a Inner-MAC/VNI classification rule 384462306a36Sopenharmony_ci */ 384562306a36Sopenharmony_cistruct eth_classify_imac_vni_cmd { 384662306a36Sopenharmony_ci struct eth_classify_cmd_header header; 384762306a36Sopenharmony_ci __le32 vni; 384862306a36Sopenharmony_ci __le16 imac_lsb; 384962306a36Sopenharmony_ci __le16 imac_mid; 385062306a36Sopenharmony_ci __le16 imac_msb; 385162306a36Sopenharmony_ci __le16 reserved1; 385262306a36Sopenharmony_ci}; 385362306a36Sopenharmony_ci 385462306a36Sopenharmony_ci/* 385562306a36Sopenharmony_ci * Command for adding/removing a MAC classification rule 385662306a36Sopenharmony_ci */ 385762306a36Sopenharmony_cistruct eth_classify_mac_cmd { 385862306a36Sopenharmony_ci struct eth_classify_cmd_header header; 385962306a36Sopenharmony_ci __le16 reserved0; 386062306a36Sopenharmony_ci __le16 inner_mac; 386162306a36Sopenharmony_ci __le16 mac_lsb; 386262306a36Sopenharmony_ci __le16 mac_mid; 386362306a36Sopenharmony_ci __le16 mac_msb; 386462306a36Sopenharmony_ci __le16 reserved1; 386562306a36Sopenharmony_ci}; 386662306a36Sopenharmony_ci 386762306a36Sopenharmony_ci 386862306a36Sopenharmony_ci/* 386962306a36Sopenharmony_ci * Command for adding/removing a MAC-VLAN pair classification rule 387062306a36Sopenharmony_ci */ 387162306a36Sopenharmony_cistruct eth_classify_pair_cmd { 387262306a36Sopenharmony_ci struct eth_classify_cmd_header header; 387362306a36Sopenharmony_ci __le16 reserved0; 387462306a36Sopenharmony_ci __le16 inner_mac; 387562306a36Sopenharmony_ci __le16 mac_lsb; 387662306a36Sopenharmony_ci __le16 mac_mid; 387762306a36Sopenharmony_ci __le16 mac_msb; 387862306a36Sopenharmony_ci __le16 vlan; 387962306a36Sopenharmony_ci}; 388062306a36Sopenharmony_ci 388162306a36Sopenharmony_ci 388262306a36Sopenharmony_ci/* 388362306a36Sopenharmony_ci * Command for adding/removing a VLAN classification rule 388462306a36Sopenharmony_ci */ 388562306a36Sopenharmony_cistruct eth_classify_vlan_cmd { 388662306a36Sopenharmony_ci struct eth_classify_cmd_header header; 388762306a36Sopenharmony_ci __le32 reserved0; 388862306a36Sopenharmony_ci __le32 reserved1; 388962306a36Sopenharmony_ci __le16 reserved2; 389062306a36Sopenharmony_ci __le16 vlan; 389162306a36Sopenharmony_ci}; 389262306a36Sopenharmony_ci 389362306a36Sopenharmony_ci/* 389462306a36Sopenharmony_ci * Command for adding/removing a VXLAN classification rule 389562306a36Sopenharmony_ci */ 389662306a36Sopenharmony_ci 389762306a36Sopenharmony_ci/* 389862306a36Sopenharmony_ci * union for eth classification rule 389962306a36Sopenharmony_ci */ 390062306a36Sopenharmony_ciunion eth_classify_rule_cmd { 390162306a36Sopenharmony_ci struct eth_classify_mac_cmd mac; 390262306a36Sopenharmony_ci struct eth_classify_vlan_cmd vlan; 390362306a36Sopenharmony_ci struct eth_classify_pair_cmd pair; 390462306a36Sopenharmony_ci struct eth_classify_imac_vni_cmd imac_vni; 390562306a36Sopenharmony_ci}; 390662306a36Sopenharmony_ci 390762306a36Sopenharmony_ci/* 390862306a36Sopenharmony_ci * parameters for eth classification configuration ramrod 390962306a36Sopenharmony_ci */ 391062306a36Sopenharmony_cistruct eth_classify_rules_ramrod_data { 391162306a36Sopenharmony_ci struct eth_classify_header header; 391262306a36Sopenharmony_ci union eth_classify_rule_cmd rules[CLASSIFY_RULES_COUNT]; 391362306a36Sopenharmony_ci}; 391462306a36Sopenharmony_ci 391562306a36Sopenharmony_ci 391662306a36Sopenharmony_ci/* 391762306a36Sopenharmony_ci * The data contain client ID need to the ramrod 391862306a36Sopenharmony_ci */ 391962306a36Sopenharmony_cistruct eth_common_ramrod_data { 392062306a36Sopenharmony_ci __le32 client_id; 392162306a36Sopenharmony_ci __le32 reserved1; 392262306a36Sopenharmony_ci}; 392362306a36Sopenharmony_ci 392462306a36Sopenharmony_ci 392562306a36Sopenharmony_ci/* 392662306a36Sopenharmony_ci * The eth storm context of Ustorm 392762306a36Sopenharmony_ci */ 392862306a36Sopenharmony_cistruct ustorm_eth_st_context { 392962306a36Sopenharmony_ci u32 reserved0[52]; 393062306a36Sopenharmony_ci}; 393162306a36Sopenharmony_ci 393262306a36Sopenharmony_ci/* 393362306a36Sopenharmony_ci * The eth storm context of Tstorm 393462306a36Sopenharmony_ci */ 393562306a36Sopenharmony_cistruct tstorm_eth_st_context { 393662306a36Sopenharmony_ci u32 __reserved0[28]; 393762306a36Sopenharmony_ci}; 393862306a36Sopenharmony_ci 393962306a36Sopenharmony_ci/* 394062306a36Sopenharmony_ci * The eth storm context of Xstorm 394162306a36Sopenharmony_ci */ 394262306a36Sopenharmony_cistruct xstorm_eth_st_context { 394362306a36Sopenharmony_ci u32 reserved0[60]; 394462306a36Sopenharmony_ci}; 394562306a36Sopenharmony_ci 394662306a36Sopenharmony_ci/* 394762306a36Sopenharmony_ci * Ethernet connection context 394862306a36Sopenharmony_ci */ 394962306a36Sopenharmony_cistruct eth_context { 395062306a36Sopenharmony_ci struct ustorm_eth_st_context ustorm_st_context; 395162306a36Sopenharmony_ci struct tstorm_eth_st_context tstorm_st_context; 395262306a36Sopenharmony_ci struct xstorm_eth_ag_context xstorm_ag_context; 395362306a36Sopenharmony_ci struct tstorm_eth_ag_context tstorm_ag_context; 395462306a36Sopenharmony_ci struct cstorm_eth_ag_context cstorm_ag_context; 395562306a36Sopenharmony_ci struct ustorm_eth_ag_context ustorm_ag_context; 395662306a36Sopenharmony_ci struct timers_block_context timers_context; 395762306a36Sopenharmony_ci struct xstorm_eth_st_context xstorm_st_context; 395862306a36Sopenharmony_ci struct cstorm_eth_st_context cstorm_st_context; 395962306a36Sopenharmony_ci}; 396062306a36Sopenharmony_ci 396162306a36Sopenharmony_ci 396262306a36Sopenharmony_ci/* 396362306a36Sopenharmony_ci * union for sgl and raw data. 396462306a36Sopenharmony_ci */ 396562306a36Sopenharmony_ciunion eth_sgl_or_raw_data { 396662306a36Sopenharmony_ci __le16 sgl[8]; 396762306a36Sopenharmony_ci u32 raw_data[4]; 396862306a36Sopenharmony_ci}; 396962306a36Sopenharmony_ci 397062306a36Sopenharmony_ci/* 397162306a36Sopenharmony_ci * eth FP end aggregation CQE parameters struct 397262306a36Sopenharmony_ci */ 397362306a36Sopenharmony_cistruct eth_end_agg_rx_cqe { 397462306a36Sopenharmony_ci u8 type_error_flags; 397562306a36Sopenharmony_ci#define ETH_END_AGG_RX_CQE_TYPE (0x3<<0) 397662306a36Sopenharmony_ci#define ETH_END_AGG_RX_CQE_TYPE_SHIFT 0 397762306a36Sopenharmony_ci#define ETH_END_AGG_RX_CQE_SGL_RAW_SEL (0x1<<2) 397862306a36Sopenharmony_ci#define ETH_END_AGG_RX_CQE_SGL_RAW_SEL_SHIFT 2 397962306a36Sopenharmony_ci#define ETH_END_AGG_RX_CQE_RESERVED0 (0x1F<<3) 398062306a36Sopenharmony_ci#define ETH_END_AGG_RX_CQE_RESERVED0_SHIFT 3 398162306a36Sopenharmony_ci u8 reserved1; 398262306a36Sopenharmony_ci u8 queue_index; 398362306a36Sopenharmony_ci u8 reserved2; 398462306a36Sopenharmony_ci __le32 timestamp_delta; 398562306a36Sopenharmony_ci __le16 num_of_coalesced_segs; 398662306a36Sopenharmony_ci __le16 pkt_len; 398762306a36Sopenharmony_ci u8 pure_ack_count; 398862306a36Sopenharmony_ci u8 reserved3; 398962306a36Sopenharmony_ci __le16 reserved4; 399062306a36Sopenharmony_ci union eth_sgl_or_raw_data sgl_or_raw_data; 399162306a36Sopenharmony_ci __le32 reserved5[8]; 399262306a36Sopenharmony_ci}; 399362306a36Sopenharmony_ci 399462306a36Sopenharmony_ci 399562306a36Sopenharmony_ci/* 399662306a36Sopenharmony_ci * regular eth FP CQE parameters struct 399762306a36Sopenharmony_ci */ 399862306a36Sopenharmony_cistruct eth_fast_path_rx_cqe { 399962306a36Sopenharmony_ci u8 type_error_flags; 400062306a36Sopenharmony_ci#define ETH_FAST_PATH_RX_CQE_TYPE (0x3<<0) 400162306a36Sopenharmony_ci#define ETH_FAST_PATH_RX_CQE_TYPE_SHIFT 0 400262306a36Sopenharmony_ci#define ETH_FAST_PATH_RX_CQE_SGL_RAW_SEL (0x1<<2) 400362306a36Sopenharmony_ci#define ETH_FAST_PATH_RX_CQE_SGL_RAW_SEL_SHIFT 2 400462306a36Sopenharmony_ci#define ETH_FAST_PATH_RX_CQE_PHY_DECODE_ERR_FLG (0x1<<3) 400562306a36Sopenharmony_ci#define ETH_FAST_PATH_RX_CQE_PHY_DECODE_ERR_FLG_SHIFT 3 400662306a36Sopenharmony_ci#define ETH_FAST_PATH_RX_CQE_IP_BAD_XSUM_FLG (0x1<<4) 400762306a36Sopenharmony_ci#define ETH_FAST_PATH_RX_CQE_IP_BAD_XSUM_FLG_SHIFT 4 400862306a36Sopenharmony_ci#define ETH_FAST_PATH_RX_CQE_L4_BAD_XSUM_FLG (0x1<<5) 400962306a36Sopenharmony_ci#define ETH_FAST_PATH_RX_CQE_L4_BAD_XSUM_FLG_SHIFT 5 401062306a36Sopenharmony_ci#define ETH_FAST_PATH_RX_CQE_PTP_PKT (0x1<<6) 401162306a36Sopenharmony_ci#define ETH_FAST_PATH_RX_CQE_PTP_PKT_SHIFT 6 401262306a36Sopenharmony_ci#define ETH_FAST_PATH_RX_CQE_RESERVED0 (0x1<<7) 401362306a36Sopenharmony_ci#define ETH_FAST_PATH_RX_CQE_RESERVED0_SHIFT 7 401462306a36Sopenharmony_ci u8 status_flags; 401562306a36Sopenharmony_ci#define ETH_FAST_PATH_RX_CQE_RSS_HASH_TYPE (0x7<<0) 401662306a36Sopenharmony_ci#define ETH_FAST_PATH_RX_CQE_RSS_HASH_TYPE_SHIFT 0 401762306a36Sopenharmony_ci#define ETH_FAST_PATH_RX_CQE_RSS_HASH_FLG (0x1<<3) 401862306a36Sopenharmony_ci#define ETH_FAST_PATH_RX_CQE_RSS_HASH_FLG_SHIFT 3 401962306a36Sopenharmony_ci#define ETH_FAST_PATH_RX_CQE_BROADCAST_FLG (0x1<<4) 402062306a36Sopenharmony_ci#define ETH_FAST_PATH_RX_CQE_BROADCAST_FLG_SHIFT 4 402162306a36Sopenharmony_ci#define ETH_FAST_PATH_RX_CQE_MAC_MATCH_FLG (0x1<<5) 402262306a36Sopenharmony_ci#define ETH_FAST_PATH_RX_CQE_MAC_MATCH_FLG_SHIFT 5 402362306a36Sopenharmony_ci#define ETH_FAST_PATH_RX_CQE_IP_XSUM_NO_VALIDATION_FLG (0x1<<6) 402462306a36Sopenharmony_ci#define ETH_FAST_PATH_RX_CQE_IP_XSUM_NO_VALIDATION_FLG_SHIFT 6 402562306a36Sopenharmony_ci#define ETH_FAST_PATH_RX_CQE_L4_XSUM_NO_VALIDATION_FLG (0x1<<7) 402662306a36Sopenharmony_ci#define ETH_FAST_PATH_RX_CQE_L4_XSUM_NO_VALIDATION_FLG_SHIFT 7 402762306a36Sopenharmony_ci u8 queue_index; 402862306a36Sopenharmony_ci u8 placement_offset; 402962306a36Sopenharmony_ci __le32 rss_hash_result; 403062306a36Sopenharmony_ci __le16 vlan_tag; 403162306a36Sopenharmony_ci __le16 pkt_len_or_gro_seg_len; 403262306a36Sopenharmony_ci __le16 len_on_bd; 403362306a36Sopenharmony_ci struct parsing_flags pars_flags; 403462306a36Sopenharmony_ci union eth_sgl_or_raw_data sgl_or_raw_data; 403562306a36Sopenharmony_ci u8 tunn_type; 403662306a36Sopenharmony_ci u8 tunn_inner_hdrs_offset; 403762306a36Sopenharmony_ci __le16 reserved1; 403862306a36Sopenharmony_ci __le32 tunn_tenant_id; 403962306a36Sopenharmony_ci __le32 padding[5]; 404062306a36Sopenharmony_ci u32 marker; 404162306a36Sopenharmony_ci}; 404262306a36Sopenharmony_ci 404362306a36Sopenharmony_ci 404462306a36Sopenharmony_ci/* 404562306a36Sopenharmony_ci * Command for setting classification flags for a client 404662306a36Sopenharmony_ci */ 404762306a36Sopenharmony_cistruct eth_filter_rules_cmd { 404862306a36Sopenharmony_ci u8 cmd_general_data; 404962306a36Sopenharmony_ci#define ETH_FILTER_RULES_CMD_RX_CMD (0x1<<0) 405062306a36Sopenharmony_ci#define ETH_FILTER_RULES_CMD_RX_CMD_SHIFT 0 405162306a36Sopenharmony_ci#define ETH_FILTER_RULES_CMD_TX_CMD (0x1<<1) 405262306a36Sopenharmony_ci#define ETH_FILTER_RULES_CMD_TX_CMD_SHIFT 1 405362306a36Sopenharmony_ci#define ETH_FILTER_RULES_CMD_RESERVED0 (0x3F<<2) 405462306a36Sopenharmony_ci#define ETH_FILTER_RULES_CMD_RESERVED0_SHIFT 2 405562306a36Sopenharmony_ci u8 func_id; 405662306a36Sopenharmony_ci u8 client_id; 405762306a36Sopenharmony_ci u8 reserved1; 405862306a36Sopenharmony_ci __le16 state; 405962306a36Sopenharmony_ci#define ETH_FILTER_RULES_CMD_UCAST_DROP_ALL (0x1<<0) 406062306a36Sopenharmony_ci#define ETH_FILTER_RULES_CMD_UCAST_DROP_ALL_SHIFT 0 406162306a36Sopenharmony_ci#define ETH_FILTER_RULES_CMD_UCAST_ACCEPT_ALL (0x1<<1) 406262306a36Sopenharmony_ci#define ETH_FILTER_RULES_CMD_UCAST_ACCEPT_ALL_SHIFT 1 406362306a36Sopenharmony_ci#define ETH_FILTER_RULES_CMD_UCAST_ACCEPT_UNMATCHED (0x1<<2) 406462306a36Sopenharmony_ci#define ETH_FILTER_RULES_CMD_UCAST_ACCEPT_UNMATCHED_SHIFT 2 406562306a36Sopenharmony_ci#define ETH_FILTER_RULES_CMD_MCAST_DROP_ALL (0x1<<3) 406662306a36Sopenharmony_ci#define ETH_FILTER_RULES_CMD_MCAST_DROP_ALL_SHIFT 3 406762306a36Sopenharmony_ci#define ETH_FILTER_RULES_CMD_MCAST_ACCEPT_ALL (0x1<<4) 406862306a36Sopenharmony_ci#define ETH_FILTER_RULES_CMD_MCAST_ACCEPT_ALL_SHIFT 4 406962306a36Sopenharmony_ci#define ETH_FILTER_RULES_CMD_BCAST_ACCEPT_ALL (0x1<<5) 407062306a36Sopenharmony_ci#define ETH_FILTER_RULES_CMD_BCAST_ACCEPT_ALL_SHIFT 5 407162306a36Sopenharmony_ci#define ETH_FILTER_RULES_CMD_ACCEPT_ANY_VLAN (0x1<<6) 407262306a36Sopenharmony_ci#define ETH_FILTER_RULES_CMD_ACCEPT_ANY_VLAN_SHIFT 6 407362306a36Sopenharmony_ci#define ETH_FILTER_RULES_CMD_RESERVED2 (0x1FF<<7) 407462306a36Sopenharmony_ci#define ETH_FILTER_RULES_CMD_RESERVED2_SHIFT 7 407562306a36Sopenharmony_ci __le16 reserved3; 407662306a36Sopenharmony_ci struct regpair reserved4; 407762306a36Sopenharmony_ci}; 407862306a36Sopenharmony_ci 407962306a36Sopenharmony_ci 408062306a36Sopenharmony_ci/* 408162306a36Sopenharmony_ci * parameters for eth classification filters ramrod 408262306a36Sopenharmony_ci */ 408362306a36Sopenharmony_cistruct eth_filter_rules_ramrod_data { 408462306a36Sopenharmony_ci struct eth_classify_header header; 408562306a36Sopenharmony_ci struct eth_filter_rules_cmd rules[FILTER_RULES_COUNT]; 408662306a36Sopenharmony_ci}; 408762306a36Sopenharmony_ci 408862306a36Sopenharmony_ci/* Hsi version */ 408962306a36Sopenharmony_cienum eth_fp_hsi_ver { 409062306a36Sopenharmony_ci ETH_FP_HSI_VER_0, 409162306a36Sopenharmony_ci ETH_FP_HSI_VER_1, 409262306a36Sopenharmony_ci ETH_FP_HSI_VER_2, 409362306a36Sopenharmony_ci MAX_ETH_FP_HSI_VER 409462306a36Sopenharmony_ci}; 409562306a36Sopenharmony_ci 409662306a36Sopenharmony_ci/* 409762306a36Sopenharmony_ci * parameters for eth classification configuration ramrod 409862306a36Sopenharmony_ci */ 409962306a36Sopenharmony_cistruct eth_general_rules_ramrod_data { 410062306a36Sopenharmony_ci struct eth_classify_header header; 410162306a36Sopenharmony_ci union eth_classify_rule_cmd rules[CLASSIFY_RULES_COUNT]; 410262306a36Sopenharmony_ci}; 410362306a36Sopenharmony_ci 410462306a36Sopenharmony_ci 410562306a36Sopenharmony_ci/* 410662306a36Sopenharmony_ci * The data for Halt ramrod 410762306a36Sopenharmony_ci */ 410862306a36Sopenharmony_cistruct eth_halt_ramrod_data { 410962306a36Sopenharmony_ci __le32 client_id; 411062306a36Sopenharmony_ci __le32 reserved0; 411162306a36Sopenharmony_ci}; 411262306a36Sopenharmony_ci 411362306a36Sopenharmony_ci 411462306a36Sopenharmony_ci/* 411562306a36Sopenharmony_ci * destination and source mac address. 411662306a36Sopenharmony_ci */ 411762306a36Sopenharmony_cistruct eth_mac_addresses { 411862306a36Sopenharmony_ci#if defined(__BIG_ENDIAN) 411962306a36Sopenharmony_ci __le16 dst_mid; 412062306a36Sopenharmony_ci __le16 dst_lo; 412162306a36Sopenharmony_ci#elif defined(__LITTLE_ENDIAN) 412262306a36Sopenharmony_ci __le16 dst_lo; 412362306a36Sopenharmony_ci __le16 dst_mid; 412462306a36Sopenharmony_ci#endif 412562306a36Sopenharmony_ci#if defined(__BIG_ENDIAN) 412662306a36Sopenharmony_ci __le16 src_lo; 412762306a36Sopenharmony_ci __le16 dst_hi; 412862306a36Sopenharmony_ci#elif defined(__LITTLE_ENDIAN) 412962306a36Sopenharmony_ci __le16 dst_hi; 413062306a36Sopenharmony_ci __le16 src_lo; 413162306a36Sopenharmony_ci#endif 413262306a36Sopenharmony_ci#if defined(__BIG_ENDIAN) 413362306a36Sopenharmony_ci __le16 src_hi; 413462306a36Sopenharmony_ci __le16 src_mid; 413562306a36Sopenharmony_ci#elif defined(__LITTLE_ENDIAN) 413662306a36Sopenharmony_ci __le16 src_mid; 413762306a36Sopenharmony_ci __le16 src_hi; 413862306a36Sopenharmony_ci#endif 413962306a36Sopenharmony_ci}; 414062306a36Sopenharmony_ci 414162306a36Sopenharmony_ci/* tunneling related data */ 414262306a36Sopenharmony_cistruct eth_tunnel_data { 414362306a36Sopenharmony_ci __le16 dst_lo; 414462306a36Sopenharmony_ci __le16 dst_mid; 414562306a36Sopenharmony_ci __le16 dst_hi; 414662306a36Sopenharmony_ci __le16 fw_ip_hdr_csum; 414762306a36Sopenharmony_ci __le16 pseudo_csum; 414862306a36Sopenharmony_ci u8 ip_hdr_start_inner_w; 414962306a36Sopenharmony_ci u8 flags; 415062306a36Sopenharmony_ci#define ETH_TUNNEL_DATA_IPV6_OUTER (0x1<<0) 415162306a36Sopenharmony_ci#define ETH_TUNNEL_DATA_IPV6_OUTER_SHIFT 0 415262306a36Sopenharmony_ci#define ETH_TUNNEL_DATA_RESERVED (0x7F<<1) 415362306a36Sopenharmony_ci#define ETH_TUNNEL_DATA_RESERVED_SHIFT 1 415462306a36Sopenharmony_ci}; 415562306a36Sopenharmony_ci 415662306a36Sopenharmony_ci/* union for mac addresses and for tunneling data. 415762306a36Sopenharmony_ci * considered as tunneling data only if (tunnel_exist == 1). 415862306a36Sopenharmony_ci */ 415962306a36Sopenharmony_ciunion eth_mac_addr_or_tunnel_data { 416062306a36Sopenharmony_ci struct eth_mac_addresses mac_addr; 416162306a36Sopenharmony_ci struct eth_tunnel_data tunnel_data; 416262306a36Sopenharmony_ci}; 416362306a36Sopenharmony_ci 416462306a36Sopenharmony_ci/*Command for setting multicast classification for a client */ 416562306a36Sopenharmony_cistruct eth_multicast_rules_cmd { 416662306a36Sopenharmony_ci u8 cmd_general_data; 416762306a36Sopenharmony_ci#define ETH_MULTICAST_RULES_CMD_RX_CMD (0x1<<0) 416862306a36Sopenharmony_ci#define ETH_MULTICAST_RULES_CMD_RX_CMD_SHIFT 0 416962306a36Sopenharmony_ci#define ETH_MULTICAST_RULES_CMD_TX_CMD (0x1<<1) 417062306a36Sopenharmony_ci#define ETH_MULTICAST_RULES_CMD_TX_CMD_SHIFT 1 417162306a36Sopenharmony_ci#define ETH_MULTICAST_RULES_CMD_IS_ADD (0x1<<2) 417262306a36Sopenharmony_ci#define ETH_MULTICAST_RULES_CMD_IS_ADD_SHIFT 2 417362306a36Sopenharmony_ci#define ETH_MULTICAST_RULES_CMD_RESERVED0 (0x1F<<3) 417462306a36Sopenharmony_ci#define ETH_MULTICAST_RULES_CMD_RESERVED0_SHIFT 3 417562306a36Sopenharmony_ci u8 func_id; 417662306a36Sopenharmony_ci u8 bin_id; 417762306a36Sopenharmony_ci u8 engine_id; 417862306a36Sopenharmony_ci __le32 reserved2; 417962306a36Sopenharmony_ci struct regpair reserved3; 418062306a36Sopenharmony_ci}; 418162306a36Sopenharmony_ci 418262306a36Sopenharmony_ci/* 418362306a36Sopenharmony_ci * parameters for multicast classification ramrod 418462306a36Sopenharmony_ci */ 418562306a36Sopenharmony_cistruct eth_multicast_rules_ramrod_data { 418662306a36Sopenharmony_ci struct eth_classify_header header; 418762306a36Sopenharmony_ci struct eth_multicast_rules_cmd rules[MULTICAST_RULES_COUNT]; 418862306a36Sopenharmony_ci}; 418962306a36Sopenharmony_ci 419062306a36Sopenharmony_ci/* 419162306a36Sopenharmony_ci * Place holder for ramrods protocol specific data 419262306a36Sopenharmony_ci */ 419362306a36Sopenharmony_cistruct ramrod_data { 419462306a36Sopenharmony_ci __le32 data_lo; 419562306a36Sopenharmony_ci __le32 data_hi; 419662306a36Sopenharmony_ci}; 419762306a36Sopenharmony_ci 419862306a36Sopenharmony_ci/* 419962306a36Sopenharmony_ci * union for ramrod data for Ethernet protocol (CQE) (force size of 16 bits) 420062306a36Sopenharmony_ci */ 420162306a36Sopenharmony_ciunion eth_ramrod_data { 420262306a36Sopenharmony_ci struct ramrod_data general; 420362306a36Sopenharmony_ci}; 420462306a36Sopenharmony_ci 420562306a36Sopenharmony_ci 420662306a36Sopenharmony_ci/* 420762306a36Sopenharmony_ci * RSS toeplitz hash type, as reported in CQE 420862306a36Sopenharmony_ci */ 420962306a36Sopenharmony_cienum eth_rss_hash_type { 421062306a36Sopenharmony_ci DEFAULT_HASH_TYPE, 421162306a36Sopenharmony_ci IPV4_HASH_TYPE, 421262306a36Sopenharmony_ci TCP_IPV4_HASH_TYPE, 421362306a36Sopenharmony_ci IPV6_HASH_TYPE, 421462306a36Sopenharmony_ci TCP_IPV6_HASH_TYPE, 421562306a36Sopenharmony_ci VLAN_PRI_HASH_TYPE, 421662306a36Sopenharmony_ci E1HOV_PRI_HASH_TYPE, 421762306a36Sopenharmony_ci DSCP_HASH_TYPE, 421862306a36Sopenharmony_ci MAX_ETH_RSS_HASH_TYPE 421962306a36Sopenharmony_ci}; 422062306a36Sopenharmony_ci 422162306a36Sopenharmony_ci 422262306a36Sopenharmony_ci/* 422362306a36Sopenharmony_ci * Ethernet RSS mode 422462306a36Sopenharmony_ci */ 422562306a36Sopenharmony_cienum eth_rss_mode { 422662306a36Sopenharmony_ci ETH_RSS_MODE_DISABLED, 422762306a36Sopenharmony_ci ETH_RSS_MODE_REGULAR, 422862306a36Sopenharmony_ci ETH_RSS_MODE_VLAN_PRI, 422962306a36Sopenharmony_ci ETH_RSS_MODE_E1HOV_PRI, 423062306a36Sopenharmony_ci ETH_RSS_MODE_IP_DSCP, 423162306a36Sopenharmony_ci MAX_ETH_RSS_MODE 423262306a36Sopenharmony_ci}; 423362306a36Sopenharmony_ci 423462306a36Sopenharmony_ci 423562306a36Sopenharmony_ci/* 423662306a36Sopenharmony_ci * parameters for RSS update ramrod (E2) 423762306a36Sopenharmony_ci */ 423862306a36Sopenharmony_cistruct eth_rss_update_ramrod_data { 423962306a36Sopenharmony_ci u8 rss_engine_id; 424062306a36Sopenharmony_ci u8 rss_mode; 424162306a36Sopenharmony_ci __le16 capabilities; 424262306a36Sopenharmony_ci#define ETH_RSS_UPDATE_RAMROD_DATA_IPV4_CAPABILITY (0x1<<0) 424362306a36Sopenharmony_ci#define ETH_RSS_UPDATE_RAMROD_DATA_IPV4_CAPABILITY_SHIFT 0 424462306a36Sopenharmony_ci#define ETH_RSS_UPDATE_RAMROD_DATA_IPV4_TCP_CAPABILITY (0x1<<1) 424562306a36Sopenharmony_ci#define ETH_RSS_UPDATE_RAMROD_DATA_IPV4_TCP_CAPABILITY_SHIFT 1 424662306a36Sopenharmony_ci#define ETH_RSS_UPDATE_RAMROD_DATA_IPV4_UDP_CAPABILITY (0x1<<2) 424762306a36Sopenharmony_ci#define ETH_RSS_UPDATE_RAMROD_DATA_IPV4_UDP_CAPABILITY_SHIFT 2 424862306a36Sopenharmony_ci#define ETH_RSS_UPDATE_RAMROD_DATA_IPV4_VXLAN_CAPABILITY (0x1<<3) 424962306a36Sopenharmony_ci#define ETH_RSS_UPDATE_RAMROD_DATA_IPV4_VXLAN_CAPABILITY_SHIFT 3 425062306a36Sopenharmony_ci#define ETH_RSS_UPDATE_RAMROD_DATA_IPV6_CAPABILITY (0x1<<4) 425162306a36Sopenharmony_ci#define ETH_RSS_UPDATE_RAMROD_DATA_IPV6_CAPABILITY_SHIFT 4 425262306a36Sopenharmony_ci#define ETH_RSS_UPDATE_RAMROD_DATA_IPV6_TCP_CAPABILITY (0x1<<5) 425362306a36Sopenharmony_ci#define ETH_RSS_UPDATE_RAMROD_DATA_IPV6_TCP_CAPABILITY_SHIFT 5 425462306a36Sopenharmony_ci#define ETH_RSS_UPDATE_RAMROD_DATA_IPV6_UDP_CAPABILITY (0x1<<6) 425562306a36Sopenharmony_ci#define ETH_RSS_UPDATE_RAMROD_DATA_IPV6_UDP_CAPABILITY_SHIFT 6 425662306a36Sopenharmony_ci#define ETH_RSS_UPDATE_RAMROD_DATA_IPV6_VXLAN_CAPABILITY (0x1<<7) 425762306a36Sopenharmony_ci#define ETH_RSS_UPDATE_RAMROD_DATA_IPV6_VXLAN_CAPABILITY_SHIFT 7 425862306a36Sopenharmony_ci#define ETH_RSS_UPDATE_RAMROD_DATA_TUNN_INNER_HDRS_CAPABILITY (0x1<<8) 425962306a36Sopenharmony_ci#define ETH_RSS_UPDATE_RAMROD_DATA_TUNN_INNER_HDRS_CAPABILITY_SHIFT 8 426062306a36Sopenharmony_ci#define ETH_RSS_UPDATE_RAMROD_DATA_UPDATE_RSS_KEY (0x1<<9) 426162306a36Sopenharmony_ci#define ETH_RSS_UPDATE_RAMROD_DATA_UPDATE_RSS_KEY_SHIFT 9 426262306a36Sopenharmony_ci#define ETH_RSS_UPDATE_RAMROD_DATA_RESERVED (0x3F<<10) 426362306a36Sopenharmony_ci#define ETH_RSS_UPDATE_RAMROD_DATA_RESERVED_SHIFT 10 426462306a36Sopenharmony_ci u8 rss_result_mask; 426562306a36Sopenharmony_ci u8 reserved3; 426662306a36Sopenharmony_ci __le16 reserved4; 426762306a36Sopenharmony_ci u8 indirection_table[T_ETH_INDIRECTION_TABLE_SIZE]; 426862306a36Sopenharmony_ci __le32 rss_key[T_ETH_RSS_KEY]; 426962306a36Sopenharmony_ci __le32 echo; 427062306a36Sopenharmony_ci __le32 reserved5; 427162306a36Sopenharmony_ci}; 427262306a36Sopenharmony_ci 427362306a36Sopenharmony_ci 427462306a36Sopenharmony_ci/* 427562306a36Sopenharmony_ci * The eth Rx Buffer Descriptor 427662306a36Sopenharmony_ci */ 427762306a36Sopenharmony_cistruct eth_rx_bd { 427862306a36Sopenharmony_ci __le32 addr_lo; 427962306a36Sopenharmony_ci __le32 addr_hi; 428062306a36Sopenharmony_ci}; 428162306a36Sopenharmony_ci 428262306a36Sopenharmony_ci 428362306a36Sopenharmony_ci/* 428462306a36Sopenharmony_ci * Eth Rx Cqe structure- general structure for ramrods 428562306a36Sopenharmony_ci */ 428662306a36Sopenharmony_cistruct common_ramrod_eth_rx_cqe { 428762306a36Sopenharmony_ci u8 ramrod_type; 428862306a36Sopenharmony_ci#define COMMON_RAMROD_ETH_RX_CQE_TYPE (0x3<<0) 428962306a36Sopenharmony_ci#define COMMON_RAMROD_ETH_RX_CQE_TYPE_SHIFT 0 429062306a36Sopenharmony_ci#define COMMON_RAMROD_ETH_RX_CQE_ERROR (0x1<<2) 429162306a36Sopenharmony_ci#define COMMON_RAMROD_ETH_RX_CQE_ERROR_SHIFT 2 429262306a36Sopenharmony_ci#define COMMON_RAMROD_ETH_RX_CQE_RESERVED0 (0x1F<<3) 429362306a36Sopenharmony_ci#define COMMON_RAMROD_ETH_RX_CQE_RESERVED0_SHIFT 3 429462306a36Sopenharmony_ci u8 conn_type; 429562306a36Sopenharmony_ci __le16 reserved1; 429662306a36Sopenharmony_ci __le32 conn_and_cmd_data; 429762306a36Sopenharmony_ci#define COMMON_RAMROD_ETH_RX_CQE_CID (0xFFFFFF<<0) 429862306a36Sopenharmony_ci#define COMMON_RAMROD_ETH_RX_CQE_CID_SHIFT 0 429962306a36Sopenharmony_ci#define COMMON_RAMROD_ETH_RX_CQE_CMD_ID (0xFF<<24) 430062306a36Sopenharmony_ci#define COMMON_RAMROD_ETH_RX_CQE_CMD_ID_SHIFT 24 430162306a36Sopenharmony_ci struct ramrod_data protocol_data; 430262306a36Sopenharmony_ci __le32 echo; 430362306a36Sopenharmony_ci __le32 reserved2[11]; 430462306a36Sopenharmony_ci}; 430562306a36Sopenharmony_ci 430662306a36Sopenharmony_ci/* 430762306a36Sopenharmony_ci * Rx Last CQE in page (in ETH) 430862306a36Sopenharmony_ci */ 430962306a36Sopenharmony_cistruct eth_rx_cqe_next_page { 431062306a36Sopenharmony_ci __le32 addr_lo; 431162306a36Sopenharmony_ci __le32 addr_hi; 431262306a36Sopenharmony_ci __le32 reserved[14]; 431362306a36Sopenharmony_ci}; 431462306a36Sopenharmony_ci 431562306a36Sopenharmony_ci/* 431662306a36Sopenharmony_ci * union for all eth rx cqe types (fix their sizes) 431762306a36Sopenharmony_ci */ 431862306a36Sopenharmony_ciunion eth_rx_cqe { 431962306a36Sopenharmony_ci struct eth_fast_path_rx_cqe fast_path_cqe; 432062306a36Sopenharmony_ci struct common_ramrod_eth_rx_cqe ramrod_cqe; 432162306a36Sopenharmony_ci struct eth_rx_cqe_next_page next_page_cqe; 432262306a36Sopenharmony_ci struct eth_end_agg_rx_cqe end_agg_cqe; 432362306a36Sopenharmony_ci}; 432462306a36Sopenharmony_ci 432562306a36Sopenharmony_ci 432662306a36Sopenharmony_ci/* 432762306a36Sopenharmony_ci * Values for RX ETH CQE type field 432862306a36Sopenharmony_ci */ 432962306a36Sopenharmony_cienum eth_rx_cqe_type { 433062306a36Sopenharmony_ci RX_ETH_CQE_TYPE_ETH_FASTPATH, 433162306a36Sopenharmony_ci RX_ETH_CQE_TYPE_ETH_RAMROD, 433262306a36Sopenharmony_ci RX_ETH_CQE_TYPE_ETH_START_AGG, 433362306a36Sopenharmony_ci RX_ETH_CQE_TYPE_ETH_STOP_AGG, 433462306a36Sopenharmony_ci MAX_ETH_RX_CQE_TYPE 433562306a36Sopenharmony_ci}; 433662306a36Sopenharmony_ci 433762306a36Sopenharmony_ci 433862306a36Sopenharmony_ci/* 433962306a36Sopenharmony_ci * Type of SGL/Raw field in ETH RX fast path CQE 434062306a36Sopenharmony_ci */ 434162306a36Sopenharmony_cienum eth_rx_fp_sel { 434262306a36Sopenharmony_ci ETH_FP_CQE_REGULAR, 434362306a36Sopenharmony_ci ETH_FP_CQE_RAW, 434462306a36Sopenharmony_ci MAX_ETH_RX_FP_SEL 434562306a36Sopenharmony_ci}; 434662306a36Sopenharmony_ci 434762306a36Sopenharmony_ci 434862306a36Sopenharmony_ci/* 434962306a36Sopenharmony_ci * The eth Rx SGE Descriptor 435062306a36Sopenharmony_ci */ 435162306a36Sopenharmony_cistruct eth_rx_sge { 435262306a36Sopenharmony_ci __le32 addr_lo; 435362306a36Sopenharmony_ci __le32 addr_hi; 435462306a36Sopenharmony_ci}; 435562306a36Sopenharmony_ci 435662306a36Sopenharmony_ci 435762306a36Sopenharmony_ci/* 435862306a36Sopenharmony_ci * common data for all protocols 435962306a36Sopenharmony_ci */ 436062306a36Sopenharmony_cistruct spe_hdr { 436162306a36Sopenharmony_ci __le32 conn_and_cmd_data; 436262306a36Sopenharmony_ci#define SPE_HDR_CID (0xFFFFFF<<0) 436362306a36Sopenharmony_ci#define SPE_HDR_CID_SHIFT 0 436462306a36Sopenharmony_ci#define SPE_HDR_CMD_ID (0xFF<<24) 436562306a36Sopenharmony_ci#define SPE_HDR_CMD_ID_SHIFT 24 436662306a36Sopenharmony_ci __le16 type; 436762306a36Sopenharmony_ci#define SPE_HDR_CONN_TYPE (0xFF<<0) 436862306a36Sopenharmony_ci#define SPE_HDR_CONN_TYPE_SHIFT 0 436962306a36Sopenharmony_ci#define SPE_HDR_FUNCTION_ID (0xFF<<8) 437062306a36Sopenharmony_ci#define SPE_HDR_FUNCTION_ID_SHIFT 8 437162306a36Sopenharmony_ci __le16 reserved1; 437262306a36Sopenharmony_ci}; 437362306a36Sopenharmony_ci 437462306a36Sopenharmony_ci/* 437562306a36Sopenharmony_ci * specific data for ethernet slow path element 437662306a36Sopenharmony_ci */ 437762306a36Sopenharmony_ciunion eth_specific_data { 437862306a36Sopenharmony_ci u8 protocol_data[8]; 437962306a36Sopenharmony_ci struct regpair client_update_ramrod_data; 438062306a36Sopenharmony_ci struct regpair client_init_ramrod_init_data; 438162306a36Sopenharmony_ci struct eth_halt_ramrod_data halt_ramrod_data; 438262306a36Sopenharmony_ci struct regpair update_data_addr; 438362306a36Sopenharmony_ci struct eth_common_ramrod_data common_ramrod_data; 438462306a36Sopenharmony_ci struct regpair classify_cfg_addr; 438562306a36Sopenharmony_ci struct regpair filter_cfg_addr; 438662306a36Sopenharmony_ci struct regpair mcast_cfg_addr; 438762306a36Sopenharmony_ci}; 438862306a36Sopenharmony_ci 438962306a36Sopenharmony_ci/* 439062306a36Sopenharmony_ci * Ethernet slow path element 439162306a36Sopenharmony_ci */ 439262306a36Sopenharmony_cistruct eth_spe { 439362306a36Sopenharmony_ci struct spe_hdr hdr; 439462306a36Sopenharmony_ci union eth_specific_data data; 439562306a36Sopenharmony_ci}; 439662306a36Sopenharmony_ci 439762306a36Sopenharmony_ci 439862306a36Sopenharmony_ci/* 439962306a36Sopenharmony_ci * Ethernet command ID for slow path elements 440062306a36Sopenharmony_ci */ 440162306a36Sopenharmony_cienum eth_spqe_cmd_id { 440262306a36Sopenharmony_ci RAMROD_CMD_ID_ETH_UNUSED, 440362306a36Sopenharmony_ci RAMROD_CMD_ID_ETH_CLIENT_SETUP, 440462306a36Sopenharmony_ci RAMROD_CMD_ID_ETH_HALT, 440562306a36Sopenharmony_ci RAMROD_CMD_ID_ETH_FORWARD_SETUP, 440662306a36Sopenharmony_ci RAMROD_CMD_ID_ETH_TX_QUEUE_SETUP, 440762306a36Sopenharmony_ci RAMROD_CMD_ID_ETH_CLIENT_UPDATE, 440862306a36Sopenharmony_ci RAMROD_CMD_ID_ETH_EMPTY, 440962306a36Sopenharmony_ci RAMROD_CMD_ID_ETH_TERMINATE, 441062306a36Sopenharmony_ci RAMROD_CMD_ID_ETH_TPA_UPDATE, 441162306a36Sopenharmony_ci RAMROD_CMD_ID_ETH_CLASSIFICATION_RULES, 441262306a36Sopenharmony_ci RAMROD_CMD_ID_ETH_FILTER_RULES, 441362306a36Sopenharmony_ci RAMROD_CMD_ID_ETH_MULTICAST_RULES, 441462306a36Sopenharmony_ci RAMROD_CMD_ID_ETH_RSS_UPDATE, 441562306a36Sopenharmony_ci RAMROD_CMD_ID_ETH_SET_MAC, 441662306a36Sopenharmony_ci MAX_ETH_SPQE_CMD_ID 441762306a36Sopenharmony_ci}; 441862306a36Sopenharmony_ci 441962306a36Sopenharmony_ci 442062306a36Sopenharmony_ci/* 442162306a36Sopenharmony_ci * eth tpa update command 442262306a36Sopenharmony_ci */ 442362306a36Sopenharmony_cienum eth_tpa_update_command { 442462306a36Sopenharmony_ci TPA_UPDATE_NONE_COMMAND, 442562306a36Sopenharmony_ci TPA_UPDATE_ENABLE_COMMAND, 442662306a36Sopenharmony_ci TPA_UPDATE_DISABLE_COMMAND, 442762306a36Sopenharmony_ci MAX_ETH_TPA_UPDATE_COMMAND 442862306a36Sopenharmony_ci}; 442962306a36Sopenharmony_ci 443062306a36Sopenharmony_ci/* In case of LSO over IPv4 tunnel, whether to increment 443162306a36Sopenharmony_ci * IP ID on external IP header or internal IP header 443262306a36Sopenharmony_ci */ 443362306a36Sopenharmony_cienum eth_tunnel_lso_inc_ip_id { 443462306a36Sopenharmony_ci EXT_HEADER, 443562306a36Sopenharmony_ci INT_HEADER, 443662306a36Sopenharmony_ci MAX_ETH_TUNNEL_LSO_INC_IP_ID 443762306a36Sopenharmony_ci}; 443862306a36Sopenharmony_ci 443962306a36Sopenharmony_ci/* In case tunnel exist and L4 checksum offload, 444062306a36Sopenharmony_ci * the pseudo checksum location, on packet or on BD. 444162306a36Sopenharmony_ci */ 444262306a36Sopenharmony_cienum eth_tunnel_non_lso_csum_location { 444362306a36Sopenharmony_ci CSUM_ON_PKT, 444462306a36Sopenharmony_ci CSUM_ON_BD, 444562306a36Sopenharmony_ci MAX_ETH_TUNNEL_NON_LSO_CSUM_LOCATION 444662306a36Sopenharmony_ci}; 444762306a36Sopenharmony_ci 444862306a36Sopenharmony_cienum eth_tunn_type { 444962306a36Sopenharmony_ci TUNN_TYPE_NONE, 445062306a36Sopenharmony_ci TUNN_TYPE_VXLAN, 445162306a36Sopenharmony_ci TUNN_TYPE_L2_GRE, 445262306a36Sopenharmony_ci TUNN_TYPE_IPV4_GRE, 445362306a36Sopenharmony_ci TUNN_TYPE_IPV6_GRE, 445462306a36Sopenharmony_ci TUNN_TYPE_L2_GENEVE, 445562306a36Sopenharmony_ci TUNN_TYPE_IPV4_GENEVE, 445662306a36Sopenharmony_ci TUNN_TYPE_IPV6_GENEVE, 445762306a36Sopenharmony_ci MAX_ETH_TUNN_TYPE 445862306a36Sopenharmony_ci}; 445962306a36Sopenharmony_ci 446062306a36Sopenharmony_ci/* 446162306a36Sopenharmony_ci * Tx regular BD structure 446262306a36Sopenharmony_ci */ 446362306a36Sopenharmony_cistruct eth_tx_bd { 446462306a36Sopenharmony_ci __le32 addr_lo; 446562306a36Sopenharmony_ci __le32 addr_hi; 446662306a36Sopenharmony_ci __le16 total_pkt_bytes; 446762306a36Sopenharmony_ci __le16 nbytes; 446862306a36Sopenharmony_ci u8 reserved[4]; 446962306a36Sopenharmony_ci}; 447062306a36Sopenharmony_ci 447162306a36Sopenharmony_ci 447262306a36Sopenharmony_ci/* 447362306a36Sopenharmony_ci * structure for easy accessibility to assembler 447462306a36Sopenharmony_ci */ 447562306a36Sopenharmony_cistruct eth_tx_bd_flags { 447662306a36Sopenharmony_ci u8 as_bitfield; 447762306a36Sopenharmony_ci#define ETH_TX_BD_FLAGS_IP_CSUM (0x1<<0) 447862306a36Sopenharmony_ci#define ETH_TX_BD_FLAGS_IP_CSUM_SHIFT 0 447962306a36Sopenharmony_ci#define ETH_TX_BD_FLAGS_L4_CSUM (0x1<<1) 448062306a36Sopenharmony_ci#define ETH_TX_BD_FLAGS_L4_CSUM_SHIFT 1 448162306a36Sopenharmony_ci#define ETH_TX_BD_FLAGS_VLAN_MODE (0x3<<2) 448262306a36Sopenharmony_ci#define ETH_TX_BD_FLAGS_VLAN_MODE_SHIFT 2 448362306a36Sopenharmony_ci#define ETH_TX_BD_FLAGS_START_BD (0x1<<4) 448462306a36Sopenharmony_ci#define ETH_TX_BD_FLAGS_START_BD_SHIFT 4 448562306a36Sopenharmony_ci#define ETH_TX_BD_FLAGS_IS_UDP (0x1<<5) 448662306a36Sopenharmony_ci#define ETH_TX_BD_FLAGS_IS_UDP_SHIFT 5 448762306a36Sopenharmony_ci#define ETH_TX_BD_FLAGS_SW_LSO (0x1<<6) 448862306a36Sopenharmony_ci#define ETH_TX_BD_FLAGS_SW_LSO_SHIFT 6 448962306a36Sopenharmony_ci#define ETH_TX_BD_FLAGS_IPV6 (0x1<<7) 449062306a36Sopenharmony_ci#define ETH_TX_BD_FLAGS_IPV6_SHIFT 7 449162306a36Sopenharmony_ci}; 449262306a36Sopenharmony_ci 449362306a36Sopenharmony_ci/* 449462306a36Sopenharmony_ci * The eth Tx Buffer Descriptor 449562306a36Sopenharmony_ci */ 449662306a36Sopenharmony_cistruct eth_tx_start_bd { 449762306a36Sopenharmony_ci __le32 addr_lo; 449862306a36Sopenharmony_ci __le32 addr_hi; 449962306a36Sopenharmony_ci __le16 nbd; 450062306a36Sopenharmony_ci __le16 nbytes; 450162306a36Sopenharmony_ci __le16 vlan_or_ethertype; 450262306a36Sopenharmony_ci struct eth_tx_bd_flags bd_flags; 450362306a36Sopenharmony_ci u8 general_data; 450462306a36Sopenharmony_ci#define ETH_TX_START_BD_HDR_NBDS (0x7<<0) 450562306a36Sopenharmony_ci#define ETH_TX_START_BD_HDR_NBDS_SHIFT 0 450662306a36Sopenharmony_ci#define ETH_TX_START_BD_NO_ADDED_TAGS (0x1<<3) 450762306a36Sopenharmony_ci#define ETH_TX_START_BD_NO_ADDED_TAGS_SHIFT 3 450862306a36Sopenharmony_ci#define ETH_TX_START_BD_FORCE_VLAN_MODE (0x1<<4) 450962306a36Sopenharmony_ci#define ETH_TX_START_BD_FORCE_VLAN_MODE_SHIFT 4 451062306a36Sopenharmony_ci#define ETH_TX_START_BD_PARSE_NBDS (0x3<<5) 451162306a36Sopenharmony_ci#define ETH_TX_START_BD_PARSE_NBDS_SHIFT 5 451262306a36Sopenharmony_ci#define ETH_TX_START_BD_TUNNEL_EXIST (0x1<<7) 451362306a36Sopenharmony_ci#define ETH_TX_START_BD_TUNNEL_EXIST_SHIFT 7 451462306a36Sopenharmony_ci}; 451562306a36Sopenharmony_ci 451662306a36Sopenharmony_ci/* 451762306a36Sopenharmony_ci * Tx parsing BD structure for ETH E1/E1h 451862306a36Sopenharmony_ci */ 451962306a36Sopenharmony_cistruct eth_tx_parse_bd_e1x { 452062306a36Sopenharmony_ci __le16 global_data; 452162306a36Sopenharmony_ci#define ETH_TX_PARSE_BD_E1X_IP_HDR_START_OFFSET_W (0xF<<0) 452262306a36Sopenharmony_ci#define ETH_TX_PARSE_BD_E1X_IP_HDR_START_OFFSET_W_SHIFT 0 452362306a36Sopenharmony_ci#define ETH_TX_PARSE_BD_E1X_ETH_ADDR_TYPE (0x3<<4) 452462306a36Sopenharmony_ci#define ETH_TX_PARSE_BD_E1X_ETH_ADDR_TYPE_SHIFT 4 452562306a36Sopenharmony_ci#define ETH_TX_PARSE_BD_E1X_PSEUDO_CS_WITHOUT_LEN (0x1<<6) 452662306a36Sopenharmony_ci#define ETH_TX_PARSE_BD_E1X_PSEUDO_CS_WITHOUT_LEN_SHIFT 6 452762306a36Sopenharmony_ci#define ETH_TX_PARSE_BD_E1X_LLC_SNAP_EN (0x1<<7) 452862306a36Sopenharmony_ci#define ETH_TX_PARSE_BD_E1X_LLC_SNAP_EN_SHIFT 7 452962306a36Sopenharmony_ci#define ETH_TX_PARSE_BD_E1X_NS_FLG (0x1<<8) 453062306a36Sopenharmony_ci#define ETH_TX_PARSE_BD_E1X_NS_FLG_SHIFT 8 453162306a36Sopenharmony_ci#define ETH_TX_PARSE_BD_E1X_RESERVED0 (0x7F<<9) 453262306a36Sopenharmony_ci#define ETH_TX_PARSE_BD_E1X_RESERVED0_SHIFT 9 453362306a36Sopenharmony_ci u8 tcp_flags; 453462306a36Sopenharmony_ci#define ETH_TX_PARSE_BD_E1X_FIN_FLG (0x1<<0) 453562306a36Sopenharmony_ci#define ETH_TX_PARSE_BD_E1X_FIN_FLG_SHIFT 0 453662306a36Sopenharmony_ci#define ETH_TX_PARSE_BD_E1X_SYN_FLG (0x1<<1) 453762306a36Sopenharmony_ci#define ETH_TX_PARSE_BD_E1X_SYN_FLG_SHIFT 1 453862306a36Sopenharmony_ci#define ETH_TX_PARSE_BD_E1X_RST_FLG (0x1<<2) 453962306a36Sopenharmony_ci#define ETH_TX_PARSE_BD_E1X_RST_FLG_SHIFT 2 454062306a36Sopenharmony_ci#define ETH_TX_PARSE_BD_E1X_PSH_FLG (0x1<<3) 454162306a36Sopenharmony_ci#define ETH_TX_PARSE_BD_E1X_PSH_FLG_SHIFT 3 454262306a36Sopenharmony_ci#define ETH_TX_PARSE_BD_E1X_ACK_FLG (0x1<<4) 454362306a36Sopenharmony_ci#define ETH_TX_PARSE_BD_E1X_ACK_FLG_SHIFT 4 454462306a36Sopenharmony_ci#define ETH_TX_PARSE_BD_E1X_URG_FLG (0x1<<5) 454562306a36Sopenharmony_ci#define ETH_TX_PARSE_BD_E1X_URG_FLG_SHIFT 5 454662306a36Sopenharmony_ci#define ETH_TX_PARSE_BD_E1X_ECE_FLG (0x1<<6) 454762306a36Sopenharmony_ci#define ETH_TX_PARSE_BD_E1X_ECE_FLG_SHIFT 6 454862306a36Sopenharmony_ci#define ETH_TX_PARSE_BD_E1X_CWR_FLG (0x1<<7) 454962306a36Sopenharmony_ci#define ETH_TX_PARSE_BD_E1X_CWR_FLG_SHIFT 7 455062306a36Sopenharmony_ci u8 ip_hlen_w; 455162306a36Sopenharmony_ci __le16 total_hlen_w; 455262306a36Sopenharmony_ci __le16 tcp_pseudo_csum; 455362306a36Sopenharmony_ci __le16 lso_mss; 455462306a36Sopenharmony_ci __le16 ip_id; 455562306a36Sopenharmony_ci __le32 tcp_send_seq; 455662306a36Sopenharmony_ci}; 455762306a36Sopenharmony_ci 455862306a36Sopenharmony_ci/* 455962306a36Sopenharmony_ci * Tx parsing BD structure for ETH E2 456062306a36Sopenharmony_ci */ 456162306a36Sopenharmony_cistruct eth_tx_parse_bd_e2 { 456262306a36Sopenharmony_ci union eth_mac_addr_or_tunnel_data data; 456362306a36Sopenharmony_ci __le32 parsing_data; 456462306a36Sopenharmony_ci#define ETH_TX_PARSE_BD_E2_L4_HDR_START_OFFSET_W (0x7FF<<0) 456562306a36Sopenharmony_ci#define ETH_TX_PARSE_BD_E2_L4_HDR_START_OFFSET_W_SHIFT 0 456662306a36Sopenharmony_ci#define ETH_TX_PARSE_BD_E2_TCP_HDR_LENGTH_DW (0xF<<11) 456762306a36Sopenharmony_ci#define ETH_TX_PARSE_BD_E2_TCP_HDR_LENGTH_DW_SHIFT 11 456862306a36Sopenharmony_ci#define ETH_TX_PARSE_BD_E2_IPV6_WITH_EXT_HDR (0x1<<15) 456962306a36Sopenharmony_ci#define ETH_TX_PARSE_BD_E2_IPV6_WITH_EXT_HDR_SHIFT 15 457062306a36Sopenharmony_ci#define ETH_TX_PARSE_BD_E2_LSO_MSS (0x3FFF<<16) 457162306a36Sopenharmony_ci#define ETH_TX_PARSE_BD_E2_LSO_MSS_SHIFT 16 457262306a36Sopenharmony_ci#define ETH_TX_PARSE_BD_E2_ETH_ADDR_TYPE (0x3<<30) 457362306a36Sopenharmony_ci#define ETH_TX_PARSE_BD_E2_ETH_ADDR_TYPE_SHIFT 30 457462306a36Sopenharmony_ci}; 457562306a36Sopenharmony_ci 457662306a36Sopenharmony_ci/* 457762306a36Sopenharmony_ci * Tx 2nd parsing BD structure for ETH packet 457862306a36Sopenharmony_ci */ 457962306a36Sopenharmony_cistruct eth_tx_parse_2nd_bd { 458062306a36Sopenharmony_ci __le16 global_data; 458162306a36Sopenharmony_ci#define ETH_TX_PARSE_2ND_BD_IP_HDR_START_OUTER_W (0xF<<0) 458262306a36Sopenharmony_ci#define ETH_TX_PARSE_2ND_BD_IP_HDR_START_OUTER_W_SHIFT 0 458362306a36Sopenharmony_ci#define ETH_TX_PARSE_2ND_BD_RESERVED0 (0x1<<4) 458462306a36Sopenharmony_ci#define ETH_TX_PARSE_2ND_BD_RESERVED0_SHIFT 4 458562306a36Sopenharmony_ci#define ETH_TX_PARSE_2ND_BD_LLC_SNAP_EN (0x1<<5) 458662306a36Sopenharmony_ci#define ETH_TX_PARSE_2ND_BD_LLC_SNAP_EN_SHIFT 5 458762306a36Sopenharmony_ci#define ETH_TX_PARSE_2ND_BD_NS_FLG (0x1<<6) 458862306a36Sopenharmony_ci#define ETH_TX_PARSE_2ND_BD_NS_FLG_SHIFT 6 458962306a36Sopenharmony_ci#define ETH_TX_PARSE_2ND_BD_TUNNEL_UDP_EXIST (0x1<<7) 459062306a36Sopenharmony_ci#define ETH_TX_PARSE_2ND_BD_TUNNEL_UDP_EXIST_SHIFT 7 459162306a36Sopenharmony_ci#define ETH_TX_PARSE_2ND_BD_IP_HDR_LEN_OUTER_W (0x1F<<8) 459262306a36Sopenharmony_ci#define ETH_TX_PARSE_2ND_BD_IP_HDR_LEN_OUTER_W_SHIFT 8 459362306a36Sopenharmony_ci#define ETH_TX_PARSE_2ND_BD_RESERVED1 (0x7<<13) 459462306a36Sopenharmony_ci#define ETH_TX_PARSE_2ND_BD_RESERVED1_SHIFT 13 459562306a36Sopenharmony_ci u8 bd_type; 459662306a36Sopenharmony_ci#define ETH_TX_PARSE_2ND_BD_TYPE (0xF<<0) 459762306a36Sopenharmony_ci#define ETH_TX_PARSE_2ND_BD_TYPE_SHIFT 0 459862306a36Sopenharmony_ci#define ETH_TX_PARSE_2ND_BD_RESERVED2 (0xF<<4) 459962306a36Sopenharmony_ci#define ETH_TX_PARSE_2ND_BD_RESERVED2_SHIFT 4 460062306a36Sopenharmony_ci u8 reserved3; 460162306a36Sopenharmony_ci u8 tcp_flags; 460262306a36Sopenharmony_ci#define ETH_TX_PARSE_2ND_BD_FIN_FLG (0x1<<0) 460362306a36Sopenharmony_ci#define ETH_TX_PARSE_2ND_BD_FIN_FLG_SHIFT 0 460462306a36Sopenharmony_ci#define ETH_TX_PARSE_2ND_BD_SYN_FLG (0x1<<1) 460562306a36Sopenharmony_ci#define ETH_TX_PARSE_2ND_BD_SYN_FLG_SHIFT 1 460662306a36Sopenharmony_ci#define ETH_TX_PARSE_2ND_BD_RST_FLG (0x1<<2) 460762306a36Sopenharmony_ci#define ETH_TX_PARSE_2ND_BD_RST_FLG_SHIFT 2 460862306a36Sopenharmony_ci#define ETH_TX_PARSE_2ND_BD_PSH_FLG (0x1<<3) 460962306a36Sopenharmony_ci#define ETH_TX_PARSE_2ND_BD_PSH_FLG_SHIFT 3 461062306a36Sopenharmony_ci#define ETH_TX_PARSE_2ND_BD_ACK_FLG (0x1<<4) 461162306a36Sopenharmony_ci#define ETH_TX_PARSE_2ND_BD_ACK_FLG_SHIFT 4 461262306a36Sopenharmony_ci#define ETH_TX_PARSE_2ND_BD_URG_FLG (0x1<<5) 461362306a36Sopenharmony_ci#define ETH_TX_PARSE_2ND_BD_URG_FLG_SHIFT 5 461462306a36Sopenharmony_ci#define ETH_TX_PARSE_2ND_BD_ECE_FLG (0x1<<6) 461562306a36Sopenharmony_ci#define ETH_TX_PARSE_2ND_BD_ECE_FLG_SHIFT 6 461662306a36Sopenharmony_ci#define ETH_TX_PARSE_2ND_BD_CWR_FLG (0x1<<7) 461762306a36Sopenharmony_ci#define ETH_TX_PARSE_2ND_BD_CWR_FLG_SHIFT 7 461862306a36Sopenharmony_ci u8 reserved4; 461962306a36Sopenharmony_ci u8 tunnel_udp_hdr_start_w; 462062306a36Sopenharmony_ci u8 fw_ip_hdr_to_payload_w; 462162306a36Sopenharmony_ci __le16 fw_ip_csum_wo_len_flags_frag; 462262306a36Sopenharmony_ci __le16 hw_ip_id; 462362306a36Sopenharmony_ci __le32 tcp_send_seq; 462462306a36Sopenharmony_ci}; 462562306a36Sopenharmony_ci 462662306a36Sopenharmony_ci/* The last BD in the BD memory will hold a pointer to the next BD memory */ 462762306a36Sopenharmony_cistruct eth_tx_next_bd { 462862306a36Sopenharmony_ci __le32 addr_lo; 462962306a36Sopenharmony_ci __le32 addr_hi; 463062306a36Sopenharmony_ci u8 reserved[8]; 463162306a36Sopenharmony_ci}; 463262306a36Sopenharmony_ci 463362306a36Sopenharmony_ci/* 463462306a36Sopenharmony_ci * union for 4 Bd types 463562306a36Sopenharmony_ci */ 463662306a36Sopenharmony_ciunion eth_tx_bd_types { 463762306a36Sopenharmony_ci struct eth_tx_start_bd start_bd; 463862306a36Sopenharmony_ci struct eth_tx_bd reg_bd; 463962306a36Sopenharmony_ci struct eth_tx_parse_bd_e1x parse_bd_e1x; 464062306a36Sopenharmony_ci struct eth_tx_parse_bd_e2 parse_bd_e2; 464162306a36Sopenharmony_ci struct eth_tx_parse_2nd_bd parse_2nd_bd; 464262306a36Sopenharmony_ci struct eth_tx_next_bd next_bd; 464362306a36Sopenharmony_ci}; 464462306a36Sopenharmony_ci 464562306a36Sopenharmony_ci/* 464662306a36Sopenharmony_ci * array of 13 bds as appears in the eth xstorm context 464762306a36Sopenharmony_ci */ 464862306a36Sopenharmony_cistruct eth_tx_bds_array { 464962306a36Sopenharmony_ci union eth_tx_bd_types bds[13]; 465062306a36Sopenharmony_ci}; 465162306a36Sopenharmony_ci 465262306a36Sopenharmony_ci 465362306a36Sopenharmony_ci/* 465462306a36Sopenharmony_ci * VLAN mode on TX BDs 465562306a36Sopenharmony_ci */ 465662306a36Sopenharmony_cienum eth_tx_vlan_type { 465762306a36Sopenharmony_ci X_ETH_NO_VLAN, 465862306a36Sopenharmony_ci X_ETH_OUTBAND_VLAN, 465962306a36Sopenharmony_ci X_ETH_INBAND_VLAN, 466062306a36Sopenharmony_ci X_ETH_FW_ADDED_VLAN, 466162306a36Sopenharmony_ci MAX_ETH_TX_VLAN_TYPE 466262306a36Sopenharmony_ci}; 466362306a36Sopenharmony_ci 466462306a36Sopenharmony_ci 466562306a36Sopenharmony_ci/* 466662306a36Sopenharmony_ci * Ethernet VLAN filtering mode in E1x 466762306a36Sopenharmony_ci */ 466862306a36Sopenharmony_cienum eth_vlan_filter_mode { 466962306a36Sopenharmony_ci ETH_VLAN_FILTER_ANY_VLAN, 467062306a36Sopenharmony_ci ETH_VLAN_FILTER_SPECIFIC_VLAN, 467162306a36Sopenharmony_ci ETH_VLAN_FILTER_CLASSIFY, 467262306a36Sopenharmony_ci MAX_ETH_VLAN_FILTER_MODE 467362306a36Sopenharmony_ci}; 467462306a36Sopenharmony_ci 467562306a36Sopenharmony_ci 467662306a36Sopenharmony_ci/* 467762306a36Sopenharmony_ci * MAC filtering configuration command header 467862306a36Sopenharmony_ci */ 467962306a36Sopenharmony_cistruct mac_configuration_hdr { 468062306a36Sopenharmony_ci u8 length; 468162306a36Sopenharmony_ci u8 offset; 468262306a36Sopenharmony_ci __le16 client_id; 468362306a36Sopenharmony_ci __le32 echo; 468462306a36Sopenharmony_ci}; 468562306a36Sopenharmony_ci 468662306a36Sopenharmony_ci/* 468762306a36Sopenharmony_ci * MAC address in list for ramrod 468862306a36Sopenharmony_ci */ 468962306a36Sopenharmony_cistruct mac_configuration_entry { 469062306a36Sopenharmony_ci __le16 lsb_mac_addr; 469162306a36Sopenharmony_ci __le16 middle_mac_addr; 469262306a36Sopenharmony_ci __le16 msb_mac_addr; 469362306a36Sopenharmony_ci __le16 vlan_id; 469462306a36Sopenharmony_ci u8 pf_id; 469562306a36Sopenharmony_ci u8 flags; 469662306a36Sopenharmony_ci#define MAC_CONFIGURATION_ENTRY_ACTION_TYPE (0x1<<0) 469762306a36Sopenharmony_ci#define MAC_CONFIGURATION_ENTRY_ACTION_TYPE_SHIFT 0 469862306a36Sopenharmony_ci#define MAC_CONFIGURATION_ENTRY_RDMA_MAC (0x1<<1) 469962306a36Sopenharmony_ci#define MAC_CONFIGURATION_ENTRY_RDMA_MAC_SHIFT 1 470062306a36Sopenharmony_ci#define MAC_CONFIGURATION_ENTRY_VLAN_FILTERING_MODE (0x3<<2) 470162306a36Sopenharmony_ci#define MAC_CONFIGURATION_ENTRY_VLAN_FILTERING_MODE_SHIFT 2 470262306a36Sopenharmony_ci#define MAC_CONFIGURATION_ENTRY_OVERRIDE_VLAN_REMOVAL (0x1<<4) 470362306a36Sopenharmony_ci#define MAC_CONFIGURATION_ENTRY_OVERRIDE_VLAN_REMOVAL_SHIFT 4 470462306a36Sopenharmony_ci#define MAC_CONFIGURATION_ENTRY_BROADCAST (0x1<<5) 470562306a36Sopenharmony_ci#define MAC_CONFIGURATION_ENTRY_BROADCAST_SHIFT 5 470662306a36Sopenharmony_ci#define MAC_CONFIGURATION_ENTRY_RESERVED1 (0x3<<6) 470762306a36Sopenharmony_ci#define MAC_CONFIGURATION_ENTRY_RESERVED1_SHIFT 6 470862306a36Sopenharmony_ci __le16 reserved0; 470962306a36Sopenharmony_ci __le32 clients_bit_vector; 471062306a36Sopenharmony_ci}; 471162306a36Sopenharmony_ci 471262306a36Sopenharmony_ci/* 471362306a36Sopenharmony_ci * MAC filtering configuration command 471462306a36Sopenharmony_ci */ 471562306a36Sopenharmony_cistruct mac_configuration_cmd { 471662306a36Sopenharmony_ci struct mac_configuration_hdr hdr; 471762306a36Sopenharmony_ci struct mac_configuration_entry config_table[64]; 471862306a36Sopenharmony_ci}; 471962306a36Sopenharmony_ci 472062306a36Sopenharmony_ci 472162306a36Sopenharmony_ci/* 472262306a36Sopenharmony_ci * Set-MAC command type (in E1x) 472362306a36Sopenharmony_ci */ 472462306a36Sopenharmony_cienum set_mac_action_type { 472562306a36Sopenharmony_ci T_ETH_MAC_COMMAND_INVALIDATE, 472662306a36Sopenharmony_ci T_ETH_MAC_COMMAND_SET, 472762306a36Sopenharmony_ci MAX_SET_MAC_ACTION_TYPE 472862306a36Sopenharmony_ci}; 472962306a36Sopenharmony_ci 473062306a36Sopenharmony_ci 473162306a36Sopenharmony_ci/* 473262306a36Sopenharmony_ci * Ethernet TPA Modes 473362306a36Sopenharmony_ci */ 473462306a36Sopenharmony_cienum tpa_mode { 473562306a36Sopenharmony_ci TPA_LRO, 473662306a36Sopenharmony_ci TPA_GRO, 473762306a36Sopenharmony_ci MAX_TPA_MODE}; 473862306a36Sopenharmony_ci 473962306a36Sopenharmony_ci 474062306a36Sopenharmony_ci/* 474162306a36Sopenharmony_ci * tpa update ramrod data 474262306a36Sopenharmony_ci */ 474362306a36Sopenharmony_cistruct tpa_update_ramrod_data { 474462306a36Sopenharmony_ci u8 update_ipv4; 474562306a36Sopenharmony_ci u8 update_ipv6; 474662306a36Sopenharmony_ci u8 client_id; 474762306a36Sopenharmony_ci u8 max_tpa_queues; 474862306a36Sopenharmony_ci u8 max_sges_for_packet; 474962306a36Sopenharmony_ci u8 complete_on_both_clients; 475062306a36Sopenharmony_ci u8 dont_verify_rings_pause_thr_flg; 475162306a36Sopenharmony_ci u8 tpa_mode; 475262306a36Sopenharmony_ci __le16 sge_buff_size; 475362306a36Sopenharmony_ci __le16 max_agg_size; 475462306a36Sopenharmony_ci __le32 sge_page_base_lo; 475562306a36Sopenharmony_ci __le32 sge_page_base_hi; 475662306a36Sopenharmony_ci __le16 sge_pause_thr_low; 475762306a36Sopenharmony_ci __le16 sge_pause_thr_high; 475862306a36Sopenharmony_ci u8 tpa_over_vlan_disable; 475962306a36Sopenharmony_ci u8 reserved[7]; 476062306a36Sopenharmony_ci}; 476162306a36Sopenharmony_ci 476262306a36Sopenharmony_ci 476362306a36Sopenharmony_ci/* 476462306a36Sopenharmony_ci * approximate-match multicast filtering for E1H per function in Tstorm 476562306a36Sopenharmony_ci */ 476662306a36Sopenharmony_cistruct tstorm_eth_approximate_match_multicast_filtering { 476762306a36Sopenharmony_ci u32 mcast_add_hash_bit_array[8]; 476862306a36Sopenharmony_ci}; 476962306a36Sopenharmony_ci 477062306a36Sopenharmony_ci 477162306a36Sopenharmony_ci/* 477262306a36Sopenharmony_ci * Common configuration parameters per function in Tstorm 477362306a36Sopenharmony_ci */ 477462306a36Sopenharmony_cistruct tstorm_eth_function_common_config { 477562306a36Sopenharmony_ci __le16 config_flags; 477662306a36Sopenharmony_ci#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV4_CAPABILITY (0x1<<0) 477762306a36Sopenharmony_ci#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV4_CAPABILITY_SHIFT 0 477862306a36Sopenharmony_ci#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV4_TCP_CAPABILITY (0x1<<1) 477962306a36Sopenharmony_ci#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV4_TCP_CAPABILITY_SHIFT 1 478062306a36Sopenharmony_ci#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV6_CAPABILITY (0x1<<2) 478162306a36Sopenharmony_ci#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV6_CAPABILITY_SHIFT 2 478262306a36Sopenharmony_ci#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV6_TCP_CAPABILITY (0x1<<3) 478362306a36Sopenharmony_ci#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV6_TCP_CAPABILITY_SHIFT 3 478462306a36Sopenharmony_ci#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_MODE (0x7<<4) 478562306a36Sopenharmony_ci#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_MODE_SHIFT 4 478662306a36Sopenharmony_ci#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_VLAN_FILTERING_ENABLE (0x1<<7) 478762306a36Sopenharmony_ci#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_VLAN_FILTERING_ENABLE_SHIFT 7 478862306a36Sopenharmony_ci#define __TSTORM_ETH_FUNCTION_COMMON_CONFIG_RESERVED0 (0xFF<<8) 478962306a36Sopenharmony_ci#define __TSTORM_ETH_FUNCTION_COMMON_CONFIG_RESERVED0_SHIFT 8 479062306a36Sopenharmony_ci u8 rss_result_mask; 479162306a36Sopenharmony_ci u8 reserved1; 479262306a36Sopenharmony_ci __le16 vlan_id[2]; 479362306a36Sopenharmony_ci}; 479462306a36Sopenharmony_ci 479562306a36Sopenharmony_ci 479662306a36Sopenharmony_ci/* 479762306a36Sopenharmony_ci * MAC filtering configuration parameters per port in Tstorm 479862306a36Sopenharmony_ci */ 479962306a36Sopenharmony_cistruct tstorm_eth_mac_filter_config { 480062306a36Sopenharmony_ci u32 ucast_drop_all; 480162306a36Sopenharmony_ci u32 ucast_accept_all; 480262306a36Sopenharmony_ci u32 mcast_drop_all; 480362306a36Sopenharmony_ci u32 mcast_accept_all; 480462306a36Sopenharmony_ci u32 bcast_accept_all; 480562306a36Sopenharmony_ci u32 vlan_filter[2]; 480662306a36Sopenharmony_ci u32 unmatched_unicast; 480762306a36Sopenharmony_ci}; 480862306a36Sopenharmony_ci 480962306a36Sopenharmony_ci 481062306a36Sopenharmony_ci/* 481162306a36Sopenharmony_ci * tx only queue init ramrod data 481262306a36Sopenharmony_ci */ 481362306a36Sopenharmony_cistruct tx_queue_init_ramrod_data { 481462306a36Sopenharmony_ci struct client_init_general_data general; 481562306a36Sopenharmony_ci struct client_init_tx_data tx; 481662306a36Sopenharmony_ci}; 481762306a36Sopenharmony_ci 481862306a36Sopenharmony_ci 481962306a36Sopenharmony_ci/* 482062306a36Sopenharmony_ci * Three RX producers for ETH 482162306a36Sopenharmony_ci */ 482262306a36Sopenharmony_cistruct ustorm_eth_rx_producers { 482362306a36Sopenharmony_ci#if defined(__BIG_ENDIAN) 482462306a36Sopenharmony_ci u16 bd_prod; 482562306a36Sopenharmony_ci u16 cqe_prod; 482662306a36Sopenharmony_ci#elif defined(__LITTLE_ENDIAN) 482762306a36Sopenharmony_ci u16 cqe_prod; 482862306a36Sopenharmony_ci u16 bd_prod; 482962306a36Sopenharmony_ci#endif 483062306a36Sopenharmony_ci#if defined(__BIG_ENDIAN) 483162306a36Sopenharmony_ci u16 reserved; 483262306a36Sopenharmony_ci u16 sge_prod; 483362306a36Sopenharmony_ci#elif defined(__LITTLE_ENDIAN) 483462306a36Sopenharmony_ci u16 sge_prod; 483562306a36Sopenharmony_ci u16 reserved; 483662306a36Sopenharmony_ci#endif 483762306a36Sopenharmony_ci}; 483862306a36Sopenharmony_ci 483962306a36Sopenharmony_ci 484062306a36Sopenharmony_ci/* 484162306a36Sopenharmony_ci * FCoE RX statistics parameters section#0 484262306a36Sopenharmony_ci */ 484362306a36Sopenharmony_cistruct fcoe_rx_stat_params_section0 { 484462306a36Sopenharmony_ci __le32 fcoe_rx_pkt_cnt; 484562306a36Sopenharmony_ci __le32 fcoe_rx_byte_cnt; 484662306a36Sopenharmony_ci}; 484762306a36Sopenharmony_ci 484862306a36Sopenharmony_ci 484962306a36Sopenharmony_ci/* 485062306a36Sopenharmony_ci * FCoE RX statistics parameters section#1 485162306a36Sopenharmony_ci */ 485262306a36Sopenharmony_cistruct fcoe_rx_stat_params_section1 { 485362306a36Sopenharmony_ci __le32 fcoe_ver_cnt; 485462306a36Sopenharmony_ci __le32 fcoe_rx_drop_pkt_cnt; 485562306a36Sopenharmony_ci}; 485662306a36Sopenharmony_ci 485762306a36Sopenharmony_ci 485862306a36Sopenharmony_ci/* 485962306a36Sopenharmony_ci * FCoE RX statistics parameters section#2 486062306a36Sopenharmony_ci */ 486162306a36Sopenharmony_cistruct fcoe_rx_stat_params_section2 { 486262306a36Sopenharmony_ci __le32 fc_crc_cnt; 486362306a36Sopenharmony_ci __le32 eofa_del_cnt; 486462306a36Sopenharmony_ci __le32 miss_frame_cnt; 486562306a36Sopenharmony_ci __le32 seq_timeout_cnt; 486662306a36Sopenharmony_ci __le32 drop_seq_cnt; 486762306a36Sopenharmony_ci __le32 fcoe_rx_drop_pkt_cnt; 486862306a36Sopenharmony_ci __le32 fcp_rx_pkt_cnt; 486962306a36Sopenharmony_ci __le32 reserved0; 487062306a36Sopenharmony_ci}; 487162306a36Sopenharmony_ci 487262306a36Sopenharmony_ci 487362306a36Sopenharmony_ci/* 487462306a36Sopenharmony_ci * FCoE TX statistics parameters 487562306a36Sopenharmony_ci */ 487662306a36Sopenharmony_cistruct fcoe_tx_stat_params { 487762306a36Sopenharmony_ci __le32 fcoe_tx_pkt_cnt; 487862306a36Sopenharmony_ci __le32 fcoe_tx_byte_cnt; 487962306a36Sopenharmony_ci __le32 fcp_tx_pkt_cnt; 488062306a36Sopenharmony_ci __le32 reserved0; 488162306a36Sopenharmony_ci}; 488262306a36Sopenharmony_ci 488362306a36Sopenharmony_ci/* 488462306a36Sopenharmony_ci * FCoE statistics parameters 488562306a36Sopenharmony_ci */ 488662306a36Sopenharmony_cistruct fcoe_statistics_params { 488762306a36Sopenharmony_ci struct fcoe_tx_stat_params tx_stat; 488862306a36Sopenharmony_ci struct fcoe_rx_stat_params_section0 rx_stat0; 488962306a36Sopenharmony_ci struct fcoe_rx_stat_params_section1 rx_stat1; 489062306a36Sopenharmony_ci struct fcoe_rx_stat_params_section2 rx_stat2; 489162306a36Sopenharmony_ci}; 489262306a36Sopenharmony_ci 489362306a36Sopenharmony_ci 489462306a36Sopenharmony_ci/* 489562306a36Sopenharmony_ci * The data afex vif list ramrod need 489662306a36Sopenharmony_ci */ 489762306a36Sopenharmony_cistruct afex_vif_list_ramrod_data { 489862306a36Sopenharmony_ci u8 afex_vif_list_command; 489962306a36Sopenharmony_ci u8 func_bit_map; 490062306a36Sopenharmony_ci __le16 vif_list_index; 490162306a36Sopenharmony_ci u8 func_to_clear; 490262306a36Sopenharmony_ci u8 echo; 490362306a36Sopenharmony_ci __le16 reserved1; 490462306a36Sopenharmony_ci}; 490562306a36Sopenharmony_ci 490662306a36Sopenharmony_cistruct c2s_pri_trans_table_entry { 490762306a36Sopenharmony_ci u8 val[MAX_VLAN_PRIORITIES]; 490862306a36Sopenharmony_ci}; 490962306a36Sopenharmony_ci 491062306a36Sopenharmony_ci/* 491162306a36Sopenharmony_ci * cfc delete event data 491262306a36Sopenharmony_ci */ 491362306a36Sopenharmony_cistruct cfc_del_event_data { 491462306a36Sopenharmony_ci __le32 cid; 491562306a36Sopenharmony_ci __le32 reserved0; 491662306a36Sopenharmony_ci __le32 reserved1; 491762306a36Sopenharmony_ci}; 491862306a36Sopenharmony_ci 491962306a36Sopenharmony_ci 492062306a36Sopenharmony_ci/* 492162306a36Sopenharmony_ci * per-port SAFC demo variables 492262306a36Sopenharmony_ci */ 492362306a36Sopenharmony_cistruct cmng_flags_per_port { 492462306a36Sopenharmony_ci u32 cmng_enables; 492562306a36Sopenharmony_ci#define CMNG_FLAGS_PER_PORT_FAIRNESS_VN (0x1<<0) 492662306a36Sopenharmony_ci#define CMNG_FLAGS_PER_PORT_FAIRNESS_VN_SHIFT 0 492762306a36Sopenharmony_ci#define CMNG_FLAGS_PER_PORT_RATE_SHAPING_VN (0x1<<1) 492862306a36Sopenharmony_ci#define CMNG_FLAGS_PER_PORT_RATE_SHAPING_VN_SHIFT 1 492962306a36Sopenharmony_ci#define CMNG_FLAGS_PER_PORT_FAIRNESS_COS (0x1<<2) 493062306a36Sopenharmony_ci#define CMNG_FLAGS_PER_PORT_FAIRNESS_COS_SHIFT 2 493162306a36Sopenharmony_ci#define CMNG_FLAGS_PER_PORT_FAIRNESS_COS_MODE (0x1<<3) 493262306a36Sopenharmony_ci#define CMNG_FLAGS_PER_PORT_FAIRNESS_COS_MODE_SHIFT 3 493362306a36Sopenharmony_ci#define __CMNG_FLAGS_PER_PORT_RESERVED0 (0xFFFFFFF<<4) 493462306a36Sopenharmony_ci#define __CMNG_FLAGS_PER_PORT_RESERVED0_SHIFT 4 493562306a36Sopenharmony_ci u32 __reserved1; 493662306a36Sopenharmony_ci}; 493762306a36Sopenharmony_ci 493862306a36Sopenharmony_ci 493962306a36Sopenharmony_ci/* 494062306a36Sopenharmony_ci * per-port rate shaping variables 494162306a36Sopenharmony_ci */ 494262306a36Sopenharmony_cistruct rate_shaping_vars_per_port { 494362306a36Sopenharmony_ci u32 rs_periodic_timeout; 494462306a36Sopenharmony_ci u32 rs_threshold; 494562306a36Sopenharmony_ci}; 494662306a36Sopenharmony_ci 494762306a36Sopenharmony_ci/* 494862306a36Sopenharmony_ci * per-port fairness variables 494962306a36Sopenharmony_ci */ 495062306a36Sopenharmony_cistruct fairness_vars_per_port { 495162306a36Sopenharmony_ci u32 upper_bound; 495262306a36Sopenharmony_ci u32 fair_threshold; 495362306a36Sopenharmony_ci u32 fairness_timeout; 495462306a36Sopenharmony_ci u32 size_thr; 495562306a36Sopenharmony_ci}; 495662306a36Sopenharmony_ci 495762306a36Sopenharmony_ci/* 495862306a36Sopenharmony_ci * per-port SAFC variables 495962306a36Sopenharmony_ci */ 496062306a36Sopenharmony_cistruct safc_struct_per_port { 496162306a36Sopenharmony_ci#if defined(__BIG_ENDIAN) 496262306a36Sopenharmony_ci u16 __reserved1; 496362306a36Sopenharmony_ci u8 __reserved0; 496462306a36Sopenharmony_ci u8 safc_timeout_usec; 496562306a36Sopenharmony_ci#elif defined(__LITTLE_ENDIAN) 496662306a36Sopenharmony_ci u8 safc_timeout_usec; 496762306a36Sopenharmony_ci u8 __reserved0; 496862306a36Sopenharmony_ci u16 __reserved1; 496962306a36Sopenharmony_ci#endif 497062306a36Sopenharmony_ci u8 cos_to_traffic_types[MAX_COS_NUMBER]; 497162306a36Sopenharmony_ci u16 cos_to_pause_mask[NUM_OF_SAFC_BITS]; 497262306a36Sopenharmony_ci}; 497362306a36Sopenharmony_ci 497462306a36Sopenharmony_ci/* 497562306a36Sopenharmony_ci * Per-port congestion management variables 497662306a36Sopenharmony_ci */ 497762306a36Sopenharmony_cistruct cmng_struct_per_port { 497862306a36Sopenharmony_ci struct rate_shaping_vars_per_port rs_vars; 497962306a36Sopenharmony_ci struct fairness_vars_per_port fair_vars; 498062306a36Sopenharmony_ci struct safc_struct_per_port safc_vars; 498162306a36Sopenharmony_ci struct cmng_flags_per_port flags; 498262306a36Sopenharmony_ci}; 498362306a36Sopenharmony_ci 498462306a36Sopenharmony_ci/* 498562306a36Sopenharmony_ci * a single rate shaping counter. can be used as protocol or vnic counter 498662306a36Sopenharmony_ci */ 498762306a36Sopenharmony_cistruct rate_shaping_counter { 498862306a36Sopenharmony_ci u32 quota; 498962306a36Sopenharmony_ci#if defined(__BIG_ENDIAN) 499062306a36Sopenharmony_ci u16 __reserved0; 499162306a36Sopenharmony_ci u16 rate; 499262306a36Sopenharmony_ci#elif defined(__LITTLE_ENDIAN) 499362306a36Sopenharmony_ci u16 rate; 499462306a36Sopenharmony_ci u16 __reserved0; 499562306a36Sopenharmony_ci#endif 499662306a36Sopenharmony_ci}; 499762306a36Sopenharmony_ci 499862306a36Sopenharmony_ci/* 499962306a36Sopenharmony_ci * per-vnic rate shaping variables 500062306a36Sopenharmony_ci */ 500162306a36Sopenharmony_cistruct rate_shaping_vars_per_vn { 500262306a36Sopenharmony_ci struct rate_shaping_counter vn_counter; 500362306a36Sopenharmony_ci}; 500462306a36Sopenharmony_ci 500562306a36Sopenharmony_ci/* 500662306a36Sopenharmony_ci * per-vnic fairness variables 500762306a36Sopenharmony_ci */ 500862306a36Sopenharmony_cistruct fairness_vars_per_vn { 500962306a36Sopenharmony_ci u32 cos_credit_delta[MAX_COS_NUMBER]; 501062306a36Sopenharmony_ci u32 vn_credit_delta; 501162306a36Sopenharmony_ci u32 __reserved0; 501262306a36Sopenharmony_ci}; 501362306a36Sopenharmony_ci 501462306a36Sopenharmony_ci/* 501562306a36Sopenharmony_ci * cmng port init state 501662306a36Sopenharmony_ci */ 501762306a36Sopenharmony_cistruct cmng_vnic { 501862306a36Sopenharmony_ci struct rate_shaping_vars_per_vn vnic_max_rate[4]; 501962306a36Sopenharmony_ci struct fairness_vars_per_vn vnic_min_rate[4]; 502062306a36Sopenharmony_ci}; 502162306a36Sopenharmony_ci 502262306a36Sopenharmony_ci/* 502362306a36Sopenharmony_ci * cmng port init state 502462306a36Sopenharmony_ci */ 502562306a36Sopenharmony_cistruct cmng_init { 502662306a36Sopenharmony_ci struct cmng_struct_per_port port; 502762306a36Sopenharmony_ci struct cmng_vnic vnic; 502862306a36Sopenharmony_ci}; 502962306a36Sopenharmony_ci 503062306a36Sopenharmony_ci 503162306a36Sopenharmony_ci/* 503262306a36Sopenharmony_ci * driver parameters for congestion management init, all rates are in Mbps 503362306a36Sopenharmony_ci */ 503462306a36Sopenharmony_cistruct cmng_init_input { 503562306a36Sopenharmony_ci u32 port_rate; 503662306a36Sopenharmony_ci u16 vnic_min_rate[4]; 503762306a36Sopenharmony_ci u16 vnic_max_rate[4]; 503862306a36Sopenharmony_ci u16 cos_min_rate[MAX_COS_NUMBER]; 503962306a36Sopenharmony_ci u16 cos_to_pause_mask[MAX_COS_NUMBER]; 504062306a36Sopenharmony_ci struct cmng_flags_per_port flags; 504162306a36Sopenharmony_ci}; 504262306a36Sopenharmony_ci 504362306a36Sopenharmony_ci 504462306a36Sopenharmony_ci/* 504562306a36Sopenharmony_ci * Protocol-common command ID for slow path elements 504662306a36Sopenharmony_ci */ 504762306a36Sopenharmony_cienum common_spqe_cmd_id { 504862306a36Sopenharmony_ci RAMROD_CMD_ID_COMMON_UNUSED, 504962306a36Sopenharmony_ci RAMROD_CMD_ID_COMMON_FUNCTION_START, 505062306a36Sopenharmony_ci RAMROD_CMD_ID_COMMON_FUNCTION_STOP, 505162306a36Sopenharmony_ci RAMROD_CMD_ID_COMMON_FUNCTION_UPDATE, 505262306a36Sopenharmony_ci RAMROD_CMD_ID_COMMON_CFC_DEL, 505362306a36Sopenharmony_ci RAMROD_CMD_ID_COMMON_CFC_DEL_WB, 505462306a36Sopenharmony_ci RAMROD_CMD_ID_COMMON_STAT_QUERY, 505562306a36Sopenharmony_ci RAMROD_CMD_ID_COMMON_STOP_TRAFFIC, 505662306a36Sopenharmony_ci RAMROD_CMD_ID_COMMON_START_TRAFFIC, 505762306a36Sopenharmony_ci RAMROD_CMD_ID_COMMON_AFEX_VIF_LISTS, 505862306a36Sopenharmony_ci RAMROD_CMD_ID_COMMON_SET_TIMESYNC, 505962306a36Sopenharmony_ci MAX_COMMON_SPQE_CMD_ID 506062306a36Sopenharmony_ci}; 506162306a36Sopenharmony_ci 506262306a36Sopenharmony_ci/* 506362306a36Sopenharmony_ci * Per-protocol connection types 506462306a36Sopenharmony_ci */ 506562306a36Sopenharmony_cienum connection_type { 506662306a36Sopenharmony_ci ETH_CONNECTION_TYPE, 506762306a36Sopenharmony_ci TOE_CONNECTION_TYPE, 506862306a36Sopenharmony_ci RDMA_CONNECTION_TYPE, 506962306a36Sopenharmony_ci ISCSI_CONNECTION_TYPE, 507062306a36Sopenharmony_ci FCOE_CONNECTION_TYPE, 507162306a36Sopenharmony_ci RESERVED_CONNECTION_TYPE_0, 507262306a36Sopenharmony_ci RESERVED_CONNECTION_TYPE_1, 507362306a36Sopenharmony_ci RESERVED_CONNECTION_TYPE_2, 507462306a36Sopenharmony_ci NONE_CONNECTION_TYPE, 507562306a36Sopenharmony_ci MAX_CONNECTION_TYPE 507662306a36Sopenharmony_ci}; 507762306a36Sopenharmony_ci 507862306a36Sopenharmony_ci 507962306a36Sopenharmony_ci/* 508062306a36Sopenharmony_ci * Cos modes 508162306a36Sopenharmony_ci */ 508262306a36Sopenharmony_cienum cos_mode { 508362306a36Sopenharmony_ci OVERRIDE_COS, 508462306a36Sopenharmony_ci STATIC_COS, 508562306a36Sopenharmony_ci FW_WRR, 508662306a36Sopenharmony_ci MAX_COS_MODE 508762306a36Sopenharmony_ci}; 508862306a36Sopenharmony_ci 508962306a36Sopenharmony_ci 509062306a36Sopenharmony_ci/* 509162306a36Sopenharmony_ci * Dynamic HC counters set by the driver 509262306a36Sopenharmony_ci */ 509362306a36Sopenharmony_cistruct hc_dynamic_drv_counter { 509462306a36Sopenharmony_ci u32 val[HC_SB_MAX_DYNAMIC_INDICES]; 509562306a36Sopenharmony_ci}; 509662306a36Sopenharmony_ci 509762306a36Sopenharmony_ci/* 509862306a36Sopenharmony_ci * zone A per-queue data 509962306a36Sopenharmony_ci */ 510062306a36Sopenharmony_cistruct cstorm_queue_zone_data { 510162306a36Sopenharmony_ci struct hc_dynamic_drv_counter hc_dyn_drv_cnt; 510262306a36Sopenharmony_ci struct regpair reserved[2]; 510362306a36Sopenharmony_ci}; 510462306a36Sopenharmony_ci 510562306a36Sopenharmony_ci 510662306a36Sopenharmony_ci/* 510762306a36Sopenharmony_ci * Vf-PF channel data in cstorm ram (non-triggered zone) 510862306a36Sopenharmony_ci */ 510962306a36Sopenharmony_cistruct vf_pf_channel_zone_data { 511062306a36Sopenharmony_ci u32 msg_addr_lo; 511162306a36Sopenharmony_ci u32 msg_addr_hi; 511262306a36Sopenharmony_ci}; 511362306a36Sopenharmony_ci 511462306a36Sopenharmony_ci/* 511562306a36Sopenharmony_ci * zone for VF non-triggered data 511662306a36Sopenharmony_ci */ 511762306a36Sopenharmony_cistruct non_trigger_vf_zone { 511862306a36Sopenharmony_ci struct vf_pf_channel_zone_data vf_pf_channel; 511962306a36Sopenharmony_ci}; 512062306a36Sopenharmony_ci 512162306a36Sopenharmony_ci/* 512262306a36Sopenharmony_ci * Vf-PF channel trigger zone in cstorm ram 512362306a36Sopenharmony_ci */ 512462306a36Sopenharmony_cistruct vf_pf_channel_zone_trigger { 512562306a36Sopenharmony_ci u8 addr_valid; 512662306a36Sopenharmony_ci}; 512762306a36Sopenharmony_ci 512862306a36Sopenharmony_ci/* 512962306a36Sopenharmony_ci * zone that triggers the in-bound interrupt 513062306a36Sopenharmony_ci */ 513162306a36Sopenharmony_cistruct trigger_vf_zone { 513262306a36Sopenharmony_ci struct vf_pf_channel_zone_trigger vf_pf_channel; 513362306a36Sopenharmony_ci u8 reserved0; 513462306a36Sopenharmony_ci u16 reserved1; 513562306a36Sopenharmony_ci u32 reserved2; 513662306a36Sopenharmony_ci}; 513762306a36Sopenharmony_ci 513862306a36Sopenharmony_ci/* 513962306a36Sopenharmony_ci * zone B per-VF data 514062306a36Sopenharmony_ci */ 514162306a36Sopenharmony_cistruct cstorm_vf_zone_data { 514262306a36Sopenharmony_ci struct non_trigger_vf_zone non_trigger; 514362306a36Sopenharmony_ci struct trigger_vf_zone trigger; 514462306a36Sopenharmony_ci}; 514562306a36Sopenharmony_ci 514662306a36Sopenharmony_ci 514762306a36Sopenharmony_ci/* 514862306a36Sopenharmony_ci * Dynamic host coalescing init parameters, per state machine 514962306a36Sopenharmony_ci */ 515062306a36Sopenharmony_cistruct dynamic_hc_sm_config { 515162306a36Sopenharmony_ci u32 threshold[3]; 515262306a36Sopenharmony_ci u8 shift_per_protocol[HC_SB_MAX_DYNAMIC_INDICES]; 515362306a36Sopenharmony_ci u8 hc_timeout0[HC_SB_MAX_DYNAMIC_INDICES]; 515462306a36Sopenharmony_ci u8 hc_timeout1[HC_SB_MAX_DYNAMIC_INDICES]; 515562306a36Sopenharmony_ci u8 hc_timeout2[HC_SB_MAX_DYNAMIC_INDICES]; 515662306a36Sopenharmony_ci u8 hc_timeout3[HC_SB_MAX_DYNAMIC_INDICES]; 515762306a36Sopenharmony_ci}; 515862306a36Sopenharmony_ci 515962306a36Sopenharmony_ci/* 516062306a36Sopenharmony_ci * Dynamic host coalescing init parameters 516162306a36Sopenharmony_ci */ 516262306a36Sopenharmony_cistruct dynamic_hc_config { 516362306a36Sopenharmony_ci struct dynamic_hc_sm_config sm_config[HC_SB_MAX_SM]; 516462306a36Sopenharmony_ci}; 516562306a36Sopenharmony_ci 516662306a36Sopenharmony_ci 516762306a36Sopenharmony_cistruct e2_integ_data { 516862306a36Sopenharmony_ci#if defined(__BIG_ENDIAN) 516962306a36Sopenharmony_ci u8 flags; 517062306a36Sopenharmony_ci#define E2_INTEG_DATA_TESTING_EN (0x1<<0) 517162306a36Sopenharmony_ci#define E2_INTEG_DATA_TESTING_EN_SHIFT 0 517262306a36Sopenharmony_ci#define E2_INTEG_DATA_LB_TX (0x1<<1) 517362306a36Sopenharmony_ci#define E2_INTEG_DATA_LB_TX_SHIFT 1 517462306a36Sopenharmony_ci#define E2_INTEG_DATA_COS_TX (0x1<<2) 517562306a36Sopenharmony_ci#define E2_INTEG_DATA_COS_TX_SHIFT 2 517662306a36Sopenharmony_ci#define E2_INTEG_DATA_OPPORTUNISTICQM (0x1<<3) 517762306a36Sopenharmony_ci#define E2_INTEG_DATA_OPPORTUNISTICQM_SHIFT 3 517862306a36Sopenharmony_ci#define E2_INTEG_DATA_DPMTESTRELEASEDQ (0x1<<4) 517962306a36Sopenharmony_ci#define E2_INTEG_DATA_DPMTESTRELEASEDQ_SHIFT 4 518062306a36Sopenharmony_ci#define E2_INTEG_DATA_RESERVED (0x7<<5) 518162306a36Sopenharmony_ci#define E2_INTEG_DATA_RESERVED_SHIFT 5 518262306a36Sopenharmony_ci u8 cos; 518362306a36Sopenharmony_ci u8 voq; 518462306a36Sopenharmony_ci u8 pbf_queue; 518562306a36Sopenharmony_ci#elif defined(__LITTLE_ENDIAN) 518662306a36Sopenharmony_ci u8 pbf_queue; 518762306a36Sopenharmony_ci u8 voq; 518862306a36Sopenharmony_ci u8 cos; 518962306a36Sopenharmony_ci u8 flags; 519062306a36Sopenharmony_ci#define E2_INTEG_DATA_TESTING_EN (0x1<<0) 519162306a36Sopenharmony_ci#define E2_INTEG_DATA_TESTING_EN_SHIFT 0 519262306a36Sopenharmony_ci#define E2_INTEG_DATA_LB_TX (0x1<<1) 519362306a36Sopenharmony_ci#define E2_INTEG_DATA_LB_TX_SHIFT 1 519462306a36Sopenharmony_ci#define E2_INTEG_DATA_COS_TX (0x1<<2) 519562306a36Sopenharmony_ci#define E2_INTEG_DATA_COS_TX_SHIFT 2 519662306a36Sopenharmony_ci#define E2_INTEG_DATA_OPPORTUNISTICQM (0x1<<3) 519762306a36Sopenharmony_ci#define E2_INTEG_DATA_OPPORTUNISTICQM_SHIFT 3 519862306a36Sopenharmony_ci#define E2_INTEG_DATA_DPMTESTRELEASEDQ (0x1<<4) 519962306a36Sopenharmony_ci#define E2_INTEG_DATA_DPMTESTRELEASEDQ_SHIFT 4 520062306a36Sopenharmony_ci#define E2_INTEG_DATA_RESERVED (0x7<<5) 520162306a36Sopenharmony_ci#define E2_INTEG_DATA_RESERVED_SHIFT 5 520262306a36Sopenharmony_ci#endif 520362306a36Sopenharmony_ci#if defined(__BIG_ENDIAN) 520462306a36Sopenharmony_ci u16 reserved3; 520562306a36Sopenharmony_ci u8 reserved2; 520662306a36Sopenharmony_ci u8 ramEn; 520762306a36Sopenharmony_ci#elif defined(__LITTLE_ENDIAN) 520862306a36Sopenharmony_ci u8 ramEn; 520962306a36Sopenharmony_ci u8 reserved2; 521062306a36Sopenharmony_ci u16 reserved3; 521162306a36Sopenharmony_ci#endif 521262306a36Sopenharmony_ci}; 521362306a36Sopenharmony_ci 521462306a36Sopenharmony_ci 521562306a36Sopenharmony_ci/* 521662306a36Sopenharmony_ci * set mac event data 521762306a36Sopenharmony_ci */ 521862306a36Sopenharmony_cistruct eth_event_data { 521962306a36Sopenharmony_ci __le32 echo; 522062306a36Sopenharmony_ci __le32 reserved0; 522162306a36Sopenharmony_ci __le32 reserved1; 522262306a36Sopenharmony_ci}; 522362306a36Sopenharmony_ci 522462306a36Sopenharmony_ci 522562306a36Sopenharmony_ci/* 522662306a36Sopenharmony_ci * pf-vf event data 522762306a36Sopenharmony_ci */ 522862306a36Sopenharmony_cistruct vf_pf_event_data { 522962306a36Sopenharmony_ci u8 vf_id; 523062306a36Sopenharmony_ci u8 reserved0; 523162306a36Sopenharmony_ci __le16 reserved1; 523262306a36Sopenharmony_ci __le32 msg_addr_lo; 523362306a36Sopenharmony_ci __le32 msg_addr_hi; 523462306a36Sopenharmony_ci}; 523562306a36Sopenharmony_ci 523662306a36Sopenharmony_ci/* 523762306a36Sopenharmony_ci * VF FLR event data 523862306a36Sopenharmony_ci */ 523962306a36Sopenharmony_cistruct vf_flr_event_data { 524062306a36Sopenharmony_ci u8 vf_id; 524162306a36Sopenharmony_ci u8 reserved0; 524262306a36Sopenharmony_ci __le16 reserved1; 524362306a36Sopenharmony_ci __le32 reserved2; 524462306a36Sopenharmony_ci __le32 reserved3; 524562306a36Sopenharmony_ci}; 524662306a36Sopenharmony_ci 524762306a36Sopenharmony_ci/* 524862306a36Sopenharmony_ci * malicious VF event data 524962306a36Sopenharmony_ci */ 525062306a36Sopenharmony_cistruct malicious_vf_event_data { 525162306a36Sopenharmony_ci u8 vf_id; 525262306a36Sopenharmony_ci u8 err_id; 525362306a36Sopenharmony_ci __le16 reserved1; 525462306a36Sopenharmony_ci __le32 reserved2; 525562306a36Sopenharmony_ci __le32 reserved3; 525662306a36Sopenharmony_ci}; 525762306a36Sopenharmony_ci 525862306a36Sopenharmony_ci/* 525962306a36Sopenharmony_ci * vif list event data 526062306a36Sopenharmony_ci */ 526162306a36Sopenharmony_cistruct vif_list_event_data { 526262306a36Sopenharmony_ci u8 func_bit_map; 526362306a36Sopenharmony_ci u8 echo; 526462306a36Sopenharmony_ci __le16 reserved0; 526562306a36Sopenharmony_ci __le32 reserved1; 526662306a36Sopenharmony_ci __le32 reserved2; 526762306a36Sopenharmony_ci}; 526862306a36Sopenharmony_ci 526962306a36Sopenharmony_ci/* function update event data */ 527062306a36Sopenharmony_cistruct function_update_event_data { 527162306a36Sopenharmony_ci u8 echo; 527262306a36Sopenharmony_ci u8 reserved; 527362306a36Sopenharmony_ci __le16 reserved0; 527462306a36Sopenharmony_ci __le32 reserved1; 527562306a36Sopenharmony_ci __le32 reserved2; 527662306a36Sopenharmony_ci}; 527762306a36Sopenharmony_ci 527862306a36Sopenharmony_ci 527962306a36Sopenharmony_ci/* union for all event ring message types */ 528062306a36Sopenharmony_ciunion event_data { 528162306a36Sopenharmony_ci struct vf_pf_event_data vf_pf_event; 528262306a36Sopenharmony_ci struct eth_event_data eth_event; 528362306a36Sopenharmony_ci struct cfc_del_event_data cfc_del_event; 528462306a36Sopenharmony_ci struct vf_flr_event_data vf_flr_event; 528562306a36Sopenharmony_ci struct malicious_vf_event_data malicious_vf_event; 528662306a36Sopenharmony_ci struct vif_list_event_data vif_list_event; 528762306a36Sopenharmony_ci struct function_update_event_data function_update_event; 528862306a36Sopenharmony_ci}; 528962306a36Sopenharmony_ci 529062306a36Sopenharmony_ci 529162306a36Sopenharmony_ci/* 529262306a36Sopenharmony_ci * per PF event ring data 529362306a36Sopenharmony_ci */ 529462306a36Sopenharmony_cistruct event_ring_data { 529562306a36Sopenharmony_ci struct regpair_native base_addr; 529662306a36Sopenharmony_ci#if defined(__BIG_ENDIAN) 529762306a36Sopenharmony_ci u8 index_id; 529862306a36Sopenharmony_ci u8 sb_id; 529962306a36Sopenharmony_ci u16 producer; 530062306a36Sopenharmony_ci#elif defined(__LITTLE_ENDIAN) 530162306a36Sopenharmony_ci u16 producer; 530262306a36Sopenharmony_ci u8 sb_id; 530362306a36Sopenharmony_ci u8 index_id; 530462306a36Sopenharmony_ci#endif 530562306a36Sopenharmony_ci u32 reserved0; 530662306a36Sopenharmony_ci}; 530762306a36Sopenharmony_ci 530862306a36Sopenharmony_ci 530962306a36Sopenharmony_ci/* 531062306a36Sopenharmony_ci * event ring message element (each element is 128 bits) 531162306a36Sopenharmony_ci */ 531262306a36Sopenharmony_cistruct event_ring_msg { 531362306a36Sopenharmony_ci u8 opcode; 531462306a36Sopenharmony_ci u8 error; 531562306a36Sopenharmony_ci u16 reserved1; 531662306a36Sopenharmony_ci union event_data data; 531762306a36Sopenharmony_ci}; 531862306a36Sopenharmony_ci 531962306a36Sopenharmony_ci/* 532062306a36Sopenharmony_ci * event ring next page element (128 bits) 532162306a36Sopenharmony_ci */ 532262306a36Sopenharmony_cistruct event_ring_next { 532362306a36Sopenharmony_ci struct regpair addr; 532462306a36Sopenharmony_ci u32 reserved[2]; 532562306a36Sopenharmony_ci}; 532662306a36Sopenharmony_ci 532762306a36Sopenharmony_ci/* 532862306a36Sopenharmony_ci * union for event ring element types (each element is 128 bits) 532962306a36Sopenharmony_ci */ 533062306a36Sopenharmony_ciunion event_ring_elem { 533162306a36Sopenharmony_ci struct event_ring_msg message; 533262306a36Sopenharmony_ci struct event_ring_next next_page; 533362306a36Sopenharmony_ci}; 533462306a36Sopenharmony_ci 533562306a36Sopenharmony_ci 533662306a36Sopenharmony_ci/* 533762306a36Sopenharmony_ci * Common event ring opcodes 533862306a36Sopenharmony_ci */ 533962306a36Sopenharmony_cienum event_ring_opcode { 534062306a36Sopenharmony_ci EVENT_RING_OPCODE_VF_PF_CHANNEL, 534162306a36Sopenharmony_ci EVENT_RING_OPCODE_FUNCTION_START, 534262306a36Sopenharmony_ci EVENT_RING_OPCODE_FUNCTION_STOP, 534362306a36Sopenharmony_ci EVENT_RING_OPCODE_CFC_DEL, 534462306a36Sopenharmony_ci EVENT_RING_OPCODE_CFC_DEL_WB, 534562306a36Sopenharmony_ci EVENT_RING_OPCODE_STAT_QUERY, 534662306a36Sopenharmony_ci EVENT_RING_OPCODE_STOP_TRAFFIC, 534762306a36Sopenharmony_ci EVENT_RING_OPCODE_START_TRAFFIC, 534862306a36Sopenharmony_ci EVENT_RING_OPCODE_VF_FLR, 534962306a36Sopenharmony_ci EVENT_RING_OPCODE_MALICIOUS_VF, 535062306a36Sopenharmony_ci EVENT_RING_OPCODE_FORWARD_SETUP, 535162306a36Sopenharmony_ci EVENT_RING_OPCODE_RSS_UPDATE_RULES, 535262306a36Sopenharmony_ci EVENT_RING_OPCODE_FUNCTION_UPDATE, 535362306a36Sopenharmony_ci EVENT_RING_OPCODE_AFEX_VIF_LISTS, 535462306a36Sopenharmony_ci EVENT_RING_OPCODE_SET_MAC, 535562306a36Sopenharmony_ci EVENT_RING_OPCODE_CLASSIFICATION_RULES, 535662306a36Sopenharmony_ci EVENT_RING_OPCODE_FILTERS_RULES, 535762306a36Sopenharmony_ci EVENT_RING_OPCODE_MULTICAST_RULES, 535862306a36Sopenharmony_ci EVENT_RING_OPCODE_SET_TIMESYNC, 535962306a36Sopenharmony_ci MAX_EVENT_RING_OPCODE 536062306a36Sopenharmony_ci}; 536162306a36Sopenharmony_ci 536262306a36Sopenharmony_ci/* 536362306a36Sopenharmony_ci * Modes for fairness algorithm 536462306a36Sopenharmony_ci */ 536562306a36Sopenharmony_cienum fairness_mode { 536662306a36Sopenharmony_ci FAIRNESS_COS_WRR_MODE, 536762306a36Sopenharmony_ci FAIRNESS_COS_ETS_MODE, 536862306a36Sopenharmony_ci MAX_FAIRNESS_MODE 536962306a36Sopenharmony_ci}; 537062306a36Sopenharmony_ci 537162306a36Sopenharmony_ci 537262306a36Sopenharmony_ci/* 537362306a36Sopenharmony_ci * Priority and cos 537462306a36Sopenharmony_ci */ 537562306a36Sopenharmony_cistruct priority_cos { 537662306a36Sopenharmony_ci u8 priority; 537762306a36Sopenharmony_ci u8 cos; 537862306a36Sopenharmony_ci __le16 reserved1; 537962306a36Sopenharmony_ci}; 538062306a36Sopenharmony_ci 538162306a36Sopenharmony_ci/* 538262306a36Sopenharmony_ci * The data for flow control configuration 538362306a36Sopenharmony_ci */ 538462306a36Sopenharmony_cistruct flow_control_configuration { 538562306a36Sopenharmony_ci struct priority_cos traffic_type_to_priority_cos[MAX_TRAFFIC_TYPES]; 538662306a36Sopenharmony_ci u8 dcb_enabled; 538762306a36Sopenharmony_ci u8 dcb_version; 538862306a36Sopenharmony_ci u8 dont_add_pri_0_en; 538962306a36Sopenharmony_ci u8 reserved1; 539062306a36Sopenharmony_ci __le32 reserved2; 539162306a36Sopenharmony_ci u8 dcb_outer_pri[MAX_TRAFFIC_TYPES]; 539262306a36Sopenharmony_ci}; 539362306a36Sopenharmony_ci 539462306a36Sopenharmony_ci 539562306a36Sopenharmony_ci/* 539662306a36Sopenharmony_ci * 539762306a36Sopenharmony_ci */ 539862306a36Sopenharmony_cistruct function_start_data { 539962306a36Sopenharmony_ci u8 function_mode; 540062306a36Sopenharmony_ci u8 allow_npar_tx_switching; 540162306a36Sopenharmony_ci __le16 sd_vlan_tag; 540262306a36Sopenharmony_ci __le16 vif_id; 540362306a36Sopenharmony_ci u8 path_id; 540462306a36Sopenharmony_ci u8 network_cos_mode; 540562306a36Sopenharmony_ci u8 dmae_cmd_id; 540662306a36Sopenharmony_ci u8 no_added_tags; 540762306a36Sopenharmony_ci __le16 reserved0; 540862306a36Sopenharmony_ci __le32 reserved1; 540962306a36Sopenharmony_ci u8 inner_clss_vxlan; 541062306a36Sopenharmony_ci u8 inner_clss_l2gre; 541162306a36Sopenharmony_ci u8 inner_clss_l2geneve; 541262306a36Sopenharmony_ci u8 inner_rss; 541362306a36Sopenharmony_ci __le16 vxlan_dst_port; 541462306a36Sopenharmony_ci __le16 geneve_dst_port; 541562306a36Sopenharmony_ci u8 sd_accept_mf_clss_fail; 541662306a36Sopenharmony_ci u8 sd_accept_mf_clss_fail_match_ethtype; 541762306a36Sopenharmony_ci __le16 sd_accept_mf_clss_fail_ethtype; 541862306a36Sopenharmony_ci __le16 sd_vlan_eth_type; 541962306a36Sopenharmony_ci u8 sd_vlan_force_pri_flg; 542062306a36Sopenharmony_ci u8 sd_vlan_force_pri_val; 542162306a36Sopenharmony_ci u8 c2s_pri_tt_valid; 542262306a36Sopenharmony_ci u8 c2s_pri_default; 542362306a36Sopenharmony_ci u8 tx_vlan_filtering_enable; 542462306a36Sopenharmony_ci u8 tx_vlan_filtering_use_pvid; 542562306a36Sopenharmony_ci u8 reserved2[4]; 542662306a36Sopenharmony_ci struct c2s_pri_trans_table_entry c2s_pri_trans_table; 542762306a36Sopenharmony_ci}; 542862306a36Sopenharmony_ci 542962306a36Sopenharmony_cistruct function_update_data { 543062306a36Sopenharmony_ci u8 vif_id_change_flg; 543162306a36Sopenharmony_ci u8 afex_default_vlan_change_flg; 543262306a36Sopenharmony_ci u8 allowed_priorities_change_flg; 543362306a36Sopenharmony_ci u8 network_cos_mode_change_flg; 543462306a36Sopenharmony_ci __le16 vif_id; 543562306a36Sopenharmony_ci __le16 afex_default_vlan; 543662306a36Sopenharmony_ci u8 allowed_priorities; 543762306a36Sopenharmony_ci u8 network_cos_mode; 543862306a36Sopenharmony_ci u8 lb_mode_en_change_flg; 543962306a36Sopenharmony_ci u8 lb_mode_en; 544062306a36Sopenharmony_ci u8 tx_switch_suspend_change_flg; 544162306a36Sopenharmony_ci u8 tx_switch_suspend; 544262306a36Sopenharmony_ci u8 echo; 544362306a36Sopenharmony_ci u8 update_tunn_cfg_flg; 544462306a36Sopenharmony_ci u8 inner_clss_vxlan; 544562306a36Sopenharmony_ci u8 inner_clss_l2gre; 544662306a36Sopenharmony_ci u8 inner_clss_l2geneve; 544762306a36Sopenharmony_ci u8 inner_rss; 544862306a36Sopenharmony_ci __le16 vxlan_dst_port; 544962306a36Sopenharmony_ci __le16 geneve_dst_port; 545062306a36Sopenharmony_ci u8 sd_vlan_force_pri_change_flg; 545162306a36Sopenharmony_ci u8 sd_vlan_force_pri_flg; 545262306a36Sopenharmony_ci u8 sd_vlan_force_pri_val; 545362306a36Sopenharmony_ci u8 sd_vlan_tag_change_flg; 545462306a36Sopenharmony_ci u8 sd_vlan_eth_type_change_flg; 545562306a36Sopenharmony_ci u8 reserved1; 545662306a36Sopenharmony_ci __le16 sd_vlan_tag; 545762306a36Sopenharmony_ci __le16 sd_vlan_eth_type; 545862306a36Sopenharmony_ci u8 tx_vlan_filtering_pvid_change_flg; 545962306a36Sopenharmony_ci u8 reserved0; 546062306a36Sopenharmony_ci __le32 reserved2; 546162306a36Sopenharmony_ci}; 546262306a36Sopenharmony_ci 546362306a36Sopenharmony_ci/* 546462306a36Sopenharmony_ci * FW version stored in the Xstorm RAM 546562306a36Sopenharmony_ci */ 546662306a36Sopenharmony_cistruct fw_version { 546762306a36Sopenharmony_ci#if defined(__BIG_ENDIAN) 546862306a36Sopenharmony_ci u8 engineering; 546962306a36Sopenharmony_ci u8 revision; 547062306a36Sopenharmony_ci u8 minor; 547162306a36Sopenharmony_ci u8 major; 547262306a36Sopenharmony_ci#elif defined(__LITTLE_ENDIAN) 547362306a36Sopenharmony_ci u8 major; 547462306a36Sopenharmony_ci u8 minor; 547562306a36Sopenharmony_ci u8 revision; 547662306a36Sopenharmony_ci u8 engineering; 547762306a36Sopenharmony_ci#endif 547862306a36Sopenharmony_ci u32 flags; 547962306a36Sopenharmony_ci#define FW_VERSION_OPTIMIZED (0x1<<0) 548062306a36Sopenharmony_ci#define FW_VERSION_OPTIMIZED_SHIFT 0 548162306a36Sopenharmony_ci#define FW_VERSION_BIG_ENDIEN (0x1<<1) 548262306a36Sopenharmony_ci#define FW_VERSION_BIG_ENDIEN_SHIFT 1 548362306a36Sopenharmony_ci#define FW_VERSION_CHIP_VERSION (0x3<<2) 548462306a36Sopenharmony_ci#define FW_VERSION_CHIP_VERSION_SHIFT 2 548562306a36Sopenharmony_ci#define __FW_VERSION_RESERVED (0xFFFFFFF<<4) 548662306a36Sopenharmony_ci#define __FW_VERSION_RESERVED_SHIFT 4 548762306a36Sopenharmony_ci}; 548862306a36Sopenharmony_ci 548962306a36Sopenharmony_ci/* 549062306a36Sopenharmony_ci * Dynamic Host-Coalescing - Driver(host) counters 549162306a36Sopenharmony_ci */ 549262306a36Sopenharmony_cistruct hc_dynamic_sb_drv_counters { 549362306a36Sopenharmony_ci u32 dynamic_hc_drv_counter[HC_SB_MAX_DYNAMIC_INDICES]; 549462306a36Sopenharmony_ci}; 549562306a36Sopenharmony_ci 549662306a36Sopenharmony_ci 549762306a36Sopenharmony_ci/* 549862306a36Sopenharmony_ci * 2 bytes. configuration/state parameters for a single protocol index 549962306a36Sopenharmony_ci */ 550062306a36Sopenharmony_cistruct hc_index_data { 550162306a36Sopenharmony_ci#if defined(__BIG_ENDIAN) 550262306a36Sopenharmony_ci u8 flags; 550362306a36Sopenharmony_ci#define HC_INDEX_DATA_SM_ID (0x1<<0) 550462306a36Sopenharmony_ci#define HC_INDEX_DATA_SM_ID_SHIFT 0 550562306a36Sopenharmony_ci#define HC_INDEX_DATA_HC_ENABLED (0x1<<1) 550662306a36Sopenharmony_ci#define HC_INDEX_DATA_HC_ENABLED_SHIFT 1 550762306a36Sopenharmony_ci#define HC_INDEX_DATA_DYNAMIC_HC_ENABLED (0x1<<2) 550862306a36Sopenharmony_ci#define HC_INDEX_DATA_DYNAMIC_HC_ENABLED_SHIFT 2 550962306a36Sopenharmony_ci#define HC_INDEX_DATA_RESERVE (0x1F<<3) 551062306a36Sopenharmony_ci#define HC_INDEX_DATA_RESERVE_SHIFT 3 551162306a36Sopenharmony_ci u8 timeout; 551262306a36Sopenharmony_ci#elif defined(__LITTLE_ENDIAN) 551362306a36Sopenharmony_ci u8 timeout; 551462306a36Sopenharmony_ci u8 flags; 551562306a36Sopenharmony_ci#define HC_INDEX_DATA_SM_ID (0x1<<0) 551662306a36Sopenharmony_ci#define HC_INDEX_DATA_SM_ID_SHIFT 0 551762306a36Sopenharmony_ci#define HC_INDEX_DATA_HC_ENABLED (0x1<<1) 551862306a36Sopenharmony_ci#define HC_INDEX_DATA_HC_ENABLED_SHIFT 1 551962306a36Sopenharmony_ci#define HC_INDEX_DATA_DYNAMIC_HC_ENABLED (0x1<<2) 552062306a36Sopenharmony_ci#define HC_INDEX_DATA_DYNAMIC_HC_ENABLED_SHIFT 2 552162306a36Sopenharmony_ci#define HC_INDEX_DATA_RESERVE (0x1F<<3) 552262306a36Sopenharmony_ci#define HC_INDEX_DATA_RESERVE_SHIFT 3 552362306a36Sopenharmony_ci#endif 552462306a36Sopenharmony_ci}; 552562306a36Sopenharmony_ci 552662306a36Sopenharmony_ci 552762306a36Sopenharmony_ci/* 552862306a36Sopenharmony_ci * HC state-machine 552962306a36Sopenharmony_ci */ 553062306a36Sopenharmony_cistruct hc_status_block_sm { 553162306a36Sopenharmony_ci#if defined(__BIG_ENDIAN) 553262306a36Sopenharmony_ci u8 igu_seg_id; 553362306a36Sopenharmony_ci u8 igu_sb_id; 553462306a36Sopenharmony_ci u8 timer_value; 553562306a36Sopenharmony_ci u8 __flags; 553662306a36Sopenharmony_ci#elif defined(__LITTLE_ENDIAN) 553762306a36Sopenharmony_ci u8 __flags; 553862306a36Sopenharmony_ci u8 timer_value; 553962306a36Sopenharmony_ci u8 igu_sb_id; 554062306a36Sopenharmony_ci u8 igu_seg_id; 554162306a36Sopenharmony_ci#endif 554262306a36Sopenharmony_ci u32 time_to_expire; 554362306a36Sopenharmony_ci}; 554462306a36Sopenharmony_ci 554562306a36Sopenharmony_ci/* 554662306a36Sopenharmony_ci * hold PCI identification variables- used in various places in firmware 554762306a36Sopenharmony_ci */ 554862306a36Sopenharmony_cistruct pci_entity { 554962306a36Sopenharmony_ci#if defined(__BIG_ENDIAN) 555062306a36Sopenharmony_ci u8 vf_valid; 555162306a36Sopenharmony_ci u8 vf_id; 555262306a36Sopenharmony_ci u8 vnic_id; 555362306a36Sopenharmony_ci u8 pf_id; 555462306a36Sopenharmony_ci#elif defined(__LITTLE_ENDIAN) 555562306a36Sopenharmony_ci u8 pf_id; 555662306a36Sopenharmony_ci u8 vnic_id; 555762306a36Sopenharmony_ci u8 vf_id; 555862306a36Sopenharmony_ci u8 vf_valid; 555962306a36Sopenharmony_ci#endif 556062306a36Sopenharmony_ci}; 556162306a36Sopenharmony_ci 556262306a36Sopenharmony_ci/* 556362306a36Sopenharmony_ci * The fast-path status block meta-data, common to all chips 556462306a36Sopenharmony_ci */ 556562306a36Sopenharmony_cistruct hc_sb_data { 556662306a36Sopenharmony_ci struct regpair_native host_sb_addr; 556762306a36Sopenharmony_ci struct hc_status_block_sm state_machine[HC_SB_MAX_SM]; 556862306a36Sopenharmony_ci struct pci_entity p_func; 556962306a36Sopenharmony_ci#if defined(__BIG_ENDIAN) 557062306a36Sopenharmony_ci u8 rsrv0; 557162306a36Sopenharmony_ci u8 state; 557262306a36Sopenharmony_ci u8 dhc_qzone_id; 557362306a36Sopenharmony_ci u8 same_igu_sb_1b; 557462306a36Sopenharmony_ci#elif defined(__LITTLE_ENDIAN) 557562306a36Sopenharmony_ci u8 same_igu_sb_1b; 557662306a36Sopenharmony_ci u8 dhc_qzone_id; 557762306a36Sopenharmony_ci u8 state; 557862306a36Sopenharmony_ci u8 rsrv0; 557962306a36Sopenharmony_ci#endif 558062306a36Sopenharmony_ci struct regpair_native rsrv1[2]; 558162306a36Sopenharmony_ci}; 558262306a36Sopenharmony_ci 558362306a36Sopenharmony_ci 558462306a36Sopenharmony_ci/* 558562306a36Sopenharmony_ci * Segment types for host coaslescing 558662306a36Sopenharmony_ci */ 558762306a36Sopenharmony_cienum hc_segment { 558862306a36Sopenharmony_ci HC_REGULAR_SEGMENT, 558962306a36Sopenharmony_ci HC_DEFAULT_SEGMENT, 559062306a36Sopenharmony_ci MAX_HC_SEGMENT 559162306a36Sopenharmony_ci}; 559262306a36Sopenharmony_ci 559362306a36Sopenharmony_ci 559462306a36Sopenharmony_ci/* 559562306a36Sopenharmony_ci * The fast-path status block meta-data 559662306a36Sopenharmony_ci */ 559762306a36Sopenharmony_cistruct hc_sp_status_block_data { 559862306a36Sopenharmony_ci struct regpair_native host_sb_addr; 559962306a36Sopenharmony_ci#if defined(__BIG_ENDIAN) 560062306a36Sopenharmony_ci u8 rsrv1; 560162306a36Sopenharmony_ci u8 state; 560262306a36Sopenharmony_ci u8 igu_seg_id; 560362306a36Sopenharmony_ci u8 igu_sb_id; 560462306a36Sopenharmony_ci#elif defined(__LITTLE_ENDIAN) 560562306a36Sopenharmony_ci u8 igu_sb_id; 560662306a36Sopenharmony_ci u8 igu_seg_id; 560762306a36Sopenharmony_ci u8 state; 560862306a36Sopenharmony_ci u8 rsrv1; 560962306a36Sopenharmony_ci#endif 561062306a36Sopenharmony_ci struct pci_entity p_func; 561162306a36Sopenharmony_ci}; 561262306a36Sopenharmony_ci 561362306a36Sopenharmony_ci 561462306a36Sopenharmony_ci/* 561562306a36Sopenharmony_ci * The fast-path status block meta-data 561662306a36Sopenharmony_ci */ 561762306a36Sopenharmony_cistruct hc_status_block_data_e1x { 561862306a36Sopenharmony_ci struct hc_index_data index_data[HC_SB_MAX_INDICES_E1X]; 561962306a36Sopenharmony_ci struct hc_sb_data common; 562062306a36Sopenharmony_ci}; 562162306a36Sopenharmony_ci 562262306a36Sopenharmony_ci 562362306a36Sopenharmony_ci/* 562462306a36Sopenharmony_ci * The fast-path status block meta-data 562562306a36Sopenharmony_ci */ 562662306a36Sopenharmony_cistruct hc_status_block_data_e2 { 562762306a36Sopenharmony_ci struct hc_index_data index_data[HC_SB_MAX_INDICES_E2]; 562862306a36Sopenharmony_ci struct hc_sb_data common; 562962306a36Sopenharmony_ci}; 563062306a36Sopenharmony_ci 563162306a36Sopenharmony_ci 563262306a36Sopenharmony_ci/* 563362306a36Sopenharmony_ci * IGU block operartion modes (in Everest2) 563462306a36Sopenharmony_ci */ 563562306a36Sopenharmony_cienum igu_mode { 563662306a36Sopenharmony_ci HC_IGU_BC_MODE, 563762306a36Sopenharmony_ci HC_IGU_NBC_MODE, 563862306a36Sopenharmony_ci MAX_IGU_MODE 563962306a36Sopenharmony_ci}; 564062306a36Sopenharmony_ci 564162306a36Sopenharmony_ci/* 564262306a36Sopenharmony_ci * Inner Headers Classification Type 564362306a36Sopenharmony_ci */ 564462306a36Sopenharmony_cienum inner_clss_type { 564562306a36Sopenharmony_ci INNER_CLSS_DISABLED, 564662306a36Sopenharmony_ci INNER_CLSS_USE_VLAN, 564762306a36Sopenharmony_ci INNER_CLSS_USE_VNI, 564862306a36Sopenharmony_ci MAX_INNER_CLSS_TYPE}; 564962306a36Sopenharmony_ci 565062306a36Sopenharmony_ci/* 565162306a36Sopenharmony_ci * IP versions 565262306a36Sopenharmony_ci */ 565362306a36Sopenharmony_cienum ip_ver { 565462306a36Sopenharmony_ci IP_V4, 565562306a36Sopenharmony_ci IP_V6, 565662306a36Sopenharmony_ci MAX_IP_VER 565762306a36Sopenharmony_ci}; 565862306a36Sopenharmony_ci 565962306a36Sopenharmony_ci/* 566062306a36Sopenharmony_ci * Malicious VF error ID 566162306a36Sopenharmony_ci */ 566262306a36Sopenharmony_cienum malicious_vf_error_id { 566362306a36Sopenharmony_ci MALICIOUS_VF_NO_ERROR, 566462306a36Sopenharmony_ci VF_PF_CHANNEL_NOT_READY, 566562306a36Sopenharmony_ci ETH_ILLEGAL_BD_LENGTHS, 566662306a36Sopenharmony_ci ETH_PACKET_TOO_SHORT, 566762306a36Sopenharmony_ci ETH_PAYLOAD_TOO_BIG, 566862306a36Sopenharmony_ci ETH_ILLEGAL_ETH_TYPE, 566962306a36Sopenharmony_ci ETH_ILLEGAL_LSO_HDR_LEN, 567062306a36Sopenharmony_ci ETH_TOO_MANY_BDS, 567162306a36Sopenharmony_ci ETH_ZERO_HDR_NBDS, 567262306a36Sopenharmony_ci ETH_START_BD_NOT_SET, 567362306a36Sopenharmony_ci ETH_ILLEGAL_PARSE_NBDS, 567462306a36Sopenharmony_ci ETH_IPV6_AND_CHECKSUM, 567562306a36Sopenharmony_ci ETH_VLAN_FLG_INCORRECT, 567662306a36Sopenharmony_ci ETH_ILLEGAL_LSO_MSS, 567762306a36Sopenharmony_ci ETH_TUNNEL_NOT_SUPPORTED, 567862306a36Sopenharmony_ci MAX_MALICIOUS_VF_ERROR_ID 567962306a36Sopenharmony_ci}; 568062306a36Sopenharmony_ci 568162306a36Sopenharmony_ci/* 568262306a36Sopenharmony_ci * Multi-function modes 568362306a36Sopenharmony_ci */ 568462306a36Sopenharmony_cienum mf_mode { 568562306a36Sopenharmony_ci SINGLE_FUNCTION, 568662306a36Sopenharmony_ci MULTI_FUNCTION_SD, 568762306a36Sopenharmony_ci MULTI_FUNCTION_SI, 568862306a36Sopenharmony_ci MULTI_FUNCTION_AFEX, 568962306a36Sopenharmony_ci MAX_MF_MODE 569062306a36Sopenharmony_ci}; 569162306a36Sopenharmony_ci 569262306a36Sopenharmony_ci/* 569362306a36Sopenharmony_ci * Protocol-common statistics collected by the Tstorm (per pf) 569462306a36Sopenharmony_ci */ 569562306a36Sopenharmony_cistruct tstorm_per_pf_stats { 569662306a36Sopenharmony_ci struct regpair rcv_error_bytes; 569762306a36Sopenharmony_ci}; 569862306a36Sopenharmony_ci 569962306a36Sopenharmony_ci/* 570062306a36Sopenharmony_ci * 570162306a36Sopenharmony_ci */ 570262306a36Sopenharmony_cistruct per_pf_stats { 570362306a36Sopenharmony_ci struct tstorm_per_pf_stats tstorm_pf_statistics; 570462306a36Sopenharmony_ci}; 570562306a36Sopenharmony_ci 570662306a36Sopenharmony_ci 570762306a36Sopenharmony_ci/* 570862306a36Sopenharmony_ci * Protocol-common statistics collected by the Tstorm (per port) 570962306a36Sopenharmony_ci */ 571062306a36Sopenharmony_cistruct tstorm_per_port_stats { 571162306a36Sopenharmony_ci __le32 mac_discard; 571262306a36Sopenharmony_ci __le32 mac_filter_discard; 571362306a36Sopenharmony_ci __le32 brb_truncate_discard; 571462306a36Sopenharmony_ci __le32 mf_tag_discard; 571562306a36Sopenharmony_ci __le32 packet_drop; 571662306a36Sopenharmony_ci __le32 reserved; 571762306a36Sopenharmony_ci}; 571862306a36Sopenharmony_ci 571962306a36Sopenharmony_ci/* 572062306a36Sopenharmony_ci * 572162306a36Sopenharmony_ci */ 572262306a36Sopenharmony_cistruct per_port_stats { 572362306a36Sopenharmony_ci struct tstorm_per_port_stats tstorm_port_statistics; 572462306a36Sopenharmony_ci}; 572562306a36Sopenharmony_ci 572662306a36Sopenharmony_ci 572762306a36Sopenharmony_ci/* 572862306a36Sopenharmony_ci * Protocol-common statistics collected by the Tstorm (per client) 572962306a36Sopenharmony_ci */ 573062306a36Sopenharmony_cistruct tstorm_per_queue_stats { 573162306a36Sopenharmony_ci struct regpair rcv_ucast_bytes; 573262306a36Sopenharmony_ci __le32 rcv_ucast_pkts; 573362306a36Sopenharmony_ci __le32 checksum_discard; 573462306a36Sopenharmony_ci struct regpair rcv_bcast_bytes; 573562306a36Sopenharmony_ci __le32 rcv_bcast_pkts; 573662306a36Sopenharmony_ci __le32 pkts_too_big_discard; 573762306a36Sopenharmony_ci struct regpair rcv_mcast_bytes; 573862306a36Sopenharmony_ci __le32 rcv_mcast_pkts; 573962306a36Sopenharmony_ci __le32 ttl0_discard; 574062306a36Sopenharmony_ci __le16 no_buff_discard; 574162306a36Sopenharmony_ci __le16 reserved0; 574262306a36Sopenharmony_ci __le32 reserved1; 574362306a36Sopenharmony_ci}; 574462306a36Sopenharmony_ci 574562306a36Sopenharmony_ci/* 574662306a36Sopenharmony_ci * Protocol-common statistics collected by the Ustorm (per client) 574762306a36Sopenharmony_ci */ 574862306a36Sopenharmony_cistruct ustorm_per_queue_stats { 574962306a36Sopenharmony_ci struct regpair ucast_no_buff_bytes; 575062306a36Sopenharmony_ci struct regpair mcast_no_buff_bytes; 575162306a36Sopenharmony_ci struct regpair bcast_no_buff_bytes; 575262306a36Sopenharmony_ci __le32 ucast_no_buff_pkts; 575362306a36Sopenharmony_ci __le32 mcast_no_buff_pkts; 575462306a36Sopenharmony_ci __le32 bcast_no_buff_pkts; 575562306a36Sopenharmony_ci __le32 coalesced_pkts; 575662306a36Sopenharmony_ci struct regpair coalesced_bytes; 575762306a36Sopenharmony_ci __le32 coalesced_events; 575862306a36Sopenharmony_ci __le32 coalesced_aborts; 575962306a36Sopenharmony_ci}; 576062306a36Sopenharmony_ci 576162306a36Sopenharmony_ci/* 576262306a36Sopenharmony_ci * Protocol-common statistics collected by the Xstorm (per client) 576362306a36Sopenharmony_ci */ 576462306a36Sopenharmony_cistruct xstorm_per_queue_stats { 576562306a36Sopenharmony_ci struct regpair ucast_bytes_sent; 576662306a36Sopenharmony_ci struct regpair mcast_bytes_sent; 576762306a36Sopenharmony_ci struct regpair bcast_bytes_sent; 576862306a36Sopenharmony_ci __le32 ucast_pkts_sent; 576962306a36Sopenharmony_ci __le32 mcast_pkts_sent; 577062306a36Sopenharmony_ci __le32 bcast_pkts_sent; 577162306a36Sopenharmony_ci __le32 error_drop_pkts; 577262306a36Sopenharmony_ci}; 577362306a36Sopenharmony_ci 577462306a36Sopenharmony_ci/* 577562306a36Sopenharmony_ci * 577662306a36Sopenharmony_ci */ 577762306a36Sopenharmony_cistruct per_queue_stats { 577862306a36Sopenharmony_ci struct tstorm_per_queue_stats tstorm_queue_statistics; 577962306a36Sopenharmony_ci struct ustorm_per_queue_stats ustorm_queue_statistics; 578062306a36Sopenharmony_ci struct xstorm_per_queue_stats xstorm_queue_statistics; 578162306a36Sopenharmony_ci}; 578262306a36Sopenharmony_ci 578362306a36Sopenharmony_ci 578462306a36Sopenharmony_ci/* 578562306a36Sopenharmony_ci * FW version stored in first line of pram 578662306a36Sopenharmony_ci */ 578762306a36Sopenharmony_cistruct pram_fw_version { 578862306a36Sopenharmony_ci u8 major; 578962306a36Sopenharmony_ci u8 minor; 579062306a36Sopenharmony_ci u8 revision; 579162306a36Sopenharmony_ci u8 engineering; 579262306a36Sopenharmony_ci u8 flags; 579362306a36Sopenharmony_ci#define PRAM_FW_VERSION_OPTIMIZED (0x1<<0) 579462306a36Sopenharmony_ci#define PRAM_FW_VERSION_OPTIMIZED_SHIFT 0 579562306a36Sopenharmony_ci#define PRAM_FW_VERSION_STORM_ID (0x3<<1) 579662306a36Sopenharmony_ci#define PRAM_FW_VERSION_STORM_ID_SHIFT 1 579762306a36Sopenharmony_ci#define PRAM_FW_VERSION_BIG_ENDIEN (0x1<<3) 579862306a36Sopenharmony_ci#define PRAM_FW_VERSION_BIG_ENDIEN_SHIFT 3 579962306a36Sopenharmony_ci#define PRAM_FW_VERSION_CHIP_VERSION (0x3<<4) 580062306a36Sopenharmony_ci#define PRAM_FW_VERSION_CHIP_VERSION_SHIFT 4 580162306a36Sopenharmony_ci#define __PRAM_FW_VERSION_RESERVED0 (0x3<<6) 580262306a36Sopenharmony_ci#define __PRAM_FW_VERSION_RESERVED0_SHIFT 6 580362306a36Sopenharmony_ci}; 580462306a36Sopenharmony_ci 580562306a36Sopenharmony_ci 580662306a36Sopenharmony_ci/* 580762306a36Sopenharmony_ci * Ethernet slow path element 580862306a36Sopenharmony_ci */ 580962306a36Sopenharmony_ciunion protocol_common_specific_data { 581062306a36Sopenharmony_ci u8 protocol_data[8]; 581162306a36Sopenharmony_ci struct regpair phy_address; 581262306a36Sopenharmony_ci struct regpair mac_config_addr; 581362306a36Sopenharmony_ci struct afex_vif_list_ramrod_data afex_vif_list_data; 581462306a36Sopenharmony_ci}; 581562306a36Sopenharmony_ci 581662306a36Sopenharmony_ci/* 581762306a36Sopenharmony_ci * The send queue element 581862306a36Sopenharmony_ci */ 581962306a36Sopenharmony_cistruct protocol_common_spe { 582062306a36Sopenharmony_ci struct spe_hdr hdr; 582162306a36Sopenharmony_ci union protocol_common_specific_data data; 582262306a36Sopenharmony_ci}; 582362306a36Sopenharmony_ci 582462306a36Sopenharmony_ci/* The data for the Set Timesync Ramrod */ 582562306a36Sopenharmony_cistruct set_timesync_ramrod_data { 582662306a36Sopenharmony_ci u8 drift_adjust_cmd; 582762306a36Sopenharmony_ci u8 offset_cmd; 582862306a36Sopenharmony_ci u8 add_sub_drift_adjust_value; 582962306a36Sopenharmony_ci u8 drift_adjust_value; 583062306a36Sopenharmony_ci u32 drift_adjust_period; 583162306a36Sopenharmony_ci struct regpair offset_delta; 583262306a36Sopenharmony_ci}; 583362306a36Sopenharmony_ci 583462306a36Sopenharmony_ci/* 583562306a36Sopenharmony_ci * The send queue element 583662306a36Sopenharmony_ci */ 583762306a36Sopenharmony_cistruct slow_path_element { 583862306a36Sopenharmony_ci struct spe_hdr hdr; 583962306a36Sopenharmony_ci struct regpair protocol_data; 584062306a36Sopenharmony_ci}; 584162306a36Sopenharmony_ci 584262306a36Sopenharmony_ci 584362306a36Sopenharmony_ci/* 584462306a36Sopenharmony_ci * Protocol-common statistics counter 584562306a36Sopenharmony_ci */ 584662306a36Sopenharmony_cistruct stats_counter { 584762306a36Sopenharmony_ci __le16 xstats_counter; 584862306a36Sopenharmony_ci __le16 reserved0; 584962306a36Sopenharmony_ci __le32 reserved1; 585062306a36Sopenharmony_ci __le16 tstats_counter; 585162306a36Sopenharmony_ci __le16 reserved2; 585262306a36Sopenharmony_ci __le32 reserved3; 585362306a36Sopenharmony_ci __le16 ustats_counter; 585462306a36Sopenharmony_ci __le16 reserved4; 585562306a36Sopenharmony_ci __le32 reserved5; 585662306a36Sopenharmony_ci __le16 cstats_counter; 585762306a36Sopenharmony_ci __le16 reserved6; 585862306a36Sopenharmony_ci __le32 reserved7; 585962306a36Sopenharmony_ci}; 586062306a36Sopenharmony_ci 586162306a36Sopenharmony_ci 586262306a36Sopenharmony_ci/* 586362306a36Sopenharmony_ci * 586462306a36Sopenharmony_ci */ 586562306a36Sopenharmony_cistruct stats_query_entry { 586662306a36Sopenharmony_ci u8 kind; 586762306a36Sopenharmony_ci u8 index; 586862306a36Sopenharmony_ci __le16 funcID; 586962306a36Sopenharmony_ci __le32 reserved; 587062306a36Sopenharmony_ci struct regpair address; 587162306a36Sopenharmony_ci}; 587262306a36Sopenharmony_ci 587362306a36Sopenharmony_ci/* 587462306a36Sopenharmony_ci * statistic command 587562306a36Sopenharmony_ci */ 587662306a36Sopenharmony_cistruct stats_query_cmd_group { 587762306a36Sopenharmony_ci struct stats_query_entry query[STATS_QUERY_CMD_COUNT]; 587862306a36Sopenharmony_ci}; 587962306a36Sopenharmony_ci 588062306a36Sopenharmony_ci 588162306a36Sopenharmony_ci/* 588262306a36Sopenharmony_ci * statistic command header 588362306a36Sopenharmony_ci */ 588462306a36Sopenharmony_cistruct stats_query_header { 588562306a36Sopenharmony_ci u8 cmd_num; 588662306a36Sopenharmony_ci u8 reserved0; 588762306a36Sopenharmony_ci __le16 drv_stats_counter; 588862306a36Sopenharmony_ci __le32 reserved1; 588962306a36Sopenharmony_ci struct regpair stats_counters_addrs; 589062306a36Sopenharmony_ci}; 589162306a36Sopenharmony_ci 589262306a36Sopenharmony_ci 589362306a36Sopenharmony_ci/* 589462306a36Sopenharmony_ci * Types of statistcis query entry 589562306a36Sopenharmony_ci */ 589662306a36Sopenharmony_cienum stats_query_type { 589762306a36Sopenharmony_ci STATS_TYPE_QUEUE, 589862306a36Sopenharmony_ci STATS_TYPE_PORT, 589962306a36Sopenharmony_ci STATS_TYPE_PF, 590062306a36Sopenharmony_ci STATS_TYPE_TOE, 590162306a36Sopenharmony_ci STATS_TYPE_FCOE, 590262306a36Sopenharmony_ci MAX_STATS_QUERY_TYPE 590362306a36Sopenharmony_ci}; 590462306a36Sopenharmony_ci 590562306a36Sopenharmony_ci 590662306a36Sopenharmony_ci/* 590762306a36Sopenharmony_ci * Indicate of the function status block state 590862306a36Sopenharmony_ci */ 590962306a36Sopenharmony_cienum status_block_state { 591062306a36Sopenharmony_ci SB_DISABLED, 591162306a36Sopenharmony_ci SB_ENABLED, 591262306a36Sopenharmony_ci SB_CLEANED, 591362306a36Sopenharmony_ci MAX_STATUS_BLOCK_STATE 591462306a36Sopenharmony_ci}; 591562306a36Sopenharmony_ci 591662306a36Sopenharmony_ci 591762306a36Sopenharmony_ci/* 591862306a36Sopenharmony_ci * Storm IDs (including attentions for IGU related enums) 591962306a36Sopenharmony_ci */ 592062306a36Sopenharmony_cienum storm_id { 592162306a36Sopenharmony_ci USTORM_ID, 592262306a36Sopenharmony_ci CSTORM_ID, 592362306a36Sopenharmony_ci XSTORM_ID, 592462306a36Sopenharmony_ci TSTORM_ID, 592562306a36Sopenharmony_ci ATTENTION_ID, 592662306a36Sopenharmony_ci MAX_STORM_ID 592762306a36Sopenharmony_ci}; 592862306a36Sopenharmony_ci 592962306a36Sopenharmony_ci 593062306a36Sopenharmony_ci/* 593162306a36Sopenharmony_ci * Taffic types used in ETS and flow control algorithms 593262306a36Sopenharmony_ci */ 593362306a36Sopenharmony_cienum traffic_type { 593462306a36Sopenharmony_ci LLFC_TRAFFIC_TYPE_NW, 593562306a36Sopenharmony_ci LLFC_TRAFFIC_TYPE_FCOE, 593662306a36Sopenharmony_ci LLFC_TRAFFIC_TYPE_ISCSI, 593762306a36Sopenharmony_ci MAX_TRAFFIC_TYPE 593862306a36Sopenharmony_ci}; 593962306a36Sopenharmony_ci 594062306a36Sopenharmony_ci 594162306a36Sopenharmony_ci/* 594262306a36Sopenharmony_ci * zone A per-queue data 594362306a36Sopenharmony_ci */ 594462306a36Sopenharmony_cistruct tstorm_queue_zone_data { 594562306a36Sopenharmony_ci struct regpair reserved[4]; 594662306a36Sopenharmony_ci}; 594762306a36Sopenharmony_ci 594862306a36Sopenharmony_ci 594962306a36Sopenharmony_ci/* 595062306a36Sopenharmony_ci * zone B per-VF data 595162306a36Sopenharmony_ci */ 595262306a36Sopenharmony_cistruct tstorm_vf_zone_data { 595362306a36Sopenharmony_ci struct regpair reserved; 595462306a36Sopenharmony_ci}; 595562306a36Sopenharmony_ci 595662306a36Sopenharmony_ci/* Add or Subtract Value for Set Timesync Ramrod */ 595762306a36Sopenharmony_cienum ts_add_sub_value { 595862306a36Sopenharmony_ci TS_SUB_VALUE, 595962306a36Sopenharmony_ci TS_ADD_VALUE, 596062306a36Sopenharmony_ci MAX_TS_ADD_SUB_VALUE 596162306a36Sopenharmony_ci}; 596262306a36Sopenharmony_ci 596362306a36Sopenharmony_ci/* Drift-Adjust Commands for Set Timesync Ramrod */ 596462306a36Sopenharmony_cienum ts_drift_adjust_cmd { 596562306a36Sopenharmony_ci TS_DRIFT_ADJUST_KEEP, 596662306a36Sopenharmony_ci TS_DRIFT_ADJUST_SET, 596762306a36Sopenharmony_ci TS_DRIFT_ADJUST_RESET, 596862306a36Sopenharmony_ci MAX_TS_DRIFT_ADJUST_CMD 596962306a36Sopenharmony_ci}; 597062306a36Sopenharmony_ci 597162306a36Sopenharmony_ci/* Offset Commands for Set Timesync Ramrod */ 597262306a36Sopenharmony_cienum ts_offset_cmd { 597362306a36Sopenharmony_ci TS_OFFSET_KEEP, 597462306a36Sopenharmony_ci TS_OFFSET_INC, 597562306a36Sopenharmony_ci TS_OFFSET_DEC, 597662306a36Sopenharmony_ci MAX_TS_OFFSET_CMD 597762306a36Sopenharmony_ci}; 597862306a36Sopenharmony_ci 597962306a36Sopenharmony_ci /* zone A per-queue data */ 598062306a36Sopenharmony_cistruct ustorm_queue_zone_data { 598162306a36Sopenharmony_ci struct ustorm_eth_rx_producers eth_rx_producers; 598262306a36Sopenharmony_ci struct regpair reserved[3]; 598362306a36Sopenharmony_ci}; 598462306a36Sopenharmony_ci 598562306a36Sopenharmony_ci 598662306a36Sopenharmony_ci/* 598762306a36Sopenharmony_ci * zone B per-VF data 598862306a36Sopenharmony_ci */ 598962306a36Sopenharmony_cistruct ustorm_vf_zone_data { 599062306a36Sopenharmony_ci struct regpair reserved; 599162306a36Sopenharmony_ci}; 599262306a36Sopenharmony_ci 599362306a36Sopenharmony_ci 599462306a36Sopenharmony_ci/* 599562306a36Sopenharmony_ci * data per VF-PF channel 599662306a36Sopenharmony_ci */ 599762306a36Sopenharmony_cistruct vf_pf_channel_data { 599862306a36Sopenharmony_ci#if defined(__BIG_ENDIAN) 599962306a36Sopenharmony_ci u16 reserved0; 600062306a36Sopenharmony_ci u8 valid; 600162306a36Sopenharmony_ci u8 state; 600262306a36Sopenharmony_ci#elif defined(__LITTLE_ENDIAN) 600362306a36Sopenharmony_ci u8 state; 600462306a36Sopenharmony_ci u8 valid; 600562306a36Sopenharmony_ci u16 reserved0; 600662306a36Sopenharmony_ci#endif 600762306a36Sopenharmony_ci u32 reserved1; 600862306a36Sopenharmony_ci}; 600962306a36Sopenharmony_ci 601062306a36Sopenharmony_ci 601162306a36Sopenharmony_ci/* 601262306a36Sopenharmony_ci * State of VF-PF channel 601362306a36Sopenharmony_ci */ 601462306a36Sopenharmony_cienum vf_pf_channel_state { 601562306a36Sopenharmony_ci VF_PF_CHANNEL_STATE_READY, 601662306a36Sopenharmony_ci VF_PF_CHANNEL_STATE_WAITING_FOR_ACK, 601762306a36Sopenharmony_ci MAX_VF_PF_CHANNEL_STATE 601862306a36Sopenharmony_ci}; 601962306a36Sopenharmony_ci 602062306a36Sopenharmony_ci 602162306a36Sopenharmony_ci/* 602262306a36Sopenharmony_ci * vif_list_rule_kind 602362306a36Sopenharmony_ci */ 602462306a36Sopenharmony_cienum vif_list_rule_kind { 602562306a36Sopenharmony_ci VIF_LIST_RULE_SET, 602662306a36Sopenharmony_ci VIF_LIST_RULE_GET, 602762306a36Sopenharmony_ci VIF_LIST_RULE_CLEAR_ALL, 602862306a36Sopenharmony_ci VIF_LIST_RULE_CLEAR_FUNC, 602962306a36Sopenharmony_ci MAX_VIF_LIST_RULE_KIND 603062306a36Sopenharmony_ci}; 603162306a36Sopenharmony_ci 603262306a36Sopenharmony_ci 603362306a36Sopenharmony_ci/* 603462306a36Sopenharmony_ci * zone A per-queue data 603562306a36Sopenharmony_ci */ 603662306a36Sopenharmony_cistruct xstorm_queue_zone_data { 603762306a36Sopenharmony_ci struct regpair reserved[4]; 603862306a36Sopenharmony_ci}; 603962306a36Sopenharmony_ci 604062306a36Sopenharmony_ci 604162306a36Sopenharmony_ci/* 604262306a36Sopenharmony_ci * zone B per-VF data 604362306a36Sopenharmony_ci */ 604462306a36Sopenharmony_cistruct xstorm_vf_zone_data { 604562306a36Sopenharmony_ci struct regpair reserved; 604662306a36Sopenharmony_ci}; 604762306a36Sopenharmony_ci 604862306a36Sopenharmony_ci#endif /* BNX2X_HSI_H */ 6049