14d6a6005SBhargava Marreddy /* SPDX-License-Identifier: GPL-2.0 */ 24d6a6005SBhargava Marreddy /* Copyright (c) 2025 Broadcom */ 34d6a6005SBhargava Marreddy 44d6a6005SBhargava Marreddy #ifndef _BNGE_HW_DEF_H_ 54d6a6005SBhargava Marreddy #define _BNGE_HW_DEF_H_ 64d6a6005SBhargava Marreddy 74d6a6005SBhargava Marreddy #define TX_BD_FLAGS_TCP_UDP_CHKSUM BIT(0) 84d6a6005SBhargava Marreddy #define TX_BD_FLAGS_IP_CKSUM BIT(1) 94d6a6005SBhargava Marreddy #define TX_BD_FLAGS_NO_CRC BIT(2) 104d6a6005SBhargava Marreddy #define TX_BD_FLAGS_STAMP BIT(3) 114d6a6005SBhargava Marreddy #define TX_BD_FLAGS_T_IP_CHKSUM BIT(4) 124d6a6005SBhargava Marreddy #define TX_BD_FLAGS_LSO BIT(5) 134d6a6005SBhargava Marreddy #define TX_BD_FLAGS_IPID_FMT BIT(6) 144d6a6005SBhargava Marreddy #define TX_BD_FLAGS_T_IPID BIT(7) 154d6a6005SBhargava Marreddy #define TX_BD_HSIZE GENMASK(23, 16) 164d6a6005SBhargava Marreddy #define TX_BD_HSIZE_SHIFT 16 174d6a6005SBhargava Marreddy 184d6a6005SBhargava Marreddy #define TX_BD_CFA_ACTION GENMASK(31, 16) 194d6a6005SBhargava Marreddy #define TX_BD_CFA_ACTION_SHIFT 16 204d6a6005SBhargava Marreddy 214d6a6005SBhargava Marreddy #define TX_BD_CFA_META_MASK 0xfffffff 224d6a6005SBhargava Marreddy #define TX_BD_CFA_META_VID_MASK 0xfff 234d6a6005SBhargava Marreddy #define TX_BD_CFA_META_PRI_MASK GENMASK(15, 12) 244d6a6005SBhargava Marreddy #define TX_BD_CFA_META_PRI_SHIFT 12 254d6a6005SBhargava Marreddy #define TX_BD_CFA_META_TPID_MASK GENMASK(17, 16) 264d6a6005SBhargava Marreddy #define TX_BD_CFA_META_TPID_SHIFT 16 274d6a6005SBhargava Marreddy #define TX_BD_CFA_META_KEY GENMASK(31, 28) 284d6a6005SBhargava Marreddy #define TX_BD_CFA_META_KEY_SHIFT 28 294d6a6005SBhargava Marreddy #define TX_BD_CFA_META_KEY_VLAN BIT(28) 304d6a6005SBhargava Marreddy 314d6a6005SBhargava Marreddy struct tx_bd_ext { 324d6a6005SBhargava Marreddy __le32 tx_bd_hsize_lflags; 334d6a6005SBhargava Marreddy __le32 tx_bd_mss; 344d6a6005SBhargava Marreddy __le32 tx_bd_cfa_action; 354d6a6005SBhargava Marreddy __le32 tx_bd_cfa_meta; 364d6a6005SBhargava Marreddy }; 374d6a6005SBhargava Marreddy 384d6a6005SBhargava Marreddy #define TX_CMP_SQ_CONS_IDX(txcmp) \ 394d6a6005SBhargava Marreddy (le32_to_cpu((txcmp)->sq_cons_idx) & TX_CMP_SQ_CONS_IDX_MASK) 404d6a6005SBhargava Marreddy 414d6a6005SBhargava Marreddy #define RX_CMP_CMP_TYPE GENMASK(5, 0) 424d6a6005SBhargava Marreddy #define RX_CMP_FLAGS_ERROR BIT(6) 434d6a6005SBhargava Marreddy #define RX_CMP_FLAGS_PLACEMENT GENMASK(9, 7) 444d6a6005SBhargava Marreddy #define RX_CMP_FLAGS_RSS_VALID BIT(10) 454d6a6005SBhargava Marreddy #define RX_CMP_FLAGS_PKT_METADATA_PRESENT BIT(11) 464d6a6005SBhargava Marreddy #define RX_CMP_FLAGS_ITYPES_SHIFT 12 474d6a6005SBhargava Marreddy #define RX_CMP_FLAGS_ITYPES_MASK 0xf000 484d6a6005SBhargava Marreddy #define RX_CMP_FLAGS_ITYPE_UNKNOWN (0 << 12) 494d6a6005SBhargava Marreddy #define RX_CMP_FLAGS_ITYPE_IP (1 << 12) 504d6a6005SBhargava Marreddy #define RX_CMP_FLAGS_ITYPE_TCP (2 << 12) 514d6a6005SBhargava Marreddy #define RX_CMP_FLAGS_ITYPE_UDP (3 << 12) 524d6a6005SBhargava Marreddy #define RX_CMP_FLAGS_ITYPE_FCOE (4 << 12) 534d6a6005SBhargava Marreddy #define RX_CMP_FLAGS_ITYPE_ROCE (5 << 12) 544d6a6005SBhargava Marreddy #define RX_CMP_FLAGS_ITYPE_PTP_WO_TS (8 << 12) 554d6a6005SBhargava Marreddy #define RX_CMP_FLAGS_ITYPE_PTP_W_TS (9 << 12) 564d6a6005SBhargava Marreddy #define RX_CMP_LEN GENMASK(31, 16) 574d6a6005SBhargava Marreddy #define RX_CMP_LEN_SHIFT 16 584d6a6005SBhargava Marreddy 594d6a6005SBhargava Marreddy #define RX_CMP_V1 BIT(0) 604d6a6005SBhargava Marreddy #define RX_CMP_AGG_BUFS GENMASK(5, 1) 614d6a6005SBhargava Marreddy #define RX_CMP_AGG_BUFS_SHIFT 1 624d6a6005SBhargava Marreddy #define RX_CMP_RSS_HASH_TYPE GENMASK(15, 9) 634d6a6005SBhargava Marreddy #define RX_CMP_RSS_HASH_TYPE_SHIFT 9 644d6a6005SBhargava Marreddy #define RX_CMP_V3_RSS_EXT_OP_LEGACY GENMASK(15, 12) 654d6a6005SBhargava Marreddy #define RX_CMP_V3_RSS_EXT_OP_LEGACY_SHIFT 12 664d6a6005SBhargava Marreddy #define RX_CMP_V3_RSS_EXT_OP_NEW GENMASK(11, 8) 674d6a6005SBhargava Marreddy #define RX_CMP_V3_RSS_EXT_OP_NEW_SHIFT 8 684d6a6005SBhargava Marreddy #define RX_CMP_PAYLOAD_OFFSET GENMASK(23, 16) 694d6a6005SBhargava Marreddy #define RX_CMP_PAYLOAD_OFFSET_SHIFT 16 704d6a6005SBhargava Marreddy #define RX_CMP_SUB_NS_TS GENMASK(19, 16) 714d6a6005SBhargava Marreddy #define RX_CMP_SUB_NS_TS_SHIFT 16 724d6a6005SBhargava Marreddy #define RX_CMP_METADATA1 GENMASK(31, 28) 734d6a6005SBhargava Marreddy #define RX_CMP_METADATA1_SHIFT 28 744d6a6005SBhargava Marreddy #define RX_CMP_METADATA1_TPID_SEL GENMASK(30, 28) 754d6a6005SBhargava Marreddy #define RX_CMP_METADATA1_TPID_8021Q BIT(28) 764d6a6005SBhargava Marreddy #define RX_CMP_METADATA1_TPID_8021AD (0x0 << 28) 774d6a6005SBhargava Marreddy #define RX_CMP_METADATA1_VALID BIT(31) 784d6a6005SBhargava Marreddy 794d6a6005SBhargava Marreddy struct rx_cmp { 804d6a6005SBhargava Marreddy __le32 rx_cmp_len_flags_type; 814d6a6005SBhargava Marreddy u32 rx_cmp_opaque; 824d6a6005SBhargava Marreddy __le32 rx_cmp_misc_v1; 834d6a6005SBhargava Marreddy __le32 rx_cmp_rss_hash; 844d6a6005SBhargava Marreddy }; 854d6a6005SBhargava Marreddy 864d6a6005SBhargava Marreddy #define RX_CMP_FLAGS2_IP_CS_CALC BIT(0) 874d6a6005SBhargava Marreddy #define RX_CMP_FLAGS2_L4_CS_CALC BIT(1) 884d6a6005SBhargava Marreddy #define RX_CMP_FLAGS2_T_IP_CS_CALC BIT(2) 894d6a6005SBhargava Marreddy #define RX_CMP_FLAGS2_T_L4_CS_CALC BIT(3) 904d6a6005SBhargava Marreddy #define RX_CMP_FLAGS2_META_FORMAT_VLAN BIT(4) 914d6a6005SBhargava Marreddy 924d6a6005SBhargava Marreddy #define RX_CMP_FLAGS2_METADATA_TCI_MASK GENMASK(15, 0) 934d6a6005SBhargava Marreddy #define RX_CMP_FLAGS2_METADATA_VID_MASK GENMASK(11, 0) 944d6a6005SBhargava Marreddy #define RX_CMP_FLAGS2_METADATA_TPID_MASK GENMASK(31, 16) 954d6a6005SBhargava Marreddy #define RX_CMP_FLAGS2_METADATA_TPID_SFT 16 964d6a6005SBhargava Marreddy 974d6a6005SBhargava Marreddy #define RX_CMP_V BIT(0) 984d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_MASK GENMASK(15, 1) 994d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_SFT 1 1004d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_BUFFER_ERROR_MASK GENMASK(3, 1) 1014d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_BUFFER_ERROR_NO_BUFFER (0x0 << 1) 1024d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_BUFFER_ERROR_DID_NOT_FIT (0x1 << 1) 1034d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_BUFFER_ERROR_NOT_ON_CHIP (0x2 << 1) 1044d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_BUFFER_ERROR_BAD_FORMAT (0x3 << 1) 1054d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_IP_CS_ERROR BIT(4) 1064d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_L4_CS_ERROR BIT(5) 1074d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_T_IP_CS_ERROR BIT(6) 1084d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_T_L4_CS_ERROR BIT(7) 1094d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_CRC_ERROR BIT(8) 1104d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_T_PKT_ERROR_MASK GENMASK(11, 9) 1114d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_T_PKT_ERROR_NO_ERROR (0x0 << 9) 1124d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_T_PKT_ERROR_T_L3_BAD_VERSION (0x1 << 9) 1134d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_T_PKT_ERROR_T_L3_BAD_HDR_LEN (0x2 << 9) 1144d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_T_PKT_ERROR_TUNNEL_TOTAL_ERROR (0x3 << 9) 1154d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_T_PKT_ERROR_T_IP_TOTAL_ERROR (0x4 << 9) 1164d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_T_PKT_ERROR_T_UDP_TOTAL_ERROR (0x5 << 9) 1174d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_T_PKT_ERROR_T_L3_BAD_TTL (0x6 << 9) 1184d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_PKT_ERROR_MASK GENMASK(15, 12) 1194d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_PKT_ERROR_NO_ERROR (0x0 << 12) 1204d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_PKT_ERROR_L3_BAD_VERSION (0x1 << 12) 1214d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_PKT_ERROR_L3_BAD_HDR_LEN (0x2 << 12) 1224d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_PKT_ERROR_L3_BAD_TTL (0x3 << 12) 1234d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_PKT_ERROR_IP_TOTAL_ERROR (0x4 << 12) 1244d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_PKT_ERROR_UDP_TOTAL_ERROR (0x5 << 12) 1254d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_PKT_ERROR_L4_BAD_HDR_LEN (0x6 << 12) 1264d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_PKT_ERROR_L4_BAD_HDR_LEN_TOO_SMALL (0x7 << 12) 1274d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_PKT_ERROR_L4_BAD_OPT_LEN (0x8 << 12) 1284d6a6005SBhargava Marreddy 1294d6a6005SBhargava Marreddy #define RX_CMPL_CFA_CODE_MASK GENMASK(31, 16) 1304d6a6005SBhargava Marreddy #define RX_CMPL_CFA_CODE_SFT 16 1314d6a6005SBhargava Marreddy #define RX_CMPL_METADATA0_TCI_MASK GENMASK(31, 16) 1324d6a6005SBhargava Marreddy #define RX_CMPL_METADATA0_VID_MASK GENMASK(27, 16) 1334d6a6005SBhargava Marreddy #define RX_CMPL_METADATA0_SFT 16 1344d6a6005SBhargava Marreddy 1354d6a6005SBhargava Marreddy struct rx_cmp_ext { 1364d6a6005SBhargava Marreddy __le32 rx_cmp_flags2; 1374d6a6005SBhargava Marreddy __le32 rx_cmp_meta_data; 1384d6a6005SBhargava Marreddy __le32 rx_cmp_cfa_code_errors_v2; 1394d6a6005SBhargava Marreddy __le32 rx_cmp_timestamp; 1404d6a6005SBhargava Marreddy }; 1414d6a6005SBhargava Marreddy 142c858ac87SBhargava Marreddy #define RX_AGG_CMP_TYPE GENMASK(5, 0) 143c858ac87SBhargava Marreddy #define RX_AGG_CMP_LEN GENMASK(31, 16) 144c858ac87SBhargava Marreddy #define RX_AGG_CMP_LEN_SHIFT 16 145c858ac87SBhargava Marreddy #define RX_AGG_CMP_V BIT(0) 146c858ac87SBhargava Marreddy #define RX_AGG_CMP_AGG_ID GENMASK(25, 16) 147c858ac87SBhargava Marreddy #define RX_AGG_CMP_AGG_ID_SHIFT 16 148c858ac87SBhargava Marreddy 149c858ac87SBhargava Marreddy struct rx_agg_cmp { 150c858ac87SBhargava Marreddy __le32 rx_agg_cmp_len_flags_type; 151c858ac87SBhargava Marreddy u32 rx_agg_cmp_opaque; 152c858ac87SBhargava Marreddy __le32 rx_agg_cmp_v; 153c858ac87SBhargava Marreddy __le32 rx_agg_cmp_unused; 154c858ac87SBhargava Marreddy }; 155c858ac87SBhargava Marreddy 1564d6a6005SBhargava Marreddy #define RX_CMP_L2_ERRORS \ 1574d6a6005SBhargava Marreddy cpu_to_le32(RX_CMPL_ERRORS_BUFFER_ERROR_MASK | RX_CMPL_ERRORS_CRC_ERROR) 1584d6a6005SBhargava Marreddy 1594d6a6005SBhargava Marreddy #define RX_CMP_L4_CS_BITS \ 1604d6a6005SBhargava Marreddy (cpu_to_le32(RX_CMP_FLAGS2_L4_CS_CALC | RX_CMP_FLAGS2_T_L4_CS_CALC)) 1614d6a6005SBhargava Marreddy 1624d6a6005SBhargava Marreddy #define RX_CMP_L4_CS_ERR_BITS \ 1634d6a6005SBhargava Marreddy (cpu_to_le32(RX_CMPL_ERRORS_L4_CS_ERROR | RX_CMPL_ERRORS_T_L4_CS_ERROR)) 1644d6a6005SBhargava Marreddy 1654d6a6005SBhargava Marreddy #define RX_CMP_L4_CS_OK(rxcmp1) \ 1664d6a6005SBhargava Marreddy (((rxcmp1)->rx_cmp_flags2 & RX_CMP_L4_CS_BITS) && \ 1674d6a6005SBhargava Marreddy !((rxcmp1)->rx_cmp_cfa_code_errors_v2 & RX_CMP_L4_CS_ERR_BITS)) 1684d6a6005SBhargava Marreddy 1694d6a6005SBhargava Marreddy #define RX_CMP_METADATA0_TCI(rxcmp1) \ 1704d6a6005SBhargava Marreddy ((le32_to_cpu((rxcmp1)->rx_cmp_cfa_code_errors_v2) & \ 1714d6a6005SBhargava Marreddy RX_CMPL_METADATA0_TCI_MASK) >> RX_CMPL_METADATA0_SFT) 1724d6a6005SBhargava Marreddy 1734d6a6005SBhargava Marreddy #define RX_CMP_ENCAP(rxcmp1) \ 1744d6a6005SBhargava Marreddy ((le32_to_cpu((rxcmp1)->rx_cmp_flags2) & \ 1754d6a6005SBhargava Marreddy RX_CMP_FLAGS2_T_L4_CS_CALC) >> 3) 1764d6a6005SBhargava Marreddy 1774d6a6005SBhargava Marreddy #define RX_CMP_V3_HASH_TYPE_LEGACY(rxcmp) \ 1784d6a6005SBhargava Marreddy ((le32_to_cpu((rxcmp)->rx_cmp_misc_v1) & \ 1794d6a6005SBhargava Marreddy RX_CMP_V3_RSS_EXT_OP_LEGACY) >> RX_CMP_V3_RSS_EXT_OP_LEGACY_SHIFT) 1804d6a6005SBhargava Marreddy 1814d6a6005SBhargava Marreddy #define RX_CMP_V3_HASH_TYPE_NEW(rxcmp) \ 1824d6a6005SBhargava Marreddy ((le32_to_cpu((rxcmp)->rx_cmp_misc_v1) & RX_CMP_V3_RSS_EXT_OP_NEW) >>\ 1834d6a6005SBhargava Marreddy RX_CMP_V3_RSS_EXT_OP_NEW_SHIFT) 1844d6a6005SBhargava Marreddy 1854d6a6005SBhargava Marreddy #define RX_CMP_V3_HASH_TYPE(bd, rxcmp) \ 1864d6a6005SBhargava Marreddy (((bd)->rss_cap & BNGE_RSS_CAP_RSS_TCAM) ? \ 1874d6a6005SBhargava Marreddy RX_CMP_V3_HASH_TYPE_NEW(rxcmp) : \ 1884d6a6005SBhargava Marreddy RX_CMP_V3_HASH_TYPE_LEGACY(rxcmp)) 1894d6a6005SBhargava Marreddy 1904d6a6005SBhargava Marreddy #define EXT_OP_INNER_4 0x0 1914d6a6005SBhargava Marreddy #define EXT_OP_OUTER_4 0x2 1924d6a6005SBhargava Marreddy #define EXT_OP_INNFL_3 0x8 1934d6a6005SBhargava Marreddy #define EXT_OP_OUTFL_3 0xa 1944d6a6005SBhargava Marreddy 1954d6a6005SBhargava Marreddy #define RX_CMP_VLAN_VALID(rxcmp) \ 1964d6a6005SBhargava Marreddy ((rxcmp)->rx_cmp_misc_v1 & cpu_to_le32(RX_CMP_METADATA1_VALID)) 1974d6a6005SBhargava Marreddy 1984d6a6005SBhargava Marreddy #define RX_CMP_VLAN_TPID_SEL(rxcmp) \ 1994d6a6005SBhargava Marreddy (le32_to_cpu((rxcmp)->rx_cmp_misc_v1) & RX_CMP_METADATA1_TPID_SEL) 2004d6a6005SBhargava Marreddy 2014d6a6005SBhargava Marreddy #define RSS_PROFILE_ID_MASK GENMASK(4, 0) 2024d6a6005SBhargava Marreddy 2034d6a6005SBhargava Marreddy #define RX_CMP_HASH_TYPE(rxcmp) \ 2044d6a6005SBhargava Marreddy (((le32_to_cpu((rxcmp)->rx_cmp_misc_v1) & RX_CMP_RSS_HASH_TYPE) >>\ 2054d6a6005SBhargava Marreddy RX_CMP_RSS_HASH_TYPE_SHIFT) & RSS_PROFILE_ID_MASK) 2064d6a6005SBhargava Marreddy 2074d6a6005SBhargava Marreddy #define RX_CMP_HASH_VALID(rxcmp) \ 2084d6a6005SBhargava Marreddy ((rxcmp)->rx_cmp_len_flags_type & cpu_to_le32(RX_CMP_FLAGS_RSS_VALID)) 209*58165c99SBhargava Marreddy 210*58165c99SBhargava Marreddy #define TPA_AGG_AGG_ID(rx_agg) \ 211*58165c99SBhargava Marreddy ((le32_to_cpu((rx_agg)->rx_agg_cmp_v) & \ 212*58165c99SBhargava Marreddy RX_AGG_CMP_AGG_ID) >> RX_AGG_CMP_AGG_ID_SHIFT) 213*58165c99SBhargava Marreddy 214*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_TYPE GENMASK(5, 0) 215*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS GENMASK(15, 6) 216*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS_SHIFT 6 217*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS_ERROR BIT(6) 218*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS_PLACEMENT GENMASK(9, 7) 219*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS_PLACEMENT_SHIFT 7 220*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS_PLACEMENT_JUMBO BIT(7) 221*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS_PLACEMENT_HDS (0x2 << 7) 222*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS_PLACEMENT_GRO_JUMBO (0x5 << 7) 223*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS_PLACEMENT_GRO_HDS (0x6 << 7) 224*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS_RSS_VALID BIT(10) 225*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS_TIMESTAMP BIT(11) 226*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS_ITYPES GENMASK(15, 12) 227*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS_ITYPES_SHIFT 12 228*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS_ITYPE_TCP (0x2 << 12) 229*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_LEN GENMASK(31, 16) 230*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_LEN_SHIFT 16 231*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_V1 BIT(0) 232*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_RSS_HASH_TYPE GENMASK(15, 9) 233*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_RSS_HASH_TYPE_SHIFT 9 234*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_V3_RSS_HASH_TYPE GENMASK(15, 7) 235*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_V3_RSS_HASH_TYPE_SHIFT 7 236*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_AGG_ID GENMASK(25, 16) 237*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_AGG_ID_SHIFT 16 238*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_METADATA1 GENMASK(31, 28) 239*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_METADATA1_SHIFT 28 240*58165c99SBhargava Marreddy #define RX_TPA_START_METADATA1_TPID_SEL GENMASK(30, 28) 241*58165c99SBhargava Marreddy #define RX_TPA_START_METADATA1_TPID_8021Q BIT(28) 242*58165c99SBhargava Marreddy #define RX_TPA_START_METADATA1_TPID_8021AD (0x0 << 28) 243*58165c99SBhargava Marreddy #define RX_TPA_START_METADATA1_VALID BIT(31) 244*58165c99SBhargava Marreddy 245*58165c99SBhargava Marreddy struct rx_tpa_start_cmp { 246*58165c99SBhargava Marreddy __le32 rx_tpa_start_cmp_len_flags_type; 247*58165c99SBhargava Marreddy u32 rx_tpa_start_cmp_opaque; 248*58165c99SBhargava Marreddy __le32 rx_tpa_start_cmp_misc_v1; 249*58165c99SBhargava Marreddy __le32 rx_tpa_start_cmp_rss_hash; 250*58165c99SBhargava Marreddy }; 251*58165c99SBhargava Marreddy 252*58165c99SBhargava Marreddy #define TPA_START_HASH_VALID(rx_tpa_start) \ 253*58165c99SBhargava Marreddy ((rx_tpa_start)->rx_tpa_start_cmp_len_flags_type & \ 254*58165c99SBhargava Marreddy cpu_to_le32(RX_TPA_START_CMP_FLAGS_RSS_VALID)) 255*58165c99SBhargava Marreddy 256*58165c99SBhargava Marreddy #define TPA_START_HASH_TYPE(rx_tpa_start) \ 257*58165c99SBhargava Marreddy (((le32_to_cpu((rx_tpa_start)->rx_tpa_start_cmp_misc_v1) & \ 258*58165c99SBhargava Marreddy RX_TPA_START_CMP_RSS_HASH_TYPE) >> \ 259*58165c99SBhargava Marreddy RX_TPA_START_CMP_RSS_HASH_TYPE_SHIFT) & RSS_PROFILE_ID_MASK) 260*58165c99SBhargava Marreddy 261*58165c99SBhargava Marreddy #define TPA_START_V3_HASH_TYPE(rx_tpa_start) \ 262*58165c99SBhargava Marreddy (((le32_to_cpu((rx_tpa_start)->rx_tpa_start_cmp_misc_v1) & \ 263*58165c99SBhargava Marreddy RX_TPA_START_CMP_V3_RSS_HASH_TYPE) >> \ 264*58165c99SBhargava Marreddy RX_TPA_START_CMP_V3_RSS_HASH_TYPE_SHIFT) & RSS_PROFILE_ID_MASK) 265*58165c99SBhargava Marreddy 266*58165c99SBhargava Marreddy #define TPA_START_AGG_ID(rx_tpa_start) \ 267*58165c99SBhargava Marreddy ((le32_to_cpu((rx_tpa_start)->rx_tpa_start_cmp_misc_v1) & \ 268*58165c99SBhargava Marreddy RX_TPA_START_CMP_AGG_ID) >> RX_TPA_START_CMP_AGG_ID_SHIFT) 269*58165c99SBhargava Marreddy 270*58165c99SBhargava Marreddy #define TPA_START_ERROR(rx_tpa_start) \ 271*58165c99SBhargava Marreddy ((rx_tpa_start)->rx_tpa_start_cmp_len_flags_type & \ 272*58165c99SBhargava Marreddy cpu_to_le32(RX_TPA_START_CMP_FLAGS_ERROR)) 273*58165c99SBhargava Marreddy 274*58165c99SBhargava Marreddy #define TPA_START_VLAN_VALID(rx_tpa_start) \ 275*58165c99SBhargava Marreddy ((rx_tpa_start)->rx_tpa_start_cmp_misc_v1 & \ 276*58165c99SBhargava Marreddy cpu_to_le32(RX_TPA_START_METADATA1_VALID)) 277*58165c99SBhargava Marreddy 278*58165c99SBhargava Marreddy #define TPA_START_VLAN_TPID_SEL(rx_tpa_start) \ 279*58165c99SBhargava Marreddy (le32_to_cpu((rx_tpa_start)->rx_tpa_start_cmp_misc_v1) & \ 280*58165c99SBhargava Marreddy RX_TPA_START_METADATA1_TPID_SEL) 281*58165c99SBhargava Marreddy 282*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS2_IP_CS_CALC BIT(0) 283*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS2_L4_CS_CALC BIT(1) 284*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS2_T_IP_CS_CALC BIT(2) 285*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS2_T_L4_CS_CALC BIT(3) 286*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS2_IP_TYPE BIT(8) 287*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS2_CSUM_CMPL_VALID BIT(9) 288*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS2_EXT_META_FORMAT GENMASK(11, 10) 289*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS2_EXT_META_FORMAT_SHIFT 10 290*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_V3_FLAGS2_T_IP_TYPE BIT(10) 291*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_V3_FLAGS2_AGG_GRO BIT(11) 292*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS2_CSUM_CMPL GENMASK(31, 16) 293*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS2_CSUM_CMPL_SHIFT 16 294*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_V2 BIT(0) 295*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_ERRORS_BUFFER_ERROR_MASK GENMASK(3, 1) 296*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_ERRORS_BUFFER_ERROR_SHIFT 1 297*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_ERRORS_BUFFER_ERROR_NO_BUFFER (0x0 << 1) 298*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_ERRORS_BUFFER_ERROR_BAD_FORMAT (0x3 << 1) 299*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_ERRORS_BUFFER_ERROR_FLUSH (0x5 << 1) 300*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_CFA_CODE GENMASK(31, 16) 301*58165c99SBhargava Marreddy #define RX_TPA_START_CMPL_CFA_CODE_SHIFT 16 302*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_METADATA0_TCI_MASK GENMASK(31, 16) 303*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_METADATA0_VID_MASK GENMASK(27, 16) 304*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_METADATA0_SFT 16 305*58165c99SBhargava Marreddy 306*58165c99SBhargava Marreddy struct rx_tpa_start_cmp_ext { 307*58165c99SBhargava Marreddy __le32 rx_tpa_start_cmp_flags2; 308*58165c99SBhargava Marreddy __le32 rx_tpa_start_cmp_metadata; 309*58165c99SBhargava Marreddy __le32 rx_tpa_start_cmp_cfa_code_v2; 310*58165c99SBhargava Marreddy __le32 rx_tpa_start_cmp_hdr_info; 311*58165c99SBhargava Marreddy }; 312*58165c99SBhargava Marreddy 313*58165c99SBhargava Marreddy #define TPA_START_CFA_CODE(rx_tpa_start) \ 314*58165c99SBhargava Marreddy ((le32_to_cpu((rx_tpa_start)->rx_tpa_start_cmp_cfa_code_v2) & \ 315*58165c99SBhargava Marreddy RX_TPA_START_CMP_CFA_CODE) >> RX_TPA_START_CMPL_CFA_CODE_SHIFT) 316*58165c99SBhargava Marreddy 317*58165c99SBhargava Marreddy #define TPA_START_IS_IPV6(rx_tpa_start) \ 318*58165c99SBhargava Marreddy (!!((rx_tpa_start)->rx_tpa_start_cmp_flags2 & \ 319*58165c99SBhargava Marreddy cpu_to_le32(RX_TPA_START_CMP_FLAGS2_IP_TYPE))) 320*58165c99SBhargava Marreddy 321*58165c99SBhargava Marreddy #define TPA_START_ERROR_CODE(rx_tpa_start) \ 322*58165c99SBhargava Marreddy ((le32_to_cpu((rx_tpa_start)->rx_tpa_start_cmp_cfa_code_v2) & \ 323*58165c99SBhargava Marreddy RX_TPA_START_CMP_ERRORS_BUFFER_ERROR_MASK) >> \ 324*58165c99SBhargava Marreddy RX_TPA_START_CMP_ERRORS_BUFFER_ERROR_SHIFT) 325*58165c99SBhargava Marreddy 326*58165c99SBhargava Marreddy #define TPA_START_METADATA0_TCI(rx_tpa_start) \ 327*58165c99SBhargava Marreddy ((le32_to_cpu((rx_tpa_start)->rx_tpa_start_cmp_cfa_code_v2) & \ 328*58165c99SBhargava Marreddy RX_TPA_START_CMP_METADATA0_TCI_MASK) >> \ 329*58165c99SBhargava Marreddy RX_TPA_START_CMP_METADATA0_SFT) 330*58165c99SBhargava Marreddy 331*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_TYPE GENMASK(5, 0) 332*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_FLAGS GENMASK(15, 6) 333*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_FLAGS_SHIFT 6 334*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_FLAGS_PLACEMENT GENMASK(9, 7) 335*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_FLAGS_PLACEMENT_SHIFT 7 336*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_FLAGS_PLACEMENT_JUMBO BIT(7) 337*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_FLAGS_PLACEMENT_HDS (0x2 << 7) 338*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_FLAGS_PLACEMENT_GRO_JUMBO (0x5 << 7) 339*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_FLAGS_PLACEMENT_GRO_HDS (0x6 << 7) 340*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_FLAGS_RSS_VALID BIT(10) 341*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_FLAGS_ITYPES GENMASK(15, 12) 342*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_FLAGS_ITYPES_SHIFT 12 343*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_FLAGS_ITYPE_TCP (0x2 << 12) 344*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_LEN GENMASK(31, 16) 345*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_LEN_SHIFT 16 346*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_V1 BIT(0) 347*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_TPA_SEGS GENMASK(15, 8) 348*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_TPA_SEGS_SHIFT 8 349*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_AGG_ID GENMASK(25, 16) 350*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_AGG_ID_SHIFT 16 351*58165c99SBhargava Marreddy #define RX_TPA_END_GRO_TS BIT(31) 352*58165c99SBhargava Marreddy 353*58165c99SBhargava Marreddy struct rx_tpa_end_cmp { 354*58165c99SBhargava Marreddy __le32 rx_tpa_end_cmp_len_flags_type; 355*58165c99SBhargava Marreddy u32 rx_tpa_end_cmp_opaque; 356*58165c99SBhargava Marreddy __le32 rx_tpa_end_cmp_misc_v1; 357*58165c99SBhargava Marreddy __le32 rx_tpa_end_cmp_tsdelta; 358*58165c99SBhargava Marreddy }; 359*58165c99SBhargava Marreddy 360*58165c99SBhargava Marreddy #define TPA_END_AGG_ID(rx_tpa_end) \ 361*58165c99SBhargava Marreddy ((le32_to_cpu((rx_tpa_end)->rx_tpa_end_cmp_misc_v1) & \ 362*58165c99SBhargava Marreddy RX_TPA_END_CMP_AGG_ID) >> RX_TPA_END_CMP_AGG_ID_SHIFT) 363*58165c99SBhargava Marreddy 364*58165c99SBhargava Marreddy #define TPA_END_TPA_SEGS(rx_tpa_end) \ 365*58165c99SBhargava Marreddy ((le32_to_cpu((rx_tpa_end)->rx_tpa_end_cmp_misc_v1) & \ 366*58165c99SBhargava Marreddy RX_TPA_END_CMP_TPA_SEGS) >> RX_TPA_END_CMP_TPA_SEGS_SHIFT) 367*58165c99SBhargava Marreddy 368*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_FLAGS_PLACEMENT_ANY_GRO \ 369*58165c99SBhargava Marreddy cpu_to_le32(RX_TPA_END_CMP_FLAGS_PLACEMENT_GRO_JUMBO & \ 370*58165c99SBhargava Marreddy RX_TPA_END_CMP_FLAGS_PLACEMENT_GRO_HDS) 371*58165c99SBhargava Marreddy 372*58165c99SBhargava Marreddy #define TPA_END_GRO(rx_tpa_end) \ 373*58165c99SBhargava Marreddy ((rx_tpa_end)->rx_tpa_end_cmp_len_flags_type & \ 374*58165c99SBhargava Marreddy RX_TPA_END_CMP_FLAGS_PLACEMENT_ANY_GRO) 375*58165c99SBhargava Marreddy 376*58165c99SBhargava Marreddy #define TPA_END_GRO_TS(rx_tpa_end) \ 377*58165c99SBhargava Marreddy (!!((rx_tpa_end)->rx_tpa_end_cmp_tsdelta & \ 378*58165c99SBhargava Marreddy cpu_to_le32(RX_TPA_END_GRO_TS))) 379*58165c99SBhargava Marreddy 380*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_TPA_DUP_ACKS GENMASK(3, 0) 381*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_PAYLOAD_OFFSET GENMASK(23, 16) 382*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_PAYLOAD_OFFSET_SHIFT 16 383*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_AGG_BUFS GENMASK(31, 24) 384*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_AGG_BUFS_SHIFT 24 385*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_TPA_SEG_LEN GENMASK(15, 0) 386*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_V2 BIT(0) 387*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_ERRORS GENMASK(2, 1) 388*58165c99SBhargava Marreddy #define RX_TPA_END_CMPL_ERRORS_SHIFT 1 389*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_ERRORS_BUFFER_ERROR_NO_BUFFER (0x0 << 1) 390*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_ERRORS_BUFFER_ERROR_NOT_ON_CHIP (0x2 << 1) 391*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_ERRORS_BUFFER_ERROR_BAD_FORMAT (0x3 << 1) 392*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_ERRORS_BUFFER_ERROR_RSV_ERROR (0x4 << 1) 393*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_ERRORS_BUFFER_ERROR_FLUSH (0x5 << 1) 394*58165c99SBhargava Marreddy 395*58165c99SBhargava Marreddy struct rx_tpa_end_cmp_ext { 396*58165c99SBhargava Marreddy __le32 rx_tpa_end_cmp_dup_acks; 397*58165c99SBhargava Marreddy __le32 rx_tpa_end_cmp_seg_len; 398*58165c99SBhargava Marreddy __le32 rx_tpa_end_cmp_errors_v2; 399*58165c99SBhargava Marreddy u32 rx_tpa_end_cmp_start_opaque; 400*58165c99SBhargava Marreddy }; 401*58165c99SBhargava Marreddy 402*58165c99SBhargava Marreddy #define TPA_END_ERRORS(rx_tpa_end_ext) \ 403*58165c99SBhargava Marreddy ((rx_tpa_end_ext)->rx_tpa_end_cmp_errors_v2 & \ 404*58165c99SBhargava Marreddy cpu_to_le32(RX_TPA_END_CMP_ERRORS)) 405*58165c99SBhargava Marreddy 406*58165c99SBhargava Marreddy #define TPA_END_PAYLOAD_OFF(rx_tpa_end_ext) \ 407*58165c99SBhargava Marreddy ((le32_to_cpu((rx_tpa_end_ext)->rx_tpa_end_cmp_dup_acks) & \ 408*58165c99SBhargava Marreddy RX_TPA_END_CMP_PAYLOAD_OFFSET) >> \ 409*58165c99SBhargava Marreddy RX_TPA_END_CMP_PAYLOAD_OFFSET_SHIFT) 410*58165c99SBhargava Marreddy 411*58165c99SBhargava Marreddy #define TPA_END_AGG_BUFS(rx_tpa_end_ext) \ 412*58165c99SBhargava Marreddy ((le32_to_cpu((rx_tpa_end_ext)->rx_tpa_end_cmp_dup_acks) & \ 413*58165c99SBhargava Marreddy RX_TPA_END_CMP_AGG_BUFS) >> RX_TPA_END_CMP_AGG_BUFS_SHIFT) 414*58165c99SBhargava Marreddy 415*58165c99SBhargava Marreddy #define EVENT_DATA1_RESET_NOTIFY_FATAL(data1) \ 416*58165c99SBhargava Marreddy (((data1) & \ 417*58165c99SBhargava Marreddy ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_REASON_CODE_MASK) ==\ 418*58165c99SBhargava Marreddy ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_REASON_CODE_FW_EXCEPTION_FATAL) 419*58165c99SBhargava Marreddy 420*58165c99SBhargava Marreddy #define EVENT_DATA1_RESET_NOTIFY_FW_ACTIVATION(data1) \ 421*58165c99SBhargava Marreddy (((data1) & \ 422*58165c99SBhargava Marreddy ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_REASON_CODE_MASK) ==\ 423*58165c99SBhargava Marreddy ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_REASON_CODE_FW_ACTIVATION) 424*58165c99SBhargava Marreddy 425*58165c99SBhargava Marreddy #define EVENT_DATA2_RESET_NOTIFY_FW_STATUS_CODE(data2) \ 426*58165c99SBhargava Marreddy ((data2) & \ 427*58165c99SBhargava Marreddy ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA2_FW_STATUS_CODE_MASK) 428*58165c99SBhargava Marreddy 429*58165c99SBhargava Marreddy #define EVENT_DATA1_RECOVERY_MASTER_FUNC(data1) \ 430*58165c99SBhargava Marreddy (!!((data1) & \ 431*58165c99SBhargava Marreddy ASYNC_EVENT_CMPL_ERROR_RECOVERY_EVENT_DATA1_FLAGS_MASTER_FUNC)) 432*58165c99SBhargava Marreddy 433*58165c99SBhargava Marreddy #define EVENT_DATA1_RECOVERY_ENABLED(data1) \ 434*58165c99SBhargava Marreddy (!!((data1) & \ 435*58165c99SBhargava Marreddy ASYNC_EVENT_CMPL_ERROR_RECOVERY_EVENT_DATA1_FLAGS_RECOVERY_ENABLED)) 436*58165c99SBhargava Marreddy 437*58165c99SBhargava Marreddy #define BNGE_EVENT_ERROR_REPORT_TYPE(data1) \ 438*58165c99SBhargava Marreddy (((data1) & \ 439*58165c99SBhargava Marreddy ASYNC_EVENT_CMPL_ERROR_REPORT_BASE_EVENT_DATA1_ERROR_TYPE_MASK) >>\ 440*58165c99SBhargava Marreddy ASYNC_EVENT_CMPL_ERROR_REPORT_BASE_EVENT_DATA1_ERROR_TYPE_SFT) 441*58165c99SBhargava Marreddy 442*58165c99SBhargava Marreddy #define BNGE_EVENT_INVALID_SIGNAL_DATA(data2) \ 443*58165c99SBhargava Marreddy (((data2) & \ 444*58165c99SBhargava Marreddy ASYNC_EVENT_CMPL_ERROR_REPORT_INVALID_SIGNAL_EVENT_DATA2_PIN_ID_MASK) >>\ 445*58165c99SBhargava Marreddy ASYNC_EVENT_CMPL_ERROR_REPORT_INVALID_SIGNAL_EVENT_DATA2_PIN_ID_SFT) 4464d6a6005SBhargava Marreddy #endif /* _BNGE_HW_DEF_H_ */ 447