AM275 FreeRTOS SDK  11.01.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 
199 #define ENETUDMA_CPPI_RXCTRL_WORD1_LRE_TAGEN_SHIFT (30U)
200 
202 #define ENETUDMA_CPPI_RXCTRL_WORD1_LRE_TAGEN_MASK (((uint32_t) 0x1U) << ENETUDMA_CPPI_RXCTRL_WORD1_LRE_TAGEN_SHIFT)
203 
204 /* -------------------- CPPI RX Control Word 2 definitions --------------------- */
205 
207 #define ENETUDMA_CPPI_RXCTRL_WORD2_CHKSUM_BYTECNT_SHIFT (0U)
208 
210 #define ENETUDMA_CPPI_RXCTRL_WORD2_CHKSUM_BYTECNT_MASK (((uint32_t) 0x3FFFU) << ENETUDMA_CPPI_RXCTRL_WORD1_SEQID_SHIFT)
211 
213 #define ENETUDMA_CPPI_RXCTRL_WORD2_CHKSUM_INV_SHIFT (15U)
214 
216 #define ENETUDMA_CPPI_RXCTRL_WORD2_CHKSUM_INV_MASK (((uint32_t) 0x1U) << ENETUDMA_CPPI_RXCTRL_WORD2_CHKSUM_INV_SHIFT)
217 
219 #define ENETUDMA_CPPI_RXCTRL_WORD2_CHKSUM_STARTBYTE_SHIFT (16U)
220 
222 #define ENETUDMA_CPPI_RXCTRL_WORD2_CHKSUM_STARTBYTE_MASK (((uint32_t) 0xFFU) << ENETUDMA_CPPI_RXCTRL_WORD2_CHKSUM_STARTBYTE_SHIFT)
223 
225 #define ENETUDMA_CPPI_RXCTRL_WORD2_CHKSUM_RESULT_SHIFT (24U)
226 
228 #define ENETUDMA_CPPI_RXCTRL_WORD2_CHKSUM_RESULT_MASK (((uint32_t) 0xFFU) << ENETUDMA_CPPI_RXCTRL_WORD2_CHKSUM_RESULT_SHIFT)
229 
230 
231 /* -- Utilities macros to extract fields from the CPPI TX (host RX) PSI words -- */
232 
234 #define ENETUDMA_CPPIPSI_GET_IPV4_FLAG(chkSumInfo) \
235  ENET_FEXT(chkSumInfo, ENETUDMA_CPPI_TXSTATUS_WORD2_IPV4_VALID)
236 
238 #define ENETUDMA_CPPIPSI_GET_IPV6_FLAG(chkSumInfo) \
239  ENET_FEXT(chkSumInfo, ENETUDMA_CPPI_TXSTATUS_WORD2_IPV6_VALID)
240 
242 #define ENETUDMA_CPPIPSI_GET_TCPUDP_N_FLAG(chkSumInfo) \
243  ENET_FEXT(chkSumInfo, ENETUDMA_CPPI_TXSTATUS_WORD2_TCP_UDP_N)
244 
246 #define ENETUDMA_CPPIPSI_GET_FRAGMENT_FLAG(chkSumInfo) \
247  ENET_FEXT(chkSumInfo, ENETUDMA_CPPI_TXSTATUS_WORD2_FRAGMENT)
248 
250 #define ENETUDMA_CPPIPSI_GET_CHKSUM_ERR_FLAG(chkSumInfo) \
251  ENET_FEXT(chkSumInfo, ENETUDMA_CPPI_TXSTATUS_WORD2_CHKSUM_ERR)
252 
254 #define ENETUDMA_CPPIPSI_GET_CHKSUM_RESULT(chkSumInfo) \
255  ENET_FEXT(chkSumInfo, ENETUDMA_CPPI_TXSTATUS_WORD2_CHKSUM_ADD)
256 
257 
258 /* --- Utilities macros to insert fields into the CPPI RX (host TX) PSI words --- */
259 
261 #define ENETUDMA_CPPIPSI_SET_CHKSUM_RES(chkSumInfo, val) \
262  ENET_FINS(chkSumInfo, ENETUDMA_CPPI_RXCTRL_WORD2_CHKSUM_RESULT, val)
263 
265 #define ENETUDMA_CPPIPSI_SET_CHKSUM_STARTBYTE(chkSumInfo, val) \
266  ENET_FINS(chkSumInfo, ENETUDMA_CPPI_RXCTRL_WORD2_CHKSUM_STARTBYTE, val)
267 
269 #define ENETUDMA_CPPIPSI_SET_CHKSUM_INV_FLAG(chkSumInfo, val) \
270  ENET_FINS(chkSumInfo, ENETUDMA_CPPI_RXCTRL_WORD2_CHKSUM_INV, val)
271 
273 #define ENETUDMA_CPPIPSI_SET_CHKSUM_BYTECNT(chkSumInfo, val) \
274  ENET_FINS(chkSumInfo, ENETUDMA_CPPI_RXCTRL_WORD2_CHKSUM_BYTECNT, val)
275 
277 #define ENETUDMA_CPPIPSI_SET_TSEN(tsInfo, val) \
278  ENET_FINS(tsInfo, ENETUDMA_CPPI_RXCTRL_WORD1_TSEN, val)
279 
281 #define ENETUDMA_CPPIPSI_SET_LRE_TAGEN(tsInfo, val) \
282  ENET_FINS(tsInfo, ENETUDMA_CPPI_RXCTRL_WORD1_LRE_TAGEN, val)
283 
285 #define ENETUDMA_CPPIPSI_SET_DOMAIN(tsInfo, val) \
286  ENET_FINS(tsInfo, ENETUDMA_CPPI_RXCTRL_WORD1_DOMAIN, val)
287 
289 #define ENETUDMA_CPPIPSI_SET_MSGTYPE(tsInfo, val) \
290  ENET_FINS(tsInfo, ENETUDMA_CPPI_RXCTRL_WORD1_MSGTYPE, val)
291 
293 #define ENETUDMA_CPPIPSI_SET_SEQID(tsInfo, val) \
294  ENET_FINS(tsInfo, ENETUDMA_CPPI_RXCTRL_WORD1_SEQID, val)
295 
296 /* ========================================================================== */
297 /* Structures and Enums */
298 /* ========================================================================== */
299 
306 typedef struct EnetUdma_RxProtoInfo_s
307 {
309  bool ipv6Valid;
310 
312  bool ipv4Valid;
313 
316 
318  bool fragment;
319 
321  bool chkSumErr;
322 
324  uint16_t chkSum;
326 
333 typedef struct EnetUdma_TxProtoInfo_s
334 {
338  uint16_t chkSumResOffset;
339 
342  uint16_t chkSumStartByte;
343 
346  bool chkSumInv;
347 
351  uint16_t chkSumByteCnt;
353 
354 /* ========================================================================== */
355 /* Global Variables Declarations */
356 /* ========================================================================== */
357 
358 /* None */
359 
360 /* ========================================================================== */
361 /* Function Declarations */
362 /* ========================================================================== */
363 
364 /* None */
365 
366 /* ========================================================================== */
367 /* Deprecated Function Declarations */
368 /* ========================================================================== */
369 
370 /* None */
371 
372 /* ========================================================================== */
373 /* Static Function Definitions */
374 /* ========================================================================== */
375 
376 /* None */
377 
378 #ifdef __cplusplus
379 }
380 #endif
381 
382 #endif /* ENET_UDMA_PSI_H_ */
383 
EnetUdma_TxProtoInfo::chkSumStartByte
uint16_t chkSumStartByte
Definition: enet_udma_psi.h:342
EnetUdma_RxProtoInfo
Enet UDMA RX Protocol Info structure.
Definition: enet_udma_psi.h:307
EnetUdma_RxProtoInfo::ipv4Valid
bool ipv4Valid
Definition: enet_udma_psi.h:312
EnetUdma_TxProtoInfo
Enet UDMA TX Protocol Info structure.
Definition: enet_udma_psi.h:334
EnetUdma_RxProtoInfo::fragment
bool fragment
Definition: enet_udma_psi.h:318
EnetUdma_TxProtoInfo::chkSumInv
bool chkSumInv
Definition: enet_udma_psi.h:346
EnetUdma_RxProtoInfo::ipv6Valid
bool ipv6Valid
Definition: enet_udma_psi.h:309
EnetUdma_TxProtoInfo::chkSumByteCnt
uint16_t chkSumByteCnt
Definition: enet_udma_psi.h:351
EnetUdma_TxProtoInfo::chkSumResOffset
uint16_t chkSumResOffset
Definition: enet_udma_psi.h:338
EnetUdma_RxProtoInfo::chkSum
uint16_t chkSum
Definition: enet_udma_psi.h:324
EnetUdma_RxProtoInfo::tcpudpIndicator
bool tcpudpIndicator
Definition: enet_udma_psi.h:315
EnetUdma_RxProtoInfo::chkSumErr
bool chkSumErr
Definition: enet_udma_psi.h:321