pcu: Verify CodingScheme of received data blocks
Change-Id: I0a5247650548f8a03f7b025aae65652fb424c156
This commit is contained in:
parent
2422d1fa82
commit
dc9666ff9c
|
@ -41,6 +41,67 @@ module RLCMAC_Types {
|
|||
return 0;
|
||||
}
|
||||
|
||||
type enumerated CodingScheme {
|
||||
CS_1,
|
||||
CS_2,
|
||||
CS_3,
|
||||
CS_4,
|
||||
MCS_1,
|
||||
MCS_2,
|
||||
MCS_3,
|
||||
MCS_4,
|
||||
MCS_5,
|
||||
MCS_6,
|
||||
MCS_7,
|
||||
MCS_8,
|
||||
MCS_9
|
||||
//MCS5_7, ?
|
||||
// MCS6_9 ?
|
||||
};
|
||||
|
||||
function f_rlcmac_cs_mcs2block_len(CodingScheme cs_mcs) return uint32_t {
|
||||
select (cs_mcs) {
|
||||
case (CS_1) { return 23; }
|
||||
case (CS_2) { return 34; }
|
||||
case (CS_3) { return 40; }
|
||||
case (CS_4) { return 54; }
|
||||
case (MCS_1) { return 27; }
|
||||
case (MCS_2) { return 33; }
|
||||
case (MCS_3) { return 42; }
|
||||
case (MCS_4) { return 49; }
|
||||
case (MCS_5) { return 61; }
|
||||
case (MCS_6) { return 79; }
|
||||
case (MCS_7) { return 119; }
|
||||
case (MCS_8) { return 143; }
|
||||
case (MCS_9) { return 155; }
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
function f_rlcmac_block_len2cs_mcs(uint32_t len) return CodingScheme {
|
||||
select (len) {
|
||||
case (23) { return CS_1; }
|
||||
case (34) { return CS_2; }
|
||||
case (40) { return CS_3; }
|
||||
case (54) { return CS_4; }
|
||||
case (27) { return MCS_1; }
|
||||
case (33) { return MCS_2; }
|
||||
case (42) { return MCS_3; }
|
||||
case (49) { return MCS_4; }
|
||||
case (60) { return MCS_5; }
|
||||
case (61) { return MCS_5; }
|
||||
case (78) { return MCS_6; }
|
||||
case (79) { return MCS_6; }
|
||||
case (118) { return MCS_7; }
|
||||
case (119) { return MCS_7; }
|
||||
case (142) { return MCS_8; }
|
||||
case (143) { return MCS_8; }
|
||||
case (154) { return MCS_9; }
|
||||
case (155) { return MCS_9; }
|
||||
}
|
||||
return CS_1;
|
||||
}
|
||||
|
||||
/* Partof DL RLC data block and DL RLC/MAC ctrl block */
|
||||
type record DlMacHeader {
|
||||
MacPayloadType payload_type,
|
||||
|
|
|
@ -419,12 +419,19 @@ runs on RAW_PCU_Test_CT {
|
|||
}
|
||||
}
|
||||
|
||||
private function f_rx_rlcmac_dl_block(out RlcmacDlBlock dl_block, out uint32_t dl_fn)
|
||||
private function f_rx_rlcmac_dl_block(out RlcmacDlBlock dl_block, out uint32_t dl_fn, template (present) CodingScheme exp_cs_mcs := ?)
|
||||
runs on RAW_PCU_Test_CT {
|
||||
var PCUIF_Message pcu_msg;
|
||||
f_pcuif_rx_data_req(pcu_msg);
|
||||
dl_block := dec_RlcmacDlBlock(pcu_msg.u.data_req.data);
|
||||
dl_fn := pcu_msg.u.data_req.fn;
|
||||
|
||||
var integer len := lengthof(pcu_msg.u.data_req.data);
|
||||
var CodingScheme cs_mcs := f_rlcmac_block_len2cs_mcs(len)
|
||||
if (not match(f_rlcmac_block_len2cs_mcs(len), exp_cs_mcs)) {
|
||||
setverdict(fail, "Failed to match Coding Scheme exp ", exp_cs_mcs, " vs ", cs_mcs, " (", len, ")");
|
||||
mtc.stop;
|
||||
}
|
||||
}
|
||||
|
||||
private function f_rx_rlcmac_dl_block_exp_ack_nack(out RlcmacDlBlock dl_block, out uint32_t poll_fn)
|
||||
|
@ -475,7 +482,7 @@ runs on RAW_PCU_Test_CT {
|
|||
}
|
||||
}
|
||||
|
||||
private function f_rx_rlcmac_dl_block_exp_data(out RlcmacDlBlock dl_block, out uint32_t ack_fn, octetstring data, template (present) uint7_t exp_bsn := ?)
|
||||
private function f_rx_rlcmac_dl_block_exp_data(out RlcmacDlBlock dl_block, out uint32_t ack_fn, octetstring data, template (present) uint7_t exp_bsn := ?, template (present) CodingScheme exp_cs := ?)
|
||||
runs on RAW_PCU_Test_CT {
|
||||
var PCUIF_Message pcu_msg;
|
||||
var uint32_t dl_fn;
|
||||
|
@ -1202,7 +1209,7 @@ testcase TC_mo_ping_pong() runs on RAW_PCU_Test_CT {
|
|||
/* 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.
|
||||
*/
|
||||
private function f_TC_mt_ping_pong(template (omit) MSRadioAccessCapabilityV_BSSGP ms_racap := omit) runs on RAW_PCU_Test_CT {
|
||||
private function f_TC_mt_ping_pong(template (omit) MSRadioAccessCapabilityV_BSSGP 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;
|
||||
|
@ -1236,7 +1243,7 @@ private function f_TC_mt_ping_pong(template (omit) MSRadioAccessCapabilityV_BSSG
|
|||
|
||||
/* 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);
|
||||
|
@ -1265,7 +1272,8 @@ private function f_TC_mt_ping_pong(template (omit) MSRadioAccessCapabilityV_BSSG
|
|||
}
|
||||
|
||||
testcase TC_mt_ping_pong() runs on RAW_PCU_Test_CT {
|
||||
f_TC_mt_ping_pong(omit);
|
||||
var CodingScheme exp_cs_mcs := CS_1;
|
||||
f_TC_mt_ping_pong(omit, exp_cs_mcs);
|
||||
}
|
||||
|
||||
/* TC_mt_ping_pong, but DL-UNITDATA contains RA Access capability with (M)CS
|
||||
|
@ -1276,7 +1284,8 @@ testcase TC_mt_ping_pong_with_dl_racap() runs on RAW_PCU_Test_CT {
|
|||
gprsextendeddynalloccap := '0'B
|
||||
} ;
|
||||
var MSRadioAccessCapabilityV_BSSGP ms_racap := { valueof(ts_RaCapRec_BSSGP('0001'B /* E-GSM */, mscap_gprs, omit)) };
|
||||
f_TC_mt_ping_pong(ms_racap);
|
||||
var CodingScheme exp_cs_mcs := CS_2;
|
||||
f_TC_mt_ping_pong(ms_racap, exp_cs_mcs);
|
||||
}
|
||||
|
||||
/* Verify that if PCU doesn't get an ACK for first DL block after IMM ASS, it
|
||||
|
|
Loading…
Reference in New Issue