Initial commit
[o-du/l2.git] / src / mt / ss_rbuf.h
diff --git a/src/mt/ss_rbuf.h b/src/mt/ss_rbuf.h
new file mode 100755 (executable)
index 0000000..2937d1f
--- /dev/null
@@ -0,0 +1,140 @@
+/*******************************************************************************
+################################################################################
+#   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:    Ring Buffer 
+  
+     Type:     C include file
+  
+     Desc:     This file implements the funcitons required to isolate
+               freeing of packer buffers from Main stack processing. This will be 
+               usefull in a hyper threaded environment where the freeing can be
+               done from low priority thread
+  
+     File:    ss_rbuf.h 
+  
+*********************************************************************21*/
+#ifndef __SS_RBUF_H__
+#define __SS_RBUF_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#define SS_RNG_TX                    1
+#define SS_RNG_RX                    0
+#ifdef XEON_SPECIFIC_CHANGES
+#define SS_RNG_MAX_DLPDCP_TO_DLRLC_DQ_CNT 80 /* Max Buffer Read from Ring Buffer from PDCP to RLC in DL Direction */
+#define SS_RNG_MAX_ULMAC_TO_ULRLC_DQ_CNT  200
+#define SS_RNG_ULRLC_TO_ULPDCP_SIZE      256
+#define SS_RNG_ULPDCP_TO_ULDAM_SIZE      2048
+#define SS_RNG_MAX_ULPDCP_TO_ULDAM_DAT_IND_DQ_CNT 512
+#define SS_RNG_MAX_ULRLC_TO_ULPDCP_DAT_IND_DQ_CNT 10
+#else   
+#define SS_RNG_MAX_DLPDCP_TO_DLRLC_DQ_CNT 40 /* Max Buffer Read from Ring Buffer from PDCP to RLC in DL Direction */
+#define SS_RNG_MAX_ULMAC_TO_ULRLC_DQ_CNT  25
+#endif   
+
+/* ccpu00143253: Changing SS_RNG_DLPDCP_TO_DLRLC_SIZE from 128 to 512, 
+  * as the forwarded data packet drop observed during Handover */
+#ifdef L2_L3_SPLIT
+#define SS_RNG_DLPDCP_TO_DLRLC_SIZE     5120
+#else
+#define SS_RNG_DLPDCP_TO_DLRLC_SIZE     5120
+#endif
+
+/* Ring Size Defines, powers of 2 only  */
+//#define SS_RNG_ICPU_TO_DLPDCP_SIZE      128
+#define SS_RNG_ICPU_TO_DLPDCP_SIZE      512
+#define SS_RNG_ICPU_TO_DLPDCP_NONPRIO_SIZE      20480
+//#define SS_RNG_DLPDCP_TO_DLRLC_SIZE     1024
+//#define SS_RNG_L2_RT_TO_FREE_MGR_SIZE   512 
+//#define SS_RNG_L2_NRT_TO_FREE_MGR_SIZE  640
+/* Increasing from 512 to 1024
+   Increasing from 1024 to 2048 to handle free after re-est */ 
+#define SS_RNG_L2_RT_TO_FREE_MGR_SIZE   2048
+#define SS_RNG_L2_NRT_TO_FREE_MGR_SIZE  2048 
+#define SS_RNG_L2_DLRLC_TO_FREE_MGR_SIZE  2048 
+#define SS_RNG_PRC_L1D_TO_CL_SIZE       32
+#define SS_RNG_PRC_FREE_TO_CL_SIZE      256
+#define SS_RNG_ICPU_TO_DAM_SIZE         1024
+#define SS_RNG_PDCP_TO_CIPH_SIZE        2048
+#define SS_RNG_CIPH_TO_PDCP_SIZE        1024
+#ifdef XEON_SPECIFIC_CHANGES
+#define SS_RNG_ULMAC_TO_ULRLC_SIZE      1024
+#else   
+#define SS_RNG_ULMAC_TO_ULRLC_SIZE      128
+#endif   
+#define SS_RNG_ICCRX_TO_DLRLC_SIZE      640
+#define SS_RNG_DL_SMSG_REUSE_SIZE       384
+#define SS_RNG_DLRLC_TO_DLMAC_SIZE      512
+#define SS_RNG_BUF_MAC_HARQ_SIZE        256
+#ifndef L2_L3_SPLIT
+#ifdef XEON_SPECIFIC_CHANGES
+#define SS_FREE_MGR_MAX_FREE            1024
+#else   
+#define SS_FREE_MGR_MAX_FREE            32
+#endif   
+#else
+#define SS_FREE_MGR_MAX_FREE            96
+#endif
+
+#ifdef MAC_FREE_RING_BUF
+#define SS_RNG_MAC_FREE_RING_SIZE      8096
+#endif
+#ifdef RLC_FREE_RING_BUF
+#define SS_RNG_RLC_FREE_RING_SIZE      8096
+#endif
+#ifdef LC_EGTP_THREAD
+#define SS_RNG_EGTP_FREE_RING_SIZE      1024
+#endif
+/* Ring Element Size Defines */
+#define SS_RNG_BUF_ELEM           sizeof(SsRngBufElem)
+
+/*Defines for Packet Prio */
+#define SS_QCI_BASED_PRIO_UNUSED      0
+#define SS_QCI_BASED_PRIO_HIGH        1
+#define SS_QCI_BASED_PRIO_LOW         2
+#define SS_QCI_BASED_PRIO_OTHER       3
+
+#ifdef XEON_SPECIFIC_CHANGES
+#define SS_RNG_MAC_TO_RLC_HARQ_IND_SIZE 512
+#define SS_RNG_DLRLC_TO_DLMAC_STA_RSP_SIZE 2048
+#define SS_RNG_DLRLC_TO_DLMAC_DAT_REQ_SIZE 256
+#define SS_RNG_MAX_DLRLC_TO_DLMAC_STA_RSP_DQ_CNT 320
+#define SS_RNG_MAX_DLRLC_TO_DLMAC_DAT_REQ_DQ_CNT 40
+#define SS_RNG_MAX_DLMAC_TO_DLRLC_HARQ_STA_DQ_CNT 80  
+#else   
+#define SS_RNG_MAC_TO_RLC_HARQ_IND_SIZE 64
+#define SS_RNG_DLRLC_TO_DLMAC_STA_RSP_SIZE 512
+#define SS_RNG_DLRLC_TO_DLMAC_DAT_REQ_SIZE 64
+#define SS_RNG_MAX_DLRLC_TO_DLMAC_STA_RSP_DQ_CNT 80
+#define SS_RNG_MAX_DLRLC_TO_DLMAC_DAT_REQ_DQ_CNT 10
+#define SS_RNG_MAX_DLMAC_TO_DLRLC_HARQ_STA_DQ_CNT 20 
+#endif   
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+/**************************************************************************
+          End of file
+**************************************************************************/
+