pcu: ACK Pkt Cell Change Continue
Related: OS#4909
Change-Id: I73aaa80e73b2abb06fd0084433122337dc9c4e3f
diff --git a/pcu/PCU_Tests.ttcn b/pcu/PCU_Tests.ttcn
index c44f50a..e302480 100644
--- a/pcu/PCU_Tests.ttcn
+++ b/pcu/PCU_Tests.ttcn
@@ -3597,10 +3597,9 @@
f_shutdown(__BFILE__, __LINE__, final := true);
}
-private function f_skip_dummy(integer max_num_iter)
+private function f_skip_dummy(integer max_num_iter, out uint32_t sched_fn)
runs on RAW_PCU_Test_CT return RlcmacDlBlock {
var RlcmacDlBlock dl_block;
- var uint32_t sched_fn;
var integer i := 0;
while (true) {
f_rx_rlcmac_dl_block(dl_block, sched_fn);
@@ -3628,7 +3627,7 @@
var octetstring exp_si_chunk;
var GlobalTfi gtfi := { is_dl_tfi := false, tfi := ms.ul_tbf.tfi };
- dl_block := f_skip_dummy(50);
+ dl_block := f_skip_dummy(50, sched_fn);
while (true) {
var template RlcmacDlCtrlMsg exp_msg; exp_msg :=
@@ -3745,7 +3744,11 @@
setverdict(fail, "Rx unexpected DL block: ", dl_block);
f_shutdown(__BFILE__, __LINE__);
}
-
+ /* PKT CELL CHG CONTINUE ACK/NACK sets poll+rrbp requesting PACKET CONTROL ACK */
+ if (dl_block.ctrl.mac_hdr.rrbp_valid) {
+ sched_fn := f_rrbp_ack_fn(sched_fn, dl_block.ctrl.mac_hdr.rrbp);
+ f_ms_tx_ul_block(ms, ts_RLCMAC_CTRL_ACK(ms.tlli), sched_fn);
+ }
}
/* Verify PCU handles outbound Network Assisted Cell Change Cell Change (NACC, TS 44.060 sec 8.8). */
@@ -3936,11 +3939,16 @@
f_ms_tx_ul_block(ms, ts_RLC_UL_CTRL_ACK(cell_chf_notif), 0, nr := f_ms_tx_TsTrxBtsNum(ms));
/* Wait until we receive something non-dummy */
- dl_block := f_skip_dummy(0);
+ dl_block := f_skip_dummy(0, sched_fn);
/* Make sure it is a Pkt Cell Chg Continue */
if (not match(dl_block, tr_RLCMAC_DL_CTRL(?, tr_RlcMacDlCtrl_PKT_CELL_CHG_CONTINUE))) {
setverdict(fail, "Rx unexpected DL block: ", dl_block);
}
+ /* PKT CELL CHG CONTINUE ACK/NACK sets poll+rrbp requesting PACKET CONTROL ACK */
+ if (dl_block.ctrl.mac_hdr.rrbp_valid) {
+ sched_fn := f_rrbp_ack_fn(sched_fn, dl_block.ctrl.mac_hdr.rrbp);
+ f_ms_tx_ul_block(ms, ts_RLCMAC_CTRL_ACK(ms.tlli), sched_fn);
+ }
f_shutdown(__BFILE__, __LINE__, final := true);
}
@@ -4000,11 +4008,16 @@
f_ctrl_exp_get(IPA_CTRL, ctrl_var, omit);
/* Wait until we receive something non-dummy */
- dl_block := f_skip_dummy(0);
+ dl_block := f_skip_dummy(0, sched_fn);
/* Make sure it is a Pkt Cell Chg Continue */
if (not match(dl_block, tr_RLCMAC_DL_CTRL(?, tr_RlcMacDlCtrl_PKT_CELL_CHG_CONTINUE))) {
setverdict(fail, "Rx unexpected DL block: ", dl_block);
}
+ /* PKT CELL CHG CONTINUE ACK/NACK sets poll+rrbp requesting PACKET CONTROL ACK */
+ if (dl_block.ctrl.mac_hdr.rrbp_valid) {
+ sched_fn := f_rrbp_ack_fn(sched_fn, dl_block.ctrl.mac_hdr.rrbp);
+ f_ms_tx_ul_block(ms, ts_RLCMAC_CTRL_ACK(ms.tlli), sched_fn);
+ }
f_shutdown(__BFILE__, __LINE__, final := true);
}
@@ -4064,11 +4077,16 @@
f_ctrl_exp_get(IPA_CTRL, ctrl_var, "foobar-error");
/* Wait until we receive something non-dummy */
- dl_block := f_skip_dummy(0);
+ dl_block := f_skip_dummy(0, sched_fn);
/* Make sure it is a Pkt Cell Chg Continue */
if (not match(dl_block, tr_RLCMAC_DL_CTRL(?, tr_RlcMacDlCtrl_PKT_CELL_CHG_CONTINUE))) {
setverdict(fail, "Rx unexpected DL block: ", dl_block);
}
+ /* PKT CELL CHG CONTINUE ACK/NACK sets poll+rrbp requesting PACKET CONTROL ACK */
+ if (dl_block.ctrl.mac_hdr.rrbp_valid) {
+ sched_fn := f_rrbp_ack_fn(sched_fn, dl_block.ctrl.mac_hdr.rrbp);
+ f_ms_tx_ul_block(ms, ts_RLCMAC_CTRL_ACK(ms.tlli), sched_fn);
+ }
f_shutdown(__BFILE__, __LINE__, final := true);
}
@@ -4143,11 +4161,16 @@
/* We never answer the RIM procude -> PCU timeouts and should send Pkt Cell Chg continue */
/* Wait until we receive something non-dummy */
- dl_block := f_skip_dummy(0);
+ dl_block := f_skip_dummy(0, sched_fn);
/* Make sure it is a Pkt Cell Chg Continue */
if (not match(dl_block, tr_RLCMAC_DL_CTRL(?, tr_RlcMacDlCtrl_PKT_CELL_CHG_CONTINUE))) {
setverdict(fail, "Rx unexpected DL block: ", dl_block);
}
+ /* PKT CELL CHG CONTINUE ACK/NACK sets poll+rrbp requesting PACKET CONTROL ACK */
+ if (dl_block.ctrl.mac_hdr.rrbp_valid) {
+ sched_fn := f_rrbp_ack_fn(sched_fn, dl_block.ctrl.mac_hdr.rrbp);
+ f_ms_tx_ul_block(ms, ts_RLCMAC_CTRL_ACK(ms.tlli), sched_fn);
+ }
f_shutdown(__BFILE__, __LINE__, final := true);
}