This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
pespin gerrit-no-reply at lists.osmocom.orgpespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/17935 ) Change subject: pcu: Introduce test TC_mo_ping_pong_with_ul_racap ...................................................................... pcu: Introduce test TC_mo_ping_pong_with_ul_racap Test sending MS RA capabilities through Packet Resource Request to update GPRS multislot class. EGPRS multislot will come in a later commit. Change-Id: I5026d8b78a3fb82093956b65989d18fa6f6d5424 --- M bsc-nat/gen_links.sh M library/L3_Templates.ttcn M library/RLCMAC_CSN1_Types.ttcn M library/RLCMAC_Types.ttcn M mme/gen_links.sh M msc/gen_links.sh M pcu/PCU_Tests_RAW.ttcn 7 files changed, 166 insertions(+), 41 deletions(-) Approvals: fixeria: Looks good to me, but someone else must approve pespin: Looks good to me, approved Jenkins Builder: Verified diff --git a/bsc-nat/gen_links.sh b/bsc-nat/gen_links.sh index 5da9d4e..471753e 100755 --- a/bsc-nat/gen_links.sh +++ b/bsc-nat/gen_links.sh @@ -52,7 +52,7 @@ gen_links $DIR $FILES DIR=../library -FILES="Misc_Helpers.ttcn General_Types.ttcn Osmocom_Types.ttcn GSM_Types.ttcn IPA_Types.ttcn IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc IPA_Emulation.ttcnpp L3_Templates.ttcn BSSMAP_Templates.ttcn RAN_Emulation.ttcnpp MGCP_Types.ttcn MGCP_Templates.ttcn MGCP_CodecPort.ttcn MGCP_CodecPort_CtrlFunct.ttcn MGCP_CodecPort_CtrlFunctDef.cc Osmocom_CTRL_Types.ttcn Osmocom_VTY_Functions.ttcn Osmocom_CTRL_Functions.ttcn Osmocom_CTRL_Adapter.ttcn BSSAP_CodecPort.ttcn" +FILES="Misc_Helpers.ttcn General_Types.ttcn Osmocom_Types.ttcn GSM_Types.ttcn IPA_Types.ttcn IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc IPA_Emulation.ttcnpp L3_Templates.ttcn RLCMAC_CSN1_Types.ttcn BSSMAP_Templates.ttcn RAN_Emulation.ttcnpp MGCP_Types.ttcn MGCP_Templates.ttcn MGCP_CodecPort.ttcn MGCP_CodecPort_CtrlFunct.ttcn MGCP_CodecPort_CtrlFunctDef.cc Osmocom_CTRL_Types.ttcn Osmocom_VTY_Functions.ttcn Osmocom_CTRL_Functions.ttcn Osmocom_CTRL_Adapter.ttcn BSSAP_CodecPort.ttcn" gen_links $DIR $FILES ignore_pp_results diff --git a/library/L3_Templates.ttcn b/library/L3_Templates.ttcn index 7c22415..8af9acc 100644 --- a/library/L3_Templates.ttcn +++ b/library/L3_Templates.ttcn @@ -20,6 +20,7 @@ import from MobileL3_CC_Types all; import from MobileL3_GMM_SM_Types all; import from MobileL3_SMS_Types all; +import from RLCMAC_CSN1_Types all; /* TS 24.007 Table 11.3 TI Flag */ const BIT1 c_TIF_ORIG := '0'B; @@ -2012,33 +2013,6 @@ cnSpecificDRXCycleLength := '0000'B /* SI value used */ }; -template (value) AccessCapabilitiesStruct ts_AccesssCap := { - lengthIndicator := 0, /* overwritten */ - accessCapabilities := { - rfPowerCapability := '001'B, /* FIXME */ - presenceBitA5 := '0'B, - a5bits := omit, - esind := '1'B, - psbit := '0'B, - vgcs := '0'B, - vbs := '0'B, - presenceBitMultislot := '0'B, - multislotcap := omit, - accessCapAdditionsAfterRel97 := omit - }, - spare_bits := omit -} - -template (value) MSRACapabilityValuesRecord ts_RaCapRec(BIT4 att) := { - mSRACapabilityValues := { - mSRACapabilityValuesExclude1111 := { - accessTechnType := '0001'B, /* E-GSM */ - accessCapabilities := ts_AccesssCap - } - }, - presenceBitMSRACap := '0'B -}; - template (value) MSRadioAccessCapabilityLV ts_MS_RaCapa := { lengthIndicator := 0, /* overwritten */ msRadioAccessCapabilityV := { diff --git a/library/RLCMAC_CSN1_Types.ttcn b/library/RLCMAC_CSN1_Types.ttcn index 9ceb339..b545368 100644 --- a/library/RLCMAC_CSN1_Types.ttcn +++ b/library/RLCMAC_CSN1_Types.ttcn @@ -420,10 +420,9 @@ variant (tlli) "BYTEORDER(first)" }; - /* 12.30 MS Radio Access Capability 2 (feature bitmask) - * (value part, see 3GPP TS 24.008, 10.5.5.12a) */ + /* TS 44.060 sec 12.30 MS Radio Access Capability 2 + * (for value part, see 3GPP TS 24.008 sec 10.5.5.12a and table 10.5.146) */ type union MSRadioAccCap2 { - /* TODO: see table 10.5.146/3GPP TS 24.008 */ MSRadioAccessCapabilityV msRadioAccessCapabilityV }; @@ -676,10 +675,88 @@ } } - template (value) RlcmacUlCtrlMsg ts_RlcMacUlCtrl_PKT_RES_REQ( - GprsTlli tlli, ChannelReqDescription ch_req_desc, - RlcAccessType acc_type := RLC_ACC_TYPE_TWO_PHASE - ) := { + private function f_presence_bit_MultislotCap_GPRS(template (omit) MultislotCap_GPRS mscap_gprs) return BIT1 { + if (istemplatekind(mscap_gprs, "omit")) { + return '0'B; + } + return '1'B; + } + private function f_presence_bit_MultislotCap_EGPRS(template (omit) MultislotCap_EGPRS mscap_egprs) return BIT1 { + if (istemplatekind(mscap_egprs, "omit")) { + return '0'B; + } + return '1'B; + } + template (value) MSRACapabilityValuesRecord ts_RaCapRec(BIT4 att := '0001'B /* E-GSM */, template (omit) MultislotCap_GPRS mscap_gprs := omit, template (omit) MultislotCap_EGPRS mscap_egprs := omit) := { + mSRACapabilityValues := { + mSRACapabilityValuesExclude1111 := { + accessTechnType := att, /* E-GSM */ + accessCapabilities := { + lengthIndicator := 0, /* overwritten */ + accessCapabilities := { + rfPowerCapability := '001'B, /* FIXME */ + presenceBitA5 := '0'B, + a5bits := omit, + esind := '1'B, + psbit := '0'B, + vgcs := '0'B, + vbs := '0'B, + presenceBitMultislot := '1'B, + multislotcap := { + presenceBitHscsd := '0'B, + hscsdmultislotclass := omit, + presenceBitGprs := f_presence_bit_MultislotCap_GPRS(mscap_gprs), + gprsmultislot := mscap_gprs, + presenceBitSms := '0'B, + multislotCap_SMS := omit, + multislotCapAdditionsAfterRel97 := { + presenceBitEcsdmulti := '0'B, + ecsdmultislotclass := omit, + presenceBitEgprsmulti := f_presence_bit_MultislotCap_EGPRS(mscap_egprs), + multislotCap_EGPRS := mscap_egprs, + presenceBitDtmGprsmulti := '0'B, + multislotCapdtmgprsmultislotsubclass := omit + } + }, + accessCapAdditionsAfterRel97 := omit + }, + spare_bits := omit + } + } + }, + presenceBitMSRACap := '0'B + }; + + private function f_presence_bit_MSRadioAccessCapabilityV(template (omit) MSRadioAccessCapabilityV ms_rac) return BIT1 { + if (istemplatekind(ms_rac, "omit")) { + return '0'B; + } + return '1'B; + } + + private function f_template_MSRadioAccessCapabilityV_to_MSRadioAccCap2(template (omit) MSRadioAccessCapabilityV ms_rac) return template (omit) MSRadioAccCap2 { + var template (omit) MSRadioAccCap2 ms_rac2 := omit; + if (istemplatekind(ms_rac, "omit")) { + return ms_rac2; + } + ms_rac2 := { msRadioAccessCapabilityV := ms_rac }; + return ms_rac2; + } + + private const ChannelReqDescription c_ChReqDesc_default := { + peak_tput_class := 0, + priority := 0, + rlc_mode := RLC_MODE_UNACKNOWLEDGED, + llc_pdu_type := LLC_PDU_IS_NOT_SACK_OR_ACK, + RlcOctetCount := 0 + } + + /* TS 44.060 sec 11.2.16 */ + template (value) RlcmacUlCtrlMsg ts_RlcMacUlCtrl_PKT_RES_REQ(GprsTlli tlli, + template (omit) MSRadioAccessCapabilityV ms_rac, + ChannelReqDescription ch_req_desc := c_ChReqDesc_default, + RlcAccessType acc_type := RLC_ACC_TYPE_TWO_PHASE) + := { msg_type := PACKET_RESOURCE_REQUEST, u := { resource_req := { @@ -687,8 +764,8 @@ acc_type := acc_type, id_type := '1'B, id := { tlli := tlli }, - ms_rac2_presence := '0'B, - ms_rac2 := omit, + ms_rac2_presence := f_presence_bit_MSRadioAccessCapabilityV(ms_rac), + ms_rac2 := f_template_MSRadioAccessCapabilityV_to_MSRadioAccCap2(ms_rac), ch_req_desc := ch_req_desc, change_mark_presence := '0'B, change_mark := omit, diff --git a/library/RLCMAC_Types.ttcn b/library/RLCMAC_Types.ttcn index dbcf4ae..97b89da 100644 --- a/library/RLCMAC_Types.ttcn +++ b/library/RLCMAC_Types.ttcn @@ -445,6 +445,32 @@ } } + template RlcmacDlBlock tr_RLCMAC_UL_PACKET_ASS(template uint3_t usf := ?) := { + ctrl := { + mac_hdr := { + payload_type := (MAC_PT_RLCMAC_NO_OPT, MAC_PT_RLCMAC_OPT), + rrbp:= ?, + rrbp_valid := ?, + usf := usf + }, + opt := *, + payload := { + msg_type := PACKET_UL_ASSIGNMENT, + u := { + ul_assignment := { + page_mode := ?, + persistence_levels_present := ?, + persistence_levels := *, + identity := ?, + is_egprs := ?, /* msg escape */ + gprs := * + } + } + } + } + } + + /* Receive Template for Uplink ACK/NACK */ template RlcmacDlBlock tr_RLCMAC_UL_ACK_NACK(template uint5_t ul_tfi, template GprsTlli tlli := ?) := { ctrl := { diff --git a/mme/gen_links.sh b/mme/gen_links.sh index f22f1ca..469b92f 100755 --- a/mme/gen_links.sh +++ b/mme/gen_links.sh @@ -56,7 +56,7 @@ DIR=../library FILES="Misc_Helpers.ttcn General_Types.ttcn GSM_Types.ttcn Osmocom_Types.ttcn Native_Functions.ttcn Native_FunctionDefs.cc " FILES+="SGsAP_Templates.ttcn SGsAP_CodecPort.ttcn SGsAP_CodecPort_CtrlFunct.ttcn SGsAP_CodecPort_CtrlFunctDef.cc SGsAP_Emulation.ttcn DNS_Helpers.ttcn " -FILES+="L3_Templates.ttcn " +FILES+="L3_Templates.ttcn RLCMAC_CSN1_Types.ttcn " FILES+="S1AP_CodecPort.ttcn S1AP_CodecPort_CtrlFunctDef.cc S1AP_CodecPort_CtrlFunct.ttcn S1AP_Emulation.ttcn " FILES+="NAS_Templates.ttcn GTPv2_PrivateExtensions.ttcn GTPv2_Templates.ttcn " FILES+="DIAMETER_Types.ttcn DIAMETER_CodecPort.ttcn DIAMETER_CodecPort_CtrlFunct.ttcn DIAMETER_CodecPort_CtrlFunctDef.cc DIAMETER_Emulation.ttcn DIAMETER_Templates.ttcn " diff --git a/msc/gen_links.sh b/msc/gen_links.sh index 7aaba2b..329a7d1 100755 --- a/msc/gen_links.sh +++ b/msc/gen_links.sh @@ -93,7 +93,7 @@ DIR=../library FILES="Misc_Helpers.ttcn General_Types.ttcn GSM_Types.ttcn Osmocom_Types.ttcn MNCC_Types.ttcn MNCC_EncDec.cc MNCC_CodecPort.ttcn mncc.h MNCC_Emulation.ttcn Osmocom_VTY_Functions.ttcn Native_Functions.ttcn Native_FunctionDefs.cc " FILES+="IPA_Types.ttcn IPA_Emulation.ttcnpp IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc GSUP_Types.ttcn GSUP_Emulation.ttcn " -FILES+="Osmocom_CTRL_Types.ttcn Osmocom_CTRL_Functions.ttcn Osmocom_CTRL_Adapter.ttcn L3_Templates.ttcn L3_Common.ttcn " +FILES+="Osmocom_CTRL_Types.ttcn Osmocom_CTRL_Functions.ttcn Osmocom_CTRL_Adapter.ttcn L3_Templates.ttcn RLCMAC_CSN1_Types.ttcn L3_Common.ttcn " FILES+="RAN_Emulation.ttcnpp BSSAP_CodecPort.ttcn BSSMAP_Templates.ttcn RAN_Adapter.ttcnpp MGCP_Types.ttcn MGCP_Templates.ttcn MGCP_CodecPort_CtrlFunct.ttcn MGCP_Emulation.ttcn " FILES+="RTP_CodecPort.ttcn RTP_CodecPort_CtrlFunctDef.cc " FILES+="MGCP_CodecPort.ttcn MGCP_CodecPort_CtrlFunctDef.cc " diff --git a/pcu/PCU_Tests_RAW.ttcn b/pcu/PCU_Tests_RAW.ttcn index 1d13b8e..54412e3 100644 --- a/pcu/PCU_Tests_RAW.ttcn +++ b/pcu/PCU_Tests_RAW.ttcn @@ -26,6 +26,7 @@ import from Osmocom_VTY_Functions all; import from TELNETasp_PortType all; +import from MobileL3_GMM_SM_Types all; import from RLCMAC_CSN1_Types all; import from RLCMAC_Types all; @@ -496,6 +497,20 @@ poll_fn := dl_fn + f_rrbp_fn_delay(dl_block.ctrl.mac_hdr.rrbp); } +private function f_rx_rlcmac_dl_block_exp_pkt_ul_ass(out RlcmacDlBlock dl_block, out uint32_t poll_fn) +runs on RAW_PCU_Test_CT { + var uint32_t dl_fn; + + f_rx_rlcmac_dl_block(dl_block, dl_fn); + if (not match(dl_block, tr_RLCMAC_UL_PACKET_ASS())) { + setverdict(fail, "Failed to match Packet Uplink Assignment"); + mtc.stop; + } + + poll_fn := dl_fn + f_rrbp_fn_delay(dl_block.ctrl.mac_hdr.rrbp); +} + + private function f_rx_rlcmac_dl_block_exp_pkt_pag_req(out RlcmacDlBlock dl_block) runs on RAW_PCU_Test_CT { var uint32_t dl_fn; @@ -1201,7 +1216,7 @@ /* Test scenario where MS wants to send some data on PDCH against SGSN and it is * answered, so TBFs for uplink and later for downlink are created. */ -testcase TC_mo_ping_pong() runs on RAW_PCU_Test_CT { +private function f_TC_mo_ping_pong(template (omit) MSRadioAccessCapabilityV ms_racap := omit, template (present) CodingScheme exp_cs_mcs := ?) runs on RAW_PCU_Test_CT { var GsmRrMessage rr_imm_ass; var PacketUlAssign ul_tbf_ass; var PacketDlAssign dl_tbf_ass; @@ -1235,6 +1250,18 @@ mtc.stop; } + if (not istemplatekind(ms_racap, "omit")) { + /* Send PACKET RESOURCE REQUEST to upgrade to EGPRS + * (see 3GPP TS 04.60 "7.1.3.1 Initiation of the Packet resource request procedure") + */ + f_tx_rlcmac_ul_block(ts_RLC_UL_CTRL_ACK(valueof(ts_RlcMacUlCtrl_PKT_RES_REQ(tlli, ms_racap))), 0); + f_rx_rlcmac_dl_block_exp_pkt_ul_ass(dl_block, sched_fn); + if (dl_block.ctrl.payload.u.ul_assignment.identity.tlli.tlli != tlli) { + setverdict(fail, "Wrong TLLI ", dl_block.ctrl.payload.u.ul_assignment.identity.tlli, " received vs exp ", tlli); + mtc.stop; + } + } + /* Send one UL block and make sure it is ACKED fine */ f_tx_rlcmac_ul_n_blocks(ul_tbf_ass, 1); f_rx_rlcmac_dl_block_exp_ack_nack(dl_block, sched_fn); @@ -1256,13 +1283,33 @@ /* Wait timer X2002 and DL block is available after CCCH IMM ASS: */ f_sleep(X2002); - f_rx_rlcmac_dl_block_exp_data(dl_block, sched_fn, data, 0); + f_rx_rlcmac_dl_block_exp_data(dl_block, sched_fn, data, 0, exp_cs_mcs); /* ACK the DL block */ f_acknackdesc_ack_block(ack_nack_desc, dl_block.data.mac_hdr.hdr_ext.bsn, '1'B); f_tx_rlcmac_ul_block(ts_RLCMAC_DL_ACK_NACK(dl_block.data.mac_hdr.hdr_ext.tfi, ack_nack_desc), 0, sched_fn); } +/* Test scenario where MS wants to send some data on PDCH against SGSN and it is + * answered, so TBFs for uplink and later for downlink are created. + */ +testcase TC_mo_ping_pong() runs on RAW_PCU_Test_CT { + var CodingScheme exp_cs_mcs := CS_1; + f_TC_mo_ping_pong(omit, exp_cs_mcs); +} + + +testcase TC_mo_ping_pong_with_ul_racap() runs on RAW_PCU_Test_CT { + var MultislotCap_GPRS mscap_gprs := { + gprsmultislotclass := '00011'B, + gprsextendeddynalloccap := '0'B + }; + var MSRadioAccessCapabilityV ms_racap := { valueof(ts_RaCapRec('0001'B /* E-GSM */, mscap_gprs, omit)) }; + var CodingScheme exp_cs_mcs := CS_2; + + f_TC_mo_ping_pong(ms_racap, exp_cs_mcs); +} + /* Test scenario where SGSN wants to send some data against MS and it is * answered by the MS on PDCH, so TBFs for downlink and later for uplink are created. */ @@ -1724,6 +1771,7 @@ execute( TC_t3169() ); execute( TC_t3193() ); execute( TC_mo_ping_pong() ); + execute( TC_mo_ping_pong_with_ul_racap() ); execute( TC_mt_ping_pong() ); execute( TC_mt_ping_pong_with_dl_racap() ); execute( TC_imm_ass_dl_block_retrans() ); -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/17935 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: I5026d8b78a3fb82093956b65989d18fa6f6d5424 Gerrit-Change-Number: 17935 Gerrit-PatchSet: 9 Gerrit-Owner: pespin <pespin at sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <axilirator at gmail.com> Gerrit-Reviewer: laforge <laforge at osmocom.org> Gerrit-Reviewer: pespin <pespin at sysmocom.de> Gerrit-MessageType: merged -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20200428/caa5fcca/attachment.htm>