1/*
2 * Copyright 2008-2012 Freescale Semiconductor Inc.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are met:
6 *     * Redistributions of source code must retain the above copyright
7 *       notice, this list of conditions and the following disclaimer.
8 *     * Redistributions in binary form must reproduce the above copyright
9 *       notice, this list of conditions and the following disclaimer in the
10 *       documentation and/or other materials provided with the distribution.
11 *     * Neither the name of Freescale Semiconductor nor the
12 *       names of its contributors may be used to endorse or promote products
13 *       derived from this software without specific prior written permission.
14 *
15 *
16 * ALTERNATIVELY, this software may be distributed under the terms of the
17 * GNU General Public License ("GPL") as published by the Free Software
18 * Foundation, either version 2 of that License or (at your option) any
19 * later version.
20 *
21 * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY
22 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
23 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
24 * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
25 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
26 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
27 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
28 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 */
32
33
34/**************************************************************************//**
35 @File          fm_pcd_ipc.h
36
37 @Description   FM PCD Inter-Partition prototypes, structures and definitions.
38*//***************************************************************************/
39#ifndef __FM_PCD_IPC_H
40#define __FM_PCD_IPC_H
41
42#include "std_ext.h"
43
44
45/**************************************************************************//**
46 @Group         FM_grp Frame Manager API
47
48 @Description   FM API functions, definitions and enums
49
50 @{
51*//***************************************************************************/
52
53
54#if defined(__MWERKS__) && !defined(__GNUC__)
55#pragma pack(push,1)
56#endif /* defined(__MWERKS__) && ... */
57
58/**************************************************************************//**
59 @Description   Structure for getting a sw parser address according to a label
60                Fields commented 'IN' are passed by the port module to be used
61                by the FM module.
62                Fields commented 'OUT' will be filled by FM before returning to port.
63*//***************************************************************************/
64typedef _Packed struct t_FmPcdIpcSwPrsLable
65{
66    uint32_t    enumHdr;                        /**< IN. The existence of this header will invoke
67                                                     the sw parser code. */
68    uint8_t     indexPerHdr;                    /**< IN. Normally 0, if more than one sw parser
69                                                     attachments for the same header, use this
70
71                                                   index to distinguish between them. */
72} _PackedType t_FmPcdIpcSwPrsLable;
73
74/**************************************************************************//**
75 @Description   Structure for port-PCD communication.
76                Fields commented 'IN' are passed by the port module to be used
77                by the FM module.
78                Fields commented 'OUT' will be filled by FM before returning to port.
79                Some fields are optional (depending on configuration) and
80                will be analized by the port and FM modules accordingly.
81*//***************************************************************************/
82
83typedef  struct t_FmPcdIpcKgSchemesParams
84{
85    uint8_t     guestId;
86    uint8_t     numOfSchemes;
87    uint8_t     schemesIds[FM_PCD_KG_NUM_OF_SCHEMES];
88} _PackedType t_FmPcdIpcKgSchemesParams;
89
90typedef  struct t_FmPcdIpcKgClsPlanParams
91{
92    uint8_t     guestId;
93    uint16_t    numOfClsPlanEntries;
94    uint8_t     clsPlanBase;
95} _PackedType t_FmPcdIpcKgClsPlanParams;
96
97typedef _Packed struct t_FmPcdIpcPrsIncludePort
98{
99    uint8_t     hardwarePortId;
100    bool        include;
101} _PackedType t_FmPcdIpcPrsIncludePort;
102
103
104#define FM_PCD_MAX_REPLY_SIZE           16
105#define FM_PCD_MAX_MSG_SIZE             36
106#define FM_PCD_MAX_REPLY_BODY_SIZE      36
107
108typedef _Packed struct {
109    uint32_t    msgId;
110    uint8_t     msgBody[FM_PCD_MAX_MSG_SIZE];
111} _PackedType t_FmPcdIpcMsg;
112
113typedef _Packed struct t_FmPcdIpcReply {
114    uint32_t    error;
115    uint8_t     replyBody[FM_PCD_MAX_REPLY_BODY_SIZE];
116} _PackedType t_FmPcdIpcReply;
117
118typedef _Packed struct t_FmIpcResourceAllocParams {
119    uint8_t     guestId;
120    uint16_t    base;
121    uint16_t    num;
122}_PackedType t_FmIpcResourceAllocParams;
123
124#if defined(__MWERKS__) && !defined(__GNUC__)
125#pragma pack(pop)
126#endif /* defined(__MWERKS__) && ... */
127
128
129
130/**************************************************************************//**
131 @Function      FM_PCD_ALLOC_KG_SCHEMES
132
133 @Description   Used by FM PCD front-end in order to allocate KG resources
134
135 @Param[in/out] t_FmPcdIpcKgAllocParams Pointer
136*//***************************************************************************/
137#define FM_PCD_ALLOC_KG_SCHEMES                 3
138
139/**************************************************************************//**
140 @Function      FM_PCD_FREE_KG_SCHEMES
141
142 @Description   Used by FM PCD front-end in order to Free KG resources
143
144 @Param[in/out] t_FmPcdIpcKgSchemesParams Pointer
145*//***************************************************************************/
146#define FM_PCD_FREE_KG_SCHEMES                  4
147
148/**************************************************************************//**
149 @Function      FM_PCD_ALLOC_PROFILES
150
151 @Description   Used by FM PCD front-end in order to allocate Policer profiles
152
153 @Param[in/out] t_FmIpcResourceAllocParams Pointer
154*//***************************************************************************/
155#define FM_PCD_ALLOC_PROFILES                   5
156
157/**************************************************************************//**
158 @Function      FM_PCD_FREE_PROFILES
159
160 @Description   Used by FM PCD front-end in order to Free Policer profiles
161
162 @Param[in/out] t_FmIpcResourceAllocParams Pointer
163*//***************************************************************************/
164#define FM_PCD_FREE_PROFILES                    6
165
166/**************************************************************************//**
167 @Function      FM_PCD_SET_PORT_PROFILES
168
169 @Description   Used by FM PCD front-end in order to allocate Policer profiles
170                for specific port
171
172 @Param[in/out] t_FmIpcResourceAllocParams Pointer
173*//***************************************************************************/
174#define FM_PCD_SET_PORT_PROFILES                7
175
176/**************************************************************************//**
177 @Function      FM_PCD_CLEAR_PORT_PROFILES
178
179 @Description   Used by FM PCD front-end in order to allocate Policer profiles
180                for specific port
181
182 @Param[in/out] t_FmIpcResourceAllocParams Pointer
183*//***************************************************************************/
184#define FM_PCD_CLEAR_PORT_PROFILES              8
185
186/**************************************************************************//**
187 @Function      FM_PCD_GET_PHYS_MURAM_BASE
188
189 @Description   Used by FM PCD front-end in order to get MURAM base address
190
191 @Param[in/out] t_FmPcdIcPhysAddr Pointer
192*//***************************************************************************/
193#define FM_PCD_GET_PHYS_MURAM_BASE              9
194
195/**************************************************************************//**
196 @Function      FM_PCD_GET_SW_PRS_OFFSET
197
198 @Description   Used by FM front-end to get the SW parser offset of the start of
199                code relevant to a given label.
200
201 @Param[in/out] t_FmPcdIpcSwPrsLable Pointer
202*//***************************************************************************/
203#define FM_PCD_GET_SW_PRS_OFFSET                10
204
205/**************************************************************************//**
206 @Function      FM_PCD_MASTER_IS_ENABLED
207
208 @Description   Used by FM front-end in order to verify
209                PCD enablement.
210
211 @Param[in]     bool Pointer
212*//***************************************************************************/
213#define FM_PCD_MASTER_IS_ENABLED                15
214
215/**************************************************************************//**
216 @Function      FM_PCD_GUEST_DISABLE
217
218 @Description   Used by FM front-end to inform back-end when
219                front-end PCD is disabled
220
221 @Param[in]     None
222*//***************************************************************************/
223#define FM_PCD_GUEST_DISABLE                    16
224
225/**************************************************************************//**
226 @Function      FM_PCD_FREE_KG_CLSPLAN
227
228 @Description   Used by FM PCD front-end in order to Free KG classification plan entries
229
230 @Param[in/out] t_FmPcdIpcKgClsPlanParams Pointer
231*//***************************************************************************/
232#define FM_PCD_FREE_KG_CLSPLAN                  22
233
234/**************************************************************************//**
235 @Function      FM_PCD_ALLOC_KG_CLSPLAN
236
237 @Description   Used by FM PCD front-end in order to allocate KG classification plan entries
238
239 @Param[in/out] t_FmPcdIpcKgClsPlanParams Pointer
240*//***************************************************************************/
241#define FM_PCD_ALLOC_KG_CLSPLAN                 23
242
243/**************************************************************************//**
244 @Function      FM_PCD_MASTER_IS_ALIVE
245
246 @Description   Used by FM front-end to check that back-end exists
247
248 @Param[in]     None
249*//***************************************************************************/
250#define FM_PCD_MASTER_IS_ALIVE                  24
251
252/**************************************************************************//**
253 @Function      FM_PCD_GET_COUNTER
254
255 @Description   Used by FM front-end to read PCD counters
256
257 @Param[in/out] t_FmPcdIpcGetCounter Pointer
258*//***************************************************************************/
259#define FM_PCD_GET_COUNTER                      25
260
261/**************************************************************************//**
262 @Function      FM_PCD_PRS_INC_PORT_STATS
263
264 @Description   Used by FM front-end to set/clear statistics for port
265
266 @Param[in/out] t_FmPcdIpcPrsIncludePort Pointer
267*//***************************************************************************/
268#define FM_PCD_PRS_INC_PORT_STATS               26
269
270#if (DPAA_VERSION >= 11)
271/* TODO - doc */
272#define FM_PCD_ALLOC_SP                         27
273#endif /* (DPAA_VERSION >= 11) */
274
275
276/** @} */ /* end of FM_PCD_IPC_grp group */
277/** @} */ /* end of FM_grp group */
278
279
280#endif /* __FM_PCD_IPC_H */
281