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: environment options
25 Desc: Environment options specifies defines required by the
26 by TRILLIUM software. The defines in this file need to be
27 changed by the customer to reflect the software architecture
28 needed to run under the target system hardware architecture.
32 *********************************************************************21*/
36 #define IOT_REPETITION
40 /************************************************************************
41 kernel SCTP parameters
42 ************************************************************************/
44 #define CM_LKSCTP_NONBLOCK
45 #define SCTP_CONNECTX_NEW
50 /**************************************************************************
52 **************************************************************************/
53 /* error checking, choose none or one */
57 #define ERRCHK /* error checking */
62 /**************************************************************************
63 unix - multi-threaded system services
64 **************************************************************************/
65 /* Multi threaded solaris/linux operating system */
66 #ifdef MT /* unix - multi-threaded */
67 #define MT_SOL /* Solaris Thread Architecture */
74 //#define MAC_5GTF_UPDATE
75 #define PRE_DEF_UE_CTX
76 //#define ENB_SUPPORT_RLC_UM_MODE
77 #define TMR_BASED_TPT_PRINT_5GTF
78 #define EG_GEN_LOAD_5GTF
79 /*Refer 6.3.2 5G-PDCP SN "V5G_323_v1p0"*/
80 //#define SN_PDCP_5GTF
81 //#define PCAP_IP_DATGEN_LOAD_5GTF
82 #define NO_BSR_SR_5GTF
83 //#define PAL_ENABLE_UL_CA
84 #define DROP_UL_MSG_5GTF
89 /* Flags that apply for the entire product are defined here */
90 /* The legacy and the system services defintions are here */
92 #define CMINET_BSDCOMPAT
93 /* #define SS_TICKS_SEC 100 */
94 #define CMFILE_REORG_1
95 #define CMFILE_REORG_2
98 #undef HI_MULTI_THREADED
100 #define SS_WL_REGION 1
103 #define SS_M_PROTO_REGION
105 #undef SS_TSKLOG_ENABLE
106 #define SS_MULTICORE_SUPPORT
107 #undef SS_USE_ICC_MEMORY
108 #define SS_LOCKLESS_MEMORY
109 #define SS_USE_ZBC_MEMORY
110 #define SS_THR_REG_MAP
112 #undef SS_LICENSE_CHECK
113 #undef SS_ROUTE_MSG_CORE1
114 #undef SS_DBUF_REFLOCK_DISABLE
116 #undef SSI_MEM_CORR_PREVENTION
117 #undef MS_MBUF_CORRUPTION
119 /* 5GNR product specific definations are starts here */
123 /* define AM_RLC_SN_18_BIT means 18 bit SN otherwise 12 bit SN */
124 //#define AM_RLC_SN_18_BIT
125 //#define NR_PDCP_DRB_SN_18_BIT
127 /* LTE product specific definitions are here */
131 #define TENB_RTLIN_CHANGES
132 #define TENB_SPLIT_ARCH_SUPPORT
133 #define TENB_SPLIT_ARCH
134 #undef TENB_T2K3K_SPECIFIC_CHANGES
136 #undef MSPD_DBG_ENABLE
138 #define TTI_PROC_FIRST
139 #undef FLAT_BUFFER_OPT
142 #undef TENB_AS_SECURITY
148 #define TENB_MAX_UE_SUPPORTED 32
157 #if defined(MODE) && (MODE==TDD)
165 #define SPLIT_RLC_DL_TASK
166 #undef RG_SCH_DYNDLDELTA
171 #define T2200_FDD_CPU_OVRLD
173 #define T2200_2GB_DDR_CHANGES
174 #define BEST_EFFORT_2_UE_PER_TTI
175 #define KWSELFPSTDLCLEAN
176 #define BATCH_PROCESSING_DL
177 #define BATCH_PROCESSING_UL
178 #define TL_ALLOC_ICC_MEM
182 #undef PDCP_RLC_DL_RBUF
183 #undef MAC_RLC_UL_RBUF
184 #undef NTL_LIB_DIS_FOR_UL
185 #undef TFU_ALLOC_EVENT_NO_INIT
186 #if defined(MODE) && (MODE==TDD)
187 #define KWSELFPSTDLCLEAN
189 #define YSMS_RLF_DETCT
194 #if defined(CA_ENABLE) && (CA_ENABLE==YES)
196 #define TENB_MULT_CELL_SUPPRT
199 #define LTE_ADV_UECAP
201 #define NTL_LIB_DIS_FOR_UL
202 #ifndef SPLIT_RLC_DL_TASK
204 #define SPLIT_RLC_DL_TASK
209 #ifdef SPLIT_RLC_DL_TASK
210 #define MAC_RLC_HARQ_STA_RBUF
211 #define RLC_MAC_STA_RSP_UL_RBUF
216 /* Interface flags - The interface flags are shared by more than */
217 /* one layer and hence need to be defined in a common place. */
219 /* KWU interface definition */
222 /* SZT interface (App<->S1AP) flags */
227 /* CZT interface (App<->X2AP) flags */
230 /* LSZ interface (SM<->S1AP) flags */
233 /* LEG interface (SM<->EGTP) flags */
236 /* CTF interface (App<->CL) flags */
240 /* CPJ interface (RRC<->PDCP) flags */
243 /* TFU interface flags */
250 #define TFU_UPGRADE 1
253 /* RGR interface (APP<->SCH) flags */
260 /* RRM related interface flags */
263 /* LSB interface flags */
266 #define SB_CHECKSUM /* Define to include trillium supplied function */
267 #define SB_CHECKSUM_CRC
269 /**************************************************************************
270 Layer manager interface version definition
271 **************************************************************************/
272 #define LMINT3 /* interface 3 */
274 #ifdef SS /* Common System Services */
275 /**************************************************************************
276 Common System Services parameters
277 **************************************************************************/
278 /* product specific options */
279 #define SS_RTR_SUPPORT /* for supporting router tasks */
281 #ifdef SS_DRVR_SUPPORT
282 /* for backward compatibility */
284 /* for forward compatibility */
286 #endif /* SS_DRVR_SUPPORT */
288 /* post format, choose none or one */
289 #define FCSPOSTINT /* forward compatibility, post format */
293 /**************************************************************************
294 MTSS-Solaris parameters
295 **************************************************************************/
296 #ifdef SS_MT /* MTSS-Solaris */
298 #define CONAVL /* console availability option */
302 /******************************************************************/
304 /******************************************************************/
307 /* List of other layers interacting with SCTP and in the same binary */
324 /* Coupling with other layers */
334 #ifdef IPV6_SUPPORTED
335 #define SB_IPV6_SUPPORTED
339 /* needed dependencies */
358 /*----- SCTP have dependencies in LSB and SCT ------*/
365 /*----- SCTP have dependencies in LSB and SCT ------*/
374 /**************************************************************************
376 **************************************************************************/
381 /* Define the layers that coexist with S1AP. */
394 /* product options */
396 #define CM_PASN_CRIT_HANDL
399 #define SZ_DYNAMIC_PEER
402 /* interface options */
403 #define LCSZUISZT /* loosely coupled, SZ upper layer SZT interface */
404 #define LCSZMILSZ /* loosely coupled, SZ manegement LSZ interface */
405 #define LCSZLISCT /* loosely coupled, SZ lower layer SCT interface */
407 /* Based on the selection of coupling above the section below */
408 /* defines enabling/disabling of loose coupling on the */
409 /* respective interfaces */
410 /* ****** THIS SECTION REQUIRES NO FURTHER CHANGES. ********** */
411 /* Interface between S1AP and Application */
418 /* Interface between S1AP and management (SM) */
425 /* Interface between S1AP and Application */
432 /* Interface between SCTP and S1AP */
441 /******************************************************************/
443 /******************************************************************/
447 #define EGTP_U 1 /* LTE Evolved GTP User Plane Protocol */
450 /* All the layers that this layer interacts with and are part of */
451 /* the binary are to be included here. */
464 #ifdef IPV6_SUPPORTED
465 #define EG_IPV6_SUPPORTED
468 /* EGTP does not use loose coupling towards higher layers and does */
469 /* not talk to TUCL on HIT in the latest TeNB. However if it were */
470 /* to use TUCL, it would be loosely coupled as TUCL is multi- */
472 /* TODO - LCEGUIEGT should not be needed. */
478 /* Managing the loose coupling definitions on the interface based */
479 /* how the interface is coupled from E-GTP layer. */
480 /* ****** THIS SECTION REQUIRES NO FURTHER CHANGES. ********** */
481 #if defined(LCEGMILEG)
487 #if defined(LCEGLIHIT)
500 /*************************************************************************/
501 /* LTE-RRC Section */
502 /*************************************************************************/
507 /* Define other layers that are part of the same binary */
508 /* Along with RRC, we have application(NX,WR) and stack */
514 /* TODO - We need either WR or NX and not necessarily */
515 /* both of them. See if we can remove one of it. */
525 /* RRC layer functionality flags */
526 #define DISABLE_RRCSEC
528 /* Interface coupling related flags */
529 /* TODO - LCNHUINHU should not be needed. */
530 /* TODO - LCWRLINHU should not be needed. */
541 /* CRG interface between MAC and RRC should be loosely coupled */
544 /* Loose coupled NHU */
551 /* Light weight loose coupled NHU */
558 /* Loosely coupled CPJ */
565 /* Loosely coupled PJU */
572 /* Loosely coupled CRG */
575 #define LCCRG 1 /* loosely coupled CRG interface */
579 /* Loosely coupled CTF */
582 #define LCCTF 1 /* loosely coupled CTF interface */
584 #endif /* LCNHLICTF */
588 #define LCCKW 1 /* loosely coupled CKW interface */
594 #define LCKWU 1 /* loosely coupled KWU interface */
598 /* TODO These flags should move to SM definitions */
601 /* Define flags related to loosely coupled LNH interface */
608 /* Release 9 related flags */
617 #endif /* LTERRC_REL9 */
619 #ifdef RRC_PHY_CFG_SUPP
623 #define RNC_INTEG_CCPU
627 /****************************************************************************
629 ****************************************************************************/
630 #if (defined(TF) || defined(YS))
632 /* Self entity definitions */
638 /* Other entity definitions */
643 /* Selection of interface coupling flags */
650 #if defined(MODE) && (MODE == TDD)
656 /* The handling of enabling LC based on coupling enabled */
657 /* between CL and other layers. */
658 /* ****** THIS SECTION REQUIRES NO FURTHER CHANGES. ********** */
686 /****************************************************************************
688 ****************************************************************************/
693 /* Product options */
694 //#define RG_PHASE2_SCHED 1
702 #define LTEMAC_RGU_PAD 1
703 #define LTEMAC_MIMO 1
708 #define LTEMAC_DLUE_TMGOPTMZ
709 #define RG_DL_DELTA_CHANGE
710 #define RG_CMNCH_SCHDELTA_CHANGE
711 #undef RG_ULSCHED_AT_CRC
712 #define TFU_RECPREQ_DELTA_CHANGE
713 #define TFU_DL_DELTA_CHANGE
714 #define TFU_UL_DELTA_CHANGE
715 #define TFU_DLHQFBK_DELTA_CHANGE
718 /* Define all the layers that are colocated with the MAC layer */
719 /* RRC is located on a different binary on a different CPU. RRC */
720 /* should not be included here. SM should also not be defined */
721 /* as it is also located on a different CPU. */
731 /* This section selects the coupling for each interface related to */
732 /* MAC. The section below enabling the coupling code appropriately. */
733 /* CCPU_OPT flag enables additional information between MAC and RLC */
734 /* that aids in better selection of transport block size. */
735 /* TODO - We should delete LWLC for RGM interface. */
745 /* Managing the loose coupling definitions on the interface based */
746 /* how the interface is coupled from MAC layer. */
747 /* ****** THIS SECTION REQUIRES NO FURTHER CHANGES. ********** */
789 /******************* section to be changed by CUSTOMERS ******************/
793 * Introduced timing deltas in FDD for DL control, DL data,
794 * Reception Request, CRC Indication, HARQ feedback Indication.
796 #ifdef LTEMAC_DLUE_TMGOPTMZ
797 /* Delta used between MAC and RLC to recieve data from RLC*/
803 #if defined(DLHQ_RTT_OPT) && defined(LOWLATENCY)
808 #define TFU_RECPREQ_DLDELTA 2
811 #define RG_ENV_DL_DELTA (TFU_DELTA + RGU_DELTA)
813 #define TFU_DLDATA_DLDELTA (TFU_DELTA)
814 #define TFU_CRCIND_ULDELTA 2
815 #define TFU_ULCNTRL_DELTA (4 - TFU_CRCIND_ULDELTA)
818 /* Number of subframes in advance UL control (DCI-0/PHICH) should be sent from SCH */
819 #define TFU_ULCNTRL_DLDELTA 2
821 #define TFU_ULCNTRL_DLDELTA 1
825 /* Number of subframes later DL HARQ feedback reaches MAC from PHY */
826 #define TFU_ENV_HQFBKIND_ULDELTA 2
828 #define TFU_ENV_HQFBKIND_ULDELTA 3
831 /* Number of subframes in Advance the Downlink control is
832 given from MAC to PHY */
833 #define TFU_DLCNTRL_DLDELTA TFU_DELTA
836 /* Number of subframes in advance UL control (DCI/PHICH) should be sent from SCH */
837 #define TFU_ULCNTRL_DLDELTA (RG_SCH_CMN_HARQ_INTERVAL - TFU_CRCIND_ULDELTA)
841 /* Number of subframes for UL CRC to reach SCH after reception of data at PHY */
842 #define TFU_CRCIND_ULDELTA 2
844 #else /* LTEPHY_MSPD */
846 /* Number of subframes in advance DL control should be sent from SCH */
847 #define TFU_DLCNTRL_DLDELTA 2
848 /* Number of subframes in advance DL data should be sent from MAC */
849 #define TFU_DLDATA_DLDELTA 2
851 /* Number of subframes for UL CRC to reach SCH after reception of data at PHY */
852 #define TFU_CRCIND_ULDELTA 2
853 /* Number of subframes later DL HARQ feedback reaches SCH from PHY */
854 #define TFU_ENV_HQFBKIND_ULDELTA 2
856 #endif /* LTEPHY_MSPD */
857 /* The number of frames ahead that RLC may require a STA IND */
858 /* Seperated DL control and DL data timing deltas in FDD */
859 #if (TFU_DLDATA_DLDELTA > TFU_DLCNTRL_DLDELTA)
860 #define RG_ENV_DL_DELTA (TFU_DLDATA_DLDELTA + RGU_DELTA)
862 #define RG_ENV_DL_DELTA (TFU_DLCNTRL_DLDELTA + RGU_DELTA)
867 /* Delta between Random Access Response and Msg-3*/
868 #define RGSCH_RARSP_MSG3_DELTA 6
870 /* PUSCH data reception delta after the PDCCH for uplink(DCI-0) is sent*/
871 #define RGSCH_PDCCH_PUSCH_DELTA 4
874 #define RG_SCH_HDFDD_DELTA 10
876 #define RG_ENV_SCH_CMN_DL_DELTA RG_ENV_DL_DELTA /* This parameter should not be less than RG_ENV_DL_DELTA */
878 #define RG_SCH_NO_DELTA 0 /*Consider no delta */
879 /* ccpu00117459 - ADD - Added check if incompatible falgs are enabled*/
880 /* HDFDD and TDD cannot be enabled at the same time. */
881 #if defined(LTEMAC_HDFDD) && (defined(LTE_TDD) || defined(TFU_TDD))
882 #error "Enabling LTEMAC_HDFDD along with LTE_TDD or TFU_TDD is not a valid combination."
885 /* LTE_TDD and TFU_TDD must be enabled for TDD mode */
886 #if (defined(LTE_TDD) && (!defined(TFU_TDD))) || (defined(TFU_TDD) && (!defined(LTE_TDD)))
887 #error "Both LTE_TDD and TFU_TDD must be enabled for TDD mode of operation."
891 /****************************************************************************
893 ****************************************************************************/
896 /* Only PDCP and MAC are in the same binary. RRC runs on a different */
897 /* CPU and should not be defined here. */
902 /* -------- LKW Interface ------*/
903 /* This is the interface between RLC and the stack manager */
904 /* This should support loosely coupling as they dont run */
905 /* in the same thread */
908 /* -------- CKW Interface ------*/
909 /* CKW interface is loosely coupled as RRC and RLC reside */
910 /* on two different CPUs running in different threads */
913 /* -------- KWU Interface ------*/
914 /* KWU interface exists between RRC/PDCP and RLC. Since RRC is */
915 /* is loosely coupled with RLC, loosely coupled interface is */
917 /* CCPU_OPT carries additional information on the interface to */
918 /* assit better scheduling at MAC */
921 /* RGU interface between RLC and MAC should be light weight */
922 /* loosely coupled for performance. */
923 /* TODO - Do we also need loose coupled interface */
928 /* The management of enabling of loose coupling code based */
929 /* on the selection of coupling choice between RLC and other */
930 /* modules is below. */
932 /* Other RLC product flags */
933 #undef RLC_STATUS_GEN
936 /* ****** THIS SECTION REQUIRES NO FURTHER CHANGES. ********** */
957 /****************************************************************************
959 ****************************************************************************/
970 /* Other PDCP product flags */
972 #undef CIPH_BATCH_PROC
974 /* The handling of enabling LC based on whether PDCP enabled */
975 /* loose coupling when PDCP is acting as the source. */
976 /* ****** THIS SECTION REQUIRES NO FURTHER CHANGES. ********** */
1001 #undef SPACC_NONBLOCKING
1002 #undef INTEL_NATIVE_SPACC
1003 #undef INTEL_SPACC_IV_OPTIMIZATION
1004 #undef SPACC_THREADED
1007 /****************************************************************************
1008 TOTALeNodeB Application section
1009 ****************************************************************************/
1012 /* Since application is many different layers to the lower layers */
1013 /* it must define multiple entities as self entities. */
1037 /* Include all the layers that are part of the same binary. */
1038 /* We have stack manager (SM), S1AP (SZ), X2AP (CZ), RRM (RM), */
1039 /* RRC(NH) within the same binary. */
1064 /* Coupling choices between application and other layers */
1065 /* TODO - LWLCWRLIRGR should not be needed. */
1066 /* TODO - LCEULIEGT should not be needed. */
1067 /* TODO - LCNXLINHU should not be needed. */
1084 /* Coupling choices between stack manager and the layers */
1085 /* TODO LCSMSBMILSB should be replaced with LCSMMILSB. */
1086 /* TODO LCSMHIMILHI should be replaced with LCSMMILHI. */
1094 /* TODO LCKWMILKW should be changed to LCSMMILKW in SMM */
1095 /* LCKWMILKW should be used only in RLC product */
1109 /* Application functionality related flags */
1111 #define LTE_HO_SUPPORT
1112 #define WR_SIBS_ENBLD
1113 #undef WR_DETECT_RLF
1117 #define WR_IPV6_OAM_WORKAROUND
1119 #undef WR_GRPPWR_CNTRL
1120 /* #undef ENB_OVRLOAD */
1121 /* The handling of enabling LC based on whether TeNB enabled */
1122 /* loose coupling when PDCP is acting as the source. */
1123 /* ****** THIS SECTION REQUIRES NO FURTHER CHANGES. ********** */
1190 /* ************* SM and layer interaction flags **************** */
1251 /* TODO - This definition does not follow naming conventions and */
1252 /* also is a duplicate of the above macro. This should be removed */
1253 /* from the code and then from this make file. */
1261 /* ************** End of TeNB Application section *************** */
1263 /****************************************************************************
1265 ****************************************************************************/
1270 /* Define the layers that coexist with X2AP. They are SCTP (SB), */
1271 /* X2AP user (RS/WR), stack manager (SM). */
1284 /* product options */
1286 #define CZ_DYNAMIC_PEER
1289 /* interface options */
1290 #define LCCZUICZT /* loosely coupled, CZ upper layer CZT interface */
1291 #define LCCZLISCT /* loosely coupled, CZ lower layer SCT interface */
1292 #define LCCZMILCZ /* loosely coupled, CZ manegement LCZ interface */
1294 /* Based on the selection of coupling above the section below */
1295 /* defines enabling/disabling of loose coupling on the */
1296 /* respective interfaces */
1297 /* ****** THIS SECTION REQUIRES NO FURTHER CHANGES. ********** */
1298 /* Interface between S1AP and Application */
1305 /* Interface between X2AP and management (SM) */
1312 /* Interface between X2AP and Application */
1319 /* Interface between SCTP and X2AP */
1328 /* ******************************************************************* */
1330 /* ******************************************************************* */
1333 /* Define the products that TUCL directly talks to and are part of the */
1347 /* We need to define LCHIUIHIT if there is at least one layer talking */
1348 /* to TUCL in a loosely coupled fashion. */
1352 /* The section below should not be edited normally. */
1366 /****************************************************************************
1368 ****************************************************************************/
1370 #define LWLCSMSONILNL
1375 #ifdef LWLCSMSONILNL
1388 /****************************************************************************
1390 ****************************************************************************/
1396 #define LWLCSMRMMILRM
1415 /* TODO: By conventions we should have this name LCRMU instead of RMU_LC */
1435 #endif /* __ENVOPTH__ */
1438 /********************************************************************30**
1441 **********************************************************************/