PDK Documentation
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 uint64_t CSL_udmapCppi5GetBufferAddr( const CSL_UdmapCppi5HMPD *pDesc );
259 static inline uint32_t CSL_udmapCppi5GetBufferLen( const CSL_UdmapCppi5HMPD *pDesc );
260 static inline void CSL_udmapCppi5SetBufferAddr( CSL_UdmapCppi5HMPD *pDesc, uint64_t physBufferAddr );
261 static inline void CSL_udmapCppi5SetOrgBufferAddr( CSL_UdmapCppi5HMPD *pDesc, uint64_t physBufferAddr );
262 static inline void CSL_udmapCppi5SetBufferLen( CSL_UdmapCppi5HMPD *pDesc, uint32_t bufferLenBytes );
263 static inline void CSL_udmapCppi5SetOrgBufferLen( CSL_UdmapCppi5HMPD *pDesc, uint32_t bufferLenBytes );
264 static inline void CSL_udmapCppi5LinkDesc( CSL_UdmapCppi5HMPD *pDesc, uint64_t physBufferDescAddr );
265 static inline bool CSL_udmapCppi5IsEpiDataPresent( const void *pDesc );
266 static inline void CSL_udmapCppi5SetEpiDataPresent( void *pDesc, bool bEpiDataPresent );
267 static inline uint32_t *CSL_udmapCppi5GetEpiDataPtr( const void *pDesc );
268 static inline int32_t CSL_udmapCppi5RdEpiData( const void *pDesc, uint32_t *pTsInfo, uint32_t *pSwInfo0, uint32_t *pSwInfo1, uint32_t *pSwInfo2 );
269 static inline void CSL_udmapCppi5WrEpiData( const void *pDesc, uint32_t tsInfo, uint32_t swInfo0, uint32_t swInfo1, uint32_t swInfo2 );
270 static inline uint32_t CSL_udmapCppi5GetPsDataLoc( const void *pDesc );
271 static inline void CSL_udmapCppi5SetPsDataLoc( void *pDesc, uint32_t psLoc );
272 static inline uint32_t CSL_udmapCppi5GetPsDataLen( const void *pDesc );
273 static inline void CSL_udmapCppi5SetPsDataLen( void *pDesc, uint32_t psDataLen );
274 static inline uint64_t CSL_udmapCppi5GetPsDataAddr( const void *pDesc, bool bInSopBuf, bool bEpiPresent );
275 static inline uint8_t *CSL_udmapCppi5GetPsDataPtr( const void *pDesc );
276 static inline uint32_t CSL_udmapCppi5GetSrcTag( const void *pDesc );
277 static inline uint32_t CSL_udmapCppi5GetDstTag( const void *pDesc );
278 static inline void CSL_udmapCppi5SetSrcTag( void *pDesc, uint32_t srcTag );
279 static inline void CSL_udmapCppi5SetDstTag( void *pDesc, uint32_t dstTag );
280 static inline uint32_t CSL_udmapCppi5GetErrorFlags( const void *pDesc );
281 static inline uint32_t CSL_udmapCppi5GetPsFlags( const void *pDesc );
282 static inline void CSL_udmapCppi5SetPsFlags( void *pDesc, uint32_t psFlags );
283 static inline uint32_t CSL_udmapCppi5GetPktType( const void *pDesc );
284 static inline void CSL_udmapCppi5SetPktType( void *pDesc, uint32_t pktType );
285 static inline void CSL_udmapCppi5GetIds( const void *pDesc, uint32_t *pPktId, uint32_t *pFlowId );
286 static inline void CSL_udmapCppi5SetIds( void *pDesc, uint32_t descType, uint32_t pktId, uint32_t flowId );
287 static inline void CSL_udmapCppi5GetReturnPolicy( const void *pDesc, uint32_t *pRetPolicy, uint32_t *pEarlyReturn, uint32_t *pRetPushPolicy, uint32_t *pRetQnum );
288 static inline void CSL_udmapCppi5SetReturnPolicy( void *pDesc, uint32_t descType, uint32_t retPolicy, uint32_t earlyReturn, uint32_t retPushPolicy, uint32_t retQnum );
289 static inline uint32_t CSL_udmapCppi5MonoGetDataOffset( const CSL_UdmapCppi5MMPD *pDesc );
290 static inline void CSL_udmapCppi5MonoSetDataOffset( CSL_UdmapCppi5MMPD *pDesc, uint32_t dataOffset );
291 static inline void CSL_udmapCppi5TrGetReload( const CSL_UdmapCppi5TRPD *pDesc, uint32_t *pReloadEnable, uint32_t *pReloadIdx );
292 static inline void CSL_udmapCppi5TrSetReload( CSL_UdmapCppi5TRPD *pDesc, uint32_t reloadEnable, uint32_t reloadIdx );
293 static inline uint32_t CSL_udmapCppi5TrGetEntryStride( const CSL_UdmapCppi5TRPD *pDesc );
294 static inline void CSL_udmapCppi5TrSetEntryStride( CSL_UdmapCppi5TRPD *pDesc, uint32_t nomElSz );
295 
308 static inline uint32_t CSL_udmapCppi5GetDescType( const void *pDesc )
309 {
310  return (uint32_t)CSL_FEXT( ((const CSL_UdmapCppi5HMPD *)pDesc)->descInfo, UDMAP_CPPI5_PD_DESCINFO_DTYPE );
311 }
312 
329 static inline void CSL_udmapCppi5SetDescType( void *pDesc, uint32_t descType )
330 {
331  CSL_FINS( ((CSL_UdmapCppi5HMPD *)pDesc)->descInfo, UDMAP_CPPI5_PD_DESCINFO_DTYPE, descType );
332 }
333 
350 static inline uint32_t CSL_udmapCppi5GetPktLen( const void *pDesc )
351 {
352  uint32_t pktLen;
353  uint32_t descType = CSL_udmapCppi5GetDescType( pDesc );
354 
355  if( (descType == CSL_UDMAP_CPPI5_PD_DESCINFO_DTYPE_VAL_HOST) ||
357  {
358  pktLen = CSL_FEXT( ((const CSL_UdmapCppi5HMPD *)pDesc)->descInfo, UDMAP_CPPI5_PD_DESCINFO_PKTLEN );
359  }
360  else if( descType == CSL_UDMAP_CPPI5_PD_DESCINFO_DTYPE_VAL_TR )
361  {
362  pktLen = (uint32_t)CSL_FEXT( ((const CSL_UdmapCppi5TRPD *)pDesc)->descInfo, UDMAP_CPPI5_TRPD_DESCINFO_LASTIDX ) + (uint32_t)1U;
363  }
364  else
365  {
366  pktLen = 0;
367  }
368  return pktLen;
369 }
370 
389 static inline void CSL_udmapCppi5SetPktLen( void *pDesc, uint32_t descType, uint32_t pktLen )
390 {
391  if( (descType == CSL_UDMAP_CPPI5_PD_DESCINFO_DTYPE_VAL_HOST) ||
393  {
394  CSL_FINS( ((CSL_UdmapCppi5HMPD *)pDesc)->descInfo, UDMAP_CPPI5_PD_DESCINFO_PKTLEN, pktLen );
395  }
397  {
398  CSL_FINS( ((CSL_UdmapCppi5TRPD *)pDesc)->descInfo, UDMAP_CPPI5_TRPD_DESCINFO_LASTIDX, pktLen-1U );
399  }
400 }
401 
414 static inline uint64_t CSL_udmapCppi5GetBufferAddr( const CSL_UdmapCppi5HMPD *pDesc )
415 {
416  return pDesc->bufPtr;
417 }
418 
431 static inline uint32_t CSL_udmapCppi5GetBufferLen( const CSL_UdmapCppi5HMPD *pDesc )
432 {
433  return (uint32_t)CSL_FEXT( pDesc->bufInfo1, UDMAP_CPPI5_PD_BUFINFO1_LEN );
434 }
435 
450 static inline void CSL_udmapCppi5SetBufferAddr( CSL_UdmapCppi5HMPD *pDesc, uint64_t physBufferAddr )
451 {
452  pDesc->bufPtr = physBufferAddr;
453 }
454 
469 static inline void CSL_udmapCppi5SetOrgBufferAddr( CSL_UdmapCppi5HMPD *pDesc, uint64_t physBufferAddr )
470 {
471  pDesc->orgBufPtr = physBufferAddr;
472 }
473 
488 static inline void CSL_udmapCppi5SetBufferLen( CSL_UdmapCppi5HMPD *pDesc, uint32_t bufferLenBytes )
489 {
490  CSL_FINS( pDesc->bufInfo1, UDMAP_CPPI5_PD_BUFINFO1_LEN, bufferLenBytes );
491 }
492 
507 static inline void CSL_udmapCppi5SetOrgBufferLen( CSL_UdmapCppi5HMPD *pDesc, uint32_t bufferLenBytes )
508 {
509  pDesc->orgBufLen = bufferLenBytes;
510 }
511 
531 static inline void CSL_udmapCppi5LinkDesc( CSL_UdmapCppi5HMPD *pDesc, uint64_t physBufferDescAddr )
532 {
533  pDesc->nextDescPtr = physBufferDescAddr;
534 }
535 
550 static inline bool CSL_udmapCppi5IsEpiDataPresent( const void *pDesc )
551 {
552  uint32_t fieldVal;
553 
554  fieldVal = CSL_FEXT( ((const CSL_UdmapCppi5HMPD *)pDesc)->descInfo, UDMAP_CPPI5_PD_DESCINFO_EINFO );
555  return (fieldVal == (uint32_t)0U) ? (bool)false : (bool)true;
556 }
557 
572 static inline void CSL_udmapCppi5SetEpiDataPresent( void *pDesc, bool bEpiDataPresent )
573 {
574  CSL_FINS( ((CSL_UdmapCppi5HMPD *)pDesc)->descInfo, UDMAP_CPPI5_PD_DESCINFO_EINFO, (bEpiDataPresent==(bool)true) ? (uint32_t)1U : (uint32_t)0U );
575 }
576 
591 static inline uint32_t *CSL_udmapCppi5GetEpiDataPtr( const void *pDesc )
592 {
593  uint32_t *pEpiData = NULL;
594 
595  if( CSL_udmapCppi5IsEpiDataPresent(pDesc) == (bool)true )
596  {
597  uint32_t descType = CSL_udmapCppi5GetDescType( pDesc );
598 
600  {
601  pEpiData = (uint32_t *)((const uint8_t *)pDesc + sizeof(CSL_UdmapCppi5HMPD));
602  }
603  else
604  {
605  pEpiData = (uint32_t *)((const uint8_t *)pDesc + sizeof(CSL_UdmapCppi5MMPD));
606  }
607  }
608  return pEpiData;
609 }
610 
629 static inline int32_t CSL_udmapCppi5RdEpiData( const void *pDesc, uint32_t *pTsInfo, uint32_t *pSwInfo0, uint32_t *pSwInfo1, uint32_t *pSwInfo2 )
630 {
631  int32_t retVal = -1;
632  uint32_t *pSrcEpiData = CSL_udmapCppi5GetEpiDataPtr(pDesc);
633 
634  if( pSrcEpiData != (void *)0 )
635  {
636  *pTsInfo = *pSrcEpiData; pSrcEpiData++;
637  *pSwInfo0 = *pSrcEpiData; pSrcEpiData++;
638  *pSwInfo1 = *pSrcEpiData; pSrcEpiData++;
639  *pSwInfo2 = *pSrcEpiData;
640  retVal = 0;
641  }
642  return retVal;
643 }
644 
662 static inline void CSL_udmapCppi5WrEpiData( const void *pDesc, uint32_t tsInfo, uint32_t swInfo0, uint32_t swInfo1, uint32_t swInfo2 )
663 {
664  uint32_t *pDstEpiData = CSL_udmapCppi5GetEpiDataPtr(pDesc);
665 
666  if( pDstEpiData != (void *)0 )
667  {
668  *pDstEpiData = tsInfo; pDstEpiData++;
669  *pDstEpiData = swInfo0; pDstEpiData++;
670  *pDstEpiData = swInfo1; pDstEpiData++;
671  *pDstEpiData = swInfo2;
672  }
673 }
674 
688 static inline uint32_t CSL_udmapCppi5GetPsDataLoc( const void *pDesc )
689 {
690  return (uint32_t)CSL_FEXT( ((const CSL_UdmapCppi5HMPD *)pDesc)->descInfo, UDMAP_CPPI5_PD_DESCINFO_PSINFO );
691 }
692 
707 static inline void CSL_udmapCppi5SetPsDataLoc( void *pDesc, uint32_t psLoc )
708 {
709  CSL_FINS( ((CSL_UdmapCppi5HMPD *)pDesc)->descInfo, UDMAP_CPPI5_PD_DESCINFO_PSINFO, psLoc );
710 }
711 
725 static inline uint32_t CSL_udmapCppi5GetPsDataLen( const void *pDesc )
726 {
727  return ((uint32_t)CSL_FEXT( ((const CSL_UdmapCppi5HMPD *)pDesc)->descInfo, UDMAP_CPPI5_PD_DESCINFO_PSWCNT )) * 4U;
728 }
729 
746 static inline void CSL_udmapCppi5SetPsDataLen( void *pDesc, uint32_t psDataLen )
747 {
748  CSL_FINS( ((CSL_UdmapCppi5HMPD *)pDesc)->descInfo, UDMAP_CPPI5_PD_DESCINFO_PSWCNT, (psDataLen/4U) );
749 }
750 
770 static inline uint64_t CSL_udmapCppi5GetPsDataAddr( const void *pDesc, bool bInSopBuf, bool bEpiPresent )
771 {
772  uint64_t psDataAddr;
773  uint32_t descType = CSL_udmapCppi5GetDescType( pDesc );
774  uint32_t epiDataSize;
775 
776  epiDataSize = (bEpiPresent == (bool)false) ? (uint32_t)0U : (uint32_t)sizeof(CSL_UdmapCppi5Epi);
778  {
779  if( bInSopBuf == (bool)true )
780  {
781  /* psData is in SOP buffer immediately prior to the data */
782  psDataAddr = (uint64_t)((uintptr_t)(((const CSL_UdmapCppi5HMPD *)pDesc)->bufPtr));
783  }
784  else
785  {
786  /* psData is in the descriptor */
787  psDataAddr = (uint64_t)((const uint8_t *)pDesc + sizeof(CSL_UdmapCppi5HMPD) + epiDataSize);
788  }
789  }
790  else
791  {
792  /* Get pointer to psData in MONO descriptor */
793  psDataAddr = (uint64_t)((const uint8_t *)pDesc + sizeof(CSL_UdmapCppi5MMPD) + epiDataSize);
794 
795  }
796  return psDataAddr;
797 }
798 
799 static inline uint8_t *CSL_udmapCppi5GetPsDataPtr( const void *pDesc )
800 {
801  uint8_t *pPsData = NULL;
802  uint32_t psDataLen;
803 
804  psDataLen = CSL_udmapCppi5GetPsDataLen( pDesc );
805  if( psDataLen != (uint32_t)0U )
806  {
807  uint32_t descType = CSL_udmapCppi5GetDescType( pDesc );
808  uint32_t epiDataSize;
809 
810  epiDataSize = (CSL_udmapCppi5IsEpiDataPresent( pDesc ) == (bool)false) ? (uint32_t)0U : (uint32_t)sizeof(CSL_UdmapCppi5Epi);
812  {
813  uint32_t psLoc = CSL_FEXT( ((const CSL_UdmapCppi5HMPD *)pDesc)->descInfo, UDMAP_CPPI5_PD_DESCINFO_PSINFO );
815  {
816  /* psData is in the descriptor */
817  pPsData = (uint8_t *)((const uint8_t *)pDesc + sizeof(CSL_UdmapCppi5HMPD) + epiDataSize);
818  }
819  else
820  {
821  /* psData is in SOP buffer immediately prior to the data */
822  pPsData = (uint8_t *)(uintptr_t)(((const CSL_UdmapCppi5HMPD *)pDesc)->bufPtr);
823  }
824  }
825  else
826  {
827  /* Get pointer to psData in MONO descriptor */
828  pPsData = (uint8_t *)((const uint8_t *)pDesc + sizeof(CSL_UdmapCppi5MMPD) + epiDataSize);
829  }
830  }
831  return pPsData;
832 }
833 
843 static inline uint32_t CSL_udmapCppi5GetSrcTag( const void *pDesc )
844 {
845  return (uint32_t)CSL_FEXT( ((const CSL_UdmapCppi5HMPD *)pDesc)->srcDstTag, UDMAP_CPPI5_PD_SRCDSTTAG_SRCTAG );
846 }
847 
857 static inline uint32_t CSL_udmapCppi5GetDstTag( const void *pDesc )
858 {
859  return (uint32_t)CSL_FEXT( ((const CSL_UdmapCppi5HMPD *)pDesc)->srcDstTag, UDMAP_CPPI5_PD_SRCDSTTAG_DSTTAG );
860 }
861 
872 static inline void CSL_udmapCppi5SetSrcTag( void *pDesc, uint32_t srcTag )
873 {
874  CSL_FINS( ((CSL_UdmapCppi5HMPD *)pDesc)->srcDstTag, UDMAP_CPPI5_PD_SRCDSTTAG_SRCTAG, srcTag );
875 }
876 
887 static inline void CSL_udmapCppi5SetDstTag( void *pDesc, uint32_t dstTag )
888 {
889  CSL_FINS( ((CSL_UdmapCppi5HMPD *)pDesc)->srcDstTag, UDMAP_CPPI5_PD_SRCDSTTAG_DSTTAG, dstTag );
890 }
891 
904 static inline uint32_t CSL_udmapCppi5GetErrorFlags( const void *pDesc )
905 {
906  return (uint32_t)CSL_FEXT( ((const CSL_UdmapCppi5HMPD *)pDesc)->pktInfo1, UDMAP_CPPI5_PD_PKTINFO1_PKTERROR );
907 }
908 
921 static inline uint32_t CSL_udmapCppi5GetPsFlags( const void *pDesc )
922 {
923  return (uint32_t)CSL_FEXT( ((const CSL_UdmapCppi5HMPD *)pDesc)->pktInfo1, UDMAP_CPPI5_PD_PKTINFO1_PSFLGS );
924 }
925 
939 static inline void CSL_udmapCppi5SetPsFlags( void *pDesc, uint32_t psFlags )
940 {
941  CSL_FINS( ((CSL_UdmapCppi5HMPD *)pDesc)->pktInfo1, UDMAP_CPPI5_PD_PKTINFO1_PSFLGS, psFlags );
942 }
943 
956 static inline uint32_t CSL_udmapCppi5GetPktType( const void *pDesc )
957 {
958  return (uint32_t)CSL_FEXT( ((const CSL_UdmapCppi5HMPD *)pDesc)->pktInfo2, UDMAP_CPPI5_PD_PKTINFO2_PKTTYPE );
959 }
960 
974 static inline void CSL_udmapCppi5SetPktType( void *pDesc, uint32_t pktType )
975 {
976  CSL_FINS( ((CSL_UdmapCppi5HMPD *)pDesc)->pktInfo2, UDMAP_CPPI5_PD_PKTINFO2_PKTTYPE, pktType );
977 }
978 
990 static inline void CSL_udmapCppi5GetIds( const void *pDesc, uint32_t *pPktId, uint32_t *pFlowId )
991 {
992  uint32_t descType = CSL_udmapCppi5GetDescType( pDesc );
993 
995  {
996  *pPktId = CSL_FEXT( ((const CSL_UdmapCppi5TRPD *)pDesc)->pktInfo, UDMAP_CPPI5_TRPD_PKTINFO_PKTID );
997  *pFlowId = CSL_FEXT( ((const CSL_UdmapCppi5TRPD *)pDesc)->pktInfo, UDMAP_CPPI5_TRPD_PKTINFO_FLOWID );
998  }
999  else
1000  {
1001  *pPktId = CSL_FEXT( ((const CSL_UdmapCppi5HMPD *)pDesc)->pktInfo1, UDMAP_CPPI5_PD_PKTINFO1_PKTID );
1002  *pFlowId = CSL_FEXT( ((const CSL_UdmapCppi5HMPD *)pDesc)->pktInfo1, UDMAP_CPPI5_PD_PKTINFO1_FLOWID );
1003  }
1004 }
1005 
1018 static inline void CSL_udmapCppi5SetIds( void *pDesc, uint32_t descType, uint32_t pktId, uint32_t flowId )
1019 {
1020  uint32_t v;
1021 
1023  {
1024  v = ((CSL_UdmapCppi5TRPD *)pDesc)->pktInfo;
1026  v |= CSL_FMK( UDMAP_CPPI5_TRPD_PKTINFO_PKTID, pktId ) |
1027  CSL_FMK( UDMAP_CPPI5_TRPD_PKTINFO_FLOWID, flowId );
1028  ((CSL_UdmapCppi5TRPD *)pDesc)->pktInfo = v;
1029  }
1030  else
1031  {
1032  v = ((CSL_UdmapCppi5HMPD *)pDesc)->pktInfo1;
1034  v |= CSL_FMK( UDMAP_CPPI5_PD_PKTINFO1_PKTID, pktId ) |
1035  CSL_FMK( UDMAP_CPPI5_PD_PKTINFO1_FLOWID, flowId );
1036  ((CSL_UdmapCppi5HMPD *)pDesc)->pktInfo1 = v;
1037  }
1038 }
1039 
1057 static inline void CSL_udmapCppi5GetReturnPolicy( const void *pDesc, uint32_t *pRetPolicy, uint32_t *pEarlyReturn, uint32_t *pRetPushPolicy, uint32_t *pRetQnum )
1058 {
1059  uint32_t descType = CSL_udmapCppi5GetDescType( pDesc );
1060 
1062  {
1063  *pRetPolicy = 0;
1064  *pEarlyReturn = 0;
1065  *pRetPushPolicy = CSL_FEXT( ((const CSL_UdmapCppi5TRPD *)pDesc)->retInfo, UDMAP_CPPI5_TRPD_RETINFO_RETPOLICY );
1066  *pRetQnum = CSL_FEXT( ((const CSL_UdmapCppi5TRPD *)pDesc)->retInfo, UDMAP_CPPI5_TRPD_RETINFO_RETQ );
1067  }
1068  else
1069  {
1071  {
1072  *pRetPolicy = 0;
1073  }
1074  else
1075  {
1076  *pRetPolicy = CSL_FEXT( ((const CSL_UdmapCppi5HMPD *)pDesc)->pktInfo2, UDMAP_CPPI5_PD_PKTINFO2_RETPOLICY );
1077  }
1078  *pEarlyReturn = CSL_FEXT( ((const CSL_UdmapCppi5HMPD *)pDesc)->pktInfo2, UDMAP_CPPI5_PD_PKTINFO2_EARLYRET );
1079  *pRetPushPolicy = CSL_FEXT( ((const CSL_UdmapCppi5HMPD *)pDesc)->pktInfo2, UDMAP_CPPI5_PD_PKTINFO2_RETPUSHPOLICY );
1080  *pRetQnum = CSL_FEXT( ((const CSL_UdmapCppi5HMPD *)pDesc)->pktInfo2, UDMAP_CPPI5_PD_PKTINFO2_RETQ );
1081  }
1082 }
1083 
1121 static inline void CSL_udmapCppi5SetReturnPolicy( void *pDesc, uint32_t descType, uint32_t retPolicy, uint32_t earlyReturn, uint32_t retPushPolicy, uint32_t retQnum )
1122 {
1123  uint32_t v;
1124 
1126  {
1127  ((CSL_UdmapCppi5TRPD *)pDesc)->retInfo =
1128  CSL_FMK( UDMAP_CPPI5_TRPD_RETINFO_RETPOLICY, retPushPolicy ) |
1129  CSL_FMK( UDMAP_CPPI5_TRPD_RETINFO_RETQ, retQnum ) ;
1130  }
1131  else
1132  {
1133  v = ((CSL_UdmapCppi5HMPD *)pDesc)->pktInfo2;
1135  {
1137  }
1138  else
1139  {
1141  v |= CSL_FMK( UDMAP_CPPI5_PD_PKTINFO2_RETPOLICY, retPolicy );
1142 
1143  }
1144  v |= CSL_FMK( UDMAP_CPPI5_PD_PKTINFO2_EARLYRET, earlyReturn) |
1145  CSL_FMK( UDMAP_CPPI5_PD_PKTINFO2_RETPUSHPOLICY, retPushPolicy ) |
1146  CSL_FMK( UDMAP_CPPI5_PD_PKTINFO2_RETQ, retQnum );
1147  ((CSL_UdmapCppi5HMPD *)pDesc)->pktInfo2 = v;
1148  }
1149 }
1150 
1162 static inline uint32_t CSL_udmapCppi5MonoGetDataOffset( const CSL_UdmapCppi5MMPD *pDesc )
1163 {
1164  return (uint32_t)CSL_FEXT( pDesc->pktInfo2, UDMAP_CPPI5_PD_PKTINFO2_DATA_OFFSET );
1165 }
1166 
1179 static inline void CSL_udmapCppi5MonoSetDataOffset( CSL_UdmapCppi5MMPD *pDesc, uint32_t dataOffset )
1180 {
1181  CSL_FINS( ((CSL_UdmapCppi5MMPD *)pDesc)->pktInfo2, UDMAP_CPPI5_PD_PKTINFO2_DATA_OFFSET, dataOffset );
1182 }
1183 
1197 static inline void CSL_udmapCppi5TrGetReload( const CSL_UdmapCppi5TRPD *pDesc, uint32_t *pReloadEnable, uint32_t *pReloadIdx )
1198 {
1199  *pReloadEnable = (uint32_t)CSL_FEXT( pDesc->descInfo, UDMAP_CPPI5_TRPD_DESCINFO_RELOAD );
1200  *pReloadIdx = (uint32_t)CSL_FEXT( pDesc->descInfo, UDMAP_CPPI5_TRPD_DESCINFO_RLDIDX );
1201 }
1202 
1226 static inline void CSL_udmapCppi5TrSetReload( CSL_UdmapCppi5TRPD *pDesc, uint32_t reloadEnable, uint32_t reloadIdx )
1227 {
1228  CSL_FINS( pDesc->descInfo, UDMAP_CPPI5_TRPD_DESCINFO_RELOAD, reloadEnable );
1229  CSL_FINS( pDesc->descInfo, UDMAP_CPPI5_TRPD_DESCINFO_RLDIDX, reloadIdx );
1230 }
1231 
1242 static inline uint32_t CSL_udmapCppi5TrGetEntryStride( const CSL_UdmapCppi5TRPD *pDesc )
1243 {
1244  return (uint32_t)CSL_FEXT( pDesc->pktInfo, UDMAP_CPPI5_TRPD_PKTINFO_RECSIZE );
1245 }
1246 
1265 static inline void CSL_udmapCppi5TrSetEntryStride( CSL_UdmapCppi5TRPD *pDesc, uint32_t entryStride )
1266 {
1267  CSL_FINS( pDesc->pktInfo, UDMAP_CPPI5_TRPD_PKTINFO_RECSIZE, entryStride );
1268 }
1269 
1270 /* @} */
1271 
1272 #ifdef __cplusplus
1273 }
1274 #endif // extern "C"
1275 
1276 #endif
1277 
static uint32_t CSL_udmapCppi5GetPktType(const void *pDesc)
Get packet type.
Definition: csl_udmap_cppi5.h:956
static uint32_t CSL_udmapCppi5GetPktLen(const void *pDesc)
Get the packet length.
Definition: csl_udmap_cppi5.h:350
static bool CSL_udmapCppi5IsEpiDataPresent(const void *pDesc)
Is the EPI block present in the descriptor?
Definition: csl_udmap_cppi5.h:550
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:488
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:1121
static uint32_t CSL_udmapCppi5GetErrorFlags(const void *pDesc)
Get error flags.
Definition: csl_udmap_cppi5.h:904
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:629
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:887
uint32_t swInfo1
Definition: csl_udmap_cppi5.h:90
static void CSL_udmapCppi5SetPsFlags(void *pDesc, uint32_t psFlags)
Set ps flags.
Definition: csl_udmap_cppi5.h:939
static uint64_t CSL_udmapCppi5GetBufferAddr(const CSL_UdmapCppi5HMPD *pDesc)
Get the buffer address.
Definition: csl_udmap_cppi5.h:414
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:531
static uint64_t CSL_udmapCppi5GetPsDataAddr(const void *pDesc, bool bInSopBuf, bool bEpiPresent)
Return address of the protocol-specific data.
Definition: csl_udmap_cppi5.h:770
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:389
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:1197
static void CSL_udmapCppi5TrSetReload(CSL_UdmapCppi5TRPD *pDesc, uint32_t reloadEnable, uint32_t reloadIdx)
Set TR descriptor reload information.
Definition: csl_udmap_cppi5.h:1226
static void CSL_udmapCppi5SetPsDataLoc(void *pDesc, uint32_t psLoc)
Set the location of the protocol-specific data.
Definition: csl_udmap_cppi5.h:707
static uint32_t CSL_udmapCppi5GetPsDataLen(const void *pDesc)
Get the number of bytes of protocol-specific data.
Definition: csl_udmap_cppi5.h:725
#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:1179
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:450
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:308
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:1162
static void CSL_udmapCppi5SetIds(void *pDesc, uint32_t descType, uint32_t pktId, uint32_t flowId)
Set IDs.
Definition: csl_udmap_cppi5.h:1018
#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:507
static uint32_t CSL_udmapCppi5GetSrcTag(const void *pDesc)
Get source tag.
Definition: csl_udmap_cppi5.h:843
static void CSL_udmapCppi5SetSrcTag(void *pDesc, uint32_t srcTag)
Set source tag.
Definition: csl_udmap_cppi5.h:872
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:329
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:1057
static uint8_t * CSL_udmapCppi5GetPsDataPtr(const void *pDesc)
Definition: csl_udmap_cppi5.h:799
#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:662
static void CSL_udmapCppi5TrSetEntryStride(CSL_UdmapCppi5TRPD *pDesc, uint32_t nomElSz)
Set TR descriptor entry stride.
Definition: csl_udmap_cppi5.h:1265
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:857
static void CSL_udmapCppi5GetIds(const void *pDesc, uint32_t *pPktId, uint32_t *pFlowId)
Get IDs.
Definition: csl_udmap_cppi5.h:990
static uint32_t CSL_udmapCppi5TrGetEntryStride(const CSL_UdmapCppi5TRPD *pDesc)
Get TR descriptor entry stride.
Definition: csl_udmap_cppi5.h:1242
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:746
static uint32_t CSL_udmapCppi5GetBufferLen(const CSL_UdmapCppi5HMPD *pDesc)
Get the buffer length.
Definition: csl_udmap_cppi5.h:431
#define CSL_UDMAP_CPPI5_PD_PKTINFO2_DATA_OFFSET_MASK
Definition: csl_udmap_cppi5.h:169
static uint32_t * CSL_udmapCppi5GetEpiDataPtr(const void *pDesc)
Return pointer to EPI block data.
Definition: csl_udmap_cppi5.h:591
#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:469
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:688
static void CSL_udmapCppi5SetEpiDataPresent(void *pDesc, bool bEpiDataPresent)
Set indicator if the EPI block is present in the descriptor.
Definition: csl_udmap_cppi5.h:572
static void CSL_udmapCppi5SetPktType(void *pDesc, uint32_t pktType)
Set packet type.
Definition: csl_udmap_cppi5.h:974
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:921
uint32_t pktInfo
Definition: csl_udmap_cppi5.h:208