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 /**************************************************************************
42 **************************************************************************/
43 /* error checking, choose none or one */
47 #define ERRCHK /* error checking */
52 /**************************************************************************
53 unix - multi-threaded system services
54 **************************************************************************/
55 /* Multi threaded solaris/linux operating system */
56 #ifdef MT /* unix - multi-threaded */
57 #define MT_SOL /* Solaris Thread Architecture */
64 //#define MAC_5GTF_UPDATE
65 #define PRE_DEF_UE_CTX
66 //#define ENB_SUPPORT_RLC_UM_MODE
67 #define TMR_BASED_TPT_PRINT_5GTF
68 #define EG_GEN_LOAD_5GTF
69 /*Refer 6.3.2 5G-PDCP SN "V5G_323_v1p0"*/
70 //#define SN_PDCP_5GTF
71 //#define PCAP_IP_DATGEN_LOAD_5GTF
72 #define NO_BSR_SR_5GTF
73 //#define PAL_ENABLE_UL_CA
74 #define DROP_UL_MSG_5GTF
79 /* Flags that apply for the entire product are defined here */
80 /* The legacy and the system services defintions are here */
82 #define CMINET_BSDCOMPAT
83 /* #define SS_TICKS_SEC 100 */
84 #define CMFILE_REORG_1
85 #define CMFILE_REORG_2
88 #undef HI_MULTI_THREADED
90 #define SS_WL_REGION 1
93 #define SS_M_PROTO_REGION
95 #undef SS_TSKLOG_ENABLE
96 #define SS_MULTICORE_SUPPORT
97 #undef SS_USE_ICC_MEMORY
98 #define SS_LOCKLESS_MEMORY
99 #define SS_USE_ZBC_MEMORY
100 #define SS_THR_REG_MAP
102 #undef SS_LICENSE_CHECK
103 #undef SS_ROUTE_MSG_CORE1
104 #undef SS_DBUF_REFLOCK_DISABLE
106 #undef SSI_MEM_CORR_PREVENTION
107 #undef MS_MBUF_CORRUPTION
109 /* 5GNR product specific definations are starts here */
113 /* define AM_RLC_SN_18_BIT means 18 bit SN otherwise 12 bit SN */
114 //#define AM_RLC_SN_18_BIT
115 //#define NR_PDCP_DRB_SN_18_BIT
117 /* LTE product specific definitions are here */
121 #define TENB_RTLIN_CHANGES
122 #define TENB_SPLIT_ARCH_SUPPORT
123 #define TENB_SPLIT_ARCH
124 #undef TENB_T2K3K_SPECIFIC_CHANGES
126 #undef MSPD_DBG_ENABLE
128 #define TTI_PROC_FIRST
129 #undef FLAT_BUFFER_OPT
132 #undef TENB_AS_SECURITY
138 #define TENB_MAX_UE_SUPPORTED 32
147 #if defined(MODE) && (MODE==TDD)
155 #define SPLIT_RLC_DL_TASK
156 #undef RG_SCH_DYNDLDELTA
161 #define T2200_FDD_CPU_OVRLD
163 #define T2200_2GB_DDR_CHANGES
164 #define BEST_EFFORT_2_UE_PER_TTI
165 #define KWSELFPSTDLCLEAN
166 #define BATCH_PROCESSING_DL
167 #define BATCH_PROCESSING_UL
168 #define TL_ALLOC_ICC_MEM
172 #undef PDCP_RLC_DL_RBUF
173 #undef MAC_RLC_UL_RBUF
174 #undef NTL_LIB_DIS_FOR_UL
175 #undef TFU_ALLOC_EVENT_NO_INIT
176 #if defined(MODE) && (MODE==TDD)
177 #define KWSELFPSTDLCLEAN
179 #define YSMS_RLF_DETCT
184 #if defined(CA_ENABLE) && (CA_ENABLE==YES)
186 #define TENB_MULT_CELL_SUPPRT
189 #define LTE_ADV_UECAP
191 #define NTL_LIB_DIS_FOR_UL
192 #ifndef SPLIT_RLC_DL_TASK
194 #define SPLIT_RLC_DL_TASK
199 #ifdef SPLIT_RLC_DL_TASK
200 #define MAC_RLC_HARQ_STA_RBUF
201 #define RLC_MAC_STA_RSP_UL_RBUF
206 /* Interface flags - The interface flags are shared by more than */
207 /* one layer and hence need to be defined in a common place. */
209 /* KWU interface definition */
212 /* SZT interface (App<->S1AP) flags */
217 /* CZT interface (App<->X2AP) flags */
220 /* LSZ interface (SM<->S1AP) flags */
223 /* LEG interface (SM<->EGTP) flags */
226 /* CTF interface (App<->CL) flags */
230 /* CPJ interface (RRC<->PDCP) flags */
233 /* TFU interface flags */
240 #define TFU_UPGRADE 1
243 /* RGR interface (APP<->SCH) flags */
250 /* RRM related interface flags */
253 /* LSB interface flags */
256 #define SB_CHECKSUM /* Define to include trillium supplied function */
257 #define SB_CHECKSUM_CRC
259 /**************************************************************************
260 Layer manager interface version definition
261 **************************************************************************/
262 #define LMINT3 /* interface 3 */
264 #ifdef SS /* Common System Services */
265 /**************************************************************************
266 Common System Services parameters
267 **************************************************************************/
268 /* product specific options */
269 #define SS_RTR_SUPPORT /* for supporting router tasks */
271 #ifdef SS_DRVR_SUPPORT
272 /* for backward compatibility */
274 /* for forward compatibility */
276 #endif /* SS_DRVR_SUPPORT */
278 /* post format, choose none or one */
279 #define FCSPOSTINT /* forward compatibility, post format */
283 /**************************************************************************
284 MTSS-Solaris parameters
285 **************************************************************************/
286 #ifdef SS_MT /* MTSS-Solaris */
288 #define CONAVL /* console availability option */
292 /******************************************************************/
294 /******************************************************************/
297 /* List of other layers interacting with SCTP and in the same binary */
314 /* Coupling with other layers */
324 #ifdef IPV6_SUPPORTED
325 #define SB_IPV6_SUPPORTED
329 /* needed dependencies */
348 /*----- SCTP have dependencies in LSB and SCT ------*/
355 /*----- SCTP have dependencies in LSB and SCT ------*/
364 /**************************************************************************
366 **************************************************************************/
371 /* Define the layers that coexist with S1AP. */
384 /* product options */
386 #define CM_PASN_CRIT_HANDL
389 #define SZ_DYNAMIC_PEER
392 /* interface options */
393 #define LCSZUISZT /* loosely coupled, SZ upper layer SZT interface */
394 #define LCSZMILSZ /* loosely coupled, SZ manegement LSZ interface */
395 #define LCSZLISCT /* loosely coupled, SZ lower layer SCT interface */
397 /* Based on the selection of coupling above the section below */
398 /* defines enabling/disabling of loose coupling on the */
399 /* respective interfaces */
400 /* ****** THIS SECTION REQUIRES NO FURTHER CHANGES. ********** */
401 /* Interface between S1AP and Application */
408 /* Interface between S1AP and management (SM) */
415 /* Interface between S1AP and Application */
422 /* Interface between SCTP and S1AP */
431 /******************************************************************/
433 /******************************************************************/
437 #define EGTP_U 1 /* LTE Evolved GTP User Plane Protocol */
440 /* All the layers that this layer interacts with and are part of */
441 /* the binary are to be included here. */
454 #ifdef IPV6_SUPPORTED
455 #define EG_IPV6_SUPPORTED
458 /* EGTP does not use loose coupling towards higher layers and does */
459 /* not talk to TUCL on HIT in the latest TeNB. However if it were */
460 /* to use TUCL, it would be loosely coupled as TUCL is multi- */
462 /* TODO - LCEGUIEGT should not be needed. */
468 /* Managing the loose coupling definitions on the interface based */
469 /* how the interface is coupled from E-GTP layer. */
470 /* ****** THIS SECTION REQUIRES NO FURTHER CHANGES. ********** */
471 #if defined(LCEGMILEG)
477 #if defined(LCEGLIHIT)
490 /*************************************************************************/
491 /* LTE-RRC Section */
492 /*************************************************************************/
497 /* Define other layers that are part of the same binary */
498 /* Along with RRC, we have application(NX,WR) and stack */
504 /* TODO - We need either WR or NX and not necessarily */
505 /* both of them. See if we can remove one of it. */
515 /* RRC layer functionality flags */
516 #define DISABLE_RRCSEC
518 /* Interface coupling related flags */
519 /* TODO - LCNHUINHU should not be needed. */
520 /* TODO - LCWRLINHU should not be needed. */
531 /* CRG interface between MAC and RRC should be loosely coupled */
534 /* Loose coupled NHU */
541 /* Light weight loose coupled NHU */
548 /* Loosely coupled CPJ */
555 /* Loosely coupled PJU */
562 /* Loosely coupled CRG */
565 #define LCCRG 1 /* loosely coupled CRG interface */
569 /* Loosely coupled CTF */
572 #define LCCTF 1 /* loosely coupled CTF interface */
574 #endif /* LCNHLICTF */
578 #define LCCKW 1 /* loosely coupled CKW interface */
584 #define LCKWU 1 /* loosely coupled KWU interface */
588 /* TODO These flags should move to SM definitions */
591 /* Define flags related to loosely coupled LNH interface */
598 /* Release 9 related flags */
607 #endif /* LTERRC_REL9 */
609 #ifdef RRC_PHY_CFG_SUPP
613 #define RNC_INTEG_CCPU
617 /****************************************************************************
619 ****************************************************************************/
620 #if (defined(TF) || defined(YS))
622 /* Self entity definitions */
628 /* Other entity definitions */
633 /* Selection of interface coupling flags */
640 #if defined(MODE) && (MODE == TDD)
646 /* The handling of enabling LC based on coupling enabled */
647 /* between CL and other layers. */
648 /* ****** THIS SECTION REQUIRES NO FURTHER CHANGES. ********** */
676 /****************************************************************************
678 ****************************************************************************/
683 /* Product options */
684 #define RG_PHASE2_SCHED 1
692 #define LTEMAC_RGU_PAD 1
693 #define LTEMAC_MIMO 1
698 #define LTEMAC_DLUE_TMGOPTMZ
699 #define RG_DL_DELTA_CHANGE
700 #define RG_CMNCH_SCHDELTA_CHANGE
701 #undef RG_ULSCHED_AT_CRC
702 #define TFU_RECPREQ_DELTA_CHANGE
703 #define TFU_DL_DELTA_CHANGE
704 #define TFU_UL_DELTA_CHANGE
705 #define TFU_DLHQFBK_DELTA_CHANGE
708 /* Define all the layers that are colocated with the MAC layer */
709 /* RRC is located on a different binary on a different CPU. RRC */
710 /* should not be included here. SM should also not be defined */
711 /* as it is also located on a different CPU. */
721 /* This section selects the coupling for each interface related to */
722 /* MAC. The section below enabling the coupling code appropriately. */
723 /* CCPU_OPT flag enables additional information between MAC and RLC */
724 /* that aids in better selection of transport block size. */
725 /* TODO - We should delete LWLC for RGM interface. */
735 /* Managing the loose coupling definitions on the interface based */
736 /* how the interface is coupled from MAC layer. */
737 /* ****** THIS SECTION REQUIRES NO FURTHER CHANGES. ********** */
779 /******************* section to be changed by CUSTOMERS ******************/
783 * Introduced timing deltas in FDD for DL control, DL data,
784 * Reception Request, CRC Indication, HARQ feedback Indication.
786 #ifdef LTEMAC_DLUE_TMGOPTMZ
787 /* Delta used between MAC and RLC to recieve data from RLC*/
793 #if defined(DLHQ_RTT_OPT) && defined(LOWLATENCY)
798 #define TFU_RECPREQ_DLDELTA 2
801 #define RG_ENV_DL_DELTA (TFU_DELTA + RGU_DELTA)
803 #define TFU_DLDATA_DLDELTA (TFU_DELTA)
804 #define TFU_CRCIND_ULDELTA 2
805 #define TFU_ULCNTRL_DELTA (4 - TFU_CRCIND_ULDELTA)
808 /* Number of subframes in advance UL control (DCI-0/PHICH) should be sent from SCH */
809 #define TFU_ULCNTRL_DLDELTA 2
811 #define TFU_ULCNTRL_DLDELTA 1
815 /* Number of subframes later DL HARQ feedback reaches MAC from PHY */
816 #define TFU_ENV_HQFBKIND_ULDELTA 2
818 #define TFU_ENV_HQFBKIND_ULDELTA 3
821 /* Number of subframes in Advance the Downlink control is
822 given from MAC to PHY */
823 #define TFU_DLCNTRL_DLDELTA TFU_DELTA
826 /* Number of subframes in advance UL control (DCI/PHICH) should be sent from SCH */
827 #define TFU_ULCNTRL_DLDELTA (RG_SCH_CMN_HARQ_INTERVAL - TFU_CRCIND_ULDELTA)
831 /* Number of subframes for UL CRC to reach SCH after reception of data at PHY */
832 #define TFU_CRCIND_ULDELTA 2
834 #else /* LTEPHY_MSPD */
836 /* Number of subframes in advance DL control should be sent from SCH */
837 #define TFU_DLCNTRL_DLDELTA 2
838 /* Number of subframes in advance DL data should be sent from MAC */
839 #define TFU_DLDATA_DLDELTA 2
841 /* Number of subframes for UL CRC to reach SCH after reception of data at PHY */
842 #define TFU_CRCIND_ULDELTA 2
843 /* Number of subframes later DL HARQ feedback reaches SCH from PHY */
844 #define TFU_ENV_HQFBKIND_ULDELTA 2
846 #endif /* LTEPHY_MSPD */
847 /* The number of frames ahead that RLC may require a STA IND */
848 /* Seperated DL control and DL data timing deltas in FDD */
849 #if (TFU_DLDATA_DLDELTA > TFU_DLCNTRL_DLDELTA)
850 #define RG_ENV_DL_DELTA (TFU_DLDATA_DLDELTA + RGU_DELTA)
852 #define RG_ENV_DL_DELTA (TFU_DLCNTRL_DLDELTA + RGU_DELTA)
857 /* Delta between Random Access Response and Msg-3*/
858 #define RGSCH_RARSP_MSG3_DELTA 6
860 /* PUSCH data reception delta after the PDCCH for uplink(DCI-0) is sent*/
861 #define RGSCH_PDCCH_PUSCH_DELTA 4
864 #define RG_SCH_HDFDD_DELTA 10
866 #define RG_ENV_SCH_CMN_DL_DELTA RG_ENV_DL_DELTA /* This parameter should not be less than RG_ENV_DL_DELTA */
868 #define RG_SCH_NO_DELTA 0 /*Consider no delta */
869 /* ccpu00117459 - ADD - Added check if incompatible falgs are enabled*/
870 /* HDFDD and TDD cannot be enabled at the same time. */
871 #if defined(LTEMAC_HDFDD) && (defined(LTE_TDD) || defined(TFU_TDD))
872 #error "Enabling LTEMAC_HDFDD along with LTE_TDD or TFU_TDD is not a valid combination."
875 /* LTE_TDD and TFU_TDD must be enabled for TDD mode */
876 #if (defined(LTE_TDD) && (!defined(TFU_TDD))) || (defined(TFU_TDD) && (!defined(LTE_TDD)))
877 #error "Both LTE_TDD and TFU_TDD must be enabled for TDD mode of operation."
881 /****************************************************************************
883 ****************************************************************************/
886 /* Only PDCP and MAC are in the same binary. RRC runs on a different */
887 /* CPU and should not be defined here. */
892 /* -------- LKW Interface ------*/
893 /* This is the interface between RLC and the stack manager */
894 /* This should support loosely coupling as they dont run */
895 /* in the same thread */
898 /* -------- CKW Interface ------*/
899 /* CKW interface is loosely coupled as RRC and RLC reside */
900 /* on two different CPUs running in different threads */
903 /* -------- KWU Interface ------*/
904 /* KWU interface exists between RRC/PDCP and RLC. Since RRC is */
905 /* is loosely coupled with RLC, loosely coupled interface is */
907 /* CCPU_OPT carries additional information on the interface to */
908 /* assit better scheduling at MAC */
911 /* RGU interface between RLC and MAC should be light weight */
912 /* loosely coupled for performance. */
913 /* TODO - Do we also need loose coupled interface */
918 /* The management of enabling of loose coupling code based */
919 /* on the selection of coupling choice between RLC and other */
920 /* modules is below. */
922 /* Other RLC product flags */
923 #undef RLC_STATUS_GEN
926 /* ****** THIS SECTION REQUIRES NO FURTHER CHANGES. ********** */
947 /****************************************************************************
949 ****************************************************************************/
960 /* Other PDCP product flags */
962 #undef CIPH_BATCH_PROC
964 /* The handling of enabling LC based on whether PDCP enabled */
965 /* loose coupling when PDCP is acting as the source. */
966 /* ****** THIS SECTION REQUIRES NO FURTHER CHANGES. ********** */
991 #undef SPACC_NONBLOCKING
992 #undef INTEL_NATIVE_SPACC
993 #undef INTEL_SPACC_IV_OPTIMIZATION
994 #undef SPACC_THREADED
997 /****************************************************************************
998 TOTALeNodeB Application section
999 ****************************************************************************/
1002 /* Since application is many different layers to the lower layers */
1003 /* it must define multiple entities as self entities. */
1027 /* Include all the layers that are part of the same binary. */
1028 /* We have stack manager (SM), S1AP (SZ), X2AP (CZ), RRM (RM), */
1029 /* RRC(NH) within the same binary. */
1054 /* Coupling choices between application and other layers */
1055 /* TODO - LWLCWRLIRGR should not be needed. */
1056 /* TODO - LCEULIEGT should not be needed. */
1057 /* TODO - LCNXLINHU should not be needed. */
1074 /* Coupling choices between stack manager and the layers */
1075 /* TODO LCSMSBMILSB should be replaced with LCSMMILSB. */
1076 /* TODO LCSMHIMILHI should be replaced with LCSMMILHI. */
1084 /* TODO LCKWMILKW should be changed to LCSMMILKW in SMM */
1085 /* LCKWMILKW should be used only in RLC product */
1099 /* Application functionality related flags */
1101 #define LTE_HO_SUPPORT
1102 #define WR_SIBS_ENBLD
1103 #undef WR_DETECT_RLF
1107 #define WR_IPV6_OAM_WORKAROUND
1109 #undef WR_GRPPWR_CNTRL
1110 /* #undef ENB_OVRLOAD */
1111 /* The handling of enabling LC based on whether TeNB enabled */
1112 /* loose coupling when PDCP is acting as the source. */
1113 /* ****** THIS SECTION REQUIRES NO FURTHER CHANGES. ********** */
1180 /* ************* SM and layer interaction flags **************** */
1241 /* TODO - This definition does not follow naming conventions and */
1242 /* also is a duplicate of the above macro. This should be removed */
1243 /* from the code and then from this make file. */
1251 /* ************** End of TeNB Application section *************** */
1253 /****************************************************************************
1255 ****************************************************************************/
1260 /* Define the layers that coexist with X2AP. They are SCTP (SB), */
1261 /* X2AP user (RS/WR), stack manager (SM). */
1274 /* product options */
1276 #define CZ_DYNAMIC_PEER
1279 /* interface options */
1280 #define LCCZUICZT /* loosely coupled, CZ upper layer CZT interface */
1281 #define LCCZLISCT /* loosely coupled, CZ lower layer SCT interface */
1282 #define LCCZMILCZ /* loosely coupled, CZ manegement LCZ interface */
1284 /* Based on the selection of coupling above the section below */
1285 /* defines enabling/disabling of loose coupling on the */
1286 /* respective interfaces */
1287 /* ****** THIS SECTION REQUIRES NO FURTHER CHANGES. ********** */
1288 /* Interface between S1AP and Application */
1295 /* Interface between X2AP and management (SM) */
1302 /* Interface between X2AP and Application */
1309 /* Interface between SCTP and X2AP */
1318 /* ******************************************************************* */
1320 /* ******************************************************************* */
1323 /* Define the products that TUCL directly talks to and are part of the */
1337 /* We need to define LCHIUIHIT if there is at least one layer talking */
1338 /* to TUCL in a loosely coupled fashion. */
1342 /* The section below should not be edited normally. */
1356 /****************************************************************************
1358 ****************************************************************************/
1360 #define LWLCSMSONILNL
1365 #ifdef LWLCSMSONILNL
1378 /****************************************************************************
1380 ****************************************************************************/
1386 #define LWLCSMRMMILRM
1405 /* TODO: By conventions we should have this name LCRMU instead of RMU_LC */
1425 #endif /* __ENVOPTH__ */
1428 /********************************************************************30**
1431 **********************************************************************/