blob: c9fe63d1ffb4a6ffef29098ddcc87b60c9828f33 [file] [log] [blame]
/* c_eip207_global.h
*
* Default configuration parameters
* for the EIP-207 Global Control Driver Library
*
*/
/* -------------------------------------------------------------------------- */
/* */
/* Module : ddk197 */
/* Version : 5.6.1 */
/* Configuration : DDK-197-GPL */
/* */
/* Date : 2022-Dec-16 */
/* */
/* Copyright (c) 2008-2022 by Rambus, Inc. and/or its subsidiaries. */
/* */
/* This program is free software: you can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
/* the Free Software Foundation, either version 2 of the License, or */
/* any later version. */
/* */
/* This program is distributed in the hope that it will be useful, */
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
/* GNU General Public License for more details. */
/* */
/* You should have received a copy of the GNU General Public License */
/* along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* -------------------------------------------------------------------------- */
#ifndef C_EIP207_GLOBAL_H_
#define C_EIP207_GLOBAL_H_
/*----------------------------------------------------------------------------
* This module uses (requires) the following interface(s):
*/
// Top-level configuration
#include "cs_eip207_global.h"
/*----------------------------------------------------------------------------
* Definitions and macros
*/
// EIP-207 supported HW version
#define EIP207_GLOBAL_MAJOR_VERSION 1
#define EIP207_GLOBAL_MINOR_VERSION 0
#define EIP207_GLOBAL_PATCH_LEVEL 0
// Maximum number of Classification Engine (EIP-207c) instances
//#define EIP207_GLOBAL_MAX_NOF_CE_TO_USE 1
// Number of sets of the FRC/TRC/ARC4C HW interfaces (p+1)
// Maximum number of cache interfaces that can be used
// Should not exceed the number of cache sets physically available
#ifndef EIP207_GLOBAL_MAX_NOF_CACHE_SETS_TO_USE
#define EIP207_GLOBAL_MAX_NOF_CACHE_SETS_TO_USE 1
#endif // EIP207_GLOBAL_MAX_NOF_CACHE_SETS_TO_USE
// Enable Context Data Endianness Conversion by the Processing Engine hardware
// Swap bytes within each 32 bit word
//#define EIP207_GLOBAL_BYTE_SWAP_FLOW_DATA
// Enable Transform Data Endianness Conversion by the Processing Engine hardware
// Swap bytes within each 32 bit word
//#define EIP207_GLOBAL_BYTE_SWAP_TRANSFORM_DATA
// Enable ARC4 Context Data Endianness Conversion by the PE hardware
// Swap bytes within each 32 bit word
//#define EIP207_GLOBAL_BYTE_SWAP_ARC4_DATA
// Define to disable the FRC
//#define EIP207_GLOBAL_FRC_DISABLE
// Size of the Flow Record Cache (data RAM) in 32-bit words
#ifndef EIP207_FRC_RAM_WORD_COUNT
#define EIP207_FRC_RAM_WORD_COUNT 512
#endif // EIP207_FRC_RAM_WORD_COUNT
// Size of the Flow Record Cache (administration RAM) in 32-bit words
//#define EIP207_FRC_ADMIN_RAM_WORD_COUNT 8192
// Size of the Transform Record Cache (data RAM) in 32-bit words
#ifndef EIP207_TRC_RAM_WORD_COUNT
#define EIP207_TRC_RAM_WORD_COUNT 1024
#endif // EIP207_TRC_RAM_WORD_COUNT
// Size of the Transform Record Cache (administration RAM) in 32-bit words
//#define EIP207_TRC_ADMIN_RAM_WORD_COUNT 8192
// Size of the ARC4 Record Cache (data RAM) in 32-bit words
// Note: ARC4RC is combined with TRC
#ifndef EIP207_ARC4RC_RAM_WORD_COUNT
#define EIP207_ARC4RC_RAM_WORD_COUNT EIP207_TRC_RAM_WORD_COUNT
#endif // EIP207_ARC4RC_RAM_WORD_COUNT
// Size of the ARC4 Record Cache (administration RAM) in 32-bit words
//#define EIP207_ARC4RC_ADMIN_RAM_WORD_COUNT 8192
//#define EIP207_FLUE_HAVE_VIRTUALIZATION
// Number of interfaces for virtualization.
#ifndef EIP207_FLUE_MAX_NOF_INTERFACES_TO_USE
#define EIP207_FLUE_MAX_NOF_INTERFACES_TO_USE 15
#endif
// Main hash table size in entries (one entry is one 32-bit word)
// Table size = 2^(EIP207_FLUEC_TABLE_SIZE+3)
#ifndef EIP207_FLUEC_TABLE_SIZE
#define EIP207_FLUEC_TABLE_SIZE 0
#endif // EIP207_FLUEC_TABLE_SIZE
// Group size in entries (one entry is one 32-bit word)
// Group size = 2^EIP207_FLUEC_GROUP_SIZE
#ifndef EIP207_FLUEC_GROUP_SIZE
#define EIP207_FLUEC_GROUP_SIZE 1
#endif // EIP207_FLUEC_GROUP_SIZE
// Size of the FLUE Cache in 32-bit words
// FLUEC RAM = Table size * (Group size * 6 + 1)
#ifndef EIP207_FLUEC_RAM_WORD_COUNT
#define EIP207_FLUEC_RAM_WORD_COUNT 128
#endif // EIP207_FLUEC_RAM_WORD_COUNT
// Input Pull-Up Engine Program RAM size (in 32-bit words), 8KB
#ifndef EIP207_IPUE_PROG_RAM_WORD_COUNT
#define EIP207_IPUE_PROG_RAM_WORD_COUNT 2048
#endif // EIP207_IPUE_PROG_RAM_WORD_COUNT
// Input Flow Post-Processor Engine Program RAM size (in 32-bit words), 8KB
#ifndef EIP207_IFPP_PROG_RAM_WORD_COUNT
#define EIP207_IFPP_PROG_RAM_WORD_COUNT 2048
#endif // EIP207_IFPP_PROG_RAM_WORD_COUNT
// ICE Scratchpad RAM size in 128-byte blocks (1KB)
#ifndef EIP207_ICE_SCRATCH_RAM_128B_BLOCK_COUNT
#define EIP207_ICE_SCRATCH_RAM_128B_BLOCK_COUNT 8
#endif // EIP207_ICE_SCRATCH_RAM_128B_BLOCK_COUNT
// Output Pull-Up Engine Program RAM size (in 32-bit words), 8KB
#ifndef EIP207_OPUE_PROG_RAM_WORD_COUNT
#define EIP207_OPUE_PROG_RAM_WORD_COUNT 2048
#endif // EIP207_OPUE_PROG_RAM_WORD_COUNT
// Output Flow Post-Processor Engine Program RAM size (in 32-bit words), 8KB
#ifndef EIP207_OFPP_PROG_RAM_WORD_COUNT
#define EIP207_OFPP_PROG_RAM_WORD_COUNT 2048
#endif // EIP207_OFPP_PROG_RAM_WORD_COUNT
// OCE Scratchpad RAM size in 128-byte blocks (1KB)
#ifndef EIP207_OCE_SCRATCH_RAM_128B_BLOCK_COUNT
#define EIP207_OCE_SCRATCH_RAM_128B_BLOCK_COUNT 8
#endif // EIP207_OCE_SCRATCH_RAM_128B_BLOCK_COUNT
// Classification engine timer overflow bit
#ifndef EIP207_ICE_SCRATCH_TIMER_OFLO_BIT
#define EIP207_ICE_SCRATCH_TIMER_OFLO_BIT 31
#endif // EIP207_ICE_SCRATCH_TIMER_OFLO_BIT
// Classification engine timer overflow bit
#ifndef EIP207_OCE_SCRATCH_TIMER_OFLO_BIT
#define EIP207_OCE_SCRATCH_TIMER_OFLO_BIT 31
#endif // EIP207_OCE_SCRATCH_TIMER_OFLO_BIT
// Enable firmware version check after the download
//#define EIP207_GLOBAL_FIRMWARE_DOWNLOAD_VERSION_CHECK
#ifdef EIP207_GLOBAL_FIRMWARE_DOWNLOAD_VERSION_CHECK
#ifndef EIP207_FW_VER_CHECK_MAX_NOF_READ_ATTEMPTS
#define EIP207_FW_VER_CHECK_MAX_NOF_READ_ATTEMPTS 100
#endif // EIP207_FW_VER_CHECK_MAX_NOF_READ_ATTEMPTS
#endif // EIP207_GLOBAL_FIRMWARE_DOWNLOAD_VERSION_CHECK
// Disable clustered write operations, e.g. every write operation to
// an EIP-207 register will be followed by one read operation to
// a pre-defined EIP-207 register
//#define EIP207_CLUSTERED_WRITES_DISABLE
// Maximum number of read attempts for a 64-bit counter
#ifndef EIP207_VALUE_64BIT_MAX_NOF_READ_ATTEMPTS
#define EIP207_VALUE_64BIT_MAX_NOF_READ_ATTEMPTS 2
#endif
// Maximum number of hash tables supported by the EIP-207 FLUE
// if the CS_OPTIONS reads 0 for the number of lookup tables
#ifndef EIP207_GLOBAL_MAX_HW_NOF_FLOW_HASH_TABLES
#define EIP207_GLOBAL_MAX_HW_NOF_FLOW_HASH_TABLES 17
#endif
// Flow LookUp Engine (FLUE) lookup mode
// 0 - legacy single-entry mode
// 1 - 3-entry bucket-based mode
#ifndef EIP207_GLOBAL_FLUE_LOOKUP_MODE
// Default is legacy lookup mode
#define EIP207_GLOBAL_FLUE_LOOKUP_MODE 0
#endif
// Strict argument checking for the input parameters
// If required then define this parameter in the top-level configuration
//#define EIP207_GLOBAL_STRICT_ARGS
// Finite State Machine that can be used for verifying that the Driver Library
// API is called in a correct order
//#define EIP207_GLOBAL_DEBUG_FSM
#endif /* C_EIP207_GLOBAL_H_ */
/* end of file c_eip207_global.h */