/*
* Copyright 2008-2012 Freescale Semiconductor Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of Freescale Semiconductor nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
*
* ALTERNATIVELY, this software may be distributed under the terms of the
* GNU General Public License ("GPL") as published by the Free Software
* Foundation, either version 2 of that License or (at your option) any
* later version.
*
* THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**************************************************************************//**
@File fm_pcd_ipc.h
@Description FM PCD Inter-Partition prototypes, structures and definitions.
*//***************************************************************************/
#ifndef __FM_PCD_IPC_H
#define __FM_PCD_IPC_H
#include "std_ext.h"
/**************************************************************************//**
@Group FM_grp Frame Manager API
@Description FM API functions, definitions and enums
@{
*//***************************************************************************/
#if defined(__MWERKS__) && !defined(__GNUC__)
#pragma pack(push,1)
#endif /* defined(__MWERKS__) && ... */
/**************************************************************************//**
@Description Structure for getting a sw parser address according to a label
Fields commented 'IN' are passed by the port module to be used
by the FM module.
Fields commented 'OUT' will be filled by FM before returning to port.
*//***************************************************************************/
typedef _Packed struct t_FmPcdIpcSwPrsLable
{
uint32_t enumHdr; /**< IN. The existence of this header will invoke
the sw parser code. */
uint8_t indexPerHdr; /**< IN. Normally 0, if more than one sw parser
attachments for the same header, use this
index to distinguish between them. */
} _PackedType t_FmPcdIpcSwPrsLable;
/**************************************************************************//**
@Description Structure for port-PCD communication.
Fields commented 'IN' are passed by the port module to be used
by the FM module.
Fields commented 'OUT' will be filled by FM before returning to port.
Some fields are optional (depending on configuration) and
will be analized by the port and FM modules accordingly.
*//***************************************************************************/
typedef struct t_FmPcdIpcKgSchemesParams
{
uint8_t guestId;
uint8_t numOfSchemes;
uint8_t schemesIds[FM_PCD_KG_NUM_OF_SCHEMES];
} _PackedType t_FmPcdIpcKgSchemesParams;
typedef struct t_FmPcdIpcKgClsPlanParams
{
uint8_t guestId;
uint16_t numOfClsPlanEntries;
uint8_t clsPlanBase;
} _PackedType t_FmPcdIpcKgClsPlanParams;
typedef _Packed struct t_FmPcdIpcPrsIncludePort
{
uint8_t hardwarePortId;
bool include;
} _PackedType t_FmPcdIpcPrsIncludePort;
#define FM_PCD_MAX_REPLY_SIZE 16
#define FM_PCD_MAX_MSG_SIZE 36
#define FM_PCD_MAX_REPLY_BODY_SIZE 36
typedef _Packed struct {
uint32_t msgId;
uint8_t msgBody[FM_PCD_MAX_MSG_SIZE];
} _PackedType t_FmPcdIpcMsg;
typedef _Packed struct t_FmPcdIpcReply {
uint32_t error;
uint8_t replyBody[FM_PCD_MAX_REPLY_BODY_SIZE];
} _PackedType t_FmPcdIpcReply;
typedef _Packed struct t_FmIpcResourceAllocParams {
uint8_t guestId;
uint16_t base;
uint16_t num;
}_PackedType t_FmIpcResourceAllocParams;
#if defined(__MWERKS__) && !defined(__GNUC__)
#pragma pack(pop)
#endif /* defined(__MWERKS__) && ... */
/**************************************************************************//**
@Function FM_PCD_ALLOC_KG_SCHEMES
@Description Used by FM PCD front-end in order to allocate KG resources
@Param[in/out] t_FmPcdIpcKgAllocParams Pointer
*//***************************************************************************/
#define FM_PCD_ALLOC_KG_SCHEMES 3
/**************************************************************************//**
@Function FM_PCD_FREE_KG_SCHEMES
@Description Used by FM PCD front-end in order to Free KG resources
@Param[in/out] t_FmPcdIpcKgSchemesParams Pointer
*//***************************************************************************/
#define FM_PCD_FREE_KG_SCHEMES 4
/**************************************************************************//**
@Function FM_PCD_ALLOC_PROFILES
@Description Used by FM PCD front-end in order to allocate Policer profiles
@Param[in/out] t_FmIpcResourceAllocParams Pointer
*//***************************************************************************/
#define FM_PCD_ALLOC_PROFILES 5
/**************************************************************************//**
@Function FM_PCD_FREE_PROFILES
@Description Used by FM PCD front-end in order to Free Policer profiles
@Param[in/out] t_FmIpcResourceAllocParams Pointer
*//***************************************************************************/
#define FM_PCD_FREE_PROFILES 6
/**************************************************************************//**
@Function FM_PCD_SET_PORT_PROFILES
@Description Used by FM PCD front-end in order to allocate Policer profiles
for specific port
@Param[in/out] t_FmIpcResourceAllocParams Pointer
*//***************************************************************************/
#define FM_PCD_SET_PORT_PROFILES 7
/**************************************************************************//**
@Function FM_PCD_CLEAR_PORT_PROFILES
@Description Used by FM PCD front-end in order to allocate Policer profiles
for specific port
@Param[in/out] t_FmIpcResourceAllocParams Pointer
*//***************************************************************************/
#define FM_PCD_CLEAR_PORT_PROFILES 8
/**************************************************************************//**
@Function FM_PCD_GET_PHYS_MURAM_BASE
@Description Used by FM PCD front-end in order to get MURAM base address
@Param[in/out] t_FmPcdIcPhysAddr Pointer
*//***************************************************************************/
#define FM_PCD_GET_PHYS_MURAM_BASE 9
/**************************************************************************//**
@Function FM_PCD_GET_SW_PRS_OFFSET
@Description Used by FM front-end to get the SW parser offset of the start of
code relevant to a given label.
@Param[in/out] t_FmPcdIpcSwPrsLable Pointer
*//***************************************************************************/
#define FM_PCD_GET_SW_PRS_OFFSET 10
/**************************************************************************//**
@Function FM_PCD_MASTER_IS_ENABLED
@Description Used by FM front-end in order to verify
PCD enablement.
@Param[in] bool Pointer
*//***************************************************************************/
#define FM_PCD_MASTER_IS_ENABLED 15
/**************************************************************************//**
@Function FM_PCD_GUEST_DISABLE
@Description Used by FM front-end to inform back-end when
front-end PCD is disabled
@Param[in] None
*//***************************************************************************/
#define FM_PCD_GUEST_DISABLE 16
/**************************************************************************//**
@Function FM_PCD_FREE_KG_CLSPLAN
@Description Used by FM PCD front-end in order to Free KG classification plan entries
@Param[in/out] t_FmPcdIpcKgClsPlanParams Pointer
*//***************************************************************************/
#define FM_PCD_FREE_KG_CLSPLAN 22
/**************************************************************************//**
@Function FM_PCD_ALLOC_KG_CLSPLAN
@Description Used by FM PCD front-end in order to allocate KG classification plan entries
@Param[in/out] t_FmPcdIpcKgClsPlanParams Pointer
*//***************************************************************************/
#define FM_PCD_ALLOC_KG_CLSPLAN 23
/**************************************************************************//**
@Function FM_PCD_MASTER_IS_ALIVE
@Description Used by FM front-end to check that back-end exists
@Param[in] None
*//***************************************************************************/
#define FM_PCD_MASTER_IS_ALIVE 24
/**************************************************************************//**
@Function FM_PCD_GET_COUNTER
@Description Used by FM front-end to read PCD counters
@Param[in/out] t_FmPcdIpcGetCounter Pointer
*//***************************************************************************/
#define FM_PCD_GET_COUNTER 25
/**************************************************************************//**
@Function FM_PCD_PRS_INC_PORT_STATS
@Description Used by FM front-end to set/clear statistics for port
@Param[in/out] t_FmPcdIpcPrsIncludePort Pointer
*//***************************************************************************/
#define FM_PCD_PRS_INC_PORT_STATS 26
#if (DPAA_VERSION >= 11)
/* TODO - doc */
#define FM_PCD_ALLOC_SP 27
#endif /* (DPAA_VERSION >= 11) */
/** @} */ /* end of FM_PCD_IPC_grp group */
/** @} */ /* end of FM_grp group */
#endif /* __FM_PCD_IPC_H */