1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* Copyright (c) 2025 Broadcom */ 3 4 #ifndef _BNGE_HW_DEF_H_ 5 #define _BNGE_HW_DEF_H_ 6 7 #define TX_BD_FLAGS_TCP_UDP_CHKSUM BIT(0) 8 #define TX_BD_FLAGS_IP_CKSUM BIT(1) 9 #define TX_BD_FLAGS_NO_CRC BIT(2) 10 #define TX_BD_FLAGS_STAMP BIT(3) 11 #define TX_BD_FLAGS_T_IP_CHKSUM BIT(4) 12 #define TX_BD_FLAGS_LSO BIT(5) 13 #define TX_BD_FLAGS_IPID_FMT BIT(6) 14 #define TX_BD_FLAGS_T_IPID BIT(7) 15 #define TX_BD_HSIZE GENMASK(23, 16) 16 #define TX_BD_HSIZE_SHIFT 16 17 18 #define TX_BD_CFA_ACTION GENMASK(31, 16) 19 #define TX_BD_CFA_ACTION_SHIFT 16 20 21 #define TX_BD_CFA_META_MASK 0xfffffff 22 #define TX_BD_CFA_META_VID_MASK 0xfff 23 #define TX_BD_CFA_META_PRI_MASK GENMASK(15, 12) 24 #define TX_BD_CFA_META_PRI_SHIFT 12 25 #define TX_BD_CFA_META_TPID_MASK GENMASK(17, 16) 26 #define TX_BD_CFA_META_TPID_SHIFT 16 27 #define TX_BD_CFA_META_KEY GENMASK(31, 28) 28 #define TX_BD_CFA_META_KEY_SHIFT 28 29 #define TX_BD_CFA_META_KEY_VLAN BIT(28) 30 31 struct tx_bd_ext { 32 __le32 tx_bd_hsize_lflags; 33 __le32 tx_bd_mss; 34 __le32 tx_bd_cfa_action; 35 __le32 tx_bd_cfa_meta; 36 }; 37 38 #define TX_CMP_SQ_CONS_IDX(txcmp) \ 39 (le32_to_cpu((txcmp)->sq_cons_idx) & TX_CMP_SQ_CONS_IDX_MASK) 40 41 #define RX_CMP_CMP_TYPE GENMASK(5, 0) 42 #define RX_CMP_FLAGS_ERROR BIT(6) 43 #define RX_CMP_FLAGS_PLACEMENT GENMASK(9, 7) 44 #define RX_CMP_FLAGS_RSS_VALID BIT(10) 45 #define RX_CMP_FLAGS_PKT_METADATA_PRESENT BIT(11) 46 #define RX_CMP_FLAGS_ITYPES_SHIFT 12 47 #define RX_CMP_FLAGS_ITYPES_MASK 0xf000 48 #define RX_CMP_FLAGS_ITYPE_UNKNOWN (0 << 12) 49 #define RX_CMP_FLAGS_ITYPE_IP (1 << 12) 50 #define RX_CMP_FLAGS_ITYPE_TCP (2 << 12) 51 #define RX_CMP_FLAGS_ITYPE_UDP (3 << 12) 52 #define RX_CMP_FLAGS_ITYPE_FCOE (4 << 12) 53 #define RX_CMP_FLAGS_ITYPE_ROCE (5 << 12) 54 #define RX_CMP_FLAGS_ITYPE_PTP_WO_TS (8 << 12) 55 #define RX_CMP_FLAGS_ITYPE_PTP_W_TS (9 << 12) 56 #define RX_CMP_LEN GENMASK(31, 16) 57 #define RX_CMP_LEN_SHIFT 16 58 59 #define RX_CMP_V1 BIT(0) 60 #define RX_CMP_AGG_BUFS GENMASK(5, 1) 61 #define RX_CMP_AGG_BUFS_SHIFT 1 62 #define RX_CMP_RSS_HASH_TYPE GENMASK(15, 9) 63 #define RX_CMP_RSS_HASH_TYPE_SHIFT 9 64 #define RX_CMP_V3_RSS_EXT_OP_LEGACY GENMASK(15, 12) 65 #define RX_CMP_V3_RSS_EXT_OP_LEGACY_SHIFT 12 66 #define RX_CMP_V3_RSS_EXT_OP_NEW GENMASK(11, 8) 67 #define RX_CMP_V3_RSS_EXT_OP_NEW_SHIFT 8 68 #define RX_CMP_PAYLOAD_OFFSET GENMASK(23, 16) 69 #define RX_CMP_PAYLOAD_OFFSET_SHIFT 16 70 #define RX_CMP_SUB_NS_TS GENMASK(19, 16) 71 #define RX_CMP_SUB_NS_TS_SHIFT 16 72 #define RX_CMP_METADATA1 GENMASK(31, 28) 73 #define RX_CMP_METADATA1_SHIFT 28 74 #define RX_CMP_METADATA1_TPID_SEL GENMASK(30, 28) 75 #define RX_CMP_METADATA1_TPID_8021Q BIT(28) 76 #define RX_CMP_METADATA1_TPID_8021AD (0x0 << 28) 77 #define RX_CMP_METADATA1_VALID BIT(31) 78 79 struct rx_cmp { 80 __le32 rx_cmp_len_flags_type; 81 u32 rx_cmp_opaque; 82 __le32 rx_cmp_misc_v1; 83 __le32 rx_cmp_rss_hash; 84 }; 85 86 #define RX_CMP_FLAGS2_IP_CS_CALC BIT(0) 87 #define RX_CMP_FLAGS2_L4_CS_CALC BIT(1) 88 #define RX_CMP_FLAGS2_T_IP_CS_CALC BIT(2) 89 #define RX_CMP_FLAGS2_T_L4_CS_CALC BIT(3) 90 #define RX_CMP_FLAGS2_META_FORMAT_VLAN BIT(4) 91 92 #define RX_CMP_FLAGS2_METADATA_TCI_MASK GENMASK(15, 0) 93 #define RX_CMP_FLAGS2_METADATA_VID_MASK GENMASK(11, 0) 94 #define RX_CMP_FLAGS2_METADATA_TPID_MASK GENMASK(31, 16) 95 #define RX_CMP_FLAGS2_METADATA_TPID_SFT 16 96 97 #define RX_CMP_V BIT(0) 98 #define RX_CMPL_ERRORS_MASK GENMASK(15, 1) 99 #define RX_CMPL_ERRORS_SFT 1 100 #define RX_CMPL_ERRORS_BUFFER_ERROR_MASK GENMASK(3, 1) 101 #define RX_CMPL_ERRORS_BUFFER_ERROR_NO_BUFFER (0x0 << 1) 102 #define RX_CMPL_ERRORS_BUFFER_ERROR_DID_NOT_FIT (0x1 << 1) 103 #define RX_CMPL_ERRORS_BUFFER_ERROR_NOT_ON_CHIP (0x2 << 1) 104 #define RX_CMPL_ERRORS_BUFFER_ERROR_BAD_FORMAT (0x3 << 1) 105 #define RX_CMPL_ERRORS_IP_CS_ERROR BIT(4) 106 #define RX_CMPL_ERRORS_L4_CS_ERROR BIT(5) 107 #define RX_CMPL_ERRORS_T_IP_CS_ERROR BIT(6) 108 #define RX_CMPL_ERRORS_T_L4_CS_ERROR BIT(7) 109 #define RX_CMPL_ERRORS_CRC_ERROR BIT(8) 110 #define RX_CMPL_ERRORS_T_PKT_ERROR_MASK GENMASK(11, 9) 111 #define RX_CMPL_ERRORS_T_PKT_ERROR_NO_ERROR (0x0 << 9) 112 #define RX_CMPL_ERRORS_T_PKT_ERROR_T_L3_BAD_VERSION (0x1 << 9) 113 #define RX_CMPL_ERRORS_T_PKT_ERROR_T_L3_BAD_HDR_LEN (0x2 << 9) 114 #define RX_CMPL_ERRORS_T_PKT_ERROR_TUNNEL_TOTAL_ERROR (0x3 << 9) 115 #define RX_CMPL_ERRORS_T_PKT_ERROR_T_IP_TOTAL_ERROR (0x4 << 9) 116 #define RX_CMPL_ERRORS_T_PKT_ERROR_T_UDP_TOTAL_ERROR (0x5 << 9) 117 #define RX_CMPL_ERRORS_T_PKT_ERROR_T_L3_BAD_TTL (0x6 << 9) 118 #define RX_CMPL_ERRORS_PKT_ERROR_MASK GENMASK(15, 12) 119 #define RX_CMPL_ERRORS_PKT_ERROR_NO_ERROR (0x0 << 12) 120 #define RX_CMPL_ERRORS_PKT_ERROR_L3_BAD_VERSION (0x1 << 12) 121 #define RX_CMPL_ERRORS_PKT_ERROR_L3_BAD_HDR_LEN (0x2 << 12) 122 #define RX_CMPL_ERRORS_PKT_ERROR_L3_BAD_TTL (0x3 << 12) 123 #define RX_CMPL_ERRORS_PKT_ERROR_IP_TOTAL_ERROR (0x4 << 12) 124 #define RX_CMPL_ERRORS_PKT_ERROR_UDP_TOTAL_ERROR (0x5 << 12) 125 #define RX_CMPL_ERRORS_PKT_ERROR_L4_BAD_HDR_LEN (0x6 << 12) 126 #define RX_CMPL_ERRORS_PKT_ERROR_L4_BAD_HDR_LEN_TOO_SMALL (0x7 << 12) 127 #define RX_CMPL_ERRORS_PKT_ERROR_L4_BAD_OPT_LEN (0x8 << 12) 128 129 #define RX_CMPL_CFA_CODE_MASK GENMASK(31, 16) 130 #define RX_CMPL_CFA_CODE_SFT 16 131 #define RX_CMPL_METADATA0_TCI_MASK GENMASK(31, 16) 132 #define RX_CMPL_METADATA0_VID_MASK GENMASK(27, 16) 133 #define RX_CMPL_METADATA0_SFT 16 134 135 struct rx_cmp_ext { 136 __le32 rx_cmp_flags2; 137 __le32 rx_cmp_meta_data; 138 __le32 rx_cmp_cfa_code_errors_v2; 139 __le32 rx_cmp_timestamp; 140 }; 141 142 #define RX_AGG_CMP_TYPE GENMASK(5, 0) 143 #define RX_AGG_CMP_LEN GENMASK(31, 16) 144 #define RX_AGG_CMP_LEN_SHIFT 16 145 #define RX_AGG_CMP_V BIT(0) 146 #define RX_AGG_CMP_AGG_ID GENMASK(25, 16) 147 #define RX_AGG_CMP_AGG_ID_SHIFT 16 148 149 struct rx_agg_cmp { 150 __le32 rx_agg_cmp_len_flags_type; 151 u32 rx_agg_cmp_opaque; 152 __le32 rx_agg_cmp_v; 153 __le32 rx_agg_cmp_unused; 154 }; 155 156 #define RX_CMP_L2_ERRORS \ 157 cpu_to_le32(RX_CMPL_ERRORS_BUFFER_ERROR_MASK | RX_CMPL_ERRORS_CRC_ERROR) 158 159 #define RX_CMP_L4_CS_BITS \ 160 (cpu_to_le32(RX_CMP_FLAGS2_L4_CS_CALC | RX_CMP_FLAGS2_T_L4_CS_CALC)) 161 162 #define RX_CMP_L4_CS_ERR_BITS \ 163 (cpu_to_le32(RX_CMPL_ERRORS_L4_CS_ERROR | RX_CMPL_ERRORS_T_L4_CS_ERROR)) 164 165 #define RX_CMP_L4_CS_OK(rxcmp1) \ 166 (((rxcmp1)->rx_cmp_flags2 & RX_CMP_L4_CS_BITS) && \ 167 !((rxcmp1)->rx_cmp_cfa_code_errors_v2 & RX_CMP_L4_CS_ERR_BITS)) 168 169 #define RX_CMP_METADATA0_TCI(rxcmp1) \ 170 ((le32_to_cpu((rxcmp1)->rx_cmp_cfa_code_errors_v2) & \ 171 RX_CMPL_METADATA0_TCI_MASK) >> RX_CMPL_METADATA0_SFT) 172 173 #define RX_CMP_ENCAP(rxcmp1) \ 174 ((le32_to_cpu((rxcmp1)->rx_cmp_flags2) & \ 175 RX_CMP_FLAGS2_T_L4_CS_CALC) >> 3) 176 177 #define RX_CMP_V3_HASH_TYPE_LEGACY(rxcmp) \ 178 ((le32_to_cpu((rxcmp)->rx_cmp_misc_v1) & \ 179 RX_CMP_V3_RSS_EXT_OP_LEGACY) >> RX_CMP_V3_RSS_EXT_OP_LEGACY_SHIFT) 180 181 #define RX_CMP_V3_HASH_TYPE_NEW(rxcmp) \ 182 ((le32_to_cpu((rxcmp)->rx_cmp_misc_v1) & RX_CMP_V3_RSS_EXT_OP_NEW) >>\ 183 RX_CMP_V3_RSS_EXT_OP_NEW_SHIFT) 184 185 #define RX_CMP_V3_HASH_TYPE(bd, rxcmp) \ 186 (((bd)->rss_cap & BNGE_RSS_CAP_RSS_TCAM) ? \ 187 RX_CMP_V3_HASH_TYPE_NEW(rxcmp) : \ 188 RX_CMP_V3_HASH_TYPE_LEGACY(rxcmp)) 189 190 #define EXT_OP_INNER_4 0x0 191 #define EXT_OP_OUTER_4 0x2 192 #define EXT_OP_INNFL_3 0x8 193 #define EXT_OP_OUTFL_3 0xa 194 195 #define RX_CMP_VLAN_VALID(rxcmp) \ 196 ((rxcmp)->rx_cmp_misc_v1 & cpu_to_le32(RX_CMP_METADATA1_VALID)) 197 198 #define RX_CMP_VLAN_TPID_SEL(rxcmp) \ 199 (le32_to_cpu((rxcmp)->rx_cmp_misc_v1) & RX_CMP_METADATA1_TPID_SEL) 200 201 #define RSS_PROFILE_ID_MASK GENMASK(4, 0) 202 203 #define RX_CMP_HASH_TYPE(rxcmp) \ 204 (((le32_to_cpu((rxcmp)->rx_cmp_misc_v1) & RX_CMP_RSS_HASH_TYPE) >>\ 205 RX_CMP_RSS_HASH_TYPE_SHIFT) & RSS_PROFILE_ID_MASK) 206 207 #define RX_CMP_HASH_VALID(rxcmp) \ 208 ((rxcmp)->rx_cmp_len_flags_type & cpu_to_le32(RX_CMP_FLAGS_RSS_VALID)) 209 210 #define TPA_AGG_AGG_ID(rx_agg) \ 211 ((le32_to_cpu((rx_agg)->rx_agg_cmp_v) & \ 212 RX_AGG_CMP_AGG_ID) >> RX_AGG_CMP_AGG_ID_SHIFT) 213 214 #define RX_TPA_START_CMP_TYPE GENMASK(5, 0) 215 #define RX_TPA_START_CMP_FLAGS GENMASK(15, 6) 216 #define RX_TPA_START_CMP_FLAGS_SHIFT 6 217 #define RX_TPA_START_CMP_FLAGS_ERROR BIT(6) 218 #define RX_TPA_START_CMP_FLAGS_PLACEMENT GENMASK(9, 7) 219 #define RX_TPA_START_CMP_FLAGS_PLACEMENT_SHIFT 7 220 #define RX_TPA_START_CMP_FLAGS_PLACEMENT_JUMBO BIT(7) 221 #define RX_TPA_START_CMP_FLAGS_PLACEMENT_HDS (0x2 << 7) 222 #define RX_TPA_START_CMP_FLAGS_PLACEMENT_GRO_JUMBO (0x5 << 7) 223 #define RX_TPA_START_CMP_FLAGS_PLACEMENT_GRO_HDS (0x6 << 7) 224 #define RX_TPA_START_CMP_FLAGS_RSS_VALID BIT(10) 225 #define RX_TPA_START_CMP_FLAGS_TIMESTAMP BIT(11) 226 #define RX_TPA_START_CMP_FLAGS_ITYPES GENMASK(15, 12) 227 #define RX_TPA_START_CMP_FLAGS_ITYPES_SHIFT 12 228 #define RX_TPA_START_CMP_FLAGS_ITYPE_TCP (0x2 << 12) 229 #define RX_TPA_START_CMP_LEN GENMASK(31, 16) 230 #define RX_TPA_START_CMP_LEN_SHIFT 16 231 #define RX_TPA_START_CMP_V1 BIT(0) 232 #define RX_TPA_START_CMP_RSS_HASH_TYPE GENMASK(15, 9) 233 #define RX_TPA_START_CMP_RSS_HASH_TYPE_SHIFT 9 234 #define RX_TPA_START_CMP_V3_RSS_HASH_TYPE GENMASK(15, 7) 235 #define RX_TPA_START_CMP_V3_RSS_HASH_TYPE_SHIFT 7 236 #define RX_TPA_START_CMP_AGG_ID GENMASK(25, 16) 237 #define RX_TPA_START_CMP_AGG_ID_SHIFT 16 238 #define RX_TPA_START_CMP_METADATA1 GENMASK(31, 28) 239 #define RX_TPA_START_CMP_METADATA1_SHIFT 28 240 #define RX_TPA_START_METADATA1_TPID_SEL GENMASK(30, 28) 241 #define RX_TPA_START_METADATA1_TPID_8021Q BIT(28) 242 #define RX_TPA_START_METADATA1_TPID_8021AD (0x0 << 28) 243 #define RX_TPA_START_METADATA1_VALID BIT(31) 244 245 struct rx_tpa_start_cmp { 246 __le32 rx_tpa_start_cmp_len_flags_type; 247 u32 rx_tpa_start_cmp_opaque; 248 __le32 rx_tpa_start_cmp_misc_v1; 249 __le32 rx_tpa_start_cmp_rss_hash; 250 }; 251 252 #define TPA_START_HASH_VALID(rx_tpa_start) \ 253 ((rx_tpa_start)->rx_tpa_start_cmp_len_flags_type & \ 254 cpu_to_le32(RX_TPA_START_CMP_FLAGS_RSS_VALID)) 255 256 #define TPA_START_HASH_TYPE(rx_tpa_start) \ 257 (((le32_to_cpu((rx_tpa_start)->rx_tpa_start_cmp_misc_v1) & \ 258 RX_TPA_START_CMP_RSS_HASH_TYPE) >> \ 259 RX_TPA_START_CMP_RSS_HASH_TYPE_SHIFT) & RSS_PROFILE_ID_MASK) 260 261 #define TPA_START_V3_HASH_TYPE(rx_tpa_start) \ 262 (((le32_to_cpu((rx_tpa_start)->rx_tpa_start_cmp_misc_v1) & \ 263 RX_TPA_START_CMP_V3_RSS_HASH_TYPE) >> \ 264 RX_TPA_START_CMP_V3_RSS_HASH_TYPE_SHIFT) & RSS_PROFILE_ID_MASK) 265 266 #define TPA_START_AGG_ID(rx_tpa_start) \ 267 ((le32_to_cpu((rx_tpa_start)->rx_tpa_start_cmp_misc_v1) & \ 268 RX_TPA_START_CMP_AGG_ID) >> RX_TPA_START_CMP_AGG_ID_SHIFT) 269 270 #define TPA_START_ERROR(rx_tpa_start) \ 271 ((rx_tpa_start)->rx_tpa_start_cmp_len_flags_type & \ 272 cpu_to_le32(RX_TPA_START_CMP_FLAGS_ERROR)) 273 274 #define TPA_START_VLAN_VALID(rx_tpa_start) \ 275 ((rx_tpa_start)->rx_tpa_start_cmp_misc_v1 & \ 276 cpu_to_le32(RX_TPA_START_METADATA1_VALID)) 277 278 #define TPA_START_VLAN_TPID_SEL(rx_tpa_start) \ 279 (le32_to_cpu((rx_tpa_start)->rx_tpa_start_cmp_misc_v1) & \ 280 RX_TPA_START_METADATA1_TPID_SEL) 281 282 #define RX_TPA_START_CMP_FLAGS2_IP_CS_CALC BIT(0) 283 #define RX_TPA_START_CMP_FLAGS2_L4_CS_CALC BIT(1) 284 #define RX_TPA_START_CMP_FLAGS2_T_IP_CS_CALC BIT(2) 285 #define RX_TPA_START_CMP_FLAGS2_T_L4_CS_CALC BIT(3) 286 #define RX_TPA_START_CMP_FLAGS2_IP_TYPE BIT(8) 287 #define RX_TPA_START_CMP_FLAGS2_CSUM_CMPL_VALID BIT(9) 288 #define RX_TPA_START_CMP_FLAGS2_EXT_META_FORMAT GENMASK(11, 10) 289 #define RX_TPA_START_CMP_FLAGS2_EXT_META_FORMAT_SHIFT 10 290 #define RX_TPA_START_CMP_V3_FLAGS2_T_IP_TYPE BIT(10) 291 #define RX_TPA_START_CMP_V3_FLAGS2_AGG_GRO BIT(11) 292 #define RX_TPA_START_CMP_FLAGS2_CSUM_CMPL GENMASK(31, 16) 293 #define RX_TPA_START_CMP_FLAGS2_CSUM_CMPL_SHIFT 16 294 #define RX_TPA_START_CMP_V2 BIT(0) 295 #define RX_TPA_START_CMP_ERRORS_BUFFER_ERROR_MASK GENMASK(3, 1) 296 #define RX_TPA_START_CMP_ERRORS_BUFFER_ERROR_SHIFT 1 297 #define RX_TPA_START_CMP_ERRORS_BUFFER_ERROR_NO_BUFFER (0x0 << 1) 298 #define RX_TPA_START_CMP_ERRORS_BUFFER_ERROR_BAD_FORMAT (0x3 << 1) 299 #define RX_TPA_START_CMP_ERRORS_BUFFER_ERROR_FLUSH (0x5 << 1) 300 #define RX_TPA_START_CMP_CFA_CODE GENMASK(31, 16) 301 #define RX_TPA_START_CMPL_CFA_CODE_SHIFT 16 302 #define RX_TPA_START_CMP_METADATA0_TCI_MASK GENMASK(31, 16) 303 #define RX_TPA_START_CMP_METADATA0_VID_MASK GENMASK(27, 16) 304 #define RX_TPA_START_CMP_METADATA0_SFT 16 305 306 struct rx_tpa_start_cmp_ext { 307 __le32 rx_tpa_start_cmp_flags2; 308 __le32 rx_tpa_start_cmp_metadata; 309 __le32 rx_tpa_start_cmp_cfa_code_v2; 310 __le32 rx_tpa_start_cmp_hdr_info; 311 }; 312 313 #define TPA_START_CFA_CODE(rx_tpa_start) \ 314 ((le32_to_cpu((rx_tpa_start)->rx_tpa_start_cmp_cfa_code_v2) & \ 315 RX_TPA_START_CMP_CFA_CODE) >> RX_TPA_START_CMPL_CFA_CODE_SHIFT) 316 317 #define TPA_START_IS_IPV6(rx_tpa_start) \ 318 (!!((rx_tpa_start)->rx_tpa_start_cmp_flags2 & \ 319 cpu_to_le32(RX_TPA_START_CMP_FLAGS2_IP_TYPE))) 320 321 #define TPA_START_ERROR_CODE(rx_tpa_start) \ 322 ((le32_to_cpu((rx_tpa_start)->rx_tpa_start_cmp_cfa_code_v2) & \ 323 RX_TPA_START_CMP_ERRORS_BUFFER_ERROR_MASK) >> \ 324 RX_TPA_START_CMP_ERRORS_BUFFER_ERROR_SHIFT) 325 326 #define TPA_START_METADATA0_TCI(rx_tpa_start) \ 327 ((le32_to_cpu((rx_tpa_start)->rx_tpa_start_cmp_cfa_code_v2) & \ 328 RX_TPA_START_CMP_METADATA0_TCI_MASK) >> \ 329 RX_TPA_START_CMP_METADATA0_SFT) 330 331 #define RX_TPA_END_CMP_TYPE GENMASK(5, 0) 332 #define RX_TPA_END_CMP_FLAGS GENMASK(15, 6) 333 #define RX_TPA_END_CMP_FLAGS_SHIFT 6 334 #define RX_TPA_END_CMP_FLAGS_PLACEMENT GENMASK(9, 7) 335 #define RX_TPA_END_CMP_FLAGS_PLACEMENT_SHIFT 7 336 #define RX_TPA_END_CMP_FLAGS_PLACEMENT_JUMBO BIT(7) 337 #define RX_TPA_END_CMP_FLAGS_PLACEMENT_HDS (0x2 << 7) 338 #define RX_TPA_END_CMP_FLAGS_PLACEMENT_GRO_JUMBO (0x5 << 7) 339 #define RX_TPA_END_CMP_FLAGS_PLACEMENT_GRO_HDS (0x6 << 7) 340 #define RX_TPA_END_CMP_FLAGS_RSS_VALID BIT(10) 341 #define RX_TPA_END_CMP_FLAGS_ITYPES GENMASK(15, 12) 342 #define RX_TPA_END_CMP_FLAGS_ITYPES_SHIFT 12 343 #define RX_TPA_END_CMP_FLAGS_ITYPE_TCP (0x2 << 12) 344 #define RX_TPA_END_CMP_LEN GENMASK(31, 16) 345 #define RX_TPA_END_CMP_LEN_SHIFT 16 346 #define RX_TPA_END_CMP_V1 BIT(0) 347 #define RX_TPA_END_CMP_TPA_SEGS GENMASK(15, 8) 348 #define RX_TPA_END_CMP_TPA_SEGS_SHIFT 8 349 #define RX_TPA_END_CMP_AGG_ID GENMASK(25, 16) 350 #define RX_TPA_END_CMP_AGG_ID_SHIFT 16 351 #define RX_TPA_END_GRO_TS BIT(31) 352 353 struct rx_tpa_end_cmp { 354 __le32 rx_tpa_end_cmp_len_flags_type; 355 u32 rx_tpa_end_cmp_opaque; 356 __le32 rx_tpa_end_cmp_misc_v1; 357 __le32 rx_tpa_end_cmp_tsdelta; 358 }; 359 360 #define TPA_END_AGG_ID(rx_tpa_end) \ 361 ((le32_to_cpu((rx_tpa_end)->rx_tpa_end_cmp_misc_v1) & \ 362 RX_TPA_END_CMP_AGG_ID) >> RX_TPA_END_CMP_AGG_ID_SHIFT) 363 364 #define TPA_END_TPA_SEGS(rx_tpa_end) \ 365 ((le32_to_cpu((rx_tpa_end)->rx_tpa_end_cmp_misc_v1) & \ 366 RX_TPA_END_CMP_TPA_SEGS) >> RX_TPA_END_CMP_TPA_SEGS_SHIFT) 367 368 #define RX_TPA_END_CMP_FLAGS_PLACEMENT_ANY_GRO \ 369 cpu_to_le32(RX_TPA_END_CMP_FLAGS_PLACEMENT_GRO_JUMBO & \ 370 RX_TPA_END_CMP_FLAGS_PLACEMENT_GRO_HDS) 371 372 #define TPA_END_GRO(rx_tpa_end) \ 373 ((rx_tpa_end)->rx_tpa_end_cmp_len_flags_type & \ 374 RX_TPA_END_CMP_FLAGS_PLACEMENT_ANY_GRO) 375 376 #define TPA_END_GRO_TS(rx_tpa_end) \ 377 (!!((rx_tpa_end)->rx_tpa_end_cmp_tsdelta & \ 378 cpu_to_le32(RX_TPA_END_GRO_TS))) 379 380 #define RX_TPA_END_CMP_TPA_DUP_ACKS GENMASK(3, 0) 381 #define RX_TPA_END_CMP_PAYLOAD_OFFSET GENMASK(23, 16) 382 #define RX_TPA_END_CMP_PAYLOAD_OFFSET_SHIFT 16 383 #define RX_TPA_END_CMP_AGG_BUFS GENMASK(31, 24) 384 #define RX_TPA_END_CMP_AGG_BUFS_SHIFT 24 385 #define RX_TPA_END_CMP_TPA_SEG_LEN GENMASK(15, 0) 386 #define RX_TPA_END_CMP_V2 BIT(0) 387 #define RX_TPA_END_CMP_ERRORS GENMASK(2, 1) 388 #define RX_TPA_END_CMPL_ERRORS_SHIFT 1 389 #define RX_TPA_END_CMP_ERRORS_BUFFER_ERROR_NO_BUFFER (0x0 << 1) 390 #define RX_TPA_END_CMP_ERRORS_BUFFER_ERROR_NOT_ON_CHIP (0x2 << 1) 391 #define RX_TPA_END_CMP_ERRORS_BUFFER_ERROR_BAD_FORMAT (0x3 << 1) 392 #define RX_TPA_END_CMP_ERRORS_BUFFER_ERROR_RSV_ERROR (0x4 << 1) 393 #define RX_TPA_END_CMP_ERRORS_BUFFER_ERROR_FLUSH (0x5 << 1) 394 395 struct rx_tpa_end_cmp_ext { 396 __le32 rx_tpa_end_cmp_dup_acks; 397 __le32 rx_tpa_end_cmp_seg_len; 398 __le32 rx_tpa_end_cmp_errors_v2; 399 u32 rx_tpa_end_cmp_start_opaque; 400 }; 401 402 #define TPA_END_ERRORS(rx_tpa_end_ext) \ 403 ((rx_tpa_end_ext)->rx_tpa_end_cmp_errors_v2 & \ 404 cpu_to_le32(RX_TPA_END_CMP_ERRORS)) 405 406 #define TPA_END_PAYLOAD_OFF(rx_tpa_end_ext) \ 407 ((le32_to_cpu((rx_tpa_end_ext)->rx_tpa_end_cmp_dup_acks) & \ 408 RX_TPA_END_CMP_PAYLOAD_OFFSET) >> \ 409 RX_TPA_END_CMP_PAYLOAD_OFFSET_SHIFT) 410 411 #define TPA_END_AGG_BUFS(rx_tpa_end_ext) \ 412 ((le32_to_cpu((rx_tpa_end_ext)->rx_tpa_end_cmp_dup_acks) & \ 413 RX_TPA_END_CMP_AGG_BUFS) >> RX_TPA_END_CMP_AGG_BUFS_SHIFT) 414 415 #define EVENT_DATA1_RESET_NOTIFY_FATAL(data1) \ 416 (((data1) & \ 417 ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_REASON_CODE_MASK) ==\ 418 ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_REASON_CODE_FW_EXCEPTION_FATAL) 419 420 #define EVENT_DATA1_RESET_NOTIFY_FW_ACTIVATION(data1) \ 421 (((data1) & \ 422 ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_REASON_CODE_MASK) ==\ 423 ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_REASON_CODE_FW_ACTIVATION) 424 425 #define EVENT_DATA2_RESET_NOTIFY_FW_STATUS_CODE(data2) \ 426 ((data2) & \ 427 ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA2_FW_STATUS_CODE_MASK) 428 429 #define EVENT_DATA1_RECOVERY_MASTER_FUNC(data1) \ 430 (!!((data1) & \ 431 ASYNC_EVENT_CMPL_ERROR_RECOVERY_EVENT_DATA1_FLAGS_MASTER_FUNC)) 432 433 #define EVENT_DATA1_RECOVERY_ENABLED(data1) \ 434 (!!((data1) & \ 435 ASYNC_EVENT_CMPL_ERROR_RECOVERY_EVENT_DATA1_FLAGS_RECOVERY_ENABLED)) 436 437 #define BNGE_EVENT_ERROR_REPORT_TYPE(data1) \ 438 (((data1) & \ 439 ASYNC_EVENT_CMPL_ERROR_REPORT_BASE_EVENT_DATA1_ERROR_TYPE_MASK) >>\ 440 ASYNC_EVENT_CMPL_ERROR_REPORT_BASE_EVENT_DATA1_ERROR_TYPE_SFT) 441 442 #define BNGE_EVENT_INVALID_SIGNAL_DATA(data2) \ 443 (((data2) & \ 444 ASYNC_EVENT_CMPL_ERROR_REPORT_INVALID_SIGNAL_EVENT_DATA2_PIN_ID_MASK) >>\ 445 ASYNC_EVENT_CMPL_ERROR_REPORT_INVALID_SIGNAL_EVENT_DATA2_PIN_ID_SFT) 446 #endif /* _BNGE_HW_DEF_H_ */ 447