1*2246cbc2SShay Agroskin /* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */ 21738cd3eSNetanel Belgazal /* 3*2246cbc2SShay Agroskin * Copyright 2015-2020 Amazon.com, Inc. or its affiliates. All rights reserved. 41738cd3eSNetanel Belgazal */ 51738cd3eSNetanel Belgazal #ifndef _ENA_ETH_IO_H_ 61738cd3eSNetanel Belgazal #define _ENA_ETH_IO_H_ 71738cd3eSNetanel Belgazal 81738cd3eSNetanel Belgazal enum ena_eth_io_l3_proto_index { 91738cd3eSNetanel Belgazal ENA_ETH_IO_L3_PROTO_UNKNOWN = 0, 101738cd3eSNetanel Belgazal ENA_ETH_IO_L3_PROTO_IPV4 = 8, 111738cd3eSNetanel Belgazal ENA_ETH_IO_L3_PROTO_IPV6 = 11, 121738cd3eSNetanel Belgazal ENA_ETH_IO_L3_PROTO_FCOE = 21, 131738cd3eSNetanel Belgazal ENA_ETH_IO_L3_PROTO_ROCE = 22, 141738cd3eSNetanel Belgazal }; 151738cd3eSNetanel Belgazal 161738cd3eSNetanel Belgazal enum ena_eth_io_l4_proto_index { 171738cd3eSNetanel Belgazal ENA_ETH_IO_L4_PROTO_UNKNOWN = 0, 181738cd3eSNetanel Belgazal ENA_ETH_IO_L4_PROTO_TCP = 12, 191738cd3eSNetanel Belgazal ENA_ETH_IO_L4_PROTO_UDP = 13, 201738cd3eSNetanel Belgazal ENA_ETH_IO_L4_PROTO_ROUTEABLE_ROCE = 23, 211738cd3eSNetanel Belgazal }; 221738cd3eSNetanel Belgazal 231738cd3eSNetanel Belgazal struct ena_eth_io_tx_desc { 241738cd3eSNetanel Belgazal /* 15:0 : length - Buffer length in bytes, must 251738cd3eSNetanel Belgazal * include any packet trailers that the ENA supposed 261738cd3eSNetanel Belgazal * to update like End-to-End CRC, Authentication GMAC 271738cd3eSNetanel Belgazal * etc. This length must not include the 281738cd3eSNetanel Belgazal * 'Push_Buffer' length. This length must not include 291738cd3eSNetanel Belgazal * the 4-byte added in the end for 802.3 Ethernet FCS 301738cd3eSNetanel Belgazal * 21:16 : req_id_hi - Request ID[15:10] 311738cd3eSNetanel Belgazal * 22 : reserved22 - MBZ 321738cd3eSNetanel Belgazal * 23 : meta_desc - MBZ 331738cd3eSNetanel Belgazal * 24 : phase 341738cd3eSNetanel Belgazal * 25 : reserved1 - MBZ 351738cd3eSNetanel Belgazal * 26 : first - Indicates first descriptor in 361738cd3eSNetanel Belgazal * transaction 371738cd3eSNetanel Belgazal * 27 : last - Indicates last descriptor in 381738cd3eSNetanel Belgazal * transaction 391738cd3eSNetanel Belgazal * 28 : comp_req - Indicates whether completion 401738cd3eSNetanel Belgazal * should be posted, after packet is transmitted. 411738cd3eSNetanel Belgazal * Valid only for first descriptor 421738cd3eSNetanel Belgazal * 30:29 : reserved29 - MBZ 431738cd3eSNetanel Belgazal * 31 : reserved31 - MBZ 441738cd3eSNetanel Belgazal */ 451738cd3eSNetanel Belgazal u32 len_ctrl; 461738cd3eSNetanel Belgazal 471738cd3eSNetanel Belgazal /* 3:0 : l3_proto_idx - L3 protocol. This field 481738cd3eSNetanel Belgazal * required when l3_csum_en,l3_csum or tso_en are set. 491738cd3eSNetanel Belgazal * 4 : DF - IPv4 DF, must be 0 if packet is IPv4 and 501738cd3eSNetanel Belgazal * DF flags of the IPv4 header is 0. Otherwise must 511738cd3eSNetanel Belgazal * be set to 1 521738cd3eSNetanel Belgazal * 6:5 : reserved5 531738cd3eSNetanel Belgazal * 7 : tso_en - Enable TSO, For TCP only. 541738cd3eSNetanel Belgazal * 12:8 : l4_proto_idx - L4 protocol. This field need 551738cd3eSNetanel Belgazal * to be set when l4_csum_en or tso_en are set. 561738cd3eSNetanel Belgazal * 13 : l3_csum_en - enable IPv4 header checksum. 571738cd3eSNetanel Belgazal * 14 : l4_csum_en - enable TCP/UDP checksum. 581738cd3eSNetanel Belgazal * 15 : ethernet_fcs_dis - when set, the controller 591738cd3eSNetanel Belgazal * will not append the 802.3 Ethernet Frame Check 601738cd3eSNetanel Belgazal * Sequence to the packet 611738cd3eSNetanel Belgazal * 16 : reserved16 621738cd3eSNetanel Belgazal * 17 : l4_csum_partial - L4 partial checksum. when 631738cd3eSNetanel Belgazal * set to 0, the ENA calculates the L4 checksum, 641738cd3eSNetanel Belgazal * where the Destination Address required for the 651738cd3eSNetanel Belgazal * TCP/UDP pseudo-header is taken from the actual 661738cd3eSNetanel Belgazal * packet L3 header. when set to 1, the ENA doesn't 671738cd3eSNetanel Belgazal * calculate the sum of the pseudo-header, instead, 681738cd3eSNetanel Belgazal * the checksum field of the L4 is used instead. When 691738cd3eSNetanel Belgazal * TSO enabled, the checksum of the pseudo-header 701738cd3eSNetanel Belgazal * must not include the tcp length field. L4 partial 711738cd3eSNetanel Belgazal * checksum should be used for IPv6 packet that 721738cd3eSNetanel Belgazal * contains Routing Headers. 731738cd3eSNetanel Belgazal * 20:18 : reserved18 - MBZ 741738cd3eSNetanel Belgazal * 21 : reserved21 - MBZ 751738cd3eSNetanel Belgazal * 31:22 : req_id_lo - Request ID[9:0] 761738cd3eSNetanel Belgazal */ 771738cd3eSNetanel Belgazal u32 meta_ctrl; 781738cd3eSNetanel Belgazal 791738cd3eSNetanel Belgazal u32 buff_addr_lo; 801738cd3eSNetanel Belgazal 811738cd3eSNetanel Belgazal /* address high and header size 821738cd3eSNetanel Belgazal * 15:0 : addr_hi - Buffer Pointer[47:32] 831738cd3eSNetanel Belgazal * 23:16 : reserved16_w2 841738cd3eSNetanel Belgazal * 31:24 : header_length - Header length. For Low 851738cd3eSNetanel Belgazal * Latency Queues, this fields indicates the number 861738cd3eSNetanel Belgazal * of bytes written to the headers' memory. For 871738cd3eSNetanel Belgazal * normal queues, if packet is TCP or UDP, and longer 881738cd3eSNetanel Belgazal * than max_header_size, then this field should be 891738cd3eSNetanel Belgazal * set to the sum of L4 header offset and L4 header 901738cd3eSNetanel Belgazal * size(without options), otherwise, this field 911738cd3eSNetanel Belgazal * should be set to 0. For both modes, this field 921738cd3eSNetanel Belgazal * must not exceed the max_header_size. 931738cd3eSNetanel Belgazal * max_header_size value is reported by the Max 941738cd3eSNetanel Belgazal * Queues Feature descriptor 951738cd3eSNetanel Belgazal */ 961738cd3eSNetanel Belgazal u32 buff_addr_hi_hdr_sz; 971738cd3eSNetanel Belgazal }; 981738cd3eSNetanel Belgazal 991738cd3eSNetanel Belgazal struct ena_eth_io_tx_meta_desc { 1001738cd3eSNetanel Belgazal /* 9:0 : req_id_lo - Request ID[9:0] 1011738cd3eSNetanel Belgazal * 11:10 : reserved10 - MBZ 1021738cd3eSNetanel Belgazal * 12 : reserved12 - MBZ 1031738cd3eSNetanel Belgazal * 13 : reserved13 - MBZ 1041738cd3eSNetanel Belgazal * 14 : ext_valid - if set, offset fields in Word2 1051738cd3eSNetanel Belgazal * are valid Also MSS High in Word 0 and bits [31:24] 1061738cd3eSNetanel Belgazal * in Word 3 1071738cd3eSNetanel Belgazal * 15 : reserved15 1081738cd3eSNetanel Belgazal * 19:16 : mss_hi 1091738cd3eSNetanel Belgazal * 20 : eth_meta_type - 0: Tx Metadata Descriptor, 1: 1101738cd3eSNetanel Belgazal * Extended Metadata Descriptor 1111738cd3eSNetanel Belgazal * 21 : meta_store - Store extended metadata in queue 1121738cd3eSNetanel Belgazal * cache 1131738cd3eSNetanel Belgazal * 22 : reserved22 - MBZ 1141738cd3eSNetanel Belgazal * 23 : meta_desc - MBO 1151738cd3eSNetanel Belgazal * 24 : phase 1161738cd3eSNetanel Belgazal * 25 : reserved25 - MBZ 1171738cd3eSNetanel Belgazal * 26 : first - Indicates first descriptor in 1181738cd3eSNetanel Belgazal * transaction 1191738cd3eSNetanel Belgazal * 27 : last - Indicates last descriptor in 1201738cd3eSNetanel Belgazal * transaction 1211738cd3eSNetanel Belgazal * 28 : comp_req - Indicates whether completion 1221738cd3eSNetanel Belgazal * should be posted, after packet is transmitted. 1231738cd3eSNetanel Belgazal * Valid only for first descriptor 1241738cd3eSNetanel Belgazal * 30:29 : reserved29 - MBZ 1251738cd3eSNetanel Belgazal * 31 : reserved31 - MBZ 1261738cd3eSNetanel Belgazal */ 1271738cd3eSNetanel Belgazal u32 len_ctrl; 1281738cd3eSNetanel Belgazal 1291738cd3eSNetanel Belgazal /* 5:0 : req_id_hi 1301738cd3eSNetanel Belgazal * 31:6 : reserved6 - MBZ 1311738cd3eSNetanel Belgazal */ 1321738cd3eSNetanel Belgazal u32 word1; 1331738cd3eSNetanel Belgazal 1341738cd3eSNetanel Belgazal /* 7:0 : l3_hdr_len 1351738cd3eSNetanel Belgazal * 15:8 : l3_hdr_off 1361738cd3eSNetanel Belgazal * 21:16 : l4_hdr_len_in_words - counts the L4 header 1371738cd3eSNetanel Belgazal * length in words. there is an explicit assumption 1381738cd3eSNetanel Belgazal * that L4 header appears right after L3 header and 1391738cd3eSNetanel Belgazal * L4 offset is based on l3_hdr_off+l3_hdr_len 1401738cd3eSNetanel Belgazal * 31:22 : mss_lo 1411738cd3eSNetanel Belgazal */ 1421738cd3eSNetanel Belgazal u32 word2; 1431738cd3eSNetanel Belgazal 1441738cd3eSNetanel Belgazal u32 reserved; 1451738cd3eSNetanel Belgazal }; 1461738cd3eSNetanel Belgazal 1471738cd3eSNetanel Belgazal struct ena_eth_io_tx_cdesc { 1481738cd3eSNetanel Belgazal /* Request ID[15:0] */ 1491738cd3eSNetanel Belgazal u16 req_id; 1501738cd3eSNetanel Belgazal 1511738cd3eSNetanel Belgazal u8 status; 1521738cd3eSNetanel Belgazal 1531738cd3eSNetanel Belgazal /* flags 1541738cd3eSNetanel Belgazal * 0 : phase 1551738cd3eSNetanel Belgazal * 7:1 : reserved1 1561738cd3eSNetanel Belgazal */ 1571738cd3eSNetanel Belgazal u8 flags; 1581738cd3eSNetanel Belgazal 1591738cd3eSNetanel Belgazal u16 sub_qid; 1601738cd3eSNetanel Belgazal 1611738cd3eSNetanel Belgazal u16 sq_head_idx; 1621738cd3eSNetanel Belgazal }; 1631738cd3eSNetanel Belgazal 1641738cd3eSNetanel Belgazal struct ena_eth_io_rx_desc { 1651738cd3eSNetanel Belgazal /* In bytes. 0 means 64KB */ 1661738cd3eSNetanel Belgazal u16 length; 1671738cd3eSNetanel Belgazal 1681738cd3eSNetanel Belgazal /* MBZ */ 1691738cd3eSNetanel Belgazal u8 reserved2; 1701738cd3eSNetanel Belgazal 1711738cd3eSNetanel Belgazal /* 0 : phase 1721738cd3eSNetanel Belgazal * 1 : reserved1 - MBZ 1731738cd3eSNetanel Belgazal * 2 : first - Indicates first descriptor in 1741738cd3eSNetanel Belgazal * transaction 1751738cd3eSNetanel Belgazal * 3 : last - Indicates last descriptor in transaction 1761738cd3eSNetanel Belgazal * 4 : comp_req 1771738cd3eSNetanel Belgazal * 5 : reserved5 - MBO 1781738cd3eSNetanel Belgazal * 7:6 : reserved6 - MBZ 1791738cd3eSNetanel Belgazal */ 1801738cd3eSNetanel Belgazal u8 ctrl; 1811738cd3eSNetanel Belgazal 1821738cd3eSNetanel Belgazal u16 req_id; 1831738cd3eSNetanel Belgazal 1841738cd3eSNetanel Belgazal /* MBZ */ 1851738cd3eSNetanel Belgazal u16 reserved6; 1861738cd3eSNetanel Belgazal 1871738cd3eSNetanel Belgazal u32 buff_addr_lo; 1881738cd3eSNetanel Belgazal 1891738cd3eSNetanel Belgazal u16 buff_addr_hi; 1901738cd3eSNetanel Belgazal 1911738cd3eSNetanel Belgazal /* MBZ */ 1921738cd3eSNetanel Belgazal u16 reserved16_w3; 1931738cd3eSNetanel Belgazal }; 1941738cd3eSNetanel Belgazal 1951738cd3eSNetanel Belgazal /* 4-word format Note: all ethernet parsing information are valid only when 1961738cd3eSNetanel Belgazal * last=1 1971738cd3eSNetanel Belgazal */ 1981738cd3eSNetanel Belgazal struct ena_eth_io_rx_cdesc_base { 1991738cd3eSNetanel Belgazal /* 4:0 : l3_proto_idx 2001738cd3eSNetanel Belgazal * 6:5 : src_vlan_cnt 2011738cd3eSNetanel Belgazal * 7 : reserved7 - MBZ 2021738cd3eSNetanel Belgazal * 12:8 : l4_proto_idx 2031738cd3eSNetanel Belgazal * 13 : l3_csum_err - when set, either the L3 2041738cd3eSNetanel Belgazal * checksum error detected, or, the controller didn't 2051738cd3eSNetanel Belgazal * validate the checksum. This bit is valid only when 2061738cd3eSNetanel Belgazal * l3_proto_idx indicates IPv4 packet 2071738cd3eSNetanel Belgazal * 14 : l4_csum_err - when set, either the L4 2081738cd3eSNetanel Belgazal * checksum error detected, or, the controller didn't 2091738cd3eSNetanel Belgazal * validate the checksum. This bit is valid only when 2101738cd3eSNetanel Belgazal * l4_proto_idx indicates TCP/UDP packet, and, 211cb36bb36SArthur Kiyanovski * ipv4_frag is not set. This bit is valid only when 212cb36bb36SArthur Kiyanovski * l4_csum_checked below is set. 2131738cd3eSNetanel Belgazal * 15 : ipv4_frag - Indicates IPv4 fragmented packet 214cb36bb36SArthur Kiyanovski * 16 : l4_csum_checked - L4 checksum was verified 215cb36bb36SArthur Kiyanovski * (could be OK or error), when cleared the status of 216cb36bb36SArthur Kiyanovski * checksum is unknown 217cb36bb36SArthur Kiyanovski * 23:17 : reserved17 - MBZ 2181738cd3eSNetanel Belgazal * 24 : phase 2191738cd3eSNetanel Belgazal * 25 : l3_csum2 - second checksum engine result 2201738cd3eSNetanel Belgazal * 26 : first - Indicates first descriptor in 2211738cd3eSNetanel Belgazal * transaction 2221738cd3eSNetanel Belgazal * 27 : last - Indicates last descriptor in 2231738cd3eSNetanel Belgazal * transaction 2241738cd3eSNetanel Belgazal * 29:28 : reserved28 2251738cd3eSNetanel Belgazal * 30 : buffer - 0: Metadata descriptor. 1: Buffer 2261738cd3eSNetanel Belgazal * Descriptor was used 2271738cd3eSNetanel Belgazal * 31 : reserved31 2281738cd3eSNetanel Belgazal */ 2291738cd3eSNetanel Belgazal u32 status; 2301738cd3eSNetanel Belgazal 2311738cd3eSNetanel Belgazal u16 length; 2321738cd3eSNetanel Belgazal 2331738cd3eSNetanel Belgazal u16 req_id; 2341738cd3eSNetanel Belgazal 2351738cd3eSNetanel Belgazal /* 32-bit hash result */ 2361738cd3eSNetanel Belgazal u32 hash; 2371738cd3eSNetanel Belgazal 2381738cd3eSNetanel Belgazal u16 sub_qid; 2391738cd3eSNetanel Belgazal 24068f236dfSArthur Kiyanovski u8 offset; 24168f236dfSArthur Kiyanovski 24268f236dfSArthur Kiyanovski u8 reserved; 2431738cd3eSNetanel Belgazal }; 2441738cd3eSNetanel Belgazal 2451738cd3eSNetanel Belgazal /* 8-word format */ 2461738cd3eSNetanel Belgazal struct ena_eth_io_rx_cdesc_ext { 2471738cd3eSNetanel Belgazal struct ena_eth_io_rx_cdesc_base base; 2481738cd3eSNetanel Belgazal 2491738cd3eSNetanel Belgazal u32 buff_addr_lo; 2501738cd3eSNetanel Belgazal 2511738cd3eSNetanel Belgazal u16 buff_addr_hi; 2521738cd3eSNetanel Belgazal 2531738cd3eSNetanel Belgazal u16 reserved16; 2541738cd3eSNetanel Belgazal 2551738cd3eSNetanel Belgazal u32 reserved_w6; 2561738cd3eSNetanel Belgazal 2571738cd3eSNetanel Belgazal u32 reserved_w7; 2581738cd3eSNetanel Belgazal }; 2591738cd3eSNetanel Belgazal 2601738cd3eSNetanel Belgazal struct ena_eth_io_intr_reg { 2611738cd3eSNetanel Belgazal /* 14:0 : rx_intr_delay 2621738cd3eSNetanel Belgazal * 29:15 : tx_intr_delay 2631738cd3eSNetanel Belgazal * 30 : intr_unmask 2641738cd3eSNetanel Belgazal * 31 : reserved 2651738cd3eSNetanel Belgazal */ 2661738cd3eSNetanel Belgazal u32 intr_control; 2671738cd3eSNetanel Belgazal }; 2681738cd3eSNetanel Belgazal 2691738cd3eSNetanel Belgazal struct ena_eth_io_numa_node_cfg_reg { 2701738cd3eSNetanel Belgazal /* 7:0 : numa 2711738cd3eSNetanel Belgazal * 30:8 : reserved 2721738cd3eSNetanel Belgazal * 31 : enabled 2731738cd3eSNetanel Belgazal */ 2741738cd3eSNetanel Belgazal u32 numa_cfg; 2751738cd3eSNetanel Belgazal }; 2761738cd3eSNetanel Belgazal 2771738cd3eSNetanel Belgazal /* tx_desc */ 2781738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_DESC_LENGTH_MASK GENMASK(15, 0) 2791738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_DESC_REQ_ID_HI_SHIFT 16 2801738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_DESC_REQ_ID_HI_MASK GENMASK(21, 16) 2811738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_DESC_META_DESC_SHIFT 23 2821738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_DESC_META_DESC_MASK BIT(23) 2831738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_DESC_PHASE_SHIFT 24 2841738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_DESC_PHASE_MASK BIT(24) 2851738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_DESC_FIRST_SHIFT 26 2861738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_DESC_FIRST_MASK BIT(26) 2871738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_DESC_LAST_SHIFT 27 2881738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_DESC_LAST_MASK BIT(27) 2891738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_DESC_COMP_REQ_SHIFT 28 2901738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_DESC_COMP_REQ_MASK BIT(28) 2911738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_DESC_L3_PROTO_IDX_MASK GENMASK(3, 0) 2921738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_DESC_DF_SHIFT 4 2931738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_DESC_DF_MASK BIT(4) 2941738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_DESC_TSO_EN_SHIFT 7 2951738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_DESC_TSO_EN_MASK BIT(7) 2961738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_DESC_L4_PROTO_IDX_SHIFT 8 2971738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_DESC_L4_PROTO_IDX_MASK GENMASK(12, 8) 2981738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_DESC_L3_CSUM_EN_SHIFT 13 2991738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_DESC_L3_CSUM_EN_MASK BIT(13) 3001738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_DESC_L4_CSUM_EN_SHIFT 14 3011738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_DESC_L4_CSUM_EN_MASK BIT(14) 3021738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_DESC_ETHERNET_FCS_DIS_SHIFT 15 3031738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_DESC_ETHERNET_FCS_DIS_MASK BIT(15) 3041738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_DESC_L4_CSUM_PARTIAL_SHIFT 17 3051738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_DESC_L4_CSUM_PARTIAL_MASK BIT(17) 3061738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_DESC_REQ_ID_LO_SHIFT 22 3071738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_DESC_REQ_ID_LO_MASK GENMASK(31, 22) 3081738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_DESC_ADDR_HI_MASK GENMASK(15, 0) 3091738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_DESC_HEADER_LENGTH_SHIFT 24 3101738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_DESC_HEADER_LENGTH_MASK GENMASK(31, 24) 3111738cd3eSNetanel Belgazal 3121738cd3eSNetanel Belgazal /* tx_meta_desc */ 3131738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_META_DESC_REQ_ID_LO_MASK GENMASK(9, 0) 3141738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_META_DESC_EXT_VALID_SHIFT 14 3151738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_META_DESC_EXT_VALID_MASK BIT(14) 3161738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_META_DESC_MSS_HI_SHIFT 16 3171738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_META_DESC_MSS_HI_MASK GENMASK(19, 16) 3181738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_META_DESC_ETH_META_TYPE_SHIFT 20 3191738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_META_DESC_ETH_META_TYPE_MASK BIT(20) 3201738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_META_DESC_META_STORE_SHIFT 21 3211738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_META_DESC_META_STORE_MASK BIT(21) 3221738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_META_DESC_META_DESC_SHIFT 23 3231738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_META_DESC_META_DESC_MASK BIT(23) 3241738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_META_DESC_PHASE_SHIFT 24 3251738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_META_DESC_PHASE_MASK BIT(24) 3261738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_META_DESC_FIRST_SHIFT 26 3271738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_META_DESC_FIRST_MASK BIT(26) 3281738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_META_DESC_LAST_SHIFT 27 3291738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_META_DESC_LAST_MASK BIT(27) 3301738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_META_DESC_COMP_REQ_SHIFT 28 3311738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_META_DESC_COMP_REQ_MASK BIT(28) 3321738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_META_DESC_REQ_ID_HI_MASK GENMASK(5, 0) 3331738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_META_DESC_L3_HDR_LEN_MASK GENMASK(7, 0) 3341738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_META_DESC_L3_HDR_OFF_SHIFT 8 3351738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_META_DESC_L3_HDR_OFF_MASK GENMASK(15, 8) 3361738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_META_DESC_L4_HDR_LEN_IN_WORDS_SHIFT 16 3371738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_META_DESC_L4_HDR_LEN_IN_WORDS_MASK GENMASK(21, 16) 3381738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_META_DESC_MSS_LO_SHIFT 22 3391738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_META_DESC_MSS_LO_MASK GENMASK(31, 22) 3401738cd3eSNetanel Belgazal 3411738cd3eSNetanel Belgazal /* tx_cdesc */ 3421738cd3eSNetanel Belgazal #define ENA_ETH_IO_TX_CDESC_PHASE_MASK BIT(0) 3431738cd3eSNetanel Belgazal 3441738cd3eSNetanel Belgazal /* rx_desc */ 3451738cd3eSNetanel Belgazal #define ENA_ETH_IO_RX_DESC_PHASE_MASK BIT(0) 3461738cd3eSNetanel Belgazal #define ENA_ETH_IO_RX_DESC_FIRST_SHIFT 2 3471738cd3eSNetanel Belgazal #define ENA_ETH_IO_RX_DESC_FIRST_MASK BIT(2) 3481738cd3eSNetanel Belgazal #define ENA_ETH_IO_RX_DESC_LAST_SHIFT 3 3491738cd3eSNetanel Belgazal #define ENA_ETH_IO_RX_DESC_LAST_MASK BIT(3) 3501738cd3eSNetanel Belgazal #define ENA_ETH_IO_RX_DESC_COMP_REQ_SHIFT 4 3511738cd3eSNetanel Belgazal #define ENA_ETH_IO_RX_DESC_COMP_REQ_MASK BIT(4) 3521738cd3eSNetanel Belgazal 3531738cd3eSNetanel Belgazal /* rx_cdesc_base */ 3541738cd3eSNetanel Belgazal #define ENA_ETH_IO_RX_CDESC_BASE_L3_PROTO_IDX_MASK GENMASK(4, 0) 3551738cd3eSNetanel Belgazal #define ENA_ETH_IO_RX_CDESC_BASE_SRC_VLAN_CNT_SHIFT 5 3561738cd3eSNetanel Belgazal #define ENA_ETH_IO_RX_CDESC_BASE_SRC_VLAN_CNT_MASK GENMASK(6, 5) 3571738cd3eSNetanel Belgazal #define ENA_ETH_IO_RX_CDESC_BASE_L4_PROTO_IDX_SHIFT 8 3581738cd3eSNetanel Belgazal #define ENA_ETH_IO_RX_CDESC_BASE_L4_PROTO_IDX_MASK GENMASK(12, 8) 3591738cd3eSNetanel Belgazal #define ENA_ETH_IO_RX_CDESC_BASE_L3_CSUM_ERR_SHIFT 13 3601738cd3eSNetanel Belgazal #define ENA_ETH_IO_RX_CDESC_BASE_L3_CSUM_ERR_MASK BIT(13) 3611738cd3eSNetanel Belgazal #define ENA_ETH_IO_RX_CDESC_BASE_L4_CSUM_ERR_SHIFT 14 3621738cd3eSNetanel Belgazal #define ENA_ETH_IO_RX_CDESC_BASE_L4_CSUM_ERR_MASK BIT(14) 3631738cd3eSNetanel Belgazal #define ENA_ETH_IO_RX_CDESC_BASE_IPV4_FRAG_SHIFT 15 3641738cd3eSNetanel Belgazal #define ENA_ETH_IO_RX_CDESC_BASE_IPV4_FRAG_MASK BIT(15) 365cb36bb36SArthur Kiyanovski #define ENA_ETH_IO_RX_CDESC_BASE_L4_CSUM_CHECKED_SHIFT 16 366cb36bb36SArthur Kiyanovski #define ENA_ETH_IO_RX_CDESC_BASE_L4_CSUM_CHECKED_MASK BIT(16) 3671738cd3eSNetanel Belgazal #define ENA_ETH_IO_RX_CDESC_BASE_PHASE_SHIFT 24 3681738cd3eSNetanel Belgazal #define ENA_ETH_IO_RX_CDESC_BASE_PHASE_MASK BIT(24) 3691738cd3eSNetanel Belgazal #define ENA_ETH_IO_RX_CDESC_BASE_L3_CSUM2_SHIFT 25 3701738cd3eSNetanel Belgazal #define ENA_ETH_IO_RX_CDESC_BASE_L3_CSUM2_MASK BIT(25) 3711738cd3eSNetanel Belgazal #define ENA_ETH_IO_RX_CDESC_BASE_FIRST_SHIFT 26 3721738cd3eSNetanel Belgazal #define ENA_ETH_IO_RX_CDESC_BASE_FIRST_MASK BIT(26) 3731738cd3eSNetanel Belgazal #define ENA_ETH_IO_RX_CDESC_BASE_LAST_SHIFT 27 3741738cd3eSNetanel Belgazal #define ENA_ETH_IO_RX_CDESC_BASE_LAST_MASK BIT(27) 3751738cd3eSNetanel Belgazal #define ENA_ETH_IO_RX_CDESC_BASE_BUFFER_SHIFT 30 3761738cd3eSNetanel Belgazal #define ENA_ETH_IO_RX_CDESC_BASE_BUFFER_MASK BIT(30) 3771738cd3eSNetanel Belgazal 3781738cd3eSNetanel Belgazal /* intr_reg */ 3791738cd3eSNetanel Belgazal #define ENA_ETH_IO_INTR_REG_RX_INTR_DELAY_MASK GENMASK(14, 0) 3801738cd3eSNetanel Belgazal #define ENA_ETH_IO_INTR_REG_TX_INTR_DELAY_SHIFT 15 3811738cd3eSNetanel Belgazal #define ENA_ETH_IO_INTR_REG_TX_INTR_DELAY_MASK GENMASK(29, 15) 3821738cd3eSNetanel Belgazal #define ENA_ETH_IO_INTR_REG_INTR_UNMASK_SHIFT 30 3831738cd3eSNetanel Belgazal #define ENA_ETH_IO_INTR_REG_INTR_UNMASK_MASK BIT(30) 3841738cd3eSNetanel Belgazal 3851738cd3eSNetanel Belgazal /* numa_node_cfg_reg */ 3861738cd3eSNetanel Belgazal #define ENA_ETH_IO_NUMA_NODE_CFG_REG_NUMA_MASK GENMASK(7, 0) 3871738cd3eSNetanel Belgazal #define ENA_ETH_IO_NUMA_NODE_CFG_REG_ENABLED_SHIFT 31 3881738cd3eSNetanel Belgazal #define ENA_ETH_IO_NUMA_NODE_CFG_REG_ENABLED_MASK BIT(31) 3891738cd3eSNetanel Belgazal 3901738cd3eSNetanel Belgazal #endif /* _ENA_ETH_IO_H_ */ 391