0001
0002
0003
0004
0005 #ifndef _ENA_ETH_IO_H_
0006 #define _ENA_ETH_IO_H_
0007
0008 enum ena_eth_io_l3_proto_index {
0009 ENA_ETH_IO_L3_PROTO_UNKNOWN = 0,
0010 ENA_ETH_IO_L3_PROTO_IPV4 = 8,
0011 ENA_ETH_IO_L3_PROTO_IPV6 = 11,
0012 ENA_ETH_IO_L3_PROTO_FCOE = 21,
0013 ENA_ETH_IO_L3_PROTO_ROCE = 22,
0014 };
0015
0016 enum ena_eth_io_l4_proto_index {
0017 ENA_ETH_IO_L4_PROTO_UNKNOWN = 0,
0018 ENA_ETH_IO_L4_PROTO_TCP = 12,
0019 ENA_ETH_IO_L4_PROTO_UDP = 13,
0020 ENA_ETH_IO_L4_PROTO_ROUTEABLE_ROCE = 23,
0021 };
0022
0023 struct ena_eth_io_tx_desc {
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045 u32 len_ctrl;
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077 u32 meta_ctrl;
0078
0079 u32 buff_addr_lo;
0080
0081
0082
0083
0084
0085
0086
0087
0088
0089
0090
0091
0092
0093
0094
0095
0096 u32 buff_addr_hi_hdr_sz;
0097 };
0098
0099 struct ena_eth_io_tx_meta_desc {
0100
0101
0102
0103
0104
0105
0106
0107
0108
0109
0110
0111
0112
0113
0114
0115
0116
0117
0118
0119
0120
0121
0122
0123
0124
0125
0126
0127 u32 len_ctrl;
0128
0129
0130
0131
0132 u32 word1;
0133
0134
0135
0136
0137
0138
0139
0140
0141
0142 u32 word2;
0143
0144 u32 reserved;
0145 };
0146
0147 struct ena_eth_io_tx_cdesc {
0148
0149 u16 req_id;
0150
0151 u8 status;
0152
0153
0154
0155
0156
0157 u8 flags;
0158
0159 u16 sub_qid;
0160
0161 u16 sq_head_idx;
0162 };
0163
0164 struct ena_eth_io_rx_desc {
0165
0166 u16 length;
0167
0168
0169 u8 reserved2;
0170
0171
0172
0173
0174
0175
0176
0177
0178
0179
0180 u8 ctrl;
0181
0182 u16 req_id;
0183
0184
0185 u16 reserved6;
0186
0187 u32 buff_addr_lo;
0188
0189 u16 buff_addr_hi;
0190
0191
0192 u16 reserved16_w3;
0193 };
0194
0195
0196
0197
0198 struct ena_eth_io_rx_cdesc_base {
0199
0200
0201
0202
0203
0204
0205
0206
0207
0208
0209
0210
0211
0212
0213
0214
0215
0216
0217
0218
0219
0220
0221
0222
0223
0224
0225
0226
0227
0228
0229 u32 status;
0230
0231 u16 length;
0232
0233 u16 req_id;
0234
0235
0236 u32 hash;
0237
0238 u16 sub_qid;
0239
0240 u8 offset;
0241
0242 u8 reserved;
0243 };
0244
0245
0246 struct ena_eth_io_rx_cdesc_ext {
0247 struct ena_eth_io_rx_cdesc_base base;
0248
0249 u32 buff_addr_lo;
0250
0251 u16 buff_addr_hi;
0252
0253 u16 reserved16;
0254
0255 u32 reserved_w6;
0256
0257 u32 reserved_w7;
0258 };
0259
0260 struct ena_eth_io_intr_reg {
0261
0262
0263
0264
0265
0266 u32 intr_control;
0267 };
0268
0269 struct ena_eth_io_numa_node_cfg_reg {
0270
0271
0272
0273
0274 u32 numa_cfg;
0275 };
0276
0277
0278 #define ENA_ETH_IO_TX_DESC_LENGTH_MASK GENMASK(15, 0)
0279 #define ENA_ETH_IO_TX_DESC_REQ_ID_HI_SHIFT 16
0280 #define ENA_ETH_IO_TX_DESC_REQ_ID_HI_MASK GENMASK(21, 16)
0281 #define ENA_ETH_IO_TX_DESC_META_DESC_SHIFT 23
0282 #define ENA_ETH_IO_TX_DESC_META_DESC_MASK BIT(23)
0283 #define ENA_ETH_IO_TX_DESC_PHASE_SHIFT 24
0284 #define ENA_ETH_IO_TX_DESC_PHASE_MASK BIT(24)
0285 #define ENA_ETH_IO_TX_DESC_FIRST_SHIFT 26
0286 #define ENA_ETH_IO_TX_DESC_FIRST_MASK BIT(26)
0287 #define ENA_ETH_IO_TX_DESC_LAST_SHIFT 27
0288 #define ENA_ETH_IO_TX_DESC_LAST_MASK BIT(27)
0289 #define ENA_ETH_IO_TX_DESC_COMP_REQ_SHIFT 28
0290 #define ENA_ETH_IO_TX_DESC_COMP_REQ_MASK BIT(28)
0291 #define ENA_ETH_IO_TX_DESC_L3_PROTO_IDX_MASK GENMASK(3, 0)
0292 #define ENA_ETH_IO_TX_DESC_DF_SHIFT 4
0293 #define ENA_ETH_IO_TX_DESC_DF_MASK BIT(4)
0294 #define ENA_ETH_IO_TX_DESC_TSO_EN_SHIFT 7
0295 #define ENA_ETH_IO_TX_DESC_TSO_EN_MASK BIT(7)
0296 #define ENA_ETH_IO_TX_DESC_L4_PROTO_IDX_SHIFT 8
0297 #define ENA_ETH_IO_TX_DESC_L4_PROTO_IDX_MASK GENMASK(12, 8)
0298 #define ENA_ETH_IO_TX_DESC_L3_CSUM_EN_SHIFT 13
0299 #define ENA_ETH_IO_TX_DESC_L3_CSUM_EN_MASK BIT(13)
0300 #define ENA_ETH_IO_TX_DESC_L4_CSUM_EN_SHIFT 14
0301 #define ENA_ETH_IO_TX_DESC_L4_CSUM_EN_MASK BIT(14)
0302 #define ENA_ETH_IO_TX_DESC_ETHERNET_FCS_DIS_SHIFT 15
0303 #define ENA_ETH_IO_TX_DESC_ETHERNET_FCS_DIS_MASK BIT(15)
0304 #define ENA_ETH_IO_TX_DESC_L4_CSUM_PARTIAL_SHIFT 17
0305 #define ENA_ETH_IO_TX_DESC_L4_CSUM_PARTIAL_MASK BIT(17)
0306 #define ENA_ETH_IO_TX_DESC_REQ_ID_LO_SHIFT 22
0307 #define ENA_ETH_IO_TX_DESC_REQ_ID_LO_MASK GENMASK(31, 22)
0308 #define ENA_ETH_IO_TX_DESC_ADDR_HI_MASK GENMASK(15, 0)
0309 #define ENA_ETH_IO_TX_DESC_HEADER_LENGTH_SHIFT 24
0310 #define ENA_ETH_IO_TX_DESC_HEADER_LENGTH_MASK GENMASK(31, 24)
0311
0312
0313 #define ENA_ETH_IO_TX_META_DESC_REQ_ID_LO_MASK GENMASK(9, 0)
0314 #define ENA_ETH_IO_TX_META_DESC_EXT_VALID_SHIFT 14
0315 #define ENA_ETH_IO_TX_META_DESC_EXT_VALID_MASK BIT(14)
0316 #define ENA_ETH_IO_TX_META_DESC_MSS_HI_SHIFT 16
0317 #define ENA_ETH_IO_TX_META_DESC_MSS_HI_MASK GENMASK(19, 16)
0318 #define ENA_ETH_IO_TX_META_DESC_ETH_META_TYPE_SHIFT 20
0319 #define ENA_ETH_IO_TX_META_DESC_ETH_META_TYPE_MASK BIT(20)
0320 #define ENA_ETH_IO_TX_META_DESC_META_STORE_SHIFT 21
0321 #define ENA_ETH_IO_TX_META_DESC_META_STORE_MASK BIT(21)
0322 #define ENA_ETH_IO_TX_META_DESC_META_DESC_SHIFT 23
0323 #define ENA_ETH_IO_TX_META_DESC_META_DESC_MASK BIT(23)
0324 #define ENA_ETH_IO_TX_META_DESC_PHASE_SHIFT 24
0325 #define ENA_ETH_IO_TX_META_DESC_PHASE_MASK BIT(24)
0326 #define ENA_ETH_IO_TX_META_DESC_FIRST_SHIFT 26
0327 #define ENA_ETH_IO_TX_META_DESC_FIRST_MASK BIT(26)
0328 #define ENA_ETH_IO_TX_META_DESC_LAST_SHIFT 27
0329 #define ENA_ETH_IO_TX_META_DESC_LAST_MASK BIT(27)
0330 #define ENA_ETH_IO_TX_META_DESC_COMP_REQ_SHIFT 28
0331 #define ENA_ETH_IO_TX_META_DESC_COMP_REQ_MASK BIT(28)
0332 #define ENA_ETH_IO_TX_META_DESC_REQ_ID_HI_MASK GENMASK(5, 0)
0333 #define ENA_ETH_IO_TX_META_DESC_L3_HDR_LEN_MASK GENMASK(7, 0)
0334 #define ENA_ETH_IO_TX_META_DESC_L3_HDR_OFF_SHIFT 8
0335 #define ENA_ETH_IO_TX_META_DESC_L3_HDR_OFF_MASK GENMASK(15, 8)
0336 #define ENA_ETH_IO_TX_META_DESC_L4_HDR_LEN_IN_WORDS_SHIFT 16
0337 #define ENA_ETH_IO_TX_META_DESC_L4_HDR_LEN_IN_WORDS_MASK GENMASK(21, 16)
0338 #define ENA_ETH_IO_TX_META_DESC_MSS_LO_SHIFT 22
0339 #define ENA_ETH_IO_TX_META_DESC_MSS_LO_MASK GENMASK(31, 22)
0340
0341
0342 #define ENA_ETH_IO_TX_CDESC_PHASE_MASK BIT(0)
0343
0344
0345 #define ENA_ETH_IO_RX_DESC_PHASE_MASK BIT(0)
0346 #define ENA_ETH_IO_RX_DESC_FIRST_SHIFT 2
0347 #define ENA_ETH_IO_RX_DESC_FIRST_MASK BIT(2)
0348 #define ENA_ETH_IO_RX_DESC_LAST_SHIFT 3
0349 #define ENA_ETH_IO_RX_DESC_LAST_MASK BIT(3)
0350 #define ENA_ETH_IO_RX_DESC_COMP_REQ_SHIFT 4
0351 #define ENA_ETH_IO_RX_DESC_COMP_REQ_MASK BIT(4)
0352
0353
0354 #define ENA_ETH_IO_RX_CDESC_BASE_L3_PROTO_IDX_MASK GENMASK(4, 0)
0355 #define ENA_ETH_IO_RX_CDESC_BASE_SRC_VLAN_CNT_SHIFT 5
0356 #define ENA_ETH_IO_RX_CDESC_BASE_SRC_VLAN_CNT_MASK GENMASK(6, 5)
0357 #define ENA_ETH_IO_RX_CDESC_BASE_L4_PROTO_IDX_SHIFT 8
0358 #define ENA_ETH_IO_RX_CDESC_BASE_L4_PROTO_IDX_MASK GENMASK(12, 8)
0359 #define ENA_ETH_IO_RX_CDESC_BASE_L3_CSUM_ERR_SHIFT 13
0360 #define ENA_ETH_IO_RX_CDESC_BASE_L3_CSUM_ERR_MASK BIT(13)
0361 #define ENA_ETH_IO_RX_CDESC_BASE_L4_CSUM_ERR_SHIFT 14
0362 #define ENA_ETH_IO_RX_CDESC_BASE_L4_CSUM_ERR_MASK BIT(14)
0363 #define ENA_ETH_IO_RX_CDESC_BASE_IPV4_FRAG_SHIFT 15
0364 #define ENA_ETH_IO_RX_CDESC_BASE_IPV4_FRAG_MASK BIT(15)
0365 #define ENA_ETH_IO_RX_CDESC_BASE_L4_CSUM_CHECKED_SHIFT 16
0366 #define ENA_ETH_IO_RX_CDESC_BASE_L4_CSUM_CHECKED_MASK BIT(16)
0367 #define ENA_ETH_IO_RX_CDESC_BASE_PHASE_SHIFT 24
0368 #define ENA_ETH_IO_RX_CDESC_BASE_PHASE_MASK BIT(24)
0369 #define ENA_ETH_IO_RX_CDESC_BASE_L3_CSUM2_SHIFT 25
0370 #define ENA_ETH_IO_RX_CDESC_BASE_L3_CSUM2_MASK BIT(25)
0371 #define ENA_ETH_IO_RX_CDESC_BASE_FIRST_SHIFT 26
0372 #define ENA_ETH_IO_RX_CDESC_BASE_FIRST_MASK BIT(26)
0373 #define ENA_ETH_IO_RX_CDESC_BASE_LAST_SHIFT 27
0374 #define ENA_ETH_IO_RX_CDESC_BASE_LAST_MASK BIT(27)
0375 #define ENA_ETH_IO_RX_CDESC_BASE_BUFFER_SHIFT 30
0376 #define ENA_ETH_IO_RX_CDESC_BASE_BUFFER_MASK BIT(30)
0377
0378
0379 #define ENA_ETH_IO_INTR_REG_RX_INTR_DELAY_MASK GENMASK(14, 0)
0380 #define ENA_ETH_IO_INTR_REG_TX_INTR_DELAY_SHIFT 15
0381 #define ENA_ETH_IO_INTR_REG_TX_INTR_DELAY_MASK GENMASK(29, 15)
0382 #define ENA_ETH_IO_INTR_REG_INTR_UNMASK_SHIFT 30
0383 #define ENA_ETH_IO_INTR_REG_INTR_UNMASK_MASK BIT(30)
0384
0385
0386 #define ENA_ETH_IO_NUMA_NODE_CFG_REG_NUMA_MASK GENMASK(7, 0)
0387 #define ENA_ETH_IO_NUMA_NODE_CFG_REG_ENABLED_SHIFT 31
0388 #define ENA_ETH_IO_NUMA_NODE_CFG_REG_ENABLED_MASK BIT(31)
0389
0390 #endif