Path: blob/main/sys/contrib/ncsw/Peripherals/FM/Pcd/fm_manip.h
48524 views
/*1* Copyright 2008-2012 Freescale Semiconductor Inc.2*3* Redistribution and use in source and binary forms, with or without4* modification, are permitted provided that the following conditions are met:5* * Redistributions of source code must retain the above copyright6* notice, this list of conditions and the following disclaimer.7* * Redistributions in binary form must reproduce the above copyright8* notice, this list of conditions and the following disclaimer in the9* documentation and/or other materials provided with the distribution.10* * Neither the name of Freescale Semiconductor nor the11* names of its contributors may be used to endorse or promote products12* derived from this software without specific prior written permission.13*14*15* ALTERNATIVELY, this software may be distributed under the terms of the16* GNU General Public License ("GPL") as published by the Free Software17* Foundation, either version 2 of that License or (at your option) any18* later version.19*20* THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY21* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED22* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE23* DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY24* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES25* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;26* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND27* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT28* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS29* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.30*/313233/******************************************************************************34@File fm_manip.h3536@Description FM PCD manip...37*//***************************************************************************/38#ifndef __FM_MANIP_H39#define __FM_MANIP_H4041#include "std_ext.h"42#include "error_ext.h"43#include "list_ext.h"4445#include "fm_cc.h"464748/***********************************************************************/49/* Header manipulations defines */50/***********************************************************************/5152#define NUM_OF_SCRATCH_POOL_BUFFERS 1000 /*TODO - Change it!!*/5354#if (defined(FM_CAPWAP_SUPPORT) && (DPAA_VERSION == 10))55#define HMAN_OC_RMV_N_OR_INSRT_INT_FRM_HDR 0x2e56#define HMAN_OC_INSRT_HDR_BY_TEMPL_N_OR_FRAG_AFTER 0x3157#define HMAN_OC_MV_INT_FRAME_HDR_FROM_FRM_TO_BUFFER_PREFFIX 0x2f58#define HMAN_OC_CAPWAP_RMV_DTLS_IF_EXIST 0x3059#define HMAN_OC_CAPWAP_REASSEMBLY 0x11 /* dummy */60#define HMAN_OC_CAPWAP_INDEXED_STATS 0x32 /* dummy */61#define HMAN_OC_CAPWAP_FRAGMENTATION 0x3362#else63#define HMAN_OC_CAPWAP_MANIP 0x2F64#define HMAN_OC_CAPWAP_FRAG_CHECK 0x2E65#define HMAN_OC_CAPWAP_FRAGMENTATION 0x3366#define HMAN_OC_CAPWAP_REASSEMBLY 0x3067#endif /* (defined(FM_CAPWAP_SUPPORT) && (DPAA_VERSION == 10)) */68#define HMAN_OC_IP_MANIP 0x3469#define HMAN_OC_IP_FRAGMENTATION 0x7470#define HMAN_OC_IP_REASSEMBLY 0xB471#define HMAN_OC_IPSEC_MANIP 0xF472#define HMAN_OC 0x357374#if (defined(FM_CAPWAP_SUPPORT) && (DPAA_VERSION == 10))75#define HMAN_RMV_HDR 0x8000000076#define HMAN_INSRT_INT_FRM_HDR 0x400000007778#define UDP_CHECKSUM_FIELD_OFFSET_FROM_UDP 679#define UDP_CHECKSUM_FIELD_SIZE 280#define UDP_LENGTH_FIELD_OFFSET_FROM_UDP 48182#define IPv4_DSCECN_FIELD_OFFSET_FROM_IP 183#define IPv4_TOTALLENGTH_FIELD_OFFSET_FROM_IP 284#define IPv4_HDRCHECKSUM_FIELD_OFFSET_FROM_IP 1085#define VLAN_TAG_FIELD_OFFSET_FROM_ETH 1286#define IPv4_ID_FIELD_OFFSET_FROM_IP 48788#define IPv6_PAYLOAD_LENGTH_OFFSET_FROM_IP 489#define IPv6_NEXT_HEADER_OFFSET_FROM_IP 69091#define FM_PCD_MANIP_CAPWAP_REASM_TABLE_SIZE 0x8092#define FM_PCD_MANIP_CAPWAP_REASM_TABLE_ALIGN 893#define FM_PCD_MANIP_CAPWAP_REASM_RFD_SIZE 3294#define FM_PCD_MANIP_CAPWAP_REASM_AUTO_LEARNING_HASH_ENTRY_SIZE 495#define FM_PCD_MANIP_CAPWAP_REASM_TIME_OUT_ENTRY_SIZE 8969798#define FM_PCD_MANIP_CAPWAP_REASM_TIME_OUT_BETWEEN_FRAMES 0x4000000099#define FM_PCD_MANIP_CAPWAP_REASM_HALT_ON_DUPLICATE_FRAG 0x10000000100#define FM_PCD_MANIP_CAPWAP_REASM_AUTOMATIC_LEARNIN_HASH_8_WAYS 0x08000000101#define FM_PCD_MANIP_CAPWAP_REASM_PR_COPY 0x00800000102103#define FM_PCD_MANIP_CAPWAP_FRAG_COMPR_OPTION_FIELD_EN 0x80000000104105#define FM_PCD_MANIP_INDEXED_STATS_ENTRY_SIZE 4106#define FM_PCD_MANIP_INDEXED_STATS_CNIA 0x20000000107#define FM_PCD_MANIP_INDEXED_STATS_DPD 0x10000000108#endif /* (defined(FM_CAPWAP_SUPPORT) && (DPAA_VERSION == 10)) */109110#if (DPAA_VERSION >= 11)111#define FM_PCD_MANIP_CAPWAP_DTLS 0x00040000112#define FM_PCD_MANIP_CAPWAP_NADEN 0x20000000113114#define FM_PCD_MANIP_CAPWAP_FRAG_CHECK_MTU_SHIFT 16115#define FM_PCD_MANIP_CAPWAP_FRAG_CHECK_NO_FRAGMENTATION 0xFFFF0000116#define FM_PCD_MANIP_CAPWAP_FRAG_CHECK_CNIA 0x20000000117118#define FM_PCD_MANIP_CAPWAP_FRAG_COMPRESS_EN 0x04000000119#define FM_PCD_MANIP_CAPWAP_FRAG_SCRATCH_BPID 24120#define FM_PCD_MANIP_CAPWAP_FRAG_SG_BDID_EN 0x08000000121#define FM_PCD_MANIP_CAPWAP_FRAG_SG_BDID_MASK 0xFF000000122#define FM_PCD_MANIP_CAPWAP_FRAG_SG_BDID_SHIFT 24123#endif /* (DPAA_VERSION >= 11) */124125#define FM_PCD_MANIP_REASM_TABLE_SIZE 0x40126#define FM_PCD_MANIP_REASM_TABLE_ALIGN 8127128#define FM_PCD_MANIP_REASM_COMMON_PARAM_TABLE_SIZE 64129#define FM_PCD_MANIP_REASM_COMMON_PARAM_TABLE_ALIGN 8130#define FM_PCD_MANIP_REASM_TIME_OUT_BETWEEN_FRAMES 0x80000000131#define FM_PCD_MANIP_REASM_COUPLING_ENABLE 0x40000000132#define FM_PCD_MANIP_REASM_COUPLING_MASK 0xFF000000133#define FM_PCD_MANIP_REASM_COUPLING_SHIFT 24134#define FM_PCD_MANIP_REASM_LIODN_MASK 0x0000003F135#define FM_PCD_MANIP_REASM_LIODN_SHIFT 56136#define FM_PCD_MANIP_REASM_ELIODN_MASK 0x000003c0137#define FM_PCD_MANIP_REASM_ELIODN_SHIFT 38138#define FM_PCD_MANIP_REASM_COMMON_INT_BUFFER_IDX_MASK 0x000000FF139#define FM_PCD_MANIP_REASM_COMMON_INT_BUFFER_IDX_SHIFT 24140#define FM_PCD_MANIP_REASM_TIMEOUT_THREAD_THRESH 1024141142#define FM_PCD_MANIP_IP_MTU_SHIFT 16143#define FM_PCD_MANIP_IP_NO_FRAGMENTATION 0xFFFF0000144#define FM_PCD_MANIP_IP_CNIA 0x20000000145146#define FM_PCD_MANIP_IP_FRAG_DF_SHIFT 28147#define FM_PCD_MANIP_IP_FRAG_SCRATCH_BPID 24148#define FM_PCD_MANIP_IP_FRAG_SG_BDID_EN 0x08000000149#define FM_PCD_MANIP_IP_FRAG_SG_BDID_MASK 0xFF000000150#define FM_PCD_MANIP_IP_FRAG_SG_BDID_SHIFT 24151152#define FM_PCD_MANIP_IPSEC_DEC 0x10000000153#define FM_PCD_MANIP_IPSEC_VIPV_EN 0x08000000154#define FM_PCD_MANIP_IPSEC_ECN_EN 0x04000000155#define FM_PCD_MANIP_IPSEC_DSCP_EN 0x02000000156#define FM_PCD_MANIP_IPSEC_VIPL_EN 0x01000000157#define FM_PCD_MANIP_IPSEC_NADEN 0x20000000158159#define FM_PCD_MANIP_IPSEC_IP_HDR_LEN_MASK 0x00FF0000160#define FM_PCD_MANIP_IPSEC_IP_HDR_LEN_SHIFT 16161162#define FM_PCD_MANIP_IPSEC_ARW_SIZE_MASK 0xFFFF0000163#define FM_PCD_MANIP_IPSEC_ARW_SIZE_SHIFT 16164165#define e_FM_MANIP_IP_INDX 1166167#define HMCD_OPCODE_GENERIC_RMV 0x01168#define HMCD_OPCODE_GENERIC_INSRT 0x02169#define HMCD_OPCODE_GENERIC_REPLACE 0x05170#define HMCD_OPCODE_L2_RMV 0x08171#define HMCD_OPCODE_L2_INSRT 0x09172#define HMCD_OPCODE_VLAN_PRI_UPDATE 0x0B173#define HMCD_OPCODE_IPV4_UPDATE 0x0C174#define HMCD_OPCODE_IPV6_UPDATE 0x10175#define HMCD_OPCODE_TCP_UDP_UPDATE 0x0E176#define HMCD_OPCODE_TCP_UDP_CHECKSUM 0x14177#define HMCD_OPCODE_REPLACE_IP 0x12178#define HMCD_OPCODE_RMV_TILL 0x15179#define HMCD_OPCODE_UDP_INSRT 0x16180#define HMCD_OPCODE_IP_INSRT 0x17181#define HMCD_OPCODE_CAPWAP_RMV 0x18182#define HMCD_OPCODE_CAPWAP_INSRT 0x18183#define HMCD_OPCODE_GEN_FIELD_REPLACE 0x19184185#define HMCD_LAST 0x00800000186187#define HMCD_DSCP_VALUES 64188189#define HMCD_BASIC_SIZE 4190#define HMCD_PTR_SIZE 4191#define HMCD_PARAM_SIZE 4192#define HMCD_IPV4_ADDR_SIZE 4193#define HMCD_IPV6_ADDR_SIZE 0x10194#define HMCD_L4_HDR_SIZE 8195196#define HMCD_CAPWAP_INSRT 0x00010000197#define HMCD_INSRT_UDP_LITE 0x00010000198#define HMCD_IP_ID_MASK 0x0000FFFF199#define HMCD_IP_SIZE_MASK 0x0000FF00200#define HMCD_IP_SIZE_SHIFT 8201#define HMCD_IP_LAST_PID_MASK 0x000000FF202#define HMCD_IP_OR_QOS 0x00010000203#define HMCD_IP_L4_CS_CALC 0x00040000204#define HMCD_IP_DF_MODE 0x00400000205206207#define HMCD_OC_SHIFT 24208209#define HMCD_RMV_OFFSET_SHIFT 0210#define HMCD_RMV_SIZE_SHIFT 8211212#define HMCD_INSRT_OFFSET_SHIFT 0213#define HMCD_INSRT_SIZE_SHIFT 8214215#define HMTD_CFG_TYPE 0x4000216#define HMTD_CFG_EXT_HMCT 0x0080217#define HMTD_CFG_PRS_AFTER_HM 0x0040218#define HMTD_CFG_NEXT_AD_EN 0x0020219220#define HMCD_RMV_L2_ETHERNET 0221#define HMCD_RMV_L2_STACKED_QTAGS 1222#define HMCD_RMV_L2_ETHERNET_AND_MPLS 2223#define HMCD_RMV_L2_MPLS 3224#define HMCD_RMV_L2_PPPOE 4225226#define HMCD_INSRT_L2_MPLS 0227#define HMCD_INSRT_N_UPDATE_L2_MPLS 1228#define HMCD_INSRT_L2_PPPOE 2229#define HMCD_INSRT_L2_SIZE_SHIFT 24230231#define HMCD_L2_MODE_SHIFT 16232233#define HMCD_VLAN_PRI_REP_MODE_SHIFT 16234#define HMCD_VLAN_PRI_UPDATE 0235#define HMCD_VLAN_PRI_UPDATE_DSCP_TO_VPRI 1236237#define HMCD_IPV4_UPDATE_TTL 0x00000001238#define HMCD_IPV4_UPDATE_TOS 0x00000002239#define HMCD_IPV4_UPDATE_DST 0x00000020240#define HMCD_IPV4_UPDATE_SRC 0x00000040241#define HMCD_IPV4_UPDATE_ID 0x00000080242#define HMCD_IPV4_UPDATE_TOS_SHIFT 8243244#define HMCD_IPV6_UPDATE_HL 0x00000001245#define HMCD_IPV6_UPDATE_TC 0x00000002246#define HMCD_IPV6_UPDATE_DST 0x00000040247#define HMCD_IPV6_UPDATE_SRC 0x00000080248#define HMCD_IPV6_UPDATE_TC_SHIFT 8249250#define HMCD_TCP_UDP_UPDATE_DST 0x00004000251#define HMCD_TCP_UDP_UPDATE_SRC 0x00008000252#define HMCD_TCP_UDP_UPDATE_SRC_SHIFT 16253254#define HMCD_IP_REPLACE_REPLACE_IPV4 0x00000000255#define HMCD_IP_REPLACE_REPLACE_IPV6 0x00010000256#define HMCD_IP_REPLACE_TTL_HL 0x00200000257#define HMCD_IP_REPLACE_ID 0x00400000258259#define HMCD_IP_REPLACE_L3HDRSIZE_SHIFT 24260261#define HMCD_GEN_FIELD_SIZE_SHIFT 16262#define HMCD_GEN_FIELD_SRC_OFF_SHIFT 8263#define HMCD_GEN_FIELD_DST_OFF_SHIFT 0264#define HMCD_GEN_FIELD_MASK_EN 0x00400000265266#define HMCD_GEN_FIELD_MASK_OFF_SHIFT 16267#define HMCD_GEN_FIELD_MASK_SHIFT 24268269#define DSCP_TO_VLAN_TABLE_SIZE 32270271#define MANIP_GET_HMCT_SIZE(h_Manip) (((t_FmPcdManip *)h_Manip)->tableSize)272#define MANIP_GET_DATA_SIZE(h_Manip) (((t_FmPcdManip *)h_Manip)->dataSize)273274#define MANIP_GET_HMCT_PTR(h_Manip) (((t_FmPcdManip *)h_Manip)->p_Hmct)275#define MANIP_GET_DATA_PTR(h_Manip) (((t_FmPcdManip *)h_Manip)->p_Data)276277#define MANIP_SET_HMCT_PTR(h_Manip, h_NewPtr) (((t_FmPcdManip *)h_Manip)->p_Hmct = h_NewPtr)278#define MANIP_SET_DATA_PTR(h_Manip, h_NewPtr) (((t_FmPcdManip *)h_Manip)->p_Data = h_NewPtr)279280#define MANIP_GET_HMTD_PTR(h_Manip) (((t_FmPcdManip *)h_Manip)->h_Ad)281#define MANIP_DONT_REPARSE(h_Manip) (((t_FmPcdManip *)h_Manip)->dontParseAfterManip)282#define MANIP_SET_PREV(h_Manip, h_Prev) (((t_FmPcdManip *)h_Manip)->h_PrevManip = h_Prev)283#define MANIP_GET_OWNERS(h_Manip) (((t_FmPcdManip *)h_Manip)->owner)284#define MANIP_GET_TYPE(h_Manip) (((t_FmPcdManip *)h_Manip)->type)285#define MANIP_SET_UNIFIED_TBL_PTR_INDICATION(h_Manip) (((t_FmPcdManip *)h_Manip)->unifiedTablePtr = TRUE)286#define MANIP_GET_MURAM(h_Manip) (((t_FmPcd *)((t_FmPcdManip *)h_Manip)->h_FmPcd)->h_FmMuram)287#define MANIP_FREE_HMTD(h_Manip) \288{if (((t_FmPcdManip *)h_Manip)->muramAllocate) \289FM_MURAM_FreeMem(((t_FmPcd *)((t_FmPcdManip *)h_Manip)->h_FmPcd)->h_FmMuram, ((t_FmPcdManip *)h_Manip)->h_Ad);\290else \291XX_Free(((t_FmPcdManip *)h_Manip)->h_Ad); \292((t_FmPcdManip *)h_Manip)->h_Ad = NULL; \293}294/* position regarding Manip SW structure */295#define MANIP_IS_FIRST(h_Manip) (!(((t_FmPcdManip *)h_Manip)->h_PrevManip))296#define MANIP_IS_CASCADED(h_Manip) (((t_FmPcdManip *)h_Manip)->cascaded)297#define MANIP_IS_UNIFIED(h_Manip) (!(((t_FmPcdManip *)h_Manip)->unifiedPosition == e_MANIP_UNIFIED_NONE))298#define MANIP_IS_UNIFIED_NON_FIRST(h_Manip) ((((t_FmPcdManip *)h_Manip)->unifiedPosition == e_MANIP_UNIFIED_MID) || \299(((t_FmPcdManip *)h_Manip)->unifiedPosition == e_MANIP_UNIFIED_LAST))300#define MANIP_IS_UNIFIED_NON_LAST(h_Manip) ((((t_FmPcdManip *)h_Manip)->unifiedPosition == e_MANIP_UNIFIED_FIRST) ||\301(((t_FmPcdManip *)h_Manip)->unifiedPosition == e_MANIP_UNIFIED_MID))302#define MANIP_IS_UNIFIED_FIRST(h_Manip) (((t_FmPcdManip *)h_Manip)->unifiedPosition == e_MANIP_UNIFIED_FIRST)303#define MANIP_IS_UNIFIED_LAST(h_Manip) (((t_FmPcdManip *)h_Manip)->unifiedPosition == e_MANIP_UNIFIED_LAST)304305#define MANIP_UPDATE_UNIFIED_POSITION(h_Manip) (((t_FmPcdManip *)h_Manip)->unifiedPosition = \306(((t_FmPcdManip *)h_Manip)->unifiedPosition == e_MANIP_UNIFIED_NONE)? \307e_MANIP_UNIFIED_LAST : e_MANIP_UNIFIED_MID)308309typedef enum e_ManipUnifiedPosition {310e_MANIP_UNIFIED_NONE = 0,311e_MANIP_UNIFIED_FIRST,312e_MANIP_UNIFIED_MID,313e_MANIP_UNIFIED_LAST314} e_ManipUnifiedPosition;315316typedef enum e_ManipInfo {317e_MANIP_HMTD,318e_MANIP_HMCT,319e_MANIP_HANDLER_TABLE_OWNER320}e_ManipInfo;321/***********************************************************************/322/* Memory map */323/***********************************************************************/324#if defined(__MWERKS__) && !defined(__GNUC__)325#pragma pack(push,1)326#endif /* defined(__MWERKS__) && ... */327328#if (defined(FM_CAPWAP_SUPPORT) && (DPAA_VERSION == 10))329typedef struct t_CapwapReasmPram {330volatile uint32_t mode;331volatile uint32_t autoLearnHashTblPtr;332volatile uint32_t intStatsTblPtr;333volatile uint32_t reasmFrmDescPoolTblPtr;334volatile uint32_t reasmFrmDescIndexPoolTblPtr;335volatile uint32_t timeOutTblPtr;336volatile uint32_t bufferPoolIdAndRisc1SetIndexes;337volatile uint32_t risc23SetIndexes;338volatile uint32_t risc4SetIndexesAndExtendedStatsTblPtr;339volatile uint32_t extendedStatsTblPtr;340volatile uint32_t expirationDelay;341volatile uint32_t totalProcessedFragCounter;342volatile uint32_t totalUnsuccessfulReasmFramesCounter;343volatile uint32_t totalDuplicatedFragCounter;344volatile uint32_t totalMalformdFragCounter;345volatile uint32_t totalTimeOutCounter;346volatile uint32_t totalSetBusyCounter;347volatile uint32_t totalRfdPoolBusyCounter;348volatile uint32_t totalDiscardedFragsCounter;349volatile uint32_t totalMoreThan16FramesCounter;350volatile uint32_t internalBufferBusy;351volatile uint32_t externalBufferBusy;352volatile uint32_t reserved1[4];353} t_CapwapReasmPram;354#endif /* (defined(FM_CAPWAP_SUPPORT) && (DPAA_VERSION == 10)) */355356typedef _Packed struct t_ReassTbl {357volatile uint16_t waysNumAndSetSize;358volatile uint16_t autoLearnHashKeyMask;359volatile uint32_t reassCommonPrmTblPtr;360volatile uint32_t liodnAlAndAutoLearnHashTblPtrHi;361volatile uint32_t autoLearnHashTblPtrLow;362volatile uint32_t liodnSlAndAutoLearnSetLockTblPtrHi;363volatile uint32_t autoLearnSetLockTblPtrLow;364volatile uint16_t minFragSize; /* Not relevant for CAPWAP*/365volatile uint16_t maxReassemblySize; /* Only relevant for CAPWAP*/366volatile uint32_t totalSuccessfullyReasmFramesCounter;367volatile uint32_t totalValidFragmentCounter;368volatile uint32_t totalProcessedFragCounter;369volatile uint32_t totalMalformdFragCounter;370volatile uint32_t totalSetBusyCounter;371volatile uint32_t totalDiscardedFragsCounter;372volatile uint32_t totalMoreThan16FramesCounter;373volatile uint32_t reserved2[2];374} _PackedType t_ReassTbl;375376typedef struct t_ReassCommonTbl {377volatile uint32_t timeoutModeAndFqid;378volatile uint32_t reassFrmDescIndexPoolTblPtr;379volatile uint32_t liodnAndReassFrmDescPoolPtrHi;380volatile uint32_t reassFrmDescPoolPtrLow;381volatile uint32_t timeOutTblPtr;382volatile uint32_t expirationDelay;383volatile uint32_t internalBufferManagement;384volatile uint32_t reserved2;385volatile uint32_t totalTimeOutCounter;386volatile uint32_t totalRfdPoolBusyCounter;387volatile uint32_t totalInternalBufferBusy;388volatile uint32_t totalExternalBufferBusy;389volatile uint32_t totalSgFragmentCounter;390volatile uint32_t totalDmaSemaphoreDepletionCounter;391volatile uint32_t totalNCSPCounter;392volatile uint32_t discardMask;393} t_ReassCommonTbl;394395typedef _Packed struct t_Hmtd {396volatile uint16_t cfg;397volatile uint8_t eliodnOffset;398volatile uint8_t extHmcdBasePtrHi;399volatile uint32_t hmcdBasePtr;400volatile uint16_t nextAdIdx;401volatile uint8_t res1;402volatile uint8_t opCode;403volatile uint32_t res2;404} _PackedType t_Hmtd;405406#if defined(__MWERKS__) && !defined(__GNUC__)407#pragma pack(pop)408#endif /* defined(__MWERKS__) && ... */409410411/***********************************************************************/412/* Driver's internal structures */413/***********************************************************************/414#if (defined(FM_CAPWAP_SUPPORT) && (DPAA_VERSION == 10))415typedef struct416{417t_Handle p_AutoLearnHashTbl;418t_Handle p_ReassmFrmDescrPoolTbl;419t_Handle p_ReassmFrmDescrIndxPoolTbl;420t_Handle p_TimeOutTbl;421uint16_t maxNumFramesInProcess;422uint8_t numOfTasks;423//uint8_t poolId;424uint8_t prOffset;425uint16_t dataOffset;426uint8_t sgBpid;427uint8_t hwPortId;428uint32_t fqidForTimeOutFrames;429uint32_t timeoutRoutineRequestTime;430uint32_t bitFor1Micro;431} t_CapwapFragParams;432#endif /* (defined(FM_CAPWAP_SUPPORT) && (DPAA_VERSION == 10)) */433434typedef struct435{436t_AdOfTypeContLookup *p_Frag;437#if (DPAA_VERSION == 10)438uint8_t scratchBpid;439#endif /* (DPAA_VERSION == 10) */440} t_FragParams;441442typedef struct t_ReassmParams443{444e_NetHeaderType hdr; /* Header selection */445t_ReassCommonTbl *p_ReassCommonTbl;446uintptr_t reassFrmDescrIndxPoolTblAddr;447uintptr_t reassFrmDescrPoolTblAddr;448uintptr_t timeOutTblAddr;449uintptr_t internalBufferPoolManagementIndexAddr;450uintptr_t internalBufferPoolAddr;451uint32_t maxNumFramesInProcess;452uint8_t sgBpid;453uint8_t dataMemId;454uint16_t dataLiodnOffset;455uint32_t fqidForTimeOutFrames;456e_FmPcdManipReassemTimeOutMode timeOutMode;457uint32_t timeoutThresholdForReassmProcess;458union {459struct {460t_Handle h_Ipv4Ad;461t_Handle h_Ipv6Ad;462bool ipv6Assigned;463t_ReassTbl *p_Ipv4ReassTbl;464t_ReassTbl *p_Ipv6ReassTbl;465uintptr_t ipv4AutoLearnHashTblAddr;466uintptr_t ipv6AutoLearnHashTblAddr;467uintptr_t ipv4AutoLearnSetLockTblAddr;468uintptr_t ipv6AutoLearnSetLockTblAddr;469uint16_t minFragSize[2];470e_FmPcdManipReassemWaysNumber numOfFramesPerHashEntry[2];471uint8_t relativeSchemeId[2];472t_Handle h_Ipv4Scheme;473t_Handle h_Ipv6Scheme;474uint32_t nonConsistentSpFqid;475} ip;476struct {477t_Handle h_Ad;478t_ReassTbl *p_ReassTbl;479uintptr_t autoLearnHashTblAddr;480uintptr_t autoLearnSetLockTblAddr;481uint16_t maxRessembledsSize;482e_FmPcdManipReassemWaysNumber numOfFramesPerHashEntry;483uint8_t relativeSchemeId;484t_Handle h_Scheme;485} capwap;486};487} t_ReassmParams;488489typedef struct{490e_FmPcdManipType type;491t_FmPcdManipParams manipParams;492bool muramAllocate;493t_Handle h_Ad;494uint32_t opcode;495bool rmv;496bool insrt;497t_Handle h_NextManip;498t_Handle h_PrevManip;499e_FmPcdManipType nextManipType;500/* HdrManip parameters*/501uint8_t *p_Hmct;502uint8_t *p_Data;503bool dontParseAfterManip;504bool fieldUpdate;505bool custom;506uint16_t tableSize;507uint8_t dataSize;508bool cascaded;509e_ManipUnifiedPosition unifiedPosition;510/* end HdrManip */511uint8_t *p_Template;512uint16_t owner;513uint32_t updateParams;514uint32_t shadowUpdateParams;515bool frag;516bool reassm;517uint16_t sizeForFragmentation;518#if (defined(FM_CAPWAP_SUPPORT) && (DPAA_VERSION == 10))519t_Handle h_Frag;520t_CapwapFragParams capwapFragParams;521#endif /* (defined(FM_CAPWAP_SUPPORT) && (DPAA_VERSION == 10)) */522union {523t_ReassmParams reassmParams;524t_FragParams fragParams;525};526uint8_t icOffset;527uint16_t ownerTmp;528bool cnia;529t_Handle p_StatsTbl;530t_Handle h_FmPcd;531t_List nodesLst;532t_Handle h_Spinlock;533} t_FmPcdManip;534535typedef struct t_FmPcdCcSavedManipParams536{537union538{539struct540{541uint16_t dataOffset;542//uint8_t poolId;543}capwapParams;544struct545{546uint16_t dataOffset;547uint8_t poolId;548}ipParams;549};550551} t_FmPcdCcSavedManipParams;552553554#endif /* __FM_MANIP_H */555556557