ena_eth_io_defs.h revision 1.1 1 1.1 jdolecek /*-
2 1.1 jdolecek * BSD LICENSE
3 1.1 jdolecek *
4 1.1 jdolecek * Copyright (c) 2015-2017 Amazon.com, Inc. or its affiliates.
5 1.1 jdolecek * All rights reserved.
6 1.1 jdolecek *
7 1.1 jdolecek * Redistribution and use in source and binary forms, with or without
8 1.1 jdolecek * modification, are permitted provided that the following conditions
9 1.1 jdolecek * are met:
10 1.1 jdolecek *
11 1.1 jdolecek * * Redistributions of source code must retain the above copyright
12 1.1 jdolecek * notice, this list of conditions and the following disclaimer.
13 1.1 jdolecek * * Redistributions in binary form must reproduce the above copyright
14 1.1 jdolecek * notice, this list of conditions and the following disclaimer in
15 1.1 jdolecek * the documentation and/or other materials provided with the
16 1.1 jdolecek * distribution.
17 1.1 jdolecek * * Neither the name of copyright holder nor the names of its
18 1.1 jdolecek * contributors may be used to endorse or promote products derived
19 1.1 jdolecek * from this software without specific prior written permission.
20 1.1 jdolecek *
21 1.1 jdolecek * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22 1.1 jdolecek * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23 1.1 jdolecek * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24 1.1 jdolecek * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25 1.1 jdolecek * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26 1.1 jdolecek * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27 1.1 jdolecek * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28 1.1 jdolecek * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29 1.1 jdolecek * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30 1.1 jdolecek * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31 1.1 jdolecek * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 1.1 jdolecek */
33 1.1 jdolecek
34 1.1 jdolecek #ifndef _ENA_ETH_IO_H_
35 1.1 jdolecek #define _ENA_ETH_IO_H_
36 1.1 jdolecek
37 1.1 jdolecek enum ena_eth_io_l3_proto_index {
38 1.1 jdolecek ENA_ETH_IO_L3_PROTO_UNKNOWN = 0,
39 1.1 jdolecek
40 1.1 jdolecek ENA_ETH_IO_L3_PROTO_IPV4 = 8,
41 1.1 jdolecek
42 1.1 jdolecek ENA_ETH_IO_L3_PROTO_IPV6 = 11,
43 1.1 jdolecek
44 1.1 jdolecek ENA_ETH_IO_L3_PROTO_FCOE = 21,
45 1.1 jdolecek
46 1.1 jdolecek ENA_ETH_IO_L3_PROTO_ROCE = 22,
47 1.1 jdolecek };
48 1.1 jdolecek
49 1.1 jdolecek enum ena_eth_io_l4_proto_index {
50 1.1 jdolecek ENA_ETH_IO_L4_PROTO_UNKNOWN = 0,
51 1.1 jdolecek
52 1.1 jdolecek ENA_ETH_IO_L4_PROTO_TCP = 12,
53 1.1 jdolecek
54 1.1 jdolecek ENA_ETH_IO_L4_PROTO_UDP = 13,
55 1.1 jdolecek
56 1.1 jdolecek ENA_ETH_IO_L4_PROTO_ROUTEABLE_ROCE = 23,
57 1.1 jdolecek };
58 1.1 jdolecek
59 1.1 jdolecek struct ena_eth_io_tx_desc {
60 1.1 jdolecek /* 15:0 : length - Buffer length in bytes, must
61 1.1 jdolecek * include any packet trailers that the ENA supposed
62 1.1 jdolecek * to update like End-to-End CRC, Authentication GMAC
63 1.1 jdolecek * etc. This length must not include the
64 1.1 jdolecek * 'Push_Buffer' length. This length must not include
65 1.1 jdolecek * the 4-byte added in the end for 802.3 Ethernet FCS
66 1.1 jdolecek * 21:16 : req_id_hi - Request ID[15:10]
67 1.1 jdolecek * 22 : reserved22 - MBZ
68 1.1 jdolecek * 23 : meta_desc - MBZ
69 1.1 jdolecek * 24 : phase
70 1.1 jdolecek * 25 : reserved1 - MBZ
71 1.1 jdolecek * 26 : first - Indicates first descriptor in
72 1.1 jdolecek * transaction
73 1.1 jdolecek * 27 : last - Indicates last descriptor in
74 1.1 jdolecek * transaction
75 1.1 jdolecek * 28 : comp_req - Indicates whether completion
76 1.1 jdolecek * should be posted, after packet is transmitted.
77 1.1 jdolecek * Valid only for first descriptor
78 1.1 jdolecek * 30:29 : reserved29 - MBZ
79 1.1 jdolecek * 31 : reserved31 - MBZ
80 1.1 jdolecek */
81 1.1 jdolecek uint32_t len_ctrl;
82 1.1 jdolecek
83 1.1 jdolecek /* 3:0 : l3_proto_idx - L3 protocol. This field
84 1.1 jdolecek * required when l3_csum_en,l3_csum or tso_en are set.
85 1.1 jdolecek * 4 : DF - IPv4 DF, must be 0 if packet is IPv4 and
86 1.1 jdolecek * DF flags of the IPv4 header is 0. Otherwise must
87 1.1 jdolecek * be set to 1
88 1.1 jdolecek * 6:5 : reserved5
89 1.1 jdolecek * 7 : tso_en - Enable TSO, For TCP only.
90 1.1 jdolecek * 12:8 : l4_proto_idx - L4 protocol. This field need
91 1.1 jdolecek * to be set when l4_csum_en or tso_en are set.
92 1.1 jdolecek * 13 : l3_csum_en - enable IPv4 header checksum.
93 1.1 jdolecek * 14 : l4_csum_en - enable TCP/UDP checksum.
94 1.1 jdolecek * 15 : ethernet_fcs_dis - when set, the controller
95 1.1 jdolecek * will not append the 802.3 Ethernet Frame Check
96 1.1 jdolecek * Sequence to the packet
97 1.1 jdolecek * 16 : reserved16
98 1.1 jdolecek * 17 : l4_csum_partial - L4 partial checksum. when
99 1.1 jdolecek * set to 0, the ENA calculates the L4 checksum,
100 1.1 jdolecek * where the Destination Address required for the
101 1.1 jdolecek * TCP/UDP pseudo-header is taken from the actual
102 1.1 jdolecek * packet L3 header. when set to 1, the ENA doesn't
103 1.1 jdolecek * calculate the sum of the pseudo-header, instead,
104 1.1 jdolecek * the checksum field of the L4 is used instead. When
105 1.1 jdolecek * TSO enabled, the checksum of the pseudo-header
106 1.1 jdolecek * must not include the tcp length field. L4 partial
107 1.1 jdolecek * checksum should be used for IPv6 packet that
108 1.1 jdolecek * contains Routing Headers.
109 1.1 jdolecek * 20:18 : reserved18 - MBZ
110 1.1 jdolecek * 21 : reserved21 - MBZ
111 1.1 jdolecek * 31:22 : req_id_lo - Request ID[9:0]
112 1.1 jdolecek */
113 1.1 jdolecek uint32_t meta_ctrl;
114 1.1 jdolecek
115 1.1 jdolecek uint32_t buff_addr_lo;
116 1.1 jdolecek
117 1.1 jdolecek /* address high and header size
118 1.1 jdolecek * 15:0 : addr_hi - Buffer Pointer[47:32]
119 1.1 jdolecek * 23:16 : reserved16_w2
120 1.1 jdolecek * 31:24 : header_length - Header length. For Low
121 1.1 jdolecek * Latency Queues, this fields indicates the number
122 1.1 jdolecek * of bytes written to the headers' memory. For
123 1.1 jdolecek * normal queues, if packet is TCP or UDP, and longer
124 1.1 jdolecek * than max_header_size, then this field should be
125 1.1 jdolecek * set to the sum of L4 header offset and L4 header
126 1.1 jdolecek * size(without options), otherwise, this field
127 1.1 jdolecek * should be set to 0. For both modes, this field
128 1.1 jdolecek * must not exceed the max_header_size.
129 1.1 jdolecek * max_header_size value is reported by the Max
130 1.1 jdolecek * Queues Feature descriptor
131 1.1 jdolecek */
132 1.1 jdolecek uint32_t buff_addr_hi_hdr_sz;
133 1.1 jdolecek };
134 1.1 jdolecek
135 1.1 jdolecek struct ena_eth_io_tx_meta_desc {
136 1.1 jdolecek /* 9:0 : req_id_lo - Request ID[9:0]
137 1.1 jdolecek * 11:10 : reserved10 - MBZ
138 1.1 jdolecek * 12 : reserved12 - MBZ
139 1.1 jdolecek * 13 : reserved13 - MBZ
140 1.1 jdolecek * 14 : ext_valid - if set, offset fields in Word2
141 1.1 jdolecek * are valid Also MSS High in Word 0 and bits [31:24]
142 1.1 jdolecek * in Word 3
143 1.1 jdolecek * 15 : reserved15
144 1.1 jdolecek * 19:16 : mss_hi
145 1.1 jdolecek * 20 : eth_meta_type - 0: Tx Metadata Descriptor, 1:
146 1.1 jdolecek * Extended Metadata Descriptor
147 1.1 jdolecek * 21 : meta_store - Store extended metadata in queue
148 1.1 jdolecek * cache
149 1.1 jdolecek * 22 : reserved22 - MBZ
150 1.1 jdolecek * 23 : meta_desc - MBO
151 1.1 jdolecek * 24 : phase
152 1.1 jdolecek * 25 : reserved25 - MBZ
153 1.1 jdolecek * 26 : first - Indicates first descriptor in
154 1.1 jdolecek * transaction
155 1.1 jdolecek * 27 : last - Indicates last descriptor in
156 1.1 jdolecek * transaction
157 1.1 jdolecek * 28 : comp_req - Indicates whether completion
158 1.1 jdolecek * should be posted, after packet is transmitted.
159 1.1 jdolecek * Valid only for first descriptor
160 1.1 jdolecek * 30:29 : reserved29 - MBZ
161 1.1 jdolecek * 31 : reserved31 - MBZ
162 1.1 jdolecek */
163 1.1 jdolecek uint32_t len_ctrl;
164 1.1 jdolecek
165 1.1 jdolecek /* 5:0 : req_id_hi
166 1.1 jdolecek * 31:6 : reserved6 - MBZ
167 1.1 jdolecek */
168 1.1 jdolecek uint32_t word1;
169 1.1 jdolecek
170 1.1 jdolecek /* 7:0 : l3_hdr_len
171 1.1 jdolecek * 15:8 : l3_hdr_off
172 1.1 jdolecek * 21:16 : l4_hdr_len_in_words - counts the L4 header
173 1.1 jdolecek * length in words. there is an explicit assumption
174 1.1 jdolecek * that L4 header appears right after L3 header and
175 1.1 jdolecek * L4 offset is based on l3_hdr_off+l3_hdr_len
176 1.1 jdolecek * 31:22 : mss_lo
177 1.1 jdolecek */
178 1.1 jdolecek uint32_t word2;
179 1.1 jdolecek
180 1.1 jdolecek uint32_t reserved;
181 1.1 jdolecek };
182 1.1 jdolecek
183 1.1 jdolecek struct ena_eth_io_tx_cdesc {
184 1.1 jdolecek /* Request ID[15:0] */
185 1.1 jdolecek uint16_t req_id;
186 1.1 jdolecek
187 1.1 jdolecek uint8_t status;
188 1.1 jdolecek
189 1.1 jdolecek /* flags
190 1.1 jdolecek * 0 : phase
191 1.1 jdolecek * 7:1 : reserved1
192 1.1 jdolecek */
193 1.1 jdolecek uint8_t flags;
194 1.1 jdolecek
195 1.1 jdolecek uint16_t sub_qid;
196 1.1 jdolecek
197 1.1 jdolecek uint16_t sq_head_idx;
198 1.1 jdolecek };
199 1.1 jdolecek
200 1.1 jdolecek struct ena_eth_io_rx_desc {
201 1.1 jdolecek /* In bytes. 0 means 64KB */
202 1.1 jdolecek uint16_t length;
203 1.1 jdolecek
204 1.1 jdolecek /* MBZ */
205 1.1 jdolecek uint8_t reserved2;
206 1.1 jdolecek
207 1.1 jdolecek /* 0 : phase
208 1.1 jdolecek * 1 : reserved1 - MBZ
209 1.1 jdolecek * 2 : first - Indicates first descriptor in
210 1.1 jdolecek * transaction
211 1.1 jdolecek * 3 : last - Indicates last descriptor in transaction
212 1.1 jdolecek * 4 : comp_req
213 1.1 jdolecek * 5 : reserved5 - MBO
214 1.1 jdolecek * 7:6 : reserved6 - MBZ
215 1.1 jdolecek */
216 1.1 jdolecek uint8_t ctrl;
217 1.1 jdolecek
218 1.1 jdolecek uint16_t req_id;
219 1.1 jdolecek
220 1.1 jdolecek /* MBZ */
221 1.1 jdolecek uint16_t reserved6;
222 1.1 jdolecek
223 1.1 jdolecek uint32_t buff_addr_lo;
224 1.1 jdolecek
225 1.1 jdolecek uint16_t buff_addr_hi;
226 1.1 jdolecek
227 1.1 jdolecek /* MBZ */
228 1.1 jdolecek uint16_t reserved16_w3;
229 1.1 jdolecek };
230 1.1 jdolecek
231 1.1 jdolecek /* 4-word format Note: all ethernet parsing information are valid only when
232 1.1 jdolecek * last=1
233 1.1 jdolecek */
234 1.1 jdolecek struct ena_eth_io_rx_cdesc_base {
235 1.1 jdolecek /* 4:0 : l3_proto_idx
236 1.1 jdolecek * 6:5 : src_vlan_cnt
237 1.1 jdolecek * 7 : reserved7 - MBZ
238 1.1 jdolecek * 12:8 : l4_proto_idx
239 1.1 jdolecek * 13 : l3_csum_err - when set, either the L3
240 1.1 jdolecek * checksum error detected, or, the controller didn't
241 1.1 jdolecek * validate the checksum. This bit is valid only when
242 1.1 jdolecek * l3_proto_idx indicates IPv4 packet
243 1.1 jdolecek * 14 : l4_csum_err - when set, either the L4
244 1.1 jdolecek * checksum error detected, or, the controller didn't
245 1.1 jdolecek * validate the checksum. This bit is valid only when
246 1.1 jdolecek * l4_proto_idx indicates TCP/UDP packet, and,
247 1.1 jdolecek * ipv4_frag is not set
248 1.1 jdolecek * 15 : ipv4_frag - Indicates IPv4 fragmented packet
249 1.1 jdolecek * 23:16 : reserved16
250 1.1 jdolecek * 24 : phase
251 1.1 jdolecek * 25 : l3_csum2 - second checksum engine result
252 1.1 jdolecek * 26 : first - Indicates first descriptor in
253 1.1 jdolecek * transaction
254 1.1 jdolecek * 27 : last - Indicates last descriptor in
255 1.1 jdolecek * transaction
256 1.1 jdolecek * 29:28 : reserved28
257 1.1 jdolecek * 30 : buffer - 0: Metadata descriptor. 1: Buffer
258 1.1 jdolecek * Descriptor was used
259 1.1 jdolecek * 31 : reserved31
260 1.1 jdolecek */
261 1.1 jdolecek uint32_t status;
262 1.1 jdolecek
263 1.1 jdolecek uint16_t length;
264 1.1 jdolecek
265 1.1 jdolecek uint16_t req_id;
266 1.1 jdolecek
267 1.1 jdolecek /* 32-bit hash result */
268 1.1 jdolecek uint32_t hash;
269 1.1 jdolecek
270 1.1 jdolecek uint16_t sub_qid;
271 1.1 jdolecek
272 1.1 jdolecek uint16_t reserved;
273 1.1 jdolecek };
274 1.1 jdolecek
275 1.1 jdolecek /* 8-word format */
276 1.1 jdolecek struct ena_eth_io_rx_cdesc_ext {
277 1.1 jdolecek struct ena_eth_io_rx_cdesc_base base;
278 1.1 jdolecek
279 1.1 jdolecek uint32_t buff_addr_lo;
280 1.1 jdolecek
281 1.1 jdolecek uint16_t buff_addr_hi;
282 1.1 jdolecek
283 1.1 jdolecek uint16_t reserved16;
284 1.1 jdolecek
285 1.1 jdolecek uint32_t reserved_w6;
286 1.1 jdolecek
287 1.1 jdolecek uint32_t reserved_w7;
288 1.1 jdolecek };
289 1.1 jdolecek
290 1.1 jdolecek struct ena_eth_io_intr_reg {
291 1.1 jdolecek /* 14:0 : rx_intr_delay
292 1.1 jdolecek * 29:15 : tx_intr_delay
293 1.1 jdolecek * 30 : intr_unmask
294 1.1 jdolecek * 31 : reserved
295 1.1 jdolecek */
296 1.1 jdolecek uint32_t intr_control;
297 1.1 jdolecek };
298 1.1 jdolecek
299 1.1 jdolecek struct ena_eth_io_numa_node_cfg_reg {
300 1.1 jdolecek /* 7:0 : numa
301 1.1 jdolecek * 30:8 : reserved
302 1.1 jdolecek * 31 : enabled
303 1.1 jdolecek */
304 1.1 jdolecek uint32_t numa_cfg;
305 1.1 jdolecek };
306 1.1 jdolecek
307 1.1 jdolecek /* tx_desc */
308 1.1 jdolecek #define ENA_ETH_IO_TX_DESC_LENGTH_MASK GENMASK(15, 0)
309 1.1 jdolecek #define ENA_ETH_IO_TX_DESC_REQ_ID_HI_SHIFT 16
310 1.1 jdolecek #define ENA_ETH_IO_TX_DESC_REQ_ID_HI_MASK GENMASK(21, 16)
311 1.1 jdolecek #define ENA_ETH_IO_TX_DESC_META_DESC_SHIFT 23
312 1.1 jdolecek #define ENA_ETH_IO_TX_DESC_META_DESC_MASK BIT(23)
313 1.1 jdolecek #define ENA_ETH_IO_TX_DESC_PHASE_SHIFT 24
314 1.1 jdolecek #define ENA_ETH_IO_TX_DESC_PHASE_MASK BIT(24)
315 1.1 jdolecek #define ENA_ETH_IO_TX_DESC_FIRST_SHIFT 26
316 1.1 jdolecek #define ENA_ETH_IO_TX_DESC_FIRST_MASK BIT(26)
317 1.1 jdolecek #define ENA_ETH_IO_TX_DESC_LAST_SHIFT 27
318 1.1 jdolecek #define ENA_ETH_IO_TX_DESC_LAST_MASK BIT(27)
319 1.1 jdolecek #define ENA_ETH_IO_TX_DESC_COMP_REQ_SHIFT 28
320 1.1 jdolecek #define ENA_ETH_IO_TX_DESC_COMP_REQ_MASK BIT(28)
321 1.1 jdolecek #define ENA_ETH_IO_TX_DESC_L3_PROTO_IDX_MASK GENMASK(3, 0)
322 1.1 jdolecek #define ENA_ETH_IO_TX_DESC_DF_SHIFT 4
323 1.1 jdolecek #define ENA_ETH_IO_TX_DESC_DF_MASK BIT(4)
324 1.1 jdolecek #define ENA_ETH_IO_TX_DESC_TSO_EN_SHIFT 7
325 1.1 jdolecek #define ENA_ETH_IO_TX_DESC_TSO_EN_MASK BIT(7)
326 1.1 jdolecek #define ENA_ETH_IO_TX_DESC_L4_PROTO_IDX_SHIFT 8
327 1.1 jdolecek #define ENA_ETH_IO_TX_DESC_L4_PROTO_IDX_MASK GENMASK(12, 8)
328 1.1 jdolecek #define ENA_ETH_IO_TX_DESC_L3_CSUM_EN_SHIFT 13
329 1.1 jdolecek #define ENA_ETH_IO_TX_DESC_L3_CSUM_EN_MASK BIT(13)
330 1.1 jdolecek #define ENA_ETH_IO_TX_DESC_L4_CSUM_EN_SHIFT 14
331 1.1 jdolecek #define ENA_ETH_IO_TX_DESC_L4_CSUM_EN_MASK BIT(14)
332 1.1 jdolecek #define ENA_ETH_IO_TX_DESC_ETHERNET_FCS_DIS_SHIFT 15
333 1.1 jdolecek #define ENA_ETH_IO_TX_DESC_ETHERNET_FCS_DIS_MASK BIT(15)
334 1.1 jdolecek #define ENA_ETH_IO_TX_DESC_L4_CSUM_PARTIAL_SHIFT 17
335 1.1 jdolecek #define ENA_ETH_IO_TX_DESC_L4_CSUM_PARTIAL_MASK BIT(17)
336 1.1 jdolecek #define ENA_ETH_IO_TX_DESC_REQ_ID_LO_SHIFT 22
337 1.1 jdolecek #define ENA_ETH_IO_TX_DESC_REQ_ID_LO_MASK GENMASK(31, 22)
338 1.1 jdolecek #define ENA_ETH_IO_TX_DESC_ADDR_HI_MASK GENMASK(15, 0)
339 1.1 jdolecek #define ENA_ETH_IO_TX_DESC_HEADER_LENGTH_SHIFT 24
340 1.1 jdolecek #define ENA_ETH_IO_TX_DESC_HEADER_LENGTH_MASK GENMASK(31, 24)
341 1.1 jdolecek
342 1.1 jdolecek /* tx_meta_desc */
343 1.1 jdolecek #define ENA_ETH_IO_TX_META_DESC_REQ_ID_LO_MASK GENMASK(9, 0)
344 1.1 jdolecek #define ENA_ETH_IO_TX_META_DESC_EXT_VALID_SHIFT 14
345 1.1 jdolecek #define ENA_ETH_IO_TX_META_DESC_EXT_VALID_MASK BIT(14)
346 1.1 jdolecek #define ENA_ETH_IO_TX_META_DESC_MSS_HI_SHIFT 16
347 1.1 jdolecek #define ENA_ETH_IO_TX_META_DESC_MSS_HI_MASK GENMASK(19, 16)
348 1.1 jdolecek #define ENA_ETH_IO_TX_META_DESC_ETH_META_TYPE_SHIFT 20
349 1.1 jdolecek #define ENA_ETH_IO_TX_META_DESC_ETH_META_TYPE_MASK BIT(20)
350 1.1 jdolecek #define ENA_ETH_IO_TX_META_DESC_META_STORE_SHIFT 21
351 1.1 jdolecek #define ENA_ETH_IO_TX_META_DESC_META_STORE_MASK BIT(21)
352 1.1 jdolecek #define ENA_ETH_IO_TX_META_DESC_META_DESC_SHIFT 23
353 1.1 jdolecek #define ENA_ETH_IO_TX_META_DESC_META_DESC_MASK BIT(23)
354 1.1 jdolecek #define ENA_ETH_IO_TX_META_DESC_PHASE_SHIFT 24
355 1.1 jdolecek #define ENA_ETH_IO_TX_META_DESC_PHASE_MASK BIT(24)
356 1.1 jdolecek #define ENA_ETH_IO_TX_META_DESC_FIRST_SHIFT 26
357 1.1 jdolecek #define ENA_ETH_IO_TX_META_DESC_FIRST_MASK BIT(26)
358 1.1 jdolecek #define ENA_ETH_IO_TX_META_DESC_LAST_SHIFT 27
359 1.1 jdolecek #define ENA_ETH_IO_TX_META_DESC_LAST_MASK BIT(27)
360 1.1 jdolecek #define ENA_ETH_IO_TX_META_DESC_COMP_REQ_SHIFT 28
361 1.1 jdolecek #define ENA_ETH_IO_TX_META_DESC_COMP_REQ_MASK BIT(28)
362 1.1 jdolecek #define ENA_ETH_IO_TX_META_DESC_REQ_ID_HI_MASK GENMASK(5, 0)
363 1.1 jdolecek #define ENA_ETH_IO_TX_META_DESC_L3_HDR_LEN_MASK GENMASK(7, 0)
364 1.1 jdolecek #define ENA_ETH_IO_TX_META_DESC_L3_HDR_OFF_SHIFT 8
365 1.1 jdolecek #define ENA_ETH_IO_TX_META_DESC_L3_HDR_OFF_MASK GENMASK(15, 8)
366 1.1 jdolecek #define ENA_ETH_IO_TX_META_DESC_L4_HDR_LEN_IN_WORDS_SHIFT 16
367 1.1 jdolecek #define ENA_ETH_IO_TX_META_DESC_L4_HDR_LEN_IN_WORDS_MASK GENMASK(21, 16)
368 1.1 jdolecek #define ENA_ETH_IO_TX_META_DESC_MSS_LO_SHIFT 22
369 1.1 jdolecek #define ENA_ETH_IO_TX_META_DESC_MSS_LO_MASK GENMASK(31, 22)
370 1.1 jdolecek
371 1.1 jdolecek /* tx_cdesc */
372 1.1 jdolecek #define ENA_ETH_IO_TX_CDESC_PHASE_MASK BIT(0)
373 1.1 jdolecek
374 1.1 jdolecek /* rx_desc */
375 1.1 jdolecek #define ENA_ETH_IO_RX_DESC_PHASE_MASK BIT(0)
376 1.1 jdolecek #define ENA_ETH_IO_RX_DESC_FIRST_SHIFT 2
377 1.1 jdolecek #define ENA_ETH_IO_RX_DESC_FIRST_MASK BIT(2)
378 1.1 jdolecek #define ENA_ETH_IO_RX_DESC_LAST_SHIFT 3
379 1.1 jdolecek #define ENA_ETH_IO_RX_DESC_LAST_MASK BIT(3)
380 1.1 jdolecek #define ENA_ETH_IO_RX_DESC_COMP_REQ_SHIFT 4
381 1.1 jdolecek #define ENA_ETH_IO_RX_DESC_COMP_REQ_MASK BIT(4)
382 1.1 jdolecek
383 1.1 jdolecek /* rx_cdesc_base */
384 1.1 jdolecek #define ENA_ETH_IO_RX_CDESC_BASE_L3_PROTO_IDX_MASK GENMASK(4, 0)
385 1.1 jdolecek #define ENA_ETH_IO_RX_CDESC_BASE_SRC_VLAN_CNT_SHIFT 5
386 1.1 jdolecek #define ENA_ETH_IO_RX_CDESC_BASE_SRC_VLAN_CNT_MASK GENMASK(6, 5)
387 1.1 jdolecek #define ENA_ETH_IO_RX_CDESC_BASE_L4_PROTO_IDX_SHIFT 8
388 1.1 jdolecek #define ENA_ETH_IO_RX_CDESC_BASE_L4_PROTO_IDX_MASK GENMASK(12, 8)
389 1.1 jdolecek #define ENA_ETH_IO_RX_CDESC_BASE_L3_CSUM_ERR_SHIFT 13
390 1.1 jdolecek #define ENA_ETH_IO_RX_CDESC_BASE_L3_CSUM_ERR_MASK BIT(13)
391 1.1 jdolecek #define ENA_ETH_IO_RX_CDESC_BASE_L4_CSUM_ERR_SHIFT 14
392 1.1 jdolecek #define ENA_ETH_IO_RX_CDESC_BASE_L4_CSUM_ERR_MASK BIT(14)
393 1.1 jdolecek #define ENA_ETH_IO_RX_CDESC_BASE_IPV4_FRAG_SHIFT 15
394 1.1 jdolecek #define ENA_ETH_IO_RX_CDESC_BASE_IPV4_FRAG_MASK BIT(15)
395 1.1 jdolecek #define ENA_ETH_IO_RX_CDESC_BASE_PHASE_SHIFT 24
396 1.1 jdolecek #define ENA_ETH_IO_RX_CDESC_BASE_PHASE_MASK BIT(24)
397 1.1 jdolecek #define ENA_ETH_IO_RX_CDESC_BASE_L3_CSUM2_SHIFT 25
398 1.1 jdolecek #define ENA_ETH_IO_RX_CDESC_BASE_L3_CSUM2_MASK BIT(25)
399 1.1 jdolecek #define ENA_ETH_IO_RX_CDESC_BASE_FIRST_SHIFT 26
400 1.1 jdolecek #define ENA_ETH_IO_RX_CDESC_BASE_FIRST_MASK BIT(26)
401 1.1 jdolecek #define ENA_ETH_IO_RX_CDESC_BASE_LAST_SHIFT 27
402 1.1 jdolecek #define ENA_ETH_IO_RX_CDESC_BASE_LAST_MASK BIT(27)
403 1.1 jdolecek #define ENA_ETH_IO_RX_CDESC_BASE_BUFFER_SHIFT 30
404 1.1 jdolecek #define ENA_ETH_IO_RX_CDESC_BASE_BUFFER_MASK BIT(30)
405 1.1 jdolecek
406 1.1 jdolecek /* intr_reg */
407 1.1 jdolecek #define ENA_ETH_IO_INTR_REG_RX_INTR_DELAY_MASK GENMASK(14, 0)
408 1.1 jdolecek #define ENA_ETH_IO_INTR_REG_TX_INTR_DELAY_SHIFT 15
409 1.1 jdolecek #define ENA_ETH_IO_INTR_REG_TX_INTR_DELAY_MASK GENMASK(29, 15)
410 1.1 jdolecek #define ENA_ETH_IO_INTR_REG_INTR_UNMASK_SHIFT 30
411 1.1 jdolecek #define ENA_ETH_IO_INTR_REG_INTR_UNMASK_MASK BIT(30)
412 1.1 jdolecek
413 1.1 jdolecek /* numa_node_cfg_reg */
414 1.1 jdolecek #define ENA_ETH_IO_NUMA_NODE_CFG_REG_NUMA_MASK GENMASK(7, 0)
415 1.1 jdolecek #define ENA_ETH_IO_NUMA_NODE_CFG_REG_ENABLED_SHIFT 31
416 1.1 jdolecek #define ENA_ETH_IO_NUMA_NODE_CFG_REG_ENABLED_MASK BIT(31)
417 1.1 jdolecek
418 1.1 jdolecek #if !defined(ENA_DEFS_LINUX_MAINLINE)
419 1.1 jdolecek static inline uint32_t get_ena_eth_io_tx_desc_length(const struct ena_eth_io_tx_desc *p)
420 1.1 jdolecek {
421 1.1 jdolecek return p->len_ctrl & ENA_ETH_IO_TX_DESC_LENGTH_MASK;
422 1.1 jdolecek }
423 1.1 jdolecek
424 1.1 jdolecek static inline void set_ena_eth_io_tx_desc_length(struct ena_eth_io_tx_desc *p, uint32_t val)
425 1.1 jdolecek {
426 1.1 jdolecek p->len_ctrl |= val & ENA_ETH_IO_TX_DESC_LENGTH_MASK;
427 1.1 jdolecek }
428 1.1 jdolecek
429 1.1 jdolecek static inline uint32_t get_ena_eth_io_tx_desc_req_id_hi(const struct ena_eth_io_tx_desc *p)
430 1.1 jdolecek {
431 1.1 jdolecek return (p->len_ctrl & ENA_ETH_IO_TX_DESC_REQ_ID_HI_MASK) >> ENA_ETH_IO_TX_DESC_REQ_ID_HI_SHIFT;
432 1.1 jdolecek }
433 1.1 jdolecek
434 1.1 jdolecek static inline void set_ena_eth_io_tx_desc_req_id_hi(struct ena_eth_io_tx_desc *p, uint32_t val)
435 1.1 jdolecek {
436 1.1 jdolecek p->len_ctrl |= (val << ENA_ETH_IO_TX_DESC_REQ_ID_HI_SHIFT) & ENA_ETH_IO_TX_DESC_REQ_ID_HI_MASK;
437 1.1 jdolecek }
438 1.1 jdolecek
439 1.1 jdolecek static inline uint32_t get_ena_eth_io_tx_desc_meta_desc(const struct ena_eth_io_tx_desc *p)
440 1.1 jdolecek {
441 1.1 jdolecek return (p->len_ctrl & ENA_ETH_IO_TX_DESC_META_DESC_MASK) >> ENA_ETH_IO_TX_DESC_META_DESC_SHIFT;
442 1.1 jdolecek }
443 1.1 jdolecek
444 1.1 jdolecek static inline void set_ena_eth_io_tx_desc_meta_desc(struct ena_eth_io_tx_desc *p, uint32_t val)
445 1.1 jdolecek {
446 1.1 jdolecek p->len_ctrl |= (val << ENA_ETH_IO_TX_DESC_META_DESC_SHIFT) & ENA_ETH_IO_TX_DESC_META_DESC_MASK;
447 1.1 jdolecek }
448 1.1 jdolecek
449 1.1 jdolecek static inline uint32_t get_ena_eth_io_tx_desc_phase(const struct ena_eth_io_tx_desc *p)
450 1.1 jdolecek {
451 1.1 jdolecek return (p->len_ctrl & ENA_ETH_IO_TX_DESC_PHASE_MASK) >> ENA_ETH_IO_TX_DESC_PHASE_SHIFT;
452 1.1 jdolecek }
453 1.1 jdolecek
454 1.1 jdolecek static inline void set_ena_eth_io_tx_desc_phase(struct ena_eth_io_tx_desc *p, uint32_t val)
455 1.1 jdolecek {
456 1.1 jdolecek p->len_ctrl |= (val << ENA_ETH_IO_TX_DESC_PHASE_SHIFT) & ENA_ETH_IO_TX_DESC_PHASE_MASK;
457 1.1 jdolecek }
458 1.1 jdolecek
459 1.1 jdolecek static inline uint32_t get_ena_eth_io_tx_desc_first(const struct ena_eth_io_tx_desc *p)
460 1.1 jdolecek {
461 1.1 jdolecek return (p->len_ctrl & ENA_ETH_IO_TX_DESC_FIRST_MASK) >> ENA_ETH_IO_TX_DESC_FIRST_SHIFT;
462 1.1 jdolecek }
463 1.1 jdolecek
464 1.1 jdolecek static inline void set_ena_eth_io_tx_desc_first(struct ena_eth_io_tx_desc *p, uint32_t val)
465 1.1 jdolecek {
466 1.1 jdolecek p->len_ctrl |= (val << ENA_ETH_IO_TX_DESC_FIRST_SHIFT) & ENA_ETH_IO_TX_DESC_FIRST_MASK;
467 1.1 jdolecek }
468 1.1 jdolecek
469 1.1 jdolecek static inline uint32_t get_ena_eth_io_tx_desc_last(const struct ena_eth_io_tx_desc *p)
470 1.1 jdolecek {
471 1.1 jdolecek return (p->len_ctrl & ENA_ETH_IO_TX_DESC_LAST_MASK) >> ENA_ETH_IO_TX_DESC_LAST_SHIFT;
472 1.1 jdolecek }
473 1.1 jdolecek
474 1.1 jdolecek static inline void set_ena_eth_io_tx_desc_last(struct ena_eth_io_tx_desc *p, uint32_t val)
475 1.1 jdolecek {
476 1.1 jdolecek p->len_ctrl |= (val << ENA_ETH_IO_TX_DESC_LAST_SHIFT) & ENA_ETH_IO_TX_DESC_LAST_MASK;
477 1.1 jdolecek }
478 1.1 jdolecek
479 1.1 jdolecek static inline uint32_t get_ena_eth_io_tx_desc_comp_req(const struct ena_eth_io_tx_desc *p)
480 1.1 jdolecek {
481 1.1 jdolecek return (p->len_ctrl & ENA_ETH_IO_TX_DESC_COMP_REQ_MASK) >> ENA_ETH_IO_TX_DESC_COMP_REQ_SHIFT;
482 1.1 jdolecek }
483 1.1 jdolecek
484 1.1 jdolecek static inline void set_ena_eth_io_tx_desc_comp_req(struct ena_eth_io_tx_desc *p, uint32_t val)
485 1.1 jdolecek {
486 1.1 jdolecek p->len_ctrl |= (val << ENA_ETH_IO_TX_DESC_COMP_REQ_SHIFT) & ENA_ETH_IO_TX_DESC_COMP_REQ_MASK;
487 1.1 jdolecek }
488 1.1 jdolecek
489 1.1 jdolecek static inline uint32_t get_ena_eth_io_tx_desc_l3_proto_idx(const struct ena_eth_io_tx_desc *p)
490 1.1 jdolecek {
491 1.1 jdolecek return p->meta_ctrl & ENA_ETH_IO_TX_DESC_L3_PROTO_IDX_MASK;
492 1.1 jdolecek }
493 1.1 jdolecek
494 1.1 jdolecek static inline void set_ena_eth_io_tx_desc_l3_proto_idx(struct ena_eth_io_tx_desc *p, uint32_t val)
495 1.1 jdolecek {
496 1.1 jdolecek p->meta_ctrl |= val & ENA_ETH_IO_TX_DESC_L3_PROTO_IDX_MASK;
497 1.1 jdolecek }
498 1.1 jdolecek
499 1.1 jdolecek static inline uint32_t get_ena_eth_io_tx_desc_DF(const struct ena_eth_io_tx_desc *p)
500 1.1 jdolecek {
501 1.1 jdolecek return (p->meta_ctrl & ENA_ETH_IO_TX_DESC_DF_MASK) >> ENA_ETH_IO_TX_DESC_DF_SHIFT;
502 1.1 jdolecek }
503 1.1 jdolecek
504 1.1 jdolecek static inline void set_ena_eth_io_tx_desc_DF(struct ena_eth_io_tx_desc *p, uint32_t val)
505 1.1 jdolecek {
506 1.1 jdolecek p->meta_ctrl |= (val << ENA_ETH_IO_TX_DESC_DF_SHIFT) & ENA_ETH_IO_TX_DESC_DF_MASK;
507 1.1 jdolecek }
508 1.1 jdolecek
509 1.1 jdolecek static inline uint32_t get_ena_eth_io_tx_desc_tso_en(const struct ena_eth_io_tx_desc *p)
510 1.1 jdolecek {
511 1.1 jdolecek return (p->meta_ctrl & ENA_ETH_IO_TX_DESC_TSO_EN_MASK) >> ENA_ETH_IO_TX_DESC_TSO_EN_SHIFT;
512 1.1 jdolecek }
513 1.1 jdolecek
514 1.1 jdolecek static inline void set_ena_eth_io_tx_desc_tso_en(struct ena_eth_io_tx_desc *p, uint32_t val)
515 1.1 jdolecek {
516 1.1 jdolecek p->meta_ctrl |= (val << ENA_ETH_IO_TX_DESC_TSO_EN_SHIFT) & ENA_ETH_IO_TX_DESC_TSO_EN_MASK;
517 1.1 jdolecek }
518 1.1 jdolecek
519 1.1 jdolecek static inline uint32_t get_ena_eth_io_tx_desc_l4_proto_idx(const struct ena_eth_io_tx_desc *p)
520 1.1 jdolecek {
521 1.1 jdolecek return (p->meta_ctrl & ENA_ETH_IO_TX_DESC_L4_PROTO_IDX_MASK) >> ENA_ETH_IO_TX_DESC_L4_PROTO_IDX_SHIFT;
522 1.1 jdolecek }
523 1.1 jdolecek
524 1.1 jdolecek static inline void set_ena_eth_io_tx_desc_l4_proto_idx(struct ena_eth_io_tx_desc *p, uint32_t val)
525 1.1 jdolecek {
526 1.1 jdolecek p->meta_ctrl |= (val << ENA_ETH_IO_TX_DESC_L4_PROTO_IDX_SHIFT) & ENA_ETH_IO_TX_DESC_L4_PROTO_IDX_MASK;
527 1.1 jdolecek }
528 1.1 jdolecek
529 1.1 jdolecek static inline uint32_t get_ena_eth_io_tx_desc_l3_csum_en(const struct ena_eth_io_tx_desc *p)
530 1.1 jdolecek {
531 1.1 jdolecek return (p->meta_ctrl & ENA_ETH_IO_TX_DESC_L3_CSUM_EN_MASK) >> ENA_ETH_IO_TX_DESC_L3_CSUM_EN_SHIFT;
532 1.1 jdolecek }
533 1.1 jdolecek
534 1.1 jdolecek static inline void set_ena_eth_io_tx_desc_l3_csum_en(struct ena_eth_io_tx_desc *p, uint32_t val)
535 1.1 jdolecek {
536 1.1 jdolecek p->meta_ctrl |= (val << ENA_ETH_IO_TX_DESC_L3_CSUM_EN_SHIFT) & ENA_ETH_IO_TX_DESC_L3_CSUM_EN_MASK;
537 1.1 jdolecek }
538 1.1 jdolecek
539 1.1 jdolecek static inline uint32_t get_ena_eth_io_tx_desc_l4_csum_en(const struct ena_eth_io_tx_desc *p)
540 1.1 jdolecek {
541 1.1 jdolecek return (p->meta_ctrl & ENA_ETH_IO_TX_DESC_L4_CSUM_EN_MASK) >> ENA_ETH_IO_TX_DESC_L4_CSUM_EN_SHIFT;
542 1.1 jdolecek }
543 1.1 jdolecek
544 1.1 jdolecek static inline void set_ena_eth_io_tx_desc_l4_csum_en(struct ena_eth_io_tx_desc *p, uint32_t val)
545 1.1 jdolecek {
546 1.1 jdolecek p->meta_ctrl |= (val << ENA_ETH_IO_TX_DESC_L4_CSUM_EN_SHIFT) & ENA_ETH_IO_TX_DESC_L4_CSUM_EN_MASK;
547 1.1 jdolecek }
548 1.1 jdolecek
549 1.1 jdolecek static inline uint32_t get_ena_eth_io_tx_desc_ethernet_fcs_dis(const struct ena_eth_io_tx_desc *p)
550 1.1 jdolecek {
551 1.1 jdolecek return (p->meta_ctrl & ENA_ETH_IO_TX_DESC_ETHERNET_FCS_DIS_MASK) >> ENA_ETH_IO_TX_DESC_ETHERNET_FCS_DIS_SHIFT;
552 1.1 jdolecek }
553 1.1 jdolecek
554 1.1 jdolecek static inline void set_ena_eth_io_tx_desc_ethernet_fcs_dis(struct ena_eth_io_tx_desc *p, uint32_t val)
555 1.1 jdolecek {
556 1.1 jdolecek p->meta_ctrl |= (val << ENA_ETH_IO_TX_DESC_ETHERNET_FCS_DIS_SHIFT) & ENA_ETH_IO_TX_DESC_ETHERNET_FCS_DIS_MASK;
557 1.1 jdolecek }
558 1.1 jdolecek
559 1.1 jdolecek static inline uint32_t get_ena_eth_io_tx_desc_l4_csum_partial(const struct ena_eth_io_tx_desc *p)
560 1.1 jdolecek {
561 1.1 jdolecek return (p->meta_ctrl & ENA_ETH_IO_TX_DESC_L4_CSUM_PARTIAL_MASK) >> ENA_ETH_IO_TX_DESC_L4_CSUM_PARTIAL_SHIFT;
562 1.1 jdolecek }
563 1.1 jdolecek
564 1.1 jdolecek static inline void set_ena_eth_io_tx_desc_l4_csum_partial(struct ena_eth_io_tx_desc *p, uint32_t val)
565 1.1 jdolecek {
566 1.1 jdolecek p->meta_ctrl |= (val << ENA_ETH_IO_TX_DESC_L4_CSUM_PARTIAL_SHIFT) & ENA_ETH_IO_TX_DESC_L4_CSUM_PARTIAL_MASK;
567 1.1 jdolecek }
568 1.1 jdolecek
569 1.1 jdolecek static inline uint32_t get_ena_eth_io_tx_desc_req_id_lo(const struct ena_eth_io_tx_desc *p)
570 1.1 jdolecek {
571 1.1 jdolecek return (p->meta_ctrl & ENA_ETH_IO_TX_DESC_REQ_ID_LO_MASK) >> ENA_ETH_IO_TX_DESC_REQ_ID_LO_SHIFT;
572 1.1 jdolecek }
573 1.1 jdolecek
574 1.1 jdolecek static inline void set_ena_eth_io_tx_desc_req_id_lo(struct ena_eth_io_tx_desc *p, uint32_t val)
575 1.1 jdolecek {
576 1.1 jdolecek p->meta_ctrl |= (val << ENA_ETH_IO_TX_DESC_REQ_ID_LO_SHIFT) & ENA_ETH_IO_TX_DESC_REQ_ID_LO_MASK;
577 1.1 jdolecek }
578 1.1 jdolecek
579 1.1 jdolecek static inline uint32_t get_ena_eth_io_tx_desc_addr_hi(const struct ena_eth_io_tx_desc *p)
580 1.1 jdolecek {
581 1.1 jdolecek return p->buff_addr_hi_hdr_sz & ENA_ETH_IO_TX_DESC_ADDR_HI_MASK;
582 1.1 jdolecek }
583 1.1 jdolecek
584 1.1 jdolecek static inline void set_ena_eth_io_tx_desc_addr_hi(struct ena_eth_io_tx_desc *p, uint32_t val)
585 1.1 jdolecek {
586 1.1 jdolecek p->buff_addr_hi_hdr_sz |= val & ENA_ETH_IO_TX_DESC_ADDR_HI_MASK;
587 1.1 jdolecek }
588 1.1 jdolecek
589 1.1 jdolecek static inline uint32_t get_ena_eth_io_tx_desc_header_length(const struct ena_eth_io_tx_desc *p)
590 1.1 jdolecek {
591 1.1 jdolecek return (p->buff_addr_hi_hdr_sz & ENA_ETH_IO_TX_DESC_HEADER_LENGTH_MASK) >> ENA_ETH_IO_TX_DESC_HEADER_LENGTH_SHIFT;
592 1.1 jdolecek }
593 1.1 jdolecek
594 1.1 jdolecek static inline void set_ena_eth_io_tx_desc_header_length(struct ena_eth_io_tx_desc *p, uint32_t val)
595 1.1 jdolecek {
596 1.1 jdolecek p->buff_addr_hi_hdr_sz |= (val << ENA_ETH_IO_TX_DESC_HEADER_LENGTH_SHIFT) & ENA_ETH_IO_TX_DESC_HEADER_LENGTH_MASK;
597 1.1 jdolecek }
598 1.1 jdolecek
599 1.1 jdolecek static inline uint32_t get_ena_eth_io_tx_meta_desc_req_id_lo(const struct ena_eth_io_tx_meta_desc *p)
600 1.1 jdolecek {
601 1.1 jdolecek return p->len_ctrl & ENA_ETH_IO_TX_META_DESC_REQ_ID_LO_MASK;
602 1.1 jdolecek }
603 1.1 jdolecek
604 1.1 jdolecek static inline void set_ena_eth_io_tx_meta_desc_req_id_lo(struct ena_eth_io_tx_meta_desc *p, uint32_t val)
605 1.1 jdolecek {
606 1.1 jdolecek p->len_ctrl |= val & ENA_ETH_IO_TX_META_DESC_REQ_ID_LO_MASK;
607 1.1 jdolecek }
608 1.1 jdolecek
609 1.1 jdolecek static inline uint32_t get_ena_eth_io_tx_meta_desc_ext_valid(const struct ena_eth_io_tx_meta_desc *p)
610 1.1 jdolecek {
611 1.1 jdolecek return (p->len_ctrl & ENA_ETH_IO_TX_META_DESC_EXT_VALID_MASK) >> ENA_ETH_IO_TX_META_DESC_EXT_VALID_SHIFT;
612 1.1 jdolecek }
613 1.1 jdolecek
614 1.1 jdolecek static inline void set_ena_eth_io_tx_meta_desc_ext_valid(struct ena_eth_io_tx_meta_desc *p, uint32_t val)
615 1.1 jdolecek {
616 1.1 jdolecek p->len_ctrl |= (val << ENA_ETH_IO_TX_META_DESC_EXT_VALID_SHIFT) & ENA_ETH_IO_TX_META_DESC_EXT_VALID_MASK;
617 1.1 jdolecek }
618 1.1 jdolecek
619 1.1 jdolecek static inline uint32_t get_ena_eth_io_tx_meta_desc_mss_hi(const struct ena_eth_io_tx_meta_desc *p)
620 1.1 jdolecek {
621 1.1 jdolecek return (p->len_ctrl & ENA_ETH_IO_TX_META_DESC_MSS_HI_MASK) >> ENA_ETH_IO_TX_META_DESC_MSS_HI_SHIFT;
622 1.1 jdolecek }
623 1.1 jdolecek
624 1.1 jdolecek static inline void set_ena_eth_io_tx_meta_desc_mss_hi(struct ena_eth_io_tx_meta_desc *p, uint32_t val)
625 1.1 jdolecek {
626 1.1 jdolecek p->len_ctrl |= (val << ENA_ETH_IO_TX_META_DESC_MSS_HI_SHIFT) & ENA_ETH_IO_TX_META_DESC_MSS_HI_MASK;
627 1.1 jdolecek }
628 1.1 jdolecek
629 1.1 jdolecek static inline uint32_t get_ena_eth_io_tx_meta_desc_eth_meta_type(const struct ena_eth_io_tx_meta_desc *p)
630 1.1 jdolecek {
631 1.1 jdolecek return (p->len_ctrl & ENA_ETH_IO_TX_META_DESC_ETH_META_TYPE_MASK) >> ENA_ETH_IO_TX_META_DESC_ETH_META_TYPE_SHIFT;
632 1.1 jdolecek }
633 1.1 jdolecek
634 1.1 jdolecek static inline void set_ena_eth_io_tx_meta_desc_eth_meta_type(struct ena_eth_io_tx_meta_desc *p, uint32_t val)
635 1.1 jdolecek {
636 1.1 jdolecek p->len_ctrl |= (val << ENA_ETH_IO_TX_META_DESC_ETH_META_TYPE_SHIFT) & ENA_ETH_IO_TX_META_DESC_ETH_META_TYPE_MASK;
637 1.1 jdolecek }
638 1.1 jdolecek
639 1.1 jdolecek static inline uint32_t get_ena_eth_io_tx_meta_desc_meta_store(const struct ena_eth_io_tx_meta_desc *p)
640 1.1 jdolecek {
641 1.1 jdolecek return (p->len_ctrl & ENA_ETH_IO_TX_META_DESC_META_STORE_MASK) >> ENA_ETH_IO_TX_META_DESC_META_STORE_SHIFT;
642 1.1 jdolecek }
643 1.1 jdolecek
644 1.1 jdolecek static inline void set_ena_eth_io_tx_meta_desc_meta_store(struct ena_eth_io_tx_meta_desc *p, uint32_t val)
645 1.1 jdolecek {
646 1.1 jdolecek p->len_ctrl |= (val << ENA_ETH_IO_TX_META_DESC_META_STORE_SHIFT) & ENA_ETH_IO_TX_META_DESC_META_STORE_MASK;
647 1.1 jdolecek }
648 1.1 jdolecek
649 1.1 jdolecek static inline uint32_t get_ena_eth_io_tx_meta_desc_meta_desc(const struct ena_eth_io_tx_meta_desc *p)
650 1.1 jdolecek {
651 1.1 jdolecek return (p->len_ctrl & ENA_ETH_IO_TX_META_DESC_META_DESC_MASK) >> ENA_ETH_IO_TX_META_DESC_META_DESC_SHIFT;
652 1.1 jdolecek }
653 1.1 jdolecek
654 1.1 jdolecek static inline void set_ena_eth_io_tx_meta_desc_meta_desc(struct ena_eth_io_tx_meta_desc *p, uint32_t val)
655 1.1 jdolecek {
656 1.1 jdolecek p->len_ctrl |= (val << ENA_ETH_IO_TX_META_DESC_META_DESC_SHIFT) & ENA_ETH_IO_TX_META_DESC_META_DESC_MASK;
657 1.1 jdolecek }
658 1.1 jdolecek
659 1.1 jdolecek static inline uint32_t get_ena_eth_io_tx_meta_desc_phase(const struct ena_eth_io_tx_meta_desc *p)
660 1.1 jdolecek {
661 1.1 jdolecek return (p->len_ctrl & ENA_ETH_IO_TX_META_DESC_PHASE_MASK) >> ENA_ETH_IO_TX_META_DESC_PHASE_SHIFT;
662 1.1 jdolecek }
663 1.1 jdolecek
664 1.1 jdolecek static inline void set_ena_eth_io_tx_meta_desc_phase(struct ena_eth_io_tx_meta_desc *p, uint32_t val)
665 1.1 jdolecek {
666 1.1 jdolecek p->len_ctrl |= (val << ENA_ETH_IO_TX_META_DESC_PHASE_SHIFT) & ENA_ETH_IO_TX_META_DESC_PHASE_MASK;
667 1.1 jdolecek }
668 1.1 jdolecek
669 1.1 jdolecek static inline uint32_t get_ena_eth_io_tx_meta_desc_first(const struct ena_eth_io_tx_meta_desc *p)
670 1.1 jdolecek {
671 1.1 jdolecek return (p->len_ctrl & ENA_ETH_IO_TX_META_DESC_FIRST_MASK) >> ENA_ETH_IO_TX_META_DESC_FIRST_SHIFT;
672 1.1 jdolecek }
673 1.1 jdolecek
674 1.1 jdolecek static inline void set_ena_eth_io_tx_meta_desc_first(struct ena_eth_io_tx_meta_desc *p, uint32_t val)
675 1.1 jdolecek {
676 1.1 jdolecek p->len_ctrl |= (val << ENA_ETH_IO_TX_META_DESC_FIRST_SHIFT) & ENA_ETH_IO_TX_META_DESC_FIRST_MASK;
677 1.1 jdolecek }
678 1.1 jdolecek
679 1.1 jdolecek static inline uint32_t get_ena_eth_io_tx_meta_desc_last(const struct ena_eth_io_tx_meta_desc *p)
680 1.1 jdolecek {
681 1.1 jdolecek return (p->len_ctrl & ENA_ETH_IO_TX_META_DESC_LAST_MASK) >> ENA_ETH_IO_TX_META_DESC_LAST_SHIFT;
682 1.1 jdolecek }
683 1.1 jdolecek
684 1.1 jdolecek static inline void set_ena_eth_io_tx_meta_desc_last(struct ena_eth_io_tx_meta_desc *p, uint32_t val)
685 1.1 jdolecek {
686 1.1 jdolecek p->len_ctrl |= (val << ENA_ETH_IO_TX_META_DESC_LAST_SHIFT) & ENA_ETH_IO_TX_META_DESC_LAST_MASK;
687 1.1 jdolecek }
688 1.1 jdolecek
689 1.1 jdolecek static inline uint32_t get_ena_eth_io_tx_meta_desc_comp_req(const struct ena_eth_io_tx_meta_desc *p)
690 1.1 jdolecek {
691 1.1 jdolecek return (p->len_ctrl & ENA_ETH_IO_TX_META_DESC_COMP_REQ_MASK) >> ENA_ETH_IO_TX_META_DESC_COMP_REQ_SHIFT;
692 1.1 jdolecek }
693 1.1 jdolecek
694 1.1 jdolecek static inline void set_ena_eth_io_tx_meta_desc_comp_req(struct ena_eth_io_tx_meta_desc *p, uint32_t val)
695 1.1 jdolecek {
696 1.1 jdolecek p->len_ctrl |= (val << ENA_ETH_IO_TX_META_DESC_COMP_REQ_SHIFT) & ENA_ETH_IO_TX_META_DESC_COMP_REQ_MASK;
697 1.1 jdolecek }
698 1.1 jdolecek
699 1.1 jdolecek static inline uint32_t get_ena_eth_io_tx_meta_desc_req_id_hi(const struct ena_eth_io_tx_meta_desc *p)
700 1.1 jdolecek {
701 1.1 jdolecek return p->word1 & ENA_ETH_IO_TX_META_DESC_REQ_ID_HI_MASK;
702 1.1 jdolecek }
703 1.1 jdolecek
704 1.1 jdolecek static inline void set_ena_eth_io_tx_meta_desc_req_id_hi(struct ena_eth_io_tx_meta_desc *p, uint32_t val)
705 1.1 jdolecek {
706 1.1 jdolecek p->word1 |= val & ENA_ETH_IO_TX_META_DESC_REQ_ID_HI_MASK;
707 1.1 jdolecek }
708 1.1 jdolecek
709 1.1 jdolecek static inline uint32_t get_ena_eth_io_tx_meta_desc_l3_hdr_len(const struct ena_eth_io_tx_meta_desc *p)
710 1.1 jdolecek {
711 1.1 jdolecek return p->word2 & ENA_ETH_IO_TX_META_DESC_L3_HDR_LEN_MASK;
712 1.1 jdolecek }
713 1.1 jdolecek
714 1.1 jdolecek static inline void set_ena_eth_io_tx_meta_desc_l3_hdr_len(struct ena_eth_io_tx_meta_desc *p, uint32_t val)
715 1.1 jdolecek {
716 1.1 jdolecek p->word2 |= val & ENA_ETH_IO_TX_META_DESC_L3_HDR_LEN_MASK;
717 1.1 jdolecek }
718 1.1 jdolecek
719 1.1 jdolecek static inline uint32_t get_ena_eth_io_tx_meta_desc_l3_hdr_off(const struct ena_eth_io_tx_meta_desc *p)
720 1.1 jdolecek {
721 1.1 jdolecek return (p->word2 & ENA_ETH_IO_TX_META_DESC_L3_HDR_OFF_MASK) >> ENA_ETH_IO_TX_META_DESC_L3_HDR_OFF_SHIFT;
722 1.1 jdolecek }
723 1.1 jdolecek
724 1.1 jdolecek static inline void set_ena_eth_io_tx_meta_desc_l3_hdr_off(struct ena_eth_io_tx_meta_desc *p, uint32_t val)
725 1.1 jdolecek {
726 1.1 jdolecek p->word2 |= (val << ENA_ETH_IO_TX_META_DESC_L3_HDR_OFF_SHIFT) & ENA_ETH_IO_TX_META_DESC_L3_HDR_OFF_MASK;
727 1.1 jdolecek }
728 1.1 jdolecek
729 1.1 jdolecek static inline uint32_t get_ena_eth_io_tx_meta_desc_l4_hdr_len_in_words(const struct ena_eth_io_tx_meta_desc *p)
730 1.1 jdolecek {
731 1.1 jdolecek return (p->word2 & ENA_ETH_IO_TX_META_DESC_L4_HDR_LEN_IN_WORDS_MASK) >> ENA_ETH_IO_TX_META_DESC_L4_HDR_LEN_IN_WORDS_SHIFT;
732 1.1 jdolecek }
733 1.1 jdolecek
734 1.1 jdolecek static inline void set_ena_eth_io_tx_meta_desc_l4_hdr_len_in_words(struct ena_eth_io_tx_meta_desc *p, uint32_t val)
735 1.1 jdolecek {
736 1.1 jdolecek p->word2 |= (val << ENA_ETH_IO_TX_META_DESC_L4_HDR_LEN_IN_WORDS_SHIFT) & ENA_ETH_IO_TX_META_DESC_L4_HDR_LEN_IN_WORDS_MASK;
737 1.1 jdolecek }
738 1.1 jdolecek
739 1.1 jdolecek static inline uint32_t get_ena_eth_io_tx_meta_desc_mss_lo(const struct ena_eth_io_tx_meta_desc *p)
740 1.1 jdolecek {
741 1.1 jdolecek return (p->word2 & ENA_ETH_IO_TX_META_DESC_MSS_LO_MASK) >> ENA_ETH_IO_TX_META_DESC_MSS_LO_SHIFT;
742 1.1 jdolecek }
743 1.1 jdolecek
744 1.1 jdolecek static inline void set_ena_eth_io_tx_meta_desc_mss_lo(struct ena_eth_io_tx_meta_desc *p, uint32_t val)
745 1.1 jdolecek {
746 1.1 jdolecek p->word2 |= (val << ENA_ETH_IO_TX_META_DESC_MSS_LO_SHIFT) & ENA_ETH_IO_TX_META_DESC_MSS_LO_MASK;
747 1.1 jdolecek }
748 1.1 jdolecek
749 1.1 jdolecek static inline uint8_t get_ena_eth_io_tx_cdesc_phase(const struct ena_eth_io_tx_cdesc *p)
750 1.1 jdolecek {
751 1.1 jdolecek return p->flags & ENA_ETH_IO_TX_CDESC_PHASE_MASK;
752 1.1 jdolecek }
753 1.1 jdolecek
754 1.1 jdolecek static inline void set_ena_eth_io_tx_cdesc_phase(struct ena_eth_io_tx_cdesc *p, uint8_t val)
755 1.1 jdolecek {
756 1.1 jdolecek p->flags |= val & ENA_ETH_IO_TX_CDESC_PHASE_MASK;
757 1.1 jdolecek }
758 1.1 jdolecek
759 1.1 jdolecek static inline uint8_t get_ena_eth_io_rx_desc_phase(const struct ena_eth_io_rx_desc *p)
760 1.1 jdolecek {
761 1.1 jdolecek return p->ctrl & ENA_ETH_IO_RX_DESC_PHASE_MASK;
762 1.1 jdolecek }
763 1.1 jdolecek
764 1.1 jdolecek static inline void set_ena_eth_io_rx_desc_phase(struct ena_eth_io_rx_desc *p, uint8_t val)
765 1.1 jdolecek {
766 1.1 jdolecek p->ctrl |= val & ENA_ETH_IO_RX_DESC_PHASE_MASK;
767 1.1 jdolecek }
768 1.1 jdolecek
769 1.1 jdolecek static inline uint8_t get_ena_eth_io_rx_desc_first(const struct ena_eth_io_rx_desc *p)
770 1.1 jdolecek {
771 1.1 jdolecek return (p->ctrl & ENA_ETH_IO_RX_DESC_FIRST_MASK) >> ENA_ETH_IO_RX_DESC_FIRST_SHIFT;
772 1.1 jdolecek }
773 1.1 jdolecek
774 1.1 jdolecek static inline void set_ena_eth_io_rx_desc_first(struct ena_eth_io_rx_desc *p, uint8_t val)
775 1.1 jdolecek {
776 1.1 jdolecek p->ctrl |= (val << ENA_ETH_IO_RX_DESC_FIRST_SHIFT) & ENA_ETH_IO_RX_DESC_FIRST_MASK;
777 1.1 jdolecek }
778 1.1 jdolecek
779 1.1 jdolecek static inline uint8_t get_ena_eth_io_rx_desc_last(const struct ena_eth_io_rx_desc *p)
780 1.1 jdolecek {
781 1.1 jdolecek return (p->ctrl & ENA_ETH_IO_RX_DESC_LAST_MASK) >> ENA_ETH_IO_RX_DESC_LAST_SHIFT;
782 1.1 jdolecek }
783 1.1 jdolecek
784 1.1 jdolecek static inline void set_ena_eth_io_rx_desc_last(struct ena_eth_io_rx_desc *p, uint8_t val)
785 1.1 jdolecek {
786 1.1 jdolecek p->ctrl |= (val << ENA_ETH_IO_RX_DESC_LAST_SHIFT) & ENA_ETH_IO_RX_DESC_LAST_MASK;
787 1.1 jdolecek }
788 1.1 jdolecek
789 1.1 jdolecek static inline uint8_t get_ena_eth_io_rx_desc_comp_req(const struct ena_eth_io_rx_desc *p)
790 1.1 jdolecek {
791 1.1 jdolecek return (p->ctrl & ENA_ETH_IO_RX_DESC_COMP_REQ_MASK) >> ENA_ETH_IO_RX_DESC_COMP_REQ_SHIFT;
792 1.1 jdolecek }
793 1.1 jdolecek
794 1.1 jdolecek static inline void set_ena_eth_io_rx_desc_comp_req(struct ena_eth_io_rx_desc *p, uint8_t val)
795 1.1 jdolecek {
796 1.1 jdolecek p->ctrl |= (val << ENA_ETH_IO_RX_DESC_COMP_REQ_SHIFT) & ENA_ETH_IO_RX_DESC_COMP_REQ_MASK;
797 1.1 jdolecek }
798 1.1 jdolecek
799 1.1 jdolecek static inline uint32_t get_ena_eth_io_rx_cdesc_base_l3_proto_idx(const struct ena_eth_io_rx_cdesc_base *p)
800 1.1 jdolecek {
801 1.1 jdolecek return p->status & ENA_ETH_IO_RX_CDESC_BASE_L3_PROTO_IDX_MASK;
802 1.1 jdolecek }
803 1.1 jdolecek
804 1.1 jdolecek static inline void set_ena_eth_io_rx_cdesc_base_l3_proto_idx(struct ena_eth_io_rx_cdesc_base *p, uint32_t val)
805 1.1 jdolecek {
806 1.1 jdolecek p->status |= val & ENA_ETH_IO_RX_CDESC_BASE_L3_PROTO_IDX_MASK;
807 1.1 jdolecek }
808 1.1 jdolecek
809 1.1 jdolecek static inline uint32_t get_ena_eth_io_rx_cdesc_base_src_vlan_cnt(const struct ena_eth_io_rx_cdesc_base *p)
810 1.1 jdolecek {
811 1.1 jdolecek return (p->status & ENA_ETH_IO_RX_CDESC_BASE_SRC_VLAN_CNT_MASK) >> ENA_ETH_IO_RX_CDESC_BASE_SRC_VLAN_CNT_SHIFT;
812 1.1 jdolecek }
813 1.1 jdolecek
814 1.1 jdolecek static inline void set_ena_eth_io_rx_cdesc_base_src_vlan_cnt(struct ena_eth_io_rx_cdesc_base *p, uint32_t val)
815 1.1 jdolecek {
816 1.1 jdolecek p->status |= (val << ENA_ETH_IO_RX_CDESC_BASE_SRC_VLAN_CNT_SHIFT) & ENA_ETH_IO_RX_CDESC_BASE_SRC_VLAN_CNT_MASK;
817 1.1 jdolecek }
818 1.1 jdolecek
819 1.1 jdolecek static inline uint32_t get_ena_eth_io_rx_cdesc_base_l4_proto_idx(const struct ena_eth_io_rx_cdesc_base *p)
820 1.1 jdolecek {
821 1.1 jdolecek return (p->status & ENA_ETH_IO_RX_CDESC_BASE_L4_PROTO_IDX_MASK) >> ENA_ETH_IO_RX_CDESC_BASE_L4_PROTO_IDX_SHIFT;
822 1.1 jdolecek }
823 1.1 jdolecek
824 1.1 jdolecek static inline void set_ena_eth_io_rx_cdesc_base_l4_proto_idx(struct ena_eth_io_rx_cdesc_base *p, uint32_t val)
825 1.1 jdolecek {
826 1.1 jdolecek p->status |= (val << ENA_ETH_IO_RX_CDESC_BASE_L4_PROTO_IDX_SHIFT) & ENA_ETH_IO_RX_CDESC_BASE_L4_PROTO_IDX_MASK;
827 1.1 jdolecek }
828 1.1 jdolecek
829 1.1 jdolecek static inline uint32_t get_ena_eth_io_rx_cdesc_base_l3_csum_err(const struct ena_eth_io_rx_cdesc_base *p)
830 1.1 jdolecek {
831 1.1 jdolecek return (p->status & ENA_ETH_IO_RX_CDESC_BASE_L3_CSUM_ERR_MASK) >> ENA_ETH_IO_RX_CDESC_BASE_L3_CSUM_ERR_SHIFT;
832 1.1 jdolecek }
833 1.1 jdolecek
834 1.1 jdolecek static inline void set_ena_eth_io_rx_cdesc_base_l3_csum_err(struct ena_eth_io_rx_cdesc_base *p, uint32_t val)
835 1.1 jdolecek {
836 1.1 jdolecek p->status |= (val << ENA_ETH_IO_RX_CDESC_BASE_L3_CSUM_ERR_SHIFT) & ENA_ETH_IO_RX_CDESC_BASE_L3_CSUM_ERR_MASK;
837 1.1 jdolecek }
838 1.1 jdolecek
839 1.1 jdolecek static inline uint32_t get_ena_eth_io_rx_cdesc_base_l4_csum_err(const struct ena_eth_io_rx_cdesc_base *p)
840 1.1 jdolecek {
841 1.1 jdolecek return (p->status & ENA_ETH_IO_RX_CDESC_BASE_L4_CSUM_ERR_MASK) >> ENA_ETH_IO_RX_CDESC_BASE_L4_CSUM_ERR_SHIFT;
842 1.1 jdolecek }
843 1.1 jdolecek
844 1.1 jdolecek static inline void set_ena_eth_io_rx_cdesc_base_l4_csum_err(struct ena_eth_io_rx_cdesc_base *p, uint32_t val)
845 1.1 jdolecek {
846 1.1 jdolecek p->status |= (val << ENA_ETH_IO_RX_CDESC_BASE_L4_CSUM_ERR_SHIFT) & ENA_ETH_IO_RX_CDESC_BASE_L4_CSUM_ERR_MASK;
847 1.1 jdolecek }
848 1.1 jdolecek
849 1.1 jdolecek static inline uint32_t get_ena_eth_io_rx_cdesc_base_ipv4_frag(const struct ena_eth_io_rx_cdesc_base *p)
850 1.1 jdolecek {
851 1.1 jdolecek return (p->status & ENA_ETH_IO_RX_CDESC_BASE_IPV4_FRAG_MASK) >> ENA_ETH_IO_RX_CDESC_BASE_IPV4_FRAG_SHIFT;
852 1.1 jdolecek }
853 1.1 jdolecek
854 1.1 jdolecek static inline void set_ena_eth_io_rx_cdesc_base_ipv4_frag(struct ena_eth_io_rx_cdesc_base *p, uint32_t val)
855 1.1 jdolecek {
856 1.1 jdolecek p->status |= (val << ENA_ETH_IO_RX_CDESC_BASE_IPV4_FRAG_SHIFT) & ENA_ETH_IO_RX_CDESC_BASE_IPV4_FRAG_MASK;
857 1.1 jdolecek }
858 1.1 jdolecek
859 1.1 jdolecek static inline uint32_t get_ena_eth_io_rx_cdesc_base_phase(const struct ena_eth_io_rx_cdesc_base *p)
860 1.1 jdolecek {
861 1.1 jdolecek return (p->status & ENA_ETH_IO_RX_CDESC_BASE_PHASE_MASK) >> ENA_ETH_IO_RX_CDESC_BASE_PHASE_SHIFT;
862 1.1 jdolecek }
863 1.1 jdolecek
864 1.1 jdolecek static inline void set_ena_eth_io_rx_cdesc_base_phase(struct ena_eth_io_rx_cdesc_base *p, uint32_t val)
865 1.1 jdolecek {
866 1.1 jdolecek p->status |= (val << ENA_ETH_IO_RX_CDESC_BASE_PHASE_SHIFT) & ENA_ETH_IO_RX_CDESC_BASE_PHASE_MASK;
867 1.1 jdolecek }
868 1.1 jdolecek
869 1.1 jdolecek static inline uint32_t get_ena_eth_io_rx_cdesc_base_l3_csum2(const struct ena_eth_io_rx_cdesc_base *p)
870 1.1 jdolecek {
871 1.1 jdolecek return (p->status & ENA_ETH_IO_RX_CDESC_BASE_L3_CSUM2_MASK) >> ENA_ETH_IO_RX_CDESC_BASE_L3_CSUM2_SHIFT;
872 1.1 jdolecek }
873 1.1 jdolecek
874 1.1 jdolecek static inline void set_ena_eth_io_rx_cdesc_base_l3_csum2(struct ena_eth_io_rx_cdesc_base *p, uint32_t val)
875 1.1 jdolecek {
876 1.1 jdolecek p->status |= (val << ENA_ETH_IO_RX_CDESC_BASE_L3_CSUM2_SHIFT) & ENA_ETH_IO_RX_CDESC_BASE_L3_CSUM2_MASK;
877 1.1 jdolecek }
878 1.1 jdolecek
879 1.1 jdolecek static inline uint32_t get_ena_eth_io_rx_cdesc_base_first(const struct ena_eth_io_rx_cdesc_base *p)
880 1.1 jdolecek {
881 1.1 jdolecek return (p->status & ENA_ETH_IO_RX_CDESC_BASE_FIRST_MASK) >> ENA_ETH_IO_RX_CDESC_BASE_FIRST_SHIFT;
882 1.1 jdolecek }
883 1.1 jdolecek
884 1.1 jdolecek static inline void set_ena_eth_io_rx_cdesc_base_first(struct ena_eth_io_rx_cdesc_base *p, uint32_t val)
885 1.1 jdolecek {
886 1.1 jdolecek p->status |= (val << ENA_ETH_IO_RX_CDESC_BASE_FIRST_SHIFT) & ENA_ETH_IO_RX_CDESC_BASE_FIRST_MASK;
887 1.1 jdolecek }
888 1.1 jdolecek
889 1.1 jdolecek static inline uint32_t get_ena_eth_io_rx_cdesc_base_last(const struct ena_eth_io_rx_cdesc_base *p)
890 1.1 jdolecek {
891 1.1 jdolecek return (p->status & ENA_ETH_IO_RX_CDESC_BASE_LAST_MASK) >> ENA_ETH_IO_RX_CDESC_BASE_LAST_SHIFT;
892 1.1 jdolecek }
893 1.1 jdolecek
894 1.1 jdolecek static inline void set_ena_eth_io_rx_cdesc_base_last(struct ena_eth_io_rx_cdesc_base *p, uint32_t val)
895 1.1 jdolecek {
896 1.1 jdolecek p->status |= (val << ENA_ETH_IO_RX_CDESC_BASE_LAST_SHIFT) & ENA_ETH_IO_RX_CDESC_BASE_LAST_MASK;
897 1.1 jdolecek }
898 1.1 jdolecek
899 1.1 jdolecek static inline uint32_t get_ena_eth_io_rx_cdesc_base_buffer(const struct ena_eth_io_rx_cdesc_base *p)
900 1.1 jdolecek {
901 1.1 jdolecek return (p->status & ENA_ETH_IO_RX_CDESC_BASE_BUFFER_MASK) >> ENA_ETH_IO_RX_CDESC_BASE_BUFFER_SHIFT;
902 1.1 jdolecek }
903 1.1 jdolecek
904 1.1 jdolecek static inline void set_ena_eth_io_rx_cdesc_base_buffer(struct ena_eth_io_rx_cdesc_base *p, uint32_t val)
905 1.1 jdolecek {
906 1.1 jdolecek p->status |= (val << ENA_ETH_IO_RX_CDESC_BASE_BUFFER_SHIFT) & ENA_ETH_IO_RX_CDESC_BASE_BUFFER_MASK;
907 1.1 jdolecek }
908 1.1 jdolecek
909 1.1 jdolecek static inline uint32_t get_ena_eth_io_intr_reg_rx_intr_delay(const struct ena_eth_io_intr_reg *p)
910 1.1 jdolecek {
911 1.1 jdolecek return p->intr_control & ENA_ETH_IO_INTR_REG_RX_INTR_DELAY_MASK;
912 1.1 jdolecek }
913 1.1 jdolecek
914 1.1 jdolecek static inline void set_ena_eth_io_intr_reg_rx_intr_delay(struct ena_eth_io_intr_reg *p, uint32_t val)
915 1.1 jdolecek {
916 1.1 jdolecek p->intr_control |= val & ENA_ETH_IO_INTR_REG_RX_INTR_DELAY_MASK;
917 1.1 jdolecek }
918 1.1 jdolecek
919 1.1 jdolecek static inline uint32_t get_ena_eth_io_intr_reg_tx_intr_delay(const struct ena_eth_io_intr_reg *p)
920 1.1 jdolecek {
921 1.1 jdolecek return (p->intr_control & ENA_ETH_IO_INTR_REG_TX_INTR_DELAY_MASK) >> ENA_ETH_IO_INTR_REG_TX_INTR_DELAY_SHIFT;
922 1.1 jdolecek }
923 1.1 jdolecek
924 1.1 jdolecek static inline void set_ena_eth_io_intr_reg_tx_intr_delay(struct ena_eth_io_intr_reg *p, uint32_t val)
925 1.1 jdolecek {
926 1.1 jdolecek p->intr_control |= (val << ENA_ETH_IO_INTR_REG_TX_INTR_DELAY_SHIFT) & ENA_ETH_IO_INTR_REG_TX_INTR_DELAY_MASK;
927 1.1 jdolecek }
928 1.1 jdolecek
929 1.1 jdolecek static inline uint32_t get_ena_eth_io_intr_reg_intr_unmask(const struct ena_eth_io_intr_reg *p)
930 1.1 jdolecek {
931 1.1 jdolecek return (p->intr_control & ENA_ETH_IO_INTR_REG_INTR_UNMASK_MASK) >> ENA_ETH_IO_INTR_REG_INTR_UNMASK_SHIFT;
932 1.1 jdolecek }
933 1.1 jdolecek
934 1.1 jdolecek static inline void set_ena_eth_io_intr_reg_intr_unmask(struct ena_eth_io_intr_reg *p, uint32_t val)
935 1.1 jdolecek {
936 1.1 jdolecek p->intr_control |= (val << ENA_ETH_IO_INTR_REG_INTR_UNMASK_SHIFT) & ENA_ETH_IO_INTR_REG_INTR_UNMASK_MASK;
937 1.1 jdolecek }
938 1.1 jdolecek
939 1.1 jdolecek static inline uint32_t get_ena_eth_io_numa_node_cfg_reg_numa(const struct ena_eth_io_numa_node_cfg_reg *p)
940 1.1 jdolecek {
941 1.1 jdolecek return p->numa_cfg & ENA_ETH_IO_NUMA_NODE_CFG_REG_NUMA_MASK;
942 1.1 jdolecek }
943 1.1 jdolecek
944 1.1 jdolecek static inline void set_ena_eth_io_numa_node_cfg_reg_numa(struct ena_eth_io_numa_node_cfg_reg *p, uint32_t val)
945 1.1 jdolecek {
946 1.1 jdolecek p->numa_cfg |= val & ENA_ETH_IO_NUMA_NODE_CFG_REG_NUMA_MASK;
947 1.1 jdolecek }
948 1.1 jdolecek
949 1.1 jdolecek static inline uint32_t get_ena_eth_io_numa_node_cfg_reg_enabled(const struct ena_eth_io_numa_node_cfg_reg *p)
950 1.1 jdolecek {
951 1.1 jdolecek return (p->numa_cfg & ENA_ETH_IO_NUMA_NODE_CFG_REG_ENABLED_MASK) >> ENA_ETH_IO_NUMA_NODE_CFG_REG_ENABLED_SHIFT;
952 1.1 jdolecek }
953 1.1 jdolecek
954 1.1 jdolecek static inline void set_ena_eth_io_numa_node_cfg_reg_enabled(struct ena_eth_io_numa_node_cfg_reg *p, uint32_t val)
955 1.1 jdolecek {
956 1.1 jdolecek p->numa_cfg |= (val << ENA_ETH_IO_NUMA_NODE_CFG_REG_ENABLED_SHIFT) & ENA_ETH_IO_NUMA_NODE_CFG_REG_ENABLED_MASK;
957 1.1 jdolecek }
958 1.1 jdolecek
959 1.1 jdolecek #endif /* !defined(ENA_DEFS_LINUX_MAINLINE) */
960 1.1 jdolecek #endif /*_ENA_ETH_IO_H_ */
961