diff options
Diffstat (limited to 'sys/contrib/ncsw/Peripherals/FM/Pcd/fm_manip.h')
-rw-r--r-- | sys/contrib/ncsw/Peripherals/FM/Pcd/fm_manip.h | 310 |
1 files changed, 310 insertions, 0 deletions
diff --git a/sys/contrib/ncsw/Peripherals/FM/Pcd/fm_manip.h b/sys/contrib/ncsw/Peripherals/FM/Pcd/fm_manip.h new file mode 100644 index 0000000..dbe9c1d --- /dev/null +++ b/sys/contrib/ncsw/Peripherals/FM/Pcd/fm_manip.h @@ -0,0 +1,310 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * 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 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_CAPWAP_FRAGMENTATION 0x33 +#define HMAN_OC_IPSEC 0x34 +#define HMAN_OC_IP_FRAGMENTATION 0x74 +#define HMAN_OC_IP_REASSEMBLY 0xB4 +#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_RMV_HDR 0x80000000 +#define HMAN_INSRT_INT_FRM_HDR 0x40000000 + +#define UDP_UDPHECKSUM_FIELD_OFFSET_FROM_UDP 6 +#define UDP_UDPCHECKSUM_FIELD_SIZE 2 + +#define IP_DSCECN_FIELD_OFFSET_FROM_IP 1 +#define IP_TOTALLENGTH_FIELD_OFFSET_FROM_IP 2 +#define IP_HDRCHECKSUM_FIELD_OFFSET_FROM_IP 10 +#define VLAN_TAG_FIELD_OFFSET_FROM_ETH 12 +#define IP_ID_FIELD_OFFSET_FROM_IP 4 + +#define FM_PCD_MANIP_CAPWAP_REASM_TABLE_SIZE 80 +#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 + +#define FM_PCD_MANIP_IPSEC_CALC_UDP_LENGTH 0x01000000 +#define FM_PCD_MANIP_IPSEC_CNIA 0x20000000 + +#define e_FM_MANIP_CAPWAP_INDX 0 + +#ifdef UNDER_CONSTRUCTION_FRAG_REASSEMBLY +#define FM_PCD_MANIP_IP_REASM_TABLE_SIZE 0x40 +#define FM_PCD_MANIP_IP_REASM_TABLE_ALIGN 8 + +#define FM_PCD_MANIP_IP_REASM_COMMON_PARAM_TABLE_SIZE 64 +#define FM_PCD_MANIP_IP_REASM_COMMON_PARAM_TABLE_ALIGN 8 +#define FM_PCD_MANIP_IP_REASM_TIME_OUT_BETWEEN_FRAMES 0x80000000 +#define e_FM_MANIP_IP_INDX 1 +#define FM_PCD_MANIP_IP_REASM_LIODN_MASK 0x000003F0 +#define FM_PCD_MANIP_IP_REASM_LIODN_SHIFT 56 +#define FM_PCD_MANIP_IP_REASM_ELIODN_MASK 0x0000000F +#define FM_PCD_MANIP_IP_REASM_ELIODN_SHIFT 44 + +#endif /* UNDER_CONSTRUCTION_FRAG_REASSEMBLY */ + + +/***********************************************************************/ +/* Memory map */ +/***********************************************************************/ +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(push,1) +#endif /* defined(__MWERKS__) && ... */ + +typedef _Packed struct { + 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 uint8_t res[16]; +} _PackedType t_CapwapReasmPram; + +#ifdef UNDER_CONSTRUCTION_FRAG_REASSEMBLY +typedef _Packed struct t_IpReasmPram{ + volatile uint16_t waysNumAndSetSize; + volatile uint16_t autoLearnHashKeyMask; + volatile uint32_t ipReassCommonPrmTblPtr; + volatile uint32_t liodnAlAndAutoLearnHashTblPtrHi; + volatile uint32_t autoLearnHashTblPtrLow; + volatile uint32_t liodnSlAndAutoLearnSetLockTblPtrHi; + volatile uint32_t autoLearnSetLockTblPtrLow; + volatile uint16_t minFragSize; + volatile uint16_t reserved1; + 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_IpReasmPram; + +typedef _Packed struct t_IpReasmCommonTbl{ + 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 reseervd1; + volatile uint32_t reseervd2; + volatile uint32_t totalTimeOutCounter; + volatile uint32_t totalRfdPoolBusyCounter; + volatile uint32_t totalInternalBufferBusy; + volatile uint32_t totalExternalBufferBusy; + volatile uint32_t reserved3[4]; +} _PackedType t_IpReasmCommonTbl; + +#endif /*UNDER_CONSTRUCTION_FRAG_REASSEMBLY*/ + +#define MEM_MAP_END +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(pop) +#endif /* defined(__MWERKS__) && ... */ + + +/***********************************************************************/ +/* Driver's internal structures */ +/***********************************************************************/ + +typedef struct +{ + t_Handle p_AutoLearnHashTbl; + t_Handle p_ReassmFrmDescrPoolTbl; + t_Handle p_ReassmFrmDescrIndxPoolTbl; + t_Handle p_TimeOutTbl; + uint8_t maxNumFramesInProcess; + uint8_t numOfTasks; + uint8_t poolId; + uint8_t prOffset; + uint16_t dataOffset; + uint8_t poolIndx; + uint8_t hwPortId; + uint32_t fqidForTimeOutFrames; + uint32_t timeoutRoutineRequestTime; + uint32_t bitFor1Micro; +} t_FragParams; + +#ifdef UNDER_CONSTRUCTION_FRAG_REASSEMBLY +typedef struct +{ + t_Handle h_Frag; + t_Handle h_FragId; + uint8_t poolId; + uint16_t dataOffset; + uint8_t poolIndx; +}t_IpFragParams; + +typedef struct t_IpReassmParams +{ + t_Handle h_Ipv4Ad; + t_Handle h_Ipv6Ad; + e_NetHeaderType hdr; /**< Header selection */ + uint32_t fqidForTimeOutFrames; + uint16_t dataOffset; + t_Handle h_IpReassCommonParamsTbl; + t_Handle h_Ipv4ReassParamsTblPtr; + t_Handle h_Ipv6ReassParamsTblPtr; + t_Handle h_Ipv4AutoLearnHashTbl; + t_Handle h_Ipv6AutoLearnHashTbl; + t_Handle h_Ipv4AutoLearnSetLockTblPtr; + t_Handle h_Ipv6AutoLearnSetLockTblPtr; + t_Handle h_ReassmFrmDescrIndxPoolTbl; + t_Handle h_ReassmFrmDescrPoolTbl; + t_Handle h_TimeOutTbl; + uint32_t maxNumFramesInProcess; + uint32_t liodnOffset; + uint32_t minFragSize; + uint8_t dataMemId; /**< Memory partition ID for data buffers */ + uint32_t bpid; + e_FmPcdManipReassemTimeOutMode timeOutMode; + e_FmPcdManipReassemWaysNumber numOfFramesPerHashEntry; + uint32_t timeoutThresholdForReassmProcess; + +}t_IpReassmParams; + +typedef struct t_IpCommonReassmParams +{ + uint8_t numOfTasks; + uint32_t bitFor1Micro; + t_Handle h_ReassmFrmDescrPoolTbl; + t_Handle h_ReassmFrmDescrIndxPoolTbl; + t_Handle h_TimeOutTbl; +}t_IpCommonReassmParams; + +#endif /*UNDER_CONSTRUCTION_FRAG_REASSEMBLY*/ + +typedef struct{ + bool muramAllocate; + t_Handle h_Ad; + uint32_t type; + bool rmv; + bool insrt; + uint8_t *p_Template; + t_Handle h_Frag; + bool frag; + bool reassm; + uint16_t sizeForFragmentation; + uint8_t owner; + uint32_t updateParams; + uint32_t shadowUpdateParams; + t_FragParams fragParams; +#ifdef UNDER_CONSTRUCTION_FRAG_REASSEMBLY + t_IpReassmParams ipReassmParams; + t_IpFragParams ipFragParams; +#endif /* UNDER_CONSTRUCTION_FRAG_REASSEMBLY */ + uint8_t icOffset; + uint16_t ownerTmp; + bool cnia; + t_Handle p_StatsTbl; + t_Handle h_FmPcd; +} t_FmPcdManip; + +typedef struct t_FmPcdCcSavedManipParams +{ + union + { + struct + { + uint16_t dataOffset; + uint8_t poolId; + }capwapParams; +#ifdef UNDER_CONSTRUCTION_FRAG_REASSEMBLY + struct + { + uint16_t dataOffset; + uint8_t poolId; + }ipParams; +#endif /*UNDER_CONSTRUCTION_FRAG_REASSEMBLY*/ + }; + +} t_FmPcdCcSavedManipParams; + + +#endif /* __FM_MANIP_H */ |