AM243x MCU+ SDK  08.04.00
enet_udma_psi.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) Texas Instruments Incorporated 2020
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  *
8  * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  *
11  * Redistributions in binary form must reproduce the above copyright
12  * notice, this list of conditions and the following disclaimer in the
13  * documentation and/or other materials provided with the
14  * distribution.
15  *
16  * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 
47 #ifndef ENET_UDMA_PSI_H_
48 #define ENET_UDMA_PSI_H_
49 
50 /* ========================================================================== */
51 /* Include Files */
52 /* ========================================================================== */
53 
54 #include <stdint.h>
55 
56 #ifdef __cplusplus
57 extern "C" {
58 #endif
59 
60 /* ========================================================================== */
61 /* Macros */
62 /* ========================================================================== */
63 
64 /* -------------------- CPPI TX Info Word 0 definitions --------------------- */
65 
67 #define ENETUDMA_CPPI_TXINFO_WORD0_FLOWID_SHIFT (0U)
68 
70 #define ENETUDMA_CPPI_TXINFO_WORD0_FLOWID_MASK (((uint32_t) 0xFFU) << ENETUDMA_CPPI_TXINFO_WORD0_FLOWID_SHIFT)
71 
73 #define ENETUDMA_CPPI_TXINFO_WORD0_CRCTYPE_SHIFT (22U)
74 
76 #define ENETUDMA_CPPI_TXINFO_WORD0_CRCTYPE_MASK (((uint32_t) 0x1U) << ENETUDMA_CPPI_TXINFO_WORD0_CRCTYPE_SHIFT)
77 
79 #define ENETUDMA_CPPI_TXINFO_WORD0_PASSCRC_SHIFT (23U)
80 
82 #define ENETUDMA_CPPI_TXINFO_WORD0_PASSCRC_MASK (((uint32_t) 0x1U) << ENETUDMA_CPPI_TXINFO_WORD0_PASSCRC_SHIFT)
83 
85 #define ENETUDMA_CPPI_TXINFO_WORD0_PKTTYPE_SHIFT (27U)
86 
88 #define ENETUDMA_CPPI_TXINFO_WORD0_PKTTYPE_MASK (((uint32_t) 0x1FU) << ENETUDMA_CPPI_TXINFO_WORD0_PKTTYPE_SHIFT)
89 
90 
91 /* -------------------- CPPI TX Info Word 1 definitions --------------------- */
92 
94 #define ENETUDMA_CPPI_TXINFO_WORD1_PKTLEN_SHIFT (0U)
95 
97 #define ENETUDMA_CPPI_TXINFO_WORD1_PKTLEN_MASK (((uint32_t) 0x3FFF) << ENETUDMA_CPPI_TXINFO_WORD1_PKTLEN_SHIFT)
98 
99 
100 /* -------------------- CPPI TX Info Word 3 definitions --------------------- */
101 
103 #define ENETUDMA_CPPI_TXINFO_WORD3_SRCID_SHIFT (16U)
104 
106 #define ENETUDMA_CPPI_TXINFO_WORD3_SRCID_MASK (((uint32_t) 0xFF) << ENETUDMA_CPPI_TXINFO_WORD3_SRCID_SHIFT)
107 
108 
109 /* -------------------- CPPI TX Status Word 2 definitions --------------------- */
110 
112 #define ENETUDMA_CPPI_TXSTATUS_WORD2_CHKSUM_ADD_SHIFT (0U)
113 
115 #define ENETUDMA_CPPI_TXSTATUS_WORD2_CHKSUM_ADD_MASK (((uint32_t) 0xFFFF) << ENETUDMA_CPPI_TXSTATUS_WORD2_CHKSUM_ADD_SHIFT)
116 
118 #define ENETUDMA_CPPI_TXSTATUS_WORD2_CHKSUM_ERR_SHIFT (16U)
119 
121 #define ENETUDMA_CPPI_TXSTATUS_WORD2_CHKSUM_ERR_MASK (((uint32_t) 0x1U) << ENETUDMA_CPPI_TXSTATUS_WORD2_CHKSUM_ERR_SHIFT)
122 
124 #define ENETUDMA_CPPI_TXSTATUS_WORD2_FRAGMENT_SHIFT (17U)
125 
127 #define ENETUDMA_CPPI_TXSTATUS_WORD2_FRAGMENT_MASK (((uint32_t) 0x1U) << ENETUDMA_CPPI_TXSTATUS_WORD2_FRAGMENT_SHIFT)
128 
130 #define ENETUDMA_CPPI_TXSTATUS_WORD2_TCP_UDP_N_SHIFT (18U)
131 
133 #define ENETUDMA_CPPI_TXSTATUS_WORD2_TCP_UDP_N_MASK (((uint32_t) 0x1U) << ENETUDMA_CPPI_TXSTATUS_WORD2_TCP_UDP_N_SHIFT)
134 
136 #define ENETUDMA_CPPI_TXSTATUS_WORD2_IPV6_VALID_SHIFT (19U)
137 
139 #define ENETUDMA_CPPI_TXSTATUS_WORD2_IPV6_VALID_MASK (((uint32_t) 0x1U) << ENETUDMA_CPPI_TXSTATUS_WORD2_IPV6_VALID_SHIFT)
140 
142 #define ENETUDMA_CPPI_TXSTATUS_WORD2_IPV4_VALID_SHIFT (20U)
143 
145 #define ENETUDMA_CPPI_TXSTATUS_WORD2_IPV4_VALID_MASK (((uint32_t) 0x1U) << ENETUDMA_CPPI_TXSTATUS_WORD2_IPV4_VALID_SHIFT)
146 
147 
148 /* -------------------- CPPI RX Info Word 0 definitions --------------------- */
149 
151 #define ENETUDMA_CPPI_RXINFO_WORD0_CRCTYPE_SHIFT (22U)
152 
154 #define ENETUDMA_CPPI_RXINFO_WORD0_CRCTYPE_MASK (((uint32_t) 0x1U) << ENETUDMA_CPPI_RXINFO_WORD0_CRCTYPE_SHIFT)
155 
157 #define ENETUDMA_CPPI_RXINFO_WORD0_PASSCRC_SHIFT (23U)
158 
160 #define ENETUDMA_CPPI_RXINFO_WORD0_PASSCRC_MASK (((uint32_t) 0x1U) << ENETUDMA_CPPI_RXINFO_WORD0_PASSCRC_SHIFT)
161 
162 
163 /* -------------------- CPPI RX Info Word 2 definitions --------------------- */
164 
166 #define ENETUDMA_CPPI_RXINFO_WORD2_TOPORT_SHIFT (16U)
167 
169 #define ENETUDMA_CPPI_RXINFO_WORD2_TOPORT_MASK (((uint32_t) 0x1FU) << ENETUDMA_CPPI_RXINFO_WORD2_TOPORT_SHIFT)
170 
171 
172 /* -------------------- CPPI RX Control Word 1 definitions --------------------- */
173 
175 #define ENETUDMA_CPPI_RXCTRL_WORD1_SEQID_SHIFT (0U)
176 
178 #define ENETUDMA_CPPI_RXCTRL_WORD1_SEQID_MASK (((uint32_t) 0xFFFFU) << ENETUDMA_CPPI_RXCTRL_WORD1_SEQID_SHIFT)
179 
181 #define ENETUDMA_CPPI_RXCTRL_WORD1_MSGTYPE_SHIFT (16U)
182 
184 #define ENETUDMA_CPPI_RXCTRL_WORD1_MSGTYPE_MASK (((uint32_t) 0xFU) << ENETUDMA_CPPI_RXCTRL_WORD1_MSGTYPE_SHIFT)
185 
187 #define ENETUDMA_CPPI_RXCTRL_WORD1_DOMAIN_SHIFT (20U)
188 
190 #define ENETUDMA_CPPI_RXCTRL_WORD1_DOMAIN_MASK (((uint32_t) 0xFFU) << ENETUDMA_CPPI_RXCTRL_WORD1_DOMAIN_SHIFT)
191 
193 #define ENETUDMA_CPPI_RXCTRL_WORD1_TSEN_SHIFT (31U)
194 
196 #define ENETUDMA_CPPI_RXCTRL_WORD1_TSEN_MASK (((uint32_t) 0x1U) << ENETUDMA_CPPI_RXCTRL_WORD1_TSEN_SHIFT)
197 
198 
199 /* -------------------- CPPI RX Control Word 2 definitions --------------------- */
200 
202 #define ENETUDMA_CPPI_RXCTRL_WORD2_CHKSUM_BYTECNT_SHIFT (0U)
203 
205 #define ENETUDMA_CPPI_RXCTRL_WORD2_CHKSUM_BYTECNT_MASK (((uint32_t) 0x3FFFU) << ENETUDMA_CPPI_RXCTRL_WORD1_SEQID_SHIFT)
206 
208 #define ENETUDMA_CPPI_RXCTRL_WORD2_CHKSUM_INV_SHIFT (15U)
209 
211 #define ENETUDMA_CPPI_RXCTRL_WORD2_CHKSUM_INV_MASK (((uint32_t) 0x1U) << ENETUDMA_CPPI_RXCTRL_WORD2_CHKSUM_INV_SHIFT)
212 
214 #define ENETUDMA_CPPI_RXCTRL_WORD2_CHKSUM_STARTBYTE_SHIFT (16U)
215 
217 #define ENETUDMA_CPPI_RXCTRL_WORD2_CHKSUM_STARTBYTE_MASK (((uint32_t) 0xFFU) << ENETUDMA_CPPI_RXCTRL_WORD2_CHKSUM_STARTBYTE_SHIFT)
218 
220 #define ENETUDMA_CPPI_RXCTRL_WORD2_CHKSUM_RESULT_SHIFT (24U)
221 
223 #define ENETUDMA_CPPI_RXCTRL_WORD2_CHKSUM_RESULT_MASK (((uint32_t) 0xFFU) << ENETUDMA_CPPI_RXCTRL_WORD2_CHKSUM_RESULT_SHIFT)
224 
225 
226 /* -- Utilities macros to extract fields from the CPPI TX (host RX) PSI words -- */
227 
229 #define ENETUDMA_CPPIPSI_GET_IPV4_FLAG(chkSumInfo) \
230  ENET_FEXT(chkSumInfo, ENETUDMA_CPPI_TXSTATUS_WORD2_IPV4_VALID)
231 
233 #define ENETUDMA_CPPIPSI_GET_IPV6_FLAG(chkSumInfo) \
234  ENET_FEXT(chkSumInfo, ENETUDMA_CPPI_TXSTATUS_WORD2_IPV6_VALID)
235 
237 #define ENETUDMA_CPPIPSI_GET_TCPUDP_N_FLAG(chkSumInfo) \
238  ENET_FEXT(chkSumInfo, ENETUDMA_CPPI_TXSTATUS_WORD2_TCP_UDP_N)
239 
241 #define ENETUDMA_CPPIPSI_GET_FRAGMENT_FLAG(chkSumInfo) \
242  ENET_FEXT(chkSumInfo, ENETUDMA_CPPI_TXSTATUS_WORD2_FRAGMENT)
243 
245 #define ENETUDMA_CPPIPSI_GET_CHKSUM_ERR_FLAG(chkSumInfo) \
246  ENET_FEXT(chkSumInfo, ENETUDMA_CPPI_TXSTATUS_WORD2_CHKSUM_ERR)
247 
249 #define ENETUDMA_CPPIPSI_GET_CHKSUM_RESULT(chkSumInfo) \
250  ENET_FEXT(chkSumInfo, ENETUDMA_CPPI_TXSTATUS_WORD2_CHKSUM_ADD)
251 
252 
253 /* --- Utilities macros to insert fields into the CPPI RX (host TX) PSI words --- */
254 
256 #define ENETUDMA_CPPIPSI_SET_CHKSUM_RES(chkSumInfo, val) \
257  ENET_FINS(chkSumInfo, ENETUDMA_CPPI_RXCTRL_WORD2_CHKSUM_RESULT, val)
258 
260 #define ENETUDMA_CPPIPSI_SET_CHKSUM_STARTBYTE(chkSumInfo, val) \
261  ENET_FINS(chkSumInfo, ENETUDMA_CPPI_RXCTRL_WORD2_CHKSUM_STARTBYTE, val)
262 
264 #define ENETUDMA_CPPIPSI_SET_CHKSUM_INV_FLAG(chkSumInfo, val) \
265  ENET_FINS(chkSumInfo, ENETUDMA_CPPI_RXCTRL_WORD2_CHKSUM_INV, val)
266 
268 #define ENETUDMA_CPPIPSI_SET_CHKSUM_BYTECNT(chkSumInfo, val) \
269  ENET_FINS(chkSumInfo, ENETUDMA_CPPI_RXCTRL_WORD2_CHKSUM_BYTECNT, val)
270 
272 #define ENETUDMA_CPPIPSI_SET_TSEN(tsInfo, val) \
273  ENET_FINS(tsInfo, ENETUDMA_CPPI_RXCTRL_WORD1_TSEN, val)
274 
276 #define ENETUDMA_CPPIPSI_SET_DOMAIN(tsInfo, val) \
277  ENET_FINS(tsInfo, ENETUDMA_CPPI_RXCTRL_WORD1_DOMAIN, val)
278 
280 #define ENETUDMA_CPPIPSI_SET_MSGTYPE(tsInfo, val) \
281  ENET_FINS(tsInfo, ENETUDMA_CPPI_RXCTRL_WORD1_MSGTYPE, val)
282 
284 #define ENETUDMA_CPPIPSI_SET_SEQID(tsInfo, val) \
285  ENET_FINS(tsInfo, ENETUDMA_CPPI_RXCTRL_WORD1_SEQID, val)
286 
287 /* ========================================================================== */
288 /* Structures and Enums */
289 /* ========================================================================== */
290 
297 typedef struct EnetUdma_RxProtoInfo_s
298 {
300  bool ipv6Valid;
301 
303  bool ipv4Valid;
304 
307 
309  bool fragment;
310 
312  bool chkSumErr;
313 
315  uint16_t chkSum;
317 
324 typedef struct EnetUdma_TxProtoInfo_s
325 {
329  uint16_t chkSumResOffset;
330 
333  uint16_t chkSumStartByte;
334 
337  bool chkSumInv;
338 
342  uint16_t chkSumByteCnt;
344 
345 /* ========================================================================== */
346 /* Global Variables Declarations */
347 /* ========================================================================== */
348 
349 /* None */
350 
351 /* ========================================================================== */
352 /* Function Declarations */
353 /* ========================================================================== */
354 
355 /* None */
356 
357 /* ========================================================================== */
358 /* Deprecated Function Declarations */
359 /* ========================================================================== */
360 
361 /* None */
362 
363 /* ========================================================================== */
364 /* Static Function Definitions */
365 /* ========================================================================== */
366 
367 /* None */
368 
369 #ifdef __cplusplus
370 }
371 #endif
372 
373 #endif /* ENET_UDMA_PSI_H_ */
374 
EnetUdma_TxProtoInfo::chkSumStartByte
uint16_t chkSumStartByte
Definition: enet_udma_psi.h:333
EnetUdma_RxProtoInfo
Enet UDMA RX Protocol Info structure.
Definition: enet_udma_psi.h:298
EnetUdma_RxProtoInfo::ipv4Valid
bool ipv4Valid
Definition: enet_udma_psi.h:303
EnetUdma_TxProtoInfo
Enet UDMA TX Protocol Info structure.
Definition: enet_udma_psi.h:325
EnetUdma_RxProtoInfo::fragment
bool fragment
Definition: enet_udma_psi.h:309
EnetUdma_TxProtoInfo::chkSumInv
bool chkSumInv
Definition: enet_udma_psi.h:337
EnetUdma_RxProtoInfo::ipv6Valid
bool ipv6Valid
Definition: enet_udma_psi.h:300
EnetUdma_TxProtoInfo::chkSumByteCnt
uint16_t chkSumByteCnt
Definition: enet_udma_psi.h:342
EnetUdma_TxProtoInfo::chkSumResOffset
uint16_t chkSumResOffset
Definition: enet_udma_psi.h:329
EnetUdma_RxProtoInfo::chkSum
uint16_t chkSum
Definition: enet_udma_psi.h:315
EnetUdma_RxProtoInfo::tcpudpIndicator
bool tcpudpIndicator
Definition: enet_udma_psi.h:306
EnetUdma_RxProtoInfo::chkSumErr
bool chkSumErr
Definition: enet_udma_psi.h:312