PDK API Guide for J721E
csl_udmap_cppi5.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2016-2019 Texas Instruments Incorporated.
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  */
46 #ifndef CSL_UDMAP_CPPI5_H_
47 #define CSL_UDMAP_CPPI5_H_
48 
49 #ifdef __cplusplus
50 extern "C" {
51 #endif
52 
53 #include <stdint.h>
54 #include <stdbool.h>
55 
86 typedef struct
87 {
88  uint32_t tsInfo;
89  uint32_t swInfo0;
90  uint32_t swInfo1;
91  uint32_t swInfo2;
93 
100 typedef struct
101 {
102  uint32_t descInfo;
103  uint32_t pktInfo1;
104  uint32_t pktInfo2;
105  uint32_t srcDstTag;
106  uint64_t nextDescPtr;
107  uint64_t bufPtr;
108  uint32_t bufInfo1;
109  uint32_t orgBufLen;
110  uint64_t orgBufPtr;
111  /* Extended Packet Info Data (optional, 4 words) */
112  /* Protocol Specific Data (optional, 0-128 bytes in multiples of 4), and/or */
113  /* Other Software Data (0-N bytes, optional) */
115 
121 typedef struct
122 {
123  uint32_t descInfo;
124  uint32_t pktInfo1;
125  uint32_t pktInfo2;
126  uint32_t srcDstTag;
127  /* Extended Packet Info Data (optional, 4 words) */
129 
130 /* @} */
131 
132 /*-----------------------------------------------------------------------------
133 // Packet and Buffer Descriptor field manipulation macros
134 //---------------------------------------------------------------------------*/
135 #define CSL_UDMAP_CPPI5_PD_DESCINFO_DTYPE_SHIFT ((uint32_t) 30U)
136 #define CSL_UDMAP_CPPI5_PD_DESCINFO_DTYPE_MASK (((uint32_t) 0x3U) << CSL_UDMAP_CPPI5_PD_DESCINFO_DTYPE_SHIFT)
137 #define CSL_UDMAP_CPPI5_PD_DESCINFO_DTYPE_VAL_HOST ((uint32_t) 1U)
138 #define CSL_UDMAP_CPPI5_PD_DESCINFO_DTYPE_VAL_MONO ((uint32_t) 2U)
139 #define CSL_UDMAP_CPPI5_PD_DESCINFO_DTYPE_VAL_TR ((uint32_t) 3U)
140 #define CSL_UDMAP_CPPI5_PD_DESCINFO_EINFO_SHIFT ((uint32_t) 29U)
141 #define CSL_UDMAP_CPPI5_PD_DESCINFO_EINFO_MASK (((uint32_t) 0x1U) << CSL_UDMAP_CPPI5_PD_DESCINFO_EINFO_SHIFT)
142 #define CSL_UDMAP_CPPI5_PD_DESCINFO_EINFO_VAL_NOT_PRESENT ((uint32_t) 0)
143 #define CSL_UDMAP_CPPI5_PD_DESCINFO_EINFO_VAL_IS_PRESENT ((uint32_t) 1U)
144 #define CSL_UDMAP_CPPI5_PD_DESCINFO_PSINFO_SHIFT ((uint32_t) 28U)
145 #define CSL_UDMAP_CPPI5_PD_DESCINFO_PSINFO_MASK (((uint32_t) 0x1U) << CSL_UDMAP_CPPI5_PD_DESCINFO_PSINFO_SHIFT)
146 #define CSL_UDMAP_CPPI5_PD_DESCINFO_PSINFO_VAL_IN_DESC ((uint32_t) 0)
147 #define CSL_UDMAP_CPPI5_PD_DESCINFO_PSINFO_VAL_IN_SOP_BUFFER ((uint32_t) 1U)
148 #define CSL_UDMAP_CPPI5_PD_DESCINFO_PSWCNT_SHIFT ((uint32_t) 22U)
149 #define CSL_UDMAP_CPPI5_PD_DESCINFO_PSWCNT_MASK (((uint32_t) 0x3FU) << CSL_UDMAP_CPPI5_PD_DESCINFO_PSWCNT_SHIFT)
150 #define CSL_UDMAP_CPPI5_PD_DESCINFO_PKTLEN_SHIFT ((uint32_t) 0)
151 #define CSL_UDMAP_CPPI5_PD_DESCINFO_PKTLEN_MASK (((uint32_t) 0x3FFFFFU) << CSL_UDMAP_CPPI5_PD_DESCINFO_PKTLEN_SHIFT)
152 
153 #define CSL_UDMAP_CPPI5_PD_PKTINFO1_PKTERROR_SHIFT ((uint32_t) 28U)
154 #define CSL_UDMAP_CPPI5_PD_PKTINFO1_PKTERROR_MASK (((uint32_t) 0xFU) << CSL_UDMAP_CPPI5_PD_PKTINFO1_PKTERROR_SHIFT)
155 #define CSL_UDMAP_CPPI5_PD_PKTINFO1_PSFLGS_SHIFT ((uint32_t) 24U)
156 #define CSL_UDMAP_CPPI5_PD_PKTINFO1_PSFLGS_MASK (((uint32_t) 0xFU) << CSL_UDMAP_CPPI5_PD_PKTINFO1_PSFLGS_SHIFT)
157 #define CSL_UDMAP_CPPI5_PD_PKTINFO1_PKTID_SHIFT ((uint32_t) 14U)
158 #define CSL_UDMAP_CPPI5_PD_PKTINFO1_PKTID_MASK (((uint32_t) 0x3FFU) << CSL_UDMAP_CPPI5_PD_PKTINFO1_PKTID_SHIFT)
159 #define CSL_UDMAP_CPPI5_PD_PKTINFO1_FLOWID_SHIFT ((uint32_t) 0)
160 #define CSL_UDMAP_CPPI5_PD_PKTINFO1_FLOWID_MASK (((uint32_t) 0x3FFFU) << CSL_UDMAP_CPPI5_PD_PKTINFO1_FLOWID_SHIFT)
161 
162 #define CSL_UDMAP_CPPI5_PD_PKTINFO2_PKTTYPE_SHIFT ((uint32_t) 27U)
163 #define CSL_UDMAP_CPPI5_PD_PKTINFO2_PKTTYPE_MASK (((uint32_t) 0x1FU) << CSL_UDMAP_CPPI5_PD_PKTINFO2_PKTTYPE_SHIFT)
164 #define CSL_UDMAP_CPPI5_PD_PKTINFO2_RETPOLICY_SHIFT ((uint32_t) 18U)
165 #define CSL_UDMAP_CPPI5_PD_PKTINFO2_RETPOLICY_MASK (((uint32_t) 0x1U) << CSL_UDMAP_CPPI5_PD_PKTINFO2_RETPOLICY_SHIFT)
166 #define CSL_UDMAP_CPPI5_PD_PKTINFO2_RETPOLICY_VAL_ENTIRE_PKT ((uint32_t) 0)
167 #define CSL_UDMAP_CPPI5_PD_PKTINFO2_RETPOLICY_VAL_BREAKUP_PKT ((uint32_t) 1U)
168 #define CSL_UDMAP_CPPI5_PD_PKTINFO2_DATA_OFFSET_SHIFT ((uint32_t) 18U)
169 #define CSL_UDMAP_CPPI5_PD_PKTINFO2_DATA_OFFSET_MASK (((uint32_t) 0x1FFU) << CSL_UDMAP_CPPI5_PD_PKTINFO2_DATA_OFFSET_SHIFT)
170 #define CSL_UDMAP_CPPI5_PD_PKTINFO2_EARLYRET_SHIFT ((uint32_t) 17U)
171 #define CSL_UDMAP_CPPI5_PD_PKTINFO2_EARLYRET_MASK (((uint32_t) 0x1U) << CSL_UDMAP_CPPI5_PD_PKTINFO2_EARLYRET_SHIFT)
172 #define CSL_UDMAP_CPPI5_PD_PKTINFO2_EARLYRET_VAL_NO ((uint32_t) 0)
173 #define CSL_UDMAP_CPPI5_PD_PKTINFO2_EARLYRET_VAL_YES ((uint32_t) 1U)
174 #define CSL_UDMAP_CPPI5_PD_PKTINFO2_RETPUSHPOLICY_SHIFT ((uint32_t) 16U)
175 #define CSL_UDMAP_CPPI5_PD_PKTINFO2_RETPUSHPOLICY_MASK (((uint32_t) 0x1U) << CSL_UDMAP_CPPI5_PD_PKTINFO2_RETPUSHPOLICY_SHIFT)
176 #define CSL_UDMAP_CPPI5_PD_PKTINFO2_RETPUSHPOLICY_VAL_TO_TAIL ((uint32_t) 0)
177 #define CSL_UDMAP_CPPI5_PD_PKTINFO2_RETPUSHPOLICY_VAL_TO_HEAD ((uint32_t) 1U)
178 #define CSL_UDMAP_CPPI5_PD_PKTINFO2_RETQ_SHIFT ((uint32_t) 0)
179 #define CSL_UDMAP_CPPI5_PD_PKTINFO2_RETQ_MASK (((uint32_t) 0xFFFFU) << CSL_UDMAP_CPPI5_PD_PKTINFO2_RETQ_SHIFT)
180 
181 #define CSL_UDMAP_CPPI5_PD_SRCDSTTAG_SRCTAG_SHIFT ((uint32_t) 16U)
182 #define CSL_UDMAP_CPPI5_PD_SRCDSTTAG_SRCTAG_MASK (((uint32_t) 0xFFFFU) << CSL_UDMAP_CPPI5_PD_SRCDSTTAG_SRCTAG_SHIFT)
183 #define CSL_UDMAP_CPPI5_PD_SRCDSTTAG_DSTTAG_SHIFT ((uint32_t) 0)
184 #define CSL_UDMAP_CPPI5_PD_SRCDSTTAG_DSTTAG_MASK (((uint32_t) 0xFFFFU) << CSL_UDMAP_CPPI5_PD_SRCDSTTAG_DSTTAG_SHIFT)
185 
186 #define CSL_UDMAP_CPPI5_PD_BUFPTR_ASPACE_SHIFT ((uint64_t) 48UL)
187 #define CSL_UDMAP_CPPI5_PD_BUFPTR_ASPACE_MASK (((uint64_t) 0xFU) << CSL_UDMAP_CPPI5_PD_BUFPTR_ASPACE_SHIFT)
188 #define CSL_UDMAP_CPPI5_PD_BUFPTR_ADDR_SHIFT ((uint64_t) 0U)
189 #define CSL_UDMAP_CPPI5_PD_BUFPTR_ADDR_MASK (((uint64_t) 0x0000FFFFFFFFFFFFUL) << CSL_UDMAP_CPPI5_PD_BUFPTR_ADDR_SHIFT)
190 
191 #define CSL_UDMAP_CPPI5_PD_BUFINFO1_LEN_SHIFT ((uint32_t) 0)
192 #define CSL_UDMAP_CPPI5_PD_BUFINFO1_LEN_MASK (((uint32_t) 0x3FFFFFU) << CSL_UDMAP_CPPI5_PD_BUFINFO1_LEN_SHIFT)
193 
194 #define CSL_UDMAP_CPPI5_PD_ORGBUFLEN_LEN_SHIFT ((uint32_t) 0)
195 #define CSL_UDMAP_CPPI5_PD_ORGBUFLEN_LEN_MASK (((uint32_t) 0x3FFFFFU) << CSL_UDMAP_CPPI5_PD_ORGBUFLEN_LEN_SHIFT)
196 
197 #define CSL_UDMAP_CPPI5_PD_ORGBUFPTR_ASPACE_SHIFT ((uint64_t) 48UL)
198 #define CSL_UDMAP_CPPI5_PD_ORGBUFPTR_ASPACE_MASK (((uint64_t) 0xFU) << CSL_UDMAP_CPPI5_PD_ORGBUFPTR_ASPACE_SHIFT)
199 #define CSL_UDMAP_CPPI5_PD_ORGBUFPTR_ADDR_SHIFT ((uint64_t) 0U)
200 #define CSL_UDMAP_CPPI5_PD_ORGBUFPTR_ADDR_MASK (((uint64_t) 0x0000FFFFFFFFFFFFUL) << CSL_UDMAP_CPPI5_PD_ORGBUFPTR_ADDR_SHIFT)
201 
202 /*-----------------------------------------------------------------------------
203 // TR Descriptor
204 //---------------------------------------------------------------------------*/
205 typedef struct
206 {
207  uint32_t descInfo;
208  uint32_t pktInfo;
209  uint32_t retInfo;
210  uint32_t srcDstTag;
212 
213 /*-----------------------------------------------------------------------------
214 // TR Descriptor field manipulation macros
215 //---------------------------------------------------------------------------*/
216 #define CSL_UDMAP_CPPI5_TRPD_DESCINFO_DTYPE_SHIFT ((uint32_t) 30U)
217 #define CSL_UDMAP_CPPI5_TRPD_DESCINFO_DTYPE_MASK (((uint32_t) 0x3U) << CSL_UDMAP_CPPI5_TRPD_DESCINFO_DTYPE_SHIFT)
218 #define CSL_UDMAP_CPPI5_TRPD_DESCINFO_RELOAD_SHIFT ((uint32_t) 20U)
219 #define CSL_UDMAP_CPPI5_TRPD_DESCINFO_RELOAD_MASK (((uint32_t) 0x1FFU) << CSL_UDMAP_CPPI5_TRPD_DESCINFO_RELOAD_SHIFT)
220 #define CSL_UDMAP_CPPI5_TRPD_DESCINFO_RLDIDX_SHIFT ((uint32_t) 14U)
221 #define CSL_UDMAP_CPPI5_TRPD_DESCINFO_RLDIDX_MASK (((uint32_t) 0x3FU) << CSL_UDMAP_CPPI5_TRPD_DESCINFO_RLDIDX_SHIFT)
222 #define CSL_UDMAP_CPPI5_TRPD_DESCINFO_LASTIDX_SHIFT ((uint32_t) 0)
223 #define CSL_UDMAP_CPPI5_TRPD_DESCINFO_LASTIDX_MASK (((uint32_t) 0x3FFFU) << CSL_UDMAP_CPPI5_TRPD_DESCINFO_LASTIDX_SHIFT)
224 
225 #define CSL_UDMAP_CPPI5_TRPD_PKTINFO_PKTERROR_SHIFT ((uint32_t) 28U)
226 #define CSL_UDMAP_CPPI5_TRPD_PKTINFO_PKTERROR_MASK (((uint32_t) 0xFU) << CSL_UDMAP_CPPI5_TRPD_PKTINFO_PKTERROR_SHIFT)
227 #define CSL_UDMAP_CPPI5_TRPD_PKTINFO_RECSIZE_SHIFT ((uint32_t) 24U)
228 #define CSL_UDMAP_CPPI5_TRPD_PKTINFO_RECSIZE_MASK (((uint32_t) 0x7U) << CSL_UDMAP_CPPI5_TRPD_PKTINFO_RECSIZE_SHIFT)
229 #define CSL_UDMAP_CPPI5_TRPD_PKTINFO_RECSIZE_VAL_16B ((uint32_t) 0)
230 #define CSL_UDMAP_CPPI5_TRPD_PKTINFO_RECSIZE_VAL_32B ((uint32_t) 1U)
231 #define CSL_UDMAP_CPPI5_TRPD_PKTINFO_RECSIZE_VAL_64B ((uint32_t) 2U)
232 #define CSL_UDMAP_CPPI5_TRPD_PKTINFO_RECSIZE_VAL_128B ((uint32_t) 3U)
233 #define CSL_UDMAP_CPPI5_TRPD_PKTINFO_PKTID_SHIFT ((uint32_t) 14U)
234 #define CSL_UDMAP_CPPI5_TRPD_PKTINFO_PKTID_MASK (((uint32_t) 0x3FFU) << CSL_UDMAP_CPPI5_TRPD_PKTINFO_PKTID_SHIFT)
235 #define CSL_UDMAP_CPPI5_TRPD_PKTINFO_FLOWID_SHIFT ((uint32_t) 0)
236 #define CSL_UDMAP_CPPI5_TRPD_PKTINFO_FLOWID_MASK (((uint32_t) 0x3FFFU) << CSL_UDMAP_CPPI5_TRPD_PKTINFO_FLOWID_SHIFT)
237 
238 #define CSL_UDMAP_CPPI5_TRPD_RETINFO_RETPOLICY_SHIFT ((uint32_t) 16U)
239 #define CSL_UDMAP_CPPI5_TRPD_RETINFO_RETPOLICY_MASK (((uint32_t) 0x1U) << CSL_UDMAP_CPPI5_TRPD_RETINFO_RETPOLICY_SHIFT)
240 #define CSL_UDMAP_CPPI5_TRPD_RETINFO_RETPOLICY_VAL_TO_TAIL ((uint32_t) 0)
241 #define CSL_UDMAP_CPPI5_TRPD_RETINFO_RETPOLICY_VAL_TO_HEAD ((uint32_t) 1U)
242 #define CSL_UDMAP_CPPI5_TRPD_RETINFO_RETQ_SHIFT ((uint32_t) 0)
243 #define CSL_UDMAP_CPPI5_TRPD_RETINFO_RETQ_MASK (((uint32_t) 0xFFFFU) << CSL_UDMAP_CPPI5_TRPD_RETINFO_RETQ_SHIFT)
244 
245 #define CSL_UDMAP_CPPI5_TRPD_SRCDSTTAG_SRCTAG_SHIFT ((uint32_t) 16U)
246 #define CSL_UDMAP_CPPI5_TRPD_SRCDSTTAG_SRCTAG_MASK (((uint32_t) 0xFFFFU) << CSL_UDMAP_CPPI5_TRPD_SRCDSTTAG_SRCTAG_SHIFT)
247 #define CSL_UDMAP_CPPI5_TRPD_SRCDSTTAG_DSTTAG_SHIFT ((uint32_t) 0)
248 #define CSL_UDMAP_CPPI5_TRPD_SRCDSTTAG_DSTTAG_MASK (((uint32_t) 0xFFFFU) << CSL_UDMAP_CPPI5_TRPD_SRCDSTTAG_DSTTAG_SHIFT)
249 
254 static inline uint32_t CSL_udmapCppi5GetDescType( const void *pDesc );
255 static inline void CSL_udmapCppi5SetDescType( void *pDesc, uint32_t descType );
256 static inline uint32_t CSL_udmapCppi5GetPktLen( const void *pDesc );
257 static inline void CSL_udmapCppi5SetPktLen( void *pDesc, uint32_t descType, uint32_t pktLen );
258 static inline void CSL_udmapCppi5HostSetPktLen( void *pDesc, uint32_t pktLen );
259 static inline void CSL_udmapCppi5MonoSetPktLen( void *pDesc, uint32_t pktLen );
260 static inline void CSL_udmapCppi5TrSetPktLen( void *pDesc, uint32_t pktLen );
261 static inline uint64_t CSL_udmapCppi5GetBufferAddr( const CSL_UdmapCppi5HMPD *pDesc );
262 static inline uint32_t CSL_udmapCppi5GetBufferLen( const CSL_UdmapCppi5HMPD *pDesc );
263 static inline void CSL_udmapCppi5SetBufferAddr( CSL_UdmapCppi5HMPD *pDesc, uint64_t physBufferAddr );
264 static inline void CSL_udmapCppi5SetOrgBufferAddr( CSL_UdmapCppi5HMPD *pDesc, uint64_t physBufferAddr );
265 static inline void CSL_udmapCppi5SetBufferLen( CSL_UdmapCppi5HMPD *pDesc, uint32_t bufferLenBytes );
266 static inline void CSL_udmapCppi5SetOrgBufferLen( CSL_UdmapCppi5HMPD *pDesc, uint32_t bufferLenBytes );
267 static inline void CSL_udmapCppi5LinkDesc( CSL_UdmapCppi5HMPD *pDesc, uint64_t physBufferDescAddr );
268 static inline bool CSL_udmapCppi5IsEpiDataPresent( const void *pDesc );
269 static inline void CSL_udmapCppi5SetEpiDataPresent( void *pDesc, bool bEpiDataPresent );
270 static inline uint32_t *CSL_udmapCppi5GetEpiDataPtr( const void *pDesc );
271 static inline int32_t CSL_udmapCppi5RdEpiData( const void *pDesc, uint32_t *pTsInfo, uint32_t *pSwInfo0, uint32_t *pSwInfo1, uint32_t *pSwInfo2 );
272 static inline void CSL_udmapCppi5WrEpiData( const void *pDesc, uint32_t tsInfo, uint32_t swInfo0, uint32_t swInfo1, uint32_t swInfo2 );
273 static inline uint32_t CSL_udmapCppi5GetPsDataLoc( const void *pDesc );
274 static inline void CSL_udmapCppi5SetPsDataLoc( void *pDesc, uint32_t psLoc );
275 static inline uint32_t CSL_udmapCppi5GetPsDataLen( const void *pDesc );
276 static inline void CSL_udmapCppi5SetPsDataLen( void *pDesc, uint32_t psDataLen );
277 static inline uint64_t CSL_udmapCppi5GetPsDataAddr( const void *pDesc, bool bInSopBuf, bool bEpiPresent );
278 static inline uint8_t *CSL_udmapCppi5GetPsDataPtr( const void *pDesc );
279 static inline uint32_t CSL_udmapCppi5GetSrcTag( const void *pDesc );
280 static inline uint32_t CSL_udmapCppi5GetDstTag( const void *pDesc );
281 static inline void CSL_udmapCppi5SetSrcTag( void *pDesc, uint32_t srcTag );
282 static inline void CSL_udmapCppi5SetDstTag( void *pDesc, uint32_t dstTag );
283 static inline uint32_t CSL_udmapCppi5GetErrorFlags( const void *pDesc );
284 static inline uint32_t CSL_udmapCppi5GetPsFlags( const void *pDesc );
285 static inline void CSL_udmapCppi5SetPsFlags( void *pDesc, uint32_t psFlags );
286 static inline uint32_t CSL_udmapCppi5GetPktType( const void *pDesc );
287 static inline void CSL_udmapCppi5SetPktType( void *pDesc, uint32_t pktType );
288 static inline void CSL_udmapCppi5GetIds( const void *pDesc, uint32_t *pPktId, uint32_t *pFlowId );
289 static inline void CSL_udmapCppi5SetIds( void *pDesc, uint32_t descType, uint32_t pktId, uint32_t flowId );
290 static inline void CSL_udmapCppi5GetReturnPolicy( const void *pDesc, uint32_t *pRetPolicy, uint32_t *pEarlyReturn, uint32_t *pRetPushPolicy, uint32_t *pRetQnum );
291 static inline void CSL_udmapCppi5SetReturnPolicy( void *pDesc, uint32_t descType, uint32_t retPolicy, uint32_t earlyReturn, uint32_t retPushPolicy, uint32_t retQnum );
292 static inline uint32_t CSL_udmapCppi5MonoGetDataOffset( const CSL_UdmapCppi5MMPD *pDesc );
293 static inline void CSL_udmapCppi5MonoSetDataOffset( CSL_UdmapCppi5MMPD *pDesc, uint32_t dataOffset );
294 static inline void CSL_udmapCppi5TrGetReload( const CSL_UdmapCppi5TRPD *pDesc, uint32_t *pReloadEnable, uint32_t *pReloadIdx );
295 static inline void CSL_udmapCppi5TrSetReload( CSL_UdmapCppi5TRPD *pDesc, uint32_t reloadEnable, uint32_t reloadIdx );
296 static inline uint32_t CSL_udmapCppi5TrGetEntryStride( const CSL_UdmapCppi5TRPD *pDesc );
297 static inline void CSL_udmapCppi5TrSetEntryStride( CSL_UdmapCppi5TRPD *pDesc, uint32_t nomElSz );
298 
311 static inline uint32_t CSL_udmapCppi5GetDescType( const void *pDesc )
312 {
313  return (uint32_t)CSL_FEXT( ((const CSL_UdmapCppi5HMPD *)pDesc)->descInfo, UDMAP_CPPI5_PD_DESCINFO_DTYPE );
314 }
315 
332 static inline void CSL_udmapCppi5SetDescType( void *pDesc, uint32_t descType )
333 {
334  CSL_FINS( ((CSL_UdmapCppi5HMPD *)pDesc)->descInfo, UDMAP_CPPI5_PD_DESCINFO_DTYPE, descType );
335 }
336 
353 static inline uint32_t CSL_udmapCppi5GetPktLen( const void *pDesc )
354 {
355  uint32_t pktLen;
356  uint32_t descType = CSL_udmapCppi5GetDescType( pDesc );
357 
358  if( (descType == CSL_UDMAP_CPPI5_PD_DESCINFO_DTYPE_VAL_HOST) ||
360  {
361  pktLen = CSL_FEXT( ((const CSL_UdmapCppi5HMPD *)pDesc)->descInfo, UDMAP_CPPI5_PD_DESCINFO_PKTLEN );
362  }
363  else if( descType == CSL_UDMAP_CPPI5_PD_DESCINFO_DTYPE_VAL_TR )
364  {
365  pktLen = (uint32_t)CSL_FEXT( ((const CSL_UdmapCppi5TRPD *)pDesc)->descInfo, UDMAP_CPPI5_TRPD_DESCINFO_LASTIDX ) + (uint32_t)1U;
366  }
367  else
368  {
369  pktLen = 0;
370  }
371  return pktLen;
372 }
373 
392 static inline void CSL_udmapCppi5SetPktLen( void *pDesc, uint32_t descType, uint32_t pktLen )
393 {
394  if( (descType == CSL_UDMAP_CPPI5_PD_DESCINFO_DTYPE_VAL_HOST) ||
396  {
397  CSL_FINS( ((CSL_UdmapCppi5HMPD *)pDesc)->descInfo, UDMAP_CPPI5_PD_DESCINFO_PKTLEN, pktLen );
398  }
400  {
401  CSL_FINS( ((CSL_UdmapCppi5TRPD *)pDesc)->descInfo, UDMAP_CPPI5_TRPD_DESCINFO_LASTIDX, pktLen-1U );
402  }
403 }
404 
415 static inline void CSL_udmapCppi5HostSetPktLen( void *pDesc, uint32_t pktLen )
416 {
417  CSL_FINS( ((CSL_UdmapCppi5HMPD *)pDesc)->descInfo, UDMAP_CPPI5_PD_DESCINFO_PKTLEN, pktLen );
418 }
419 
430 static inline void CSL_udmapCppi5MonoSetPktLen( void *pDesc, uint32_t pktLen )
431 {
432  CSL_FINS( ((CSL_UdmapCppi5MMPD *)pDesc)->descInfo, UDMAP_CPPI5_PD_DESCINFO_PKTLEN, pktLen );
433 }
434 
445 static inline void CSL_udmapCppi5TrSetPktLen( void *pDesc, uint32_t pktLen )
446 {
447  CSL_FINS( ((CSL_UdmapCppi5TRPD *)pDesc)->descInfo, UDMAP_CPPI5_TRPD_DESCINFO_LASTIDX, pktLen-1U );
448 }
449 
462 static inline uint64_t CSL_udmapCppi5GetBufferAddr( const CSL_UdmapCppi5HMPD *pDesc )
463 {
464  return pDesc->bufPtr;
465 }
466 
479 static inline uint32_t CSL_udmapCppi5GetBufferLen( const CSL_UdmapCppi5HMPD *pDesc )
480 {
481  return (uint32_t)CSL_FEXT( pDesc->bufInfo1, UDMAP_CPPI5_PD_BUFINFO1_LEN );
482 }
483 
498 static inline void CSL_udmapCppi5SetBufferAddr( CSL_UdmapCppi5HMPD *pDesc, uint64_t physBufferAddr )
499 {
500  pDesc->bufPtr = physBufferAddr;
501 }
502 
517 static inline void CSL_udmapCppi5SetOrgBufferAddr( CSL_UdmapCppi5HMPD *pDesc, uint64_t physBufferAddr )
518 {
519  pDesc->orgBufPtr = physBufferAddr;
520 }
521 
536 static inline void CSL_udmapCppi5SetBufferLen( CSL_UdmapCppi5HMPD *pDesc, uint32_t bufferLenBytes )
537 {
538  CSL_FINS( pDesc->bufInfo1, UDMAP_CPPI5_PD_BUFINFO1_LEN, bufferLenBytes );
539 }
540 
555 static inline void CSL_udmapCppi5SetOrgBufferLen( CSL_UdmapCppi5HMPD *pDesc, uint32_t bufferLenBytes )
556 {
557  pDesc->orgBufLen = bufferLenBytes;
558 }
559 
579 static inline void CSL_udmapCppi5LinkDesc( CSL_UdmapCppi5HMPD *pDesc, uint64_t physBufferDescAddr )
580 {
581  pDesc->nextDescPtr = physBufferDescAddr;
582 }
583 
598 static inline bool CSL_udmapCppi5IsEpiDataPresent( const void *pDesc )
599 {
600  uint32_t fieldVal;
601 
602  fieldVal = CSL_FEXT( ((const CSL_UdmapCppi5HMPD *)pDesc)->descInfo, UDMAP_CPPI5_PD_DESCINFO_EINFO );
603  return (fieldVal == (uint32_t)0U) ? (bool)false : (bool)true;
604 }
605 
620 static inline void CSL_udmapCppi5SetEpiDataPresent( void *pDesc, bool bEpiDataPresent )
621 {
622  CSL_FINS( ((CSL_UdmapCppi5HMPD *)pDesc)->descInfo, UDMAP_CPPI5_PD_DESCINFO_EINFO, (bEpiDataPresent==(bool)true) ? (uint32_t)1U : (uint32_t)0U );
623 }
624 
639 static inline uint32_t *CSL_udmapCppi5GetEpiDataPtr( const void *pDesc )
640 {
641  uint32_t *pEpiData = NULL;
642 
643  if( CSL_udmapCppi5IsEpiDataPresent(pDesc) == (bool)true )
644  {
645  uint32_t descType = CSL_udmapCppi5GetDescType( pDesc );
646 
648  {
649  pEpiData = (uint32_t *)((const uint8_t *)pDesc + sizeof(CSL_UdmapCppi5HMPD));
650  }
651  else
652  {
653  pEpiData = (uint32_t *)((const uint8_t *)pDesc + sizeof(CSL_UdmapCppi5MMPD));
654  }
655  }
656  return pEpiData;
657 }
658 
677 static inline int32_t CSL_udmapCppi5RdEpiData( const void *pDesc, uint32_t *pTsInfo, uint32_t *pSwInfo0, uint32_t *pSwInfo1, uint32_t *pSwInfo2 )
678 {
679  int32_t retVal = -1;
680  uint32_t *pSrcEpiData = CSL_udmapCppi5GetEpiDataPtr(pDesc);
681 
682  if( pSrcEpiData != (void *)0 )
683  {
684  *pTsInfo = *pSrcEpiData; pSrcEpiData++;
685  *pSwInfo0 = *pSrcEpiData; pSrcEpiData++;
686  *pSwInfo1 = *pSrcEpiData; pSrcEpiData++;
687  *pSwInfo2 = *pSrcEpiData;
688  retVal = 0;
689  }
690  return retVal;
691 }
692 
710 static inline void CSL_udmapCppi5WrEpiData( const void *pDesc, uint32_t tsInfo, uint32_t swInfo0, uint32_t swInfo1, uint32_t swInfo2 )
711 {
712  uint32_t *pDstEpiData = CSL_udmapCppi5GetEpiDataPtr(pDesc);
713 
714  if( pDstEpiData != (void *)0 )
715  {
716  *pDstEpiData = tsInfo; pDstEpiData++;
717  *pDstEpiData = swInfo0; pDstEpiData++;
718  *pDstEpiData = swInfo1; pDstEpiData++;
719  *pDstEpiData = swInfo2;
720  }
721 }
722 
736 static inline uint32_t CSL_udmapCppi5GetPsDataLoc( const void *pDesc )
737 {
738  return (uint32_t)CSL_FEXT( ((const CSL_UdmapCppi5HMPD *)pDesc)->descInfo, UDMAP_CPPI5_PD_DESCINFO_PSINFO );
739 }
740 
755 static inline void CSL_udmapCppi5SetPsDataLoc( void *pDesc, uint32_t psLoc )
756 {
757  CSL_FINS( ((CSL_UdmapCppi5HMPD *)pDesc)->descInfo, UDMAP_CPPI5_PD_DESCINFO_PSINFO, psLoc );
758 }
759 
773 static inline uint32_t CSL_udmapCppi5GetPsDataLen( const void *pDesc )
774 {
775  return ((uint32_t)CSL_FEXT( ((const CSL_UdmapCppi5HMPD *)pDesc)->descInfo, UDMAP_CPPI5_PD_DESCINFO_PSWCNT )) * 4U;
776 }
777 
794 static inline void CSL_udmapCppi5SetPsDataLen( void *pDesc, uint32_t psDataLen )
795 {
796  CSL_FINS( ((CSL_UdmapCppi5HMPD *)pDesc)->descInfo, UDMAP_CPPI5_PD_DESCINFO_PSWCNT, (psDataLen/4U) );
797 }
798 
818 static inline uint64_t CSL_udmapCppi5GetPsDataAddr( const void *pDesc, bool bInSopBuf, bool bEpiPresent )
819 {
820  uint64_t psDataAddr;
821  uint32_t descType = CSL_udmapCppi5GetDescType( pDesc );
822  uint32_t epiDataSize;
823 
824  epiDataSize = (bEpiPresent == (bool)false) ? (uint32_t)0U : (uint32_t)sizeof(CSL_UdmapCppi5Epi);
826  {
827  if( bInSopBuf == (bool)true )
828  {
829  /* psData is in SOP buffer immediately prior to the data */
830  psDataAddr = (uint64_t)((uintptr_t)(((const CSL_UdmapCppi5HMPD *)pDesc)->bufPtr));
831  }
832  else
833  {
834  /* psData is in the descriptor */
835  psDataAddr = (uint64_t)(uintptr_t)((const uint8_t *)pDesc + sizeof(CSL_UdmapCppi5HMPD) + epiDataSize);
836  }
837  }
838  else
839  {
840  /* Get pointer to psData in MONO descriptor */
841  psDataAddr = (uint64_t)(uintptr_t)((const uint8_t *)pDesc + sizeof(CSL_UdmapCppi5MMPD) + epiDataSize);
842 
843  }
844  return psDataAddr;
845 }
846 
847 static inline uint8_t *CSL_udmapCppi5GetPsDataPtr( const void *pDesc )
848 {
849  uint8_t *pPsData = NULL;
850  uint32_t psDataLen;
851 
852  psDataLen = CSL_udmapCppi5GetPsDataLen( pDesc );
853  if( psDataLen != (uint32_t)0U )
854  {
855  uint32_t descType = CSL_udmapCppi5GetDescType( pDesc );
856  uint32_t epiDataSize;
857 
858  epiDataSize = (CSL_udmapCppi5IsEpiDataPresent( pDesc ) == (bool)false) ? (uint32_t)0U : (uint32_t)sizeof(CSL_UdmapCppi5Epi);
860  {
861  uint32_t psLoc = CSL_FEXT( ((const CSL_UdmapCppi5HMPD *)pDesc)->descInfo, UDMAP_CPPI5_PD_DESCINFO_PSINFO );
863  {
864  /* psData is in the descriptor */
865  pPsData = (uint8_t *)((const uint8_t *)pDesc + sizeof(CSL_UdmapCppi5HMPD) + epiDataSize);
866  }
867  else
868  {
869  /* psData is in SOP buffer immediately prior to the data */
870  pPsData = (uint8_t *)(uintptr_t)(((const CSL_UdmapCppi5HMPD *)pDesc)->bufPtr);
871  }
872  }
873  else
874  {
875  /* Get pointer to psData in MONO descriptor */
876  pPsData = (uint8_t *)((const uint8_t *)pDesc + sizeof(CSL_UdmapCppi5MMPD) + epiDataSize);
877  }
878  }
879  return pPsData;
880 }
881 
891 static inline uint32_t CSL_udmapCppi5GetSrcTag( const void *pDesc )
892 {
893  return (uint32_t)CSL_FEXT( ((const CSL_UdmapCppi5HMPD *)pDesc)->srcDstTag, UDMAP_CPPI5_PD_SRCDSTTAG_SRCTAG );
894 }
895 
905 static inline uint32_t CSL_udmapCppi5GetDstTag( const void *pDesc )
906 {
907  return (uint32_t)CSL_FEXT( ((const CSL_UdmapCppi5HMPD *)pDesc)->srcDstTag, UDMAP_CPPI5_PD_SRCDSTTAG_DSTTAG );
908 }
909 
920 static inline void CSL_udmapCppi5SetSrcTag( void *pDesc, uint32_t srcTag )
921 {
922  CSL_FINS( ((CSL_UdmapCppi5HMPD *)pDesc)->srcDstTag, UDMAP_CPPI5_PD_SRCDSTTAG_SRCTAG, srcTag );
923 }
924 
935 static inline void CSL_udmapCppi5SetDstTag( void *pDesc, uint32_t dstTag )
936 {
937  CSL_FINS( ((CSL_UdmapCppi5HMPD *)pDesc)->srcDstTag, UDMAP_CPPI5_PD_SRCDSTTAG_DSTTAG, dstTag );
938 }
939 
952 static inline uint32_t CSL_udmapCppi5GetErrorFlags( const void *pDesc )
953 {
954  return (uint32_t)CSL_FEXT( ((const CSL_UdmapCppi5HMPD *)pDesc)->pktInfo1, UDMAP_CPPI5_PD_PKTINFO1_PKTERROR );
955 }
956 
969 static inline uint32_t CSL_udmapCppi5GetPsFlags( const void *pDesc )
970 {
971  return (uint32_t)CSL_FEXT( ((const CSL_UdmapCppi5HMPD *)pDesc)->pktInfo1, UDMAP_CPPI5_PD_PKTINFO1_PSFLGS );
972 }
973 
987 static inline void CSL_udmapCppi5SetPsFlags( void *pDesc, uint32_t psFlags )
988 {
989  CSL_FINS( ((CSL_UdmapCppi5HMPD *)pDesc)->pktInfo1, UDMAP_CPPI5_PD_PKTINFO1_PSFLGS, psFlags );
990 }
991 
1004 static inline uint32_t CSL_udmapCppi5GetPktType( const void *pDesc )
1005 {
1006  return (uint32_t)CSL_FEXT( ((const CSL_UdmapCppi5HMPD *)pDesc)->pktInfo2, UDMAP_CPPI5_PD_PKTINFO2_PKTTYPE );
1007 }
1008 
1022 static inline void CSL_udmapCppi5SetPktType( void *pDesc, uint32_t pktType )
1023 {
1024  CSL_FINS( ((CSL_UdmapCppi5HMPD *)pDesc)->pktInfo2, UDMAP_CPPI5_PD_PKTINFO2_PKTTYPE, pktType );
1025 }
1026 
1038 static inline void CSL_udmapCppi5GetIds( const void *pDesc, uint32_t *pPktId, uint32_t *pFlowId )
1039 {
1040  uint32_t descType = CSL_udmapCppi5GetDescType( pDesc );
1041 
1043  {
1044  *pPktId = CSL_FEXT( ((const CSL_UdmapCppi5TRPD *)pDesc)->pktInfo, UDMAP_CPPI5_TRPD_PKTINFO_PKTID );
1045  *pFlowId = CSL_FEXT( ((const CSL_UdmapCppi5TRPD *)pDesc)->pktInfo, UDMAP_CPPI5_TRPD_PKTINFO_FLOWID );
1046  }
1047  else
1048  {
1049  *pPktId = CSL_FEXT( ((const CSL_UdmapCppi5HMPD *)pDesc)->pktInfo1, UDMAP_CPPI5_PD_PKTINFO1_PKTID );
1050  *pFlowId = CSL_FEXT( ((const CSL_UdmapCppi5HMPD *)pDesc)->pktInfo1, UDMAP_CPPI5_PD_PKTINFO1_FLOWID );
1051  }
1052 }
1053 
1066 static inline void CSL_udmapCppi5SetIds( void *pDesc, uint32_t descType, uint32_t pktId, uint32_t flowId )
1067 {
1068  uint32_t v;
1069 
1071  {
1072  v = ((CSL_UdmapCppi5TRPD *)pDesc)->pktInfo;
1074  v |= CSL_FMK( UDMAP_CPPI5_TRPD_PKTINFO_PKTID, pktId ) |
1075  CSL_FMK( UDMAP_CPPI5_TRPD_PKTINFO_FLOWID, flowId );
1076  ((CSL_UdmapCppi5TRPD *)pDesc)->pktInfo = v;
1077  }
1078  else
1079  {
1080  v = ((CSL_UdmapCppi5HMPD *)pDesc)->pktInfo1;
1082  v |= CSL_FMK( UDMAP_CPPI5_PD_PKTINFO1_PKTID, pktId ) |
1083  CSL_FMK( UDMAP_CPPI5_PD_PKTINFO1_FLOWID, flowId );
1084  ((CSL_UdmapCppi5HMPD *)pDesc)->pktInfo1 = v;
1085  }
1086 }
1087 
1105 static inline void CSL_udmapCppi5GetReturnPolicy( const void *pDesc, uint32_t *pRetPolicy, uint32_t *pEarlyReturn, uint32_t *pRetPushPolicy, uint32_t *pRetQnum )
1106 {
1107  uint32_t descType = CSL_udmapCppi5GetDescType( pDesc );
1108 
1110  {
1111  *pRetPolicy = 0;
1112  *pEarlyReturn = 0;
1113  *pRetPushPolicy = CSL_FEXT( ((const CSL_UdmapCppi5TRPD *)pDesc)->retInfo, UDMAP_CPPI5_TRPD_RETINFO_RETPOLICY );
1114  *pRetQnum = CSL_FEXT( ((const CSL_UdmapCppi5TRPD *)pDesc)->retInfo, UDMAP_CPPI5_TRPD_RETINFO_RETQ );
1115  }
1116  else
1117  {
1119  {
1120  *pRetPolicy = 0;
1121  }
1122  else
1123  {
1124  *pRetPolicy = CSL_FEXT( ((const CSL_UdmapCppi5HMPD *)pDesc)->pktInfo2, UDMAP_CPPI5_PD_PKTINFO2_RETPOLICY );
1125  }
1126  *pEarlyReturn = CSL_FEXT( ((const CSL_UdmapCppi5HMPD *)pDesc)->pktInfo2, UDMAP_CPPI5_PD_PKTINFO2_EARLYRET );
1127  *pRetPushPolicy = CSL_FEXT( ((const CSL_UdmapCppi5HMPD *)pDesc)->pktInfo2, UDMAP_CPPI5_PD_PKTINFO2_RETPUSHPOLICY );
1128  *pRetQnum = CSL_FEXT( ((const CSL_UdmapCppi5HMPD *)pDesc)->pktInfo2, UDMAP_CPPI5_PD_PKTINFO2_RETQ );
1129  }
1130 }
1131 
1169 static inline void CSL_udmapCppi5SetReturnPolicy( void *pDesc, uint32_t descType, uint32_t retPolicy, uint32_t earlyReturn, uint32_t retPushPolicy, uint32_t retQnum )
1170 {
1171  uint32_t v;
1172 
1174  {
1175  ((CSL_UdmapCppi5TRPD *)pDesc)->retInfo =
1176  CSL_FMK( UDMAP_CPPI5_TRPD_RETINFO_RETPOLICY, retPushPolicy ) |
1177  CSL_FMK( UDMAP_CPPI5_TRPD_RETINFO_RETQ, retQnum ) ;
1178  }
1179  else
1180  {
1181  v = ((CSL_UdmapCppi5HMPD *)pDesc)->pktInfo2;
1183  {
1185  }
1186  else
1187  {
1189  v |= CSL_FMK( UDMAP_CPPI5_PD_PKTINFO2_RETPOLICY, retPolicy );
1190 
1191  }
1192  v |= CSL_FMK( UDMAP_CPPI5_PD_PKTINFO2_EARLYRET, earlyReturn) |
1193  CSL_FMK( UDMAP_CPPI5_PD_PKTINFO2_RETPUSHPOLICY, retPushPolicy ) |
1194  CSL_FMK( UDMAP_CPPI5_PD_PKTINFO2_RETQ, retQnum );
1195  ((CSL_UdmapCppi5HMPD *)pDesc)->pktInfo2 = v;
1196  }
1197 }
1198 
1210 static inline uint32_t CSL_udmapCppi5MonoGetDataOffset( const CSL_UdmapCppi5MMPD *pDesc )
1211 {
1212  return (uint32_t)CSL_FEXT( pDesc->pktInfo2, UDMAP_CPPI5_PD_PKTINFO2_DATA_OFFSET );
1213 }
1214 
1227 static inline void CSL_udmapCppi5MonoSetDataOffset( CSL_UdmapCppi5MMPD *pDesc, uint32_t dataOffset )
1228 {
1229  CSL_FINS( ((CSL_UdmapCppi5MMPD *)pDesc)->pktInfo2, UDMAP_CPPI5_PD_PKTINFO2_DATA_OFFSET, dataOffset );
1230 }
1231 
1245 static inline void CSL_udmapCppi5TrGetReload( const CSL_UdmapCppi5TRPD *pDesc, uint32_t *pReloadEnable, uint32_t *pReloadIdx )
1246 {
1247  *pReloadEnable = (uint32_t)CSL_FEXT( pDesc->descInfo, UDMAP_CPPI5_TRPD_DESCINFO_RELOAD );
1248  *pReloadIdx = (uint32_t)CSL_FEXT( pDesc->descInfo, UDMAP_CPPI5_TRPD_DESCINFO_RLDIDX );
1249 }
1250 
1274 static inline void CSL_udmapCppi5TrSetReload( CSL_UdmapCppi5TRPD *pDesc, uint32_t reloadEnable, uint32_t reloadIdx )
1275 {
1276  CSL_FINS( pDesc->descInfo, UDMAP_CPPI5_TRPD_DESCINFO_RELOAD, reloadEnable );
1277  CSL_FINS( pDesc->descInfo, UDMAP_CPPI5_TRPD_DESCINFO_RLDIDX, reloadIdx );
1278 }
1279 
1290 static inline uint32_t CSL_udmapCppi5TrGetEntryStride( const CSL_UdmapCppi5TRPD *pDesc )
1291 {
1292  return (uint32_t)CSL_FEXT( pDesc->pktInfo, UDMAP_CPPI5_TRPD_PKTINFO_RECSIZE );
1293 }
1294 
1313 static inline void CSL_udmapCppi5TrSetEntryStride( CSL_UdmapCppi5TRPD *pDesc, uint32_t entryStride )
1314 {
1315  CSL_FINS( pDesc->pktInfo, UDMAP_CPPI5_TRPD_PKTINFO_RECSIZE, entryStride );
1316 }
1317 
1318 /* @} */
1319 
1320 #ifdef __cplusplus
1321 }
1322 #endif // extern "C"
1323 
1324 #endif
1325 
static uint32_t CSL_udmapCppi5GetPktType(const void *pDesc)
Get packet type.
Definition: csl_udmap_cppi5.h:1004
static uint32_t CSL_udmapCppi5GetPktLen(const void *pDesc)
Get the packet length.
Definition: csl_udmap_cppi5.h:353
static bool CSL_udmapCppi5IsEpiDataPresent(const void *pDesc)
Is the EPI block present in the descriptor?
Definition: csl_udmap_cppi5.h:598
uint32_t pktInfo2
Definition: csl_udmap_cppi5.h:125
static void CSL_udmapCppi5SetBufferLen(CSL_UdmapCppi5HMPD *pDesc, uint32_t bufferLenBytes)
Set the buffer length.
Definition: csl_udmap_cppi5.h:536
static void CSL_udmapCppi5SetReturnPolicy(void *pDesc, uint32_t descType, uint32_t retPolicy, uint32_t earlyReturn, uint32_t retPushPolicy, uint32_t retQnum)
Set descriptor return policy information.
Definition: csl_udmap_cppi5.h:1169
static uint32_t CSL_udmapCppi5GetErrorFlags(const void *pDesc)
Get error flags.
Definition: csl_udmap_cppi5.h:952
static int32_t CSL_udmapCppi5RdEpiData(const void *pDesc, uint32_t *pTsInfo, uint32_t *pSwInfo0, uint32_t *pSwInfo1, uint32_t *pSwInfo2)
Read the EPI block data.
Definition: csl_udmap_cppi5.h:677
uint64_t orgBufPtr
Definition: csl_udmap_cppi5.h:110
uint32_t swInfo0
Definition: csl_udmap_cppi5.h:89
static void CSL_udmapCppi5SetDstTag(void *pDesc, uint32_t dstTag)
Set destination tag.
Definition: csl_udmap_cppi5.h:935
uint32_t swInfo1
Definition: csl_udmap_cppi5.h:90
static void CSL_udmapCppi5MonoSetPktLen(void *pDesc, uint32_t pktLen)
Set the packet length of mono mode packet descriptors.
Definition: csl_udmap_cppi5.h:430
static void CSL_udmapCppi5SetPsFlags(void *pDesc, uint32_t psFlags)
Set ps flags.
Definition: csl_udmap_cppi5.h:987
static uint64_t CSL_udmapCppi5GetBufferAddr(const CSL_UdmapCppi5HMPD *pDesc)
Get the buffer address.
Definition: csl_udmap_cppi5.h:462
Definition: csl_udmap_cppi5.h:205
static void CSL_udmapCppi5LinkDesc(CSL_UdmapCppi5HMPD *pDesc, uint64_t physBufferDescAddr)
Link a buffer descriptor to a descriptor.
Definition: csl_udmap_cppi5.h:579
static uint64_t CSL_udmapCppi5GetPsDataAddr(const void *pDesc, bool bInSopBuf, bool bEpiPresent)
Return address of the protocol-specific data.
Definition: csl_udmap_cppi5.h:818
uint64_t nextDescPtr
Definition: csl_udmap_cppi5.h:106
#define CSL_UDMAP_CPPI5_PD_DESCINFO_DTYPE_VAL_HOST
Definition: csl_udmap_cppi5.h:137
static void CSL_udmapCppi5SetPktLen(void *pDesc, uint32_t descType, uint32_t pktLen)
Set the packet length.
Definition: csl_udmap_cppi5.h:392
uint32_t descInfo
Definition: csl_udmap_cppi5.h:123
static void CSL_udmapCppi5TrGetReload(const CSL_UdmapCppi5TRPD *pDesc, uint32_t *pReloadEnable, uint32_t *pReloadIdx)
Get TR descriptor reload information.
Definition: csl_udmap_cppi5.h:1245
static void CSL_udmapCppi5TrSetReload(CSL_UdmapCppi5TRPD *pDesc, uint32_t reloadEnable, uint32_t reloadIdx)
Set TR descriptor reload information.
Definition: csl_udmap_cppi5.h:1274
static void CSL_udmapCppi5SetPsDataLoc(void *pDesc, uint32_t psLoc)
Set the location of the protocol-specific data.
Definition: csl_udmap_cppi5.h:755
static uint32_t CSL_udmapCppi5GetPsDataLen(const void *pDesc)
Get the number of bytes of protocol-specific data.
Definition: csl_udmap_cppi5.h:773
#define CSL_UDMAP_CPPI5_PD_DESCINFO_DTYPE_VAL_MONO
Definition: csl_udmap_cppi5.h:138
static void CSL_udmapCppi5MonoSetDataOffset(CSL_UdmapCppi5MMPD *pDesc, uint32_t dataOffset)
Set MONO descriptor data offset.
Definition: csl_udmap_cppi5.h:1227
uint32_t descInfo
Definition: csl_udmap_cppi5.h:207
static void CSL_udmapCppi5SetBufferAddr(CSL_UdmapCppi5HMPD *pDesc, uint64_t physBufferAddr)
Set the buffer address.
Definition: csl_udmap_cppi5.h:498
uint32_t srcDstTag
Definition: csl_udmap_cppi5.h:126
static uint32_t CSL_udmapCppi5GetDescType(const void *pDesc)
Get the descriptor type.
Definition: csl_udmap_cppi5.h:311
uint32_t swInfo2
Definition: csl_udmap_cppi5.h:91
#define CSL_UDMAP_CPPI5_PD_PKTINFO1_PKTID_MASK
Definition: csl_udmap_cppi5.h:158
uint32_t descInfo
Definition: csl_udmap_cppi5.h:102
uint32_t bufInfo1
Definition: csl_udmap_cppi5.h:108
#define CSL_UDMAP_CPPI5_TRPD_PKTINFO_PKTID_MASK
Definition: csl_udmap_cppi5.h:234
static uint32_t CSL_udmapCppi5MonoGetDataOffset(const CSL_UdmapCppi5MMPD *pDesc)
Get MONO descriptor data offset.
Definition: csl_udmap_cppi5.h:1210
static void CSL_udmapCppi5SetIds(void *pDesc, uint32_t descType, uint32_t pktId, uint32_t flowId)
Set IDs.
Definition: csl_udmap_cppi5.h:1066
#define CSL_UDMAP_CPPI5_PD_DESCINFO_DTYPE_VAL_TR
Definition: csl_udmap_cppi5.h:139
#define NULL
Define NULL if not defined.
Definition: csl_types.h:107
static void CSL_udmapCppi5SetOrgBufferLen(CSL_UdmapCppi5HMPD *pDesc, uint32_t bufferLenBytes)
Set the original buffer length.
Definition: csl_udmap_cppi5.h:555
static uint32_t CSL_udmapCppi5GetSrcTag(const void *pDesc)
Get source tag.
Definition: csl_udmap_cppi5.h:891
static void CSL_udmapCppi5SetSrcTag(void *pDesc, uint32_t srcTag)
Set source tag.
Definition: csl_udmap_cppi5.h:920
uint32_t pktInfo1
Definition: csl_udmap_cppi5.h:124
uint32_t pktInfo2
Definition: csl_udmap_cppi5.h:104
static void CSL_udmapCppi5SetDescType(void *pDesc, uint32_t descType)
Set the descriptor type.
Definition: csl_udmap_cppi5.h:332
static void CSL_udmapCppi5GetReturnPolicy(const void *pDesc, uint32_t *pRetPolicy, uint32_t *pEarlyReturn, uint32_t *pRetPushPolicy, uint32_t *pRetQnum)
Get descriptor return policy information.
Definition: csl_udmap_cppi5.h:1105
static uint8_t * CSL_udmapCppi5GetPsDataPtr(const void *pDesc)
Definition: csl_udmap_cppi5.h:847
#define CSL_UDMAP_CPPI5_TRPD_PKTINFO_FLOWID_MASK
Definition: csl_udmap_cppi5.h:236
uint64_t bufPtr
Definition: csl_udmap_cppi5.h:107
static void CSL_udmapCppi5WrEpiData(const void *pDesc, uint32_t tsInfo, uint32_t swInfo0, uint32_t swInfo1, uint32_t swInfo2)
Write the EPI block data.
Definition: csl_udmap_cppi5.h:710
static void CSL_udmapCppi5TrSetEntryStride(CSL_UdmapCppi5TRPD *pDesc, uint32_t nomElSz)
Set TR descriptor entry stride.
Definition: csl_udmap_cppi5.h:1313
uint32_t orgBufLen
Definition: csl_udmap_cppi5.h:109
#define CSL_UDMAP_CPPI5_PD_PKTINFO2_PKTTYPE_MASK
Definition: csl_udmap_cppi5.h:163
static uint32_t CSL_udmapCppi5GetDstTag(const void *pDesc)
Get destination tag.
Definition: csl_udmap_cppi5.h:905
static void CSL_udmapCppi5GetIds(const void *pDesc, uint32_t *pPktId, uint32_t *pFlowId)
Get IDs.
Definition: csl_udmap_cppi5.h:1038
static uint32_t CSL_udmapCppi5TrGetEntryStride(const CSL_UdmapCppi5TRPD *pDesc)
Get TR descriptor entry stride.
Definition: csl_udmap_cppi5.h:1290
static void CSL_udmapCppi5TrSetPktLen(void *pDesc, uint32_t pktLen)
Set the packet length of TR mode packet descriptors.
Definition: csl_udmap_cppi5.h:445
Monolithic-mode packet descriptor.
Definition: csl_udmap_cppi5.h:121
static void CSL_udmapCppi5SetPsDataLen(void *pDesc, uint32_t psDataLen)
Set the number of bytes of protocol-specific data.
Definition: csl_udmap_cppi5.h:794
static uint32_t CSL_udmapCppi5GetBufferLen(const CSL_UdmapCppi5HMPD *pDesc)
Get the buffer length.
Definition: csl_udmap_cppi5.h:479
#define CSL_UDMAP_CPPI5_PD_PKTINFO2_DATA_OFFSET_MASK
Definition: csl_udmap_cppi5.h:169
static void CSL_udmapCppi5HostSetPktLen(void *pDesc, uint32_t pktLen)
Set the packet length of host mode packet descriptors.
Definition: csl_udmap_cppi5.h:415
static uint32_t * CSL_udmapCppi5GetEpiDataPtr(const void *pDesc)
Return pointer to EPI block data.
Definition: csl_udmap_cppi5.h:639
#define CSL_UDMAP_CPPI5_PD_DESCINFO_PSINFO_VAL_IN_DESC
Definition: csl_udmap_cppi5.h:146
uint32_t tsInfo
Definition: csl_udmap_cppi5.h:88
uint32_t retInfo
Definition: csl_udmap_cppi5.h:209
static void CSL_udmapCppi5SetOrgBufferAddr(CSL_UdmapCppi5HMPD *pDesc, uint64_t physBufferAddr)
Set the original buffer address.
Definition: csl_udmap_cppi5.h:517
uint32_t srcDstTag
Definition: csl_udmap_cppi5.h:105
static uint32_t CSL_udmapCppi5GetPsDataLoc(const void *pDesc)
Get the location of the protocol-specific data.
Definition: csl_udmap_cppi5.h:736
static void CSL_udmapCppi5SetEpiDataPresent(void *pDesc, bool bEpiDataPresent)
Set indicator if the EPI block is present in the descriptor.
Definition: csl_udmap_cppi5.h:620
static void CSL_udmapCppi5SetPktType(void *pDesc, uint32_t pktType)
Set packet type.
Definition: csl_udmap_cppi5.h:1022
uint32_t srcDstTag
Definition: csl_udmap_cppi5.h:210
#define CSL_UDMAP_CPPI5_PD_PKTINFO1_FLOWID_MASK
Definition: csl_udmap_cppi5.h:160
Host-mode packet and buffer descriptor.
Definition: csl_udmap_cppi5.h:100
Extended Packet Info (EPI) block.
Definition: csl_udmap_cppi5.h:86
uint32_t pktInfo1
Definition: csl_udmap_cppi5.h:103
static uint32_t CSL_udmapCppi5GetPsFlags(const void *pDesc)
Get ps flags.
Definition: csl_udmap_cppi5.h:969
uint32_t pktInfo
Definition: csl_udmap_cppi5.h:208