Initial commit
[o-du/l2.git] / src / mt / mt_ss.h
diff --git a/src/mt/mt_ss.h b/src/mt/mt_ss.h
new file mode 100755 (executable)
index 0000000..d4876e3
--- /dev/null
@@ -0,0 +1,382 @@
+/*******************************************************************************
+################################################################################
+#   Copyright (c) [2017-2019] [Radisys]                                        #
+#                                                                              #
+#   Licensed under the Apache License, Version 2.0 (the "License");            #
+#   you may not use this file except in compliance with the License.           #
+#   You may obtain a copy of the License at                                    #
+#                                                                              #
+#       http://www.apache.org/licenses/LICENSE-2.0                             #
+#                                                                              #
+#   Unless required by applicable law or agreed to in writing, software        #
+#   distributed under the License is distributed on an "AS IS" BASIS,          #
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   #
+#   See the License for the specific language governing permissions and        #
+#   limitations under the License.                                             #
+################################################################################
+*******************************************************************************/
+
+/********************************************************************20**
+
+     Name:     MTSS -- implementation specific definitions
+
+     Type:     C include file
+
+     Desc:     Various macro definitions demanded by systems services.
+               The contents of these are for the MTSS implementation.
+
+     File:     mt_ss.h
+
+*********************************************************************21*/
+
+
+#ifndef __MTSSH__
+#define __MTSSH__
+
+
+/* --- interface to SS --- */
+
+/* general */
+#define SS_PROC_ID                      PID_STK(1)
+
+/* task related */
+/* mt028.201: addition: multiple procs support related changes */
+#ifdef SS_MULTIPLE_PROCS
+#define SS_MAX_PROCS                    100 /* max entries for proc list */
+#endif /* SS_MULTIPLE_PROCS */
+
+#define SS_MAX_ENT                      255
+#define SS_MAX_INST                     8
+
+/* mt028.201: modification: multiple procs support related changes */
+#ifndef SS_MULTIPLE_PROCS
+#define SS_MAX_TTSKS                    100
+
+#ifndef SS_MULTICORE_SUPPORT
+#define SS_MAX_STSKS                    7
+#else
+/* mt001.301 : Additions */
+#ifdef  SPLIT_RLC_DL_TASK
+#ifdef L2_L3_SPLIT
+#define SS_MAX_STSKS                    4 
+#else
+#define SS_MAX_STSKS                    5 
+#endif
+#else 
+#define SS_MAX_STSKS                    4 
+#endif 
+#endif /* SS_MULTICORE_SUPPORT */
+
+#else /* SS_MULTIPLE_PROCS */
+#define SS_MAX_TTSKS                    1000 
+#define SS_MAX_STSKS                    7
+#endif /* SS_MULTIPLE_PROCS */
+
+#ifdef SS_DRVR_SUPPORT
+#define SS_MAX_DRVRTSKS                 70
+#endif
+
+#ifdef SS_RTR_SUPPORT
+   /* mt0012.21 : Addition */
+#define SS_MAX_RTRTSKS                  255
+#endif
+
+
+/* timer related */
+#define SS_MAX_TMRS                     45
+
+/* memory related */
+/* mt022.201 - Modification for shared memory relay and memcal regions */
+#ifdef SS_MULTICORE_SUPPORT
+#define SS_MAX_REGS SS_MAX_STSKS
+#else
+#define SS_MAX_REGS 1
+#endif
+
+#ifdef CMM_MAX_BKT_ENT
+#define SS_MAX_POOLS_PER_REG            CMM_MAX_BKT_ENT
+#else
+#define SS_MAX_POOLS_PER_REG            5
+#endif
+/* mt001.301 : Additions */
+#ifdef SS_WATCHDOG
+#define ENTDW                           0xcd
+#define ENTHB                           0xce
+#define INST0                           0x00
+#define SS_TMR_HRTBT                    0x00
+#define EVTSSHRTBTREQ                   0x00
+#define EVTSSHRTBTRSP                   0x01
+#define SS_LOOSE_COUPLING               0x00
+#endif /* SS_WATCHDOG */
+
+/* locks */
+#define SS_STSKTBL_LOCK                 SS_LOCK_MUTEX
+#define SS_STSKENTRY_LOCK               SS_LOCK_MUTEX
+#define SS_TMRTBL_LOCK                  SS_LOCK_MUTEX
+#define SS_DMNDQ_LOCK                   SS_LOCK_MUTEX
+#define SS_DRVRENTRY_LOCK               SS_LOCK_MUTEX
+#define SS_RTRENTRY_LOCK                SS_LOCK_MUTEX
+
+#ifdef TENB_T2K3K_SPECIFIC_CHANGES
+#define MIPS_FILE "/sys/devices/virtual/mmonitor/mmonitor/mips_stat"
+#define GET_CPU_MAX(x, y) ((x) >= (y) ? (x) : (y))
+#define MIPS_STRING_LEN    24
+#endif
+
+
+/* types needed by common SSI code */
+#define SsSemaId                        sem_t
+#define SLockId                         pthread_mutex_t
+
+
+/* calls needed by common SSI code */
+#ifndef TENB_RTLIN_CHANGES
+#define SInitLock(l, t)                 pthread_mutex_init(l, NULL)
+#endif
+/*extern U32 gt[128]; */
+/*#define SLock(l)                        (((gt[0x000000FF &((U32)pthread_self())]=MacGetTick())&&pthread_mutex_lock(l)&&MLogTask(30340, RESOURCE_LINL2, gt[0x000000FF &((U32)pthread_self())], MacGetTick()))?0:0)*/
+#define SLock(l)                        pthread_mutex_lock(l)
+#define SUnlock(l)                      pthread_mutex_unlock(l)
+#define SDestroyLock(l)                 pthread_mutex_destroy(l)
+
+#define ssInitSema(s, c)                sem_init(s, 0, c)
+#define ssWaitSema(s)                   sem_wait(s)
+#define ssPostSema(s)                   sem_post(s)
+#define ssDestroySema(s)                sem_destroy(s)
+
+#define SS_CHECK_CUR_STSK(t)            (pthread_equal(pthread_self(), \
+                                          (t)->dep.tId))
+ /* mt013.21: Addition */
+#define SInitSemaphore(s, c)            sem_init(s, 0, c)
+#define SWaitSemaphore(s)               sem_wait(s)
+#define SPostSemaphore(s)               sem_post(s)
+#define SDestroySemaphore(s)            sem_destroy(s)
+
+#define ssdPstTsk(p, m, t)
+
+/* added SExit() for exiting process : mt017.21 */
+/* mt001.301 : Additions */
+#ifndef SS_LOGGER_SUPPORT
+#define SExit()                         exit(0)
+#else
+#define SExit()  \
+{ \
+SCleanUp(); \
+exit(0); \
+}
+#endif /* SS_LOGGER_SUPPORT  */
+
+  /* mt007.21 addition */
+/* calls needed by Message Functions */
+#define SMemCpy(d,s,c) memcpy(d,s,c)
+#define SMemSet(s,c,n)  memset(s,c,n)
+/* --- internal to MTSS-Solaris --- */
+
+
+/*mt041.201 Value of MT_TICK_CNT changed*/
+/*mt004.301- defining the MT_TICK_CNT in Micro seconds (usecs) */
+/* mt010.301  Removed #ifdef SS_FAP portion and enabled oroginal code */
+#define MT_TICK_CNT             (((U32)0x0F4240)/SS_TICKS_SEC)
+
+#define MT_MAX_TICK_CNT_VAL     35
+#define MT_MIN_TICK_CNT_VAL     1
+
+
+/* interrupt service flags */
+#define MT_IS_SET               0
+#define MT_IS_UNSET             1
+#define MT_IS_RESET             2
+
+/******************************************************************
+ mt018.201 - Memory Configuration.
+
+Memory block sizes and counts for memory manager configuration
+There is no restriction in the size of each block for the bucket.
+However, it is recommended that the bucket size should be word aligned.
+The CMM (Common Memory Manager) also create a look up table which map
+the size to the bucket index.
+The number of entry in the lookup table  (CMM_MAX_MAP_ENT, defined in
+cm_mem.h) = ((maximum bucket size)/(bucket quantum size)) + 1.
+The CMM_MAX_MAP_ENT should be changed depending on the bucket sizes
+that are configured below.
+*******************************************************************/
+
+/* Bucket 0 configuration */
+/* mt032.201 changed  MT_BKT_0_DSIZE from 120 to 128 for 64k compilation */
+#define MT_BKT_0_DSIZE          256
+/*mt004.301-changed for FAP*/
+#ifndef SS_FAP
+#ifdef XEON_SPECIFIC_CHANGES
+#define MT_BKT_0_NUMBLKS        5248 /* 10500 Modified from 3500 to 10500 */
+#else
+#define MT_BKT_0_NUMBLKS        10000 /* 10500 Modified from 3500 to 10500 */
+#endif
+#else
+#define MT_BKT_0_NUMBLKS        10000
+#endif
+
+/* Bucket 1 configuration */
+/*mt004.301-changed for FAP*/
+#ifndef SS_FAP
+#ifdef XEON_SPECIFIC_CHANGES
+#define MT_BKT_1_DSIZE          1024  /* Modified from 256 to 4096 */
+#else
+#define MT_BKT_1_DSIZE          2048  /* Modified from 256 to 4096 */
+#endif
+#define MT_BKT_1_NUMBLKS        10496 /* 1000*/
+#else
+/*mt010.301*/
+#define MT_BKT_1_DSIZE          256
+#define MT_BKT_1_NUMBLKS        2000
+#endif
+
+/* Bucket 2 configuration */
+/*mt010.301*/
+#ifdef SS_FAP
+#define MT_BKT_2_DSIZE      1376      /* Fill in this value as required */
+#define MT_BKT_2_NUMBLKS    4000        /* Fill in this value as required */
+#else
+#ifdef XEON_SPECIFIC_CHANGES
+#define MT_BKT_2_DSIZE   1768 /* 1664 2048 */
+#define MT_BKT_2_NUMBLKS 5248 /* 10496 */
+#else
+#define MT_BKT_2_DSIZE   8196 /* 1664 2048 */
+#define MT_BKT_2_NUMBLKS 2000 /* 10496 */
+#endif
+#endif
+
+
+/* Bucket 3 configuration */
+/*mt010.301*/
+#ifdef SS_FAP
+#define MT_BKT_3_DSIZE     2592      /* Fill in this value as required */
+#define MT_BKT_3_NUMBLKS   1500     /* Fill in this value as required */
+#else
+#ifdef XEON_SPECIFIC_CHANGES
+#define MT_BKT_3_DSIZE     4224      /* Fill in this value as required */
+#define MT_BKT_3_NUMBLKS   5248 /*10496 */       /* Fill in this value as required */
+#else
+#define MT_BKT_3_DSIZE     16896      /* Fill in this value as required */
+#define MT_BKT_3_NUMBLKS   1000 /*10496 */       /* Fill in this value as required */
+#endif
+#endif
+
+/* For Non-Sharable regions/static regions */
+#ifdef XEON_SPECIFIC_CHANGES
+#define MT_BKT_0_STATIC_NUMBLKS   500000     /* Fill in this value as required */
+#define MT_BKT_1_STATIC_NUMBLKS   500000     /* Fill in this value as required */
+#define MT_BKT_2_STATIC_NUMBLKS   200000     /* Fill in this value as required */
+#define MT_BKT_3_STATIC_NUMBLKS   40960     /* Fill in this value as required */
+#define MT_BKT_4_STATIC_NUMBLKS   4096     /* Fill in this value as required */
+#else
+#define MT_BKT_0_STATIC_NUMBLKS   10000     /* Fill in this value as required */
+#define MT_BKT_1_STATIC_NUMBLKS   1000     /* Fill in this value as required */
+#define MT_BKT_2_STATIC_NUMBLKS   2000     /* Fill in this value as required */
+#define MT_BKT_3_STATIC_NUMBLKS   1000     /* Fill in this value as required */
+#endif
+/*mt010.301*/
+#ifdef RGL_SPECIFIC_CHANGES
+#define MT_MAX_BKTS             5
+#else
+#define MT_MAX_BKTS             4
+#endif
+
+/* mt029.201 corrected typos */
+/* memory pool data size definitions for pool-to-size mapping table */
+#define MT_POOL_3_DSIZE        (MT_BKT_3_DSIZE-(sizeof(SsMblk)+sizeof(SsDblk)))
+#define MT_POOL_2_DSIZE        (MT_BKT_2_DSIZE-(sizeof(SsMblk)+sizeof(SsDblk)))
+#define MT_POOL_1_DSIZE        (MT_BKT_1_DSIZE-(sizeof(SsMblk)+sizeof(SsDblk)))
+#define MT_POOL_0_DSIZE        (MT_BKT_0_DSIZE-(sizeof(SsMblk)+sizeof(SsDblk)))
+
+
+
+/* mt026.201 - Modification to increase default heap size */
+/* memory size used for heap by the memory manager (2MB) */
+/* mt001.301 : Additions */
+/*mt004.301- changed heap size for FAP */
+#ifdef SS_FAP
+#define MT_HEAP_SIZE            5242880U
+#else
+#ifdef XEON_SPECIFIC_CHANGES
+#define MT_HEAP_SIZE            6194304U
+#else
+#define MT_HEAP_SIZE            6194304U /*PAL FIX: 4MB to 6MB flexran */
+#endif
+#endif
+
+#ifndef USE_MEMCAL
+#define STATIC_MEM_CFG
+#endif
+
+/* mt022.201 - definition of MT_BKTQNSIZE */
+/*mt010.301*/
+#define MT_BKTQNSIZE 128
+
+
+/* mt021.201 - Addition for setting stack size for threads */
+/* Configuration for stack size (in bytes) of spawned threads
+ * Size of zero gives default of 1 MB or 2 MB for 32 bit or 64 bit
+ * compilers, respectively */
+#define MT_TASK_STACK          NULLD   /* stack size for task handler */
+#define MT_ISTASK_STACK                NULLD   /* stack size for IS task handler */
+#define MT_TMRTASK_STACK       NULLD   /* stack size for timer handler */
+#define MT_CONSOLE_STACK       NULLD   /* stack size for console handler */
+
+/* mt001.301 : Additions Logger support */
+#ifdef SS_LOGGER_SUPPORT
+#ifndef SS_MAX_LOGBUF_SIZE
+#define SS_MAX_LOGBUF_SIZE 8192
+#endif
+#ifndef SS_MAX_PATH
+#define SS_MAX_PATH 1024
+#endif
+#endif /* SS_LOGGER_SUPPORT */
+/* mt005.301: Cavium changes: */
+#ifdef SS_SEUM_CAVIUM
+/* Cavium related hashdefines */
+#define SS_CVMX_GRP_MASK   (1 << osCp.procId)
+
+#define SS_CVMX_NUM_PKT_BUFFERS   0
+#define SS_CVMX_NUM_WQE_BUFFERS   100
+#define SS_CVMX_NUM_PKO_BUFFERS   0
+#define SS_CVMX_NUM_TIM_BUFFERS   1000
+#define SS_CVMX_NUM_DFA_BUFFERS   0
+
+/* fpa pool 0 configuration */
+#define SS_CVMX_POOL_0_NUMBLKS        3000
+
+/* fpa pool 1 configuration */
+#define SS_CVMX_POOL_1_NUMBLKS        100
+
+/* fpa pool 2 configuration */
+#define SS_CVMX_POOL_2_NUMBLKS        10        /* Fill in this value as required */
+
+/* fpa pool 3 configuration */
+#define SS_CVMX_POOL_3_NUMBLKS        2500      /* Fill in this value as required */
+
+#define SS_CVMX_TICK_TIME   1000  /* the value is in micorsec */
+#define SS_CVMX_MAX_TICKS   1000
+#define SS_CVMX_TICKS       500
+
+#define SS_CVMX_TMR_TAG     1000
+#define SS_CVMX_MBUF_TAG    1001
+#endif /* SS_SEUM_CAVIUM */
+
+/* mt011.301: Pool definition for both 64 bit and 32 bit Cavium */
+#ifndef SS_CVMX_WQE_POOL
+#ifdef BIT_64
+#define SS_CVMX_WQE_POOL CVMX_FPA_WQE_POOL
+#else
+#define SS_CVMX_WQE_POOL SS_CVMX_POOL_0
+#endif
+#endif
+
+
+#endif  /*  __MTSSH__  */
+
+
+\f
+/********************************************************************30**
+
+         End of file
+**********************************************************************/