diff --git a/pcu/PCU_Tests_RAW.ttcn b/pcu/PCU_Tests_RAW.ttcn index e4b03c1f9..bc0cb7fb4 100644 --- a/pcu/PCU_Tests_RAW.ttcn +++ b/pcu/PCU_Tests_RAW.ttcn @@ -741,7 +741,7 @@ runs on RAW_PCU_Test_CT { dl_fn := pcu_msg.u.data_req.fn; } -private function f_rx_rlcmac_dl_block_exp_ack_nack(out RlcmacDlBlock dl_block) +private function f_rx_rlcmac_dl_block_exp_ack_nack(out RlcmacDlBlock dl_block, out uint32_t poll_fn) runs on RAW_PCU_Test_CT { var uint32_t dl_fn; @@ -750,6 +750,8 @@ runs on RAW_PCU_Test_CT { setverdict(fail, "Failed to match Packet Uplink ACK / NACK"); mtc.stop; } + + poll_fn := dl_fn + f_rrbp_fn_delay(dl_block.ctrl.mac_hdr.rrbp); } private function f_rx_rlcmac_dl_block_exp_dummy(out RlcmacDlBlock dl_block) @@ -1084,6 +1086,7 @@ testcase TC_cs_lqual_ul_tbf() runs on RAW_PCU_Test_CT { var PCUIF_Message pcu_msg; var octetstring data; var boolean ok; + var uint32_t unused_fn; /* Initialize the PCU interface abstraction */ f_init_raw(testcasename()); @@ -1135,7 +1138,7 @@ testcase TC_cs_lqual_ul_tbf() runs on RAW_PCU_Test_CT { f_tx_rlcmac_ul_block(ul_data, lqual * 10); /* Enqueue RTS.req, expect DATA.req with UL ACK from the PCU */ - f_rx_rlcmac_dl_block_exp_ack_nack(dl_block); + f_rx_rlcmac_dl_block_exp_ack_nack(dl_block, unused_fn); log("Rx Packet Uplink ACK / NACK with Channel Coding Command: ", dl_block.ctrl.payload.u.ul_ack_nack.gprs.ch_coding_cmd); @@ -1167,6 +1170,7 @@ testcase TC_cs_initial_ul() runs on RAW_PCU_Test_CT { var boolean ok; var integer lqual_cb; var ChCodingCommand last_ch_coding; + var uint32_t unused_fn; /* Initialize the PCU interface abstraction */ f_init_raw(testcasename()); @@ -1211,7 +1215,7 @@ testcase TC_cs_initial_ul() runs on RAW_PCU_Test_CT { f_tx_rlcmac_ul_block(ul_data, lqual_cb); /* Enqueue RTS.req, expect DATA.req with UL ACK from the PCU */ - f_rx_rlcmac_dl_block_exp_ack_nack(dl_block); + f_rx_rlcmac_dl_block_exp_ack_nack(dl_block, unused_fn); last_ch_coding := dl_block.ctrl.payload.u.ul_ack_nack.gprs.ch_coding_cmd; } @@ -1235,7 +1239,7 @@ testcase TC_cs_initial_ul() runs on RAW_PCU_Test_CT { f_tx_rlcmac_ul_block(ul_data, 0); /* 0 dB, make sure we downgrade CS */ /* Enqueue RTS.req, expect DATA.req with UL ACK from the PCU */ - f_rx_rlcmac_dl_block_exp_ack_nack(dl_block); + f_rx_rlcmac_dl_block_exp_ack_nack(dl_block, unused_fn); last_ch_coding := dl_block.ctrl.payload.u.ul_ack_nack.gprs.ch_coding_cmd; } @@ -1254,6 +1258,7 @@ testcase TC_cs_max_ul() runs on RAW_PCU_Test_CT { var RlcmacDlBlock dl_block; var boolean ok; var ChCodingCommand last_ch_coding; + var uint32_t unused_fn; /* Initialize the PCU interface abstraction */ f_init_raw(testcasename()); @@ -1295,7 +1300,7 @@ testcase TC_cs_max_ul() runs on RAW_PCU_Test_CT { f_tx_rlcmac_ul_block(ul_data, 40*10); /* 40 dB */ /* Enqueue RTS.req, expect DATA.req with UL ACK from the PCU */ - f_rx_rlcmac_dl_block_exp_ack_nack(dl_block); + f_rx_rlcmac_dl_block_exp_ack_nack(dl_block, unused_fn); last_ch_coding := dl_block.ctrl.payload.u.ul_ack_nack.gprs.ch_coding_cmd; } @@ -1316,6 +1321,7 @@ testcase TC_t3169() runs on RAW_PCU_Test_CT { var PCUIF_Message pcu_msg; var octetstring data; var boolean ok; + var uint32_t unused_fn; var OCT4 tlli := '00000001'O; /* Initialize NS/BSSGP side */ @@ -1347,7 +1353,7 @@ testcase TC_t3169() runs on RAW_PCU_Test_CT { /* 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); + f_rx_rlcmac_dl_block_exp_ack_nack(dl_block, unused_fn); /* UL block should be received in SGSN */ BSSGP[0].receive(tr_BSSGP_UL_UD(tlli, mp_gb_cfg.cell_id)); @@ -1403,7 +1409,9 @@ testcase TC_mo_ping_pong() runs on RAW_PCU_Test_CT { /* 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); + f_rx_rlcmac_dl_block_exp_ack_nack(dl_block, sched_fn); + /* DL ACK/NACK sets poll+rrbp requesting PACKET CONTROL ACK */ + f_tx_rlcmac_ul_block(ts_RLCMAC_CTRL_ACK(tlli), 0, sched_fn); /* UL block should be received in SGSN */ BSSGP[0].receive(tr_BSSGP_UL_UD(tlli, mp_gb_cfg.cell_id));