|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
RRC ConnectionReconfiguration in DetailAs in LTE, RRC Reconfiguration is the most important steps in establishing Radio Connection between UE and Network. Understanding every details of RRC Reconfiguration would imply understanding almost everything in NR Radio Stack. I would take around an year to get the understandings on the details of this single message to a certain degree and you would need to keep learning further details and new things throughout the whole life cycles of 5G/NR. So.. don't be too hurry trying to understand everything at a time and read / think on small pieces and analyze the protocol log when available whenever you have chance. This page also will be updated piece by piece and linked to many other pages for the details.
Overall Sequence of RRC Reconfiguration for NRFollowing sequence shows what triggers NR RRC Reconfiguration on UE. As you see here, this can be triggered by LTE (in NSA(Non-Standalone) deployment) or by NR (in SA(Standalone) deployment).
Purpose (Function) of RRC ReconfigurationAs you can guess from the word itself, the major functionality of RrcReconfiguration is to setup or modify RRC configuration. This imply that there should have already been some RRC Configuration process before this message. It is true. In LTE, there is a step RrcConnectionSetup message before RrcConnectionReconfiguration and in NR there is RRC Setup message before RrcReconfiguration. The major functionality of RRC Reconfiguration are to configure following RRC Components/Functions
For each of the RRC Component/Functions, RrcReconfiguration message can do following operations
What should UE do when it gets RRCReconfiguration message ?What should a UE do when it gets RrcReconfiguration message ? The answer is simple. Do whatever the message tell you to do. I know this is not the answer you want to hear :). Like in LTE, RRCReconfiguration is the most complicated message in NR. Understanding this message in full detail is like understanding the full protocol stack of NR. You will see a good framework or starting point of understanding this message in 3GPP 38.331 - 5.3.5.3 Reception of an RRCReconfiguration by the UE. Followings are some of the highest level IE(Information Elements) that you may start with.
Since this message carries too many parameters (Information Elements), you would easily get lost if you try to go through each and every items from the beginning. I would suggest you to pick up any one of the high level items from the items listed above and try to understand the overall functionality of the high level item ,and then move to next item and get an overview and so on. When you have overall understandings on every items listed above, then move down to next level (one-step down) in each section. RRC Reconfiguration Message structureFollowings are RRC Reconfiguration Message structure from 38.331. ( RRCReconfiguration ::= SEQUENCE { rrc-TransactionIdentifier RRC-TransactionIdentifier, criticalExtensions CHOICE { rrcReconfiguration RRCReconfiguration-IEs, criticalExtensionsFuture SEQUENCE {} } } RRCReconfiguration-IEs ::=SEQUENCE { radioBearerConfig RadioBearerConfig OPTIONAL, -- Need M secondaryCellGroup OCTET STRING (CONTAINING CellGroupConfig) OPTIONAL, -- Need M measConfig MeasConfig OPTIONAL, -- Need M lateNonCriticalExtension OCTET STRING OPTIONAL, nonCriticalExtension SEQUENCE {} OPTIONAL } < RadioBearerConfig >The radio bearer configuration process allows the network to establish, modify, and release radio bearers for the UE. the radio bearer configuration procedure allows the network to control the radio bearers used by the UE to meet the QoS and service requirements. It is a key part of RRC connection establishment, reconfiguration, and mobility procedures. Here is a brief overview of what radio bearer configuration does:
Here goes a little bit detailed summary based on 38.331-5.3.5.6 The UE performs actions to configure radio bearers based on the RadioBearerConfig IE received from the network. This includes SRB release, SRB addition/modification, DRB release, DRB addition/modification, multicast MRB release, and multicast MRB addition/modification. Followings are summary based on each sections under 38.331-5.3.5.6
1> SRB Release 2> SRB Addition/Modification 3> DRB Release 4> DRB Addition/Modification 5> Multicast MRB Release 6> Multicast MRB Addition/Modification Followings are the Information Elements for RadioBearerConfig RadioBearerConfig ::= SEQUENCE { srb-ToAddModList SRB-ToAddModList OPTIONAL, -- Need N srb3-ToRelease ENUMERATED{true} OPTIONAL, -- Need N drb-ToAddModList DRB-ToAddModList OPTIONAL, -- Need N drb-ToReleaseList DRB-ToReleaseList OPTIONAL, -- Need N securityConfig SecurityConfig OPTIONAL, -- Cond M ... } SRB-ToAddModList ::= SEQUENCE (SIZE (1..2)) OF SRB-ToAddMod SRB-ToAddMod ::= SEQUENCE { srb-Identity SRB-Identity, reestablishPDCP ENUMERATED{true} OPTIONAL, - Need N discardOnPDCP ENUMERATED{true} OPTIONAL, -- Need N pdcp-Config PDCP-Config OPTIONAL, -- Cond PDCP ... } DRB-ToAddModList ::= SEQUENCE (SIZE (1..maxDRB)) OF DRB-ToAddMod DRB-ToAddMod ::= SEQUENCE { cnAssociation CHOICE { eps-BearerIdentity INTEGER (0..15) OPTIONAL, sdap-Config SDAP-Config OPTIONAL }, drb-Identity DRB-Identity, reestablishPDCP ENUMERATED{true} OPTIONAL, recoverPDCP ENUMERATED{true} OPTIONAL, pdcp-Config PDCP-Config OPTIONAL, ... } SDAP-Config ::= SEQUENCE { pdu-Session PDU-SessionID, sdap-HeaderDL ENUMERATED {present, absent}, sdap-HeaderUL ENUMERATED {present, absent}, defaultDRB BOOLEAN, mappedQoS-FlowsToAdd SEQUENCE (SIZE (1..maxNrofQFIs)) OF QFI OPTIONAL, mappedQoS-FlowsToRelease SEQUENCE (SIZE (1..maxNrofQFIs)) OF QFI OPTIONAL, ... } QFI ::= INTEGER (0..maxQFI) PDU-SessionID ::= INTEGER (0..255) PDCP-Config ::= SEQUENCE { drb SEQUENCE { discardTimer ENUMERATED {ms10, ms20, ms30, ms40, ms50, ms60, ms75, ms100, ms150, ms200, ms250, ms300, ms500, ms750, ms1500, infinity} OPTIONAL, --Cond Setup pdcp-SN-SizeUL ENUMERATED {len12bits, len18bits} OPTIONAL, -- Cond Setup2 pdcp-SN-SizeDL ENUMERATED {len12bits, len18bits} OPTIONAL, -- Cond Setup2 headerCompression CHOICE { notUsed NULL, rohc SEQUENCE { maxCID INTEGER (1..16383) DEFAULT 15, profiles SEQUENCE { profile0x0001 BOOLEAN, profile0x0002 BOOLEAN, profile0x0003 BOOLEAN, profile0x0004 BOOLEAN, profile0x0006 BOOLEAN, profile0x0101 BOOLEAN, profile0x0102 BOOLEAN, profile0x0103 BOOLEAN, profile0x0104 BOOLEAN }, drb-ContinueROHC ENUMERATED { true } OPTIONAL -- Need N }, uplinkOnlyROHC SEQUENCE { maxCID INTEGER (1..16383) DEFAULT 15, profiles SEQUENCE { profile0x0006 BOOLEAN }, drb-ContinueROHC ENUMERATED { true } OPTIONAL -- Need N }, ... }, integrityProtection ENUMERATED { enabled } OPTIONAL, -- Cond ConnectedTo5GC statusReportRequired ENUMERATED { true } OPTIONAL, -- Cond Rlc-AM outOfOrderDelivery ENUMERATED { true } OPTIONAL -- Need R } OPTIONAL, -- Cond DRB moreThanOneRLC SEQUENCE { primaryPath SEQUENCE { cellGroup CellGroupId OPTIONAL, -- Need R logicalChannel LogicalChannelIdentity OPTIONAL -- Need R }, ul-DataSplitThreshold UL-DataSplitThreshold OPTIONAL, -- Cond SplitBearer pdcp-Duplication BOOLEAN OPTIONAL -- Need R } OPTIONAL, t-Reordering ENUMERATED { ms0, ms1, ms2, ms4, ms5, ms8, ms10, ms15, ms20, ms30, ms40, ms50, ms60, ms80, ms100, ms120, ms140, ms160, ms180, ms200, ms220, ms240, ms260, ms280, ms300, ms500, ms750, ms1000, ms1250, ms1500, ms1750, ms2000, ms2250, ms2500, ms2750, ms3000, spare28, spare27, spare26, spare25, spare24, spare23, spare22, spare21, spare20, spare19, spare18, spare17, spare16, spare15, spare14, spare13, spare12, spare11, spare10, spare09, spare08, spare07, spare06, spare05, spare04, spare03, spare02, spare01 } OPTIONAL, -- Need S ..., [[ cipheringDisabled ENUMERATED {true} OPTIONAL -- Cond ConnectedTo5GC ]] } UL-DataSplitThreshold ::= ENUMERATED { b0, b100, b200, b400, b800, b1600, b3200, b6400, b12800, b25600, b51200, b102400, b204800, b409600, b819200, b1228800, b1638400, b2457600, b3276800, b4096000, b4915200, b5734400, b6553600, infinity, spare8, spare7, spare6, spare5, spare4, spare3, spare2, spare1} DRB-ToReleaseList ::= SEQUENCE (SIZE (1..maxDRB)) OF DRB-Identity SecurityConfig ::= SEQUENCE { securityAlgorithmConfig SecurityAlgorithmConfig OPTIONAL, keyToUse ENUMERATED{KeNB, S-KgNB} OPTIONAL ... } SecurityAlgorithmConfig ::= SEQUENCE { cipheringAlgorithm CipheringAlgorithm, integrityProtAlgorithm IntegrityProtAlgorithm OPTIONAL, -- Need R ... } IntegrityProtAlgorithm ::= ENUMERATED { nia0, nia1, nia2, nia3, spare4, spare3, spare2, spare1, ...} CipheringAlgorithm ::= ENUMERATED { nea0, nea1, nea2, nea3, spare4, spare3, spare2, spare1, ...} CellGroupConfig ::= SEQUENCE { cellGroupId CellGroupId, rlc-BearerToAddModList SEQUENCE (SIZE(1..maxLC-ID)) OF RLC-Bearer-Config OPTIONAL, rlc-BearerToReleaseList SEQUENCE (SIZE(1..maxLC-ID)) OF LogicalChannelIdentity OPTIONAL, mac-CellGroupConfig MAC-CellGroupConfig OPTIONAL, physicalCellGroupConfig PhysicalCellGroupConfig OPTIONAL, spCellConfig SpCellConfig OPTIONAL, sCellToAddModList SEQUENCE (SIZE (1..maxNrofSCells)) OF SCellConfig OPTIONAL, sCellToReleaseList SEQUENCE (SIZE (1..maxNrofSCells)) OF SCellIndex OPTIONAL, ... } MAC-CellGroupConfig ::= SEQUENCE { drx-Config SetupRelease { DRX-Config } OPTIONAL, -- Need M schedulingRequestConfig SchedulingRequestConfig OPTIONAL, -- Need M bsr-Config BSR-Config OPTIONAL, -- Need M tag-Config TAG-Config OPTIONAL, -- Need M phr-Config SetupRelease { PHR-Config } OPTIONAL, -- Need M skipUplinkTxDynamic BOOLEAN, cs-RNTI SetupRelease { RNTI-Value } OPTIONAL -- Need M } DRX-Config ::= SEQUENCE { drx-onDurationTimer CHOICE { subMilliSeconds INTEGER (1..31), milliSeconds ENUMERATED { ms1, ms2, ms3, ms4, ms5, ms6, ms8, ms10, ms20, ms30, ms40, ms50, ms60, ms80, ms100, ms200, ms300, ms400, ms500, ms600, ms800, ms1000, ms1200, ms1600, spare9, spare8, spare7, spare6, spare5, spare4, spare3, spare2, spare1 } }, drx-InactivityTimer ENUMERATED { ms0, ms1, ms2, ms3, ms4, ms5, ms6, ms8, ms10, ms20, ms30, ms40, ms50, ms60, ms80, ms100, ms200, ms300, ms500, ms750, ms1280, ms1920, ms2560, spare9, spare8, spare7, spare6, spare5, spare4, spare3, spare2, spare1}, drx-HARQ-RTT-TimerDL INTEGER (0..56), drx-HARQ-RTT-TimerUL INTEGER (0..56), drx-RetransmissionTimerDL ENUMERATED { sl0, sl1, sl2, sl4, sl6, sl8, sl16, sl24, sl33, sl40, sl64, sl80, sl96, sl112, sl128, sl160, sl320, spare15, spare14, spare13, spare12, spare11, spare10, spare9, spare8, spare7, spare6, spare5, spare4, spare3, spare2, spare1}, drx-RetransmissionTimerUL ENUMERATED { sl0, sl1, sl2, sl4, sl6, sl8, sl16, sl24, sl33, sl40, sl64, sl80, sl96, sl112, sl128, sl160, sl320, spare15, spare14, spare13, spare12, spare11, spare10, spare9, spare8, spare7, spare6, spare5, spare4, spare3, spare2, spare1 }, drx-LongCycleStartOffset CHOICE { ms10 INTEGER(0..9), ms20 INTEGER(0..19), ms32 INTEGER(0..31), ms40 INTEGER(0..39), ms60 INTEGER(0..59), ms64 INTEGER(0..63), ms70 INTEGER(0..69), ms80 INTEGER(0..79), ms128 INTEGER(0..127), ms160 INTEGER(0..159), ms256 INTEGER(0..255), ms320 INTEGER(0..319), ms512 INTEGER(0..511), ms640 INTEGER(0..639), ms1024 INTEGER(0..1023), ms1280 INTEGER(0..1279), ms2048 INTEGER(0..2047), ms2560 INTEGER(0..2559), ms5120 INTEGER(0..5119), ms10240 INTEGER(0..10239) }, shortDRX SEQUENCE { drx-ShortCycle ENUMERATED { ms2, ms3, ms4, ms5, ms6, ms7, ms8, ms10, ms14, ms16, ms20, ms30, ms32, ms35, ms40, ms64, ms80, ms128, ms160, ms256, ms320, ms512, ms640, spare9, spare8, spare7, spare6, spare5, spare4, spare3, spare2, spare1 }, drx-ShortCycleTimer INTEGER (1..16) } OPTIONAL, -- Need R drx-SlotOffset INTEGER (0..31) } PHR-Config ::= SEQUENCE { phr-PeriodicTimer ENUMERATED {sf10, sf20, sf50, sf100, sf200,sf500, sf1000, infinity}, phr-ProhibitTimer ENUMERATED {sf0, sf10, sf20, sf50, sf100,sf200, sf500, sf1000}, phr-Tx-PowerFactorChange ENUMERATED {dB1, dB3, dB6, infinity}, multiplePHR BOOLEAN, phr-Type2PCell BOOLEAN, phr-Type2OtherCell BOOLEAN, phr-ModeOtherCG ENUMERATED {real, virtual} } TAG-Config ::=SEQUENCE { tag-ToReleaseList SEQUENCE (SIZE (1..maxNrofTAGs)) OF TAG-Id OPTIONAL,-- Need N tag-ToAddModList SEQUENCE (SIZE (1..maxNrofTAGs)) OF TAG-ToAddMod OPTIONAL -- Need N } TAG-ToAddMod ::= SEQUENCE { tag-Id TAG-Id, timeAlignmentTimer TimeAlignmentTimer, ... } TAG-Id ::= INTEGER (0..maxNrofTAGs-1) TimeAlignmentTimer ::= ENUMERATED {ms500, ms750, ms1280, ms1920, ms2560, ms5120, ms10240, infinity} BSR-Config ::= SEQUENCE { periodicBSR-Timer ENUMERATED { sf1, sf5, sf10, sf16, sf20, sf32, sf40, sf64, sf80, sf128, sf160, sf320, sf640, sf1280, sf2560, infinity}, retxBSR-Timer ENUMERATED { sf10, sf20, sf40, sf80, sf160, sf320, sf640, sf1280, sf2560, sf5120, sf10240, spare5, spare4,spare3, spare2, spare1}, logicalChannelSR-DelayTimer ENUMERATED { sf20, sf40, sf64, sf128, sf512, sf1024, sf2560, spare1} OPTIONAL -- Need R } SchedulingRequestConfig ::= SEQUENCE { schedulingRequestToAddModList SEQUENCE (SIZE (1..maxNrofSR-ConfigPerCellGroup)) OF SchedulingRequestToAddMod OPTIONAL, -- Need N schedulingRequestToReleaseList SEQUENCE (SIZE (1..maxNrofSR-ConfigPerCellGroup)) OF SchedulingRequestId OPTIONAL -- Need N } SchedulingRequestToAddMod ::=SEQUENCE { sr-ConfigIndex SchedulingRequestId, sr-ProhibitTimer ENUMERATED {ms1, ms2, ms4, ms8, ms16, ms32, ms64, ms128} OPTIONAL, -- Need S sr-TransMax ENUMERATED {n4,n8,n16,n32,n64,spare3,spare2,spare1} } SchedulingRequestId ::= INTEGER (0..7) CellGroupId ::= INTEGER (1.. maxSCellGroups) LCH-Config ::= SEQUENCE { logicalChannelIdentity LogicalChannelIdentity, servedRadioBearer INTEGER (1..32) OPTIONAL, reestablishRLC ENUMERATED {true} OPTIONAL, rlc-Config RLC-Config OPTIONAL, mac-LogicalChannelConfig LogicalChannelConfig OPTIONAL } LogicalChannelIdentity ::= INTEGER (1..FFS) PhysicalCellGroupConfig ::= SEQUENCE { harq-ACK-SpatialBundlingPUCCH ENUMERATED {true} OPTIONAL, -- Need S harq-ACK-SpatialBundlingPUSCH ENUMERATED {true} OPTIONAL, -- Need S p-NR P-Max OPTIONAL, -- Need R pdsch-HARQ-ACK-Codebook ENUMERATED {semiStatic, dynamic}, tpc-SRS-RNTI RNTI-Value OPTIONAL, -- Need R tpc-PUCCH-RNTI RNTI-Value OPTIONAL, -- Need R tpc-PUSCH-RNTI RNTI-Value OPTIONAL, -- Need R sp-CSI-RNTI RNTI-Value OPTIONAL, -- Cond SP-CSI-Report cs-RNTI SetupRelease { RNTI-Value } OPTIONAL, -- Need R } < MeasConfig >MeasConfig is to specify various configurations for RRC level measurement like types of measurement, types of reference signal for the measurement etc. The details are specifed in 38.331-5.5 Types of Measurement
Type of Reference signal for the measurement and corresponding measurement item. These measurements are performed only when they are configured in the RRC message.
Components of Measurement Configuration This is a pretty huge topic and it is decribed in a separate note here. MeasConfig ::= SEQUENCE { measObjectToRemoveList MeasObjectToRemoveList OPTIONAL, -- Need N measObjectToAddModList MeasObjectToAddModList OPTIONAL, -- Need N reportConfigToRemoveList ReportConfigToRemoveList OPTIONAL, -- Need N reportConfigToAddModList ReportConfigToAddModList OPTIONAL, -- Need N measIdToRemoveList MeasIdToRemoveList OPTIONAL, -- Need N measIdToAddModList MeasIdToAddModList OPTIONAL, -- Need N s-MeasureConfig CHOICE { ssb-RSRP RSRP-Range, csi-RSRP RSRP-Range } OPTIONAL, -- Need M quantityConfig QuantityConfig OPTIONAL, -- Need M measGapConfig MeasGapConfig OPTIONAL, -- Need M measGapSharingConfig MeasGapSharingConfig OPTIONAL, -- Need M ... } MeasObjectToRemoveList ::= SEQUENCE (SIZE (1..maxNrofObjectId)) OF MeasObjectId MeasIdToRemoveList ::= SEQUENCE (SIZE (1..maxNrofMeasId)) OF MeasId ReportConfigToRemoveList ::= SEQUENCE (SIZE (1..maxReportConfigId)) OF ReportConfigId MeasGapConfig ::= SEQUENCE { gapFR2 SetupRelease { GapConfig } OPTIONAL, -- Need M ... } GapConfig ::= SEQUENCE { gapOffset INTEGER (0..159), mgl ENUMERATED {ms1dot5, ms3, ms3dot5, ms4, ms5dot5, ms6}, mgrp ENUMERATED {ms20, ms40, ms80, ms160}, mgta ENUMERATED {ms0, ms0dot25, ms0dot5}, ... } MeasGapSharingConfig ::= SEQUENCE { gapSharingFR2 SetupRelease { MeasGapSharingScheme } OPTIONAL, -- Need M ... } MeasGapSharingScheme ::= ENUMERATED { scheme00, scheme01, scheme10, scheme11 } QuantityConfig ::= SEQUENCE { quantityConfigNR-List SEQUENCE (SIZE (1..maxNrofQuantityConfig)) OF QuantityConfigNR OPTIONAL, -- Need M ... } QuantityConfigNR::= SEQUENCE { quantityConfigCell QuantityConfigRS, quantityConfigRS-Index QuantityConfigRS OPTIONAL -- Need M } QuantityConfigRS ::= SEQUENCE { ssb-FilterConfig FilterConfig, cs-RS-FilterConfig FilterConfig } FilterConfig ::= SEQUENCE { filterCoefficientRSRP FilterCoefficient DEFAULT fc4, filterCoefficientRSRQ FilterCoefficient DEFAULT fc4, filterCoefficientRS-SINR FilterCoefficient DEFAULT fc4 } < SpcellConfig >"spCell" stands for Special or Secondary Primary Cell. The term "spCell" refers to a specific or primary cell in a defined group within a cellular network. "spCell" is used to refer to a special cell for a defined group, making it the primary cell of that particular group. It's often mentioned in the context of Master Cell Group (MCG) and Secondary Cell Group (SCG), where it denotes the primary cell of these groups. In the context of NSA, spCell is the first NR cell added as SCG(Secondary Cell Group) to LTE anchor.
SpCellConfig ::= SEQUENCE { servCellIndex ServCellIndex OPTIONAL, -- Cond SCG reconfigurationWithSync ReconfigurationWithSync OPTIONAL, rlf-TimersAndConstants etupRelease { RLF-TimersAndConstants } OPTIONAL, -- Need M rlmInSyncOutOfSyncThreshold INTEGER (0..1) OPTIONAL, -- Need M spCellConfigDedicated ServingCellConfig OPTIONAL, -- Need M ... } ReconfigurationWithSync ::= SEQUENCE { spCellConfigCommon ServingCellConfigCommon OPTIONAL, -- Need M newUE-Identity RNTI-Value, t304 ENUMERATED {ms50, ms100, ms150, ms200, ms500, ms1000 , ms2000, ms10000}, rach-ConfigDedicated CHOICE { uplink RACH-ConfigDedicated, supplementaryUplink RACH-ConfigDedicated } OPTIONAL, -- Need N ... } ServingCellConfig ::= SEQUENCE { tdd-UL-DL-ConfigurationDedicated TDD-UL-DL-ConfigDedicated OPTIONAL,-- Cond TDD initialDownlinkBWP BWP-DownlinkDedicated OPTIONAL, -- Cond ServCellAdd downlinkBWP-ToReleaseList SEQUENCE (SIZE (1..maxNrofBWPs)) OF BWP-Id OPTIONAL, downlinkBWP-ToAddModList SEQUENCE (SIZE (1..maxNrofBWPs)) OF BWP-Downlink OPTIONAL firstActiveDownlinkBWP-Id BWP-Id OPTIONAL, -- Need R bwp-InactivityTimer ENUMERATED {ms2, ms3, ms4, ms5, ms6, ms8, ms10, ms20, ms30, ms40,ms50, ms60, ms80, ms100, ms200, ms300, ms500, ms750, ms1280, ms1920, ms2560, spare10, spare9, spare8, spare7, spare6, spare5, spare4, spare3, spare2, spare1 } OPTIONAL, defaultDownlinkBWP-Id BWP-Id OPTIONAL, -- Need M uplinkConfig UplinkConfig OPTIONAL, -- Cond ServCellAdd-UL supplementaryUplink UplinkConfig OPTIONAL, -- Cond ServCellAdd-SUL pdsch-ServingCellConfig SetupRelease { PDSCH-ServingCellConfig } OPTIONAL, -- Need M csi-MeasConfig SetupRelease { CSI-MeasConfig } OPTIONAL, -- Need M carrierSwitching SetupRelease { SRS-CarrierSwitching} OPTIONAL, -- Need M sCellDeactivationTimer ENUMERATED {ms20, ms40, ms80, ms160, ms200, ms240, ms320, ms400, ms480, ms520, ms640, ms720, ms840, ms1280, spare2,spare1} OPTIONAL,-- Cond ServingCellWithoutPUCCH crossCarrierSchedulingConfig CrossCarrierSchedulingConfig OPTIONAL, -- Need M tag-Id TAG-Id, ue-BeamLockFunction ENUMERATED {enabled} OPTIONAL, -- Need R pathlossReferenceLinking ENUMERATED {pCell, sCell} OPTIONAL -- Cond SCellOnly } PDSCH-ServingCellConfig ::= SEQUENCE { codeBlockGroupTransmission SetupRelease { PDSCH-CodeBlockGroupTransmission } OPTIONAL, -- Need M xOverhead ENUMERATED { xOh6, xOh12, xOh18 } OPTIONAL,-- Need S nrofHARQ-ProcessesForPDSCH ENUMERATED {n2, n4, n6, n10, n12, n16} OPTIONAL,-- Need S pucch-Cell ServCellIndex OPTIONAL , -- Cond SCellAddOnly ... } PDSCH-CodeBlockGroupTransmission ::= SEQUENCE { maxCodeBlockGroupsPerTransportBlock ENUMERATED {n2, n4, n6, n8}, codeBlockGroupFlushIndicator BOOLEAN, ... } UplinkConfig ::= SEQUENCE { initialUplinkBWP BWP-UplinkDedicated OPTIONAL, -- Cond ServCellAdd. uplinkBWP-ToReleaseList SEQUENCE (SIZE (1..maxNrofBWPs)) OF BWP-Id OPTIONAL,-- Need N uplinkBWP-ToAddModList SEQUENCE (SIZE (1..maxNrofBWPs)) OF BWP-Uplink OPTIONAL, firstActiveUplinkBWP-Id BWP-Id OPTIONAL, -- Need R pusch-ServingCellConfig SetupRelease { PUSCH-ServingCellConfig } OPTIONAL, ... } ServingCellConfigCommon ::= SEQUENCE { physCellId PhysCellId downlinkConfigCommon DownlinkConfigCommon, uplinkConfigCommon UplinkConfigCommon supplementaryUplinkConfig UplinkConfigCommon n-TimingAdvanceOffset ENUMERATED { n0, n25600, n39936 } ssb-PositionsInBurst CHOICE { shortBitmap BIT STRING (SIZE (4)), mediumBitmap BIT STRING (SIZE (8)), longBitmap BIT STRING (SIZE (64)) } OPTIONAL, -- Need R, ssb-periodicityServingCell ENUMERATED { ms5, ms10, ms20, ms40, ms80, ms160, spare2, spare1 }OPTIONAL, -- Need S dmrs-TypeA-Position ENUMERATED {pos2, pos3}, lte-CRS-ToMatchAround SetupRelease { RateMatchPatternLTE-CRS } OPTIONAL, rateMatchPatternToAddModList SEQUENCE (SIZE (1..maxNrofRateMatchPatterns)) OF RateMatchPattern rateMatchPatternToReleaseList SEQUENCE (SIZE (1..maxNrofRateMatchPatterns)) OF RateMatchPatternId ssbsubcarrierSpacing SubcarrierSpacing tdd-UL-DL-ConfigurationCommon TDD-UL-DL-ConfigCommon ss-PBCH-BlockPower INTEGER (-60..50), ... } RateMatchPatternLTE-CRS ::= SEQUENCE { carrierFreqDL INTEGER (0..16383), carrierBandwidthDL ENUMERATED {n6, n15, n25, n50, n75, n100, spare2, spare1}, mbsfn-SubframeConfigList EUTRA-MBSFN-SubframeConfigList OPTIONAL, nrofCRS-Ports ENUMERATED {n1, n2, n4}, v-Shift ENUMERATED {n0, n1, n2, n3, n4, n5} } RateMatchPattern ::= SEQUENCE { rateMatchPatternId RateMatchPatternId, patternType CHOICE { bitmaps SEQUENCE { resourceBlocks BIT STRING (SIZE (275)), symbolsInResourceBlock CHOICE { oneSlot BIT STRING (SIZE (14)), twoSlots BIT STRING (SIZE (28)) }, periodicityAndPattern CHOICE { n2 BIT STRING (SIZE (2)), n4 BIT STRING (SIZE (4)), n5 BIT STRING (SIZE (5)), n8 BIT STRING (SIZE (8)), n10 BIT STRING (SIZE (10)), n20 BIT STRING (SIZE (20)), n40 BIT STRING (SIZE (40)) } OPTIONAL, -- Need S ... }, controlResourceSet ControlResourceSetId }, subcarrierSpacing SubcarrierSpacing OPTIONAL, -- Cond CellLevel mode ENUMERATED { dynamic, semiStatic }, ... } EUTRA-MBSFN-SubframeConfigList ::= SEQUENCE (SIZE (1..maxMBSFN-Allocations)) OF EUTRA-MBSFN-SubframeConfig EUTRA-MBSFN-SubframeConfig ::= SEQUENCE { radioframeAllocationPeriod ENUMERATED {n1, n2, n4, n8, n16, n32}, radioframeAllocationOffset INTEGER (0..7), subframeAllocation CHOICE { oneFrame BIT STRING (SIZE(6)), fourFrames BIT STRING (SIZE(24)) }, subframeAllocation-v1430 CHOICE { oneFrame-v1430 BIT STRING (SIZE(2)), fourFrames-v1430 BIT STRING (SIZE(8)) } OPTIONAL, -- Need R ... } SubcarrierSpacing ::= ENUMERATED {kHz15, kHz30, kHz60, kHz120, kHz240, spare3, spare2, spare1} UplinkConfigCommon ::= SEQUENCE {. frequencyInfoUL FrequencyInfoUL initialUplinkBWP BWP-UplinkCommon } FrequencyInfoDL ::= SEQUENCE { absoluteFrequencySSB ARFCN-ValueNR, frequencyBandList MultiFrequencyBandListNR, absoluteFrequencyPointA ARFCN-ValueNR, scs-SpecificCarrierList SEQUENCE (SIZE (1..maxSCSs)) OF SCS-SpecificCarrier, ... } SCS-SpecificCarrier ::= SEQUENCE { offsetToCarrier INTEGER (0..2199), subcarrierSpacing SubcarrierSpacing, carrierBandwidth INTEGER (1..maxNrofPhysicalResourceBlocks), ..., [[ txDirectCurrentLocation-v1530 INTEGER (0..4095) OPTIONAL -- Need S ]] }
FrequencyInfoUL ::= SEQUENCE { frequencyBandList MultiFrequencyBandListNR absoluteFrequencyPointA ARFCN-ValueNR scs-SpecificCarriers SEQUENCE (SIZE (1..maxSCSs)) OF SCS-SpecificCarrier, additionalSpectrumEmission AdditionalSpectrumEmission p-Max P-Max frequencyShift7p5khz ENUMERATED {true} ... } Values 15, and 30 kHz are applicable for carrier frequencies <6GHz; Values 60 and 120 kHz are applicable for carrier frequencies >6GHz shortBitmap : bitmap for sub 3 GHz mediumBitmap : bitmap for 3-6 GHz longBitmap : bitmap for above 6 GHz Example :Example 01 : Initial NR Addition.You can get the entire procedure of how to test NSA and full log from this tutorial of Amarisoft Tech-Academy
Reference[1]
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||