The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/ncsw/Peripherals/FM/inc/fm_common.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    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_common.h
   36 
   37  @Description   FM internal structures and definitions.
   38 *//***************************************************************************/
   39 #ifndef __FM_COMMON_H
   40 #define __FM_COMMON_H
   41 
   42 #include "error_ext.h"
   43 #include "std_ext.h"
   44 #include "fm_pcd_ext.h"
   45 #include "fm_ext.h"
   46 #include "fm_port_ext.h"
   47 
   48 
   49 #define e_FM_PORT_TYPE_OH_HOST_COMMAND      e_FM_PORT_TYPE_DUMMY
   50 
   51 #define CLS_PLAN_NUM_PER_GRP                        8
   52 
   53 #define IP_OFFLOAD_PACKAGE_NUMBER                   106
   54 #define CAPWAP_OFFLOAD_PACKAGE_NUMBER               108
   55 #define IS_OFFLOAD_PACKAGE(num) ((num == IP_OFFLOAD_PACKAGE_NUMBER) || (num == CAPWAP_OFFLOAD_PACKAGE_NUMBER))
   56 
   57 
   58 
   59 /**************************************************************************//**
   60  @Description       Modules registers offsets
   61 *//***************************************************************************/
   62 #define FM_MM_MURAM             0x00000000
   63 #define FM_MM_BMI               0x00080000
   64 #define FM_MM_QMI               0x00080400
   65 #define FM_MM_PRS               0x000c7000
   66 #define FM_MM_KG                0x000C1000
   67 #define FM_MM_DMA               0x000C2000
   68 #define FM_MM_FPM               0x000C3000
   69 #define FM_MM_PLCR              0x000C0000
   70 #define FM_MM_IMEM              0x000C4000
   71 #define FM_MM_CGP               0x000DB000
   72 #define FM_MM_TRB(i)            (0x000D0200 + 0x400 * (i))
   73 #if (DPAA_VERSION >= 11)
   74 #define FM_MM_SP                0x000dc000
   75 #endif /* (DPAA_VERSION >= 11) */
   76 
   77 
   78 /**************************************************************************//**
   79  @Description   Enum for inter-module interrupts registration
   80 *//***************************************************************************/
   81 typedef enum e_FmEventModules{
   82     e_FM_MOD_PRS,                   /**< Parser event */
   83     e_FM_MOD_KG,                    /**< Keygen event */
   84     e_FM_MOD_PLCR,                  /**< Policer event */
   85     e_FM_MOD_10G_MAC,               /**< 10G MAC event */
   86     e_FM_MOD_1G_MAC,                /**< 1G MAC event */
   87     e_FM_MOD_TMR,                   /**< Timer event */
   88     e_FM_MOD_FMAN_CTRL,             /**< FMAN Controller  Timer event */
   89     e_FM_MOD_MACSEC,
   90     e_FM_MOD_DUMMY_LAST
   91 } e_FmEventModules;
   92 
   93 /**************************************************************************//**
   94  @Description   Enum for interrupts types
   95 *//***************************************************************************/
   96 typedef enum e_FmIntrType {
   97     e_FM_INTR_TYPE_ERR,
   98     e_FM_INTR_TYPE_NORMAL
   99 } e_FmIntrType;
  100 
  101 /**************************************************************************//**
  102  @Description   Enum for inter-module interrupts registration
  103 *//***************************************************************************/
  104 typedef enum e_FmInterModuleEvent
  105 {
  106     e_FM_EV_PRS = 0,                /**< Parser event */
  107     e_FM_EV_ERR_PRS,                /**< Parser error event */
  108     e_FM_EV_KG,                     /**< Keygen event */
  109     e_FM_EV_ERR_KG,                 /**< Keygen error event */
  110     e_FM_EV_PLCR,                   /**< Policer event */
  111     e_FM_EV_ERR_PLCR,               /**< Policer error event */
  112     e_FM_EV_ERR_10G_MAC0,           /**< 10G MAC 0 error event */
  113     e_FM_EV_ERR_10G_MAC1,           /**< 10G MAC 1 error event */
  114     e_FM_EV_ERR_1G_MAC0,            /**< 1G MAC 0 error event */
  115     e_FM_EV_ERR_1G_MAC1,            /**< 1G MAC 1 error event */
  116     e_FM_EV_ERR_1G_MAC2,            /**< 1G MAC 2 error event */
  117     e_FM_EV_ERR_1G_MAC3,            /**< 1G MAC 3 error event */
  118     e_FM_EV_ERR_1G_MAC4,            /**< 1G MAC 4 error event */
  119     e_FM_EV_ERR_1G_MAC5,            /**< 1G MAC 5 error event */
  120     e_FM_EV_ERR_1G_MAC6,            /**< 1G MAC 6 error event */
  121     e_FM_EV_ERR_1G_MAC7,            /**< 1G MAC 7 error event */
  122     e_FM_EV_ERR_MACSEC_MAC0,
  123     e_FM_EV_TMR,                    /**< Timer event */
  124     e_FM_EV_10G_MAC0,               /**< 10G MAC 0 event (Magic packet detection)*/
  125     e_FM_EV_10G_MAC1,               /**< 10G MAC 1 event (Magic packet detection)*/
  126     e_FM_EV_1G_MAC0,                /**< 1G MAC 0 event (Magic packet detection)*/
  127     e_FM_EV_1G_MAC1,                /**< 1G MAC 1 event (Magic packet detection)*/
  128     e_FM_EV_1G_MAC2,                /**< 1G MAC 2 (Magic packet detection)*/
  129     e_FM_EV_1G_MAC3,                /**< 1G MAC 3 (Magic packet detection)*/
  130     e_FM_EV_1G_MAC4,                /**< 1G MAC 4 (Magic packet detection)*/
  131     e_FM_EV_1G_MAC5,                /**< 1G MAC 5 (Magic packet detection)*/
  132     e_FM_EV_1G_MAC6,                /**< 1G MAC 6 (Magic packet detection)*/
  133     e_FM_EV_1G_MAC7,                /**< 1G MAC 7 (Magic packet detection)*/
  134     e_FM_EV_MACSEC_MAC0,            /**< MACSEC MAC 0 event */
  135     e_FM_EV_FMAN_CTRL_0,            /**< Fman controller event 0 */
  136     e_FM_EV_FMAN_CTRL_1,            /**< Fman controller event 1 */
  137     e_FM_EV_FMAN_CTRL_2,            /**< Fman controller event 2 */
  138     e_FM_EV_FMAN_CTRL_3,            /**< Fman controller event 3 */
  139     e_FM_EV_DUMMY_LAST
  140 } e_FmInterModuleEvent;
  141 
  142 
  143 #if defined(__MWERKS__) && !defined(__GNUC__)
  144 #pragma pack(push,1)
  145 #endif /* defined(__MWERKS__) && ... */
  146 
  147 /**************************************************************************//**
  148  @Description   PCD KG scheme registers
  149 *//***************************************************************************/
  150 typedef _Packed struct t_FmPcdPlcrProfileRegs {
  151     volatile uint32_t fmpl_pemode;      /* 0x090 FMPL_PEMODE - FM Policer Profile Entry Mode*/
  152     volatile uint32_t fmpl_pegnia;      /* 0x094 FMPL_PEGNIA - FM Policer Profile Entry GREEN Next Invoked Action*/
  153     volatile uint32_t fmpl_peynia;      /* 0x098 FMPL_PEYNIA - FM Policer Profile Entry YELLOW Next Invoked Action*/
  154     volatile uint32_t fmpl_pernia;      /* 0x09C FMPL_PERNIA - FM Policer Profile Entry RED Next Invoked Action*/
  155     volatile uint32_t fmpl_pecir;       /* 0x0A0 FMPL_PECIR  - FM Policer Profile Entry Committed Information Rate*/
  156     volatile uint32_t fmpl_pecbs;       /* 0x0A4 FMPL_PECBS  - FM Policer Profile Entry Committed Burst Size*/
  157     volatile uint32_t fmpl_pepepir_eir; /* 0x0A8 FMPL_PEPIR_EIR - FM Policer Profile Entry Peak/Excess Information Rate*/
  158     volatile uint32_t fmpl_pepbs_ebs;   /* 0x0AC FMPL_PEPBS_EBS - FM Policer Profile Entry Peak/Excess Information Rate*/
  159     volatile uint32_t fmpl_pelts;       /* 0x0B0 FMPL_PELTS  - FM Policer Profile Entry Last TimeStamp*/
  160     volatile uint32_t fmpl_pects;       /* 0x0B4 FMPL_PECTS  - FM Policer Profile Entry Committed Token Status*/
  161     volatile uint32_t fmpl_pepts_ets;   /* 0x0B8 FMPL_PEPTS_ETS - FM Policer Profile Entry Peak/Excess Token Status*/
  162     volatile uint32_t fmpl_pegpc;       /* 0x0BC FMPL_PEGPC  - FM Policer Profile Entry GREEN Packet Counter*/
  163     volatile uint32_t fmpl_peypc;       /* 0x0C0 FMPL_PEYPC  - FM Policer Profile Entry YELLOW Packet Counter*/
  164     volatile uint32_t fmpl_perpc;       /* 0x0C4 FMPL_PERPC  - FM Policer Profile Entry RED Packet Counter */
  165     volatile uint32_t fmpl_perypc;      /* 0x0C8 FMPL_PERYPC - FM Policer Profile Entry Recolored YELLOW Packet Counter*/
  166     volatile uint32_t fmpl_perrpc;      /* 0x0CC FMPL_PERRPC - FM Policer Profile Entry Recolored RED Packet Counter*/
  167     volatile uint32_t fmpl_res1[12];    /* 0x0D0-0x0FF Reserved */
  168 } _PackedType t_FmPcdPlcrProfileRegs;
  169 
  170 
  171 typedef _Packed struct t_FmPcdCcCapwapReassmTimeoutParams {
  172     volatile uint32_t                       portIdAndCapwapReassmTbl;
  173     volatile uint32_t                       fqidForTimeOutFrames;
  174     volatile uint32_t                       timeoutRequestTime;
  175 }_PackedType t_FmPcdCcCapwapReassmTimeoutParams;
  176 
  177 /**************************************************************************//**
  178  @Description   PCD CTRL Parameters Page
  179 *//***************************************************************************/
  180 typedef _Packed struct t_FmPcdCtrlParamsPage {
  181     volatile uint8_t  reserved0[16];
  182     volatile uint32_t iprIpv4Nia;
  183     volatile uint32_t iprIpv6Nia;
  184     volatile uint8_t  reserved1[24];
  185     volatile uint32_t ipfOptionsCounter;
  186     volatile uint8_t  reserved2[12];
  187     volatile uint32_t misc;
  188     volatile uint32_t errorsDiscardMask;
  189     volatile uint32_t discardMask;
  190     volatile uint8_t  reserved3[4];
  191     volatile uint32_t postBmiFetchNia;
  192     volatile uint8_t  reserved4[172];
  193 } _PackedType t_FmPcdCtrlParamsPage;
  194 
  195 
  196 
  197 #if defined(__MWERKS__) && !defined(__GNUC__)
  198 #pragma pack(pop)
  199 #endif /* defined(__MWERKS__) && ... */
  200 
  201 
  202 /*for UNDER_CONSTRUCTION_FM_RMU_USE_SEC its defined in fm_ext.h*/
  203 typedef uint32_t t_FmFmanCtrl;
  204 
  205 #define FPM_PORT_FM_CTL1                0x00000001
  206 #define FPM_PORT_FM_CTL2                0x00000002
  207 
  208 
  209 
  210 typedef struct t_FmPcdCcFragScratchPoolCmdParams {
  211     uint32_t    numOfBuffers;
  212     uint8_t     bufferPoolId;
  213 } t_FmPcdCcFragScratchPoolCmdParams;
  214 
  215 typedef struct t_FmPcdCcReassmTimeoutParams {
  216     bool        activate;
  217     uint8_t     tsbs;
  218     uint32_t    iprcpt;
  219 } t_FmPcdCcReassmTimeoutParams;
  220 
  221 typedef struct {
  222     uint8_t             baseEntry;
  223     uint16_t            numOfClsPlanEntries;
  224     uint32_t            vectors[FM_PCD_MAX_NUM_OF_CLS_PLANS];
  225 } t_FmPcdKgInterModuleClsPlanSet;
  226 
  227 /**************************************************************************//**
  228  @Description   Structure for binding a port to keygen schemes.
  229 *//***************************************************************************/
  230 typedef struct t_FmPcdKgInterModuleBindPortToSchemes {
  231     uint8_t     hardwarePortId;
  232     uint8_t     netEnvId;
  233     bool        useClsPlan;                 /**< TRUE if this port uses the clsPlan mechanism */
  234     uint8_t     numOfSchemes;
  235     uint8_t     schemesIds[FM_PCD_KG_NUM_OF_SCHEMES];
  236 } t_FmPcdKgInterModuleBindPortToSchemes;
  237 
  238 typedef struct {
  239     uint32_t nextCcNodeInfo;
  240     t_List   node;
  241 } t_CcNodeInfo;
  242 
  243 typedef struct
  244 {
  245     t_Handle    h_CcNode;
  246     uint16_t    index;
  247     t_List      node;
  248 }t_CcNodeInformation;
  249 #define CC_NODE_F_OBJECT(ptr)  NCSW_LIST_OBJECT(ptr, t_CcNodeInformation, node)
  250 
  251 typedef enum e_ModifyState
  252 {
  253     e_MODIFY_STATE_ADD = 0,
  254     e_MODIFY_STATE_REMOVE,
  255     e_MODIFY_STATE_CHANGE
  256 } e_ModifyState;
  257 
  258 typedef struct
  259 {
  260     t_Handle h_Manip;
  261     t_List   node;
  262 }t_ManipInfo;
  263 #define CC_NEXT_NODE_F_OBJECT(ptr)  NCSW_LIST_OBJECT(ptr, t_CcNodeInfo, node)
  264 
  265 typedef struct {
  266     uint32_t            type;
  267     uint8_t             prOffset;
  268     uint16_t            dataOffset;
  269     uint8_t             internalBufferOffset;
  270     uint8_t             numOfTasks;
  271     uint8_t             numOfExtraTasks;
  272     uint8_t             hardwarePortId;
  273     t_FmRevisionInfo    revInfo;
  274     uint32_t            nia;
  275     uint32_t            discardMask;
  276 } t_GetCcParams;
  277 
  278 typedef struct {
  279     uint32_t        type;
  280     int             psoSize;
  281     uint32_t        nia;
  282     t_FmFmanCtrl    orFmanCtrl;
  283     bool            overwrite;
  284     uint8_t         ofpDpde;
  285 } t_SetCcParams;
  286 
  287 typedef struct {
  288     t_GetCcParams getCcParams;
  289     t_SetCcParams setCcParams;
  290 } t_FmPortGetSetCcParams;
  291 
  292 typedef struct {
  293     uint32_t    type;
  294     bool        sleep;
  295 } t_FmSetParams;
  296 
  297 typedef struct {
  298     uint32_t    type;
  299     uint32_t    fmqm_gs;
  300     uint32_t    fm_npi;
  301     uint32_t    fm_cld;
  302     uint32_t    fmfp_extc;
  303 } t_FmGetParams;
  304 
  305 typedef struct {
  306     t_FmSetParams setParams;
  307     t_FmGetParams getParams;
  308 } t_FmGetSetParams;
  309 
  310 t_Error FmGetSetParams(t_Handle h_Fm, t_FmGetSetParams *p_Params);
  311 
  312 static __inline__ bool TRY_LOCK(t_Handle h_Spinlock, volatile bool *p_Flag)
  313 {
  314     uint32_t intFlags;
  315     if (h_Spinlock)
  316         intFlags = XX_LockIntrSpinlock(h_Spinlock);
  317     else
  318         intFlags = XX_DisableAllIntr();
  319 
  320     if (*p_Flag)
  321     {
  322         if (h_Spinlock)
  323             XX_UnlockIntrSpinlock(h_Spinlock, intFlags);
  324         else
  325             XX_RestoreAllIntr(intFlags);
  326         return FALSE;
  327     }
  328     *p_Flag = TRUE;
  329 
  330     if (h_Spinlock)
  331         XX_UnlockIntrSpinlock(h_Spinlock, intFlags);
  332     else
  333         XX_RestoreAllIntr(intFlags);
  334 
  335     return TRUE;
  336 }
  337 
  338 #define RELEASE_LOCK(_flag) _flag = FALSE;
  339 
  340 /**************************************************************************//**
  341  @Collection   Defines used for manipulation CC and BMI
  342  @{
  343 *//***************************************************************************/
  344 #define INTERNAL_CONTEXT_OFFSET                 0x80000000
  345 #define OFFSET_OF_PR                            0x40000000
  346 #define MANIP_EXTRA_SPACE                       0x20000000
  347 #define NUM_OF_TASKS                            0x10000000
  348 #define OFFSET_OF_DATA                          0x08000000
  349 #define HW_PORT_ID                              0x04000000
  350 #define FM_REV                                  0x02000000
  351 #define GET_NIA_FPNE                            0x01000000
  352 #define GET_NIA_PNDN                            0x00800000
  353 #define NUM_OF_EXTRA_TASKS                      0x00400000
  354 #define DISCARD_MASK                            0x00200000
  355 
  356 #define UPDATE_NIA_PNEN                         0x80000000
  357 #define UPDATE_PSO                              0x40000000
  358 #define UPDATE_NIA_PNDN                         0x20000000
  359 #define UPDATE_FMFP_PRC_WITH_ONE_RISC_ONLY      0x10000000
  360 #define UPDATE_OFP_DPTE                         0x08000000
  361 #define UPDATE_NIA_FENE                         0x04000000
  362 #define UPDATE_NIA_CMNE                         0x02000000
  363 #define UPDATE_NIA_FPNE                         0x01000000
  364 /* @} */
  365 
  366 /**************************************************************************//**
  367  @Collection   Defines used for manipulation CC and CC
  368  @{
  369 *//***************************************************************************/
  370 #define UPDATE_NIA_ENQ_WITHOUT_DMA              0x80000000
  371 #define UPDATE_CC_WITH_TREE                     0x40000000
  372 #define UPDATE_CC_WITH_DELETE_TREE              0x20000000
  373 #define UPDATE_KG_NIA_CC_WA                     0x10000000
  374 #define UPDATE_KG_OPT_MODE                      0x08000000
  375 #define UPDATE_KG_NIA                           0x04000000
  376 #define UPDATE_CC_SHADOW_CLEAR                    0x02000000
  377 /* @} */
  378 
  379 #define UPDATE_FPM_BRKC_SLP                     0x80000000
  380 #define UPDATE_FPM_EXTC                         0x40000000
  381 #define UPDATE_FPM_EXTC_CLEAR                   0x20000000
  382 #define GET_FMQM_GS                             0x10000000
  383 #define GET_FM_NPI                              0x08000000
  384 #define GET_FMFP_EXTC                           0x04000000
  385 #define CLEAR_IRAM_READY                        0x02000000
  386 #define UPDATE_FM_CLD                           0x01000000
  387 #define GET_FM_CLD                              0x00800000
  388 #define FM_MAX_NUM_OF_PORTS     (FM_MAX_NUM_OF_OH_PORTS +     \
  389                                  FM_MAX_NUM_OF_1G_RX_PORTS +  \
  390                                  FM_MAX_NUM_OF_10G_RX_PORTS + \
  391                                  FM_MAX_NUM_OF_1G_TX_PORTS +  \
  392                                  FM_MAX_NUM_OF_10G_TX_PORTS)
  393 
  394 #define MODULE_NAME_SIZE        30
  395 #define DUMMY_PORT_ID           0
  396 
  397 #define FM_LIODN_OFFSET_MASK    0x3FF
  398 
  399 /**************************************************************************//**
  400   @Description       NIA Description
  401 *//***************************************************************************/
  402 #define NIA_ENG_MASK                0x007C0000
  403 #define NIA_AC_MASK                 0x0003ffff
  404 
  405 #define NIA_ORDER_RESTOR            0x00800000
  406 #define NIA_ENG_FM_CTL              0x00000000
  407 #define NIA_ENG_PRS                 0x00440000
  408 #define NIA_ENG_KG                  0x00480000
  409 #define NIA_ENG_PLCR                0x004C0000
  410 #define NIA_ENG_BMI                 0x00500000
  411 #define NIA_ENG_QMI_ENQ             0x00540000
  412 #define NIA_ENG_QMI_DEQ             0x00580000
  413 
  414 #define NIA_FM_CTL_AC_CC                        0x00000006
  415 #define NIA_FM_CTL_AC_HC                        0x0000000C
  416 #define NIA_FM_CTL_AC_IND_MODE_TX               0x00000008
  417 #define NIA_FM_CTL_AC_IND_MODE_RX               0x0000000A
  418 #define NIA_FM_CTL_AC_POP_TO_N_STEP             0x0000000e
  419 #define NIA_FM_CTL_AC_PRE_BMI_FETCH_HEADER      0x00000010
  420 #define NIA_FM_CTL_AC_PRE_BMI_FETCH_FULL_FRAME  0x00000018
  421 #define NIA_FM_CTL_AC_POST_BMI_FETCH            0x00000012
  422 #define NIA_FM_CTL_AC_PRE_BMI_ENQ_FRAME         0x0000001A
  423 #define NIA_FM_CTL_AC_PRE_BMI_DISCARD_FRAME     0x0000001E
  424 #define NIA_FM_CTL_AC_POST_BMI_ENQ_ORR          0x00000014
  425 #define NIA_FM_CTL_AC_POST_BMI_ENQ              0x00000022
  426 #define NIA_FM_CTL_AC_PRE_CC                    0x00000020
  427 #define NIA_FM_CTL_AC_POST_TX                   0x00000024
  428 /* V3 only */
  429 #define NIA_FM_CTL_AC_NO_IPACC_PRE_BMI_ENQ_FRAME        0x00000028
  430 #define NIA_FM_CTL_AC_NO_IPACC_PRE_BMI_DISCARD_FRAME    0x0000002A
  431 #define NIA_FM_CTL_AC_NO_IPACC_POP_TO_N_STEP            0x0000002C
  432 
  433 #define NIA_BMI_AC_ENQ_FRAME        0x00000002
  434 #define NIA_BMI_AC_TX_RELEASE       0x000002C0
  435 #define NIA_BMI_AC_RELEASE          0x000000C0
  436 #define NIA_BMI_AC_DISCARD          0x000000C1
  437 #define NIA_BMI_AC_TX               0x00000274
  438 #define NIA_BMI_AC_FETCH            0x00000208
  439 #define NIA_BMI_AC_MASK             0x000003FF
  440 
  441 #define NIA_KG_DIRECT               0x00000100
  442 #define NIA_KG_CC_EN                0x00000200
  443 #define NIA_PLCR_ABSOLUTE           0x00008000
  444 
  445 #define NIA_BMI_AC_ENQ_FRAME_WITHOUT_DMA    0x00000202
  446 
  447 #if defined(FM_OP_NO_VSP_NO_RELEASE_ERRATA_FMAN_A006675) || defined(FM_ERROR_VSP_NO_MATCH_SW006)
  448 #define GET_NIA_BMI_AC_ENQ_FRAME(h_FmPcd)   \
  449     (uint32_t)((FmPcdIsAdvancedOffloadSupported(h_FmPcd)) ? \
  450                 (NIA_ENG_FM_CTL | NIA_FM_CTL_AC_PRE_BMI_ENQ_FRAME) : \
  451                 (NIA_ENG_FM_CTL | NIA_FM_CTL_AC_NO_IPACC_PRE_BMI_ENQ_FRAME))
  452 #define GET_NIA_BMI_AC_DISCARD_FRAME(h_FmPcd)   \
  453     (uint32_t)((FmPcdIsAdvancedOffloadSupported(h_FmPcd)) ? \
  454                 (NIA_ENG_FM_CTL | NIA_FM_CTL_AC_PRE_BMI_DISCARD_FRAME) : \
  455                 (NIA_ENG_FM_CTL | NIA_FM_CTL_AC_NO_IPACC_PRE_BMI_DISCARD_FRAME))
  456 #define GET_NO_PCD_NIA_BMI_AC_ENQ_FRAME()   \
  457         (NIA_ENG_FM_CTL | NIA_FM_CTL_AC_NO_IPACC_PRE_BMI_ENQ_FRAME)
  458 #else
  459 #define GET_NIA_BMI_AC_ENQ_FRAME(h_FmPcd)   \
  460     (uint32_t)((FmPcdIsAdvancedOffloadSupported(h_FmPcd)) ? \
  461                 (NIA_ENG_FM_CTL | NIA_FM_CTL_AC_PRE_BMI_ENQ_FRAME) : \
  462                 (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME))
  463 #define GET_NIA_BMI_AC_DISCARD_FRAME(h_FmPcd)   \
  464     (uint32_t)((FmPcdIsAdvancedOffloadSupported(h_FmPcd)) ? \
  465                 (NIA_ENG_FM_CTL | NIA_FM_CTL_AC_PRE_BMI_DISCARD_FRAME) : \
  466                 (NIA_ENG_BMI | NIA_BMI_AC_DISCARD))
  467 #define GET_NO_PCD_NIA_BMI_AC_ENQ_FRAME()   \
  468             (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME)
  469 #endif /* defined(FM_OP_NO_VSP_NO_RELEASE_ERRATA_FMAN_A006675) || ... */
  470 
  471 /**************************************************************************//**
  472   @Description        CTRL Parameters Page defines
  473 *//***************************************************************************/
  474 #define FM_CTL_PARAMS_PAGE_OP_FIX_EN            0x80000000
  475 #define FM_CTL_PARAMS_PAGE_OFFLOAD_SUPPORT_EN   0x40000000
  476 #define FM_CTL_PARAMS_PAGE_ALWAYS_ON            0x00000100
  477 
  478 #define FM_CTL_PARAMS_PAGE_ERROR_VSP_MASK       0x0000003f
  479 
  480 /**************************************************************************//**
  481  @Description       Port Id defines
  482 *//***************************************************************************/
  483 #if (DPAA_VERSION == 10)
  484 #define BASE_OH_PORTID              1
  485 #else
  486 #define BASE_OH_PORTID              2
  487 #endif /* (DPAA_VERSION == 10) */
  488 #define BASE_1G_RX_PORTID           8
  489 #define BASE_10G_RX_PORTID          0x10
  490 #define BASE_1G_TX_PORTID           0x28
  491 #define BASE_10G_TX_PORTID          0x30
  492 
  493 #define FM_PCD_PORT_OH_BASE_INDX        0
  494 #define FM_PCD_PORT_1G_RX_BASE_INDX     (FM_PCD_PORT_OH_BASE_INDX+FM_MAX_NUM_OF_OH_PORTS)
  495 #define FM_PCD_PORT_10G_RX_BASE_INDX    (FM_PCD_PORT_1G_RX_BASE_INDX+FM_MAX_NUM_OF_1G_RX_PORTS)
  496 #define FM_PCD_PORT_1G_TX_BASE_INDX     (FM_PCD_PORT_10G_RX_BASE_INDX+FM_MAX_NUM_OF_10G_RX_PORTS)
  497 #define FM_PCD_PORT_10G_TX_BASE_INDX    (FM_PCD_PORT_1G_TX_BASE_INDX+FM_MAX_NUM_OF_1G_TX_PORTS)
  498 
  499 #if (FM_MAX_NUM_OF_OH_PORTS > 0)
  500 #define CHECK_PORT_ID_OH_PORTS(_relativePortId)                     \
  501     if ((_relativePortId) >= FM_MAX_NUM_OF_OH_PORTS)                \
  502         REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal OH_PORT port id"))
  503 #else
  504 #define CHECK_PORT_ID_OH_PORTS(_relativePortId)                     \
  505         REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal OH_PORT port id"))
  506 #endif
  507 #if (FM_MAX_NUM_OF_1G_RX_PORTS > 0)
  508 #define CHECK_PORT_ID_1G_RX_PORTS(_relativePortId)                  \
  509     if ((_relativePortId) >= FM_MAX_NUM_OF_1G_RX_PORTS)             \
  510         REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal 1G_RX_PORT port id"))
  511 #else
  512 #define CHECK_PORT_ID_1G_RX_PORTS(_relativePortId)                  \
  513         REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal 1G_RX_PORT port id"))
  514 #endif
  515 #if (FM_MAX_NUM_OF_10G_RX_PORTS > 0)
  516 #define CHECK_PORT_ID_10G_RX_PORTS(_relativePortId)                 \
  517     if ((_relativePortId) >= FM_MAX_NUM_OF_10G_RX_PORTS)            \
  518         REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal 10G_RX_PORT port id"))
  519 #else
  520 #define CHECK_PORT_ID_10G_RX_PORTS(_relativePortId)                 \
  521         REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal 10G_RX_PORT port id"))
  522 #endif
  523 #if (FM_MAX_NUM_OF_1G_TX_PORTS > 0)
  524 #define CHECK_PORT_ID_1G_TX_PORTS(_relativePortId)                  \
  525     if ((_relativePortId) >= FM_MAX_NUM_OF_1G_TX_PORTS)             \
  526         REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal 1G_TX_PORT port id"))
  527 #else
  528 #define CHECK_PORT_ID_1G_TX_PORTS(_relativePortId)                  \
  529         REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal 1G_TX_PORT port id"))
  530 #endif
  531 #if (FM_MAX_NUM_OF_10G_TX_PORTS > 0)
  532 #define CHECK_PORT_ID_10G_TX_PORTS(_relativePortId)                 \
  533     if ((_relativePortId) >= FM_MAX_NUM_OF_10G_TX_PORTS)            \
  534         REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal 10G_TX_PORT port id"))
  535 #else
  536 #define CHECK_PORT_ID_10G_TX_PORTS(_relativePortId)                 \
  537         REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal 10G_TX_PORT port id"))
  538 #endif
  539 
  540 uint8_t SwPortIdToHwPortId(e_FmPortType type, uint8_t relativePortId, uint8_t majorRev, uint8_t minorRev);
  541 
  542 #define HW_PORT_ID_TO_SW_PORT_ID(_relativePortId, hardwarePortId)                   \
  543 {   if (((hardwarePortId) >= BASE_OH_PORTID) &&                                     \
  544         ((hardwarePortId) < BASE_OH_PORTID+FM_MAX_NUM_OF_OH_PORTS))                 \
  545         _relativePortId = (uint8_t)((hardwarePortId)-BASE_OH_PORTID);               \
  546     else if (((hardwarePortId) >= BASE_10G_TX_PORTID) &&                            \
  547              ((hardwarePortId) < BASE_10G_TX_PORTID+FM_MAX_NUM_OF_10G_TX_PORTS))    \
  548         _relativePortId = (uint8_t)((hardwarePortId)-BASE_10G_TX_PORTID);           \
  549     else if (((hardwarePortId) >= BASE_1G_TX_PORTID) &&                             \
  550              ((hardwarePortId) < BASE_1G_TX_PORTID+FM_MAX_NUM_OF_1G_TX_PORTS))      \
  551         _relativePortId = (uint8_t)((hardwarePortId)-BASE_1G_TX_PORTID);            \
  552     else if (((hardwarePortId) >= BASE_10G_RX_PORTID) &&                            \
  553              ((hardwarePortId) < BASE_10G_RX_PORTID+FM_MAX_NUM_OF_10G_RX_PORTS))    \
  554         _relativePortId = (uint8_t)((hardwarePortId)-BASE_10G_RX_PORTID);           \
  555     else if (((hardwarePortId) >= BASE_1G_RX_PORTID) &&                             \
  556              ((hardwarePortId) < BASE_1G_RX_PORTID+FM_MAX_NUM_OF_1G_RX_PORTS))      \
  557         _relativePortId = (uint8_t)((hardwarePortId)-BASE_1G_RX_PORTID);            \
  558     else {                                                                          \
  559         _relativePortId = (uint8_t)DUMMY_PORT_ID;                                   \
  560         ASSERT_COND(TRUE);                                                          \
  561     }                                                                               \
  562 }
  563 
  564 #define HW_PORT_ID_TO_SW_PORT_INDX(swPortIndex, hardwarePortId)                                             \
  565 do {                                                                                                        \
  566     if (((hardwarePortId) >= BASE_OH_PORTID) && ((hardwarePortId) < BASE_OH_PORTID+FM_MAX_NUM_OF_OH_PORTS)) \
  567         swPortIndex = (uint8_t)((hardwarePortId)-BASE_OH_PORTID+FM_PCD_PORT_OH_BASE_INDX);                  \
  568     else if (((hardwarePortId) >= BASE_1G_RX_PORTID) &&                                                     \
  569              ((hardwarePortId) < BASE_1G_RX_PORTID+FM_MAX_NUM_OF_1G_RX_PORTS))                              \
  570         swPortIndex = (uint8_t)((hardwarePortId)-BASE_1G_RX_PORTID+FM_PCD_PORT_1G_RX_BASE_INDX);            \
  571     else if (((hardwarePortId) >= BASE_10G_RX_PORTID) &&                                                    \
  572              ((hardwarePortId) < BASE_10G_RX_PORTID+FM_MAX_NUM_OF_10G_RX_PORTS))                            \
  573         swPortIndex = (uint8_t)((hardwarePortId)-BASE_10G_RX_PORTID+FM_PCD_PORT_10G_RX_BASE_INDX);          \
  574     else if (((hardwarePortId) >= BASE_1G_TX_PORTID) &&                                                     \
  575              ((hardwarePortId) < BASE_1G_TX_PORTID+FM_MAX_NUM_OF_1G_TX_PORTS))                              \
  576         swPortIndex = (uint8_t)((hardwarePortId)-BASE_1G_TX_PORTID+FM_PCD_PORT_1G_TX_BASE_INDX);            \
  577     else if (((hardwarePortId) >= BASE_10G_TX_PORTID) &&                                                    \
  578              ((hardwarePortId) < BASE_10G_TX_PORTID+FM_MAX_NUM_OF_10G_TX_PORTS))                            \
  579         swPortIndex = (uint8_t)((hardwarePortId)-BASE_10G_TX_PORTID+FM_PCD_PORT_10G_TX_BASE_INDX);          \
  580     else ASSERT_COND(FALSE);                                                                                \
  581 } while (0)
  582 
  583 #define SW_PORT_INDX_TO_HW_PORT_ID(hardwarePortId, swPortIndex)                                                 \
  584 do {                                                                                                            \
  585     if (((swPortIndex) >= FM_PCD_PORT_OH_BASE_INDX) && ((swPortIndex) < FM_PCD_PORT_1G_RX_BASE_INDX))           \
  586         hardwarePortId = (uint8_t)((swPortIndex)-FM_PCD_PORT_OH_BASE_INDX+BASE_OH_PORTID);                      \
  587     else if (((swPortIndex) >= FM_PCD_PORT_1G_RX_BASE_INDX) && ((swPortIndex) < FM_PCD_PORT_10G_RX_BASE_INDX))  \
  588         hardwarePortId = (uint8_t)((swPortIndex)-FM_PCD_PORT_1G_RX_BASE_INDX+BASE_1G_RX_PORTID);                \
  589     else if (((swPortIndex) >= FM_PCD_PORT_10G_RX_BASE_INDX) && ((swPortIndex) < FM_MAX_NUM_OF_PORTS))          \
  590         hardwarePortId = (uint8_t)((swPortIndex)-FM_PCD_PORT_10G_RX_BASE_INDX+BASE_10G_RX_PORTID);              \
  591     else if (((swPortIndex) >= FM_PCD_PORT_1G_TX_BASE_INDX) && ((swPortIndex) < FM_PCD_PORT_10G_TX_BASE_INDX))  \
  592         hardwarePortId = (uint8_t)((swPortIndex)-FM_PCD_PORT_1G_TX_BASE_INDX+BASE_1G_TX_PORTID);                \
  593     else if (((swPortIndex) >= FM_PCD_PORT_10G_TX_BASE_INDX) && ((swPortIndex) < FM_MAX_NUM_OF_PORTS))          \
  594         hardwarePortId = (uint8_t)((swPortIndex)-FM_PCD_PORT_10G_TX_BASE_INDX+BASE_10G_TX_PORTID);              \
  595     else ASSERT_COND(FALSE);                                                                                    \
  596 } while (0)
  597 
  598 #define BMI_MAX_FIFO_SIZE                   (FM_MURAM_SIZE)
  599 #define BMI_FIFO_UNITS                      0x100
  600 
  601 typedef struct {
  602     void        (*f_Isr) (t_Handle h_Arg);
  603     t_Handle    h_SrcHandle;
  604     uint8_t     guestId;
  605 } t_FmIntrSrc;
  606 
  607 #define ILLEGAL_HDR_NUM                     0xFF
  608 #define NO_HDR_NUM                          FM_PCD_PRS_NUM_OF_HDRS
  609 
  610 #define IS_PRIVATE_HEADER(hdr)              (((hdr) == HEADER_TYPE_USER_DEFINED_SHIM1) ||   \
  611                                              ((hdr) == HEADER_TYPE_USER_DEFINED_SHIM2))
  612 #define IS_SPECIAL_HEADER(hdr)              ((hdr) == HEADER_TYPE_MACSEC)
  613 
  614 static __inline__ uint8_t GetPrsHdrNum(e_NetHeaderType hdr)
  615 {
  616          switch (hdr)
  617          {   case (HEADER_TYPE_ETH):              return 0;
  618              case (HEADER_TYPE_LLC_SNAP):         return 1;
  619              case (HEADER_TYPE_VLAN):             return 2;
  620              case (HEADER_TYPE_PPPoE):            return 3;
  621              case (HEADER_TYPE_PPP):              return 3;
  622              case (HEADER_TYPE_MPLS):             return 4;
  623              case (HEADER_TYPE_IPv4):             return 5;
  624              case (HEADER_TYPE_IPv6):             return 6;
  625              case (HEADER_TYPE_GRE):              return 7;
  626              case (HEADER_TYPE_MINENCAP):         return 8;
  627              case (HEADER_TYPE_USER_DEFINED_L3):  return 9;
  628              case (HEADER_TYPE_TCP):              return 10;
  629              case (HEADER_TYPE_UDP):              return 11;
  630              case (HEADER_TYPE_IPSEC_AH):
  631              case (HEADER_TYPE_IPSEC_ESP):        return 12;
  632              case (HEADER_TYPE_SCTP):             return 13;
  633              case (HEADER_TYPE_DCCP):             return 14;
  634              case (HEADER_TYPE_USER_DEFINED_L4):  return 15;
  635              case (HEADER_TYPE_USER_DEFINED_SHIM1):
  636              case (HEADER_TYPE_USER_DEFINED_SHIM2):
  637              case (HEADER_TYPE_MACSEC):           return NO_HDR_NUM;
  638              default:
  639                  return ILLEGAL_HDR_NUM;
  640          }
  641 }
  642 
  643 #define FM_PCD_MAX_NUM_OF_OPTIONS(clsPlanEntries)   ((clsPlanEntries==256)? 8:((clsPlanEntries==128)? 7: ((clsPlanEntries==64)? 6: ((clsPlanEntries==32)? 5:0))))
  644 
  645 
  646 /**************************************************************************//**
  647  @Description   A structure for initializing a keygen classification plan group
  648 *//***************************************************************************/
  649 typedef struct t_FmPcdKgInterModuleClsPlanGrpParams {
  650     uint8_t         netEnvId;   /* IN */
  651     bool            grpExists;  /* OUT (unused in FmPcdKgBuildClsPlanGrp)*/
  652     uint8_t         clsPlanGrpId;  /* OUT */
  653     bool            emptyClsPlanGrp; /* OUT */
  654     uint8_t         numOfOptions;   /* OUT in FmPcdGetSetClsPlanGrpParams IN in FmPcdKgBuildClsPlanGrp*/
  655     protocolOpt_t   options[FM_PCD_MAX_NUM_OF_OPTIONS(FM_PCD_MAX_NUM_OF_CLS_PLANS)];
  656                                     /* OUT in FmPcdGetSetClsPlanGrpParams IN in FmPcdKgBuildClsPlanGrp*/
  657     uint32_t        optVectors[FM_PCD_MAX_NUM_OF_OPTIONS(FM_PCD_MAX_NUM_OF_CLS_PLANS)];
  658                                /* OUT in FmPcdGetSetClsPlanGrpParams IN in FmPcdKgBuildClsPlanGrp*/
  659 } t_FmPcdKgInterModuleClsPlanGrpParams;
  660 
  661 typedef struct t_FmPcdLock {
  662     t_Handle        h_Spinlock;
  663     volatile bool   flag;
  664     t_List          node;
  665 } t_FmPcdLock;
  666 #define FM_PCD_LOCK_OBJ(ptr)  NCSW_LIST_OBJECT(ptr, t_FmPcdLock, node)
  667 
  668 
  669 typedef t_Error (t_FmPortGetSetCcParamsCallback) (t_Handle                  h_FmPort,
  670                                                   t_FmPortGetSetCcParams    *p_FmPortGetSetCcParams);
  671 
  672 
  673 /***********************************************************************/
  674 /*          Common API for FM-PCD module                               */
  675 /***********************************************************************/
  676 t_Handle    FmPcdGetHcHandle(t_Handle h_FmPcd);
  677 uint32_t    FmPcdGetSwPrsOffset(t_Handle h_FmPcd, e_NetHeaderType hdr, uint8_t  indexPerHdr);
  678 uint32_t    FmPcdGetLcv(t_Handle h_FmPcd, uint32_t netEnvId, uint8_t hdrNum);
  679 uint32_t    FmPcdGetMacsecLcv(t_Handle h_FmPcd, uint32_t netEnvId);
  680 void        FmPcdIncNetEnvOwners(t_Handle h_FmPcd, uint8_t netEnvId);
  681 void        FmPcdDecNetEnvOwners(t_Handle h_FmPcd, uint8_t netEnvId);
  682 uint8_t     FmPcdGetNetEnvId(t_Handle h_NetEnv);
  683 void        FmPcdPortRegister(t_Handle h_FmPcd, t_Handle h_FmPort, uint8_t hardwarePortId);
  684 uint32_t    FmPcdLock(t_Handle h_FmPcd);
  685 void        FmPcdUnlock(t_Handle h_FmPcd, uint32_t  intFlags);
  686 bool        FmPcdNetEnvIsHdrExist(t_Handle h_FmPcd, uint8_t netEnvId, e_NetHeaderType hdr);
  687 t_Error     FmPcdFragHcScratchPoolInit(t_Handle h_FmPcd, uint8_t scratchBpid);
  688 t_Error     FmPcdRegisterReassmPort(t_Handle h_FmPcd, t_Handle h_IpReasmCommonPramTbl);
  689 t_Error     FmPcdUnregisterReassmPort(t_Handle h_FmPcd, t_Handle h_IpReasmCommonPramTbl);
  690 bool        FmPcdIsAdvancedOffloadSupported(t_Handle h_FmPcd);
  691 bool        FmPcdLockTryLockAll(t_Handle h_FmPcd);
  692 void        FmPcdLockUnlockAll(t_Handle h_FmPcd);
  693 t_Error     FmPcdHcSync(t_Handle h_FmPcd);
  694 t_Handle    FmGetPcd(t_Handle h_Fm);
  695 /***********************************************************************/
  696 /*          Common API for FM-PCD KG module                            */
  697 /***********************************************************************/
  698 uint8_t     FmPcdKgGetClsPlanGrpBase(t_Handle h_FmPcd, uint8_t clsPlanGrp);
  699 uint16_t    FmPcdKgGetClsPlanGrpSize(t_Handle h_FmPcd, uint8_t clsPlanGrp);
  700 t_Error     FmPcdKgBuildClsPlanGrp(t_Handle h_FmPcd, t_FmPcdKgInterModuleClsPlanGrpParams *p_Grp, t_FmPcdKgInterModuleClsPlanSet *p_ClsPlanSet);
  701 
  702 uint8_t     FmPcdKgGetSchemeId(t_Handle h_Scheme);
  703 #if (DPAA_VERSION >= 11)
  704 bool        FmPcdKgGetVspe(t_Handle h_Scheme);
  705 #endif /* (DPAA_VERSION >= 11) */
  706 uint8_t     FmPcdKgGetRelativeSchemeId(t_Handle h_FmPcd, uint8_t schemeId);
  707 void        FmPcdKgDestroyClsPlanGrp(t_Handle h_FmPcd, uint8_t grpId);
  708 t_Error     FmPcdKgCheckInvalidateSchemeSw(t_Handle h_Scheme);
  709 t_Error     FmPcdKgBuildBindPortToSchemes(t_Handle h_FmPcd , t_FmPcdKgInterModuleBindPortToSchemes *p_BindPortToSchemes, uint32_t *p_SpReg, bool add);
  710 bool        FmPcdKgHwSchemeIsValid(uint32_t schemeModeReg);
  711 uint32_t    FmPcdKgBuildWriteSchemeActionReg(uint8_t schemeId, bool updateCounter);
  712 uint32_t    FmPcdKgBuildReadSchemeActionReg(uint8_t schemeId);
  713 uint32_t    FmPcdKgBuildWriteClsPlanBlockActionReg(uint8_t grpId);
  714 uint32_t    FmPcdKgBuildWritePortSchemeBindActionReg(uint8_t hardwarePortId);
  715 uint32_t    FmPcdKgBuildReadPortSchemeBindActionReg(uint8_t hardwarePortId);
  716 uint32_t    FmPcdKgBuildWritePortClsPlanBindActionReg(uint8_t hardwarePortId);
  717 bool        FmPcdKgIsSchemeValidSw(t_Handle h_Scheme);
  718 
  719 t_Error     FmPcdKgBindPortToSchemes(t_Handle h_FmPcd , t_FmPcdKgInterModuleBindPortToSchemes  *p_SchemeBind);
  720 t_Error     FmPcdKgUnbindPortToSchemes(t_Handle h_FmPcd , t_FmPcdKgInterModuleBindPortToSchemes *p_SchemeBind);
  721 uint32_t    FmPcdKgGetRequiredAction(t_Handle h_FmPcd, uint8_t schemeId);
  722 uint32_t    FmPcdKgGetRequiredActionFlag(t_Handle h_FmPcd, uint8_t schemeId);
  723 e_FmPcdDoneAction FmPcdKgGetDoneAction(t_Handle h_FmPcd, uint8_t schemeId);
  724 e_FmPcdEngine FmPcdKgGetNextEngine(t_Handle h_FmPcd, uint8_t schemeId);
  725 void        FmPcdKgUpdateRequiredAction(t_Handle h_Scheme, uint32_t requiredAction);
  726 bool        FmPcdKgIsDirectPlcr(t_Handle h_FmPcd, uint8_t schemeId);
  727 bool        FmPcdKgIsDistrOnPlcrProfile(t_Handle h_FmPcd, uint8_t schemeId);
  728 uint16_t    FmPcdKgGetRelativeProfileId(t_Handle h_FmPcd, uint8_t schemeId);
  729 t_Handle    FmPcdKgGetSchemeHandle(t_Handle h_FmPcd, uint8_t relativeSchemeId);
  730 bool        FmPcdKgIsSchemeHasOwners(t_Handle h_Scheme);
  731 t_Error     FmPcdKgCcGetSetParams(t_Handle h_FmPcd, t_Handle  h_Scheme, uint32_t requiredAction, uint32_t value);
  732 t_Error     FmPcdKgSetOrBindToClsPlanGrp(t_Handle h_FmPcd, uint8_t hardwarePortId, uint8_t netEnvId, protocolOpt_t *p_OptArray, uint8_t *p_ClsPlanGrpId, bool *p_IsEmptyClsPlanGrp);
  733 t_Error     FmPcdKgDeleteOrUnbindPortToClsPlanGrp(t_Handle h_FmPcd, uint8_t hardwarePortId, uint8_t clsPlanGrpId);
  734 
  735 /***********************************************************************/
  736 /*          Common API for FM-PCD parser module                        */
  737 /***********************************************************************/
  738 t_Error     FmPcdPrsIncludePortInStatistics(t_Handle p_FmPcd, uint8_t hardwarePortId,  bool include);
  739 
  740 /***********************************************************************/
  741 /*          Common API for FM-PCD policer module                       */
  742 /***********************************************************************/
  743 t_Error     FmPcdPlcrAllocProfiles(t_Handle h_FmPcd, uint8_t hardwarePortId, uint16_t numOfProfiles);
  744 t_Error     FmPcdPlcrFreeProfiles(t_Handle h_FmPcd, uint8_t hardwarePortId);
  745 bool        FmPcdPlcrIsProfileValid(t_Handle h_FmPcd, uint16_t absoluteProfileId);
  746 uint16_t    FmPcdPlcrGetPortProfilesBase(t_Handle h_FmPcd, uint8_t hardwarePortId);
  747 uint16_t    FmPcdPlcrGetPortNumOfProfiles(t_Handle h_FmPcd, uint8_t hardwarePortId);
  748 uint32_t    FmPcdPlcrBuildWritePlcrActionRegs(uint16_t absoluteProfileId);
  749 uint32_t    FmPcdPlcrBuildCounterProfileReg(e_FmPcdPlcrProfileCounters counter);
  750 uint32_t    FmPcdPlcrBuildWritePlcrActionReg(uint16_t absoluteProfileId);
  751 uint32_t    FmPcdPlcrBuildReadPlcrActionReg(uint16_t absoluteProfileId);
  752 uint16_t    FmPcdPlcrProfileGetAbsoluteId(t_Handle h_Profile);
  753 t_Error     FmPcdPlcrGetAbsoluteIdByProfileParams(t_Handle                      h_FmPcd,
  754                                           e_FmPcdProfileTypeSelection   profileType,
  755                                           t_Handle                      h_FmPort,
  756                                           uint16_t                      relativeProfile,
  757                                           uint16_t                      *p_AbsoluteId);
  758 void        FmPcdPlcrInvalidateProfileSw(t_Handle h_FmPcd, uint16_t absoluteProfileId);
  759 void        FmPcdPlcrValidateProfileSw(t_Handle h_FmPcd, uint16_t absoluteProfileId);
  760 bool        FmPcdPlcrHwProfileIsValid(uint32_t profileModeReg);
  761 uint32_t    FmPcdPlcrGetRequiredAction(t_Handle h_FmPcd, uint16_t absoluteProfileId);
  762 uint32_t    FmPcdPlcrGetRequiredActionFlag(t_Handle h_FmPcd, uint16_t absoluteProfileId);
  763 uint32_t    FmPcdPlcrBuildNiaProfileReg(bool green, bool yellow, bool red);
  764 void        FmPcdPlcrUpdateRequiredAction(t_Handle h_FmPcd, uint16_t absoluteProfileId, uint32_t requiredAction);
  765 t_Error     FmPcdPlcrCcGetSetParams(t_Handle h_FmPcd, uint16_t profileIndx,uint32_t requiredAction);
  766 
  767 /***********************************************************************/
  768 /*          Common API for FM-PCD CC module                            */
  769 /***********************************************************************/
  770 uint8_t     FmPcdCcGetParseCode(t_Handle h_CcNode);
  771 uint8_t     FmPcdCcGetOffset(t_Handle h_CcNode);
  772 t_Error     FmPcdCcRemoveKey(t_Handle h_FmPcd, t_Handle h_FmPcdCcNode, uint16_t keyIndex);
  773 t_Error     FmPcdCcAddKey(t_Handle h_FmPcd, t_Handle h_CcNode, uint16_t keyIndex, uint8_t keySize, t_FmPcdCcKeyParams *p_FmPCdCcKeyParams);
  774 t_Error     FmPcdCcModifyKey(t_Handle h_FmPcd, t_Handle h_CcNode, uint16_t keyIndex, uint8_t keySize, uint8_t *p_Key, uint8_t *p_Mask);
  775 t_Error     FmPcdCcModifyKeyAndNextEngine(t_Handle h_FmPcd, t_Handle h_FmPcdCcNode, uint16_t keyIndex, uint8_t keySize, t_FmPcdCcKeyParams *p_FmPcdCcKeyParams);
  776 t_Error     FmPcdCcModifyMissNextEngineParamNode(t_Handle h_FmPcd,t_Handle h_FmPcdCcNode, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams);
  777 t_Error     FmPcdCcModifyNextEngineParamTree(t_Handle h_FmPcd, t_Handle h_FmPcdCcTree, uint8_t grpId, uint8_t index, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams);
  778 uint32_t    FmPcdCcGetNodeAddrOffsetFromNodeInfo(t_Handle h_FmPcd, t_Handle h_Pointer);
  779 t_Handle    FmPcdCcTreeGetSavedManipParams(t_Handle h_FmTree);
  780 void        FmPcdCcTreeSetSavedManipParams(t_Handle h_FmTree, t_Handle h_SavedManipParams);
  781 t_Error     FmPcdCcTreeAddIPR(t_Handle h_FmPcd, t_Handle h_FmTree, t_Handle h_NetEnv, t_Handle h_ReassemblyManip, bool schemes);
  782 t_Error     FmPcdCcTreeAddCPR(t_Handle h_FmPcd, t_Handle h_FmTree, t_Handle h_NetEnv, t_Handle h_ReassemblyManip, bool schemes);
  783 t_Error     FmPcdCcBindTree(t_Handle h_FmPcd, t_Handle h_PcdParams, t_Handle h_CcTree,  uint32_t  *p_Offset,t_Handle h_FmPort);
  784 t_Error     FmPcdCcUnbindTree(t_Handle h_FmPcd, t_Handle h_CcTree);
  785 
  786 /***********************************************************************/
  787 /*          Common API for FM-PCD Manip module                            */
  788 /***********************************************************************/
  789 t_Error     FmPcdManipUpdate(t_Handle h_FmPcd, t_Handle h_PcdParams, t_Handle h_FmPort, t_Handle h_Manip, t_Handle h_Ad, bool validate, int level, t_Handle h_FmTree, bool modify);
  790 
  791 /***********************************************************************/
  792 /*          Common API for FM-Port module                            */
  793 /***********************************************************************/
  794 #if (DPAA_VERSION >= 11)
  795 typedef enum e_FmPortGprFuncType
  796 {
  797     e_FM_PORT_GPR_EMPTY = 0,
  798     e_FM_PORT_GPR_MURAM_PAGE
  799 } e_FmPortGprFuncType;
  800 
  801 t_Error     FmPortSetGprFunc(t_Handle h_FmPort, e_FmPortGprFuncType gprFunc, void **p_Value);
  802 #endif /* DPAA_VERSION >= 11) */
  803 t_Error     FmGetSetParams(t_Handle h_Fm, t_FmGetSetParams *p_FmGetSetParams);
  804 t_Error     FmPortGetSetCcParams(t_Handle h_FmPort, t_FmPortGetSetCcParams *p_FmPortGetSetCcParams);
  805 uint8_t     FmPortGetNetEnvId(t_Handle h_FmPort);
  806 uint8_t     FmPortGetHardwarePortId(t_Handle h_FmPort);
  807 uint32_t    FmPortGetPcdEngines(t_Handle h_FmPort);
  808 void        FmPortPcdKgSwUnbindClsPlanGrp (t_Handle h_FmPort);
  809 
  810 
  811 #if (DPAA_VERSION >= 11)
  812 t_Error     FmPcdFrmReplicUpdate(t_Handle h_FmPcd, t_Handle h_FmPort, t_Handle h_FrmReplic);
  813 #endif /* (DPAA_VERSION >= 11) */
  814 
  815 /**************************************************************************//**
  816  @Function      FmRegisterIntr
  817 
  818  @Description   Used to register an inter-module event handler to be processed by FM
  819 
  820  @Param[in]     h_Fm            A handle to an FM Module.
  821  @Param[in]     mod             The module that causes the event
  822  @Param[in]     modId           Module id - if more than 1 instansiation of this
  823                                 mode exists,0 otherwise.
  824  @Param[in]     intrType        Interrupt type (error/normal) selection.
  825  @Param[in]     f_Isr           The interrupt service routine.
  826  @Param[in]     h_Arg           Argument to be passed to f_Isr.
  827 
  828  @Return        None.
  829 *//***************************************************************************/
  830 void FmRegisterIntr(t_Handle               h_Fm,
  831                     e_FmEventModules       mod,
  832                     uint8_t                modId,
  833                     e_FmIntrType           intrType,
  834                     void                   (*f_Isr) (t_Handle h_Arg),
  835                     t_Handle               h_Arg);
  836 
  837 /**************************************************************************//**
  838  @Function      FmUnregisterIntr
  839 
  840  @Description   Used to un-register an inter-module event handler that was processed by FM
  841 
  842  @Param[in]     h_Fm            A handle to an FM Module.
  843  @Param[in]     mod             The module that causes the event
  844  @Param[in]     modId           Module id - if more than 1 instansiation of this
  845                                 mode exists,0 otherwise.
  846  @Param[in]     intrType        Interrupt type (error/normal) selection.
  847 
  848  @Return        None.
  849 *//***************************************************************************/
  850 void FmUnregisterIntr(t_Handle          h_Fm,
  851                       e_FmEventModules  mod,
  852                       uint8_t           modId,
  853                       e_FmIntrType      intrType);
  854 
  855 /**************************************************************************//**
  856  @Function      FmRegisterFmCtlIntr
  857 
  858  @Description   Used to register to one of the fmCtl events in the FM module
  859 
  860  @Param[in]     h_Fm            A handle to an FM Module.
  861  @Param[in]     eventRegId      FmCtl event id (0-7).
  862  @Param[in]     f_Isr           The interrupt service routine.
  863 
  864  @Return        E_OK on success; Error code otherwise.
  865 
  866  @Cautions      Allowed only following FM_Init().
  867 *//***************************************************************************/
  868 void  FmRegisterFmCtlIntr(t_Handle h_Fm, uint8_t eventRegId, void (*f_Isr) (t_Handle h_Fm, uint32_t event));
  869 
  870 
  871 /**************************************************************************//**
  872  @Description   enum for defining MAC types
  873 *//***************************************************************************/
  874 typedef enum e_FmMacType {
  875     e_FM_MAC_10G = 0,               /**< 10G MAC */
  876     e_FM_MAC_1G                     /**< 1G MAC */
  877 } e_FmMacType;
  878 
  879 /**************************************************************************//**
  880  @Description   Structure for port-FM communication during FM_PORT_Init.
  881                 Fields commented 'IN' are passed by the port module to be used
  882                 by the FM module.
  883                 Fields commented 'OUT' will be filled by FM before returning to port.
  884                 Some fields are optional (depending on configuration) and
  885                 will be analized by the port and FM modules accordingly.
  886 *//***************************************************************************/
  887 typedef struct t_FmInterModulePortInitParams {
  888     uint8_t             hardwarePortId;     /**< IN. port Id */
  889     e_FmPortType        portType;           /**< IN. Port type */
  890     bool                independentMode;    /**< IN. TRUE if FM Port operates in independent mode */
  891     uint16_t            liodnOffset;        /**< IN. Port's requested resource */
  892     uint8_t             numOfTasks;         /**< IN. Port's requested resource */
  893     uint8_t             numOfExtraTasks;    /**< IN. Port's requested resource */
  894     uint8_t             numOfOpenDmas;      /**< IN. Port's requested resource */
  895     uint8_t             numOfExtraOpenDmas; /**< IN. Port's requested resource */
  896     uint32_t            sizeOfFifo;         /**< IN. Port's requested resource */
  897     uint32_t            extraSizeOfFifo;    /**< IN. Port's requested resource */
  898     uint8_t             deqPipelineDepth;   /**< IN. Port's requested resource */
  899     uint16_t            maxFrameLength;     /**< IN. Port's max frame length. */
  900     uint16_t            liodnBase;          /**< IN. Irrelevant for P4080 rev 1.
  901                                                  LIODN base for this port, to be
  902                                                  used together with LIODN offset. */
  903     t_FmPhysAddr        fmMuramPhysBaseAddr;/**< OUT. FM-MURAM physical address*/
  904 } t_FmInterModulePortInitParams;
  905 
  906 /**************************************************************************//**
  907  @Description   Structure for port-FM communication during FM_PORT_Free.
  908 *//***************************************************************************/
  909 typedef struct t_FmInterModulePortFreeParams {
  910     uint8_t             hardwarePortId;     /**< IN. port Id */
  911     e_FmPortType        portType;           /**< IN. Port type */
  912     uint8_t             deqPipelineDepth;   /**< IN. Port's requested resource */
  913 } t_FmInterModulePortFreeParams;
  914 
  915 /**************************************************************************//**
  916  @Function      FmGetPcdPrsBaseAddr
  917 
  918  @Description   Get the base address of the Parser from the FM module
  919 
  920  @Param[in]     h_Fm            A handle to an FM Module.
  921 
  922  @Return        Base address.
  923 *//***************************************************************************/
  924 uintptr_t FmGetPcdPrsBaseAddr(t_Handle h_Fm);
  925 
  926 /**************************************************************************//**
  927  @Function      FmGetPcdKgBaseAddr
  928 
  929  @Description   Get the base address of the Keygen from the FM module
  930 
  931  @Param[in]     h_Fm            A handle to an FM Module.
  932 
  933  @Return        Base address.
  934 *//***************************************************************************/
  935 uintptr_t FmGetPcdKgBaseAddr(t_Handle h_Fm);
  936 
  937 /**************************************************************************//**
  938  @Function      FmGetPcdPlcrBaseAddr
  939 
  940  @Description   Get the base address of the Policer from the FM module
  941 
  942  @Param[in]     h_Fm            A handle to an FM Module.
  943 
  944  @Return        Base address.
  945 *//***************************************************************************/
  946 uintptr_t FmGetPcdPlcrBaseAddr(t_Handle h_Fm);
  947 
  948 /**************************************************************************//**
  949  @Function      FmGetMuramHandle
  950 
  951  @Description   Get the handle of the MURAM from the FM module
  952 
  953  @Param[in]     h_Fm            A handle to an FM Module.
  954 
  955  @Return        MURAM module handle.
  956 *//***************************************************************************/
  957 t_Handle FmGetMuramHandle(t_Handle h_Fm);
  958 
  959 /**************************************************************************//**
  960  @Function      FmGetPhysicalMuramBase
  961 
  962  @Description   Get the physical base address of the MURAM from the FM module
  963 
  964  @Param[in]     h_Fm            A handle to an FM Module.
  965  @Param[in]     fmPhysAddr      Physical MURAM base
  966 
  967  @Return        Physical base address.
  968 *//***************************************************************************/
  969 void FmGetPhysicalMuramBase(t_Handle h_Fm, t_FmPhysAddr *fmPhysAddr);
  970 
  971 /**************************************************************************//**
  972  @Function      FmGetTimeStampScale
  973 
  974  @Description   Used internally by other modules in order to get the timeStamp
  975                 period as requested by the application.
  976 
  977                 This function returns bit number that is incremented every 1 usec.
  978                 To calculate timestamp period in nsec, use
  979                 1000 / (1 << FmGetTimeStampScale()).
  980 
  981  @Param[in]     h_Fm                    A handle to an FM Module.
  982 
  983  @Return        Bit that counts 1 usec.
  984 
  985  @Cautions      Allowed only following FM_Init().
  986 *//***************************************************************************/
  987 uint32_t FmGetTimeStampScale(t_Handle h_Fm);
  988 
  989 /**************************************************************************//**
  990  @Function      FmResumeStalledPort
  991 
  992  @Description   Used internally by FM port to release a stalled port.
  993 
  994  @Param[in]     h_Fm                            A handle to an FM Module.
  995  @Param[in]     hardwarePortId                    HW port id.
  996 
  997  @Return        E_OK on success; Error code otherwise.
  998 
  999  @Cautions      Allowed only following FM_Init().
 1000 *//***************************************************************************/
 1001 t_Error FmResumeStalledPort(t_Handle h_Fm, uint8_t hardwarePortId);
 1002 
 1003 /**************************************************************************//**
 1004  @Function      FmIsPortStalled
 1005 
 1006  @Description   Used internally by FM port to read the port's status.
 1007 
 1008  @Param[in]     h_Fm                            A handle to an FM Module.
 1009  @Param[in]     hardwarePortId                  HW port id.
 1010  @Param[in]     p_IsStalled                     A pointer to the boolean port stalled state
 1011 
 1012  @Return        E_OK on success; Error code otherwise.
 1013 
 1014  @Cautions      Allowed only following FM_Init().
 1015 *//***************************************************************************/
 1016 t_Error FmIsPortStalled(t_Handle h_Fm, uint8_t hardwarePortId, bool *p_IsStalled);
 1017 
 1018 /**************************************************************************//**
 1019  @Function      FmResetMac
 1020 
 1021  @Description   Used by MAC driver to reset the MAC registers
 1022 
 1023  @Param[in]     h_Fm            A handle to an FM Module.
 1024  @Param[in]     type            MAC type.
 1025  @Param[in]     macId           MAC id - according to type.
 1026 
 1027  @Return        E_OK on success; Error code otherwise.
 1028 
 1029  @Cautions      Allowed only following FM_Init().
 1030 *//***************************************************************************/
 1031 t_Error FmResetMac(t_Handle h_Fm, e_FmMacType type, uint8_t macId);
 1032 
 1033 /**************************************************************************//**
 1034  @Function      FmGetClockFreq
 1035 
 1036  @Description   Used by MAC driver to get the FM clock frequency
 1037 
 1038  @Param[in]     h_Fm            A handle to an FM Module.
 1039 
 1040  @Return        clock-freq on success; 0 otherwise.
 1041 
 1042  @Cautions      Allowed only following FM_Init().
 1043 *//***************************************************************************/
 1044 uint16_t FmGetClockFreq(t_Handle h_Fm);
 1045 
 1046 /**************************************************************************//**
 1047  @Function      FmGetMacClockFreq
 1048 
 1049  @Description   Used by MAC driver to get the MAC clock frequency
 1050 
 1051  @Param[in]     h_Fm            A handle to an FM Module.
 1052 
 1053  @Return        clock-freq on success; 0 otherwise.
 1054 
 1055  @Cautions      Allowed only following FM_Init().
 1056 *//***************************************************************************/
 1057 uint16_t FmGetMacClockFreq(t_Handle h_Fm);
 1058 
 1059 /**************************************************************************//**
 1060  @Function      FmGetId
 1061 
 1062  @Description   Used by PCD driver to read rhe FM id
 1063 
 1064  @Param[in]     h_Fm            A handle to an FM Module.
 1065 
 1066  @Return        E_OK on success; Error code otherwise.
 1067 
 1068  @Cautions      Allowed only following FM_Init().
 1069 *//***************************************************************************/
 1070 uint8_t FmGetId(t_Handle h_Fm);
 1071 
 1072 /**************************************************************************//**
 1073  @Function      FmReset
 1074 
 1075  @Description   Used to reset the FM
 1076 
 1077  @Param[in]     h_Fm            A handle to an FM Module.
 1078 
 1079  @Return        E_OK on success; Error code otherwise.
 1080 *//***************************************************************************/
 1081 t_Error FmReset(t_Handle h_Fm);
 1082 
 1083 /**************************************************************************//**
 1084  @Function      FmGetSetPortParams
 1085 
 1086  @Description   Used by FM-PORT driver to pass and receive parameters between
 1087                 PORT and FM modules.
 1088 
 1089  @Param[in]     h_Fm            A handle to an FM Module.
 1090  @Param[in,out] p_PortParams    A structure of FM Port parameters.
 1091 
 1092  @Return        E_OK on success; Error code otherwise.
 1093 
 1094  @Cautions      Allowed only following FM_Init().
 1095 *//***************************************************************************/
 1096 t_Error FmGetSetPortParams(t_Handle h_Fm,t_FmInterModulePortInitParams *p_PortParams);
 1097 
 1098 /**************************************************************************//**
 1099  @Function      FmFreePortParams
 1100 
 1101  @Description   Used by FM-PORT driver to free port's resources within the FM.
 1102 
 1103  @Param[in]     h_Fm            A handle to an FM Module.
 1104  @Param[in,out] p_PortParams    A structure of FM Port parameters.
 1105 
 1106  @Return        None.
 1107 
 1108  @Cautions      Allowed only following FM_Init().
 1109 *//***************************************************************************/
 1110 void FmFreePortParams(t_Handle h_Fm,t_FmInterModulePortFreeParams *p_PortParams);
 1111 
 1112 /**************************************************************************//**
 1113  @Function      FmSetNumOfRiscsPerPort
 1114 
 1115  @Description   Used by FM-PORT driver to pass parameter between
 1116                 PORT and FM modules for working with number of RISC..
 1117 
 1118  @Param[in]     h_Fm            A handle to an FM Module.
 1119  @Param[in]     hardwarePortId    hardware port Id.
 1120  @Param[in]     numOfFmanCtrls    number of Fman Controllers.
 1121  @Param[in]     orFmanCtrl        Fman Controller for order restoration.
 1122 
 1123  @Return        None.
 1124 
 1125  @Cautions      Allowed only following FM_Init().
 1126 *//***************************************************************************/
 1127 t_Error FmSetNumOfRiscsPerPort(t_Handle h_Fm, uint8_t hardwarePortId, uint8_t numOfFmanCtrls, t_FmFmanCtrl orFmanCtrl);
 1128 
 1129 #if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0))
 1130 /**************************************************************************//*
 1131  @Function      FmDumpPortRegs
 1132 
 1133  @Description   Dumps FM port registers which are part of FM common registers
 1134 
 1135  @Param[in]     h_Fm            A handle to an FM Module.
 1136  @Param[in]     hardwarePortId    HW port id.
 1137 
 1138  @Return        E_OK on success; Error code otherwise.
 1139 
 1140  @Cautions      Allowed only FM_Init().
 1141 *//***************************************************************************/
 1142 t_Error FmDumpPortRegs(t_Handle h_Fm,uint8_t hardwarePortId);
 1143 #endif /* (defined(DEBUG_ERRORS) && ... */
 1144 
 1145 void        FmRegisterPcd(t_Handle h_Fm, t_Handle h_FmPcd);
 1146 void        FmUnregisterPcd(t_Handle h_Fm);
 1147 t_Handle    FmGetPcdHandle(t_Handle h_Fm);
 1148 t_Error     FmEnableRamsEcc(t_Handle h_Fm);
 1149 t_Error     FmDisableRamsEcc(t_Handle h_Fm);
 1150 void        FmGetRevision(t_Handle h_Fm, t_FmRevisionInfo *p_FmRevisionInfo);
 1151 t_Error     FmAllocFmanCtrlEventReg(t_Handle h_Fm, uint8_t *p_EventId);
 1152 void        FmFreeFmanCtrlEventReg(t_Handle h_Fm, uint8_t eventId);
 1153 void        FmSetFmanCtrlIntr(t_Handle h_Fm, uint8_t   eventRegId, uint32_t enableEvents);
 1154 uint32_t    FmGetFmanCtrlIntr(t_Handle h_Fm, uint8_t   eventRegId);
 1155 void        FmRegisterFmanCtrlIntr(t_Handle h_Fm, uint8_t eventRegId, void (*f_Isr) (t_Handle h_Fm, uint32_t event), t_Handle    h_Arg);
 1156 void        FmUnregisterFmanCtrlIntr(t_Handle h_Fm, uint8_t eventRegId);
 1157 t_Error     FmSetMacMaxFrame(t_Handle h_Fm, e_FmMacType type, uint8_t macId, uint16_t mtu);
 1158 bool        FmIsMaster(t_Handle h_Fm);
 1159 uint8_t     FmGetGuestId(t_Handle h_Fm);
 1160 uint16_t    FmGetTnumAgingPeriod(t_Handle h_Fm);
 1161 t_Error     FmSetPortPreFetchConfiguration(t_Handle h_Fm, uint8_t portNum, bool preFetchConfigured);
 1162 t_Error     FmGetPortPreFetchConfiguration(t_Handle h_Fm, uint8_t portNum, bool *p_PortConfigured, bool *p_PreFetchConfigured);
 1163 
 1164 
 1165 #ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004
 1166 t_Error     Fm10GTxEccWorkaround(t_Handle h_Fm, uint8_t macId);
 1167 #endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */
 1168 
 1169 void        FmMuramClear(t_Handle h_FmMuram);
 1170 t_Error     FmSetNumOfOpenDmas(t_Handle h_Fm,
 1171                                uint8_t  hardwarePortId,
 1172                                uint8_t  *p_NumOfOpenDmas,
 1173                                uint8_t  *p_NumOfExtraOpenDmas,
 1174                                bool     initialConfig);
 1175 t_Error     FmSetNumOfTasks(t_Handle    h_Fm,
 1176                             uint8_t     hardwarePortId,
 1177                             uint8_t     *p_NumOfTasks,
 1178                             uint8_t     *p_NumOfExtraTasks,
 1179                             bool        initialConfig);
 1180 t_Error     FmSetSizeOfFifo(t_Handle    h_Fm,
 1181                             uint8_t     hardwarePortId,
 1182                             uint32_t    *p_SizeOfFifo,
 1183                             uint32_t    *p_ExtraSizeOfFifo,
 1184                             bool        initialConfig);
 1185 
 1186 t_Error     FmSetCongestionGroupPFCpriority(t_Handle    h_Fm,
 1187                                             uint32_t    congestionGroupId,
 1188                                             uint8_t     priorityBitMap);
 1189 
 1190 #if (DPAA_VERSION >= 11)
 1191 t_Error     FmVSPAllocForPort(t_Handle         h_Fm,
 1192                               e_FmPortType     portType,
 1193                               uint8_t          portId,
 1194                               uint8_t          numOfStorageProfiles);
 1195 
 1196 t_Error     FmVSPFreeForPort(t_Handle        h_Fm,
 1197                              e_FmPortType    portType,
 1198                              uint8_t         portId);
 1199 
 1200 t_Error     FmVSPGetAbsoluteProfileId(t_Handle      h_Fm,
 1201                                       e_FmPortType  portType,
 1202                                       uint8_t       portId,
 1203                                       uint16_t      relativeProfile,
 1204                                       uint16_t      *p_AbsoluteId);
 1205 t_Error FmVSPCheckRelativeProfile(t_Handle        h_Fm,
 1206                                   e_FmPortType    portType,
 1207                                   uint8_t         portId,
 1208                                   uint16_t        relativeProfile);
 1209 
 1210 uintptr_t   FmGetVSPBaseAddr(t_Handle h_Fm);
 1211 #endif /* (DPAA_VERSION >= 11) */
 1212 
 1213 
 1214 #endif /* __FM_COMMON_H */

Cache object: 36ebd398d678f290369c01a40e208b0a


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.