/* * 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_manip.h @Description FM PCD manip... *//***************************************************************************/ #ifndef __FM_MANIP_H #define __FM_MANIP_H #include "std_ext.h" #include "error_ext.h" #include "list_ext.h" #include "fm_cc.h" /***********************************************************************/ /* Header manipulations defines */ /***********************************************************************/ #define NUM_OF_SCRATCH_POOL_BUFFERS 1000 /*TODO - Change it!!*/ #if (defined(FM_CAPWAP_SUPPORT) && (DPAA_VERSION == 10)) #define HMAN_OC_RMV_N_OR_INSRT_INT_FRM_HDR 0x2e #define HMAN_OC_INSRT_HDR_BY_TEMPL_N_OR_FRAG_AFTER 0x31 #define HMAN_OC_MV_INT_FRAME_HDR_FROM_FRM_TO_BUFFER_PREFFIX 0x2f #define HMAN_OC_CAPWAP_RMV_DTLS_IF_EXIST 0x30 #define HMAN_OC_CAPWAP_REASSEMBLY 0x11 /* dummy */ #define HMAN_OC_CAPWAP_INDEXED_STATS 0x32 /* dummy */ #define HMAN_OC_CAPWAP_FRAGMENTATION 0x33 #else #define HMAN_OC_CAPWAP_MANIP 0x2F #define HMAN_OC_CAPWAP_FRAG_CHECK 0x2E #define HMAN_OC_CAPWAP_FRAGMENTATION 0x33 #define HMAN_OC_CAPWAP_REASSEMBLY 0x30 #endif /* (defined(FM_CAPWAP_SUPPORT) && (DPAA_VERSION == 10)) */ #define HMAN_OC_IP_MANIP 0x34 #define HMAN_OC_IP_FRAGMENTATION 0x74 #define HMAN_OC_IP_REASSEMBLY 0xB4 #define HMAN_OC_IPSEC_MANIP 0xF4 #define HMAN_OC 0x35 #if (defined(FM_CAPWAP_SUPPORT) && (DPAA_VERSION == 10)) #define HMAN_RMV_HDR 0x80000000 #define HMAN_INSRT_INT_FRM_HDR 0x40000000 #define UDP_CHECKSUM_FIELD_OFFSET_FROM_UDP 6 #define UDP_CHECKSUM_FIELD_SIZE 2 #define UDP_LENGTH_FIELD_OFFSET_FROM_UDP 4 #define IPv4_DSCECN_FIELD_OFFSET_FROM_IP 1 #define IPv4_TOTALLENGTH_FIELD_OFFSET_FROM_IP 2 #define IPv4_HDRCHECKSUM_FIELD_OFFSET_FROM_IP 10 #define VLAN_TAG_FIELD_OFFSET_FROM_ETH 12 #define IPv4_ID_FIELD_OFFSET_FROM_IP 4 #define IPv6_PAYLOAD_LENGTH_OFFSET_FROM_IP 4 #define IPv6_NEXT_HEADER_OFFSET_FROM_IP 6 #define FM_PCD_MANIP_CAPWAP_REASM_TABLE_SIZE 0x80 #define FM_PCD_MANIP_CAPWAP_REASM_TABLE_ALIGN 8 #define FM_PCD_MANIP_CAPWAP_REASM_RFD_SIZE 32 #define FM_PCD_MANIP_CAPWAP_REASM_AUTO_LEARNING_HASH_ENTRY_SIZE 4 #define FM_PCD_MANIP_CAPWAP_REASM_TIME_OUT_ENTRY_SIZE 8 #define FM_PCD_MANIP_CAPWAP_REASM_TIME_OUT_BETWEEN_FRAMES 0x40000000 #define FM_PCD_MANIP_CAPWAP_REASM_HALT_ON_DUPLICATE_FRAG 0x10000000 #define FM_PCD_MANIP_CAPWAP_REASM_AUTOMATIC_LEARNIN_HASH_8_WAYS 0x08000000 #define FM_PCD_MANIP_CAPWAP_REASM_PR_COPY 0x00800000 #define FM_PCD_MANIP_CAPWAP_FRAG_COMPR_OPTION_FIELD_EN 0x80000000 #define FM_PCD_MANIP_INDEXED_STATS_ENTRY_SIZE 4 #define FM_PCD_MANIP_INDEXED_STATS_CNIA 0x20000000 #define FM_PCD_MANIP_INDEXED_STATS_DPD 0x10000000 #endif /* (defined(FM_CAPWAP_SUPPORT) && (DPAA_VERSION == 10)) */ #if (DPAA_VERSION >= 11) #define FM_PCD_MANIP_CAPWAP_DTLS 0x00040000 #define FM_PCD_MANIP_CAPWAP_NADEN 0x20000000 #define FM_PCD_MANIP_CAPWAP_FRAG_CHECK_MTU_SHIFT 16 #define FM_PCD_MANIP_CAPWAP_FRAG_CHECK_NO_FRAGMENTATION 0xFFFF0000 #define FM_PCD_MANIP_CAPWAP_FRAG_CHECK_CNIA 0x20000000 #define FM_PCD_MANIP_CAPWAP_FRAG_COMPRESS_EN 0x04000000 #define FM_PCD_MANIP_CAPWAP_FRAG_SCRATCH_BPID 24 #define FM_PCD_MANIP_CAPWAP_FRAG_SG_BDID_EN 0x08000000 #define FM_PCD_MANIP_CAPWAP_FRAG_SG_BDID_MASK 0xFF000000 #define FM_PCD_MANIP_CAPWAP_FRAG_SG_BDID_SHIFT 24 #endif /* (DPAA_VERSION >= 11) */ #define FM_PCD_MANIP_REASM_TABLE_SIZE 0x40 #define FM_PCD_MANIP_REASM_TABLE_ALIGN 8 #define FM_PCD_MANIP_REASM_COMMON_PARAM_TABLE_SIZE 64 #define FM_PCD_MANIP_REASM_COMMON_PARAM_TABLE_ALIGN 8 #define FM_PCD_MANIP_REASM_TIME_OUT_BETWEEN_FRAMES 0x80000000 #define FM_PCD_MANIP_REASM_COUPLING_ENABLE 0x40000000 #define FM_PCD_MANIP_REASM_COUPLING_MASK 0xFF000000 #define FM_PCD_MANIP_REASM_COUPLING_SHIFT 24 #define FM_PCD_MANIP_REASM_LIODN_MASK 0x0000003F #define FM_PCD_MANIP_REASM_LIODN_SHIFT 56 #define FM_PCD_MANIP_REASM_ELIODN_MASK 0x000003c0 #define FM_PCD_MANIP_REASM_ELIODN_SHIFT 38 #define FM_PCD_MANIP_REASM_COMMON_INT_BUFFER_IDX_MASK 0x000000FF #define FM_PCD_MANIP_REASM_COMMON_INT_BUFFER_IDX_SHIFT 24 #define FM_PCD_MANIP_REASM_TIMEOUT_THREAD_THRESH 1024 #define FM_PCD_MANIP_IP_MTU_SHIFT 16 #define FM_PCD_MANIP_IP_NO_FRAGMENTATION 0xFFFF0000 #define FM_PCD_MANIP_IP_CNIA 0x20000000 #define FM_PCD_MANIP_IP_FRAG_DF_SHIFT 28 #define FM_PCD_MANIP_IP_FRAG_SCRATCH_BPID 24 #define FM_PCD_MANIP_IP_FRAG_SG_BDID_EN 0x08000000 #define FM_PCD_MANIP_IP_FRAG_SG_BDID_MASK 0xFF000000 #define FM_PCD_MANIP_IP_FRAG_SG_BDID_SHIFT 24 #define FM_PCD_MANIP_IPSEC_DEC 0x10000000 #define FM_PCD_MANIP_IPSEC_VIPV_EN 0x08000000 #define FM_PCD_MANIP_IPSEC_ECN_EN 0x04000000 #define FM_PCD_MANIP_IPSEC_DSCP_EN 0x02000000 #define FM_PCD_MANIP_IPSEC_VIPL_EN 0x01000000 #define FM_PCD_MANIP_IPSEC_NADEN 0x20000000 #define FM_PCD_MANIP_IPSEC_IP_HDR_LEN_MASK 0x00FF0000 #define FM_PCD_MANIP_IPSEC_IP_HDR_LEN_SHIFT 16 #define e_FM_MANIP_IP_INDX 1 #define HMCD_OPCODE_GENERIC_RMV 0x01 #define HMCD_OPCODE_GENERIC_INSRT 0x02 #define HMCD_OPCODE_GENERIC_REPLACE 0x05 #define HMCD_OPCODE_L2_RMV 0x08 #define HMCD_OPCODE_L2_INSRT 0x09 #define HMCD_OPCODE_VLAN_PRI_UPDATE 0x0B #define HMCD_OPCODE_IPV4_UPDATE 0x0C #define HMCD_OPCODE_IPV6_UPDATE 0x10 #define HMCD_OPCODE_TCP_UDP_UPDATE 0x0E #define HMCD_OPCODE_TCP_UDP_CHECKSUM 0x14 #define HMCD_OPCODE_REPLACE_IP 0x12 #define HMCD_OPCODE_RMV_TILL 0x15 #define HMCD_OPCODE_UDP_INSRT 0x16 #define HMCD_OPCODE_IP_INSRT 0x17 #define HMCD_OPCODE_CAPWAP_RMV 0x18 #define HMCD_OPCODE_CAPWAP_INSRT 0x18 #define HMCD_LAST 0x00800000 #define HMCD_DSCP_VALUES 64 #define HMCD_BASIC_SIZE 4 #define HMCD_PTR_SIZE 4 #define HMCD_PARAM_SIZE 4 #define HMCD_IPV4_ADDR_SIZE 4 #define HMCD_IPV6_ADDR_SIZE 0x10 #define HMCD_L4_HDR_SIZE 8 #define HMCD_CAPWAP_INSRT 0x00010000 #define HMCD_INSRT_UDP_LITE 0x00010000 #define HMCD_IP_ID_MASK 0x0000FFFF #define HMCD_IP_SIZE_MASK 0x0000FF00 #define HMCD_IP_SIZE_SHIFT 8 #define HMCD_IP_LAST_PID_MASK 0x000000FF #define HMCD_IP_OR_QOS 0x00010000 #define HMCD_IP_L4_CS_CALC 0x00040000 #define HMCD_OC_SHIFT 24 #define HMCD_RMV_OFFSET_SHIFT 0 #define HMCD_RMV_SIZE_SHIFT 8 #define HMCD_INSRT_OFFSET_SHIFT 0 #define HMCD_INSRT_SIZE_SHIFT 8 #define HMTD_CFG_TYPE 0x4000 #define HMTD_CFG_EXT_HMCT 0x0080 #define HMTD_CFG_PRS_AFTER_HM 0x0040 #define HMTD_CFG_NEXT_AD_EN 0x0020 #define HMCD_RMV_L2_ETHERNET 0 #define HMCD_RMV_L2_STACKED_QTAGS 1 #define HMCD_RMV_L2_ETHERNET_AND_MPLS 2 #define HMCD_RMV_L2_MPLS 3 #define HMCD_INSRT_L2_MPLS 0 #define HMCD_INSRT_N_UPDATE_L2_MPLS 1 #define HMCD_INSRT_L2_SIZE_SHIFT 24 #define HMCD_L2_MODE_SHIFT 16 #define HMCD_VLAN_PRI_REP_MODE_SHIFT 16 #define HMCD_VLAN_PRI_UPDATE 0 #define HMCD_VLAN_PRI_UPDATE_DSCP_TO_VPRI 1 #define HMCD_IPV4_UPDATE_TTL 0x00000001 #define HMCD_IPV4_UPDATE_TOS 0x00000002 #define HMCD_IPV4_UPDATE_DST 0x00000020 #define HMCD_IPV4_UPDATE_SRC 0x00000040 #define HMCD_IPV4_UPDATE_ID 0x00000080 #define HMCD_IPV4_UPDATE_TOS_SHIFT 8 #define HMCD_IPV6_UPDATE_HL 0x00000001 #define HMCD_IPV6_UPDATE_TC 0x00000002 #define HMCD_IPV6_UPDATE_DST 0x00000040 #define HMCD_IPV6_UPDATE_SRC 0x00000080 #define HMCD_IPV6_UPDATE_TC_SHIFT 8 #define HMCD_TCP_UDP_UPDATE_DST 0x00004000 #define HMCD_TCP_UDP_UPDATE_SRC 0x00008000 #define HMCD_TCP_UDP_UPDATE_SRC_SHIFT 16 #define HMCD_IP_REPLACE_REPLACE_IPV4 0x00000000 #define HMCD_IP_REPLACE_REPLACE_IPV6 0x00010000 #define HMCD_IP_REPLACE_TTL_HL 0x00200000 #define HMCD_IP_REPLACE_ID 0x00400000 #define HMCD_IP_REPLACE_L3HDRSIZE_SHIFT 24 #define DSCP_TO_VLAN_TABLE_SIZE 32 #define MANIP_GET_HMCT_SIZE(h_Manip) (((t_FmPcdManip *)h_Manip)->tableSize) #define MANIP_GET_DATA_SIZE(h_Manip) (((t_FmPcdManip *)h_Manip)->dataSize) #define MANIP_GET_HMCT_PTR(h_Manip) (((t_FmPcdManip *)h_Manip)->p_Hmct) #define MANIP_GET_DATA_PTR(h_Manip) (((t_FmPcdManip *)h_Manip)->p_Data) #define MANIP_SET_HMCT_PTR(h_Manip, h_NewPtr) (((t_FmPcdManip *)h_Manip)->p_Hmct = h_NewPtr) #define MANIP_SET_DATA_PTR(h_Manip, h_NewPtr) (((t_FmPcdManip *)h_Manip)->p_Data = h_NewPtr) #define MANIP_GET_HMTD_PTR(h_Manip) (((t_FmPcdManip *)h_Manip)->h_Ad) #define MANIP_DONT_REPARSE(h_Manip) (((t_FmPcdManip *)h_Manip)->dontParseAfterManip) #define MANIP_SET_PREV(h_Manip, h_Prev) (((t_FmPcdManip *)h_Manip)->h_PrevManip = h_Prev) #define MANIP_GET_OWNERS(h_Manip) (((t_FmPcdManip *)h_Manip)->owner) #define MANIP_GET_TYPE(h_Manip) (((t_FmPcdManip *)h_Manip)->type) #define MANIP_SET_UNIFIED_TBL_PTR_INDICATION(h_Manip) (((t_FmPcdManip *)h_Manip)->unifiedTablePtr = TRUE) #define MANIP_GET_MURAM(h_Manip) (((t_FmPcd *)((t_FmPcdManip *)h_Manip)->h_FmPcd)->h_FmMuram) #define MANIP_FREE_HMTD(h_Manip) \ {if (((t_FmPcdManip *)h_Manip)->muramAllocate) \ FM_MURAM_FreeMem(((t_FmPcd *)((t_FmPcdManip *)h_Manip)->h_FmPcd)->h_FmMuram, ((t_FmPcdManip *)h_Manip)->h_Ad);\ else \ XX_Free(((t_FmPcdManip *)h_Manip)->h_Ad); \ ((t_FmPcdManip *)h_Manip)->h_Ad = NULL; \ } /* position regarding Manip SW structure */ #define MANIP_IS_FIRST(h_Manip) (!(((t_FmPcdManip *)h_Manip)->h_PrevManip)) #define MANIP_IS_CASCADED(h_Manip) (((t_FmPcdManip *)h_Manip)->cascaded) #define MANIP_IS_UNIFIED(h_Manip) (!(((t_FmPcdManip *)h_Manip)->unifiedPosition == e_MANIP_UNIFIED_NONE)) #define MANIP_IS_UNIFIED_NON_FIRST(h_Manip) ((((t_FmPcdManip *)h_Manip)->unifiedPosition == e_MANIP_UNIFIED_MID) || \ (((t_FmPcdManip *)h_Manip)->unifiedPosition == e_MANIP_UNIFIED_LAST)) #define MANIP_IS_UNIFIED_NON_LAST(h_Manip) ((((t_FmPcdManip *)h_Manip)->unifiedPosition == e_MANIP_UNIFIED_FIRST) ||\ (((t_FmPcdManip *)h_Manip)->unifiedPosition == e_MANIP_UNIFIED_MID)) #define MANIP_IS_UNIFIED_FIRST(h_Manip) (((t_FmPcdManip *)h_Manip)->unifiedPosition == e_MANIP_UNIFIED_FIRST) #define MANIP_IS_UNIFIED_LAST(h_Manip) (((t_FmPcdManip *)h_Manip)->unifiedPosition == e_MANIP_UNIFIED_LAST) #define MANIP_UPDATE_UNIFIED_POSITION(h_Manip) (((t_FmPcdManip *)h_Manip)->unifiedPosition = \ (((t_FmPcdManip *)h_Manip)->unifiedPosition == e_MANIP_UNIFIED_NONE)? \ e_MANIP_UNIFIED_LAST : e_MANIP_UNIFIED_MID) typedef enum e_ManipUnifiedPosition { e_MANIP_UNIFIED_NONE = 0, e_MANIP_UNIFIED_FIRST, e_MANIP_UNIFIED_MID, e_MANIP_UNIFIED_LAST } e_ManipUnifiedPosition; typedef enum e_ManipInfo { e_MANIP_HMTD, e_MANIP_HMCT, e_MANIP_HANDLER_TABLE_OWNER }e_ManipInfo; /***********************************************************************/ /* Memory map */ /***********************************************************************/ #if defined(__MWERKS__) && !defined(__GNUC__) #pragma pack(push,1) #endif /* defined(__MWERKS__) && ... */ #if (defined(FM_CAPWAP_SUPPORT) && (DPAA_VERSION == 10)) typedef struct t_CapwapReasmPram { volatile uint32_t mode; volatile uint32_t autoLearnHashTblPtr; volatile uint32_t intStatsTblPtr; volatile uint32_t reasmFrmDescPoolTblPtr; volatile uint32_t reasmFrmDescIndexPoolTblPtr; volatile uint32_t timeOutTblPtr; volatile uint32_t bufferPoolIdAndRisc1SetIndexes; volatile uint32_t risc23SetIndexes; volatile uint32_t risc4SetIndexesAndExtendedStatsTblPtr; volatile uint32_t extendedStatsTblPtr; volatile uint32_t expirationDelay; volatile uint32_t totalProcessedFragCounter; volatile uint32_t totalUnsuccessfulReasmFramesCounter; volatile uint32_t totalDuplicatedFragCounter; volatile uint32_t totalMalformdFragCounter; volatile uint32_t totalTimeOutCounter; volatile uint32_t totalSetBusyCounter; volatile uint32_t totalRfdPoolBusyCounter; volatile uint32_t totalDiscardedFragsCounter; volatile uint32_t totalMoreThan16FramesCounter; volatile uint32_t internalBufferBusy; volatile uint32_t externalBufferBusy; volatile uint32_t reserved1[4]; } t_CapwapReasmPram; #endif /* (defined(FM_CAPWAP_SUPPORT) && (DPAA_VERSION == 10)) */ typedef _Packed struct t_ReassTbl { volatile uint16_t waysNumAndSetSize; volatile uint16_t autoLearnHashKeyMask; volatile uint32_t reassCommonPrmTblPtr; volatile uint32_t liodnAlAndAutoLearnHashTblPtrHi; volatile uint32_t autoLearnHashTblPtrLow; volatile uint32_t liodnSlAndAutoLearnSetLockTblPtrHi; volatile uint32_t autoLearnSetLockTblPtrLow; volatile uint16_t minFragSize; /* Not relevant for CAPWAP*/ volatile uint16_t maxReassemblySize; /* Only relevant for CAPWAP*/ volatile uint32_t totalSuccessfullyReasmFramesCounter; volatile uint32_t totalValidFragmentCounter; volatile uint32_t totalProcessedFragCounter; volatile uint32_t totalMalformdFragCounter; volatile uint32_t totalSetBusyCounter; volatile uint32_t totalDiscardedFragsCounter; volatile uint32_t totalMoreThan16FramesCounter; volatile uint32_t reserved2[2]; } _PackedType t_ReassTbl; typedef struct t_ReassCommonTbl { volatile uint32_t timeoutModeAndFqid; volatile uint32_t reassFrmDescIndexPoolTblPtr; volatile uint32_t liodnAndReassFrmDescPoolPtrHi; volatile uint32_t reassFrmDescPoolPtrLow; volatile uint32_t timeOutTblPtr; volatile uint32_t expirationDelay; volatile uint32_t internalBufferManagement; volatile uint32_t reserved2; volatile uint32_t totalTimeOutCounter; volatile uint32_t totalRfdPoolBusyCounter; volatile uint32_t totalInternalBufferBusy; volatile uint32_t totalExternalBufferBusy; volatile uint32_t totalSgFragmentCounter; volatile uint32_t totalDmaSemaphoreDepletionCounter; volatile uint32_t totalNCSPCounter; volatile uint32_t discardMask; } t_ReassCommonTbl; typedef _Packed struct t_Hmtd { volatile uint16_t cfg; volatile uint8_t eliodnOffset; volatile uint8_t extHmcdBasePtrHi; volatile uint32_t hmcdBasePtr; volatile uint16_t nextAdIdx; volatile uint8_t res1; volatile uint8_t opCode; volatile uint32_t res2; } _PackedType t_Hmtd; #if defined(__MWERKS__) && !defined(__GNUC__) #pragma pack(pop) #endif /* defined(__MWERKS__) && ... */ /***********************************************************************/ /* Driver's internal structures */ /***********************************************************************/ #if (defined(FM_CAPWAP_SUPPORT) && (DPAA_VERSION == 10)) typedef struct { t_Handle p_AutoLearnHashTbl; t_Handle p_ReassmFrmDescrPoolTbl; t_Handle p_ReassmFrmDescrIndxPoolTbl; t_Handle p_TimeOutTbl; uint16_t maxNumFramesInProcess; uint8_t numOfTasks; //uint8_t poolId; uint8_t prOffset; uint16_t dataOffset; uint8_t sgBpid; uint8_t hwPortId; uint32_t fqidForTimeOutFrames; uint32_t timeoutRoutineRequestTime; uint32_t bitFor1Micro; } t_CapwapFragParams; #endif /* (defined(FM_CAPWAP_SUPPORT) && (DPAA_VERSION == 10)) */ typedef struct { t_AdOfTypeContLookup *p_Frag; #if (DPAA_VERSION == 10) uint8_t scratchBpid; #endif /* (DPAA_VERSION == 10) */ } t_FragParams; typedef struct t_ReassmParams { e_NetHeaderType hdr; /* Header selection */ t_ReassCommonTbl *p_ReassCommonTbl; uintptr_t reassFrmDescrIndxPoolTblAddr; uintptr_t reassFrmDescrPoolTblAddr; uintptr_t timeOutTblAddr; uintptr_t internalBufferPoolManagementIndexAddr; uintptr_t internalBufferPoolAddr; uint32_t maxNumFramesInProcess; uint8_t sgBpid; uint8_t dataMemId; uint16_t dataLiodnOffset; uint32_t fqidForTimeOutFrames; e_FmPcdManipReassemTimeOutMode timeOutMode; uint32_t timeoutThresholdForReassmProcess; union { struct { t_Handle h_Ipv4Ad; t_Handle h_Ipv6Ad; bool ipv6Assigned; t_ReassTbl *p_Ipv4ReassTbl; t_ReassTbl *p_Ipv6ReassTbl; uintptr_t ipv4AutoLearnHashTblAddr; uintptr_t ipv6AutoLearnHashTblAddr; uintptr_t ipv4AutoLearnSetLockTblAddr; uintptr_t ipv6AutoLearnSetLockTblAddr; uint16_t minFragSize[2]; e_FmPcdManipReassemWaysNumber numOfFramesPerHashEntry[2]; uint8_t relativeSchemeId[2]; t_Handle h_Ipv4Scheme; t_Handle h_Ipv6Scheme; uint32_t nonConsistentSpFqid; } ip; struct { t_Handle h_Ad; t_ReassTbl *p_ReassTbl; uintptr_t autoLearnHashTblAddr; uintptr_t autoLearnSetLockTblAddr; uint16_t maxRessembledsSize; e_FmPcdManipReassemWaysNumber numOfFramesPerHashEntry; uint8_t relativeSchemeId; t_Handle h_Scheme; } capwap; }; } t_ReassmParams; typedef struct{ e_FmPcdManipType type; t_FmPcdManipParams manipParams; bool muramAllocate; t_Handle h_Ad; uint32_t opcode; bool rmv; bool insrt; t_Handle h_NextManip; t_Handle h_PrevManip; e_FmPcdManipType nextManipType; /* HdrManip parameters*/ uint8_t *p_Hmct; uint8_t *p_Data; bool dontParseAfterManip; bool fieldUpdate; bool custom; uint16_t tableSize; uint8_t dataSize; bool cascaded; e_ManipUnifiedPosition unifiedPosition; /* end HdrManip */ uint8_t *p_Template; uint16_t owner; uint32_t updateParams; uint32_t shadowUpdateParams; bool frag; bool reassm; uint16_t sizeForFragmentation; #if (defined(FM_CAPWAP_SUPPORT) && (DPAA_VERSION == 10)) t_Handle h_Frag; t_CapwapFragParams capwapFragParams; #endif /* (defined(FM_CAPWAP_SUPPORT) && (DPAA_VERSION == 10)) */ union { t_ReassmParams reassmParams; t_FragParams fragParams; }; uint8_t icOffset; uint16_t ownerTmp; bool cnia; t_Handle p_StatsTbl; t_Handle h_FmPcd; t_List nodesLst; t_Handle h_Spinlock; } t_FmPcdManip; typedef struct t_FmPcdCcSavedManipParams { union { struct { uint16_t dataOffset; //uint8_t poolId; }capwapParams; struct { uint16_t dataOffset; uint8_t poolId; }ipParams; }; } t_FmPcdCcSavedManipParams; #endif /* __FM_MANIP_H */