d02ef127ad2879731e9cb75424866e64b2405e54
[keystone-rtos/netapi.git] / ti / runtime / netapi / netapi_tune.h
1 /**************************************************************
2  * FILE: netapi_tune.h
3  * Purpose:  hold tunable parameters (build time)
4  **************************************************************
5  * @file netapi_tune.h
6  * 
7  * @brief DESCRIPTION:  Tuneable (compile time) parameters  for user space transport
8  *               library
9  * 
10  * REVISION HISTORY:  rev 0.0.1 
11  *
12  *  Copyright (c) Texas Instruments Incorporated 2010-2011
13  * 
14  *  Redistribution and use in source and binary forms, with or without 
15  *  modification, are permitted provided that the following conditions 
16  *  are met:
17  *
18  *    Redistributions of source code must retain the above copyright 
19  *    notice, this list of conditions and the following disclaimer.
20  *
21  *    Redistributions in binary form must reproduce the above copyright
22  *    notice, this list of conditions and the following disclaimer in the 
23  *    documentation and/or other materials provided with the   
24  *    distribution.
25  *
26  *    Neither the name of Texas Instruments Incorporated nor the names of
27  *    its contributors may be used to endorse or promote products derived
28  *    from this software without specific prior written permission.
29  *
30  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
31  *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
32  *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
33  *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
34  *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
35  *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
36  *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
37  *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
38  *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
39  *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
40  *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
42  ****************************************************/
43 #ifndef __NETAPI_TUNE__H
44 #define __NETAPI_TUNE__H
47 /**
48  *   @defgroup NETAPI_TUNE NETAPI tunable parameters
49  */
50 /**  @ingroup NETAPI_TUNE */
52 /**
53 *  @def  NETAPI_ENABLE_SECURITY
54 * (0) define this to enable securtiy.  Note: libraries being use need to be built with SA enabled also! 
55 */
56 #define NETAPI_ENABLE_SECURITY 
59 /**
60 *  @def  NETAPI_USE_DDR
61 * (0) define this to enable use of cached DDR for buffers and descriptors 
62 *     do not define if USE_MSMC defined below
63 */
64 #define NETAPI_USE_DDR
65 #ifdef NETAPI_USE_DDR
66 #define NETAPI_TUNE_USE_CACHE_OPS   //for appleton, no cache coherency with netcp & ARM 
67 #endif
68 /**
69 *  @def  NETAPI_USE_MSMC
70 * (0) define this to enable use of un-cached MSMC for buffers and descriptors 
71 *     do not define if USE_DDR defined above 
72 */
73 //#define NETAPI_USE_MSMC
75 #ifdef NETAPI_USE_MSMC
76 #ifdef NETAPI_USE_DDR
77 #error "only define NETAPO_USE_MSMC or NETAPI_USE_DDR"
78 #endif
79 #endif
81 /**
82  * @def TUNE_NETAPI_NUM_CORES
83  * (0) How many cores (theads) 
84  */
85 #define TUNE_NETAPI_NUM_CORES 1
87 /**
88  *  @def TUNE_NETAPI_PERM_MEM_SZ
89  * (1) how much contiguous memory to grab. This is used for
90  * descriptors and buffers in the case of uncached configuration only.  
91  * descriptors and buffers.  Can't be bigger than  msmc if
92  * MSMC memory is being using uncached .  This can be set at netapi_init via NETAPI_CFG_T
93  */
94 #define TUNE_NETAPI_PERM_MEM_SZ   (2*1024*1024) 
96 /**
97  * @def TUNE_NETAPI_MAX_PKTIO
98  * (2) how many GLOBAL pkt io channels
99  */
100 #define TUNE_NETAPI_MAX_PKTIO 16
102 //(2a) default TX channel name
103 //(2b) default RX channel name
106 /**
107  * @def TUNE_NETAPI_DEFAULT_BUFFER_SIZE
108  * (3) size of netapi default pktlib heap buffers
109 *  This can be set at netapi_init() 
110  */
111 #define TUNE_NETAPI_DEFAULT_BUFFER_SIZE 1600  
113 //(3a) default pkt heap name
115 /**
116  * @def TUNE_NETAPI_DEFAULT_NUM_BUFFERS
117  *(4) number of netapi default pktlib heap buffers (and assoc descriptors)
118  * this can be set at netapi_init()
119  */
120 #define TUNE_NETAPI_DEFAULT_NUM_BUFFERS  200 
122 /*
123  * @def TUNE_NETAPI_DEFAULT_NUM_SOLO_DESCRIPTORS
124  * (5) number of netapi default pkt lib heap solo descriptors
125  * this can be set at netapi_init
126  */
127 #define TUNE_NETAPI_DEFAULT_NUM_SOLO_DESCRIPTORS  100 
129 /**
130  * @def NETAPI_INCLUDE_SCHED
131  * (6) define this to include the scheduler component
132  */
133 #define NETAPI_INCLUDE_SCHED 
135 //(7) # of QM descriptors (total)
136 //     this can be set set in netapi_init
137 // MUST BE POWER OF 2
138 #define TUNE_NETAPI_QM_CONFIG_MAX_DESC_NUM  2048 /* 16384 is abs max */
140 //(8) Region info
141 #define TUNE_NETAPI_NUM_LOCAL_DESC  64 
143 /* at least as big as DEFAULT_NUM_SOLO+DEFAULT_NUM_BUFFERS but also a power of 2*/
144 #define TUNE_NETAPI_NUM_GLOBAL_DESC  1024 
146 #define TUNE_NETAPI_DESC_SIZE  128 //don't change!!
147 #ifdef NETAPI_USE_DDR
148 #define TUNE_NETAPI_QM_START_INDEX  0x2000  //WARNING:  must reflect what kernel is using for their region, see device tree blob
149 #define TUNE_NETAPI_QM_GLOBAL_REGION 18  //WARNING: must reflect what kernel is using for their region, see device tree blob
150 #else //use msmc..
151 #define TUNE_NETAPI_QM_START_INDEX  0  //ok to use 0 since kernel is somewhere higher
152 #define TUNE_NETAPI_QM_GLOBAL_REGION 0  //ok to to use 0 since msmc addr < ddr addr 
153 #endif
154 //(9) Define to 1 for DEBUG MODE [where NETCP just loops pkts that tx back to rx]
155 #define TUNE_NETAPI_NWAL_ENABLE_PASS_LOOPBACK 0  /*1*/
158 //(10) NWAL (internal) config. Should not have to change
159 #define TUNE_NETAPI_CONFIG_MAX_PA_TO_SA_DESC       32
160 #define TUNE_NETAPI_CONFIG_MAX_SA_TO_PA_DESC       32
162 #define TUNE_NETAPI_MAX_NUM_MAC                2    //2 'logical' mac addresses
163 #define TUNE_NETAPI_MAX_NUM_IP                 32    //2 ip addresses 
164 #define TUNE_NETAPI_MAX_NUM_PORTS_PER_CORE     4    //udp/tcp ports -> for lUT2 )      
165 #define TUNE_NETAPI_MAX_NUM_PORTS     (TUNE_NETAPI_MAX_NUM_PORTS_PER_CORE * (TUNE_NETAPI_NUM_CORES)) 
167 #ifdef NETAPI_ENABLE_SECURITY
168 #define TUNE_NETAPI_MAX_NUM_IPSEC_CHANNELS     32
169 #else
170 #define TUNE_NETAPI_MAX_NUM_IPSEC_CHANNELS     0
171 #endif
172 #define TUNE_NETAPI_MAX_NUM_L2_L3_HDRS         3
173 #define TUNE_NETAPI_MAX_NUM_TRANS              (TUNE_NETAPI_MAX_NUM_MAC + TUNE_NETAPI_MAX_NUM_IP + TUNE_NETAPI_MAX_NUM_PORTS + TUNE_NETAPI_MAX_NUM_IPSEC_CHANNELS)
175 //(11)  PA control buffer pool (internal)
176 #define TUNE_NETAPI_CONFIG_MAX_CTL_RXTX_BUF_SIZE 384
177 #define TUNE_NETAPI_CONFIG_NUM_CTL_RX_BUF  16 
178 #define TUNE_NETAPI_CONFIG_NUM_CTL_TX_BUF  16 
180 //(12) PKTIO RECV BURST SIZE
181 #define TUNE_NETAPI_MAX_BURST_RCV 32   //max #ok pkts to recv in one poll
183 //(13) netcp interfaces
184 #define TUNE_NETAPI_MAX_IP 4  //4 ip's can be attached to interfaces
185 #define TUNE_NETAPI_MAX_INTERFACES 2  //2 interfaces
187 //(14) timers
188 #define TUNE_NETAPI_NUM_TIMER_CELLS  128   //# of hash bins in a timer group
189 #define TUNE_NETAPI_NUM_GLOBAL_TIMERS  4    //# global timer blocks
191 //(15) heaps
192 #define TUNE_NETAPI_MAX_HEAPS  4   //max # of heaps one instance can create
194 //(16) classifiers
195 #define TUNE_NETAPI_MAX_CLASSIFIERS 16
197 //(17) FLows
198 #define TUNE_NETAPI_MAX_BUF_POOLS_IN_FLOW  4  //!!do not change!!
199 #define TUNE_NETAPI_MAX_FLOWS  4   //app defined flows
201 //(18) SAs & RX policies
202 #define TUNE_NETAPI_MAX_SA 8   //rx&tx combined (so MAX_SA/4 tunnels typically)
203 #define TUNE_NETAPI_MAX_POLICY 8  //rx policies
205 #endif