0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #ifndef BNX2X_HSI_H
0012 #define BNX2X_HSI_H
0013
0014 #include "bnx2x_fw_defs.h"
0015 #include "bnx2x_mfw_req.h"
0016
0017 #define FW_ENCODE_32BIT_PATTERN 0x1e1e1e1e
0018
0019 struct license_key {
0020 u32 reserved[6];
0021
0022 u32 max_iscsi_conn;
0023 #define BNX2X_MAX_ISCSI_TRGT_CONN_MASK 0xFFFF
0024 #define BNX2X_MAX_ISCSI_TRGT_CONN_SHIFT 0
0025 #define BNX2X_MAX_ISCSI_INIT_CONN_MASK 0xFFFF0000
0026 #define BNX2X_MAX_ISCSI_INIT_CONN_SHIFT 16
0027
0028 u32 reserved_a;
0029
0030 u32 max_fcoe_conn;
0031 #define BNX2X_MAX_FCOE_TRGT_CONN_MASK 0xFFFF
0032 #define BNX2X_MAX_FCOE_TRGT_CONN_SHIFT 0
0033 #define BNX2X_MAX_FCOE_INIT_CONN_MASK 0xFFFF0000
0034 #define BNX2X_MAX_FCOE_INIT_CONN_SHIFT 16
0035
0036 u32 reserved_b[4];
0037 };
0038
0039
0040
0041
0042 #define PIN_CFG_NA 0x00000000
0043 #define PIN_CFG_GPIO0_P0 0x00000001
0044 #define PIN_CFG_GPIO1_P0 0x00000002
0045 #define PIN_CFG_GPIO2_P0 0x00000003
0046 #define PIN_CFG_GPIO3_P0 0x00000004
0047 #define PIN_CFG_GPIO0_P1 0x00000005
0048 #define PIN_CFG_GPIO1_P1 0x00000006
0049 #define PIN_CFG_GPIO2_P1 0x00000007
0050 #define PIN_CFG_GPIO3_P1 0x00000008
0051 #define PIN_CFG_EPIO0 0x00000009
0052 #define PIN_CFG_EPIO1 0x0000000a
0053 #define PIN_CFG_EPIO2 0x0000000b
0054 #define PIN_CFG_EPIO3 0x0000000c
0055 #define PIN_CFG_EPIO4 0x0000000d
0056 #define PIN_CFG_EPIO5 0x0000000e
0057 #define PIN_CFG_EPIO6 0x0000000f
0058 #define PIN_CFG_EPIO7 0x00000010
0059 #define PIN_CFG_EPIO8 0x00000011
0060 #define PIN_CFG_EPIO9 0x00000012
0061 #define PIN_CFG_EPIO10 0x00000013
0062 #define PIN_CFG_EPIO11 0x00000014
0063 #define PIN_CFG_EPIO12 0x00000015
0064 #define PIN_CFG_EPIO13 0x00000016
0065 #define PIN_CFG_EPIO14 0x00000017
0066 #define PIN_CFG_EPIO15 0x00000018
0067 #define PIN_CFG_EPIO16 0x00000019
0068 #define PIN_CFG_EPIO17 0x0000001a
0069 #define PIN_CFG_EPIO18 0x0000001b
0070 #define PIN_CFG_EPIO19 0x0000001c
0071 #define PIN_CFG_EPIO20 0x0000001d
0072 #define PIN_CFG_EPIO21 0x0000001e
0073 #define PIN_CFG_EPIO22 0x0000001f
0074 #define PIN_CFG_EPIO23 0x00000020
0075 #define PIN_CFG_EPIO24 0x00000021
0076 #define PIN_CFG_EPIO25 0x00000022
0077 #define PIN_CFG_EPIO26 0x00000023
0078 #define PIN_CFG_EPIO27 0x00000024
0079 #define PIN_CFG_EPIO28 0x00000025
0080 #define PIN_CFG_EPIO29 0x00000026
0081 #define PIN_CFG_EPIO30 0x00000027
0082 #define PIN_CFG_EPIO31 0x00000028
0083
0084
0085 #define EPIO_CFG_NA 0x00000000
0086 #define EPIO_CFG_EPIO0 0x00000001
0087 #define EPIO_CFG_EPIO1 0x00000002
0088 #define EPIO_CFG_EPIO2 0x00000003
0089 #define EPIO_CFG_EPIO3 0x00000004
0090 #define EPIO_CFG_EPIO4 0x00000005
0091 #define EPIO_CFG_EPIO5 0x00000006
0092 #define EPIO_CFG_EPIO6 0x00000007
0093 #define EPIO_CFG_EPIO7 0x00000008
0094 #define EPIO_CFG_EPIO8 0x00000009
0095 #define EPIO_CFG_EPIO9 0x0000000a
0096 #define EPIO_CFG_EPIO10 0x0000000b
0097 #define EPIO_CFG_EPIO11 0x0000000c
0098 #define EPIO_CFG_EPIO12 0x0000000d
0099 #define EPIO_CFG_EPIO13 0x0000000e
0100 #define EPIO_CFG_EPIO14 0x0000000f
0101 #define EPIO_CFG_EPIO15 0x00000010
0102 #define EPIO_CFG_EPIO16 0x00000011
0103 #define EPIO_CFG_EPIO17 0x00000012
0104 #define EPIO_CFG_EPIO18 0x00000013
0105 #define EPIO_CFG_EPIO19 0x00000014
0106 #define EPIO_CFG_EPIO20 0x00000015
0107 #define EPIO_CFG_EPIO21 0x00000016
0108 #define EPIO_CFG_EPIO22 0x00000017
0109 #define EPIO_CFG_EPIO23 0x00000018
0110 #define EPIO_CFG_EPIO24 0x00000019
0111 #define EPIO_CFG_EPIO25 0x0000001a
0112 #define EPIO_CFG_EPIO26 0x0000001b
0113 #define EPIO_CFG_EPIO27 0x0000001c
0114 #define EPIO_CFG_EPIO28 0x0000001d
0115 #define EPIO_CFG_EPIO29 0x0000001e
0116 #define EPIO_CFG_EPIO30 0x0000001f
0117 #define EPIO_CFG_EPIO31 0x00000020
0118
0119 struct mac_addr {
0120 u32 upper;
0121 u32 lower;
0122 };
0123
0124 struct shared_hw_cfg {
0125
0126 u8 part_num[16];
0127
0128 u32 config;
0129 #define SHARED_HW_CFG_MDIO_VOLTAGE_MASK 0x00000001
0130 #define SHARED_HW_CFG_MDIO_VOLTAGE_SHIFT 0
0131 #define SHARED_HW_CFG_MDIO_VOLTAGE_1_2V 0x00000000
0132 #define SHARED_HW_CFG_MDIO_VOLTAGE_2_5V 0x00000001
0133 #define SHARED_HW_CFG_MCP_RST_ON_CORE_RST_EN 0x00000002
0134
0135 #define SHARED_HW_CFG_PORT_SWAP 0x00000004
0136
0137 #define SHARED_HW_CFG_BEACON_WOL_EN 0x00000008
0138
0139 #define SHARED_HW_CFG_PCIE_GEN3_DISABLED 0x00000000
0140 #define SHARED_HW_CFG_PCIE_GEN3_ENABLED 0x00000010
0141
0142 #define SHARED_HW_CFG_MFW_SELECT_MASK 0x00000700
0143 #define SHARED_HW_CFG_MFW_SELECT_SHIFT 8
0144
0145
0146 #define SHARED_HW_CFG_MFW_SELECT_DEFAULT 0x00000000
0147 #define SHARED_HW_CFG_MFW_SELECT_NC_SI 0x00000100
0148 #define SHARED_HW_CFG_MFW_SELECT_UMP 0x00000200
0149 #define SHARED_HW_CFG_MFW_SELECT_IPMI 0x00000300
0150
0151
0152 #define SHARED_HW_CFG_MFW_SELECT_SPIO4_NC_SI_IPMI 0x00000400
0153
0154
0155 #define SHARED_HW_CFG_MFW_SELECT_SPIO4_UMP_IPMI 0x00000500
0156
0157
0158 #define SHARED_HW_CFG_MFW_SELECT_SPIO4_NC_SI_UMP 0x00000600
0159
0160 #define SHARED_HW_CFG_LED_MODE_MASK 0x000f0000
0161 #define SHARED_HW_CFG_LED_MODE_SHIFT 16
0162 #define SHARED_HW_CFG_LED_MAC1 0x00000000
0163 #define SHARED_HW_CFG_LED_PHY1 0x00010000
0164 #define SHARED_HW_CFG_LED_PHY2 0x00020000
0165 #define SHARED_HW_CFG_LED_PHY3 0x00030000
0166 #define SHARED_HW_CFG_LED_MAC2 0x00040000
0167 #define SHARED_HW_CFG_LED_PHY4 0x00050000
0168 #define SHARED_HW_CFG_LED_PHY5 0x00060000
0169 #define SHARED_HW_CFG_LED_PHY6 0x00070000
0170 #define SHARED_HW_CFG_LED_MAC3 0x00080000
0171 #define SHARED_HW_CFG_LED_PHY7 0x00090000
0172 #define SHARED_HW_CFG_LED_PHY9 0x000a0000
0173 #define SHARED_HW_CFG_LED_PHY11 0x000b0000
0174 #define SHARED_HW_CFG_LED_MAC4 0x000c0000
0175 #define SHARED_HW_CFG_LED_PHY8 0x000d0000
0176 #define SHARED_HW_CFG_LED_EXTPHY1 0x000e0000
0177 #define SHARED_HW_CFG_LED_EXTPHY2 0x000f0000
0178
0179
0180 #define SHARED_HW_CFG_AN_ENABLE_MASK 0x3f000000
0181 #define SHARED_HW_CFG_AN_ENABLE_SHIFT 24
0182 #define SHARED_HW_CFG_AN_ENABLE_CL37 0x01000000
0183 #define SHARED_HW_CFG_AN_ENABLE_CL73 0x02000000
0184 #define SHARED_HW_CFG_AN_ENABLE_BAM 0x04000000
0185 #define SHARED_HW_CFG_AN_ENABLE_PARALLEL_DETECTION 0x08000000
0186 #define SHARED_HW_CFG_AN_EN_SGMII_FIBER_AUTO_DETECT 0x10000000
0187 #define SHARED_HW_CFG_AN_ENABLE_REMOTE_PHY 0x20000000
0188
0189 #define SHARED_HW_CFG_SRIOV_MASK 0x40000000
0190 #define SHARED_HW_CFG_SRIOV_DISABLED 0x00000000
0191 #define SHARED_HW_CFG_SRIOV_ENABLED 0x40000000
0192
0193 #define SHARED_HW_CFG_ATC_MASK 0x80000000
0194 #define SHARED_HW_CFG_ATC_DISABLED 0x00000000
0195 #define SHARED_HW_CFG_ATC_ENABLED 0x80000000
0196
0197 u32 config2;
0198
0199 #define SHARED_HW_CFG_GRACE_PERIOD_MASK 0x000000ff
0200 #define SHARED_HW_CFG_GRACE_PERIOD_SHIFT 0
0201
0202 #define SHARED_HW_CFG_PCIE_GEN2_ENABLED 0x00000100
0203 #define SHARED_HW_CFG_PCIE_GEN2_DISABLED 0x00000000
0204
0205
0206
0207 #define SHARED_HW_CFG_CLOCK_CHANGE_MASK 0x00000e00
0208 #define SHARED_HW_CFG_CLOCK_CHANGE_SHIFT 9
0209
0210 #define SHARED_HW_CFG_SMBUS_TIMING_MASK 0x00001000
0211 #define SHARED_HW_CFG_SMBUS_TIMING_100KHZ 0x00000000
0212 #define SHARED_HW_CFG_SMBUS_TIMING_400KHZ 0x00001000
0213
0214 #define SHARED_HW_CFG_HIDE_PORT1 0x00002000
0215
0216 #define SHARED_HW_CFG_WOL_CAPABLE_MASK 0x00004000
0217 #define SHARED_HW_CFG_WOL_CAPABLE_DISABLED 0x00000000
0218 #define SHARED_HW_CFG_WOL_CAPABLE_ENABLED 0x00004000
0219
0220
0221 #define SHARED_HW_CFG_SPIO4_FOLLOW_PERST_MASK 0x00008000
0222 #define SHARED_HW_CFG_SPIO4_FOLLOW_PERST_DISABLED 0x00000000
0223 #define SHARED_HW_CFG_SPIO4_FOLLOW_PERST_ENABLED 0x00008000
0224
0225 #define SHARED_HW_CFG_PCIE_GEN2_PREEMPHASIS_MASK 0x00070000
0226 #define SHARED_HW_CFG_PCIE_GEN2_PREEMPHASIS_SHIFT 16
0227 #define SHARED_HW_CFG_PCIE_GEN2_PREEMPHASIS_HW 0x00000000
0228 #define SHARED_HW_CFG_PCIE_GEN2_PREEMPHASIS_0DB 0x00010000
0229 #define SHARED_HW_CFG_PCIE_GEN2_PREEMPHASIS_3_5DB 0x00020000
0230 #define SHARED_HW_CFG_PCIE_GEN2_PREEMPHASIS_6_0DB 0x00030000
0231
0232
0233
0234
0235
0236
0237
0238
0239 #define SHARED_HW_CFG_FAN_FAILURE_MASK 0x00180000
0240 #define SHARED_HW_CFG_FAN_FAILURE_SHIFT 19
0241 #define SHARED_HW_CFG_FAN_FAILURE_PHY_TYPE 0x00000000
0242 #define SHARED_HW_CFG_FAN_FAILURE_DISABLED 0x00080000
0243 #define SHARED_HW_CFG_FAN_FAILURE_ENABLED 0x00100000
0244
0245
0246 #define SHARED_HW_CFG_ASPM_SUPPORT_MASK 0x00600000
0247 #define SHARED_HW_CFG_ASPM_SUPPORT_SHIFT 21
0248 #define SHARED_HW_CFG_ASPM_SUPPORT_L0S_L1_ENABLED 0x00000000
0249 #define SHARED_HW_CFG_ASPM_SUPPORT_L0S_DISABLED 0x00200000
0250 #define SHARED_HW_CFG_ASPM_SUPPORT_L1_DISABLED 0x00400000
0251 #define SHARED_HW_CFG_ASPM_SUPPORT_L0S_L1_DISABLED 0x00600000
0252
0253
0254
0255 #define SHARED_HW_CFG_PREVENT_L1_ENTRY_MASK 0x00800000
0256 #define SHARED_HW_CFG_PREVENT_L1_ENTRY_DISABLED 0x00000000
0257 #define SHARED_HW_CFG_PREVENT_L1_ENTRY_ENABLED 0x00800000
0258
0259 #define SHARED_HW_CFG_PORT_MODE_MASK 0x01000000
0260 #define SHARED_HW_CFG_PORT_MODE_2 0x00000000
0261 #define SHARED_HW_CFG_PORT_MODE_4 0x01000000
0262
0263 #define SHARED_HW_CFG_PATH_SWAP_MASK 0x02000000
0264 #define SHARED_HW_CFG_PATH_SWAP_DISABLED 0x00000000
0265 #define SHARED_HW_CFG_PATH_SWAP_ENABLED 0x02000000
0266
0267
0268 #define SHARED_HW_CFG_MDC_MDIO_ACCESS1_MASK 0x1C000000
0269 #define SHARED_HW_CFG_MDC_MDIO_ACCESS1_SHIFT 26
0270 #define SHARED_HW_CFG_MDC_MDIO_ACCESS1_PHY_TYPE 0x00000000
0271 #define SHARED_HW_CFG_MDC_MDIO_ACCESS1_EMAC0 0x04000000
0272 #define SHARED_HW_CFG_MDC_MDIO_ACCESS1_EMAC1 0x08000000
0273 #define SHARED_HW_CFG_MDC_MDIO_ACCESS1_BOTH 0x0c000000
0274 #define SHARED_HW_CFG_MDC_MDIO_ACCESS1_SWAPPED 0x10000000
0275
0276
0277 #define SHARED_HW_CFG_MDC_MDIO_ACCESS2_MASK 0xE0000000
0278 #define SHARED_HW_CFG_MDC_MDIO_ACCESS2_SHIFT 29
0279 #define SHARED_HW_CFG_MDC_MDIO_ACCESS2_PHY_TYPE 0x00000000
0280 #define SHARED_HW_CFG_MDC_MDIO_ACCESS2_EMAC0 0x20000000
0281 #define SHARED_HW_CFG_MDC_MDIO_ACCESS2_EMAC1 0x40000000
0282 #define SHARED_HW_CFG_MDC_MDIO_ACCESS2_BOTH 0x60000000
0283 #define SHARED_HW_CFG_MDC_MDIO_ACCESS2_SWAPPED 0x80000000
0284
0285 u32 config_3;
0286 #define SHARED_HW_CFG_EXTENDED_MF_MODE_MASK 0x00000F00
0287 #define SHARED_HW_CFG_EXTENDED_MF_MODE_SHIFT 8
0288 #define SHARED_HW_CFG_EXTENDED_MF_MODE_NPAR1_DOT_5 0x00000000
0289 #define SHARED_HW_CFG_EXTENDED_MF_MODE_NPAR2_DOT_0 0x00000100
0290
0291 u32 ump_nc_si_config;
0292 #define SHARED_HW_CFG_UMP_NC_SI_MII_MODE_MASK 0x00000003
0293 #define SHARED_HW_CFG_UMP_NC_SI_MII_MODE_SHIFT 0
0294 #define SHARED_HW_CFG_UMP_NC_SI_MII_MODE_MAC 0x00000000
0295 #define SHARED_HW_CFG_UMP_NC_SI_MII_MODE_PHY 0x00000001
0296 #define SHARED_HW_CFG_UMP_NC_SI_MII_MODE_MII 0x00000000
0297 #define SHARED_HW_CFG_UMP_NC_SI_MII_MODE_RMII 0x00000002
0298
0299 #define SHARED_HW_CFG_UMP_NC_SI_NUM_DEVS_MASK 0x00000f00
0300 #define SHARED_HW_CFG_UMP_NC_SI_NUM_DEVS_SHIFT 8
0301
0302 #define SHARED_HW_CFG_UMP_NC_SI_EXT_PHY_TYPE_MASK 0x00ff0000
0303 #define SHARED_HW_CFG_UMP_NC_SI_EXT_PHY_TYPE_SHIFT 16
0304 #define SHARED_HW_CFG_UMP_NC_SI_EXT_PHY_TYPE_NONE 0x00000000
0305 #define SHARED_HW_CFG_UMP_NC_SI_EXT_PHY_TYPE_BCM5221 0x00010000
0306
0307 u32 board;
0308 #define SHARED_HW_CFG_E3_I2C_MUX0_MASK 0x0000003F
0309 #define SHARED_HW_CFG_E3_I2C_MUX0_SHIFT 0
0310 #define SHARED_HW_CFG_E3_I2C_MUX1_MASK 0x00000FC0
0311 #define SHARED_HW_CFG_E3_I2C_MUX1_SHIFT 6
0312
0313 #define SHARED_HW_CFG_BOARD_REV_MASK 0x00ff0000
0314 #define SHARED_HW_CFG_BOARD_REV_SHIFT 16
0315
0316 #define SHARED_HW_CFG_BOARD_MAJOR_VER_MASK 0x0f000000
0317 #define SHARED_HW_CFG_BOARD_MAJOR_VER_SHIFT 24
0318
0319 #define SHARED_HW_CFG_BOARD_MINOR_VER_MASK 0xf0000000
0320 #define SHARED_HW_CFG_BOARD_MINOR_VER_SHIFT 28
0321
0322 u32 wc_lane_config;
0323 #define SHARED_HW_CFG_LANE_SWAP_CFG_MASK 0x0000FFFF
0324 #define SHARED_HW_CFG_LANE_SWAP_CFG_SHIFT 0
0325 #define SHARED_HW_CFG_LANE_SWAP_CFG_32103210 0x00001b1b
0326 #define SHARED_HW_CFG_LANE_SWAP_CFG_32100123 0x00001be4
0327 #define SHARED_HW_CFG_LANE_SWAP_CFG_01233210 0x0000e41b
0328 #define SHARED_HW_CFG_LANE_SWAP_CFG_01230123 0x0000e4e4
0329 #define SHARED_HW_CFG_LANE_SWAP_CFG_TX_MASK 0x000000FF
0330 #define SHARED_HW_CFG_LANE_SWAP_CFG_TX_SHIFT 0
0331 #define SHARED_HW_CFG_LANE_SWAP_CFG_RX_MASK 0x0000FF00
0332 #define SHARED_HW_CFG_LANE_SWAP_CFG_RX_SHIFT 8
0333
0334
0335 #define SHARED_HW_CFG_TX_LANE0_POL_FLIP_ENABLED 0x00010000
0336 #define SHARED_HW_CFG_TX_LANE1_POL_FLIP_ENABLED 0x00020000
0337 #define SHARED_HW_CFG_TX_LANE2_POL_FLIP_ENABLED 0x00040000
0338 #define SHARED_HW_CFG_TX_LANE3_POL_FLIP_ENABLED 0x00080000
0339
0340 #define SHARED_HW_CFG_RX_LANE0_POL_FLIP_ENABLED 0x00100000
0341 #define SHARED_HW_CFG_RX_LANE1_POL_FLIP_ENABLED 0x00200000
0342 #define SHARED_HW_CFG_RX_LANE2_POL_FLIP_ENABLED 0x00400000
0343 #define SHARED_HW_CFG_RX_LANE3_POL_FLIP_ENABLED 0x00800000
0344
0345
0346 #define SHARED_HW_CFG_E3_PORT_LAYOUT_MASK 0x0F000000
0347 #define SHARED_HW_CFG_E3_PORT_LAYOUT_SHIFT 24
0348 #define SHARED_HW_CFG_E3_PORT_LAYOUT_2P_01 0x00000000
0349 #define SHARED_HW_CFG_E3_PORT_LAYOUT_2P_10 0x01000000
0350 #define SHARED_HW_CFG_E3_PORT_LAYOUT_4P_0123 0x02000000
0351 #define SHARED_HW_CFG_E3_PORT_LAYOUT_4P_1032 0x03000000
0352 #define SHARED_HW_CFG_E3_PORT_LAYOUT_4P_2301 0x04000000
0353 #define SHARED_HW_CFG_E3_PORT_LAYOUT_4P_3210 0x05000000
0354 };
0355
0356
0357
0358
0359
0360 struct port_hw_cfg {
0361
0362 u32 pci_id;
0363 #define PORT_HW_CFG_PCI_VENDOR_ID_MASK 0xffff0000
0364 #define PORT_HW_CFG_PCI_DEVICE_ID_MASK 0x0000ffff
0365
0366 u32 pci_sub_id;
0367 #define PORT_HW_CFG_PCI_SUBSYS_DEVICE_ID_MASK 0xffff0000
0368 #define PORT_HW_CFG_PCI_SUBSYS_VENDOR_ID_MASK 0x0000ffff
0369
0370 u32 power_dissipated;
0371 #define PORT_HW_CFG_POWER_DIS_D0_MASK 0x000000ff
0372 #define PORT_HW_CFG_POWER_DIS_D0_SHIFT 0
0373 #define PORT_HW_CFG_POWER_DIS_D1_MASK 0x0000ff00
0374 #define PORT_HW_CFG_POWER_DIS_D1_SHIFT 8
0375 #define PORT_HW_CFG_POWER_DIS_D2_MASK 0x00ff0000
0376 #define PORT_HW_CFG_POWER_DIS_D2_SHIFT 16
0377 #define PORT_HW_CFG_POWER_DIS_D3_MASK 0xff000000
0378 #define PORT_HW_CFG_POWER_DIS_D3_SHIFT 24
0379
0380 u32 power_consumed;
0381 #define PORT_HW_CFG_POWER_CONS_D0_MASK 0x000000ff
0382 #define PORT_HW_CFG_POWER_CONS_D0_SHIFT 0
0383 #define PORT_HW_CFG_POWER_CONS_D1_MASK 0x0000ff00
0384 #define PORT_HW_CFG_POWER_CONS_D1_SHIFT 8
0385 #define PORT_HW_CFG_POWER_CONS_D2_MASK 0x00ff0000
0386 #define PORT_HW_CFG_POWER_CONS_D2_SHIFT 16
0387 #define PORT_HW_CFG_POWER_CONS_D3_MASK 0xff000000
0388 #define PORT_HW_CFG_POWER_CONS_D3_SHIFT 24
0389
0390 u32 mac_upper;
0391 #define PORT_HW_CFG_UPPERMAC_MASK 0x0000ffff
0392 #define PORT_HW_CFG_UPPERMAC_SHIFT 0
0393 u32 mac_lower;
0394
0395 u32 iscsi_mac_upper;
0396 u32 iscsi_mac_lower;
0397
0398 u32 rdma_mac_upper;
0399 u32 rdma_mac_lower;
0400
0401 u32 serdes_config;
0402 #define PORT_HW_CFG_SERDES_TX_DRV_PRE_EMPHASIS_MASK 0x0000ffff
0403 #define PORT_HW_CFG_SERDES_TX_DRV_PRE_EMPHASIS_SHIFT 0
0404
0405 #define PORT_HW_CFG_SERDES_RX_DRV_EQUALIZER_MASK 0xffff0000
0406 #define PORT_HW_CFG_SERDES_RX_DRV_EQUALIZER_SHIFT 16
0407
0408
0409
0410 u32 pf_config;
0411 #define PORT_HW_CFG_PF_NUM_VF_MASK 0x0000007F
0412 #define PORT_HW_CFG_PF_NUM_VF_SHIFT 0
0413
0414
0415 #define PORT_HW_CFG_PF_NUM_MSIX_VECTORS_MASK 0x00007F00
0416 #define PORT_HW_CFG_PF_NUM_MSIX_VECTORS_SHIFT 8
0417
0418 #define PORT_HW_CFG_ENABLE_FLR_MASK 0x00010000
0419 #define PORT_HW_CFG_FLR_ENABLED 0x00010000
0420
0421 u32 vf_config;
0422 #define PORT_HW_CFG_VF_NUM_MSIX_VECTORS_MASK 0x0000007F
0423 #define PORT_HW_CFG_VF_NUM_MSIX_VECTORS_SHIFT 0
0424
0425 #define PORT_HW_CFG_VF_PCI_DEVICE_ID_MASK 0xFFFF0000
0426 #define PORT_HW_CFG_VF_PCI_DEVICE_ID_SHIFT 16
0427
0428 u32 mf_pci_id;
0429 #define PORT_HW_CFG_MF_PCI_DEVICE_ID_MASK 0x0000FFFF
0430 #define PORT_HW_CFG_MF_PCI_DEVICE_ID_SHIFT 0
0431
0432
0433 u32 sfp_ctrl;
0434 #define PORT_HW_CFG_TX_LASER_MASK 0x000000FF
0435 #define PORT_HW_CFG_TX_LASER_SHIFT 0
0436 #define PORT_HW_CFG_TX_LASER_MDIO 0x00000000
0437 #define PORT_HW_CFG_TX_LASER_GPIO0 0x00000001
0438 #define PORT_HW_CFG_TX_LASER_GPIO1 0x00000002
0439 #define PORT_HW_CFG_TX_LASER_GPIO2 0x00000003
0440 #define PORT_HW_CFG_TX_LASER_GPIO3 0x00000004
0441
0442
0443 #define PORT_HW_CFG_FAULT_MODULE_LED_MASK 0x0000FF00
0444 #define PORT_HW_CFG_FAULT_MODULE_LED_SHIFT 8
0445 #define PORT_HW_CFG_FAULT_MODULE_LED_GPIO0 0x00000000
0446 #define PORT_HW_CFG_FAULT_MODULE_LED_GPIO1 0x00000100
0447 #define PORT_HW_CFG_FAULT_MODULE_LED_GPIO2 0x00000200
0448 #define PORT_HW_CFG_FAULT_MODULE_LED_GPIO3 0x00000300
0449 #define PORT_HW_CFG_FAULT_MODULE_LED_DISABLED 0x00000400
0450
0451
0452
0453 u32 e3_sfp_ctrl;
0454 #define PORT_HW_CFG_E3_TX_LASER_MASK 0x000000FF
0455 #define PORT_HW_CFG_E3_TX_LASER_SHIFT 0
0456
0457
0458 #define PORT_HW_CFG_E3_FAULT_MDL_LED_MASK 0x0000FF00
0459 #define PORT_HW_CFG_E3_FAULT_MDL_LED_SHIFT 8
0460
0461
0462
0463 #define PORT_HW_CFG_E3_MOD_ABS_MASK 0x00FF0000
0464 #define PORT_HW_CFG_E3_MOD_ABS_SHIFT 16
0465
0466
0467
0468 #define PORT_HW_CFG_E3_PWR_DIS_MASK 0xFF000000
0469 #define PORT_HW_CFG_E3_PWR_DIS_SHIFT 24
0470
0471
0472
0473
0474
0475 u32 e3_cmn_pin_cfg;
0476 #define PORT_HW_CFG_E3_TX_FAULT_MASK 0x000000FF
0477 #define PORT_HW_CFG_E3_TX_FAULT_SHIFT 0
0478
0479
0480
0481 #define PORT_HW_CFG_E3_PHY_RESET_MASK 0x0000FF00
0482 #define PORT_HW_CFG_E3_PHY_RESET_SHIFT 8
0483
0484
0485
0486
0487
0488 #define PORT_HW_CFG_E3_PWR_DOWN_MASK 0x00FF0000
0489 #define PORT_HW_CFG_E3_PWR_DOWN_SHIFT 16
0490
0491
0492
0493 #define PORT_HW_CFG_E3_I2C_MUX0_MASK 0x01000000
0494 #define PORT_HW_CFG_E3_I2C_MUX1_MASK 0x02000000
0495
0496
0497
0498
0499
0500
0501 u32 e3_cmn_pin_cfg1;
0502 #define PORT_HW_CFG_E3_OVER_CURRENT_MASK 0x000000FF
0503 #define PORT_HW_CFG_E3_OVER_CURRENT_SHIFT 0
0504
0505
0506 u32 generic_features;
0507 #define PORT_HW_CFG_PAUSE_ON_HOST_RING_MASK 0x00000001
0508 #define PORT_HW_CFG_PAUSE_ON_HOST_RING_SHIFT 0
0509 #define PORT_HW_CFG_PAUSE_ON_HOST_RING_DISABLED 0x00000000
0510 #define PORT_HW_CFG_PAUSE_ON_HOST_RING_ENABLED 0x00000001
0511
0512
0513
0514
0515
0516 u32 sfi_tap_values;
0517 #define PORT_HW_CFG_TX_EQUALIZATION_MASK 0x0000FFFF
0518 #define PORT_HW_CFG_TX_EQUALIZATION_SHIFT 0
0519
0520
0521
0522
0523
0524 #define PORT_HW_CFG_TX_DRV_BROADCAST_MASK 0x000F0000
0525 #define PORT_HW_CFG_TX_DRV_BROADCAST_SHIFT 16
0526
0527 #define PORT_HW_CFG_TX_DRV_IFIR_MASK 0x00F00000
0528 #define PORT_HW_CFG_TX_DRV_IFIR_SHIFT 20
0529
0530
0531 #define PORT_HW_CFG_TX_DRV_IPREDRIVER_MASK 0x0F000000
0532 #define PORT_HW_CFG_TX_DRV_IPREDRIVER_SHIFT 24
0533
0534
0535 #define PORT_HW_CFG_TX_DRV_POST2_MASK 0xF0000000
0536 #define PORT_HW_CFG_TX_DRV_POST2_SHIFT 28
0537
0538 u32 reserved0[5];
0539
0540 u32 aeu_int_mask;
0541
0542 u32 media_type;
0543 #define PORT_HW_CFG_MEDIA_TYPE_PHY0_MASK 0x000000FF
0544 #define PORT_HW_CFG_MEDIA_TYPE_PHY0_SHIFT 0
0545
0546 #define PORT_HW_CFG_MEDIA_TYPE_PHY1_MASK 0x0000FF00
0547 #define PORT_HW_CFG_MEDIA_TYPE_PHY1_SHIFT 8
0548
0549 #define PORT_HW_CFG_MEDIA_TYPE_PHY2_MASK 0x00FF0000
0550 #define PORT_HW_CFG_MEDIA_TYPE_PHY2_SHIFT 16
0551
0552
0553
0554
0555
0556
0557 u16 xgxs_config_rx[4];
0558 u16 xgxs_config_tx[4];
0559
0560
0561 u32 fcoe_fip_mac_upper;
0562 #define PORT_HW_CFG_FCOE_UPPERMAC_MASK 0x0000ffff
0563 #define PORT_HW_CFG_FCOE_UPPERMAC_SHIFT 0
0564 u32 fcoe_fip_mac_lower;
0565
0566 u32 fcoe_wwn_port_name_upper;
0567 u32 fcoe_wwn_port_name_lower;
0568
0569 u32 fcoe_wwn_node_name_upper;
0570 u32 fcoe_wwn_node_name_lower;
0571
0572 u32 Reserved1[49];
0573
0574
0575
0576 u32 xgbt_phy_cfg;
0577 #define PORT_HW_CFG_RJ45_PAIR_SWAP_MASK 0x000000FF
0578 #define PORT_HW_CFG_RJ45_PAIR_SWAP_SHIFT 0
0579
0580 u32 default_cfg;
0581 #define PORT_HW_CFG_GPIO0_CONFIG_MASK 0x00000003
0582 #define PORT_HW_CFG_GPIO0_CONFIG_SHIFT 0
0583 #define PORT_HW_CFG_GPIO0_CONFIG_NA 0x00000000
0584 #define PORT_HW_CFG_GPIO0_CONFIG_LOW 0x00000001
0585 #define PORT_HW_CFG_GPIO0_CONFIG_HIGH 0x00000002
0586 #define PORT_HW_CFG_GPIO0_CONFIG_INPUT 0x00000003
0587
0588 #define PORT_HW_CFG_GPIO1_CONFIG_MASK 0x0000000C
0589 #define PORT_HW_CFG_GPIO1_CONFIG_SHIFT 2
0590 #define PORT_HW_CFG_GPIO1_CONFIG_NA 0x00000000
0591 #define PORT_HW_CFG_GPIO1_CONFIG_LOW 0x00000004
0592 #define PORT_HW_CFG_GPIO1_CONFIG_HIGH 0x00000008
0593 #define PORT_HW_CFG_GPIO1_CONFIG_INPUT 0x0000000c
0594
0595 #define PORT_HW_CFG_GPIO2_CONFIG_MASK 0x00000030
0596 #define PORT_HW_CFG_GPIO2_CONFIG_SHIFT 4
0597 #define PORT_HW_CFG_GPIO2_CONFIG_NA 0x00000000
0598 #define PORT_HW_CFG_GPIO2_CONFIG_LOW 0x00000010
0599 #define PORT_HW_CFG_GPIO2_CONFIG_HIGH 0x00000020
0600 #define PORT_HW_CFG_GPIO2_CONFIG_INPUT 0x00000030
0601
0602 #define PORT_HW_CFG_GPIO3_CONFIG_MASK 0x000000C0
0603 #define PORT_HW_CFG_GPIO3_CONFIG_SHIFT 6
0604 #define PORT_HW_CFG_GPIO3_CONFIG_NA 0x00000000
0605 #define PORT_HW_CFG_GPIO3_CONFIG_LOW 0x00000040
0606 #define PORT_HW_CFG_GPIO3_CONFIG_HIGH 0x00000080
0607 #define PORT_HW_CFG_GPIO3_CONFIG_INPUT 0x000000c0
0608
0609
0610
0611
0612
0613
0614
0615 #define PORT_HW_CFG_FORCE_KR_ENABLER_MASK 0x00000F00
0616 #define PORT_HW_CFG_FORCE_KR_ENABLER_SHIFT 8
0617 #define PORT_HW_CFG_FORCE_KR_ENABLER_NOT_FORCED 0x00000000
0618 #define PORT_HW_CFG_FORCE_KR_ENABLER_GPIO0_P0 0x00000100
0619 #define PORT_HW_CFG_FORCE_KR_ENABLER_GPIO1_P0 0x00000200
0620 #define PORT_HW_CFG_FORCE_KR_ENABLER_GPIO2_P0 0x00000300
0621 #define PORT_HW_CFG_FORCE_KR_ENABLER_GPIO3_P0 0x00000400
0622 #define PORT_HW_CFG_FORCE_KR_ENABLER_GPIO0_P1 0x00000500
0623 #define PORT_HW_CFG_FORCE_KR_ENABLER_GPIO1_P1 0x00000600
0624 #define PORT_HW_CFG_FORCE_KR_ENABLER_GPIO2_P1 0x00000700
0625 #define PORT_HW_CFG_FORCE_KR_ENABLER_GPIO3_P1 0x00000800
0626 #define PORT_HW_CFG_FORCE_KR_ENABLER_FORCED 0x00000900
0627
0628 #define PORT_HW_CFG_EXT_PHY_GPIO_RST_MASK 0x000F0000
0629 #define PORT_HW_CFG_EXT_PHY_GPIO_RST_SHIFT 16
0630 #define PORT_HW_CFG_EXT_PHY_GPIO_RST_PHY_TYPE 0x00000000
0631 #define PORT_HW_CFG_EXT_PHY_GPIO_RST_GPIO0_P0 0x00010000
0632 #define PORT_HW_CFG_EXT_PHY_GPIO_RST_GPIO1_P0 0x00020000
0633 #define PORT_HW_CFG_EXT_PHY_GPIO_RST_GPIO2_P0 0x00030000
0634 #define PORT_HW_CFG_EXT_PHY_GPIO_RST_GPIO3_P0 0x00040000
0635 #define PORT_HW_CFG_EXT_PHY_GPIO_RST_GPIO0_P1 0x00050000
0636 #define PORT_HW_CFG_EXT_PHY_GPIO_RST_GPIO1_P1 0x00060000
0637 #define PORT_HW_CFG_EXT_PHY_GPIO_RST_GPIO2_P1 0x00070000
0638 #define PORT_HW_CFG_EXT_PHY_GPIO_RST_GPIO3_P1 0x00080000
0639
0640
0641 #define PORT_HW_CFG_ENABLE_BAM_ON_KR_MASK 0x00100000
0642 #define PORT_HW_CFG_ENABLE_BAM_ON_KR_SHIFT 20
0643 #define PORT_HW_CFG_ENABLE_BAM_ON_KR_DISABLED 0x00000000
0644 #define PORT_HW_CFG_ENABLE_BAM_ON_KR_ENABLED 0x00100000
0645
0646
0647 #define PORT_HW_CFG_ENABLE_CMS_MASK 0x00200000
0648 #define PORT_HW_CFG_ENABLE_CMS_SHIFT 21
0649 #define PORT_HW_CFG_ENABLE_CMS_DISABLED 0x00000000
0650 #define PORT_HW_CFG_ENABLE_CMS_ENABLED 0x00200000
0651
0652
0653 #define PORT_HW_CFG_NET_SERDES_IF_MASK 0x0F000000
0654 #define PORT_HW_CFG_NET_SERDES_IF_SHIFT 24
0655 #define PORT_HW_CFG_NET_SERDES_IF_SGMII 0x00000000
0656 #define PORT_HW_CFG_NET_SERDES_IF_XFI 0x01000000
0657 #define PORT_HW_CFG_NET_SERDES_IF_SFI 0x02000000
0658 #define PORT_HW_CFG_NET_SERDES_IF_KR 0x03000000
0659 #define PORT_HW_CFG_NET_SERDES_IF_DXGXS 0x04000000
0660 #define PORT_HW_CFG_NET_SERDES_IF_KR2 0x05000000
0661
0662
0663 u32 speed_capability_mask2;
0664 #define PORT_HW_CFG_SPEED_CAPABILITY2_D3_MASK 0x0000FFFF
0665 #define PORT_HW_CFG_SPEED_CAPABILITY2_D3_SHIFT 0
0666 #define PORT_HW_CFG_SPEED_CAPABILITY2_D3_10M_FULL 0x00000001
0667 #define PORT_HW_CFG_SPEED_CAPABILITY2_D3__ 0x00000002
0668 #define PORT_HW_CFG_SPEED_CAPABILITY2_D3___ 0x00000004
0669 #define PORT_HW_CFG_SPEED_CAPABILITY2_D3_100M_FULL 0x00000008
0670 #define PORT_HW_CFG_SPEED_CAPABILITY2_D3_1G 0x00000010
0671 #define PORT_HW_CFG_SPEED_CAPABILITY2_D3_2_DOT_5G 0x00000020
0672 #define PORT_HW_CFG_SPEED_CAPABILITY2_D3_10G 0x00000040
0673 #define PORT_HW_CFG_SPEED_CAPABILITY2_D3_20G 0x00000080
0674
0675 #define PORT_HW_CFG_SPEED_CAPABILITY2_D0_MASK 0xFFFF0000
0676 #define PORT_HW_CFG_SPEED_CAPABILITY2_D0_SHIFT 16
0677 #define PORT_HW_CFG_SPEED_CAPABILITY2_D0_10M_FULL 0x00010000
0678 #define PORT_HW_CFG_SPEED_CAPABILITY2_D0__ 0x00020000
0679 #define PORT_HW_CFG_SPEED_CAPABILITY2_D0___ 0x00040000
0680 #define PORT_HW_CFG_SPEED_CAPABILITY2_D0_100M_FULL 0x00080000
0681 #define PORT_HW_CFG_SPEED_CAPABILITY2_D0_1G 0x00100000
0682 #define PORT_HW_CFG_SPEED_CAPABILITY2_D0_2_DOT_5G 0x00200000
0683 #define PORT_HW_CFG_SPEED_CAPABILITY2_D0_10G 0x00400000
0684 #define PORT_HW_CFG_SPEED_CAPABILITY2_D0_20G 0x00800000
0685
0686
0687
0688
0689
0690
0691 u32 multi_phy_config;
0692 #define PORT_HW_CFG_PHY_SELECTION_MASK 0x00000007
0693 #define PORT_HW_CFG_PHY_SELECTION_SHIFT 0
0694 #define PORT_HW_CFG_PHY_SELECTION_HARDWARE_DEFAULT 0x00000000
0695 #define PORT_HW_CFG_PHY_SELECTION_FIRST_PHY 0x00000001
0696 #define PORT_HW_CFG_PHY_SELECTION_SECOND_PHY 0x00000002
0697 #define PORT_HW_CFG_PHY_SELECTION_FIRST_PHY_PRIORITY 0x00000003
0698 #define PORT_HW_CFG_PHY_SELECTION_SECOND_PHY_PRIORITY 0x00000004
0699
0700
0701
0702 #define PORT_HW_CFG_PHY_SWAPPED_MASK 0x00000008
0703 #define PORT_HW_CFG_PHY_SWAPPED_SHIFT 3
0704 #define PORT_HW_CFG_PHY_SWAPPED_DISABLED 0x00000000
0705 #define PORT_HW_CFG_PHY_SWAPPED_ENABLED 0x00000008
0706
0707
0708
0709 u32 external_phy_config2;
0710 #define PORT_HW_CFG_XGXS_EXT_PHY2_ADDR_MASK 0x000000FF
0711 #define PORT_HW_CFG_XGXS_EXT_PHY2_ADDR_SHIFT 0
0712
0713
0714 #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_MASK 0x0000FF00
0715 #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_SHIFT 8
0716 #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_DIRECT 0x00000000
0717 #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_BCM8071 0x00000100
0718 #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_BCM8072 0x00000200
0719 #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_BCM8073 0x00000300
0720 #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_BCM8705 0x00000400
0721 #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_BCM8706 0x00000500
0722 #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_BCM8726 0x00000600
0723 #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_BCM8481 0x00000700
0724 #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_SFX7101 0x00000800
0725 #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_BCM8727 0x00000900
0726 #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_BCM8727_NOC 0x00000a00
0727 #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_BCM84823 0x00000b00
0728 #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_BCM54640 0x00000c00
0729 #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_BCM84833 0x00000d00
0730 #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_BCM54618SE 0x00000e00
0731 #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_BCM8722 0x00000f00
0732 #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_BCM54616 0x00001000
0733 #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_BCM84834 0x00001100
0734 #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_BCM84858 0x00001200
0735 #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_FAILURE 0x0000fd00
0736 #define PORT_HW_CFG_XGXS_EXT_PHY2_TYPE_NOT_CONN 0x0000ff00
0737
0738
0739
0740
0741 u16 xgxs_config2_rx[4];
0742 u16 xgxs_config2_tx[4];
0743
0744 u32 lane_config;
0745 #define PORT_HW_CFG_LANE_SWAP_CFG_MASK 0x0000ffff
0746 #define PORT_HW_CFG_LANE_SWAP_CFG_SHIFT 0
0747
0748 #define PORT_HW_CFG_LANE_SWAP_CFG_01230123 0x00001b1b
0749
0750 #define PORT_HW_CFG_LANE_SWAP_CFG_01233210 0x00001be4
0751
0752 #define PORT_HW_CFG_LANE_SWAP_CFG_31203120 0x0000d8d8
0753
0754 #define PORT_HW_CFG_LANE_SWAP_CFG_32103210 0x0000e4e4
0755 #define PORT_HW_CFG_LANE_SWAP_CFG_TX_MASK 0x000000ff
0756 #define PORT_HW_CFG_LANE_SWAP_CFG_TX_SHIFT 0
0757 #define PORT_HW_CFG_LANE_SWAP_CFG_RX_MASK 0x0000ff00
0758 #define PORT_HW_CFG_LANE_SWAP_CFG_RX_SHIFT 8
0759 #define PORT_HW_CFG_LANE_SWAP_CFG_MASTER_MASK 0x0000c000
0760 #define PORT_HW_CFG_LANE_SWAP_CFG_MASTER_SHIFT 14
0761
0762
0763 #define PORT_HW_CFG_SWAP_PHY_POLARITY_MASK 0x00010000
0764 #define PORT_HW_CFG_SWAP_PHY_POLARITY_DISABLED 0x00000000
0765 #define PORT_HW_CFG_SWAP_PHY_POLARITY_ENABLED 0x00010000
0766
0767
0768 u32 external_phy_config;
0769 #define PORT_HW_CFG_XGXS_EXT_PHY_ADDR_MASK 0x000000ff
0770 #define PORT_HW_CFG_XGXS_EXT_PHY_ADDR_SHIFT 0
0771
0772 #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_MASK 0x0000ff00
0773 #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SHIFT 8
0774 #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT 0x00000000
0775 #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8071 0x00000100
0776 #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072 0x00000200
0777 #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073 0x00000300
0778 #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8705 0x00000400
0779 #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8706 0x00000500
0780 #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726 0x00000600
0781 #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481 0x00000700
0782 #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101 0x00000800
0783 #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727 0x00000900
0784 #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727_NOC 0x00000a00
0785 #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM84823 0x00000b00
0786 #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM54640 0x00000c00
0787 #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM84833 0x00000d00
0788 #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM54618SE 0x00000e00
0789 #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8722 0x00000f00
0790 #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM54616 0x00001000
0791 #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM84834 0x00001100
0792 #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM84858 0x00001200
0793 #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT_WC 0x0000fc00
0794 #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_FAILURE 0x0000fd00
0795 #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_NOT_CONN 0x0000ff00
0796
0797 #define PORT_HW_CFG_SERDES_EXT_PHY_ADDR_MASK 0x00ff0000
0798 #define PORT_HW_CFG_SERDES_EXT_PHY_ADDR_SHIFT 16
0799
0800 #define PORT_HW_CFG_SERDES_EXT_PHY_TYPE_MASK 0xff000000
0801 #define PORT_HW_CFG_SERDES_EXT_PHY_TYPE_SHIFT 24
0802 #define PORT_HW_CFG_SERDES_EXT_PHY_TYPE_DIRECT 0x00000000
0803 #define PORT_HW_CFG_SERDES_EXT_PHY_TYPE_BCM5482 0x01000000
0804 #define PORT_HW_CFG_SERDES_EXT_PHY_TYPE_DIRECT_SD 0x02000000
0805 #define PORT_HW_CFG_SERDES_EXT_PHY_TYPE_NOT_CONN 0xff000000
0806
0807 u32 speed_capability_mask;
0808 #define PORT_HW_CFG_SPEED_CAPABILITY_D3_MASK 0x0000ffff
0809 #define PORT_HW_CFG_SPEED_CAPABILITY_D3_SHIFT 0
0810 #define PORT_HW_CFG_SPEED_CAPABILITY_D3_10M_FULL 0x00000001
0811 #define PORT_HW_CFG_SPEED_CAPABILITY_D3_10M_HALF 0x00000002
0812 #define PORT_HW_CFG_SPEED_CAPABILITY_D3_100M_HALF 0x00000004
0813 #define PORT_HW_CFG_SPEED_CAPABILITY_D3_100M_FULL 0x00000008
0814 #define PORT_HW_CFG_SPEED_CAPABILITY_D3_1G 0x00000010
0815 #define PORT_HW_CFG_SPEED_CAPABILITY_D3_2_5G 0x00000020
0816 #define PORT_HW_CFG_SPEED_CAPABILITY_D3_10G 0x00000040
0817 #define PORT_HW_CFG_SPEED_CAPABILITY_D3_20G 0x00000080
0818 #define PORT_HW_CFG_SPEED_CAPABILITY_D3_RESERVED 0x0000f000
0819
0820 #define PORT_HW_CFG_SPEED_CAPABILITY_D0_MASK 0xffff0000
0821 #define PORT_HW_CFG_SPEED_CAPABILITY_D0_SHIFT 16
0822 #define PORT_HW_CFG_SPEED_CAPABILITY_D0_10M_FULL 0x00010000
0823 #define PORT_HW_CFG_SPEED_CAPABILITY_D0_10M_HALF 0x00020000
0824 #define PORT_HW_CFG_SPEED_CAPABILITY_D0_100M_HALF 0x00040000
0825 #define PORT_HW_CFG_SPEED_CAPABILITY_D0_100M_FULL 0x00080000
0826 #define PORT_HW_CFG_SPEED_CAPABILITY_D0_1G 0x00100000
0827 #define PORT_HW_CFG_SPEED_CAPABILITY_D0_2_5G 0x00200000
0828 #define PORT_HW_CFG_SPEED_CAPABILITY_D0_10G 0x00400000
0829 #define PORT_HW_CFG_SPEED_CAPABILITY_D0_20G 0x00800000
0830 #define PORT_HW_CFG_SPEED_CAPABILITY_D0_RESERVED 0xf0000000
0831
0832
0833 u32 backup_mac_upper;
0834 u32 backup_mac_lower;
0835
0836 };
0837
0838
0839
0840
0841
0842 struct shared_feat_cfg {
0843
0844 u32 config;
0845 #define SHARED_FEATURE_BMC_ECHO_MODE_EN 0x00000001
0846
0847
0848 #define SHARED_FEAT_CFG_OVERRIDE_PREEMPHASIS_CFG_MASK \
0849 0x00000002
0850 #define SHARED_FEAT_CFG_OVERRIDE_PREEMPHASIS_CFG_DISABLED \
0851 0x00000000
0852 #define SHARED_FEAT_CFG_OVERRIDE_PREEMPHASIS_CFG_ENABLED \
0853 0x00000002
0854
0855 #define SHARED_FEAT_CFG_NCSI_ID_METHOD_MASK 0x00000008
0856 #define SHARED_FEAT_CFG_NCSI_ID_METHOD_SPIO 0x00000000
0857 #define SHARED_FEAT_CFG_NCSI_ID_METHOD_NVRAM 0x00000008
0858
0859 #define SHARED_FEAT_CFG_NCSI_ID_MASK 0x00000030
0860 #define SHARED_FEAT_CFG_NCSI_ID_SHIFT 4
0861
0862
0863
0864 #define SHARED_FEAT_CFG_FORCE_SF_MODE_MASK 0x00000700
0865 #define SHARED_FEAT_CFG_FORCE_SF_MODE_SHIFT 8
0866 #define SHARED_FEAT_CFG_FORCE_SF_MODE_MF_ALLOWED 0x00000000
0867 #define SHARED_FEAT_CFG_FORCE_SF_MODE_FORCED_SF 0x00000100
0868 #define SHARED_FEAT_CFG_FORCE_SF_MODE_SPIO4 0x00000200
0869 #define SHARED_FEAT_CFG_FORCE_SF_MODE_SWITCH_INDEPT 0x00000300
0870 #define SHARED_FEAT_CFG_FORCE_SF_MODE_AFEX_MODE 0x00000400
0871 #define SHARED_FEAT_CFG_FORCE_SF_MODE_BD_MODE 0x00000500
0872 #define SHARED_FEAT_CFG_FORCE_SF_MODE_UFP_MODE 0x00000600
0873 #define SHARED_FEAT_CFG_FORCE_SF_MODE_EXTENDED_MODE 0x00000700
0874
0875
0876
0877 #define SHARED_FEAT_CFG_LLDP_XMIT_INTERVAL_MASK 0x00ff0000
0878 #define SHARED_FEAT_CFG_LLDP_XMIT_INTERVAL_SHIFT 16
0879
0880
0881 #define SHARED_FEAT_CFG_LLDP_DEVICE_TYPE_ID_MASK 0xff000000
0882 #define SHARED_FEAT_CFG_LLDP_DEVICE_TYPE_ID_SHIFT 24
0883
0884 };
0885
0886
0887
0888
0889
0890 struct port_feat_cfg {
0891
0892 u32 config;
0893 #define PORT_FEATURE_BAR1_SIZE_MASK 0x0000000f
0894 #define PORT_FEATURE_BAR1_SIZE_SHIFT 0
0895 #define PORT_FEATURE_BAR1_SIZE_DISABLED 0x00000000
0896 #define PORT_FEATURE_BAR1_SIZE_64K 0x00000001
0897 #define PORT_FEATURE_BAR1_SIZE_128K 0x00000002
0898 #define PORT_FEATURE_BAR1_SIZE_256K 0x00000003
0899 #define PORT_FEATURE_BAR1_SIZE_512K 0x00000004
0900 #define PORT_FEATURE_BAR1_SIZE_1M 0x00000005
0901 #define PORT_FEATURE_BAR1_SIZE_2M 0x00000006
0902 #define PORT_FEATURE_BAR1_SIZE_4M 0x00000007
0903 #define PORT_FEATURE_BAR1_SIZE_8M 0x00000008
0904 #define PORT_FEATURE_BAR1_SIZE_16M 0x00000009
0905 #define PORT_FEATURE_BAR1_SIZE_32M 0x0000000a
0906 #define PORT_FEATURE_BAR1_SIZE_64M 0x0000000b
0907 #define PORT_FEATURE_BAR1_SIZE_128M 0x0000000c
0908 #define PORT_FEATURE_BAR1_SIZE_256M 0x0000000d
0909 #define PORT_FEATURE_BAR1_SIZE_512M 0x0000000e
0910 #define PORT_FEATURE_BAR1_SIZE_1G 0x0000000f
0911 #define PORT_FEATURE_BAR2_SIZE_MASK 0x000000f0
0912 #define PORT_FEATURE_BAR2_SIZE_SHIFT 4
0913 #define PORT_FEATURE_BAR2_SIZE_DISABLED 0x00000000
0914 #define PORT_FEATURE_BAR2_SIZE_64K 0x00000010
0915 #define PORT_FEATURE_BAR2_SIZE_128K 0x00000020
0916 #define PORT_FEATURE_BAR2_SIZE_256K 0x00000030
0917 #define PORT_FEATURE_BAR2_SIZE_512K 0x00000040
0918 #define PORT_FEATURE_BAR2_SIZE_1M 0x00000050
0919 #define PORT_FEATURE_BAR2_SIZE_2M 0x00000060
0920 #define PORT_FEATURE_BAR2_SIZE_4M 0x00000070
0921 #define PORT_FEATURE_BAR2_SIZE_8M 0x00000080
0922 #define PORT_FEATURE_BAR2_SIZE_16M 0x00000090
0923 #define PORT_FEATURE_BAR2_SIZE_32M 0x000000a0
0924 #define PORT_FEATURE_BAR2_SIZE_64M 0x000000b0
0925 #define PORT_FEATURE_BAR2_SIZE_128M 0x000000c0
0926 #define PORT_FEATURE_BAR2_SIZE_256M 0x000000d0
0927 #define PORT_FEATURE_BAR2_SIZE_512M 0x000000e0
0928 #define PORT_FEATURE_BAR2_SIZE_1G 0x000000f0
0929
0930 #define PORT_FEAT_CFG_DCBX_MASK 0x00000100
0931 #define PORT_FEAT_CFG_DCBX_DISABLED 0x00000000
0932 #define PORT_FEAT_CFG_DCBX_ENABLED 0x00000100
0933
0934 #define PORT_FEAT_CFG_STORAGE_PERSONALITY_MASK 0x00000C00
0935 #define PORT_FEAT_CFG_STORAGE_PERSONALITY_FCOE 0x00000400
0936 #define PORT_FEAT_CFG_STORAGE_PERSONALITY_ISCSI 0x00000800
0937
0938 #define PORT_FEATURE_EN_SIZE_MASK 0x0f000000
0939 #define PORT_FEATURE_EN_SIZE_SHIFT 24
0940 #define PORT_FEATURE_WOL_ENABLED 0x01000000
0941 #define PORT_FEATURE_MBA_ENABLED 0x02000000
0942 #define PORT_FEATURE_MFW_ENABLED 0x04000000
0943
0944
0945 #define PORT_FEAT_CFG_FORCE_EXP_ROM_ADV_MASK 0x08000000
0946 #define PORT_FEAT_CFG_FORCE_EXP_ROM_ADV_DISABLED 0x00000000
0947 #define PORT_FEAT_CFG_FORCE_EXP_ROM_ADV_ENABLED 0x08000000
0948
0949
0950
0951 #define PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_MASK 0xe0000000
0952 #define PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_SHIFT 29
0953 #define PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_NO_ENFORCEMENT \
0954 0x00000000
0955 #define PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_DISABLE_TX_LASER \
0956 0x20000000
0957 #define PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_WARNING_MSG 0x40000000
0958 #define PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_POWER_DOWN 0x60000000
0959
0960 u32 wol_config;
0961
0962 #define PORT_FEATURE_WOL_DEFAULT_MASK 0x00000003
0963 #define PORT_FEATURE_WOL_DEFAULT_SHIFT 0
0964 #define PORT_FEATURE_WOL_DEFAULT_DISABLE 0x00000000
0965 #define PORT_FEATURE_WOL_DEFAULT_MAGIC 0x00000001
0966 #define PORT_FEATURE_WOL_DEFAULT_ACPI 0x00000002
0967 #define PORT_FEATURE_WOL_DEFAULT_MAGIC_AND_ACPI 0x00000003
0968 #define PORT_FEATURE_WOL_RES_PAUSE_CAP 0x00000004
0969 #define PORT_FEATURE_WOL_RES_ASYM_PAUSE_CAP 0x00000008
0970 #define PORT_FEATURE_WOL_ACPI_UPON_MGMT 0x00000010
0971
0972 u32 mba_config;
0973 #define PORT_FEATURE_MBA_BOOT_AGENT_TYPE_MASK 0x00000007
0974 #define PORT_FEATURE_MBA_BOOT_AGENT_TYPE_SHIFT 0
0975 #define PORT_FEATURE_MBA_BOOT_AGENT_TYPE_PXE 0x00000000
0976 #define PORT_FEATURE_MBA_BOOT_AGENT_TYPE_RPL 0x00000001
0977 #define PORT_FEATURE_MBA_BOOT_AGENT_TYPE_BOOTP 0x00000002
0978 #define PORT_FEATURE_MBA_BOOT_AGENT_TYPE_ISCSIB 0x00000003
0979 #define PORT_FEATURE_MBA_BOOT_AGENT_TYPE_FCOE_BOOT 0x00000004
0980 #define PORT_FEATURE_MBA_BOOT_AGENT_TYPE_NONE 0x00000007
0981
0982 #define PORT_FEATURE_MBA_BOOT_RETRY_MASK 0x00000038
0983 #define PORT_FEATURE_MBA_BOOT_RETRY_SHIFT 3
0984
0985 #define PORT_FEATURE_MBA_RES_PAUSE_CAP 0x00000100
0986 #define PORT_FEATURE_MBA_RES_ASYM_PAUSE_CAP 0x00000200
0987 #define PORT_FEATURE_MBA_SETUP_PROMPT_ENABLE 0x00000400
0988 #define PORT_FEATURE_MBA_HOTKEY_MASK 0x00000800
0989 #define PORT_FEATURE_MBA_HOTKEY_CTRL_S 0x00000000
0990 #define PORT_FEATURE_MBA_HOTKEY_CTRL_B 0x00000800
0991 #define PORT_FEATURE_MBA_EXP_ROM_SIZE_MASK 0x000ff000
0992 #define PORT_FEATURE_MBA_EXP_ROM_SIZE_SHIFT 12
0993 #define PORT_FEATURE_MBA_EXP_ROM_SIZE_DISABLED 0x00000000
0994 #define PORT_FEATURE_MBA_EXP_ROM_SIZE_2K 0x00001000
0995 #define PORT_FEATURE_MBA_EXP_ROM_SIZE_4K 0x00002000
0996 #define PORT_FEATURE_MBA_EXP_ROM_SIZE_8K 0x00003000
0997 #define PORT_FEATURE_MBA_EXP_ROM_SIZE_16K 0x00004000
0998 #define PORT_FEATURE_MBA_EXP_ROM_SIZE_32K 0x00005000
0999 #define PORT_FEATURE_MBA_EXP_ROM_SIZE_64K 0x00006000
1000 #define PORT_FEATURE_MBA_EXP_ROM_SIZE_128K 0x00007000
1001 #define PORT_FEATURE_MBA_EXP_ROM_SIZE_256K 0x00008000
1002 #define PORT_FEATURE_MBA_EXP_ROM_SIZE_512K 0x00009000
1003 #define PORT_FEATURE_MBA_EXP_ROM_SIZE_1M 0x0000a000
1004 #define PORT_FEATURE_MBA_EXP_ROM_SIZE_2M 0x0000b000
1005 #define PORT_FEATURE_MBA_EXP_ROM_SIZE_4M 0x0000c000
1006 #define PORT_FEATURE_MBA_EXP_ROM_SIZE_8M 0x0000d000
1007 #define PORT_FEATURE_MBA_EXP_ROM_SIZE_16M 0x0000e000
1008 #define PORT_FEATURE_MBA_EXP_ROM_SIZE_32M 0x0000f000
1009 #define PORT_FEATURE_MBA_MSG_TIMEOUT_MASK 0x00f00000
1010 #define PORT_FEATURE_MBA_MSG_TIMEOUT_SHIFT 20
1011 #define PORT_FEATURE_MBA_BIOS_BOOTSTRAP_MASK 0x03000000
1012 #define PORT_FEATURE_MBA_BIOS_BOOTSTRAP_SHIFT 24
1013 #define PORT_FEATURE_MBA_BIOS_BOOTSTRAP_AUTO 0x00000000
1014 #define PORT_FEATURE_MBA_BIOS_BOOTSTRAP_BBS 0x01000000
1015 #define PORT_FEATURE_MBA_BIOS_BOOTSTRAP_INT18H 0x02000000
1016 #define PORT_FEATURE_MBA_BIOS_BOOTSTRAP_INT19H 0x03000000
1017 #define PORT_FEATURE_MBA_LINK_SPEED_MASK 0x3c000000
1018 #define PORT_FEATURE_MBA_LINK_SPEED_SHIFT 26
1019 #define PORT_FEATURE_MBA_LINK_SPEED_AUTO 0x00000000
1020 #define PORT_FEATURE_MBA_LINK_SPEED_10HD 0x04000000
1021 #define PORT_FEATURE_MBA_LINK_SPEED_10FD 0x08000000
1022 #define PORT_FEATURE_MBA_LINK_SPEED_100HD 0x0c000000
1023 #define PORT_FEATURE_MBA_LINK_SPEED_100FD 0x10000000
1024 #define PORT_FEATURE_MBA_LINK_SPEED_1GBPS 0x14000000
1025 #define PORT_FEATURE_MBA_LINK_SPEED_2_5GBPS 0x18000000
1026 #define PORT_FEATURE_MBA_LINK_SPEED_10GBPS_CX4 0x1c000000
1027 #define PORT_FEATURE_MBA_LINK_SPEED_20GBPS 0x20000000
1028 u32 bmc_config;
1029 #define PORT_FEATURE_BMC_LINK_OVERRIDE_MASK 0x00000001
1030 #define PORT_FEATURE_BMC_LINK_OVERRIDE_DEFAULT 0x00000000
1031 #define PORT_FEATURE_BMC_LINK_OVERRIDE_EN 0x00000001
1032
1033 u32 mba_vlan_cfg;
1034 #define PORT_FEATURE_MBA_VLAN_TAG_MASK 0x0000ffff
1035 #define PORT_FEATURE_MBA_VLAN_TAG_SHIFT 0
1036 #define PORT_FEATURE_MBA_VLAN_EN 0x00010000
1037
1038 u32 resource_cfg;
1039 #define PORT_FEATURE_RESOURCE_CFG_VALID 0x00000001
1040 #define PORT_FEATURE_RESOURCE_CFG_DIAG 0x00000002
1041 #define PORT_FEATURE_RESOURCE_CFG_L2 0x00000004
1042 #define PORT_FEATURE_RESOURCE_CFG_ISCSI 0x00000008
1043 #define PORT_FEATURE_RESOURCE_CFG_RDMA 0x00000010
1044
1045 u32 smbus_config;
1046 #define PORT_FEATURE_SMBUS_ADDR_MASK 0x000000fe
1047 #define PORT_FEATURE_SMBUS_ADDR_SHIFT 1
1048
1049 u32 vf_config;
1050 #define PORT_FEAT_CFG_VF_BAR2_SIZE_MASK 0x0000000f
1051 #define PORT_FEAT_CFG_VF_BAR2_SIZE_SHIFT 0
1052 #define PORT_FEAT_CFG_VF_BAR2_SIZE_DISABLED 0x00000000
1053 #define PORT_FEAT_CFG_VF_BAR2_SIZE_4K 0x00000001
1054 #define PORT_FEAT_CFG_VF_BAR2_SIZE_8K 0x00000002
1055 #define PORT_FEAT_CFG_VF_BAR2_SIZE_16K 0x00000003
1056 #define PORT_FEAT_CFG_VF_BAR2_SIZE_32K 0x00000004
1057 #define PORT_FEAT_CFG_VF_BAR2_SIZE_64K 0x00000005
1058 #define PORT_FEAT_CFG_VF_BAR2_SIZE_128K 0x00000006
1059 #define PORT_FEAT_CFG_VF_BAR2_SIZE_256K 0x00000007
1060 #define PORT_FEAT_CFG_VF_BAR2_SIZE_512K 0x00000008
1061 #define PORT_FEAT_CFG_VF_BAR2_SIZE_1M 0x00000009
1062 #define PORT_FEAT_CFG_VF_BAR2_SIZE_2M 0x0000000a
1063 #define PORT_FEAT_CFG_VF_BAR2_SIZE_4M 0x0000000b
1064 #define PORT_FEAT_CFG_VF_BAR2_SIZE_8M 0x0000000c
1065 #define PORT_FEAT_CFG_VF_BAR2_SIZE_16M 0x0000000d
1066 #define PORT_FEAT_CFG_VF_BAR2_SIZE_32M 0x0000000e
1067 #define PORT_FEAT_CFG_VF_BAR2_SIZE_64M 0x0000000f
1068
1069 u32 link_config;
1070 #define PORT_FEATURE_CONNECTED_SWITCH_MASK 0x03000000
1071 #define PORT_FEATURE_CONNECTED_SWITCH_SHIFT 24
1072
1073 #define PORT_FEATURE_CON_SWITCH_1G_SWITCH 0x00000000
1074
1075 #define PORT_FEATURE_CON_SWITCH_10G_SWITCH 0x01000000
1076 #define PORT_FEATURE_CON_SWITCH_AUTO_DETECT 0x02000000
1077 #define PORT_FEATURE_CON_SWITCH_ONE_TIME_DETECT 0x03000000
1078
1079 #define PORT_FEATURE_LINK_SPEED_MASK 0x000f0000
1080 #define PORT_FEATURE_LINK_SPEED_SHIFT 16
1081 #define PORT_FEATURE_LINK_SPEED_AUTO 0x00000000
1082 #define PORT_FEATURE_LINK_SPEED_10M_FULL 0x00010000
1083 #define PORT_FEATURE_LINK_SPEED_10M_HALF 0x00020000
1084 #define PORT_FEATURE_LINK_SPEED_100M_HALF 0x00030000
1085 #define PORT_FEATURE_LINK_SPEED_100M_FULL 0x00040000
1086 #define PORT_FEATURE_LINK_SPEED_1G 0x00050000
1087 #define PORT_FEATURE_LINK_SPEED_2_5G 0x00060000
1088 #define PORT_FEATURE_LINK_SPEED_10G_CX4 0x00070000
1089 #define PORT_FEATURE_LINK_SPEED_20G 0x00080000
1090
1091 #define PORT_FEATURE_FLOW_CONTROL_MASK 0x00000700
1092 #define PORT_FEATURE_FLOW_CONTROL_SHIFT 8
1093 #define PORT_FEATURE_FLOW_CONTROL_AUTO 0x00000000
1094 #define PORT_FEATURE_FLOW_CONTROL_TX 0x00000100
1095 #define PORT_FEATURE_FLOW_CONTROL_RX 0x00000200
1096 #define PORT_FEATURE_FLOW_CONTROL_BOTH 0x00000300
1097 #define PORT_FEATURE_FLOW_CONTROL_NONE 0x00000400
1098
1099
1100
1101 u32 mfw_wol_link_cfg;
1102
1103
1104
1105 u32 link_config2;
1106
1107
1108
1109 u32 mfw_wol_link_cfg2;
1110
1111
1112
1113 u32 eee_power_mode;
1114 #define PORT_FEAT_CFG_EEE_POWER_MODE_MASK 0x000000FF
1115 #define PORT_FEAT_CFG_EEE_POWER_MODE_SHIFT 0
1116 #define PORT_FEAT_CFG_EEE_POWER_MODE_DISABLED 0x00000000
1117 #define PORT_FEAT_CFG_EEE_POWER_MODE_BALANCED 0x00000001
1118 #define PORT_FEAT_CFG_EEE_POWER_MODE_AGGRESSIVE 0x00000002
1119 #define PORT_FEAT_CFG_EEE_POWER_MODE_LOW_LATENCY 0x00000003
1120
1121
1122 u32 Reserved2[16];
1123 };
1124
1125
1126
1127
1128
1129 struct shm_dev_info {
1130
1131 u32 bc_rev;
1132
1133 struct shared_hw_cfg shared_hw_config;
1134
1135 struct port_hw_cfg port_hw_config[PORT_MAX];
1136
1137 struct shared_feat_cfg shared_feature_config;
1138
1139 struct port_feat_cfg port_feature_config[PORT_MAX];
1140
1141 };
1142
1143 struct extended_dev_info_shared_cfg {
1144 u32 reserved[18];
1145 u32 mbi_version;
1146 u32 mbi_date;
1147 };
1148
1149 #if !defined(__LITTLE_ENDIAN) && !defined(__BIG_ENDIAN)
1150 #error "Missing either LITTLE_ENDIAN or BIG_ENDIAN definition."
1151 #endif
1152
1153 #define FUNC_0 0
1154 #define FUNC_1 1
1155 #define FUNC_2 2
1156 #define FUNC_3 3
1157 #define FUNC_4 4
1158 #define FUNC_5 5
1159 #define FUNC_6 6
1160 #define FUNC_7 7
1161 #define E1_FUNC_MAX 2
1162 #define E1H_FUNC_MAX 8
1163 #define E2_FUNC_MAX 4
1164
1165 #define VN_0 0
1166 #define VN_1 1
1167 #define VN_2 2
1168 #define VN_3 3
1169 #define E1VN_MAX 1
1170 #define E1HVN_MAX 4
1171
1172 #define E2_VF_MAX 64
1173
1174
1175
1176 #define DRV_PULSE_PERIOD_MS 250
1177
1178
1179
1180
1181
1182
1183 #define FW_ACK_TIME_OUT_MS 5000
1184
1185 #define FW_ACK_POLL_TIME_MS 1
1186
1187 #define FW_ACK_NUM_OF_POLL (FW_ACK_TIME_OUT_MS/FW_ACK_POLL_TIME_MS)
1188
1189 #define MFW_TRACE_SIGNATURE 0x54524342
1190
1191
1192
1193
1194 struct drv_port_mb {
1195
1196 u32 link_status;
1197
1198
1199 #define LINK_STATUS_NONE (0<<0)
1200 #define LINK_STATUS_LINK_FLAG_MASK 0x00000001
1201 #define LINK_STATUS_LINK_UP 0x00000001
1202 #define LINK_STATUS_SPEED_AND_DUPLEX_MASK 0x0000001E
1203 #define LINK_STATUS_SPEED_AND_DUPLEX_AN_NOT_COMPLETE (0<<1)
1204 #define LINK_STATUS_SPEED_AND_DUPLEX_10THD (1<<1)
1205 #define LINK_STATUS_SPEED_AND_DUPLEX_10TFD (2<<1)
1206 #define LINK_STATUS_SPEED_AND_DUPLEX_100TXHD (3<<1)
1207 #define LINK_STATUS_SPEED_AND_DUPLEX_100T4 (4<<1)
1208 #define LINK_STATUS_SPEED_AND_DUPLEX_100TXFD (5<<1)
1209 #define LINK_STATUS_SPEED_AND_DUPLEX_1000THD (6<<1)
1210 #define LINK_STATUS_SPEED_AND_DUPLEX_1000TFD (7<<1)
1211 #define LINK_STATUS_SPEED_AND_DUPLEX_1000XFD (7<<1)
1212 #define LINK_STATUS_SPEED_AND_DUPLEX_2500THD (8<<1)
1213 #define LINK_STATUS_SPEED_AND_DUPLEX_2500TFD (9<<1)
1214 #define LINK_STATUS_SPEED_AND_DUPLEX_2500XFD (9<<1)
1215 #define LINK_STATUS_SPEED_AND_DUPLEX_10GTFD (10<<1)
1216 #define LINK_STATUS_SPEED_AND_DUPLEX_10GXFD (10<<1)
1217 #define LINK_STATUS_SPEED_AND_DUPLEX_20GTFD (11<<1)
1218 #define LINK_STATUS_SPEED_AND_DUPLEX_20GXFD (11<<1)
1219
1220 #define LINK_STATUS_AUTO_NEGOTIATE_FLAG_MASK 0x00000020
1221 #define LINK_STATUS_AUTO_NEGOTIATE_ENABLED 0x00000020
1222
1223 #define LINK_STATUS_AUTO_NEGOTIATE_COMPLETE 0x00000040
1224 #define LINK_STATUS_PARALLEL_DETECTION_FLAG_MASK 0x00000080
1225 #define LINK_STATUS_PARALLEL_DETECTION_USED 0x00000080
1226
1227 #define LINK_STATUS_LINK_PARTNER_1000TFD_CAPABLE 0x00000200
1228 #define LINK_STATUS_LINK_PARTNER_1000THD_CAPABLE 0x00000400
1229 #define LINK_STATUS_LINK_PARTNER_100T4_CAPABLE 0x00000800
1230 #define LINK_STATUS_LINK_PARTNER_100TXFD_CAPABLE 0x00001000
1231 #define LINK_STATUS_LINK_PARTNER_100TXHD_CAPABLE 0x00002000
1232 #define LINK_STATUS_LINK_PARTNER_10TFD_CAPABLE 0x00004000
1233 #define LINK_STATUS_LINK_PARTNER_10THD_CAPABLE 0x00008000
1234
1235 #define LINK_STATUS_TX_FLOW_CONTROL_FLAG_MASK 0x00010000
1236 #define LINK_STATUS_TX_FLOW_CONTROL_ENABLED 0x00010000
1237
1238 #define LINK_STATUS_RX_FLOW_CONTROL_FLAG_MASK 0x00020000
1239 #define LINK_STATUS_RX_FLOW_CONTROL_ENABLED 0x00020000
1240
1241 #define LINK_STATUS_LINK_PARTNER_FLOW_CONTROL_MASK 0x000C0000
1242 #define LINK_STATUS_LINK_PARTNER_NOT_PAUSE_CAPABLE (0<<18)
1243 #define LINK_STATUS_LINK_PARTNER_SYMMETRIC_PAUSE (1<<18)
1244 #define LINK_STATUS_LINK_PARTNER_ASYMMETRIC_PAUSE (2<<18)
1245 #define LINK_STATUS_LINK_PARTNER_BOTH_PAUSE (3<<18)
1246
1247 #define LINK_STATUS_SERDES_LINK 0x00100000
1248
1249 #define LINK_STATUS_LINK_PARTNER_2500XFD_CAPABLE 0x00200000
1250 #define LINK_STATUS_LINK_PARTNER_2500XHD_CAPABLE 0x00400000
1251 #define LINK_STATUS_LINK_PARTNER_10GXFD_CAPABLE 0x00800000
1252 #define LINK_STATUS_LINK_PARTNER_20GXFD_CAPABLE 0x10000000
1253
1254 #define LINK_STATUS_PFC_ENABLED 0x20000000
1255
1256 #define LINK_STATUS_PHYSICAL_LINK_FLAG 0x40000000
1257 #define LINK_STATUS_SFP_TX_FAULT 0x80000000
1258
1259 u32 port_stx;
1260
1261 u32 stat_nig_timer;
1262
1263
1264 u32 ext_phy_fw_version;
1265
1266 };
1267
1268
1269 struct drv_func_mb {
1270
1271 u32 drv_mb_header;
1272 #define DRV_MSG_CODE_MASK 0xffff0000
1273 #define DRV_MSG_CODE_LOAD_REQ 0x10000000
1274 #define DRV_MSG_CODE_LOAD_DONE 0x11000000
1275 #define DRV_MSG_CODE_UNLOAD_REQ_WOL_EN 0x20000000
1276 #define DRV_MSG_CODE_UNLOAD_REQ_WOL_DIS 0x20010000
1277 #define DRV_MSG_CODE_UNLOAD_REQ_WOL_MCP 0x20020000
1278 #define DRV_MSG_CODE_UNLOAD_DONE 0x21000000
1279 #define DRV_MSG_CODE_DCC_OK 0x30000000
1280 #define DRV_MSG_CODE_DCC_FAILURE 0x31000000
1281 #define DRV_MSG_CODE_DIAG_ENTER_REQ 0x50000000
1282 #define DRV_MSG_CODE_DIAG_EXIT_REQ 0x60000000
1283 #define DRV_MSG_CODE_VALIDATE_KEY 0x70000000
1284 #define DRV_MSG_CODE_GET_CURR_KEY 0x80000000
1285 #define DRV_MSG_CODE_GET_UPGRADE_KEY 0x81000000
1286 #define DRV_MSG_CODE_GET_MANUF_KEY 0x82000000
1287 #define DRV_MSG_CODE_LOAD_L2B_PRAM 0x90000000
1288 #define DRV_MSG_CODE_OEM_OK 0x00010000
1289 #define DRV_MSG_CODE_OEM_FAILURE 0x00020000
1290 #define DRV_MSG_CODE_OEM_UPDATE_SVID_OK 0x00030000
1291 #define DRV_MSG_CODE_OEM_UPDATE_SVID_FAILURE 0x00040000
1292
1293
1294
1295
1296
1297 #define DRV_MSG_CODE_VRFY_FIRST_PHY_OPT_MDL 0xa0000000
1298 #define REQ_BC_VER_4_VRFY_FIRST_PHY_OPT_MDL 0x00050006
1299 #define DRV_MSG_CODE_VRFY_SPECIFIC_PHY_OPT_MDL 0xa1000000
1300 #define REQ_BC_VER_4_VRFY_SPECIFIC_PHY_OPT_MDL 0x00050234
1301 #define DRV_MSG_CODE_VRFY_AFEX_SUPPORTED 0xa2000000
1302 #define REQ_BC_VER_4_VRFY_AFEX_SUPPORTED 0x00070002
1303 #define REQ_BC_VER_4_SFP_TX_DISABLE_SUPPORTED 0x00070014
1304 #define REQ_BC_VER_4_MT_SUPPORTED 0x00070201
1305 #define REQ_BC_VER_4_PFC_STATS_SUPPORTED 0x00070201
1306 #define REQ_BC_VER_4_FCOE_FEATURES 0x00070209
1307
1308 #define DRV_MSG_CODE_DCBX_ADMIN_PMF_MSG 0xb0000000
1309 #define DRV_MSG_CODE_DCBX_PMF_DRV_OK 0xb2000000
1310 #define REQ_BC_VER_4_DCBX_ADMIN_MSG_NON_PMF 0x00070401
1311
1312 #define DRV_MSG_CODE_VF_DISABLED_DONE 0xc0000000
1313
1314 #define DRV_MSG_CODE_AFEX_DRIVER_SETMAC 0xd0000000
1315 #define DRV_MSG_CODE_AFEX_LISTGET_ACK 0xd1000000
1316 #define DRV_MSG_CODE_AFEX_LISTSET_ACK 0xd2000000
1317 #define DRV_MSG_CODE_AFEX_STATSGET_ACK 0xd3000000
1318 #define DRV_MSG_CODE_AFEX_VIFSET_ACK 0xd4000000
1319
1320 #define DRV_MSG_CODE_DRV_INFO_ACK 0xd8000000
1321 #define DRV_MSG_CODE_DRV_INFO_NACK 0xd9000000
1322
1323 #define DRV_MSG_CODE_EEE_RESULTS_ACK 0xda000000
1324
1325 #define DRV_MSG_CODE_RMMOD 0xdb000000
1326 #define REQ_BC_VER_4_RMMOD_CMD 0x0007080f
1327
1328 #define DRV_MSG_CODE_SET_MF_BW 0xe0000000
1329 #define REQ_BC_VER_4_SET_MF_BW 0x00060202
1330 #define DRV_MSG_CODE_SET_MF_BW_ACK 0xe1000000
1331
1332 #define DRV_MSG_CODE_LINK_STATUS_CHANGED 0x01000000
1333
1334 #define DRV_MSG_CODE_INITIATE_FLR 0x02000000
1335 #define REQ_BC_VER_4_INITIATE_FLR 0x00070213
1336
1337 #define BIOS_MSG_CODE_LIC_CHALLENGE 0xff010000
1338 #define BIOS_MSG_CODE_LIC_RESPONSE 0xff020000
1339 #define BIOS_MSG_CODE_VIRT_MAC_PRIM 0xff030000
1340 #define BIOS_MSG_CODE_VIRT_MAC_ISCSI 0xff040000
1341
1342 #define DRV_MSG_SEQ_NUMBER_MASK 0x0000ffff
1343
1344 u32 drv_mb_param;
1345 #define DRV_MSG_CODE_SET_MF_BW_MIN_MASK 0x00ff0000
1346 #define DRV_MSG_CODE_SET_MF_BW_MAX_MASK 0xff000000
1347
1348 #define DRV_MSG_CODE_UNLOAD_SKIP_LINK_RESET 0x00000002
1349
1350 #define DRV_MSG_CODE_LOAD_REQ_WITH_LFA 0x0000100a
1351 #define DRV_MSG_CODE_LOAD_REQ_FORCE_LFA 0x00002000
1352
1353 u32 fw_mb_header;
1354 #define FW_MSG_CODE_MASK 0xffff0000
1355 #define FW_MSG_CODE_DRV_LOAD_COMMON 0x10100000
1356 #define FW_MSG_CODE_DRV_LOAD_PORT 0x10110000
1357 #define FW_MSG_CODE_DRV_LOAD_FUNCTION 0x10120000
1358
1359 #define REQ_BC_VER_4_DRV_LOAD_COMMON_CHIP 0x00060000
1360 #define FW_MSG_CODE_DRV_LOAD_COMMON_CHIP 0x10130000
1361
1362 #define FW_MSG_CODE_DRV_LOAD_REFUSED 0x10200000
1363 #define FW_MSG_CODE_DRV_LOAD_DONE 0x11100000
1364 #define FW_MSG_CODE_DRV_UNLOAD_COMMON 0x20100000
1365 #define FW_MSG_CODE_DRV_UNLOAD_PORT 0x20110000
1366 #define FW_MSG_CODE_DRV_UNLOAD_FUNCTION 0x20120000
1367 #define FW_MSG_CODE_DRV_UNLOAD_DONE 0x21100000
1368 #define FW_MSG_CODE_DCC_DONE 0x30100000
1369 #define FW_MSG_CODE_LLDP_DONE 0x40100000
1370 #define FW_MSG_CODE_DIAG_ENTER_DONE 0x50100000
1371 #define FW_MSG_CODE_DIAG_REFUSE 0x50200000
1372 #define FW_MSG_CODE_DIAG_EXIT_DONE 0x60100000
1373 #define FW_MSG_CODE_VALIDATE_KEY_SUCCESS 0x70100000
1374 #define FW_MSG_CODE_VALIDATE_KEY_FAILURE 0x70200000
1375 #define FW_MSG_CODE_GET_KEY_DONE 0x80100000
1376 #define FW_MSG_CODE_NO_KEY 0x80f00000
1377 #define FW_MSG_CODE_LIC_INFO_NOT_READY 0x80f80000
1378 #define FW_MSG_CODE_L2B_PRAM_LOADED 0x90100000
1379 #define FW_MSG_CODE_L2B_PRAM_T_LOAD_FAILURE 0x90210000
1380 #define FW_MSG_CODE_L2B_PRAM_C_LOAD_FAILURE 0x90220000
1381 #define FW_MSG_CODE_L2B_PRAM_X_LOAD_FAILURE 0x90230000
1382 #define FW_MSG_CODE_L2B_PRAM_U_LOAD_FAILURE 0x90240000
1383 #define FW_MSG_CODE_VRFY_OPT_MDL_SUCCESS 0xa0100000
1384 #define FW_MSG_CODE_VRFY_OPT_MDL_INVLD_IMG 0xa0200000
1385 #define FW_MSG_CODE_VRFY_OPT_MDL_UNAPPROVED 0xa0300000
1386 #define FW_MSG_CODE_VF_DISABLED_DONE 0xb0000000
1387 #define FW_MSG_CODE_HW_SET_INVALID_IMAGE 0xb0100000
1388
1389 #define FW_MSG_CODE_AFEX_DRIVER_SETMAC_DONE 0xd0100000
1390 #define FW_MSG_CODE_AFEX_LISTGET_ACK 0xd1100000
1391 #define FW_MSG_CODE_AFEX_LISTSET_ACK 0xd2100000
1392 #define FW_MSG_CODE_AFEX_STATSGET_ACK 0xd3100000
1393 #define FW_MSG_CODE_AFEX_VIFSET_ACK 0xd4100000
1394
1395 #define FW_MSG_CODE_DRV_INFO_ACK 0xd8100000
1396 #define FW_MSG_CODE_DRV_INFO_NACK 0xd9100000
1397
1398 #define FW_MSG_CODE_EEE_RESULS_ACK 0xda100000
1399
1400 #define FW_MSG_CODE_RMMOD_ACK 0xdb100000
1401
1402 #define FW_MSG_CODE_SET_MF_BW_SENT 0xe0000000
1403 #define FW_MSG_CODE_SET_MF_BW_DONE 0xe1000000
1404
1405 #define FW_MSG_CODE_LINK_CHANGED_ACK 0x01100000
1406
1407 #define FW_MSG_CODE_LIC_CHALLENGE 0xff010000
1408 #define FW_MSG_CODE_LIC_RESPONSE 0xff020000
1409 #define FW_MSG_CODE_VIRT_MAC_PRIM 0xff030000
1410 #define FW_MSG_CODE_VIRT_MAC_ISCSI 0xff040000
1411
1412 #define FW_MSG_SEQ_NUMBER_MASK 0x0000ffff
1413
1414 u32 fw_mb_param;
1415
1416 u32 drv_pulse_mb;
1417 #define DRV_PULSE_SEQ_MASK 0x00007fff
1418 #define DRV_PULSE_SYSTEM_TIME_MASK 0xffff0000
1419
1420
1421
1422
1423 #define DRV_PULSE_ALWAYS_ALIVE 0x00008000
1424
1425
1426
1427
1428
1429
1430 u32 mcp_pulse_mb;
1431 #define MCP_PULSE_SEQ_MASK 0x00007fff
1432 #define MCP_PULSE_ALWAYS_ALIVE 0x00008000
1433
1434
1435 #define MCP_EVENT_MASK 0xffff0000
1436 #define MCP_EVENT_OTHER_DRIVER_RESET_REQ 0x00010000
1437
1438 u32 iscsi_boot_signature;
1439 u32 iscsi_boot_block_offset;
1440
1441 u32 drv_status;
1442 #define DRV_STATUS_PMF 0x00000001
1443 #define DRV_STATUS_VF_DISABLED 0x00000002
1444 #define DRV_STATUS_SET_MF_BW 0x00000004
1445 #define DRV_STATUS_LINK_EVENT 0x00000008
1446
1447 #define DRV_STATUS_OEM_EVENT_MASK 0x00000070
1448 #define DRV_STATUS_OEM_DISABLE_ENABLE_PF 0x00000010
1449 #define DRV_STATUS_OEM_BANDWIDTH_ALLOCATION 0x00000020
1450
1451 #define DRV_STATUS_OEM_UPDATE_SVID 0x00000080
1452
1453 #define DRV_STATUS_DCC_EVENT_MASK 0x0000ff00
1454 #define DRV_STATUS_DCC_DISABLE_ENABLE_PF 0x00000100
1455 #define DRV_STATUS_DCC_BANDWIDTH_ALLOCATION 0x00000200
1456 #define DRV_STATUS_DCC_CHANGE_MAC_ADDRESS 0x00000400
1457 #define DRV_STATUS_DCC_RESERVED1 0x00000800
1458 #define DRV_STATUS_DCC_SET_PROTOCOL 0x00001000
1459 #define DRV_STATUS_DCC_SET_PRIORITY 0x00002000
1460
1461 #define DRV_STATUS_DCBX_EVENT_MASK 0x000f0000
1462 #define DRV_STATUS_DCBX_NEGOTIATION_RESULTS 0x00010000
1463 #define DRV_STATUS_AFEX_EVENT_MASK 0x03f00000
1464 #define DRV_STATUS_AFEX_LISTGET_REQ 0x00100000
1465 #define DRV_STATUS_AFEX_LISTSET_REQ 0x00200000
1466 #define DRV_STATUS_AFEX_STATSGET_REQ 0x00400000
1467 #define DRV_STATUS_AFEX_VIFSET_REQ 0x00800000
1468
1469 #define DRV_STATUS_DRV_INFO_REQ 0x04000000
1470
1471 #define DRV_STATUS_EEE_NEGOTIATION_RESULTS 0x08000000
1472
1473 u32 virt_mac_upper;
1474 #define VIRT_MAC_SIGN_MASK 0xffff0000
1475 #define VIRT_MAC_SIGNATURE 0x564d0000
1476 u32 virt_mac_lower;
1477
1478 };
1479
1480
1481
1482
1483
1484
1485 #define MGMTFW_STATE_WORD_SIZE 110
1486
1487 struct mgmtfw_state {
1488 u32 opaque[MGMTFW_STATE_WORD_SIZE];
1489 };
1490
1491
1492
1493
1494
1495 struct shared_mf_cfg {
1496
1497 u32 clp_mb;
1498 #define SHARED_MF_CLP_SET_DEFAULT 0x00000000
1499
1500 #define SHARED_MF_CLP_EXIT 0x00000001
1501
1502 #define SHARED_MF_CLP_EXIT_DONE 0x00010000
1503
1504 };
1505
1506 struct port_mf_cfg {
1507
1508 u32 dynamic_cfg;
1509 #define PORT_MF_CFG_E1HOV_TAG_MASK 0x0000ffff
1510 #define PORT_MF_CFG_E1HOV_TAG_SHIFT 0
1511 #define PORT_MF_CFG_E1HOV_TAG_DEFAULT PORT_MF_CFG_E1HOV_TAG_MASK
1512
1513 u32 reserved[1];
1514
1515 };
1516
1517 struct func_mf_cfg {
1518
1519 u32 config;
1520
1521
1522 #define FUNC_MF_CFG_FUNC_HIDE 0x00000001
1523
1524 #define FUNC_MF_CFG_PROTOCOL_MASK 0x00000006
1525 #define FUNC_MF_CFG_PROTOCOL_FCOE 0x00000000
1526 #define FUNC_MF_CFG_PROTOCOL_ETHERNET 0x00000002
1527 #define FUNC_MF_CFG_PROTOCOL_ETHERNET_WITH_RDMA 0x00000004
1528 #define FUNC_MF_CFG_PROTOCOL_ISCSI 0x00000006
1529 #define FUNC_MF_CFG_PROTOCOL_DEFAULT \
1530 FUNC_MF_CFG_PROTOCOL_ETHERNET_WITH_RDMA
1531
1532 #define FUNC_MF_CFG_FUNC_DISABLED 0x00000008
1533 #define FUNC_MF_CFG_FUNC_DELETED 0x00000010
1534
1535
1536
1537 #define FUNC_MF_CFG_TRANSMIT_PRIORITY_MASK 0x00000300
1538 #define FUNC_MF_CFG_TRANSMIT_PRIORITY_SHIFT 8
1539 #define FUNC_MF_CFG_TRANSMIT_PRIORITY_DEFAULT 0x00000000
1540
1541
1542
1543 #define FUNC_MF_CFG_MIN_BW_MASK 0x00ff0000
1544 #define FUNC_MF_CFG_MIN_BW_SHIFT 16
1545 #define FUNC_MF_CFG_MIN_BW_DEFAULT 0x00000000
1546 #define FUNC_MF_CFG_MAX_BW_MASK 0xff000000
1547 #define FUNC_MF_CFG_MAX_BW_SHIFT 24
1548 #define FUNC_MF_CFG_MAX_BW_DEFAULT 0x64000000
1549
1550 u32 mac_upper;
1551 #define FUNC_MF_CFG_UPPERMAC_MASK 0x0000ffff
1552 #define FUNC_MF_CFG_UPPERMAC_SHIFT 0
1553 #define FUNC_MF_CFG_UPPERMAC_DEFAULT FUNC_MF_CFG_UPPERMAC_MASK
1554 u32 mac_lower;
1555 #define FUNC_MF_CFG_LOWERMAC_DEFAULT 0xffffffff
1556
1557 u32 e1hov_tag;
1558 #define FUNC_MF_CFG_E1HOV_TAG_MASK 0x0000ffff
1559 #define FUNC_MF_CFG_E1HOV_TAG_SHIFT 0
1560 #define FUNC_MF_CFG_E1HOV_TAG_DEFAULT FUNC_MF_CFG_E1HOV_TAG_MASK
1561
1562
1563 #define FUNC_MF_CFG_AFEX_VLAN_MASK 0x0fff0000
1564 #define FUNC_MF_CFG_AFEX_VLAN_SHIFT 16
1565
1566 u32 afex_config;
1567 #define FUNC_MF_CFG_AFEX_COS_FILTER_MASK 0x000000ff
1568 #define FUNC_MF_CFG_AFEX_COS_FILTER_SHIFT 0
1569 #define FUNC_MF_CFG_AFEX_MBA_ENABLED_MASK 0x0000ff00
1570 #define FUNC_MF_CFG_AFEX_MBA_ENABLED_SHIFT 8
1571 #define FUNC_MF_CFG_AFEX_MBA_ENABLED_VAL 0x00000100
1572 #define FUNC_MF_CFG_AFEX_VLAN_MODE_MASK 0x000f0000
1573 #define FUNC_MF_CFG_AFEX_VLAN_MODE_SHIFT 16
1574
1575 u32 reserved;
1576 };
1577
1578 enum mf_cfg_afex_vlan_mode {
1579 FUNC_MF_CFG_AFEX_VLAN_TRUNK_MODE = 0,
1580 FUNC_MF_CFG_AFEX_VLAN_ACCESS_MODE,
1581 FUNC_MF_CFG_AFEX_VLAN_TRUNK_TAG_NATIVE_MODE
1582 };
1583
1584
1585 struct func_ext_cfg {
1586 u32 func_cfg;
1587 #define MACP_FUNC_CFG_FLAGS_MASK 0x0000007F
1588 #define MACP_FUNC_CFG_FLAGS_SHIFT 0
1589 #define MACP_FUNC_CFG_FLAGS_ENABLED 0x00000001
1590 #define MACP_FUNC_CFG_FLAGS_ETHERNET 0x00000002
1591 #define MACP_FUNC_CFG_FLAGS_ISCSI_OFFLOAD 0x00000004
1592 #define MACP_FUNC_CFG_FLAGS_FCOE_OFFLOAD 0x00000008
1593 #define MACP_FUNC_CFG_PAUSE_ON_HOST_RING 0x00000080
1594
1595 u32 iscsi_mac_addr_upper;
1596 u32 iscsi_mac_addr_lower;
1597
1598 u32 fcoe_mac_addr_upper;
1599 u32 fcoe_mac_addr_lower;
1600
1601 u32 fcoe_wwn_port_name_upper;
1602 u32 fcoe_wwn_port_name_lower;
1603
1604 u32 fcoe_wwn_node_name_upper;
1605 u32 fcoe_wwn_node_name_lower;
1606
1607 u32 preserve_data;
1608 #define MF_FUNC_CFG_PRESERVE_L2_MAC (1<<0)
1609 #define MF_FUNC_CFG_PRESERVE_ISCSI_MAC (1<<1)
1610 #define MF_FUNC_CFG_PRESERVE_FCOE_MAC (1<<2)
1611 #define MF_FUNC_CFG_PRESERVE_FCOE_WWN_P (1<<3)
1612 #define MF_FUNC_CFG_PRESERVE_FCOE_WWN_N (1<<4)
1613 #define MF_FUNC_CFG_PRESERVE_TX_BW (1<<5)
1614 };
1615
1616 struct mf_cfg {
1617
1618 struct shared_mf_cfg shared_mf_config;
1619
1620 struct port_mf_cfg port_mf_config[NVM_PATH_MAX][PORT_MAX];
1621
1622 struct func_mf_cfg func_mf_config[E1H_FUNC_MAX];
1623
1624
1625
1626
1627 struct func_ext_cfg func_ext_config[E1H_FUNC_MAX];
1628 };
1629
1630
1631
1632
1633 struct shmem_region {
1634
1635 u32 validity_map[PORT_MAX];
1636 #define SHR_MEM_FORMAT_REV_MASK 0xff000000
1637 #define SHR_MEM_FORMAT_REV_ID ('A'<<24)
1638
1639 #define SHR_MEM_VALIDITY_PCI_CFG 0x00100000
1640 #define SHR_MEM_VALIDITY_MB 0x00200000
1641 #define SHR_MEM_VALIDITY_DEV_INFO 0x00400000
1642 #define SHR_MEM_VALIDITY_RESERVED 0x00000007
1643
1644 #define SHR_MEM_VALIDITY_LIC_KEY_IN_EFFECT_MASK 0x00000038
1645 #define SHR_MEM_VALIDITY_LIC_MANUF_KEY_IN_EFFECT 0x00000008
1646 #define SHR_MEM_VALIDITY_LIC_UPGRADE_KEY_IN_EFFECT 0x00000010
1647 #define SHR_MEM_VALIDITY_LIC_NO_KEY_IN_EFFECT 0x00000020
1648
1649 #define SHR_MEM_VALIDITY_ACTIVE_MFW_UNKNOWN 0x00000000
1650 #define SHR_MEM_VALIDITY_ACTIVE_MFW_MASK 0x000001c0
1651 #define SHR_MEM_VALIDITY_ACTIVE_MFW_IPMI 0x00000040
1652 #define SHR_MEM_VALIDITY_ACTIVE_MFW_UMP 0x00000080
1653 #define SHR_MEM_VALIDITY_ACTIVE_MFW_NCSI 0x000000c0
1654 #define SHR_MEM_VALIDITY_ACTIVE_MFW_NONE 0x000001c0
1655
1656 struct shm_dev_info dev_info;
1657
1658 struct license_key drv_lic_key[PORT_MAX];
1659
1660
1661 u32 fw_info_fio_offset;
1662 struct mgmtfw_state mgmtfw_state;
1663
1664 struct drv_port_mb port_mb[PORT_MAX];
1665
1666 #ifdef BMAPI
1667
1668
1669 struct drv_func_mb func_mb[1];
1670 #else
1671
1672 struct drv_func_mb func_mb[];
1673 #endif
1674
1675 };
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692 struct fw_flr_ack {
1693 u32 pf_ack;
1694 u32 vf_ack[1];
1695 u32 iov_dis_ack;
1696 };
1697
1698 struct fw_flr_mb {
1699 u32 aggint;
1700 u32 opgen_addr;
1701 struct fw_flr_ack ack;
1702 };
1703
1704 struct eee_remote_vals {
1705 u32 tx_tw;
1706 u32 rx_tw;
1707 };
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719 #define SHMEM_ARRAY_MASK(eb) ((1<<(eb))-1)
1720 #define SHMEM_ARRAY_ENTRY(i, eb) ((i)/(32/(eb)))
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746 #define SHMEM_ARRAY_BITPOS(i, eb, fb) \
1747 ((((32/(fb)) - 1 - ((i)/((fb)/(eb))) % (32/(fb))) * (fb)) + \
1748 (((i)%((fb)/(eb))) * (eb)))
1749
1750 #define SHMEM_ARRAY_GET(a, i, eb, fb) \
1751 ((a[SHMEM_ARRAY_ENTRY(i, eb)] >> SHMEM_ARRAY_BITPOS(i, eb, fb)) & \
1752 SHMEM_ARRAY_MASK(eb))
1753
1754 #define SHMEM_ARRAY_SET(a, i, eb, fb, val) \
1755 do { \
1756 a[SHMEM_ARRAY_ENTRY(i, eb)] &= ~(SHMEM_ARRAY_MASK(eb) << \
1757 SHMEM_ARRAY_BITPOS(i, eb, fb)); \
1758 a[SHMEM_ARRAY_ENTRY(i, eb)] |= (((val) & SHMEM_ARRAY_MASK(eb)) << \
1759 SHMEM_ARRAY_BITPOS(i, eb, fb)); \
1760 } while (0)
1761
1762
1763
1764 #define DCBX_MAX_NUM_PRI_PG_ENTRIES 8
1765 #define DCBX_PRI_PG_BITWIDTH 4
1766 #define DCBX_PRI_PG_FBITS 8
1767 #define DCBX_PRI_PG_GET(a, i) \
1768 SHMEM_ARRAY_GET(a, i, DCBX_PRI_PG_BITWIDTH, DCBX_PRI_PG_FBITS)
1769 #define DCBX_PRI_PG_SET(a, i, val) \
1770 SHMEM_ARRAY_SET(a, i, DCBX_PRI_PG_BITWIDTH, DCBX_PRI_PG_FBITS, val)
1771 #define DCBX_MAX_NUM_PG_BW_ENTRIES 8
1772 #define DCBX_BW_PG_BITWIDTH 8
1773 #define DCBX_PG_BW_GET(a, i) \
1774 SHMEM_ARRAY_GET(a, i, DCBX_BW_PG_BITWIDTH, DCBX_BW_PG_BITWIDTH)
1775 #define DCBX_PG_BW_SET(a, i, val) \
1776 SHMEM_ARRAY_SET(a, i, DCBX_BW_PG_BITWIDTH, DCBX_BW_PG_BITWIDTH, val)
1777 #define DCBX_STRICT_PRI_PG 15
1778 #define DCBX_MAX_APP_PROTOCOL 16
1779 #define FCOE_APP_IDX 0
1780 #define ISCSI_APP_IDX 1
1781 #define PREDEFINED_APP_IDX_MAX 2
1782
1783
1784
1785 struct dcbx_ets_feature {
1786
1787
1788
1789
1790 u32 enabled;
1791 u32 pg_bw_tbl[2];
1792 u32 pri_pg_tbl[1];
1793 };
1794
1795
1796 struct dcbx_pfc_feature {
1797 #ifdef __BIG_ENDIAN
1798 u8 pri_en_bitmap;
1799 #define DCBX_PFC_PRI_0 0x01
1800 #define DCBX_PFC_PRI_1 0x02
1801 #define DCBX_PFC_PRI_2 0x04
1802 #define DCBX_PFC_PRI_3 0x08
1803 #define DCBX_PFC_PRI_4 0x10
1804 #define DCBX_PFC_PRI_5 0x20
1805 #define DCBX_PFC_PRI_6 0x40
1806 #define DCBX_PFC_PRI_7 0x80
1807 u8 pfc_caps;
1808 u8 reserved;
1809 u8 enabled;
1810 #elif defined(__LITTLE_ENDIAN)
1811 u8 enabled;
1812 u8 reserved;
1813 u8 pfc_caps;
1814 u8 pri_en_bitmap;
1815 #define DCBX_PFC_PRI_0 0x01
1816 #define DCBX_PFC_PRI_1 0x02
1817 #define DCBX_PFC_PRI_2 0x04
1818 #define DCBX_PFC_PRI_3 0x08
1819 #define DCBX_PFC_PRI_4 0x10
1820 #define DCBX_PFC_PRI_5 0x20
1821 #define DCBX_PFC_PRI_6 0x40
1822 #define DCBX_PFC_PRI_7 0x80
1823 #endif
1824 };
1825
1826 struct dcbx_app_priority_entry {
1827 #ifdef __BIG_ENDIAN
1828 u16 app_id;
1829 u8 pri_bitmap;
1830 u8 appBitfield;
1831 #define DCBX_APP_ENTRY_VALID 0x01
1832 #define DCBX_APP_ENTRY_SF_MASK 0xF0
1833 #define DCBX_APP_ENTRY_SF_SHIFT 4
1834 #define DCBX_APP_SF_ETH_TYPE 0x10
1835 #define DCBX_APP_SF_PORT 0x20
1836 #define DCBX_APP_SF_UDP 0x40
1837 #define DCBX_APP_SF_DEFAULT 0x80
1838 #elif defined(__LITTLE_ENDIAN)
1839 u8 appBitfield;
1840 #define DCBX_APP_ENTRY_VALID 0x01
1841 #define DCBX_APP_ENTRY_SF_MASK 0xF0
1842 #define DCBX_APP_ENTRY_SF_SHIFT 4
1843 #define DCBX_APP_ENTRY_VALID 0x01
1844 #define DCBX_APP_SF_ETH_TYPE 0x10
1845 #define DCBX_APP_SF_PORT 0x20
1846 #define DCBX_APP_SF_UDP 0x40
1847 #define DCBX_APP_SF_DEFAULT 0x80
1848 u8 pri_bitmap;
1849 u16 app_id;
1850 #endif
1851 };
1852
1853
1854
1855 struct dcbx_app_priority_feature {
1856 #ifdef __BIG_ENDIAN
1857 u8 reserved;
1858 u8 default_pri;
1859 u8 tc_supported;
1860 u8 enabled;
1861 #elif defined(__LITTLE_ENDIAN)
1862 u8 enabled;
1863 u8 tc_supported;
1864 u8 default_pri;
1865 u8 reserved;
1866 #endif
1867 struct dcbx_app_priority_entry app_pri_tbl[DCBX_MAX_APP_PROTOCOL];
1868 };
1869
1870
1871 struct dcbx_features {
1872
1873 struct dcbx_ets_feature ets;
1874
1875 struct dcbx_pfc_feature pfc;
1876
1877 struct dcbx_app_priority_feature app;
1878 };
1879
1880
1881
1882 struct lldp_params {
1883 #ifdef __BIG_ENDIAN
1884 u8 msg_fast_tx_interval;
1885 u8 msg_tx_hold;
1886 u8 msg_tx_interval;
1887 u8 admin_status;
1888 #define LLDP_TX_ONLY 0x01
1889 #define LLDP_RX_ONLY 0x02
1890 #define LLDP_TX_RX 0x03
1891 #define LLDP_DISABLED 0x04
1892 u8 reserved1;
1893 u8 tx_fast;
1894 u8 tx_crd_max;
1895 u8 tx_crd;
1896 #elif defined(__LITTLE_ENDIAN)
1897 u8 admin_status;
1898 #define LLDP_TX_ONLY 0x01
1899 #define LLDP_RX_ONLY 0x02
1900 #define LLDP_TX_RX 0x03
1901 #define LLDP_DISABLED 0x04
1902 u8 msg_tx_interval;
1903 u8 msg_tx_hold;
1904 u8 msg_fast_tx_interval;
1905 u8 tx_crd;
1906 u8 tx_crd_max;
1907 u8 tx_fast;
1908 u8 reserved1;
1909 #endif
1910 #define REM_CHASSIS_ID_STAT_LEN 4
1911 #define REM_PORT_ID_STAT_LEN 4
1912
1913 u32 peer_chassis_id[REM_CHASSIS_ID_STAT_LEN];
1914
1915 u32 peer_port_id[REM_PORT_ID_STAT_LEN];
1916 };
1917
1918 struct lldp_dcbx_stat {
1919 #define LOCAL_CHASSIS_ID_STAT_LEN 2
1920 #define LOCAL_PORT_ID_STAT_LEN 2
1921
1922 u32 local_chassis_id[LOCAL_CHASSIS_ID_STAT_LEN];
1923
1924 u32 local_port_id[LOCAL_PORT_ID_STAT_LEN];
1925
1926 u32 num_tx_dcbx_pkts;
1927
1928 u32 num_rx_dcbx_pkts;
1929 };
1930
1931
1932 struct lldp_admin_mib {
1933 u32 ver_cfg_flags;
1934 #define DCBX_ETS_CONFIG_TX_ENABLED 0x00000001
1935 #define DCBX_PFC_CONFIG_TX_ENABLED 0x00000002
1936 #define DCBX_APP_CONFIG_TX_ENABLED 0x00000004
1937 #define DCBX_ETS_RECO_TX_ENABLED 0x00000008
1938 #define DCBX_ETS_RECO_VALID 0x00000010
1939 #define DCBX_ETS_WILLING 0x00000020
1940 #define DCBX_PFC_WILLING 0x00000040
1941 #define DCBX_APP_WILLING 0x00000080
1942 #define DCBX_VERSION_CEE 0x00000100
1943 #define DCBX_VERSION_IEEE 0x00000200
1944 #define DCBX_DCBX_ENABLED 0x00000400
1945 #define DCBX_CEE_VERSION_MASK 0x0000f000
1946 #define DCBX_CEE_VERSION_SHIFT 12
1947 #define DCBX_CEE_MAX_VERSION_MASK 0x000f0000
1948 #define DCBX_CEE_MAX_VERSION_SHIFT 16
1949 struct dcbx_features features;
1950 };
1951
1952
1953 struct lldp_remote_mib {
1954 u32 prefix_seq_num;
1955 u32 flags;
1956 #define DCBX_ETS_TLV_RX 0x00000001
1957 #define DCBX_PFC_TLV_RX 0x00000002
1958 #define DCBX_APP_TLV_RX 0x00000004
1959 #define DCBX_ETS_RX_ERROR 0x00000010
1960 #define DCBX_PFC_RX_ERROR 0x00000020
1961 #define DCBX_APP_RX_ERROR 0x00000040
1962 #define DCBX_ETS_REM_WILLING 0x00000100
1963 #define DCBX_PFC_REM_WILLING 0x00000200
1964 #define DCBX_APP_REM_WILLING 0x00000400
1965 #define DCBX_REMOTE_ETS_RECO_VALID 0x00001000
1966 #define DCBX_REMOTE_MIB_VALID 0x00002000
1967 struct dcbx_features features;
1968 u32 suffix_seq_num;
1969 };
1970
1971
1972 struct lldp_local_mib {
1973 u32 prefix_seq_num;
1974
1975 u32 error;
1976 #define DCBX_LOCAL_ETS_ERROR 0x00000001
1977 #define DCBX_LOCAL_PFC_ERROR 0x00000002
1978 #define DCBX_LOCAL_APP_ERROR 0x00000004
1979 #define DCBX_LOCAL_PFC_MISMATCH 0x00000010
1980 #define DCBX_LOCAL_APP_MISMATCH 0x00000020
1981 #define DCBX_REMOTE_MIB_ERROR 0x00000040
1982 #define DCBX_REMOTE_ETS_TLV_NOT_FOUND 0x00000080
1983 #define DCBX_REMOTE_PFC_TLV_NOT_FOUND 0x00000100
1984 #define DCBX_REMOTE_APP_TLV_NOT_FOUND 0x00000200
1985 struct dcbx_features features;
1986 u32 suffix_seq_num;
1987 };
1988
1989
1990
1991
1992
1993 #define SHMEM_LINK_CONFIG_SIZE 2
1994 struct shmem_lfa {
1995 u32 req_duplex;
1996 #define REQ_DUPLEX_PHY0_MASK 0x0000ffff
1997 #define REQ_DUPLEX_PHY0_SHIFT 0
1998 #define REQ_DUPLEX_PHY1_MASK 0xffff0000
1999 #define REQ_DUPLEX_PHY1_SHIFT 16
2000 u32 req_flow_ctrl;
2001 #define REQ_FLOW_CTRL_PHY0_MASK 0x0000ffff
2002 #define REQ_FLOW_CTRL_PHY0_SHIFT 0
2003 #define REQ_FLOW_CTRL_PHY1_MASK 0xffff0000
2004 #define REQ_FLOW_CTRL_PHY1_SHIFT 16
2005 u32 req_line_speed;
2006 #define REQ_LINE_SPD_PHY0_MASK 0x0000ffff
2007 #define REQ_LINE_SPD_PHY0_SHIFT 0
2008 #define REQ_LINE_SPD_PHY1_MASK 0xffff0000
2009 #define REQ_LINE_SPD_PHY1_SHIFT 16
2010 u32 speed_cap_mask[SHMEM_LINK_CONFIG_SIZE];
2011 u32 additional_config;
2012 #define REQ_FC_AUTO_ADV_MASK 0x0000ffff
2013 #define REQ_FC_AUTO_ADV0_SHIFT 0
2014 #define NO_LFA_DUE_TO_DCC_MASK 0x00010000
2015 u32 lfa_sts;
2016 #define LFA_LINK_FLAP_REASON_OFFSET 0
2017 #define LFA_LINK_FLAP_REASON_MASK 0x000000ff
2018 #define LFA_LINK_DOWN 0x1
2019 #define LFA_LOOPBACK_ENABLED 0x2
2020 #define LFA_DUPLEX_MISMATCH 0x3
2021 #define LFA_MFW_IS_TOO_OLD 0x4
2022 #define LFA_LINK_SPEED_MISMATCH 0x5
2023 #define LFA_FLOW_CTRL_MISMATCH 0x6
2024 #define LFA_SPEED_CAP_MISMATCH 0x7
2025 #define LFA_DCC_LFA_DISABLED 0x8
2026 #define LFA_EEE_MISMATCH 0x9
2027
2028 #define LINK_FLAP_AVOIDANCE_COUNT_OFFSET 8
2029 #define LINK_FLAP_AVOIDANCE_COUNT_MASK 0x0000ff00
2030
2031 #define LINK_FLAP_COUNT_OFFSET 16
2032 #define LINK_FLAP_COUNT_MASK 0x00ff0000
2033
2034 #define LFA_FLAGS_MASK 0xff000000
2035 #define SHMEM_LFA_DONT_CLEAR_STAT (1<<24)
2036 };
2037
2038
2039
2040
2041
2042 struct os_drv_ver {
2043 #define DRV_VER_NOT_LOADED 0
2044
2045
2046 #define DRV_PERS_ETHERNET 0
2047 #define DRV_PERS_ISCSI 1
2048 #define DRV_PERS_FCOE 2
2049
2050
2051 #define MAX_DRV_PERS 3
2052 u32 versions[MAX_DRV_PERS];
2053 };
2054
2055 struct ncsi_oem_fcoe_features {
2056 u32 fcoe_features1;
2057 #define FCOE_FEATURES1_IOS_PER_CONNECTION_MASK 0x0000FFFF
2058 #define FCOE_FEATURES1_IOS_PER_CONNECTION_OFFSET 0
2059
2060 #define FCOE_FEATURES1_LOGINS_PER_PORT_MASK 0xFFFF0000
2061 #define FCOE_FEATURES1_LOGINS_PER_PORT_OFFSET 16
2062
2063 u32 fcoe_features2;
2064 #define FCOE_FEATURES2_EXCHANGES_MASK 0x0000FFFF
2065 #define FCOE_FEATURES2_EXCHANGES_OFFSET 0
2066
2067 #define FCOE_FEATURES2_NPIV_WWN_PER_PORT_MASK 0xFFFF0000
2068 #define FCOE_FEATURES2_NPIV_WWN_PER_PORT_OFFSET 16
2069
2070 u32 fcoe_features3;
2071 #define FCOE_FEATURES3_TARGETS_SUPPORTED_MASK 0x0000FFFF
2072 #define FCOE_FEATURES3_TARGETS_SUPPORTED_OFFSET 0
2073
2074 #define FCOE_FEATURES3_OUTSTANDING_COMMANDS_MASK 0xFFFF0000
2075 #define FCOE_FEATURES3_OUTSTANDING_COMMANDS_OFFSET 16
2076
2077 u32 fcoe_features4;
2078 #define FCOE_FEATURES4_FEATURE_SETTINGS_MASK 0x0000000F
2079 #define FCOE_FEATURES4_FEATURE_SETTINGS_OFFSET 0
2080 };
2081
2082 enum curr_cfg_method_e {
2083 CURR_CFG_MET_NONE = 0,
2084 CURR_CFG_MET_OS = 1,
2085 CURR_CFG_MET_VENDOR_SPEC = 2,
2086 };
2087
2088 #define FC_NPIV_WWPN_SIZE 8
2089 #define FC_NPIV_WWNN_SIZE 8
2090 struct bdn_npiv_settings {
2091 u8 npiv_wwpn[FC_NPIV_WWPN_SIZE];
2092 u8 npiv_wwnn[FC_NPIV_WWNN_SIZE];
2093 };
2094
2095 struct bdn_fc_npiv_cfg {
2096
2097 u32 hdr;
2098 u32 num_of_npiv;
2099 };
2100
2101 #define MAX_NUMBER_NPIV 64
2102 struct bdn_fc_npiv_tbl {
2103 struct bdn_fc_npiv_cfg fc_npiv_cfg;
2104 struct bdn_npiv_settings settings[MAX_NUMBER_NPIV];
2105 };
2106
2107 struct mdump_driver_info {
2108 u32 epoc;
2109 u32 drv_ver;
2110 u32 fw_ver;
2111
2112 u32 valid_dump;
2113 #define FIRST_DUMP_VALID (1 << 0)
2114 #define SECOND_DUMP_VALID (1 << 1)
2115
2116 u32 flags;
2117 #define ENABLE_ALL_TRIGGERS (0x7fffffff)
2118 #define TRIGGER_MDUMP_ONCE (1 << 31)
2119 };
2120
2121 struct ncsi_oem_data {
2122 u32 driver_version[4];
2123 struct ncsi_oem_fcoe_features ncsi_oem_fcoe_features;
2124 };
2125
2126 struct shmem2_region {
2127
2128 u32 size;
2129
2130 u32 dcc_support;
2131 #define SHMEM_DCC_SUPPORT_NONE 0x00000000
2132 #define SHMEM_DCC_SUPPORT_DISABLE_ENABLE_PF_TLV 0x00000001
2133 #define SHMEM_DCC_SUPPORT_BANDWIDTH_ALLOCATION_TLV 0x00000004
2134 #define SHMEM_DCC_SUPPORT_CHANGE_MAC_ADDRESS_TLV 0x00000008
2135 #define SHMEM_DCC_SUPPORT_SET_PROTOCOL_TLV 0x00000040
2136 #define SHMEM_DCC_SUPPORT_SET_PRIORITY_TLV 0x00000080
2137
2138 u32 ext_phy_fw_version2[PORT_MAX];
2139
2140
2141
2142
2143
2144 u32 mf_cfg_addr;
2145 #define SHMEM_MF_CFG_ADDR_NONE 0x00000000
2146
2147 struct fw_flr_mb flr_mb;
2148 u32 dcbx_lldp_params_offset;
2149 #define SHMEM_LLDP_DCBX_PARAMS_NONE 0x00000000
2150 u32 dcbx_neg_res_offset;
2151 #define SHMEM_DCBX_NEG_RES_NONE 0x00000000
2152 u32 dcbx_remote_mib_offset;
2153 #define SHMEM_DCBX_REMOTE_MIB_NONE 0x00000000
2154
2155
2156
2157
2158
2159
2160 u32 other_shmem_base_addr;
2161 u32 other_shmem2_base_addr;
2162
2163
2164
2165
2166 u32 mcp_vf_disabled[E2_VF_MAX / 32];
2167
2168
2169
2170
2171
2172 u32 drv_ack_vf_disabled[E2_FUNC_MAX][E2_VF_MAX / 32];
2173
2174 u32 dcbx_lldp_dcbx_stat_offset;
2175 #define SHMEM_LLDP_DCBX_STAT_NONE 0x00000000
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186 u32 edebug_driver_if[2];
2187 #define EDEBUG_DRIVER_IF_OP_CODE_GET_PHYS_ADDR 1
2188 #define EDEBUG_DRIVER_IF_OP_CODE_GET_BUS_ADDR 2
2189 #define EDEBUG_DRIVER_IF_OP_CODE_DISABLE_STAT 3
2190
2191 u32 nvm_retain_bitmap_addr;
2192
2193
2194 u32 afex_driver_support;
2195 #define SHMEM_AFEX_VERSION_MASK 0x100f
2196 #define SHMEM_AFEX_SUPPORTED_VERSION_ONE 0x1001
2197 #define SHMEM_AFEX_REDUCED_DRV_LOADED 0x8000
2198
2199
2200 u32 afex_scratchpad_addr_to_write[E2_FUNC_MAX];
2201
2202
2203
2204
2205 u32 afex_param1_to_driver[E2_FUNC_MAX];
2206 u32 afex_param2_to_driver[E2_FUNC_MAX];
2207
2208 u32 swim_base_addr;
2209 u32 swim_funcs;
2210 u32 swim_main_cb;
2211
2212
2213
2214
2215 u32 afex_profiles_enabled[2];
2216
2217
2218 u32 drv_flags;
2219 #define DRV_FLAGS_DCB_CONFIGURED 0x0
2220 #define DRV_FLAGS_DCB_CONFIGURATION_ABORTED 0x1
2221 #define DRV_FLAGS_DCB_MFW_CONFIGURED 0x2
2222
2223 #define DRV_FLAGS_PORT_MASK ((1 << DRV_FLAGS_DCB_CONFIGURED) | \
2224 (1 << DRV_FLAGS_DCB_CONFIGURATION_ABORTED) | \
2225 (1 << DRV_FLAGS_DCB_MFW_CONFIGURED))
2226
2227 u32 extended_dev_info_shared_addr;
2228 u32 ncsi_oem_data_addr;
2229
2230 u32 ocsd_host_addr;
2231 u32 ocbb_host_addr;
2232 u32 ocsd_req_update_interval;
2233 u32 temperature_in_half_celsius;
2234 u32 glob_struct_in_host;
2235
2236 u32 dcbx_neg_res_ext_offset;
2237 #define SHMEM_DCBX_NEG_RES_EXT_NONE 0x00000000
2238
2239 u32 drv_capabilities_flag[E2_FUNC_MAX];
2240 #define DRV_FLAGS_CAPABILITIES_LOADED_SUPPORTED 0x00000001
2241 #define DRV_FLAGS_CAPABILITIES_LOADED_L2 0x00000002
2242 #define DRV_FLAGS_CAPABILITIES_LOADED_FCOE 0x00000004
2243 #define DRV_FLAGS_CAPABILITIES_LOADED_ISCSI 0x00000008
2244 #define DRV_FLAGS_MTU_MASK 0xffff0000
2245 #define DRV_FLAGS_MTU_SHIFT 16
2246
2247 u32 extended_dev_info_shared_cfg_size;
2248
2249 u32 dcbx_en[PORT_MAX];
2250
2251
2252 u32 multi_thread_data_offset;
2253
2254
2255 u32 drv_info_host_addr_lo;
2256 u32 drv_info_host_addr_hi;
2257
2258
2259 u32 drv_info_control;
2260 #define DRV_INFO_CONTROL_VER_MASK 0x000000ff
2261 #define DRV_INFO_CONTROL_VER_SHIFT 0
2262 #define DRV_INFO_CONTROL_OP_CODE_MASK 0x0000ff00
2263 #define DRV_INFO_CONTROL_OP_CODE_SHIFT 8
2264 u32 ibft_host_addr;
2265 struct eee_remote_vals eee_remote_vals[PORT_MAX];
2266 u32 reserved[E2_FUNC_MAX];
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283 u32 eee_status[PORT_MAX];
2284 #define SHMEM_EEE_TIMER_MASK 0x0000ffff
2285 #define SHMEM_EEE_SUPPORTED_MASK 0x000f0000
2286 #define SHMEM_EEE_SUPPORTED_SHIFT 16
2287 #define SHMEM_EEE_ADV_STATUS_MASK 0x00f00000
2288 #define SHMEM_EEE_100M_ADV (1<<0)
2289 #define SHMEM_EEE_1G_ADV (1<<1)
2290 #define SHMEM_EEE_10G_ADV (1<<2)
2291 #define SHMEM_EEE_ADV_STATUS_SHIFT 20
2292 #define SHMEM_EEE_LP_ADV_STATUS_MASK 0x0f000000
2293 #define SHMEM_EEE_LP_ADV_STATUS_SHIFT 24
2294 #define SHMEM_EEE_REQUESTED_BIT 0x10000000
2295 #define SHMEM_EEE_LPI_REQUESTED_BIT 0x20000000
2296 #define SHMEM_EEE_ACTIVE_BIT 0x40000000
2297 #define SHMEM_EEE_TIME_OUTPUT_BIT 0x80000000
2298
2299 u32 sizeof_port_stats;
2300
2301
2302 u32 lfa_host_addr[PORT_MAX];
2303 u32 reserved1;
2304
2305 u32 reserved2;
2306 u32 reserved3;
2307 u32 reserved4;
2308 u32 link_attr_sync[PORT_MAX];
2309 #define LINK_ATTR_SYNC_KR2_ENABLE 0x00000001
2310 #define LINK_ATTR_84858 0x00000002
2311 #define LINK_SFP_EEPROM_COMP_CODE_MASK 0x0000ff00
2312 #define LINK_SFP_EEPROM_COMP_CODE_SHIFT 8
2313 #define LINK_SFP_EEPROM_COMP_CODE_SR 0x00001000
2314 #define LINK_SFP_EEPROM_COMP_CODE_LR 0x00002000
2315 #define LINK_SFP_EEPROM_COMP_CODE_LRM 0x00004000
2316
2317 u32 reserved5[2];
2318 u32 link_change_count[PORT_MAX];
2319 #define LINK_CHANGE_COUNT_MASK 0xff
2320
2321 struct os_drv_ver func_os_drv_ver[E2_FUNC_MAX];
2322
2323
2324 u32 mfw_drv_indication;
2325
2326
2327 #define MFW_DRV_IND_READ_DONE_OFFSET(_pf_) (1 << (_pf_))
2328 union {
2329 u8 storage_boot_prog[E2_FUNC_MAX];
2330 #define STORAGE_BOOT_PROG_MASK 0x000000FF
2331 #define STORAGE_BOOT_PROG_NONE 0x00000000
2332 #define STORAGE_BOOT_PROG_ISCSI_IP_ACQUIRED 0x00000002
2333 #define STORAGE_BOOT_PROG_FCOE_FABRIC_LOGIN_SUCCESS 0x00000002
2334 #define STORAGE_BOOT_PROG_TARGET_FOUND 0x00000004
2335 #define STORAGE_BOOT_PROG_ISCSI_CHAP_SUCCESS 0x00000008
2336 #define STORAGE_BOOT_PROG_FCOE_LUN_FOUND 0x00000008
2337 #define STORAGE_BOOT_PROG_LOGGED_INTO_TGT 0x00000010
2338 #define STORAGE_BOOT_PROG_IMG_DOWNLOADED 0x00000020
2339 #define STORAGE_BOOT_PROG_OS_HANDOFF 0x00000040
2340 #define STORAGE_BOOT_PROG_COMPLETED 0x00000080
2341
2342 u32 oem_i2c_data_addr;
2343 };
2344
2345
2346
2347
2348
2349
2350 u32 c2s_pcp_map_lower[E2_FUNC_MAX];
2351
2352
2353
2354
2355
2356 u32 c2s_pcp_map_upper[E2_FUNC_MAX];
2357
2358
2359 u32 c2s_pcp_map_default[E2_FUNC_MAX];
2360
2361
2362 u32 fc_npiv_nvram_tbl_addr[PORT_MAX];
2363
2364
2365 enum curr_cfg_method_e curr_cfg;
2366
2367
2368
2369
2370 u32 netproc_fw_ver;
2371
2372
2373 u32 clp_ver;
2374
2375 u32 pcie_bus_num;
2376
2377 u32 sriov_switch_mode;
2378 #define SRIOV_SWITCH_MODE_NONE 0x0
2379 #define SRIOV_SWITCH_MODE_VEB 0x1
2380 #define SRIOV_SWITCH_MODE_VEPA 0x2
2381
2382 u8 rsrv2[E2_FUNC_MAX];
2383
2384 u32 img_inv_table_addr;
2385
2386 u32 mtu_size[E2_FUNC_MAX];
2387
2388 u32 os_driver_state[E2_FUNC_MAX];
2389 #define OS_DRIVER_STATE_NOT_LOADED 0
2390 #define OS_DRIVER_STATE_LOADING 1
2391 #define OS_DRIVER_STATE_DISABLED 2
2392 #define OS_DRIVER_STATE_ACTIVE 3
2393
2394
2395 struct mdump_driver_info drv_info;
2396 };
2397
2398
2399 struct emac_stats {
2400 u32 rx_stat_ifhcinoctets;
2401 u32 rx_stat_ifhcinbadoctets;
2402 u32 rx_stat_etherstatsfragments;
2403 u32 rx_stat_ifhcinucastpkts;
2404 u32 rx_stat_ifhcinmulticastpkts;
2405 u32 rx_stat_ifhcinbroadcastpkts;
2406 u32 rx_stat_dot3statsfcserrors;
2407 u32 rx_stat_dot3statsalignmenterrors;
2408 u32 rx_stat_dot3statscarriersenseerrors;
2409 u32 rx_stat_xonpauseframesreceived;
2410 u32 rx_stat_xoffpauseframesreceived;
2411 u32 rx_stat_maccontrolframesreceived;
2412 u32 rx_stat_xoffstateentered;
2413 u32 rx_stat_dot3statsframestoolong;
2414 u32 rx_stat_etherstatsjabbers;
2415 u32 rx_stat_etherstatsundersizepkts;
2416 u32 rx_stat_etherstatspkts64octets;
2417 u32 rx_stat_etherstatspkts65octetsto127octets;
2418 u32 rx_stat_etherstatspkts128octetsto255octets;
2419 u32 rx_stat_etherstatspkts256octetsto511octets;
2420 u32 rx_stat_etherstatspkts512octetsto1023octets;
2421 u32 rx_stat_etherstatspkts1024octetsto1522octets;
2422 u32 rx_stat_etherstatspktsover1522octets;
2423
2424 u32 rx_stat_falsecarriererrors;
2425
2426 u32 tx_stat_ifhcoutoctets;
2427 u32 tx_stat_ifhcoutbadoctets;
2428 u32 tx_stat_etherstatscollisions;
2429 u32 tx_stat_outxonsent;
2430 u32 tx_stat_outxoffsent;
2431 u32 tx_stat_flowcontroldone;
2432 u32 tx_stat_dot3statssinglecollisionframes;
2433 u32 tx_stat_dot3statsmultiplecollisionframes;
2434 u32 tx_stat_dot3statsdeferredtransmissions;
2435 u32 tx_stat_dot3statsexcessivecollisions;
2436 u32 tx_stat_dot3statslatecollisions;
2437 u32 tx_stat_ifhcoutucastpkts;
2438 u32 tx_stat_ifhcoutmulticastpkts;
2439 u32 tx_stat_ifhcoutbroadcastpkts;
2440 u32 tx_stat_etherstatspkts64octets;
2441 u32 tx_stat_etherstatspkts65octetsto127octets;
2442 u32 tx_stat_etherstatspkts128octetsto255octets;
2443 u32 tx_stat_etherstatspkts256octetsto511octets;
2444 u32 tx_stat_etherstatspkts512octetsto1023octets;
2445 u32 tx_stat_etherstatspkts1024octetsto1522octets;
2446 u32 tx_stat_etherstatspktsover1522octets;
2447 u32 tx_stat_dot3statsinternalmactransmiterrors;
2448 };
2449
2450
2451 struct bmac1_stats {
2452 u32 tx_stat_gtpkt_lo;
2453 u32 tx_stat_gtpkt_hi;
2454 u32 tx_stat_gtxpf_lo;
2455 u32 tx_stat_gtxpf_hi;
2456 u32 tx_stat_gtfcs_lo;
2457 u32 tx_stat_gtfcs_hi;
2458 u32 tx_stat_gtmca_lo;
2459 u32 tx_stat_gtmca_hi;
2460 u32 tx_stat_gtbca_lo;
2461 u32 tx_stat_gtbca_hi;
2462 u32 tx_stat_gtfrg_lo;
2463 u32 tx_stat_gtfrg_hi;
2464 u32 tx_stat_gtovr_lo;
2465 u32 tx_stat_gtovr_hi;
2466 u32 tx_stat_gt64_lo;
2467 u32 tx_stat_gt64_hi;
2468 u32 tx_stat_gt127_lo;
2469 u32 tx_stat_gt127_hi;
2470 u32 tx_stat_gt255_lo;
2471 u32 tx_stat_gt255_hi;
2472 u32 tx_stat_gt511_lo;
2473 u32 tx_stat_gt511_hi;
2474 u32 tx_stat_gt1023_lo;
2475 u32 tx_stat_gt1023_hi;
2476 u32 tx_stat_gt1518_lo;
2477 u32 tx_stat_gt1518_hi;
2478 u32 tx_stat_gt2047_lo;
2479 u32 tx_stat_gt2047_hi;
2480 u32 tx_stat_gt4095_lo;
2481 u32 tx_stat_gt4095_hi;
2482 u32 tx_stat_gt9216_lo;
2483 u32 tx_stat_gt9216_hi;
2484 u32 tx_stat_gt16383_lo;
2485 u32 tx_stat_gt16383_hi;
2486 u32 tx_stat_gtmax_lo;
2487 u32 tx_stat_gtmax_hi;
2488 u32 tx_stat_gtufl_lo;
2489 u32 tx_stat_gtufl_hi;
2490 u32 tx_stat_gterr_lo;
2491 u32 tx_stat_gterr_hi;
2492 u32 tx_stat_gtbyt_lo;
2493 u32 tx_stat_gtbyt_hi;
2494
2495 u32 rx_stat_gr64_lo;
2496 u32 rx_stat_gr64_hi;
2497 u32 rx_stat_gr127_lo;
2498 u32 rx_stat_gr127_hi;
2499 u32 rx_stat_gr255_lo;
2500 u32 rx_stat_gr255_hi;
2501 u32 rx_stat_gr511_lo;
2502 u32 rx_stat_gr511_hi;
2503 u32 rx_stat_gr1023_lo;
2504 u32 rx_stat_gr1023_hi;
2505 u32 rx_stat_gr1518_lo;
2506 u32 rx_stat_gr1518_hi;
2507 u32 rx_stat_gr2047_lo;
2508 u32 rx_stat_gr2047_hi;
2509 u32 rx_stat_gr4095_lo;
2510 u32 rx_stat_gr4095_hi;
2511 u32 rx_stat_gr9216_lo;
2512 u32 rx_stat_gr9216_hi;
2513 u32 rx_stat_gr16383_lo;
2514 u32 rx_stat_gr16383_hi;
2515 u32 rx_stat_grmax_lo;
2516 u32 rx_stat_grmax_hi;
2517 u32 rx_stat_grpkt_lo;
2518 u32 rx_stat_grpkt_hi;
2519 u32 rx_stat_grfcs_lo;
2520 u32 rx_stat_grfcs_hi;
2521 u32 rx_stat_grmca_lo;
2522 u32 rx_stat_grmca_hi;
2523 u32 rx_stat_grbca_lo;
2524 u32 rx_stat_grbca_hi;
2525 u32 rx_stat_grxcf_lo;
2526 u32 rx_stat_grxcf_hi;
2527 u32 rx_stat_grxpf_lo;
2528 u32 rx_stat_grxpf_hi;
2529 u32 rx_stat_grxuo_lo;
2530 u32 rx_stat_grxuo_hi;
2531 u32 rx_stat_grjbr_lo;
2532 u32 rx_stat_grjbr_hi;
2533 u32 rx_stat_grovr_lo;
2534 u32 rx_stat_grovr_hi;
2535 u32 rx_stat_grflr_lo;
2536 u32 rx_stat_grflr_hi;
2537 u32 rx_stat_grmeg_lo;
2538 u32 rx_stat_grmeg_hi;
2539 u32 rx_stat_grmeb_lo;
2540 u32 rx_stat_grmeb_hi;
2541 u32 rx_stat_grbyt_lo;
2542 u32 rx_stat_grbyt_hi;
2543 u32 rx_stat_grund_lo;
2544 u32 rx_stat_grund_hi;
2545 u32 rx_stat_grfrg_lo;
2546 u32 rx_stat_grfrg_hi;
2547 u32 rx_stat_grerb_lo;
2548 u32 rx_stat_grerb_hi;
2549 u32 rx_stat_grfre_lo;
2550 u32 rx_stat_grfre_hi;
2551 u32 rx_stat_gripj_lo;
2552 u32 rx_stat_gripj_hi;
2553 };
2554
2555 struct bmac2_stats {
2556 u32 tx_stat_gtpk_lo;
2557 u32 tx_stat_gtpk_hi;
2558 u32 tx_stat_gtxpf_lo;
2559 u32 tx_stat_gtxpf_hi;
2560 u32 tx_stat_gtpp_lo;
2561 u32 tx_stat_gtpp_hi;
2562 u32 tx_stat_gtfcs_lo;
2563 u32 tx_stat_gtfcs_hi;
2564 u32 tx_stat_gtuca_lo;
2565 u32 tx_stat_gtuca_hi;
2566 u32 tx_stat_gtmca_lo;
2567 u32 tx_stat_gtmca_hi;
2568 u32 tx_stat_gtbca_lo;
2569 u32 tx_stat_gtbca_hi;
2570 u32 tx_stat_gtovr_lo;
2571 u32 tx_stat_gtovr_hi;
2572 u32 tx_stat_gtfrg_lo;
2573 u32 tx_stat_gtfrg_hi;
2574 u32 tx_stat_gtpkt1_lo;
2575 u32 tx_stat_gtpkt1_hi;
2576 u32 tx_stat_gt64_lo;
2577 u32 tx_stat_gt64_hi;
2578 u32 tx_stat_gt127_lo;
2579 u32 tx_stat_gt127_hi;
2580 u32 tx_stat_gt255_lo;
2581 u32 tx_stat_gt255_hi;
2582 u32 tx_stat_gt511_lo;
2583 u32 tx_stat_gt511_hi;
2584 u32 tx_stat_gt1023_lo;
2585 u32 tx_stat_gt1023_hi;
2586 u32 tx_stat_gt1518_lo;
2587 u32 tx_stat_gt1518_hi;
2588 u32 tx_stat_gt2047_lo;
2589 u32 tx_stat_gt2047_hi;
2590 u32 tx_stat_gt4095_lo;
2591 u32 tx_stat_gt4095_hi;
2592 u32 tx_stat_gt9216_lo;
2593 u32 tx_stat_gt9216_hi;
2594 u32 tx_stat_gt16383_lo;
2595 u32 tx_stat_gt16383_hi;
2596 u32 tx_stat_gtmax_lo;
2597 u32 tx_stat_gtmax_hi;
2598 u32 tx_stat_gtufl_lo;
2599 u32 tx_stat_gtufl_hi;
2600 u32 tx_stat_gterr_lo;
2601 u32 tx_stat_gterr_hi;
2602 u32 tx_stat_gtbyt_lo;
2603 u32 tx_stat_gtbyt_hi;
2604
2605 u32 rx_stat_gr64_lo;
2606 u32 rx_stat_gr64_hi;
2607 u32 rx_stat_gr127_lo;
2608 u32 rx_stat_gr127_hi;
2609 u32 rx_stat_gr255_lo;
2610 u32 rx_stat_gr255_hi;
2611 u32 rx_stat_gr511_lo;
2612 u32 rx_stat_gr511_hi;
2613 u32 rx_stat_gr1023_lo;
2614 u32 rx_stat_gr1023_hi;
2615 u32 rx_stat_gr1518_lo;
2616 u32 rx_stat_gr1518_hi;
2617 u32 rx_stat_gr2047_lo;
2618 u32 rx_stat_gr2047_hi;
2619 u32 rx_stat_gr4095_lo;
2620 u32 rx_stat_gr4095_hi;
2621 u32 rx_stat_gr9216_lo;
2622 u32 rx_stat_gr9216_hi;
2623 u32 rx_stat_gr16383_lo;
2624 u32 rx_stat_gr16383_hi;
2625 u32 rx_stat_grmax_lo;
2626 u32 rx_stat_grmax_hi;
2627 u32 rx_stat_grpkt_lo;
2628 u32 rx_stat_grpkt_hi;
2629 u32 rx_stat_grfcs_lo;
2630 u32 rx_stat_grfcs_hi;
2631 u32 rx_stat_gruca_lo;
2632 u32 rx_stat_gruca_hi;
2633 u32 rx_stat_grmca_lo;
2634 u32 rx_stat_grmca_hi;
2635 u32 rx_stat_grbca_lo;
2636 u32 rx_stat_grbca_hi;
2637 u32 rx_stat_grxpf_lo;
2638 u32 rx_stat_grxpf_hi;
2639 u32 rx_stat_grpp_lo;
2640 u32 rx_stat_grpp_hi;
2641 u32 rx_stat_grxuo_lo;
2642 u32 rx_stat_grxuo_hi;
2643 u32 rx_stat_grjbr_lo;
2644 u32 rx_stat_grjbr_hi;
2645 u32 rx_stat_grovr_lo;
2646 u32 rx_stat_grovr_hi;
2647 u32 rx_stat_grxcf_lo;
2648 u32 rx_stat_grxcf_hi;
2649 u32 rx_stat_grflr_lo;
2650 u32 rx_stat_grflr_hi;
2651 u32 rx_stat_grpok_lo;
2652 u32 rx_stat_grpok_hi;
2653 u32 rx_stat_grmeg_lo;
2654 u32 rx_stat_grmeg_hi;
2655 u32 rx_stat_grmeb_lo;
2656 u32 rx_stat_grmeb_hi;
2657 u32 rx_stat_grbyt_lo;
2658 u32 rx_stat_grbyt_hi;
2659 u32 rx_stat_grund_lo;
2660 u32 rx_stat_grund_hi;
2661 u32 rx_stat_grfrg_lo;
2662 u32 rx_stat_grfrg_hi;
2663 u32 rx_stat_grerb_lo;
2664 u32 rx_stat_grerb_hi;
2665 u32 rx_stat_grfre_lo;
2666 u32 rx_stat_grfre_hi;
2667 u32 rx_stat_gripj_lo;
2668 u32 rx_stat_gripj_hi;
2669 };
2670
2671 struct mstat_stats {
2672 struct {
2673
2674
2675
2676 u32 tx_gtxpok_lo;
2677 u32 tx_gtxpok_hi;
2678 u32 tx_gtxpf_lo;
2679 u32 tx_gtxpf_hi;
2680 u32 tx_gtxpp_lo;
2681 u32 tx_gtxpp_hi;
2682 u32 tx_gtfcs_lo;
2683 u32 tx_gtfcs_hi;
2684 u32 tx_gtuca_lo;
2685 u32 tx_gtuca_hi;
2686 u32 tx_gtmca_lo;
2687 u32 tx_gtmca_hi;
2688 u32 tx_gtgca_lo;
2689 u32 tx_gtgca_hi;
2690 u32 tx_gtpkt_lo;
2691 u32 tx_gtpkt_hi;
2692 u32 tx_gt64_lo;
2693 u32 tx_gt64_hi;
2694 u32 tx_gt127_lo;
2695 u32 tx_gt127_hi;
2696 u32 tx_gt255_lo;
2697 u32 tx_gt255_hi;
2698 u32 tx_gt511_lo;
2699 u32 tx_gt511_hi;
2700 u32 tx_gt1023_lo;
2701 u32 tx_gt1023_hi;
2702 u32 tx_gt1518_lo;
2703 u32 tx_gt1518_hi;
2704 u32 tx_gt2047_lo;
2705 u32 tx_gt2047_hi;
2706 u32 tx_gt4095_lo;
2707 u32 tx_gt4095_hi;
2708 u32 tx_gt9216_lo;
2709 u32 tx_gt9216_hi;
2710 u32 tx_gt16383_lo;
2711 u32 tx_gt16383_hi;
2712 u32 tx_gtufl_lo;
2713 u32 tx_gtufl_hi;
2714 u32 tx_gterr_lo;
2715 u32 tx_gterr_hi;
2716 u32 tx_gtbyt_lo;
2717 u32 tx_gtbyt_hi;
2718 u32 tx_collisions_lo;
2719 u32 tx_collisions_hi;
2720 u32 tx_singlecollision_lo;
2721 u32 tx_singlecollision_hi;
2722 u32 tx_multiplecollisions_lo;
2723 u32 tx_multiplecollisions_hi;
2724 u32 tx_deferred_lo;
2725 u32 tx_deferred_hi;
2726 u32 tx_excessivecollisions_lo;
2727 u32 tx_excessivecollisions_hi;
2728 u32 tx_latecollisions_lo;
2729 u32 tx_latecollisions_hi;
2730 } stats_tx;
2731
2732 struct {
2733 u32 rx_gr64_lo;
2734 u32 rx_gr64_hi;
2735 u32 rx_gr127_lo;
2736 u32 rx_gr127_hi;
2737 u32 rx_gr255_lo;
2738 u32 rx_gr255_hi;
2739 u32 rx_gr511_lo;
2740 u32 rx_gr511_hi;
2741 u32 rx_gr1023_lo;
2742 u32 rx_gr1023_hi;
2743 u32 rx_gr1518_lo;
2744 u32 rx_gr1518_hi;
2745 u32 rx_gr2047_lo;
2746 u32 rx_gr2047_hi;
2747 u32 rx_gr4095_lo;
2748 u32 rx_gr4095_hi;
2749 u32 rx_gr9216_lo;
2750 u32 rx_gr9216_hi;
2751 u32 rx_gr16383_lo;
2752 u32 rx_gr16383_hi;
2753 u32 rx_grpkt_lo;
2754 u32 rx_grpkt_hi;
2755 u32 rx_grfcs_lo;
2756 u32 rx_grfcs_hi;
2757 u32 rx_gruca_lo;
2758 u32 rx_gruca_hi;
2759 u32 rx_grmca_lo;
2760 u32 rx_grmca_hi;
2761 u32 rx_grbca_lo;
2762 u32 rx_grbca_hi;
2763 u32 rx_grxpf_lo;
2764 u32 rx_grxpf_hi;
2765 u32 rx_grxpp_lo;
2766 u32 rx_grxpp_hi;
2767 u32 rx_grxuo_lo;
2768 u32 rx_grxuo_hi;
2769 u32 rx_grovr_lo;
2770 u32 rx_grovr_hi;
2771 u32 rx_grxcf_lo;
2772 u32 rx_grxcf_hi;
2773 u32 rx_grflr_lo;
2774 u32 rx_grflr_hi;
2775 u32 rx_grpok_lo;
2776 u32 rx_grpok_hi;
2777 u32 rx_grbyt_lo;
2778 u32 rx_grbyt_hi;
2779 u32 rx_grund_lo;
2780 u32 rx_grund_hi;
2781 u32 rx_grfrg_lo;
2782 u32 rx_grfrg_hi;
2783 u32 rx_grerb_lo;
2784 u32 rx_grerb_hi;
2785 u32 rx_grfre_lo;
2786 u32 rx_grfre_hi;
2787
2788 u32 rx_alignmenterrors_lo;
2789 u32 rx_alignmenterrors_hi;
2790 u32 rx_falsecarrier_lo;
2791 u32 rx_falsecarrier_hi;
2792 u32 rx_llfcmsgcnt_lo;
2793 u32 rx_llfcmsgcnt_hi;
2794 } stats_rx;
2795 };
2796
2797 union mac_stats {
2798 struct emac_stats emac_stats;
2799 struct bmac1_stats bmac1_stats;
2800 struct bmac2_stats bmac2_stats;
2801 struct mstat_stats mstat_stats;
2802 };
2803
2804
2805 struct mac_stx {
2806
2807 u32 rx_stat_ifhcinbadoctets_hi;
2808 u32 rx_stat_ifhcinbadoctets_lo;
2809
2810
2811 u32 tx_stat_ifhcoutbadoctets_hi;
2812 u32 tx_stat_ifhcoutbadoctets_lo;
2813
2814
2815 u32 rx_stat_dot3statsfcserrors_hi;
2816 u32 rx_stat_dot3statsfcserrors_lo;
2817
2818 u32 rx_stat_dot3statsalignmenterrors_hi;
2819 u32 rx_stat_dot3statsalignmenterrors_lo;
2820
2821 u32 rx_stat_dot3statscarriersenseerrors_hi;
2822 u32 rx_stat_dot3statscarriersenseerrors_lo;
2823
2824 u32 rx_stat_falsecarriererrors_hi;
2825 u32 rx_stat_falsecarriererrors_lo;
2826
2827
2828 u32 rx_stat_etherstatsundersizepkts_hi;
2829 u32 rx_stat_etherstatsundersizepkts_lo;
2830
2831 u32 rx_stat_dot3statsframestoolong_hi;
2832 u32 rx_stat_dot3statsframestoolong_lo;
2833
2834
2835 u32 rx_stat_etherstatsfragments_hi;
2836 u32 rx_stat_etherstatsfragments_lo;
2837
2838 u32 rx_stat_etherstatsjabbers_hi;
2839 u32 rx_stat_etherstatsjabbers_lo;
2840
2841
2842 u32 rx_stat_maccontrolframesreceived_hi;
2843 u32 rx_stat_maccontrolframesreceived_lo;
2844 u32 rx_stat_mac_xpf_hi;
2845 u32 rx_stat_mac_xpf_lo;
2846 u32 rx_stat_mac_xcf_hi;
2847 u32 rx_stat_mac_xcf_lo;
2848
2849
2850 u32 rx_stat_xoffstateentered_hi;
2851 u32 rx_stat_xoffstateentered_lo;
2852
2853 u32 rx_stat_xonpauseframesreceived_hi;
2854 u32 rx_stat_xonpauseframesreceived_lo;
2855
2856 u32 rx_stat_xoffpauseframesreceived_hi;
2857 u32 rx_stat_xoffpauseframesreceived_lo;
2858
2859 u32 tx_stat_outxonsent_hi;
2860 u32 tx_stat_outxonsent_lo;
2861
2862 u32 tx_stat_outxoffsent_hi;
2863 u32 tx_stat_outxoffsent_lo;
2864
2865 u32 tx_stat_flowcontroldone_hi;
2866 u32 tx_stat_flowcontroldone_lo;
2867
2868
2869 u32 tx_stat_etherstatscollisions_hi;
2870 u32 tx_stat_etherstatscollisions_lo;
2871
2872 u32 tx_stat_dot3statssinglecollisionframes_hi;
2873 u32 tx_stat_dot3statssinglecollisionframes_lo;
2874
2875 u32 tx_stat_dot3statsmultiplecollisionframes_hi;
2876 u32 tx_stat_dot3statsmultiplecollisionframes_lo;
2877
2878 u32 tx_stat_dot3statsdeferredtransmissions_hi;
2879 u32 tx_stat_dot3statsdeferredtransmissions_lo;
2880
2881 u32 tx_stat_dot3statsexcessivecollisions_hi;
2882 u32 tx_stat_dot3statsexcessivecollisions_lo;
2883
2884 u32 tx_stat_dot3statslatecollisions_hi;
2885 u32 tx_stat_dot3statslatecollisions_lo;
2886
2887
2888 u32 tx_stat_etherstatspkts64octets_hi;
2889 u32 tx_stat_etherstatspkts64octets_lo;
2890
2891 u32 tx_stat_etherstatspkts65octetsto127octets_hi;
2892 u32 tx_stat_etherstatspkts65octetsto127octets_lo;
2893
2894 u32 tx_stat_etherstatspkts128octetsto255octets_hi;
2895 u32 tx_stat_etherstatspkts128octetsto255octets_lo;
2896
2897 u32 tx_stat_etherstatspkts256octetsto511octets_hi;
2898 u32 tx_stat_etherstatspkts256octetsto511octets_lo;
2899
2900 u32 tx_stat_etherstatspkts512octetsto1023octets_hi;
2901 u32 tx_stat_etherstatspkts512octetsto1023octets_lo;
2902
2903 u32 tx_stat_etherstatspkts1024octetsto1522octets_hi;
2904 u32 tx_stat_etherstatspkts1024octetsto1522octets_lo;
2905
2906 u32 tx_stat_etherstatspktsover1522octets_hi;
2907 u32 tx_stat_etherstatspktsover1522octets_lo;
2908 u32 tx_stat_mac_2047_hi;
2909 u32 tx_stat_mac_2047_lo;
2910 u32 tx_stat_mac_4095_hi;
2911 u32 tx_stat_mac_4095_lo;
2912 u32 tx_stat_mac_9216_hi;
2913 u32 tx_stat_mac_9216_lo;
2914 u32 tx_stat_mac_16383_hi;
2915 u32 tx_stat_mac_16383_lo;
2916
2917
2918 u32 tx_stat_dot3statsinternalmactransmiterrors_hi;
2919 u32 tx_stat_dot3statsinternalmactransmiterrors_lo;
2920
2921
2922 u32 tx_stat_mac_ufl_hi;
2923 u32 tx_stat_mac_ufl_lo;
2924 };
2925
2926
2927 #define MAC_STX_IDX_MAX 2
2928
2929 struct host_port_stats {
2930 u32 host_port_stats_counter;
2931
2932 struct mac_stx mac_stx[MAC_STX_IDX_MAX];
2933
2934 u32 brb_drop_hi;
2935 u32 brb_drop_lo;
2936
2937 u32 not_used;
2938 u32 pfc_frames_tx_hi;
2939 u32 pfc_frames_tx_lo;
2940 u32 pfc_frames_rx_hi;
2941 u32 pfc_frames_rx_lo;
2942
2943 u32 eee_lpi_count_hi;
2944 u32 eee_lpi_count_lo;
2945 };
2946
2947
2948 struct host_func_stats {
2949 u32 host_func_stats_start;
2950
2951 u32 total_bytes_received_hi;
2952 u32 total_bytes_received_lo;
2953
2954 u32 total_bytes_transmitted_hi;
2955 u32 total_bytes_transmitted_lo;
2956
2957 u32 total_unicast_packets_received_hi;
2958 u32 total_unicast_packets_received_lo;
2959
2960 u32 total_multicast_packets_received_hi;
2961 u32 total_multicast_packets_received_lo;
2962
2963 u32 total_broadcast_packets_received_hi;
2964 u32 total_broadcast_packets_received_lo;
2965
2966 u32 total_unicast_packets_transmitted_hi;
2967 u32 total_unicast_packets_transmitted_lo;
2968
2969 u32 total_multicast_packets_transmitted_hi;
2970 u32 total_multicast_packets_transmitted_lo;
2971
2972 u32 total_broadcast_packets_transmitted_hi;
2973 u32 total_broadcast_packets_transmitted_lo;
2974
2975 u32 valid_bytes_received_hi;
2976 u32 valid_bytes_received_lo;
2977
2978 u32 host_func_stats_end;
2979 };
2980
2981
2982 #define VICSTATST_UIF_INDEX 2
2983
2984
2985
2986
2987
2988
2989 struct afex_stats {
2990 u32 tx_unicast_frames_hi;
2991 u32 tx_unicast_frames_lo;
2992 u32 tx_unicast_bytes_hi;
2993 u32 tx_unicast_bytes_lo;
2994 u32 tx_multicast_frames_hi;
2995 u32 tx_multicast_frames_lo;
2996 u32 tx_multicast_bytes_hi;
2997 u32 tx_multicast_bytes_lo;
2998 u32 tx_broadcast_frames_hi;
2999 u32 tx_broadcast_frames_lo;
3000 u32 tx_broadcast_bytes_hi;
3001 u32 tx_broadcast_bytes_lo;
3002 u32 tx_frames_discarded_hi;
3003 u32 tx_frames_discarded_lo;
3004 u32 tx_frames_dropped_hi;
3005 u32 tx_frames_dropped_lo;
3006
3007 u32 rx_unicast_frames_hi;
3008 u32 rx_unicast_frames_lo;
3009 u32 rx_unicast_bytes_hi;
3010 u32 rx_unicast_bytes_lo;
3011 u32 rx_multicast_frames_hi;
3012 u32 rx_multicast_frames_lo;
3013 u32 rx_multicast_bytes_hi;
3014 u32 rx_multicast_bytes_lo;
3015 u32 rx_broadcast_frames_hi;
3016 u32 rx_broadcast_frames_lo;
3017 u32 rx_broadcast_bytes_hi;
3018 u32 rx_broadcast_bytes_lo;
3019 u32 rx_frames_discarded_hi;
3020 u32 rx_frames_discarded_lo;
3021 u32 rx_frames_dropped_hi;
3022 u32 rx_frames_dropped_lo;
3023 };
3024
3025 #define BCM_5710_FW_MAJOR_VERSION 7
3026 #define BCM_5710_FW_MINOR_VERSION 13
3027 #define BCM_5710_FW_REVISION_VERSION 21
3028 #define BCM_5710_FW_REVISION_VERSION_V15 15
3029 #define BCM_5710_FW_ENGINEERING_VERSION 0
3030 #define BCM_5710_FW_COMPILE_FLAGS 1
3031
3032
3033
3034
3035
3036 struct atten_sp_status_block {
3037 __le32 attn_bits;
3038 __le32 attn_bits_ack;
3039 u8 status_block_id;
3040 u8 reserved0;
3041 __le16 attn_bits_index;
3042 __le32 reserved1;
3043 };
3044
3045
3046
3047
3048
3049 struct cstorm_eth_ag_context {
3050 u32 __reserved0[10];
3051 };
3052
3053
3054
3055
3056
3057 struct dmae_command {
3058 u32 opcode;
3059 #define DMAE_COMMAND_SRC (0x1<<0)
3060 #define DMAE_COMMAND_SRC_SHIFT 0
3061 #define DMAE_COMMAND_DST (0x3<<1)
3062 #define DMAE_COMMAND_DST_SHIFT 1
3063 #define DMAE_COMMAND_C_DST (0x1<<3)
3064 #define DMAE_COMMAND_C_DST_SHIFT 3
3065 #define DMAE_COMMAND_C_TYPE_ENABLE (0x1<<4)
3066 #define DMAE_COMMAND_C_TYPE_ENABLE_SHIFT 4
3067 #define DMAE_COMMAND_C_TYPE_CRC_ENABLE (0x1<<5)
3068 #define DMAE_COMMAND_C_TYPE_CRC_ENABLE_SHIFT 5
3069 #define DMAE_COMMAND_C_TYPE_CRC_OFFSET (0x7<<6)
3070 #define DMAE_COMMAND_C_TYPE_CRC_OFFSET_SHIFT 6
3071 #define DMAE_COMMAND_ENDIANITY (0x3<<9)
3072 #define DMAE_COMMAND_ENDIANITY_SHIFT 9
3073 #define DMAE_COMMAND_PORT (0x1<<11)
3074 #define DMAE_COMMAND_PORT_SHIFT 11
3075 #define DMAE_COMMAND_CRC_RESET (0x1<<12)
3076 #define DMAE_COMMAND_CRC_RESET_SHIFT 12
3077 #define DMAE_COMMAND_SRC_RESET (0x1<<13)
3078 #define DMAE_COMMAND_SRC_RESET_SHIFT 13
3079 #define DMAE_COMMAND_DST_RESET (0x1<<14)
3080 #define DMAE_COMMAND_DST_RESET_SHIFT 14
3081 #define DMAE_COMMAND_E1HVN (0x3<<15)
3082 #define DMAE_COMMAND_E1HVN_SHIFT 15
3083 #define DMAE_COMMAND_DST_VN (0x3<<17)
3084 #define DMAE_COMMAND_DST_VN_SHIFT 17
3085 #define DMAE_COMMAND_C_FUNC (0x1<<19)
3086 #define DMAE_COMMAND_C_FUNC_SHIFT 19
3087 #define DMAE_COMMAND_ERR_POLICY (0x3<<20)
3088 #define DMAE_COMMAND_ERR_POLICY_SHIFT 20
3089 #define DMAE_COMMAND_RESERVED0 (0x3FF<<22)
3090 #define DMAE_COMMAND_RESERVED0_SHIFT 22
3091 u32 src_addr_lo;
3092 u32 src_addr_hi;
3093 u32 dst_addr_lo;
3094 u32 dst_addr_hi;
3095 #if defined(__BIG_ENDIAN)
3096 u16 opcode_iov;
3097 #define DMAE_COMMAND_SRC_VFID (0x3F<<0)
3098 #define DMAE_COMMAND_SRC_VFID_SHIFT 0
3099 #define DMAE_COMMAND_SRC_VFPF (0x1<<6)
3100 #define DMAE_COMMAND_SRC_VFPF_SHIFT 6
3101 #define DMAE_COMMAND_RESERVED1 (0x1<<7)
3102 #define DMAE_COMMAND_RESERVED1_SHIFT 7
3103 #define DMAE_COMMAND_DST_VFID (0x3F<<8)
3104 #define DMAE_COMMAND_DST_VFID_SHIFT 8
3105 #define DMAE_COMMAND_DST_VFPF (0x1<<14)
3106 #define DMAE_COMMAND_DST_VFPF_SHIFT 14
3107 #define DMAE_COMMAND_RESERVED2 (0x1<<15)
3108 #define DMAE_COMMAND_RESERVED2_SHIFT 15
3109 u16 len;
3110 #elif defined(__LITTLE_ENDIAN)
3111 u16 len;
3112 u16 opcode_iov;
3113 #define DMAE_COMMAND_SRC_VFID (0x3F<<0)
3114 #define DMAE_COMMAND_SRC_VFID_SHIFT 0
3115 #define DMAE_COMMAND_SRC_VFPF (0x1<<6)
3116 #define DMAE_COMMAND_SRC_VFPF_SHIFT 6
3117 #define DMAE_COMMAND_RESERVED1 (0x1<<7)
3118 #define DMAE_COMMAND_RESERVED1_SHIFT 7
3119 #define DMAE_COMMAND_DST_VFID (0x3F<<8)
3120 #define DMAE_COMMAND_DST_VFID_SHIFT 8
3121 #define DMAE_COMMAND_DST_VFPF (0x1<<14)
3122 #define DMAE_COMMAND_DST_VFPF_SHIFT 14
3123 #define DMAE_COMMAND_RESERVED2 (0x1<<15)
3124 #define DMAE_COMMAND_RESERVED2_SHIFT 15
3125 #endif
3126 u32 comp_addr_lo;
3127 u32 comp_addr_hi;
3128 u32 comp_val;
3129 u32 crc32;
3130 u32 crc32_c;
3131 #if defined(__BIG_ENDIAN)
3132 u16 crc16_c;
3133 u16 crc16;
3134 #elif defined(__LITTLE_ENDIAN)
3135 u16 crc16;
3136 u16 crc16_c;
3137 #endif
3138 #if defined(__BIG_ENDIAN)
3139 u16 reserved3;
3140 u16 crc_t10;
3141 #elif defined(__LITTLE_ENDIAN)
3142 u16 crc_t10;
3143 u16 reserved3;
3144 #endif
3145 #if defined(__BIG_ENDIAN)
3146 u16 xsum8;
3147 u16 xsum16;
3148 #elif defined(__LITTLE_ENDIAN)
3149 u16 xsum16;
3150 u16 xsum8;
3151 #endif
3152 };
3153
3154
3155
3156
3157
3158 struct doorbell_hdr {
3159 u8 header;
3160 #define DOORBELL_HDR_RX (0x1<<0)
3161 #define DOORBELL_HDR_RX_SHIFT 0
3162 #define DOORBELL_HDR_DB_TYPE (0x1<<1)
3163 #define DOORBELL_HDR_DB_TYPE_SHIFT 1
3164 #define DOORBELL_HDR_DPM_SIZE (0x3<<2)
3165 #define DOORBELL_HDR_DPM_SIZE_SHIFT 2
3166 #define DOORBELL_HDR_CONN_TYPE (0xF<<4)
3167 #define DOORBELL_HDR_CONN_TYPE_SHIFT 4
3168 };
3169
3170
3171
3172
3173 struct eth_tx_doorbell {
3174 #if defined(__BIG_ENDIAN)
3175 u16 npackets;
3176 u8 params;
3177 #define ETH_TX_DOORBELL_NUM_BDS (0x3F<<0)
3178 #define ETH_TX_DOORBELL_NUM_BDS_SHIFT 0
3179 #define ETH_TX_DOORBELL_RESERVED_TX_FIN_FLAG (0x1<<6)
3180 #define ETH_TX_DOORBELL_RESERVED_TX_FIN_FLAG_SHIFT 6
3181 #define ETH_TX_DOORBELL_SPARE (0x1<<7)
3182 #define ETH_TX_DOORBELL_SPARE_SHIFT 7
3183 struct doorbell_hdr hdr;
3184 #elif defined(__LITTLE_ENDIAN)
3185 struct doorbell_hdr hdr;
3186 u8 params;
3187 #define ETH_TX_DOORBELL_NUM_BDS (0x3F<<0)
3188 #define ETH_TX_DOORBELL_NUM_BDS_SHIFT 0
3189 #define ETH_TX_DOORBELL_RESERVED_TX_FIN_FLAG (0x1<<6)
3190 #define ETH_TX_DOORBELL_RESERVED_TX_FIN_FLAG_SHIFT 6
3191 #define ETH_TX_DOORBELL_SPARE (0x1<<7)
3192 #define ETH_TX_DOORBELL_SPARE_SHIFT 7
3193 u16 npackets;
3194 #endif
3195 };
3196
3197
3198
3199
3200
3201 struct hc_status_block_e1x {
3202 __le16 index_values[HC_SB_MAX_INDICES_E1X];
3203 __le16 running_index[HC_SB_MAX_SM];
3204 __le32 rsrv[11];
3205 };
3206
3207
3208
3209
3210 struct host_hc_status_block_e1x {
3211 struct hc_status_block_e1x sb;
3212 };
3213
3214
3215
3216
3217
3218 struct hc_status_block_e2 {
3219 __le16 index_values[HC_SB_MAX_INDICES_E2];
3220 __le16 running_index[HC_SB_MAX_SM];
3221 __le32 reserved[11];
3222 };
3223
3224
3225
3226
3227 struct host_hc_status_block_e2 {
3228 struct hc_status_block_e2 sb;
3229 };
3230
3231
3232
3233
3234
3235 struct hc_sp_status_block {
3236 __le16 index_values[HC_SP_SB_MAX_INDICES];
3237 __le16 running_index;
3238 __le16 rsrv;
3239 u32 rsrv1;
3240 };
3241
3242
3243
3244
3245 struct host_sp_status_block {
3246 struct atten_sp_status_block atten_status_block;
3247 struct hc_sp_status_block sp_sb;
3248 };
3249
3250
3251
3252
3253
3254 struct igu_ack_register {
3255 #if defined(__BIG_ENDIAN)
3256 u16 sb_id_and_flags;
3257 #define IGU_ACK_REGISTER_STATUS_BLOCK_ID (0x1F<<0)
3258 #define IGU_ACK_REGISTER_STATUS_BLOCK_ID_SHIFT 0
3259 #define IGU_ACK_REGISTER_STORM_ID (0x7<<5)
3260 #define IGU_ACK_REGISTER_STORM_ID_SHIFT 5
3261 #define IGU_ACK_REGISTER_UPDATE_INDEX (0x1<<8)
3262 #define IGU_ACK_REGISTER_UPDATE_INDEX_SHIFT 8
3263 #define IGU_ACK_REGISTER_INTERRUPT_MODE (0x3<<9)
3264 #define IGU_ACK_REGISTER_INTERRUPT_MODE_SHIFT 9
3265 #define IGU_ACK_REGISTER_RESERVED (0x1F<<11)
3266 #define IGU_ACK_REGISTER_RESERVED_SHIFT 11
3267 u16 status_block_index;
3268 #elif defined(__LITTLE_ENDIAN)
3269 u16 status_block_index;
3270 u16 sb_id_and_flags;
3271 #define IGU_ACK_REGISTER_STATUS_BLOCK_ID (0x1F<<0)
3272 #define IGU_ACK_REGISTER_STATUS_BLOCK_ID_SHIFT 0
3273 #define IGU_ACK_REGISTER_STORM_ID (0x7<<5)
3274 #define IGU_ACK_REGISTER_STORM_ID_SHIFT 5
3275 #define IGU_ACK_REGISTER_UPDATE_INDEX (0x1<<8)
3276 #define IGU_ACK_REGISTER_UPDATE_INDEX_SHIFT 8
3277 #define IGU_ACK_REGISTER_INTERRUPT_MODE (0x3<<9)
3278 #define IGU_ACK_REGISTER_INTERRUPT_MODE_SHIFT 9
3279 #define IGU_ACK_REGISTER_RESERVED (0x1F<<11)
3280 #define IGU_ACK_REGISTER_RESERVED_SHIFT 11
3281 #endif
3282 };
3283
3284
3285
3286
3287
3288 struct igu_backward_compatible {
3289 u32 sb_id_and_flags;
3290 #define IGU_BACKWARD_COMPATIBLE_SB_INDEX (0xFFFF<<0)
3291 #define IGU_BACKWARD_COMPATIBLE_SB_INDEX_SHIFT 0
3292 #define IGU_BACKWARD_COMPATIBLE_SB_SELECT (0x1F<<16)
3293 #define IGU_BACKWARD_COMPATIBLE_SB_SELECT_SHIFT 16
3294 #define IGU_BACKWARD_COMPATIBLE_SEGMENT_ACCESS (0x7<<21)
3295 #define IGU_BACKWARD_COMPATIBLE_SEGMENT_ACCESS_SHIFT 21
3296 #define IGU_BACKWARD_COMPATIBLE_BUPDATE (0x1<<24)
3297 #define IGU_BACKWARD_COMPATIBLE_BUPDATE_SHIFT 24
3298 #define IGU_BACKWARD_COMPATIBLE_ENABLE_INT (0x3<<25)
3299 #define IGU_BACKWARD_COMPATIBLE_ENABLE_INT_SHIFT 25
3300 #define IGU_BACKWARD_COMPATIBLE_RESERVED_0 (0x1F<<27)
3301 #define IGU_BACKWARD_COMPATIBLE_RESERVED_0_SHIFT 27
3302 u32 reserved_2;
3303 };
3304
3305
3306
3307
3308
3309 struct igu_regular {
3310 u32 sb_id_and_flags;
3311 #define IGU_REGULAR_SB_INDEX (0xFFFFF<<0)
3312 #define IGU_REGULAR_SB_INDEX_SHIFT 0
3313 #define IGU_REGULAR_RESERVED0 (0x1<<20)
3314 #define IGU_REGULAR_RESERVED0_SHIFT 20
3315 #define IGU_REGULAR_SEGMENT_ACCESS (0x7<<21)
3316 #define IGU_REGULAR_SEGMENT_ACCESS_SHIFT 21
3317 #define IGU_REGULAR_BUPDATE (0x1<<24)
3318 #define IGU_REGULAR_BUPDATE_SHIFT 24
3319 #define IGU_REGULAR_ENABLE_INT (0x3<<25)
3320 #define IGU_REGULAR_ENABLE_INT_SHIFT 25
3321 #define IGU_REGULAR_RESERVED_1 (0x1<<27)
3322 #define IGU_REGULAR_RESERVED_1_SHIFT 27
3323 #define IGU_REGULAR_CLEANUP_TYPE (0x3<<28)
3324 #define IGU_REGULAR_CLEANUP_TYPE_SHIFT 28
3325 #define IGU_REGULAR_CLEANUP_SET (0x1<<30)
3326 #define IGU_REGULAR_CLEANUP_SET_SHIFT 30
3327 #define IGU_REGULAR_BCLEANUP (0x1<<31)
3328 #define IGU_REGULAR_BCLEANUP_SHIFT 31
3329 u32 reserved_2;
3330 };
3331
3332
3333
3334
3335 union igu_consprod_reg {
3336 struct igu_regular regular;
3337 struct igu_backward_compatible backward_compatible;
3338 };
3339
3340
3341
3342
3343
3344 enum igu_ctrl_cmd {
3345 IGU_CTRL_CMD_TYPE_RD,
3346 IGU_CTRL_CMD_TYPE_WR,
3347 MAX_IGU_CTRL_CMD
3348 };
3349
3350
3351
3352
3353
3354 struct igu_ctrl_reg {
3355 u32 ctrl_data;
3356 #define IGU_CTRL_REG_ADDRESS (0xFFF<<0)
3357 #define IGU_CTRL_REG_ADDRESS_SHIFT 0
3358 #define IGU_CTRL_REG_FID (0x7F<<12)
3359 #define IGU_CTRL_REG_FID_SHIFT 12
3360 #define IGU_CTRL_REG_RESERVED (0x1<<19)
3361 #define IGU_CTRL_REG_RESERVED_SHIFT 19
3362 #define IGU_CTRL_REG_TYPE (0x1<<20)
3363 #define IGU_CTRL_REG_TYPE_SHIFT 20
3364 #define IGU_CTRL_REG_UNUSED (0x7FF<<21)
3365 #define IGU_CTRL_REG_UNUSED_SHIFT 21
3366 };
3367
3368
3369
3370
3371
3372 enum igu_int_cmd {
3373 IGU_INT_ENABLE,
3374 IGU_INT_DISABLE,
3375 IGU_INT_NOP,
3376 IGU_INT_NOP2,
3377 MAX_IGU_INT_CMD
3378 };
3379
3380
3381
3382
3383
3384 enum igu_seg_access {
3385 IGU_SEG_ACCESS_NORM,
3386 IGU_SEG_ACCESS_DEF,
3387 IGU_SEG_ACCESS_ATTN,
3388 MAX_IGU_SEG_ACCESS
3389 };
3390
3391
3392
3393
3394
3395 struct parsing_flags {
3396 __le16 flags;
3397 #define PARSING_FLAGS_ETHERNET_ADDRESS_TYPE (0x1<<0)
3398 #define PARSING_FLAGS_ETHERNET_ADDRESS_TYPE_SHIFT 0
3399 #define PARSING_FLAGS_VLAN (0x1<<1)
3400 #define PARSING_FLAGS_VLAN_SHIFT 1
3401 #define PARSING_FLAGS_EXTRA_VLAN (0x1<<2)
3402 #define PARSING_FLAGS_EXTRA_VLAN_SHIFT 2
3403 #define PARSING_FLAGS_OVER_ETHERNET_PROTOCOL (0x3<<3)
3404 #define PARSING_FLAGS_OVER_ETHERNET_PROTOCOL_SHIFT 3
3405 #define PARSING_FLAGS_IP_OPTIONS (0x1<<5)
3406 #define PARSING_FLAGS_IP_OPTIONS_SHIFT 5
3407 #define PARSING_FLAGS_FRAGMENTATION_STATUS (0x1<<6)
3408 #define PARSING_FLAGS_FRAGMENTATION_STATUS_SHIFT 6
3409 #define PARSING_FLAGS_OVER_IP_PROTOCOL (0x3<<7)
3410 #define PARSING_FLAGS_OVER_IP_PROTOCOL_SHIFT 7
3411 #define PARSING_FLAGS_PURE_ACK_INDICATION (0x1<<9)
3412 #define PARSING_FLAGS_PURE_ACK_INDICATION_SHIFT 9
3413 #define PARSING_FLAGS_TCP_OPTIONS_EXIST (0x1<<10)
3414 #define PARSING_FLAGS_TCP_OPTIONS_EXIST_SHIFT 10
3415 #define PARSING_FLAGS_TIME_STAMP_EXIST_FLAG (0x1<<11)
3416 #define PARSING_FLAGS_TIME_STAMP_EXIST_FLAG_SHIFT 11
3417 #define PARSING_FLAGS_CONNECTION_MATCH (0x1<<12)
3418 #define PARSING_FLAGS_CONNECTION_MATCH_SHIFT 12
3419 #define PARSING_FLAGS_LLC_SNAP (0x1<<13)
3420 #define PARSING_FLAGS_LLC_SNAP_SHIFT 13
3421 #define PARSING_FLAGS_RESERVED0 (0x3<<14)
3422 #define PARSING_FLAGS_RESERVED0_SHIFT 14
3423 };
3424
3425
3426
3427
3428
3429 enum prs_flags_ack_type {
3430 PRS_FLAG_PUREACK_PIGGY,
3431 PRS_FLAG_PUREACK_PURE,
3432 MAX_PRS_FLAGS_ACK_TYPE
3433 };
3434
3435
3436
3437
3438
3439 enum prs_flags_eth_addr_type {
3440 PRS_FLAG_ETHTYPE_NON_UNICAST,
3441 PRS_FLAG_ETHTYPE_UNICAST,
3442 MAX_PRS_FLAGS_ETH_ADDR_TYPE
3443 };
3444
3445
3446
3447
3448
3449 enum prs_flags_over_eth {
3450 PRS_FLAG_OVERETH_UNKNOWN,
3451 PRS_FLAG_OVERETH_IPV4,
3452 PRS_FLAG_OVERETH_IPV6,
3453 PRS_FLAG_OVERETH_LLCSNAP_UNKNOWN,
3454 MAX_PRS_FLAGS_OVER_ETH
3455 };
3456
3457
3458
3459
3460
3461 enum prs_flags_over_ip {
3462 PRS_FLAG_OVERIP_UNKNOWN,
3463 PRS_FLAG_OVERIP_TCP,
3464 PRS_FLAG_OVERIP_UDP,
3465 MAX_PRS_FLAGS_OVER_IP
3466 };
3467
3468
3469
3470
3471
3472 struct sdm_op_gen {
3473 __le32 command;
3474 #define SDM_OP_GEN_COMP_PARAM (0x1F<<0)
3475 #define SDM_OP_GEN_COMP_PARAM_SHIFT 0
3476 #define SDM_OP_GEN_COMP_TYPE (0x7<<5)
3477 #define SDM_OP_GEN_COMP_TYPE_SHIFT 5
3478 #define SDM_OP_GEN_AGG_VECT_IDX (0xFF<<8)
3479 #define SDM_OP_GEN_AGG_VECT_IDX_SHIFT 8
3480 #define SDM_OP_GEN_AGG_VECT_IDX_VALID (0x1<<16)
3481 #define SDM_OP_GEN_AGG_VECT_IDX_VALID_SHIFT 16
3482 #define SDM_OP_GEN_RESERVED (0x7FFF<<17)
3483 #define SDM_OP_GEN_RESERVED_SHIFT 17
3484 };
3485
3486
3487
3488
3489
3490 struct timers_block_context {
3491 u32 __reserved_0;
3492 u32 __reserved_1;
3493 u32 __reserved_2;
3494 u32 flags;
3495 #define __TIMERS_BLOCK_CONTEXT_NUM_OF_ACTIVE_TIMERS (0x3<<0)
3496 #define __TIMERS_BLOCK_CONTEXT_NUM_OF_ACTIVE_TIMERS_SHIFT 0
3497 #define TIMERS_BLOCK_CONTEXT_CONN_VALID_FLG (0x1<<2)
3498 #define TIMERS_BLOCK_CONTEXT_CONN_VALID_FLG_SHIFT 2
3499 #define __TIMERS_BLOCK_CONTEXT_RESERVED0 (0x1FFFFFFF<<3)
3500 #define __TIMERS_BLOCK_CONTEXT_RESERVED0_SHIFT 3
3501 };
3502
3503
3504
3505
3506
3507 struct tstorm_eth_ag_context {
3508 u32 __reserved0[14];
3509 };
3510
3511
3512
3513
3514
3515 struct ustorm_eth_ag_context {
3516 u32 __reserved0;
3517 #if defined(__BIG_ENDIAN)
3518 u8 cdu_usage;
3519 u8 __reserved2;
3520 u16 __reserved1;
3521 #elif defined(__LITTLE_ENDIAN)
3522 u16 __reserved1;
3523 u8 __reserved2;
3524 u8 cdu_usage;
3525 #endif
3526 u32 __reserved3[6];
3527 };
3528
3529
3530
3531
3532
3533 struct xstorm_eth_ag_context {
3534 u32 reserved0;
3535 #if defined(__BIG_ENDIAN)
3536 u8 cdu_reserved;
3537 u8 reserved2;
3538 u16 reserved1;
3539 #elif defined(__LITTLE_ENDIAN)
3540 u16 reserved1;
3541 u8 reserved2;
3542 u8 cdu_reserved;
3543 #endif
3544 u32 reserved3[30];
3545 };
3546
3547
3548
3549
3550
3551 struct doorbell {
3552 #if defined(__BIG_ENDIAN)
3553 u16 zero_fill2;
3554 u8 zero_fill1;
3555 struct doorbell_hdr header;
3556 #elif defined(__LITTLE_ENDIAN)
3557 struct doorbell_hdr header;
3558 u8 zero_fill1;
3559 u16 zero_fill2;
3560 #endif
3561 };
3562
3563
3564
3565
3566
3567 struct doorbell_set_prod {
3568 #if defined(__BIG_ENDIAN)
3569 u16 prod;
3570 u8 zero_fill1;
3571 struct doorbell_hdr header;
3572 #elif defined(__LITTLE_ENDIAN)
3573 struct doorbell_hdr header;
3574 u8 zero_fill1;
3575 u16 prod;
3576 #endif
3577 };
3578
3579
3580 struct regpair {
3581 __le32 lo;
3582 __le32 hi;
3583 };
3584
3585 struct regpair_native {
3586 u32 lo;
3587 u32 hi;
3588 };
3589
3590
3591
3592
3593 enum classify_rule {
3594 CLASSIFY_RULE_OPCODE_MAC,
3595 CLASSIFY_RULE_OPCODE_VLAN,
3596 CLASSIFY_RULE_OPCODE_PAIR,
3597 CLASSIFY_RULE_OPCODE_IMAC_VNI,
3598 MAX_CLASSIFY_RULE
3599 };
3600
3601
3602
3603
3604
3605 enum classify_rule_action_type {
3606 CLASSIFY_RULE_REMOVE,
3607 CLASSIFY_RULE_ADD,
3608 MAX_CLASSIFY_RULE_ACTION_TYPE
3609 };
3610
3611
3612
3613
3614
3615 struct client_init_general_data {
3616 u8 client_id;
3617 u8 statistics_counter_id;
3618 u8 statistics_en_flg;
3619 u8 is_fcoe_flg;
3620 u8 activate_flg;
3621 u8 sp_client_id;
3622 __le16 mtu;
3623 u8 statistics_zero_flg;
3624 u8 func_id;
3625 u8 cos;
3626 u8 traffic_type;
3627 u8 fp_hsi_ver;
3628 u8 reserved0[3];
3629 };
3630
3631
3632
3633
3634
3635 struct client_init_rx_data {
3636 u8 tpa_en;
3637 #define CLIENT_INIT_RX_DATA_TPA_EN_IPV4 (0x1<<0)
3638 #define CLIENT_INIT_RX_DATA_TPA_EN_IPV4_SHIFT 0
3639 #define CLIENT_INIT_RX_DATA_TPA_EN_IPV6 (0x1<<1)
3640 #define CLIENT_INIT_RX_DATA_TPA_EN_IPV6_SHIFT 1
3641 #define CLIENT_INIT_RX_DATA_TPA_MODE (0x1<<2)
3642 #define CLIENT_INIT_RX_DATA_TPA_MODE_SHIFT 2
3643 #define CLIENT_INIT_RX_DATA_TPA_OVER_VLAN_DISABLE (0x1<<3)
3644 #define CLIENT_INIT_RX_DATA_TPA_OVER_VLAN_DISABLE_SHIFT 3
3645 #define CLIENT_INIT_RX_DATA_RESERVED5 (0xF<<4)
3646 #define CLIENT_INIT_RX_DATA_RESERVED5_SHIFT 4
3647 u8 vmqueue_mode_en_flg;
3648 u8 extra_data_over_sgl_en_flg;
3649 u8 cache_line_alignment_log_size;
3650 u8 enable_dynamic_hc;
3651 u8 max_sges_for_packet;
3652 u8 client_qzone_id;
3653 u8 drop_ip_cs_err_flg;
3654 u8 drop_tcp_cs_err_flg;
3655 u8 drop_ttl0_flg;
3656 u8 drop_udp_cs_err_flg;
3657 u8 inner_vlan_removal_enable_flg;
3658 u8 outer_vlan_removal_enable_flg;
3659 u8 status_block_id;
3660 u8 rx_sb_index_number;
3661 u8 dont_verify_rings_pause_thr_flg;
3662 u8 max_tpa_queues;
3663 u8 silent_vlan_removal_flg;
3664 __le16 max_bytes_on_bd;
3665 __le16 sge_buff_size;
3666 u8 approx_mcast_engine_id;
3667 u8 rss_engine_id;
3668 struct regpair bd_page_base;
3669 struct regpair sge_page_base;
3670 struct regpair cqe_page_base;
3671 u8 is_leading_rss;
3672 u8 is_approx_mcast;
3673 __le16 max_agg_size;
3674 __le16 state;
3675 #define CLIENT_INIT_RX_DATA_UCAST_DROP_ALL (0x1<<0)
3676 #define CLIENT_INIT_RX_DATA_UCAST_DROP_ALL_SHIFT 0
3677 #define CLIENT_INIT_RX_DATA_UCAST_ACCEPT_ALL (0x1<<1)
3678 #define CLIENT_INIT_RX_DATA_UCAST_ACCEPT_ALL_SHIFT 1
3679 #define CLIENT_INIT_RX_DATA_UCAST_ACCEPT_UNMATCHED (0x1<<2)
3680 #define CLIENT_INIT_RX_DATA_UCAST_ACCEPT_UNMATCHED_SHIFT 2
3681 #define CLIENT_INIT_RX_DATA_MCAST_DROP_ALL (0x1<<3)
3682 #define CLIENT_INIT_RX_DATA_MCAST_DROP_ALL_SHIFT 3
3683 #define CLIENT_INIT_RX_DATA_MCAST_ACCEPT_ALL (0x1<<4)
3684 #define CLIENT_INIT_RX_DATA_MCAST_ACCEPT_ALL_SHIFT 4
3685 #define CLIENT_INIT_RX_DATA_BCAST_ACCEPT_ALL (0x1<<5)
3686 #define CLIENT_INIT_RX_DATA_BCAST_ACCEPT_ALL_SHIFT 5
3687 #define CLIENT_INIT_RX_DATA_ACCEPT_ANY_VLAN (0x1<<6)
3688 #define CLIENT_INIT_RX_DATA_ACCEPT_ANY_VLAN_SHIFT 6
3689 #define CLIENT_INIT_RX_DATA_RESERVED2 (0x1FF<<7)
3690 #define CLIENT_INIT_RX_DATA_RESERVED2_SHIFT 7
3691 __le16 cqe_pause_thr_low;
3692 __le16 cqe_pause_thr_high;
3693 __le16 bd_pause_thr_low;
3694 __le16 bd_pause_thr_high;
3695 __le16 sge_pause_thr_low;
3696 __le16 sge_pause_thr_high;
3697 __le16 rx_cos_mask;
3698 __le16 silent_vlan_value;
3699 __le16 silent_vlan_mask;
3700 u8 handle_ptp_pkts_flg;
3701 u8 reserved6[3];
3702 __le32 reserved7;
3703 };
3704
3705
3706
3707
3708 struct client_init_tx_data {
3709 u8 enforce_security_flg;
3710 u8 tx_status_block_id;
3711 u8 tx_sb_index_number;
3712 u8 tss_leading_client_id;
3713 u8 tx_switching_flg;
3714 u8 anti_spoofing_flg;
3715 __le16 default_vlan;
3716 struct regpair tx_bd_page_base;
3717 __le16 state;
3718 #define CLIENT_INIT_TX_DATA_UCAST_ACCEPT_ALL (0x1<<0)
3719 #define CLIENT_INIT_TX_DATA_UCAST_ACCEPT_ALL_SHIFT 0
3720 #define CLIENT_INIT_TX_DATA_MCAST_ACCEPT_ALL (0x1<<1)
3721 #define CLIENT_INIT_TX_DATA_MCAST_ACCEPT_ALL_SHIFT 1
3722 #define CLIENT_INIT_TX_DATA_BCAST_ACCEPT_ALL (0x1<<2)
3723 #define CLIENT_INIT_TX_DATA_BCAST_ACCEPT_ALL_SHIFT 2
3724 #define CLIENT_INIT_TX_DATA_ACCEPT_ANY_VLAN (0x1<<3)
3725 #define CLIENT_INIT_TX_DATA_ACCEPT_ANY_VLAN_SHIFT 3
3726 #define CLIENT_INIT_TX_DATA_RESERVED0 (0xFFF<<4)
3727 #define CLIENT_INIT_TX_DATA_RESERVED0_SHIFT 4
3728 u8 default_vlan_flg;
3729 u8 force_default_pri_flg;
3730 u8 tunnel_lso_inc_ip_id;
3731 u8 refuse_outband_vlan_flg;
3732 u8 tunnel_non_lso_pcsum_location;
3733 u8 tunnel_non_lso_outer_ip_csum_location;
3734 };
3735
3736
3737
3738
3739 struct client_init_ramrod_data {
3740 struct client_init_general_data general;
3741 struct client_init_rx_data rx;
3742 struct client_init_tx_data tx;
3743 };
3744
3745
3746
3747
3748
3749 struct client_update_ramrod_data {
3750 u8 client_id;
3751 u8 func_id;
3752 u8 inner_vlan_removal_enable_flg;
3753 u8 inner_vlan_removal_change_flg;
3754 u8 outer_vlan_removal_enable_flg;
3755 u8 outer_vlan_removal_change_flg;
3756 u8 anti_spoofing_enable_flg;
3757 u8 anti_spoofing_change_flg;
3758 u8 activate_flg;
3759 u8 activate_change_flg;
3760 __le16 default_vlan;
3761 u8 default_vlan_enable_flg;
3762 u8 default_vlan_change_flg;
3763 __le16 silent_vlan_value;
3764 __le16 silent_vlan_mask;
3765 u8 silent_vlan_removal_flg;
3766 u8 silent_vlan_change_flg;
3767 u8 refuse_outband_vlan_flg;
3768 u8 refuse_outband_vlan_change_flg;
3769 u8 tx_switching_flg;
3770 u8 tx_switching_change_flg;
3771 u8 handle_ptp_pkts_flg;
3772 u8 handle_ptp_pkts_change_flg;
3773 __le16 reserved1;
3774 __le32 echo;
3775 };
3776
3777
3778
3779
3780
3781 struct cstorm_eth_st_context {
3782 u32 __reserved0[4];
3783 };
3784
3785
3786 struct double_regpair {
3787 u32 regpair0_lo;
3788 u32 regpair0_hi;
3789 u32 regpair1_lo;
3790 u32 regpair1_hi;
3791 };
3792
3793
3794 enum eth_2nd_parse_bd_type {
3795 ETH_2ND_PARSE_BD_TYPE_LSO_TUNNEL,
3796 MAX_ETH_2ND_PARSE_BD_TYPE
3797 };
3798
3799
3800
3801
3802 enum eth_addr_type {
3803 UNKNOWN_ADDRESS,
3804 UNICAST_ADDRESS,
3805 MULTICAST_ADDRESS,
3806 BROADCAST_ADDRESS,
3807 MAX_ETH_ADDR_TYPE
3808 };
3809
3810
3811
3812
3813
3814 struct eth_classify_cmd_header {
3815 u8 cmd_general_data;
3816 #define ETH_CLASSIFY_CMD_HEADER_RX_CMD (0x1<<0)
3817 #define ETH_CLASSIFY_CMD_HEADER_RX_CMD_SHIFT 0
3818 #define ETH_CLASSIFY_CMD_HEADER_TX_CMD (0x1<<1)
3819 #define ETH_CLASSIFY_CMD_HEADER_TX_CMD_SHIFT 1
3820 #define ETH_CLASSIFY_CMD_HEADER_OPCODE (0x3<<2)
3821 #define ETH_CLASSIFY_CMD_HEADER_OPCODE_SHIFT 2
3822 #define ETH_CLASSIFY_CMD_HEADER_IS_ADD (0x1<<4)
3823 #define ETH_CLASSIFY_CMD_HEADER_IS_ADD_SHIFT 4
3824 #define ETH_CLASSIFY_CMD_HEADER_RESERVED0 (0x7<<5)
3825 #define ETH_CLASSIFY_CMD_HEADER_RESERVED0_SHIFT 5
3826 u8 func_id;
3827 u8 client_id;
3828 u8 reserved1;
3829 };
3830
3831
3832
3833
3834
3835 struct eth_classify_header {
3836 u8 rule_cnt;
3837 u8 warning_on_error;
3838 __le16 reserved1;
3839 __le32 echo;
3840 };
3841
3842
3843
3844
3845 struct eth_classify_imac_vni_cmd {
3846 struct eth_classify_cmd_header header;
3847 __le32 vni;
3848 __le16 imac_lsb;
3849 __le16 imac_mid;
3850 __le16 imac_msb;
3851 __le16 reserved1;
3852 };
3853
3854
3855
3856
3857 struct eth_classify_mac_cmd {
3858 struct eth_classify_cmd_header header;
3859 __le16 reserved0;
3860 __le16 inner_mac;
3861 __le16 mac_lsb;
3862 __le16 mac_mid;
3863 __le16 mac_msb;
3864 __le16 reserved1;
3865 };
3866
3867
3868
3869
3870
3871 struct eth_classify_pair_cmd {
3872 struct eth_classify_cmd_header header;
3873 __le16 reserved0;
3874 __le16 inner_mac;
3875 __le16 mac_lsb;
3876 __le16 mac_mid;
3877 __le16 mac_msb;
3878 __le16 vlan;
3879 };
3880
3881
3882
3883
3884
3885 struct eth_classify_vlan_cmd {
3886 struct eth_classify_cmd_header header;
3887 __le32 reserved0;
3888 __le32 reserved1;
3889 __le16 reserved2;
3890 __le16 vlan;
3891 };
3892
3893
3894
3895
3896
3897
3898
3899
3900 union eth_classify_rule_cmd {
3901 struct eth_classify_mac_cmd mac;
3902 struct eth_classify_vlan_cmd vlan;
3903 struct eth_classify_pair_cmd pair;
3904 struct eth_classify_imac_vni_cmd imac_vni;
3905 };
3906
3907
3908
3909
3910 struct eth_classify_rules_ramrod_data {
3911 struct eth_classify_header header;
3912 union eth_classify_rule_cmd rules[CLASSIFY_RULES_COUNT];
3913 };
3914
3915
3916
3917
3918
3919 struct eth_common_ramrod_data {
3920 __le32 client_id;
3921 __le32 reserved1;
3922 };
3923
3924
3925
3926
3927
3928 struct ustorm_eth_st_context {
3929 u32 reserved0[52];
3930 };
3931
3932
3933
3934
3935 struct tstorm_eth_st_context {
3936 u32 __reserved0[28];
3937 };
3938
3939
3940
3941
3942 struct xstorm_eth_st_context {
3943 u32 reserved0[60];
3944 };
3945
3946
3947
3948
3949 struct eth_context {
3950 struct ustorm_eth_st_context ustorm_st_context;
3951 struct tstorm_eth_st_context tstorm_st_context;
3952 struct xstorm_eth_ag_context xstorm_ag_context;
3953 struct tstorm_eth_ag_context tstorm_ag_context;
3954 struct cstorm_eth_ag_context cstorm_ag_context;
3955 struct ustorm_eth_ag_context ustorm_ag_context;
3956 struct timers_block_context timers_context;
3957 struct xstorm_eth_st_context xstorm_st_context;
3958 struct cstorm_eth_st_context cstorm_st_context;
3959 };
3960
3961
3962
3963
3964
3965 union eth_sgl_or_raw_data {
3966 __le16 sgl[8];
3967 u32 raw_data[4];
3968 };
3969
3970
3971
3972
3973 struct eth_end_agg_rx_cqe {
3974 u8 type_error_flags;
3975 #define ETH_END_AGG_RX_CQE_TYPE (0x3<<0)
3976 #define ETH_END_AGG_RX_CQE_TYPE_SHIFT 0
3977 #define ETH_END_AGG_RX_CQE_SGL_RAW_SEL (0x1<<2)
3978 #define ETH_END_AGG_RX_CQE_SGL_RAW_SEL_SHIFT 2
3979 #define ETH_END_AGG_RX_CQE_RESERVED0 (0x1F<<3)
3980 #define ETH_END_AGG_RX_CQE_RESERVED0_SHIFT 3
3981 u8 reserved1;
3982 u8 queue_index;
3983 u8 reserved2;
3984 __le32 timestamp_delta;
3985 __le16 num_of_coalesced_segs;
3986 __le16 pkt_len;
3987 u8 pure_ack_count;
3988 u8 reserved3;
3989 __le16 reserved4;
3990 union eth_sgl_or_raw_data sgl_or_raw_data;
3991 __le32 reserved5[8];
3992 };
3993
3994
3995
3996
3997
3998 struct eth_fast_path_rx_cqe {
3999 u8 type_error_flags;
4000 #define ETH_FAST_PATH_RX_CQE_TYPE (0x3<<0)
4001 #define ETH_FAST_PATH_RX_CQE_TYPE_SHIFT 0
4002 #define ETH_FAST_PATH_RX_CQE_SGL_RAW_SEL (0x1<<2)
4003 #define ETH_FAST_PATH_RX_CQE_SGL_RAW_SEL_SHIFT 2
4004 #define ETH_FAST_PATH_RX_CQE_PHY_DECODE_ERR_FLG (0x1<<3)
4005 #define ETH_FAST_PATH_RX_CQE_PHY_DECODE_ERR_FLG_SHIFT 3
4006 #define ETH_FAST_PATH_RX_CQE_IP_BAD_XSUM_FLG (0x1<<4)
4007 #define ETH_FAST_PATH_RX_CQE_IP_BAD_XSUM_FLG_SHIFT 4
4008 #define ETH_FAST_PATH_RX_CQE_L4_BAD_XSUM_FLG (0x1<<5)
4009 #define ETH_FAST_PATH_RX_CQE_L4_BAD_XSUM_FLG_SHIFT 5
4010 #define ETH_FAST_PATH_RX_CQE_PTP_PKT (0x1<<6)
4011 #define ETH_FAST_PATH_RX_CQE_PTP_PKT_SHIFT 6
4012 #define ETH_FAST_PATH_RX_CQE_RESERVED0 (0x1<<7)
4013 #define ETH_FAST_PATH_RX_CQE_RESERVED0_SHIFT 7
4014 u8 status_flags;
4015 #define ETH_FAST_PATH_RX_CQE_RSS_HASH_TYPE (0x7<<0)
4016 #define ETH_FAST_PATH_RX_CQE_RSS_HASH_TYPE_SHIFT 0
4017 #define ETH_FAST_PATH_RX_CQE_RSS_HASH_FLG (0x1<<3)
4018 #define ETH_FAST_PATH_RX_CQE_RSS_HASH_FLG_SHIFT 3
4019 #define ETH_FAST_PATH_RX_CQE_BROADCAST_FLG (0x1<<4)
4020 #define ETH_FAST_PATH_RX_CQE_BROADCAST_FLG_SHIFT 4
4021 #define ETH_FAST_PATH_RX_CQE_MAC_MATCH_FLG (0x1<<5)
4022 #define ETH_FAST_PATH_RX_CQE_MAC_MATCH_FLG_SHIFT 5
4023 #define ETH_FAST_PATH_RX_CQE_IP_XSUM_NO_VALIDATION_FLG (0x1<<6)
4024 #define ETH_FAST_PATH_RX_CQE_IP_XSUM_NO_VALIDATION_FLG_SHIFT 6
4025 #define ETH_FAST_PATH_RX_CQE_L4_XSUM_NO_VALIDATION_FLG (0x1<<7)
4026 #define ETH_FAST_PATH_RX_CQE_L4_XSUM_NO_VALIDATION_FLG_SHIFT 7
4027 u8 queue_index;
4028 u8 placement_offset;
4029 __le32 rss_hash_result;
4030 __le16 vlan_tag;
4031 __le16 pkt_len_or_gro_seg_len;
4032 __le16 len_on_bd;
4033 struct parsing_flags pars_flags;
4034 union eth_sgl_or_raw_data sgl_or_raw_data;
4035 u8 tunn_type;
4036 u8 tunn_inner_hdrs_offset;
4037 __le16 reserved1;
4038 __le32 tunn_tenant_id;
4039 __le32 padding[5];
4040 u32 marker;
4041 };
4042
4043
4044
4045
4046
4047 struct eth_filter_rules_cmd {
4048 u8 cmd_general_data;
4049 #define ETH_FILTER_RULES_CMD_RX_CMD (0x1<<0)
4050 #define ETH_FILTER_RULES_CMD_RX_CMD_SHIFT 0
4051 #define ETH_FILTER_RULES_CMD_TX_CMD (0x1<<1)
4052 #define ETH_FILTER_RULES_CMD_TX_CMD_SHIFT 1
4053 #define ETH_FILTER_RULES_CMD_RESERVED0 (0x3F<<2)
4054 #define ETH_FILTER_RULES_CMD_RESERVED0_SHIFT 2
4055 u8 func_id;
4056 u8 client_id;
4057 u8 reserved1;
4058 __le16 state;
4059 #define ETH_FILTER_RULES_CMD_UCAST_DROP_ALL (0x1<<0)
4060 #define ETH_FILTER_RULES_CMD_UCAST_DROP_ALL_SHIFT 0
4061 #define ETH_FILTER_RULES_CMD_UCAST_ACCEPT_ALL (0x1<<1)
4062 #define ETH_FILTER_RULES_CMD_UCAST_ACCEPT_ALL_SHIFT 1
4063 #define ETH_FILTER_RULES_CMD_UCAST_ACCEPT_UNMATCHED (0x1<<2)
4064 #define ETH_FILTER_RULES_CMD_UCAST_ACCEPT_UNMATCHED_SHIFT 2
4065 #define ETH_FILTER_RULES_CMD_MCAST_DROP_ALL (0x1<<3)
4066 #define ETH_FILTER_RULES_CMD_MCAST_DROP_ALL_SHIFT 3
4067 #define ETH_FILTER_RULES_CMD_MCAST_ACCEPT_ALL (0x1<<4)
4068 #define ETH_FILTER_RULES_CMD_MCAST_ACCEPT_ALL_SHIFT 4
4069 #define ETH_FILTER_RULES_CMD_BCAST_ACCEPT_ALL (0x1<<5)
4070 #define ETH_FILTER_RULES_CMD_BCAST_ACCEPT_ALL_SHIFT 5
4071 #define ETH_FILTER_RULES_CMD_ACCEPT_ANY_VLAN (0x1<<6)
4072 #define ETH_FILTER_RULES_CMD_ACCEPT_ANY_VLAN_SHIFT 6
4073 #define ETH_FILTER_RULES_CMD_RESERVED2 (0x1FF<<7)
4074 #define ETH_FILTER_RULES_CMD_RESERVED2_SHIFT 7
4075 __le16 reserved3;
4076 struct regpair reserved4;
4077 };
4078
4079
4080
4081
4082
4083 struct eth_filter_rules_ramrod_data {
4084 struct eth_classify_header header;
4085 struct eth_filter_rules_cmd rules[FILTER_RULES_COUNT];
4086 };
4087
4088
4089 enum eth_fp_hsi_ver {
4090 ETH_FP_HSI_VER_0,
4091 ETH_FP_HSI_VER_1,
4092 ETH_FP_HSI_VER_2,
4093 MAX_ETH_FP_HSI_VER
4094 };
4095
4096
4097
4098
4099 struct eth_general_rules_ramrod_data {
4100 struct eth_classify_header header;
4101 union eth_classify_rule_cmd rules[CLASSIFY_RULES_COUNT];
4102 };
4103
4104
4105
4106
4107
4108 struct eth_halt_ramrod_data {
4109 __le32 client_id;
4110 __le32 reserved0;
4111 };
4112
4113
4114
4115
4116
4117 struct eth_mac_addresses {
4118 #if defined(__BIG_ENDIAN)
4119 __le16 dst_mid;
4120 __le16 dst_lo;
4121 #elif defined(__LITTLE_ENDIAN)
4122 __le16 dst_lo;
4123 __le16 dst_mid;
4124 #endif
4125 #if defined(__BIG_ENDIAN)
4126 __le16 src_lo;
4127 __le16 dst_hi;
4128 #elif defined(__LITTLE_ENDIAN)
4129 __le16 dst_hi;
4130 __le16 src_lo;
4131 #endif
4132 #if defined(__BIG_ENDIAN)
4133 __le16 src_hi;
4134 __le16 src_mid;
4135 #elif defined(__LITTLE_ENDIAN)
4136 __le16 src_mid;
4137 __le16 src_hi;
4138 #endif
4139 };
4140
4141
4142 struct eth_tunnel_data {
4143 __le16 dst_lo;
4144 __le16 dst_mid;
4145 __le16 dst_hi;
4146 __le16 fw_ip_hdr_csum;
4147 __le16 pseudo_csum;
4148 u8 ip_hdr_start_inner_w;
4149 u8 flags;
4150 #define ETH_TUNNEL_DATA_IPV6_OUTER (0x1<<0)
4151 #define ETH_TUNNEL_DATA_IPV6_OUTER_SHIFT 0
4152 #define ETH_TUNNEL_DATA_RESERVED (0x7F<<1)
4153 #define ETH_TUNNEL_DATA_RESERVED_SHIFT 1
4154 };
4155
4156
4157
4158
4159 union eth_mac_addr_or_tunnel_data {
4160 struct eth_mac_addresses mac_addr;
4161 struct eth_tunnel_data tunnel_data;
4162 };
4163
4164
4165 struct eth_multicast_rules_cmd {
4166 u8 cmd_general_data;
4167 #define ETH_MULTICAST_RULES_CMD_RX_CMD (0x1<<0)
4168 #define ETH_MULTICAST_RULES_CMD_RX_CMD_SHIFT 0
4169 #define ETH_MULTICAST_RULES_CMD_TX_CMD (0x1<<1)
4170 #define ETH_MULTICAST_RULES_CMD_TX_CMD_SHIFT 1
4171 #define ETH_MULTICAST_RULES_CMD_IS_ADD (0x1<<2)
4172 #define ETH_MULTICAST_RULES_CMD_IS_ADD_SHIFT 2
4173 #define ETH_MULTICAST_RULES_CMD_RESERVED0 (0x1F<<3)
4174 #define ETH_MULTICAST_RULES_CMD_RESERVED0_SHIFT 3
4175 u8 func_id;
4176 u8 bin_id;
4177 u8 engine_id;
4178 __le32 reserved2;
4179 struct regpair reserved3;
4180 };
4181
4182
4183
4184
4185 struct eth_multicast_rules_ramrod_data {
4186 struct eth_classify_header header;
4187 struct eth_multicast_rules_cmd rules[MULTICAST_RULES_COUNT];
4188 };
4189
4190
4191
4192
4193 struct ramrod_data {
4194 __le32 data_lo;
4195 __le32 data_hi;
4196 };
4197
4198
4199
4200
4201 union eth_ramrod_data {
4202 struct ramrod_data general;
4203 };
4204
4205
4206
4207
4208
4209 enum eth_rss_hash_type {
4210 DEFAULT_HASH_TYPE,
4211 IPV4_HASH_TYPE,
4212 TCP_IPV4_HASH_TYPE,
4213 IPV6_HASH_TYPE,
4214 TCP_IPV6_HASH_TYPE,
4215 VLAN_PRI_HASH_TYPE,
4216 E1HOV_PRI_HASH_TYPE,
4217 DSCP_HASH_TYPE,
4218 MAX_ETH_RSS_HASH_TYPE
4219 };
4220
4221
4222
4223
4224
4225 enum eth_rss_mode {
4226 ETH_RSS_MODE_DISABLED,
4227 ETH_RSS_MODE_REGULAR,
4228 ETH_RSS_MODE_VLAN_PRI,
4229 ETH_RSS_MODE_E1HOV_PRI,
4230 ETH_RSS_MODE_IP_DSCP,
4231 MAX_ETH_RSS_MODE
4232 };
4233
4234
4235
4236
4237
4238 struct eth_rss_update_ramrod_data {
4239 u8 rss_engine_id;
4240 u8 rss_mode;
4241 __le16 capabilities;
4242 #define ETH_RSS_UPDATE_RAMROD_DATA_IPV4_CAPABILITY (0x1<<0)
4243 #define ETH_RSS_UPDATE_RAMROD_DATA_IPV4_CAPABILITY_SHIFT 0
4244 #define ETH_RSS_UPDATE_RAMROD_DATA_IPV4_TCP_CAPABILITY (0x1<<1)
4245 #define ETH_RSS_UPDATE_RAMROD_DATA_IPV4_TCP_CAPABILITY_SHIFT 1
4246 #define ETH_RSS_UPDATE_RAMROD_DATA_IPV4_UDP_CAPABILITY (0x1<<2)
4247 #define ETH_RSS_UPDATE_RAMROD_DATA_IPV4_UDP_CAPABILITY_SHIFT 2
4248 #define ETH_RSS_UPDATE_RAMROD_DATA_IPV4_VXLAN_CAPABILITY (0x1<<3)
4249 #define ETH_RSS_UPDATE_RAMROD_DATA_IPV4_VXLAN_CAPABILITY_SHIFT 3
4250 #define ETH_RSS_UPDATE_RAMROD_DATA_IPV6_CAPABILITY (0x1<<4)
4251 #define ETH_RSS_UPDATE_RAMROD_DATA_IPV6_CAPABILITY_SHIFT 4
4252 #define ETH_RSS_UPDATE_RAMROD_DATA_IPV6_TCP_CAPABILITY (0x1<<5)
4253 #define ETH_RSS_UPDATE_RAMROD_DATA_IPV6_TCP_CAPABILITY_SHIFT 5
4254 #define ETH_RSS_UPDATE_RAMROD_DATA_IPV6_UDP_CAPABILITY (0x1<<6)
4255 #define ETH_RSS_UPDATE_RAMROD_DATA_IPV6_UDP_CAPABILITY_SHIFT 6
4256 #define ETH_RSS_UPDATE_RAMROD_DATA_IPV6_VXLAN_CAPABILITY (0x1<<7)
4257 #define ETH_RSS_UPDATE_RAMROD_DATA_IPV6_VXLAN_CAPABILITY_SHIFT 7
4258 #define ETH_RSS_UPDATE_RAMROD_DATA_TUNN_INNER_HDRS_CAPABILITY (0x1<<8)
4259 #define ETH_RSS_UPDATE_RAMROD_DATA_TUNN_INNER_HDRS_CAPABILITY_SHIFT 8
4260 #define ETH_RSS_UPDATE_RAMROD_DATA_UPDATE_RSS_KEY (0x1<<9)
4261 #define ETH_RSS_UPDATE_RAMROD_DATA_UPDATE_RSS_KEY_SHIFT 9
4262 #define ETH_RSS_UPDATE_RAMROD_DATA_RESERVED (0x3F<<10)
4263 #define ETH_RSS_UPDATE_RAMROD_DATA_RESERVED_SHIFT 10
4264 u8 rss_result_mask;
4265 u8 reserved3;
4266 __le16 reserved4;
4267 u8 indirection_table[T_ETH_INDIRECTION_TABLE_SIZE];
4268 __le32 rss_key[T_ETH_RSS_KEY];
4269 __le32 echo;
4270 __le32 reserved5;
4271 };
4272
4273
4274
4275
4276
4277 struct eth_rx_bd {
4278 __le32 addr_lo;
4279 __le32 addr_hi;
4280 };
4281
4282
4283
4284
4285
4286 struct common_ramrod_eth_rx_cqe {
4287 u8 ramrod_type;
4288 #define COMMON_RAMROD_ETH_RX_CQE_TYPE (0x3<<0)
4289 #define COMMON_RAMROD_ETH_RX_CQE_TYPE_SHIFT 0
4290 #define COMMON_RAMROD_ETH_RX_CQE_ERROR (0x1<<2)
4291 #define COMMON_RAMROD_ETH_RX_CQE_ERROR_SHIFT 2
4292 #define COMMON_RAMROD_ETH_RX_CQE_RESERVED0 (0x1F<<3)
4293 #define COMMON_RAMROD_ETH_RX_CQE_RESERVED0_SHIFT 3
4294 u8 conn_type;
4295 __le16 reserved1;
4296 __le32 conn_and_cmd_data;
4297 #define COMMON_RAMROD_ETH_RX_CQE_CID (0xFFFFFF<<0)
4298 #define COMMON_RAMROD_ETH_RX_CQE_CID_SHIFT 0
4299 #define COMMON_RAMROD_ETH_RX_CQE_CMD_ID (0xFF<<24)
4300 #define COMMON_RAMROD_ETH_RX_CQE_CMD_ID_SHIFT 24
4301 struct ramrod_data protocol_data;
4302 __le32 echo;
4303 __le32 reserved2[11];
4304 };
4305
4306
4307
4308
4309 struct eth_rx_cqe_next_page {
4310 __le32 addr_lo;
4311 __le32 addr_hi;
4312 __le32 reserved[14];
4313 };
4314
4315
4316
4317
4318 union eth_rx_cqe {
4319 struct eth_fast_path_rx_cqe fast_path_cqe;
4320 struct common_ramrod_eth_rx_cqe ramrod_cqe;
4321 struct eth_rx_cqe_next_page next_page_cqe;
4322 struct eth_end_agg_rx_cqe end_agg_cqe;
4323 };
4324
4325
4326
4327
4328
4329 enum eth_rx_cqe_type {
4330 RX_ETH_CQE_TYPE_ETH_FASTPATH,
4331 RX_ETH_CQE_TYPE_ETH_RAMROD,
4332 RX_ETH_CQE_TYPE_ETH_START_AGG,
4333 RX_ETH_CQE_TYPE_ETH_STOP_AGG,
4334 MAX_ETH_RX_CQE_TYPE
4335 };
4336
4337
4338
4339
4340
4341 enum eth_rx_fp_sel {
4342 ETH_FP_CQE_REGULAR,
4343 ETH_FP_CQE_RAW,
4344 MAX_ETH_RX_FP_SEL
4345 };
4346
4347
4348
4349
4350
4351 struct eth_rx_sge {
4352 __le32 addr_lo;
4353 __le32 addr_hi;
4354 };
4355
4356
4357
4358
4359
4360 struct spe_hdr {
4361 __le32 conn_and_cmd_data;
4362 #define SPE_HDR_CID (0xFFFFFF<<0)
4363 #define SPE_HDR_CID_SHIFT 0
4364 #define SPE_HDR_CMD_ID (0xFF<<24)
4365 #define SPE_HDR_CMD_ID_SHIFT 24
4366 __le16 type;
4367 #define SPE_HDR_CONN_TYPE (0xFF<<0)
4368 #define SPE_HDR_CONN_TYPE_SHIFT 0
4369 #define SPE_HDR_FUNCTION_ID (0xFF<<8)
4370 #define SPE_HDR_FUNCTION_ID_SHIFT 8
4371 __le16 reserved1;
4372 };
4373
4374
4375
4376
4377 union eth_specific_data {
4378 u8 protocol_data[8];
4379 struct regpair client_update_ramrod_data;
4380 struct regpair client_init_ramrod_init_data;
4381 struct eth_halt_ramrod_data halt_ramrod_data;
4382 struct regpair update_data_addr;
4383 struct eth_common_ramrod_data common_ramrod_data;
4384 struct regpair classify_cfg_addr;
4385 struct regpair filter_cfg_addr;
4386 struct regpair mcast_cfg_addr;
4387 };
4388
4389
4390
4391
4392 struct eth_spe {
4393 struct spe_hdr hdr;
4394 union eth_specific_data data;
4395 };
4396
4397
4398
4399
4400
4401 enum eth_spqe_cmd_id {
4402 RAMROD_CMD_ID_ETH_UNUSED,
4403 RAMROD_CMD_ID_ETH_CLIENT_SETUP,
4404 RAMROD_CMD_ID_ETH_HALT,
4405 RAMROD_CMD_ID_ETH_FORWARD_SETUP,
4406 RAMROD_CMD_ID_ETH_TX_QUEUE_SETUP,
4407 RAMROD_CMD_ID_ETH_CLIENT_UPDATE,
4408 RAMROD_CMD_ID_ETH_EMPTY,
4409 RAMROD_CMD_ID_ETH_TERMINATE,
4410 RAMROD_CMD_ID_ETH_TPA_UPDATE,
4411 RAMROD_CMD_ID_ETH_CLASSIFICATION_RULES,
4412 RAMROD_CMD_ID_ETH_FILTER_RULES,
4413 RAMROD_CMD_ID_ETH_MULTICAST_RULES,
4414 RAMROD_CMD_ID_ETH_RSS_UPDATE,
4415 RAMROD_CMD_ID_ETH_SET_MAC,
4416 MAX_ETH_SPQE_CMD_ID
4417 };
4418
4419
4420
4421
4422
4423 enum eth_tpa_update_command {
4424 TPA_UPDATE_NONE_COMMAND,
4425 TPA_UPDATE_ENABLE_COMMAND,
4426 TPA_UPDATE_DISABLE_COMMAND,
4427 MAX_ETH_TPA_UPDATE_COMMAND
4428 };
4429
4430
4431
4432
4433 enum eth_tunnel_lso_inc_ip_id {
4434 EXT_HEADER,
4435 INT_HEADER,
4436 MAX_ETH_TUNNEL_LSO_INC_IP_ID
4437 };
4438
4439
4440
4441
4442 enum eth_tunnel_non_lso_csum_location {
4443 CSUM_ON_PKT,
4444 CSUM_ON_BD,
4445 MAX_ETH_TUNNEL_NON_LSO_CSUM_LOCATION
4446 };
4447
4448 enum eth_tunn_type {
4449 TUNN_TYPE_NONE,
4450 TUNN_TYPE_VXLAN,
4451 TUNN_TYPE_L2_GRE,
4452 TUNN_TYPE_IPV4_GRE,
4453 TUNN_TYPE_IPV6_GRE,
4454 TUNN_TYPE_L2_GENEVE,
4455 TUNN_TYPE_IPV4_GENEVE,
4456 TUNN_TYPE_IPV6_GENEVE,
4457 MAX_ETH_TUNN_TYPE
4458 };
4459
4460
4461
4462
4463 struct eth_tx_bd {
4464 __le32 addr_lo;
4465 __le32 addr_hi;
4466 __le16 total_pkt_bytes;
4467 __le16 nbytes;
4468 u8 reserved[4];
4469 };
4470
4471
4472
4473
4474
4475 struct eth_tx_bd_flags {
4476 u8 as_bitfield;
4477 #define ETH_TX_BD_FLAGS_IP_CSUM (0x1<<0)
4478 #define ETH_TX_BD_FLAGS_IP_CSUM_SHIFT 0
4479 #define ETH_TX_BD_FLAGS_L4_CSUM (0x1<<1)
4480 #define ETH_TX_BD_FLAGS_L4_CSUM_SHIFT 1
4481 #define ETH_TX_BD_FLAGS_VLAN_MODE (0x3<<2)
4482 #define ETH_TX_BD_FLAGS_VLAN_MODE_SHIFT 2
4483 #define ETH_TX_BD_FLAGS_START_BD (0x1<<4)
4484 #define ETH_TX_BD_FLAGS_START_BD_SHIFT 4
4485 #define ETH_TX_BD_FLAGS_IS_UDP (0x1<<5)
4486 #define ETH_TX_BD_FLAGS_IS_UDP_SHIFT 5
4487 #define ETH_TX_BD_FLAGS_SW_LSO (0x1<<6)
4488 #define ETH_TX_BD_FLAGS_SW_LSO_SHIFT 6
4489 #define ETH_TX_BD_FLAGS_IPV6 (0x1<<7)
4490 #define ETH_TX_BD_FLAGS_IPV6_SHIFT 7
4491 };
4492
4493
4494
4495
4496 struct eth_tx_start_bd {
4497 __le32 addr_lo;
4498 __le32 addr_hi;
4499 __le16 nbd;
4500 __le16 nbytes;
4501 __le16 vlan_or_ethertype;
4502 struct eth_tx_bd_flags bd_flags;
4503 u8 general_data;
4504 #define ETH_TX_START_BD_HDR_NBDS (0x7<<0)
4505 #define ETH_TX_START_BD_HDR_NBDS_SHIFT 0
4506 #define ETH_TX_START_BD_NO_ADDED_TAGS (0x1<<3)
4507 #define ETH_TX_START_BD_NO_ADDED_TAGS_SHIFT 3
4508 #define ETH_TX_START_BD_FORCE_VLAN_MODE (0x1<<4)
4509 #define ETH_TX_START_BD_FORCE_VLAN_MODE_SHIFT 4
4510 #define ETH_TX_START_BD_PARSE_NBDS (0x3<<5)
4511 #define ETH_TX_START_BD_PARSE_NBDS_SHIFT 5
4512 #define ETH_TX_START_BD_TUNNEL_EXIST (0x1<<7)
4513 #define ETH_TX_START_BD_TUNNEL_EXIST_SHIFT 7
4514 };
4515
4516
4517
4518
4519 struct eth_tx_parse_bd_e1x {
4520 __le16 global_data;
4521 #define ETH_TX_PARSE_BD_E1X_IP_HDR_START_OFFSET_W (0xF<<0)
4522 #define ETH_TX_PARSE_BD_E1X_IP_HDR_START_OFFSET_W_SHIFT 0
4523 #define ETH_TX_PARSE_BD_E1X_ETH_ADDR_TYPE (0x3<<4)
4524 #define ETH_TX_PARSE_BD_E1X_ETH_ADDR_TYPE_SHIFT 4
4525 #define ETH_TX_PARSE_BD_E1X_PSEUDO_CS_WITHOUT_LEN (0x1<<6)
4526 #define ETH_TX_PARSE_BD_E1X_PSEUDO_CS_WITHOUT_LEN_SHIFT 6
4527 #define ETH_TX_PARSE_BD_E1X_LLC_SNAP_EN (0x1<<7)
4528 #define ETH_TX_PARSE_BD_E1X_LLC_SNAP_EN_SHIFT 7
4529 #define ETH_TX_PARSE_BD_E1X_NS_FLG (0x1<<8)
4530 #define ETH_TX_PARSE_BD_E1X_NS_FLG_SHIFT 8
4531 #define ETH_TX_PARSE_BD_E1X_RESERVED0 (0x7F<<9)
4532 #define ETH_TX_PARSE_BD_E1X_RESERVED0_SHIFT 9
4533 u8 tcp_flags;
4534 #define ETH_TX_PARSE_BD_E1X_FIN_FLG (0x1<<0)
4535 #define ETH_TX_PARSE_BD_E1X_FIN_FLG_SHIFT 0
4536 #define ETH_TX_PARSE_BD_E1X_SYN_FLG (0x1<<1)
4537 #define ETH_TX_PARSE_BD_E1X_SYN_FLG_SHIFT 1
4538 #define ETH_TX_PARSE_BD_E1X_RST_FLG (0x1<<2)
4539 #define ETH_TX_PARSE_BD_E1X_RST_FLG_SHIFT 2
4540 #define ETH_TX_PARSE_BD_E1X_PSH_FLG (0x1<<3)
4541 #define ETH_TX_PARSE_BD_E1X_PSH_FLG_SHIFT 3
4542 #define ETH_TX_PARSE_BD_E1X_ACK_FLG (0x1<<4)
4543 #define ETH_TX_PARSE_BD_E1X_ACK_FLG_SHIFT 4
4544 #define ETH_TX_PARSE_BD_E1X_URG_FLG (0x1<<5)
4545 #define ETH_TX_PARSE_BD_E1X_URG_FLG_SHIFT 5
4546 #define ETH_TX_PARSE_BD_E1X_ECE_FLG (0x1<<6)
4547 #define ETH_TX_PARSE_BD_E1X_ECE_FLG_SHIFT 6
4548 #define ETH_TX_PARSE_BD_E1X_CWR_FLG (0x1<<7)
4549 #define ETH_TX_PARSE_BD_E1X_CWR_FLG_SHIFT 7
4550 u8 ip_hlen_w;
4551 __le16 total_hlen_w;
4552 __le16 tcp_pseudo_csum;
4553 __le16 lso_mss;
4554 __le16 ip_id;
4555 __le32 tcp_send_seq;
4556 };
4557
4558
4559
4560
4561 struct eth_tx_parse_bd_e2 {
4562 union eth_mac_addr_or_tunnel_data data;
4563 __le32 parsing_data;
4564 #define ETH_TX_PARSE_BD_E2_L4_HDR_START_OFFSET_W (0x7FF<<0)
4565 #define ETH_TX_PARSE_BD_E2_L4_HDR_START_OFFSET_W_SHIFT 0
4566 #define ETH_TX_PARSE_BD_E2_TCP_HDR_LENGTH_DW (0xF<<11)
4567 #define ETH_TX_PARSE_BD_E2_TCP_HDR_LENGTH_DW_SHIFT 11
4568 #define ETH_TX_PARSE_BD_E2_IPV6_WITH_EXT_HDR (0x1<<15)
4569 #define ETH_TX_PARSE_BD_E2_IPV6_WITH_EXT_HDR_SHIFT 15
4570 #define ETH_TX_PARSE_BD_E2_LSO_MSS (0x3FFF<<16)
4571 #define ETH_TX_PARSE_BD_E2_LSO_MSS_SHIFT 16
4572 #define ETH_TX_PARSE_BD_E2_ETH_ADDR_TYPE (0x3<<30)
4573 #define ETH_TX_PARSE_BD_E2_ETH_ADDR_TYPE_SHIFT 30
4574 };
4575
4576
4577
4578
4579 struct eth_tx_parse_2nd_bd {
4580 __le16 global_data;
4581 #define ETH_TX_PARSE_2ND_BD_IP_HDR_START_OUTER_W (0xF<<0)
4582 #define ETH_TX_PARSE_2ND_BD_IP_HDR_START_OUTER_W_SHIFT 0
4583 #define ETH_TX_PARSE_2ND_BD_RESERVED0 (0x1<<4)
4584 #define ETH_TX_PARSE_2ND_BD_RESERVED0_SHIFT 4
4585 #define ETH_TX_PARSE_2ND_BD_LLC_SNAP_EN (0x1<<5)
4586 #define ETH_TX_PARSE_2ND_BD_LLC_SNAP_EN_SHIFT 5
4587 #define ETH_TX_PARSE_2ND_BD_NS_FLG (0x1<<6)
4588 #define ETH_TX_PARSE_2ND_BD_NS_FLG_SHIFT 6
4589 #define ETH_TX_PARSE_2ND_BD_TUNNEL_UDP_EXIST (0x1<<7)
4590 #define ETH_TX_PARSE_2ND_BD_TUNNEL_UDP_EXIST_SHIFT 7
4591 #define ETH_TX_PARSE_2ND_BD_IP_HDR_LEN_OUTER_W (0x1F<<8)
4592 #define ETH_TX_PARSE_2ND_BD_IP_HDR_LEN_OUTER_W_SHIFT 8
4593 #define ETH_TX_PARSE_2ND_BD_RESERVED1 (0x7<<13)
4594 #define ETH_TX_PARSE_2ND_BD_RESERVED1_SHIFT 13
4595 u8 bd_type;
4596 #define ETH_TX_PARSE_2ND_BD_TYPE (0xF<<0)
4597 #define ETH_TX_PARSE_2ND_BD_TYPE_SHIFT 0
4598 #define ETH_TX_PARSE_2ND_BD_RESERVED2 (0xF<<4)
4599 #define ETH_TX_PARSE_2ND_BD_RESERVED2_SHIFT 4
4600 u8 reserved3;
4601 u8 tcp_flags;
4602 #define ETH_TX_PARSE_2ND_BD_FIN_FLG (0x1<<0)
4603 #define ETH_TX_PARSE_2ND_BD_FIN_FLG_SHIFT 0
4604 #define ETH_TX_PARSE_2ND_BD_SYN_FLG (0x1<<1)
4605 #define ETH_TX_PARSE_2ND_BD_SYN_FLG_SHIFT 1
4606 #define ETH_TX_PARSE_2ND_BD_RST_FLG (0x1<<2)
4607 #define ETH_TX_PARSE_2ND_BD_RST_FLG_SHIFT 2
4608 #define ETH_TX_PARSE_2ND_BD_PSH_FLG (0x1<<3)
4609 #define ETH_TX_PARSE_2ND_BD_PSH_FLG_SHIFT 3
4610 #define ETH_TX_PARSE_2ND_BD_ACK_FLG (0x1<<4)
4611 #define ETH_TX_PARSE_2ND_BD_ACK_FLG_SHIFT 4
4612 #define ETH_TX_PARSE_2ND_BD_URG_FLG (0x1<<5)
4613 #define ETH_TX_PARSE_2ND_BD_URG_FLG_SHIFT 5
4614 #define ETH_TX_PARSE_2ND_BD_ECE_FLG (0x1<<6)
4615 #define ETH_TX_PARSE_2ND_BD_ECE_FLG_SHIFT 6
4616 #define ETH_TX_PARSE_2ND_BD_CWR_FLG (0x1<<7)
4617 #define ETH_TX_PARSE_2ND_BD_CWR_FLG_SHIFT 7
4618 u8 reserved4;
4619 u8 tunnel_udp_hdr_start_w;
4620 u8 fw_ip_hdr_to_payload_w;
4621 __le16 fw_ip_csum_wo_len_flags_frag;
4622 __le16 hw_ip_id;
4623 __le32 tcp_send_seq;
4624 };
4625
4626
4627 struct eth_tx_next_bd {
4628 __le32 addr_lo;
4629 __le32 addr_hi;
4630 u8 reserved[8];
4631 };
4632
4633
4634
4635
4636 union eth_tx_bd_types {
4637 struct eth_tx_start_bd start_bd;
4638 struct eth_tx_bd reg_bd;
4639 struct eth_tx_parse_bd_e1x parse_bd_e1x;
4640 struct eth_tx_parse_bd_e2 parse_bd_e2;
4641 struct eth_tx_parse_2nd_bd parse_2nd_bd;
4642 struct eth_tx_next_bd next_bd;
4643 };
4644
4645
4646
4647
4648 struct eth_tx_bds_array {
4649 union eth_tx_bd_types bds[13];
4650 };
4651
4652
4653
4654
4655
4656 enum eth_tx_vlan_type {
4657 X_ETH_NO_VLAN,
4658 X_ETH_OUTBAND_VLAN,
4659 X_ETH_INBAND_VLAN,
4660 X_ETH_FW_ADDED_VLAN,
4661 MAX_ETH_TX_VLAN_TYPE
4662 };
4663
4664
4665
4666
4667
4668 enum eth_vlan_filter_mode {
4669 ETH_VLAN_FILTER_ANY_VLAN,
4670 ETH_VLAN_FILTER_SPECIFIC_VLAN,
4671 ETH_VLAN_FILTER_CLASSIFY,
4672 MAX_ETH_VLAN_FILTER_MODE
4673 };
4674
4675
4676
4677
4678
4679 struct mac_configuration_hdr {
4680 u8 length;
4681 u8 offset;
4682 __le16 client_id;
4683 __le32 echo;
4684 };
4685
4686
4687
4688
4689 struct mac_configuration_entry {
4690 __le16 lsb_mac_addr;
4691 __le16 middle_mac_addr;
4692 __le16 msb_mac_addr;
4693 __le16 vlan_id;
4694 u8 pf_id;
4695 u8 flags;
4696 #define MAC_CONFIGURATION_ENTRY_ACTION_TYPE (0x1<<0)
4697 #define MAC_CONFIGURATION_ENTRY_ACTION_TYPE_SHIFT 0
4698 #define MAC_CONFIGURATION_ENTRY_RDMA_MAC (0x1<<1)
4699 #define MAC_CONFIGURATION_ENTRY_RDMA_MAC_SHIFT 1
4700 #define MAC_CONFIGURATION_ENTRY_VLAN_FILTERING_MODE (0x3<<2)
4701 #define MAC_CONFIGURATION_ENTRY_VLAN_FILTERING_MODE_SHIFT 2
4702 #define MAC_CONFIGURATION_ENTRY_OVERRIDE_VLAN_REMOVAL (0x1<<4)
4703 #define MAC_CONFIGURATION_ENTRY_OVERRIDE_VLAN_REMOVAL_SHIFT 4
4704 #define MAC_CONFIGURATION_ENTRY_BROADCAST (0x1<<5)
4705 #define MAC_CONFIGURATION_ENTRY_BROADCAST_SHIFT 5
4706 #define MAC_CONFIGURATION_ENTRY_RESERVED1 (0x3<<6)
4707 #define MAC_CONFIGURATION_ENTRY_RESERVED1_SHIFT 6
4708 __le16 reserved0;
4709 __le32 clients_bit_vector;
4710 };
4711
4712
4713
4714
4715 struct mac_configuration_cmd {
4716 struct mac_configuration_hdr hdr;
4717 struct mac_configuration_entry config_table[64];
4718 };
4719
4720
4721
4722
4723
4724 enum set_mac_action_type {
4725 T_ETH_MAC_COMMAND_INVALIDATE,
4726 T_ETH_MAC_COMMAND_SET,
4727 MAX_SET_MAC_ACTION_TYPE
4728 };
4729
4730
4731
4732
4733
4734 enum tpa_mode {
4735 TPA_LRO,
4736 TPA_GRO,
4737 MAX_TPA_MODE};
4738
4739
4740
4741
4742
4743 struct tpa_update_ramrod_data {
4744 u8 update_ipv4;
4745 u8 update_ipv6;
4746 u8 client_id;
4747 u8 max_tpa_queues;
4748 u8 max_sges_for_packet;
4749 u8 complete_on_both_clients;
4750 u8 dont_verify_rings_pause_thr_flg;
4751 u8 tpa_mode;
4752 __le16 sge_buff_size;
4753 __le16 max_agg_size;
4754 __le32 sge_page_base_lo;
4755 __le32 sge_page_base_hi;
4756 __le16 sge_pause_thr_low;
4757 __le16 sge_pause_thr_high;
4758 u8 tpa_over_vlan_disable;
4759 u8 reserved[7];
4760 };
4761
4762
4763
4764
4765
4766 struct tstorm_eth_approximate_match_multicast_filtering {
4767 u32 mcast_add_hash_bit_array[8];
4768 };
4769
4770
4771
4772
4773
4774 struct tstorm_eth_function_common_config {
4775 __le16 config_flags;
4776 #define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV4_CAPABILITY (0x1<<0)
4777 #define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV4_CAPABILITY_SHIFT 0
4778 #define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV4_TCP_CAPABILITY (0x1<<1)
4779 #define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV4_TCP_CAPABILITY_SHIFT 1
4780 #define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV6_CAPABILITY (0x1<<2)
4781 #define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV6_CAPABILITY_SHIFT 2
4782 #define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV6_TCP_CAPABILITY (0x1<<3)
4783 #define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV6_TCP_CAPABILITY_SHIFT 3
4784 #define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_MODE (0x7<<4)
4785 #define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_MODE_SHIFT 4
4786 #define TSTORM_ETH_FUNCTION_COMMON_CONFIG_VLAN_FILTERING_ENABLE (0x1<<7)
4787 #define TSTORM_ETH_FUNCTION_COMMON_CONFIG_VLAN_FILTERING_ENABLE_SHIFT 7
4788 #define __TSTORM_ETH_FUNCTION_COMMON_CONFIG_RESERVED0 (0xFF<<8)
4789 #define __TSTORM_ETH_FUNCTION_COMMON_CONFIG_RESERVED0_SHIFT 8
4790 u8 rss_result_mask;
4791 u8 reserved1;
4792 __le16 vlan_id[2];
4793 };
4794
4795
4796
4797
4798
4799 struct tstorm_eth_mac_filter_config {
4800 u32 ucast_drop_all;
4801 u32 ucast_accept_all;
4802 u32 mcast_drop_all;
4803 u32 mcast_accept_all;
4804 u32 bcast_accept_all;
4805 u32 vlan_filter[2];
4806 u32 unmatched_unicast;
4807 };
4808
4809
4810
4811
4812
4813 struct tx_queue_init_ramrod_data {
4814 struct client_init_general_data general;
4815 struct client_init_tx_data tx;
4816 };
4817
4818
4819
4820
4821
4822 struct ustorm_eth_rx_producers {
4823 #if defined(__BIG_ENDIAN)
4824 u16 bd_prod;
4825 u16 cqe_prod;
4826 #elif defined(__LITTLE_ENDIAN)
4827 u16 cqe_prod;
4828 u16 bd_prod;
4829 #endif
4830 #if defined(__BIG_ENDIAN)
4831 u16 reserved;
4832 u16 sge_prod;
4833 #elif defined(__LITTLE_ENDIAN)
4834 u16 sge_prod;
4835 u16 reserved;
4836 #endif
4837 };
4838
4839
4840
4841
4842
4843 struct fcoe_rx_stat_params_section0 {
4844 __le32 fcoe_rx_pkt_cnt;
4845 __le32 fcoe_rx_byte_cnt;
4846 };
4847
4848
4849
4850
4851
4852 struct fcoe_rx_stat_params_section1 {
4853 __le32 fcoe_ver_cnt;
4854 __le32 fcoe_rx_drop_pkt_cnt;
4855 };
4856
4857
4858
4859
4860
4861 struct fcoe_rx_stat_params_section2 {
4862 __le32 fc_crc_cnt;
4863 __le32 eofa_del_cnt;
4864 __le32 miss_frame_cnt;
4865 __le32 seq_timeout_cnt;
4866 __le32 drop_seq_cnt;
4867 __le32 fcoe_rx_drop_pkt_cnt;
4868 __le32 fcp_rx_pkt_cnt;
4869 __le32 reserved0;
4870 };
4871
4872
4873
4874
4875
4876 struct fcoe_tx_stat_params {
4877 __le32 fcoe_tx_pkt_cnt;
4878 __le32 fcoe_tx_byte_cnt;
4879 __le32 fcp_tx_pkt_cnt;
4880 __le32 reserved0;
4881 };
4882
4883
4884
4885
4886 struct fcoe_statistics_params {
4887 struct fcoe_tx_stat_params tx_stat;
4888 struct fcoe_rx_stat_params_section0 rx_stat0;
4889 struct fcoe_rx_stat_params_section1 rx_stat1;
4890 struct fcoe_rx_stat_params_section2 rx_stat2;
4891 };
4892
4893
4894
4895
4896
4897 struct afex_vif_list_ramrod_data {
4898 u8 afex_vif_list_command;
4899 u8 func_bit_map;
4900 __le16 vif_list_index;
4901 u8 func_to_clear;
4902 u8 echo;
4903 __le16 reserved1;
4904 };
4905
4906 struct c2s_pri_trans_table_entry {
4907 u8 val[MAX_VLAN_PRIORITIES];
4908 };
4909
4910
4911
4912
4913 struct cfc_del_event_data {
4914 __le32 cid;
4915 __le32 reserved0;
4916 __le32 reserved1;
4917 };
4918
4919
4920
4921
4922
4923 struct cmng_flags_per_port {
4924 u32 cmng_enables;
4925 #define CMNG_FLAGS_PER_PORT_FAIRNESS_VN (0x1<<0)
4926 #define CMNG_FLAGS_PER_PORT_FAIRNESS_VN_SHIFT 0
4927 #define CMNG_FLAGS_PER_PORT_RATE_SHAPING_VN (0x1<<1)
4928 #define CMNG_FLAGS_PER_PORT_RATE_SHAPING_VN_SHIFT 1
4929 #define CMNG_FLAGS_PER_PORT_FAIRNESS_COS (0x1<<2)
4930 #define CMNG_FLAGS_PER_PORT_FAIRNESS_COS_SHIFT 2
4931 #define CMNG_FLAGS_PER_PORT_FAIRNESS_COS_MODE (0x1<<3)
4932 #define CMNG_FLAGS_PER_PORT_FAIRNESS_COS_MODE_SHIFT 3
4933 #define __CMNG_FLAGS_PER_PORT_RESERVED0 (0xFFFFFFF<<4)
4934 #define __CMNG_FLAGS_PER_PORT_RESERVED0_SHIFT 4
4935 u32 __reserved1;
4936 };
4937
4938
4939
4940
4941
4942 struct rate_shaping_vars_per_port {
4943 u32 rs_periodic_timeout;
4944 u32 rs_threshold;
4945 };
4946
4947
4948
4949
4950 struct fairness_vars_per_port {
4951 u32 upper_bound;
4952 u32 fair_threshold;
4953 u32 fairness_timeout;
4954 u32 size_thr;
4955 };
4956
4957
4958
4959
4960 struct safc_struct_per_port {
4961 #if defined(__BIG_ENDIAN)
4962 u16 __reserved1;
4963 u8 __reserved0;
4964 u8 safc_timeout_usec;
4965 #elif defined(__LITTLE_ENDIAN)
4966 u8 safc_timeout_usec;
4967 u8 __reserved0;
4968 u16 __reserved1;
4969 #endif
4970 u8 cos_to_traffic_types[MAX_COS_NUMBER];
4971 u16 cos_to_pause_mask[NUM_OF_SAFC_BITS];
4972 };
4973
4974
4975
4976
4977 struct cmng_struct_per_port {
4978 struct rate_shaping_vars_per_port rs_vars;
4979 struct fairness_vars_per_port fair_vars;
4980 struct safc_struct_per_port safc_vars;
4981 struct cmng_flags_per_port flags;
4982 };
4983
4984
4985
4986
4987 struct rate_shaping_counter {
4988 u32 quota;
4989 #if defined(__BIG_ENDIAN)
4990 u16 __reserved0;
4991 u16 rate;
4992 #elif defined(__LITTLE_ENDIAN)
4993 u16 rate;
4994 u16 __reserved0;
4995 #endif
4996 };
4997
4998
4999
5000
5001 struct rate_shaping_vars_per_vn {
5002 struct rate_shaping_counter vn_counter;
5003 };
5004
5005
5006
5007
5008 struct fairness_vars_per_vn {
5009 u32 cos_credit_delta[MAX_COS_NUMBER];
5010 u32 vn_credit_delta;
5011 u32 __reserved0;
5012 };
5013
5014
5015
5016
5017 struct cmng_vnic {
5018 struct rate_shaping_vars_per_vn vnic_max_rate[4];
5019 struct fairness_vars_per_vn vnic_min_rate[4];
5020 };
5021
5022
5023
5024
5025 struct cmng_init {
5026 struct cmng_struct_per_port port;
5027 struct cmng_vnic vnic;
5028 };
5029
5030
5031
5032
5033
5034 struct cmng_init_input {
5035 u32 port_rate;
5036 u16 vnic_min_rate[4];
5037 u16 vnic_max_rate[4];
5038 u16 cos_min_rate[MAX_COS_NUMBER];
5039 u16 cos_to_pause_mask[MAX_COS_NUMBER];
5040 struct cmng_flags_per_port flags;
5041 };
5042
5043
5044
5045
5046
5047 enum common_spqe_cmd_id {
5048 RAMROD_CMD_ID_COMMON_UNUSED,
5049 RAMROD_CMD_ID_COMMON_FUNCTION_START,
5050 RAMROD_CMD_ID_COMMON_FUNCTION_STOP,
5051 RAMROD_CMD_ID_COMMON_FUNCTION_UPDATE,
5052 RAMROD_CMD_ID_COMMON_CFC_DEL,
5053 RAMROD_CMD_ID_COMMON_CFC_DEL_WB,
5054 RAMROD_CMD_ID_COMMON_STAT_QUERY,
5055 RAMROD_CMD_ID_COMMON_STOP_TRAFFIC,
5056 RAMROD_CMD_ID_COMMON_START_TRAFFIC,
5057 RAMROD_CMD_ID_COMMON_AFEX_VIF_LISTS,
5058 RAMROD_CMD_ID_COMMON_SET_TIMESYNC,
5059 MAX_COMMON_SPQE_CMD_ID
5060 };
5061
5062
5063
5064
5065 enum connection_type {
5066 ETH_CONNECTION_TYPE,
5067 TOE_CONNECTION_TYPE,
5068 RDMA_CONNECTION_TYPE,
5069 ISCSI_CONNECTION_TYPE,
5070 FCOE_CONNECTION_TYPE,
5071 RESERVED_CONNECTION_TYPE_0,
5072 RESERVED_CONNECTION_TYPE_1,
5073 RESERVED_CONNECTION_TYPE_2,
5074 NONE_CONNECTION_TYPE,
5075 MAX_CONNECTION_TYPE
5076 };
5077
5078
5079
5080
5081
5082 enum cos_mode {
5083 OVERRIDE_COS,
5084 STATIC_COS,
5085 FW_WRR,
5086 MAX_COS_MODE
5087 };
5088
5089
5090
5091
5092
5093 struct hc_dynamic_drv_counter {
5094 u32 val[HC_SB_MAX_DYNAMIC_INDICES];
5095 };
5096
5097
5098
5099
5100 struct cstorm_queue_zone_data {
5101 struct hc_dynamic_drv_counter hc_dyn_drv_cnt;
5102 struct regpair reserved[2];
5103 };
5104
5105
5106
5107
5108
5109 struct vf_pf_channel_zone_data {
5110 u32 msg_addr_lo;
5111 u32 msg_addr_hi;
5112 };
5113
5114
5115
5116
5117 struct non_trigger_vf_zone {
5118 struct vf_pf_channel_zone_data vf_pf_channel;
5119 };
5120
5121
5122
5123
5124 struct vf_pf_channel_zone_trigger {
5125 u8 addr_valid;
5126 };
5127
5128
5129
5130
5131 struct trigger_vf_zone {
5132 struct vf_pf_channel_zone_trigger vf_pf_channel;
5133 u8 reserved0;
5134 u16 reserved1;
5135 u32 reserved2;
5136 };
5137
5138
5139
5140
5141 struct cstorm_vf_zone_data {
5142 struct non_trigger_vf_zone non_trigger;
5143 struct trigger_vf_zone trigger;
5144 };
5145
5146
5147
5148
5149
5150 struct dynamic_hc_sm_config {
5151 u32 threshold[3];
5152 u8 shift_per_protocol[HC_SB_MAX_DYNAMIC_INDICES];
5153 u8 hc_timeout0[HC_SB_MAX_DYNAMIC_INDICES];
5154 u8 hc_timeout1[HC_SB_MAX_DYNAMIC_INDICES];
5155 u8 hc_timeout2[HC_SB_MAX_DYNAMIC_INDICES];
5156 u8 hc_timeout3[HC_SB_MAX_DYNAMIC_INDICES];
5157 };
5158
5159
5160
5161
5162 struct dynamic_hc_config {
5163 struct dynamic_hc_sm_config sm_config[HC_SB_MAX_SM];
5164 };
5165
5166
5167 struct e2_integ_data {
5168 #if defined(__BIG_ENDIAN)
5169 u8 flags;
5170 #define E2_INTEG_DATA_TESTING_EN (0x1<<0)
5171 #define E2_INTEG_DATA_TESTING_EN_SHIFT 0
5172 #define E2_INTEG_DATA_LB_TX (0x1<<1)
5173 #define E2_INTEG_DATA_LB_TX_SHIFT 1
5174 #define E2_INTEG_DATA_COS_TX (0x1<<2)
5175 #define E2_INTEG_DATA_COS_TX_SHIFT 2
5176 #define E2_INTEG_DATA_OPPORTUNISTICQM (0x1<<3)
5177 #define E2_INTEG_DATA_OPPORTUNISTICQM_SHIFT 3
5178 #define E2_INTEG_DATA_DPMTESTRELEASEDQ (0x1<<4)
5179 #define E2_INTEG_DATA_DPMTESTRELEASEDQ_SHIFT 4
5180 #define E2_INTEG_DATA_RESERVED (0x7<<5)
5181 #define E2_INTEG_DATA_RESERVED_SHIFT 5
5182 u8 cos;
5183 u8 voq;
5184 u8 pbf_queue;
5185 #elif defined(__LITTLE_ENDIAN)
5186 u8 pbf_queue;
5187 u8 voq;
5188 u8 cos;
5189 u8 flags;
5190 #define E2_INTEG_DATA_TESTING_EN (0x1<<0)
5191 #define E2_INTEG_DATA_TESTING_EN_SHIFT 0
5192 #define E2_INTEG_DATA_LB_TX (0x1<<1)
5193 #define E2_INTEG_DATA_LB_TX_SHIFT 1
5194 #define E2_INTEG_DATA_COS_TX (0x1<<2)
5195 #define E2_INTEG_DATA_COS_TX_SHIFT 2
5196 #define E2_INTEG_DATA_OPPORTUNISTICQM (0x1<<3)
5197 #define E2_INTEG_DATA_OPPORTUNISTICQM_SHIFT 3
5198 #define E2_INTEG_DATA_DPMTESTRELEASEDQ (0x1<<4)
5199 #define E2_INTEG_DATA_DPMTESTRELEASEDQ_SHIFT 4
5200 #define E2_INTEG_DATA_RESERVED (0x7<<5)
5201 #define E2_INTEG_DATA_RESERVED_SHIFT 5
5202 #endif
5203 #if defined(__BIG_ENDIAN)
5204 u16 reserved3;
5205 u8 reserved2;
5206 u8 ramEn;
5207 #elif defined(__LITTLE_ENDIAN)
5208 u8 ramEn;
5209 u8 reserved2;
5210 u16 reserved3;
5211 #endif
5212 };
5213
5214
5215
5216
5217
5218 struct eth_event_data {
5219 __le32 echo;
5220 __le32 reserved0;
5221 __le32 reserved1;
5222 };
5223
5224
5225
5226
5227
5228 struct vf_pf_event_data {
5229 u8 vf_id;
5230 u8 reserved0;
5231 __le16 reserved1;
5232 __le32 msg_addr_lo;
5233 __le32 msg_addr_hi;
5234 };
5235
5236
5237
5238
5239 struct vf_flr_event_data {
5240 u8 vf_id;
5241 u8 reserved0;
5242 __le16 reserved1;
5243 __le32 reserved2;
5244 __le32 reserved3;
5245 };
5246
5247
5248
5249
5250 struct malicious_vf_event_data {
5251 u8 vf_id;
5252 u8 err_id;
5253 __le16 reserved1;
5254 __le32 reserved2;
5255 __le32 reserved3;
5256 };
5257
5258
5259
5260
5261 struct vif_list_event_data {
5262 u8 func_bit_map;
5263 u8 echo;
5264 __le16 reserved0;
5265 __le32 reserved1;
5266 __le32 reserved2;
5267 };
5268
5269
5270 struct function_update_event_data {
5271 u8 echo;
5272 u8 reserved;
5273 __le16 reserved0;
5274 __le32 reserved1;
5275 __le32 reserved2;
5276 };
5277
5278
5279
5280 union event_data {
5281 struct vf_pf_event_data vf_pf_event;
5282 struct eth_event_data eth_event;
5283 struct cfc_del_event_data cfc_del_event;
5284 struct vf_flr_event_data vf_flr_event;
5285 struct malicious_vf_event_data malicious_vf_event;
5286 struct vif_list_event_data vif_list_event;
5287 struct function_update_event_data function_update_event;
5288 };
5289
5290
5291
5292
5293
5294 struct event_ring_data {
5295 struct regpair_native base_addr;
5296 #if defined(__BIG_ENDIAN)
5297 u8 index_id;
5298 u8 sb_id;
5299 u16 producer;
5300 #elif defined(__LITTLE_ENDIAN)
5301 u16 producer;
5302 u8 sb_id;
5303 u8 index_id;
5304 #endif
5305 u32 reserved0;
5306 };
5307
5308
5309
5310
5311
5312 struct event_ring_msg {
5313 u8 opcode;
5314 u8 error;
5315 u16 reserved1;
5316 union event_data data;
5317 };
5318
5319
5320
5321
5322 struct event_ring_next {
5323 struct regpair addr;
5324 u32 reserved[2];
5325 };
5326
5327
5328
5329
5330 union event_ring_elem {
5331 struct event_ring_msg message;
5332 struct event_ring_next next_page;
5333 };
5334
5335
5336
5337
5338
5339 enum event_ring_opcode {
5340 EVENT_RING_OPCODE_VF_PF_CHANNEL,
5341 EVENT_RING_OPCODE_FUNCTION_START,
5342 EVENT_RING_OPCODE_FUNCTION_STOP,
5343 EVENT_RING_OPCODE_CFC_DEL,
5344 EVENT_RING_OPCODE_CFC_DEL_WB,
5345 EVENT_RING_OPCODE_STAT_QUERY,
5346 EVENT_RING_OPCODE_STOP_TRAFFIC,
5347 EVENT_RING_OPCODE_START_TRAFFIC,
5348 EVENT_RING_OPCODE_VF_FLR,
5349 EVENT_RING_OPCODE_MALICIOUS_VF,
5350 EVENT_RING_OPCODE_FORWARD_SETUP,
5351 EVENT_RING_OPCODE_RSS_UPDATE_RULES,
5352 EVENT_RING_OPCODE_FUNCTION_UPDATE,
5353 EVENT_RING_OPCODE_AFEX_VIF_LISTS,
5354 EVENT_RING_OPCODE_SET_MAC,
5355 EVENT_RING_OPCODE_CLASSIFICATION_RULES,
5356 EVENT_RING_OPCODE_FILTERS_RULES,
5357 EVENT_RING_OPCODE_MULTICAST_RULES,
5358 EVENT_RING_OPCODE_SET_TIMESYNC,
5359 MAX_EVENT_RING_OPCODE
5360 };
5361
5362
5363
5364
5365 enum fairness_mode {
5366 FAIRNESS_COS_WRR_MODE,
5367 FAIRNESS_COS_ETS_MODE,
5368 MAX_FAIRNESS_MODE
5369 };
5370
5371
5372
5373
5374
5375 struct priority_cos {
5376 u8 priority;
5377 u8 cos;
5378 __le16 reserved1;
5379 };
5380
5381
5382
5383
5384 struct flow_control_configuration {
5385 struct priority_cos traffic_type_to_priority_cos[MAX_TRAFFIC_TYPES];
5386 u8 dcb_enabled;
5387 u8 dcb_version;
5388 u8 dont_add_pri_0_en;
5389 u8 reserved1;
5390 __le32 reserved2;
5391 u8 dcb_outer_pri[MAX_TRAFFIC_TYPES];
5392 };
5393
5394
5395
5396
5397
5398 struct function_start_data {
5399 u8 function_mode;
5400 u8 allow_npar_tx_switching;
5401 __le16 sd_vlan_tag;
5402 __le16 vif_id;
5403 u8 path_id;
5404 u8 network_cos_mode;
5405 u8 dmae_cmd_id;
5406 u8 no_added_tags;
5407 __le16 reserved0;
5408 __le32 reserved1;
5409 u8 inner_clss_vxlan;
5410 u8 inner_clss_l2gre;
5411 u8 inner_clss_l2geneve;
5412 u8 inner_rss;
5413 __le16 vxlan_dst_port;
5414 __le16 geneve_dst_port;
5415 u8 sd_accept_mf_clss_fail;
5416 u8 sd_accept_mf_clss_fail_match_ethtype;
5417 __le16 sd_accept_mf_clss_fail_ethtype;
5418 __le16 sd_vlan_eth_type;
5419 u8 sd_vlan_force_pri_flg;
5420 u8 sd_vlan_force_pri_val;
5421 u8 c2s_pri_tt_valid;
5422 u8 c2s_pri_default;
5423 u8 tx_vlan_filtering_enable;
5424 u8 tx_vlan_filtering_use_pvid;
5425 u8 reserved2[4];
5426 struct c2s_pri_trans_table_entry c2s_pri_trans_table;
5427 };
5428
5429 struct function_update_data {
5430 u8 vif_id_change_flg;
5431 u8 afex_default_vlan_change_flg;
5432 u8 allowed_priorities_change_flg;
5433 u8 network_cos_mode_change_flg;
5434 __le16 vif_id;
5435 __le16 afex_default_vlan;
5436 u8 allowed_priorities;
5437 u8 network_cos_mode;
5438 u8 lb_mode_en_change_flg;
5439 u8 lb_mode_en;
5440 u8 tx_switch_suspend_change_flg;
5441 u8 tx_switch_suspend;
5442 u8 echo;
5443 u8 update_tunn_cfg_flg;
5444 u8 inner_clss_vxlan;
5445 u8 inner_clss_l2gre;
5446 u8 inner_clss_l2geneve;
5447 u8 inner_rss;
5448 __le16 vxlan_dst_port;
5449 __le16 geneve_dst_port;
5450 u8 sd_vlan_force_pri_change_flg;
5451 u8 sd_vlan_force_pri_flg;
5452 u8 sd_vlan_force_pri_val;
5453 u8 sd_vlan_tag_change_flg;
5454 u8 sd_vlan_eth_type_change_flg;
5455 u8 reserved1;
5456 __le16 sd_vlan_tag;
5457 __le16 sd_vlan_eth_type;
5458 u8 tx_vlan_filtering_pvid_change_flg;
5459 u8 reserved0;
5460 __le32 reserved2;
5461 };
5462
5463
5464
5465
5466 struct fw_version {
5467 #if defined(__BIG_ENDIAN)
5468 u8 engineering;
5469 u8 revision;
5470 u8 minor;
5471 u8 major;
5472 #elif defined(__LITTLE_ENDIAN)
5473 u8 major;
5474 u8 minor;
5475 u8 revision;
5476 u8 engineering;
5477 #endif
5478 u32 flags;
5479 #define FW_VERSION_OPTIMIZED (0x1<<0)
5480 #define FW_VERSION_OPTIMIZED_SHIFT 0
5481 #define FW_VERSION_BIG_ENDIEN (0x1<<1)
5482 #define FW_VERSION_BIG_ENDIEN_SHIFT 1
5483 #define FW_VERSION_CHIP_VERSION (0x3<<2)
5484 #define FW_VERSION_CHIP_VERSION_SHIFT 2
5485 #define __FW_VERSION_RESERVED (0xFFFFFFF<<4)
5486 #define __FW_VERSION_RESERVED_SHIFT 4
5487 };
5488
5489
5490
5491
5492 struct hc_dynamic_sb_drv_counters {
5493 u32 dynamic_hc_drv_counter[HC_SB_MAX_DYNAMIC_INDICES];
5494 };
5495
5496
5497
5498
5499
5500 struct hc_index_data {
5501 #if defined(__BIG_ENDIAN)
5502 u8 flags;
5503 #define HC_INDEX_DATA_SM_ID (0x1<<0)
5504 #define HC_INDEX_DATA_SM_ID_SHIFT 0
5505 #define HC_INDEX_DATA_HC_ENABLED (0x1<<1)
5506 #define HC_INDEX_DATA_HC_ENABLED_SHIFT 1
5507 #define HC_INDEX_DATA_DYNAMIC_HC_ENABLED (0x1<<2)
5508 #define HC_INDEX_DATA_DYNAMIC_HC_ENABLED_SHIFT 2
5509 #define HC_INDEX_DATA_RESERVE (0x1F<<3)
5510 #define HC_INDEX_DATA_RESERVE_SHIFT 3
5511 u8 timeout;
5512 #elif defined(__LITTLE_ENDIAN)
5513 u8 timeout;
5514 u8 flags;
5515 #define HC_INDEX_DATA_SM_ID (0x1<<0)
5516 #define HC_INDEX_DATA_SM_ID_SHIFT 0
5517 #define HC_INDEX_DATA_HC_ENABLED (0x1<<1)
5518 #define HC_INDEX_DATA_HC_ENABLED_SHIFT 1
5519 #define HC_INDEX_DATA_DYNAMIC_HC_ENABLED (0x1<<2)
5520 #define HC_INDEX_DATA_DYNAMIC_HC_ENABLED_SHIFT 2
5521 #define HC_INDEX_DATA_RESERVE (0x1F<<3)
5522 #define HC_INDEX_DATA_RESERVE_SHIFT 3
5523 #endif
5524 };
5525
5526
5527
5528
5529
5530 struct hc_status_block_sm {
5531 #if defined(__BIG_ENDIAN)
5532 u8 igu_seg_id;
5533 u8 igu_sb_id;
5534 u8 timer_value;
5535 u8 __flags;
5536 #elif defined(__LITTLE_ENDIAN)
5537 u8 __flags;
5538 u8 timer_value;
5539 u8 igu_sb_id;
5540 u8 igu_seg_id;
5541 #endif
5542 u32 time_to_expire;
5543 };
5544
5545
5546
5547
5548 struct pci_entity {
5549 #if defined(__BIG_ENDIAN)
5550 u8 vf_valid;
5551 u8 vf_id;
5552 u8 vnic_id;
5553 u8 pf_id;
5554 #elif defined(__LITTLE_ENDIAN)
5555 u8 pf_id;
5556 u8 vnic_id;
5557 u8 vf_id;
5558 u8 vf_valid;
5559 #endif
5560 };
5561
5562
5563
5564
5565 struct hc_sb_data {
5566 struct regpair_native host_sb_addr;
5567 struct hc_status_block_sm state_machine[HC_SB_MAX_SM];
5568 struct pci_entity p_func;
5569 #if defined(__BIG_ENDIAN)
5570 u8 rsrv0;
5571 u8 state;
5572 u8 dhc_qzone_id;
5573 u8 same_igu_sb_1b;
5574 #elif defined(__LITTLE_ENDIAN)
5575 u8 same_igu_sb_1b;
5576 u8 dhc_qzone_id;
5577 u8 state;
5578 u8 rsrv0;
5579 #endif
5580 struct regpair_native rsrv1[2];
5581 };
5582
5583
5584
5585
5586
5587 enum hc_segment {
5588 HC_REGULAR_SEGMENT,
5589 HC_DEFAULT_SEGMENT,
5590 MAX_HC_SEGMENT
5591 };
5592
5593
5594
5595
5596
5597 struct hc_sp_status_block_data {
5598 struct regpair_native host_sb_addr;
5599 #if defined(__BIG_ENDIAN)
5600 u8 rsrv1;
5601 u8 state;
5602 u8 igu_seg_id;
5603 u8 igu_sb_id;
5604 #elif defined(__LITTLE_ENDIAN)
5605 u8 igu_sb_id;
5606 u8 igu_seg_id;
5607 u8 state;
5608 u8 rsrv1;
5609 #endif
5610 struct pci_entity p_func;
5611 };
5612
5613
5614
5615
5616
5617 struct hc_status_block_data_e1x {
5618 struct hc_index_data index_data[HC_SB_MAX_INDICES_E1X];
5619 struct hc_sb_data common;
5620 };
5621
5622
5623
5624
5625
5626 struct hc_status_block_data_e2 {
5627 struct hc_index_data index_data[HC_SB_MAX_INDICES_E2];
5628 struct hc_sb_data common;
5629 };
5630
5631
5632
5633
5634
5635 enum igu_mode {
5636 HC_IGU_BC_MODE,
5637 HC_IGU_NBC_MODE,
5638 MAX_IGU_MODE
5639 };
5640
5641
5642
5643
5644 enum inner_clss_type {
5645 INNER_CLSS_DISABLED,
5646 INNER_CLSS_USE_VLAN,
5647 INNER_CLSS_USE_VNI,
5648 MAX_INNER_CLSS_TYPE};
5649
5650
5651
5652
5653 enum ip_ver {
5654 IP_V4,
5655 IP_V6,
5656 MAX_IP_VER
5657 };
5658
5659
5660
5661
5662 enum malicious_vf_error_id {
5663 MALICIOUS_VF_NO_ERROR,
5664 VF_PF_CHANNEL_NOT_READY,
5665 ETH_ILLEGAL_BD_LENGTHS,
5666 ETH_PACKET_TOO_SHORT,
5667 ETH_PAYLOAD_TOO_BIG,
5668 ETH_ILLEGAL_ETH_TYPE,
5669 ETH_ILLEGAL_LSO_HDR_LEN,
5670 ETH_TOO_MANY_BDS,
5671 ETH_ZERO_HDR_NBDS,
5672 ETH_START_BD_NOT_SET,
5673 ETH_ILLEGAL_PARSE_NBDS,
5674 ETH_IPV6_AND_CHECKSUM,
5675 ETH_VLAN_FLG_INCORRECT,
5676 ETH_ILLEGAL_LSO_MSS,
5677 ETH_TUNNEL_NOT_SUPPORTED,
5678 MAX_MALICIOUS_VF_ERROR_ID
5679 };
5680
5681
5682
5683
5684 enum mf_mode {
5685 SINGLE_FUNCTION,
5686 MULTI_FUNCTION_SD,
5687 MULTI_FUNCTION_SI,
5688 MULTI_FUNCTION_AFEX,
5689 MAX_MF_MODE
5690 };
5691
5692
5693
5694
5695 struct tstorm_per_pf_stats {
5696 struct regpair rcv_error_bytes;
5697 };
5698
5699
5700
5701
5702 struct per_pf_stats {
5703 struct tstorm_per_pf_stats tstorm_pf_statistics;
5704 };
5705
5706
5707
5708
5709
5710 struct tstorm_per_port_stats {
5711 __le32 mac_discard;
5712 __le32 mac_filter_discard;
5713 __le32 brb_truncate_discard;
5714 __le32 mf_tag_discard;
5715 __le32 packet_drop;
5716 __le32 reserved;
5717 };
5718
5719
5720
5721
5722 struct per_port_stats {
5723 struct tstorm_per_port_stats tstorm_port_statistics;
5724 };
5725
5726
5727
5728
5729
5730 struct tstorm_per_queue_stats {
5731 struct regpair rcv_ucast_bytes;
5732 __le32 rcv_ucast_pkts;
5733 __le32 checksum_discard;
5734 struct regpair rcv_bcast_bytes;
5735 __le32 rcv_bcast_pkts;
5736 __le32 pkts_too_big_discard;
5737 struct regpair rcv_mcast_bytes;
5738 __le32 rcv_mcast_pkts;
5739 __le32 ttl0_discard;
5740 __le16 no_buff_discard;
5741 __le16 reserved0;
5742 __le32 reserved1;
5743 };
5744
5745
5746
5747
5748 struct ustorm_per_queue_stats {
5749 struct regpair ucast_no_buff_bytes;
5750 struct regpair mcast_no_buff_bytes;
5751 struct regpair bcast_no_buff_bytes;
5752 __le32 ucast_no_buff_pkts;
5753 __le32 mcast_no_buff_pkts;
5754 __le32 bcast_no_buff_pkts;
5755 __le32 coalesced_pkts;
5756 struct regpair coalesced_bytes;
5757 __le32 coalesced_events;
5758 __le32 coalesced_aborts;
5759 };
5760
5761
5762
5763
5764 struct xstorm_per_queue_stats {
5765 struct regpair ucast_bytes_sent;
5766 struct regpair mcast_bytes_sent;
5767 struct regpair bcast_bytes_sent;
5768 __le32 ucast_pkts_sent;
5769 __le32 mcast_pkts_sent;
5770 __le32 bcast_pkts_sent;
5771 __le32 error_drop_pkts;
5772 };
5773
5774
5775
5776
5777 struct per_queue_stats {
5778 struct tstorm_per_queue_stats tstorm_queue_statistics;
5779 struct ustorm_per_queue_stats ustorm_queue_statistics;
5780 struct xstorm_per_queue_stats xstorm_queue_statistics;
5781 };
5782
5783
5784
5785
5786
5787 struct pram_fw_version {
5788 u8 major;
5789 u8 minor;
5790 u8 revision;
5791 u8 engineering;
5792 u8 flags;
5793 #define PRAM_FW_VERSION_OPTIMIZED (0x1<<0)
5794 #define PRAM_FW_VERSION_OPTIMIZED_SHIFT 0
5795 #define PRAM_FW_VERSION_STORM_ID (0x3<<1)
5796 #define PRAM_FW_VERSION_STORM_ID_SHIFT 1
5797 #define PRAM_FW_VERSION_BIG_ENDIEN (0x1<<3)
5798 #define PRAM_FW_VERSION_BIG_ENDIEN_SHIFT 3
5799 #define PRAM_FW_VERSION_CHIP_VERSION (0x3<<4)
5800 #define PRAM_FW_VERSION_CHIP_VERSION_SHIFT 4
5801 #define __PRAM_FW_VERSION_RESERVED0 (0x3<<6)
5802 #define __PRAM_FW_VERSION_RESERVED0_SHIFT 6
5803 };
5804
5805
5806
5807
5808
5809 union protocol_common_specific_data {
5810 u8 protocol_data[8];
5811 struct regpair phy_address;
5812 struct regpair mac_config_addr;
5813 struct afex_vif_list_ramrod_data afex_vif_list_data;
5814 };
5815
5816
5817
5818
5819 struct protocol_common_spe {
5820 struct spe_hdr hdr;
5821 union protocol_common_specific_data data;
5822 };
5823
5824
5825 struct set_timesync_ramrod_data {
5826 u8 drift_adjust_cmd;
5827 u8 offset_cmd;
5828 u8 add_sub_drift_adjust_value;
5829 u8 drift_adjust_value;
5830 u32 drift_adjust_period;
5831 struct regpair offset_delta;
5832 };
5833
5834
5835
5836
5837 struct slow_path_element {
5838 struct spe_hdr hdr;
5839 struct regpair protocol_data;
5840 };
5841
5842
5843
5844
5845
5846 struct stats_counter {
5847 __le16 xstats_counter;
5848 __le16 reserved0;
5849 __le32 reserved1;
5850 __le16 tstats_counter;
5851 __le16 reserved2;
5852 __le32 reserved3;
5853 __le16 ustats_counter;
5854 __le16 reserved4;
5855 __le32 reserved5;
5856 __le16 cstats_counter;
5857 __le16 reserved6;
5858 __le32 reserved7;
5859 };
5860
5861
5862
5863
5864
5865 struct stats_query_entry {
5866 u8 kind;
5867 u8 index;
5868 __le16 funcID;
5869 __le32 reserved;
5870 struct regpair address;
5871 };
5872
5873
5874
5875
5876 struct stats_query_cmd_group {
5877 struct stats_query_entry query[STATS_QUERY_CMD_COUNT];
5878 };
5879
5880
5881
5882
5883
5884 struct stats_query_header {
5885 u8 cmd_num;
5886 u8 reserved0;
5887 __le16 drv_stats_counter;
5888 __le32 reserved1;
5889 struct regpair stats_counters_addrs;
5890 };
5891
5892
5893
5894
5895
5896 enum stats_query_type {
5897 STATS_TYPE_QUEUE,
5898 STATS_TYPE_PORT,
5899 STATS_TYPE_PF,
5900 STATS_TYPE_TOE,
5901 STATS_TYPE_FCOE,
5902 MAX_STATS_QUERY_TYPE
5903 };
5904
5905
5906
5907
5908
5909 enum status_block_state {
5910 SB_DISABLED,
5911 SB_ENABLED,
5912 SB_CLEANED,
5913 MAX_STATUS_BLOCK_STATE
5914 };
5915
5916
5917
5918
5919
5920 enum storm_id {
5921 USTORM_ID,
5922 CSTORM_ID,
5923 XSTORM_ID,
5924 TSTORM_ID,
5925 ATTENTION_ID,
5926 MAX_STORM_ID
5927 };
5928
5929
5930
5931
5932
5933 enum traffic_type {
5934 LLFC_TRAFFIC_TYPE_NW,
5935 LLFC_TRAFFIC_TYPE_FCOE,
5936 LLFC_TRAFFIC_TYPE_ISCSI,
5937 MAX_TRAFFIC_TYPE
5938 };
5939
5940
5941
5942
5943
5944 struct tstorm_queue_zone_data {
5945 struct regpair reserved[4];
5946 };
5947
5948
5949
5950
5951
5952 struct tstorm_vf_zone_data {
5953 struct regpair reserved;
5954 };
5955
5956
5957 enum ts_add_sub_value {
5958 TS_SUB_VALUE,
5959 TS_ADD_VALUE,
5960 MAX_TS_ADD_SUB_VALUE
5961 };
5962
5963
5964 enum ts_drift_adjust_cmd {
5965 TS_DRIFT_ADJUST_KEEP,
5966 TS_DRIFT_ADJUST_SET,
5967 TS_DRIFT_ADJUST_RESET,
5968 MAX_TS_DRIFT_ADJUST_CMD
5969 };
5970
5971
5972 enum ts_offset_cmd {
5973 TS_OFFSET_KEEP,
5974 TS_OFFSET_INC,
5975 TS_OFFSET_DEC,
5976 MAX_TS_OFFSET_CMD
5977 };
5978
5979
5980 struct ustorm_queue_zone_data {
5981 struct ustorm_eth_rx_producers eth_rx_producers;
5982 struct regpair reserved[3];
5983 };
5984
5985
5986
5987
5988
5989 struct ustorm_vf_zone_data {
5990 struct regpair reserved;
5991 };
5992
5993
5994
5995
5996
5997 struct vf_pf_channel_data {
5998 #if defined(__BIG_ENDIAN)
5999 u16 reserved0;
6000 u8 valid;
6001 u8 state;
6002 #elif defined(__LITTLE_ENDIAN)
6003 u8 state;
6004 u8 valid;
6005 u16 reserved0;
6006 #endif
6007 u32 reserved1;
6008 };
6009
6010
6011
6012
6013
6014 enum vf_pf_channel_state {
6015 VF_PF_CHANNEL_STATE_READY,
6016 VF_PF_CHANNEL_STATE_WAITING_FOR_ACK,
6017 MAX_VF_PF_CHANNEL_STATE
6018 };
6019
6020
6021
6022
6023
6024 enum vif_list_rule_kind {
6025 VIF_LIST_RULE_SET,
6026 VIF_LIST_RULE_GET,
6027 VIF_LIST_RULE_CLEAR_ALL,
6028 VIF_LIST_RULE_CLEAR_FUNC,
6029 MAX_VIF_LIST_RULE_KIND
6030 };
6031
6032
6033
6034
6035
6036 struct xstorm_queue_zone_data {
6037 struct regpair reserved[4];
6038 };
6039
6040
6041
6042
6043
6044 struct xstorm_vf_zone_data {
6045 struct regpair reserved;
6046 };
6047
6048 #endif