1 /*******************************************************************************
2 ################################################################################
3 # Copyright (c) [2017-2019] [Radisys] #
5 # Licensed under the Apache License, Version 2.0 (the "License"); #
6 # you may not use this file except in compliance with the License. #
7 # You may obtain a copy of the License at #
9 # http://www.apache.org/licenses/LICENSE-2.0 #
11 # Unless required by applicable law or agreed to in writing, software #
12 # distributed under the License is distributed on an "AS IS" BASIS, #
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
14 # See the License for the specific language governing permissions and #
15 # limitations under the License. #
16 ################################################################################
17 *******************************************************************************/
19 /********************************************************************20**
21 Name: MTSS -- implementation specific definitions
25 Desc: Various macro definitions demanded by systems services.
26 The contents of these are for the MTSS implementation.
30 *********************************************************************21*/
37 /* --- interface to SS --- */
40 #define SS_PROC_ID PID_STK(1)
43 /* mt028.201: addition: multiple procs support related changes */
44 #ifdef SS_MULTIPLE_PROCS
45 #define SS_MAX_PROCS 100 /* max entries for proc list */
46 #endif /* SS_MULTIPLE_PROCS */
48 #define SS_MAX_ENT 255
51 /* mt028.201: modification: multiple procs support related changes */
52 #ifndef SS_MULTIPLE_PROCS
53 #define SS_MAX_TTSKS 100
55 #ifndef SS_MULTICORE_SUPPORT
56 #define SS_MAX_STSKS 7
58 /* mt001.301 : Additions */
59 #ifdef SPLIT_RLC_DL_TASK
61 #define SS_MAX_STSKS 4
63 #define SS_MAX_STSKS 5
67 #define SS_MAX_STSKS 8
69 #define SS_MAX_STSKS 7
72 #endif /* SS_MULTICORE_SUPPORT */
74 #else /* SS_MULTIPLE_PROCS */
75 #define SS_MAX_TTSKS 1000
76 #define SS_MAX_STSKS 7
77 #endif /* SS_MULTIPLE_PROCS */
79 #ifdef SS_DRVR_SUPPORT
80 #define SS_MAX_DRVRTSKS 70
84 /* mt0012.21 : Addition */
85 #define SS_MAX_RTRTSKS 255
90 #define SS_MAX_TMRS 45
93 /* mt022.201 - Modification for shared memory relay and memcal regions */
94 #ifdef SS_MULTICORE_SUPPORT
95 #define SS_MAX_REGS SS_MAX_STSKS
100 #ifdef CMM_MAX_BKT_ENT
101 #define SS_MAX_POOLS_PER_REG CMM_MAX_BKT_ENT
103 #define SS_MAX_POOLS_PER_REG 5
105 /* mt001.301 : Additions */
110 #define SS_TMR_HRTBT 0x00
111 #define EVTSSHRTBTREQ 0x00
112 #define EVTSSHRTBTRSP 0x01
113 #define SS_LOOSE_COUPLING 0x00
114 #endif /* SS_WATCHDOG */
117 #define SS_STSKTBL_LOCK SS_LOCK_MUTEX
118 #define SS_STSKENTRY_LOCK SS_LOCK_MUTEX
119 #define SS_TMRTBL_LOCK SS_LOCK_MUTEX
120 #define SS_DMNDQ_LOCK SS_LOCK_MUTEX
121 #define SS_DRVRENTRY_LOCK SS_LOCK_MUTEX
122 #define SS_RTRENTRY_LOCK SS_LOCK_MUTEX
124 #ifdef TENB_T2K3K_SPECIFIC_CHANGES
125 #define MIPS_FILE "/sys/devices/virtual/mmonitor/mmonitor/mips_stat"
126 #define GET_CPU_MAX(x, y) ((x) >= (y) ? (x) : (y))
127 #define MIPS_STRING_LEN 24
131 /* types needed by common SSI code */
132 #define SsSemaId sem_t
133 #define SLockId pthread_mutex_t
136 /* calls needed by common SSI code */
137 #ifndef TENB_RTLIN_CHANGES
138 #define SInitLock(l, t) pthread_mutex_init(l, NULL)
140 /*uint32_t gt[128]; */
141 /*#define SLock(l) (((gt[0x000000FF
142 * &((uint32_t)pthread_self())]=MacGetTick())&&pthread_mutex_lock(l)&&MLogTask(30340, RESOURCE_LINL2, gt[0x000000FF
143 * &((uint32_t)pthread_self())], MacGetTick()))?0:0)*/
144 #define SLock(l) pthread_mutex_lock(l)
145 #define SUnlock(l) pthread_mutex_unlock(l)
146 #define SDestroyLock(l) pthread_mutex_destroy(l)
148 #define ssInitSema(s, c) sem_init(s, 0, c)
149 #define ssWaitSema(s) sem_wait(s)
150 #define ssPostSema(s) sem_post(s)
151 #define ssDestroySema(s) sem_destroy(s)
153 #define SS_CHECK_CUR_STSK(t) (pthread_equal(pthread_self(), \
155 /* mt013.21: Addition */
156 #define SInitSemaphore(s, c) sem_init(s, 0, c)
157 #define SWaitSemaphore(s) sem_wait(s)
158 #define SPostSemaphore(s) sem_post(s)
159 #define SDestroySemaphore(s) sem_destroy(s)
161 #define ssdPstTsk(p, m, t)
163 /* added SExit() for exiting process : mt017.21 */
164 /* mt001.301 : Additions */
165 #ifndef SS_LOGGER_SUPPORT
166 #define SExit() exit(0)
173 #endif /* SS_LOGGER_SUPPORT */
175 /* mt007.21 addition */
176 /* calls needed by Message Functions */
177 #define SMemCpy(d,s,c) memcpy(d,s,c)
178 #define SMemSet(s,c,n) memset(s,c,n)
179 /* --- internal to MTSS-Solaris --- */
182 /*mt041.201 Value of MT_TICK_CNT changed*/
183 /*mt004.301- defining the MT_TICK_CNT in Micro seconds (usecs) */
184 /* mt010.301 Removed #ifdef SS_FAP portion and enabled oroginal code */
185 #define MT_TICK_CNT (((uint32_t)0x0F4240)/SS_TICKS_SEC)
187 #define MT_MAX_TICK_CNT_VAL 35
188 #define MT_MIN_TICK_CNT_VAL 1
191 /* interrupt service flags */
193 #define MT_IS_UNSET 1
194 #define MT_IS_RESET 2
196 /******************************************************************
197 mt018.201 - Memory Configuration.
199 Memory block sizes and counts for memory manager configuration
200 There is no restriction in the size of each block for the bucket.
201 However, it is recommended that the bucket size should be word aligned.
202 The CMM (Common Memory Manager) also create a look up table which map
203 the size to the bucket index.
204 The number of entry in the lookup table (CMM_MAX_MAP_ENT, defined in
205 cm_mem.h) = ((maximum bucket size)/(bucket quantum size)) + 1.
206 The CMM_MAX_MAP_ENT should be changed depending on the bucket sizes
207 that are configured below.
208 *******************************************************************/
210 /* Bucket 0 configuration */
211 /* mt032.201 changed MT_BKT_0_DSIZE from 120 to 128 for 64k compilation */
212 #define MT_BKT_0_DSIZE 256
213 /*mt004.301-changed for FAP*/
215 #ifdef XEON_SPECIFIC_CHANGES
216 #define MT_BKT_0_NUMBLKS 5248 /* 10500 Modified from 3500 to 10500 */
218 #ifdef SS_USE_WLS_MEM
219 #define MT_BKT_0_NUMBLKS 200704 /* 10500 Modified from 3500 to 10500 */
221 #define MT_BKT_0_NUMBLKS 10000 /* 10500 Modified from 3500 to 10500 */
225 #define MT_BKT_0_NUMBLKS 10000
228 /* Bucket 1 configuration */
229 /*mt004.301-changed for FAP*/
231 #ifdef XEON_SPECIFIC_CHANGES
232 #define MT_BKT_1_DSIZE 1024 /* Modified from 256 to 4096 */
234 #define MT_BKT_1_DSIZE 1280 /* Modified from 256 to 4096 */
236 #ifdef SS_USE_WLS_MEM
237 #define MT_BKT_1_NUMBLKS 310720 /* 1000*/
239 #define MT_BKT_1_NUMBLKS 10496 /* 1000*/
243 #define MT_BKT_1_DSIZE 256
244 #define MT_BKT_1_NUMBLKS 2000
247 /* Bucket 2 configuration */
250 #define MT_BKT_2_DSIZE 1376 /* Fill in this value as required */
251 #define MT_BKT_2_NUMBLKS 4000 /* Fill in this value as required */
253 #ifdef XEON_SPECIFIC_CHANGES
254 #define MT_BKT_2_DSIZE 1768 /* 1664 2048 */
255 #define MT_BKT_2_NUMBLKS 5248 /* 10496 */
257 #define MT_BKT_2_DSIZE 2048 /* 1664 2048 */
258 #define MT_BKT_2_NUMBLKS 2000 /* 10496 */
263 /* Bucket 3 configuration */
266 #define MT_BKT_3_DSIZE 2592 /* Fill in this value as required */
267 #define MT_BKT_3_NUMBLKS 1500 /* Fill in this value as required */
269 #ifdef XEON_SPECIFIC_CHANGES
270 #define MT_BKT_3_DSIZE 4224 /* Fill in this value as required */
271 #define MT_BKT_3_NUMBLKS 5248 /*10496 */ /* Fill in this value as required */
273 #define MT_BKT_3_DSIZE 12200 /* Fill in this value as required */
274 #define MT_BKT_3_NUMBLKS 1000 /*10496 */ /* Fill in this value as required */
278 #define MT_BKT_4_DSIZE 65000
279 #define MT_BKT_4_NUMBLKS 2000
281 /* For Non-Sharable regions/static regions */
282 #ifdef XEON_SPECIFIC_CHANGES
283 #define MT_BKT_0_STATIC_NUMBLKS 500000 /* Fill in this value as required */
284 #define MT_BKT_1_STATIC_NUMBLKS 500000 /* Fill in this value as required */
285 #define MT_BKT_2_STATIC_NUMBLKS 200000 /* Fill in this value as required */
286 #define MT_BKT_3_STATIC_NUMBLKS 40960 /* Fill in this value as required */
287 #define MT_BKT_4_STATIC_NUMBLKS 4096 /* Fill in this value as required */
289 #define MT_BKT_0_STATIC_NUMBLKS 75000 /* Fill in this value as required */
290 #define MT_BKT_1_STATIC_NUMBLKS 15000 /* Fill in this value as required */
291 #define MT_BKT_2_STATIC_NUMBLKS 500 /* Fill in this value as required */
292 #define MT_BKT_3_STATIC_NUMBLKS 1600 /* Fill in this value as required */
293 #define MT_BKT_4_STATIC_NUMBLKS 1000 /* Fill in this value as required */
296 #ifdef RGL_SPECIFIC_CHANGES
297 #define MT_MAX_BKTS 5
299 #define MT_MAX_BKTS 5
302 /* mt029.201 corrected typos */
303 /* memory pool data size definitions for pool-to-size mapping table */
304 #define MT_POOL_4_DSIZE (MT_BKT_4_DSIZE-(sizeof(SsMblk)+sizeof(SsDblk)))
305 #define MT_POOL_3_DSIZE (MT_BKT_3_DSIZE-(sizeof(SsMblk)+sizeof(SsDblk)))
306 #define MT_POOL_2_DSIZE (MT_BKT_2_DSIZE-(sizeof(SsMblk)+sizeof(SsDblk)))
307 #define MT_POOL_1_DSIZE (MT_BKT_1_DSIZE-(sizeof(SsMblk)+sizeof(SsDblk)))
308 #define MT_POOL_0_DSIZE (MT_BKT_0_DSIZE-(sizeof(SsMblk)+sizeof(SsDblk)))
312 /* mt026.201 - Modification to increase default heap size */
313 /* memory size used for heap by the memory manager (2MB) */
314 /* mt001.301 : Additions */
315 /*mt004.301- changed heap size for FAP */
317 #define MT_HEAP_SIZE 5242880U
319 #ifdef XEON_SPECIFIC_CHANGES
320 #define MT_HEAP_SIZE 6194304U
322 #define MT_HEAP_SIZE 1004800U /*PAL FIX: 4MB to 6MB flexran */
327 #define STATIC_MEM_CFG
330 /* mt022.201 - definition of MT_BKTQNSIZE */
332 #define MT_BKTQNSIZE 128
335 /* mt021.201 - Addition for setting stack size for threads */
336 /* Configuration for stack size (in bytes) of spawned threads
337 * Size of zero gives default of 1 MB or 2 MB for 32 bit or 64 bit
338 * compilers, respectively */
339 #define MT_TASK_STACK NULLD /* stack size for task handler */
340 #define MT_ISTASK_STACK NULLD /* stack size for IS task handler */
341 #define MT_TMRTASK_STACK NULLD /* stack size for timer handler */
342 #define MT_CONSOLE_STACK NULLD /* stack size for console handler */
344 /* mt001.301 : Additions Logger support */
345 #ifdef SS_LOGGER_SUPPORT
346 #ifndef SS_MAX_LOGBUF_SIZE
347 #define SS_MAX_LOGBUF_SIZE 8192
350 #define SS_MAX_PATH 1024
352 #endif /* SS_LOGGER_SUPPORT */
353 /* mt005.301: Cavium changes: */
354 #ifdef SS_SEUM_CAVIUM
355 /* Cavium related hashdefines */
356 #define SS_CVMX_GRP_MASK (1 << osCp.procId)
358 #define SS_CVMX_NUM_PKT_BUFFERS 0
359 #define SS_CVMX_NUM_WQE_BUFFERS 100
360 #define SS_CVMX_NUM_PKO_BUFFERS 0
361 #define SS_CVMX_NUM_TIM_BUFFERS 1000
362 #define SS_CVMX_NUM_DFA_BUFFERS 0
364 /* fpa pool 0 configuration */
365 #define SS_CVMX_POOL_0_NUMBLKS 3000
367 /* fpa pool 1 configuration */
368 #define SS_CVMX_POOL_1_NUMBLKS 100
370 /* fpa pool 2 configuration */
371 #define SS_CVMX_POOL_2_NUMBLKS 10 /* Fill in this value as required */
373 /* fpa pool 3 configuration */
374 #define SS_CVMX_POOL_3_NUMBLKS 2500 /* Fill in this value as required */
376 #define SS_CVMX_TICK_TIME 1000 /* the value is in micorsec */
377 #define SS_CVMX_MAX_TICKS 1000
378 #define SS_CVMX_TICKS 500
380 #define SS_CVMX_TMR_TAG 1000
381 #define SS_CVMX_MBUF_TAG 1001
382 #endif /* SS_SEUM_CAVIUM */
384 /* mt011.301: Pool definition for both 64 bit and 32 bit Cavium */
385 #ifndef SS_CVMX_WQE_POOL
387 #define SS_CVMX_WQE_POOL CVMX_FPA_WQE_POOL
389 #define SS_CVMX_WQE_POOL SS_CVMX_POOL_0
393 #define WLS_MEM_SIZE 0x7ec00000 /* Total size of WLS memory configured */
395 #endif /* __MTSSH__ */
399 /********************************************************************30**
402 **********************************************************************/