bsc: properly f_rslem_unregister() released channels

After the RSL RF Release has happened, by definition the RSL_Emulation
should no longer direct RSL messages on that chan_nr to the test
component that used to own the chan_nr in the ConnectionTable.

Before this patch, re-using e.g. an already freed SDCCH would result in
non-obvious test failure. This is most relevant for generic functions
called from various tests, but fixing all occurences anyway.

Related: SYS#5130
Change-Id: I764ea2ed9af9358adeb42d7ed46b84f30f1e224c
This commit is contained in:
Neels Hofmeyr 2021-07-22 19:19:09 +02:00 committed by laforge
parent ee02223e28
commit e680b01650
1 changed files with 7 additions and 0 deletions

View File

@ -5041,10 +5041,12 @@ private function f_tc_ho_int_radio_link_failure(charstring id) runs on MSC_ConnH
[] RSL.receive(tr_RSL_DEACT_SACCH(g_chan_nr)) {}
[] RSL.receive(tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL)) {
RSL.send(ts_RSL_RF_CHAN_REL_ACK(g_chan_nr));
f_rslem_unregister(0, g_chan_nr);
}
[] RSL1.receive(tr_RSL_DEACT_SACCH(new_chan_nr)) {}
[] RSL1.receive(tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL)) {
RSL1.send(ts_RSL_RF_CHAN_REL_ACK(new_chan_nr));
f_rslem_unregister(0, g_chan_nr, PT := RSL1_PROC);
}
[] BSSAP.receive(tr_BSSMAP_ClearComplete) {}
}
@ -5426,6 +5428,7 @@ private function f_tc_ho_out_fail_no_result_after_ho_cmd(charstring id) runs on
[] RSL.receive(tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL)) {
log("Got RF Chan Rel");
RSL.send(ts_RSL_RF_CHAN_REL_ACK(g_chan_nr));
f_rslem_unregister(0, g_chan_nr);
}
}
@ -7216,6 +7219,7 @@ runs on MSC_ConnHdlr {
[] rsl.receive(tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL)) {
f_logp(BSCVTY, "Got RSL RF Chan Rel, sending Rel Ack");
rsl.send(ts_RSL_RF_CHAN_REL_ACK(g_chan_nr));
f_rslem_unregister(0, g_chan_nr);
break;
}
}
@ -7240,6 +7244,7 @@ runs on MSC_ConnHdlr {
[] rsl.receive(tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL)) {
f_logp(BSCVTY, "Got RSL RF Chan Rel, sending Rel Ack");
rsl.send(ts_RSL_RF_CHAN_REL_ACK(g_chan_nr));
f_rslem_unregister(0, g_chan_nr);
}
}
}
@ -9198,6 +9203,7 @@ private function f_tc_no_msc(charstring id) runs on MSC_ConnHdlr {
[] RSL.receive(tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL)) {
f_logp(BSCVTY, "Got RSL RF Chan Rel, sending Rel Ack");
RSL.send(ts_RSL_RF_CHAN_REL_ACK(g_chan_nr));
f_rslem_unregister(0, g_chan_nr);
}
}
setverdict(pass);
@ -9374,6 +9380,7 @@ private function f_TC_reassignment_codec(charstring id) runs on MSC_ConnHdlr {
[] RSL.receive(tr_RSL_DEACT_SACCH(g_chan_nr)) {}
[] RSL.receive(tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL)) {
RSL.send(ts_RSL_RF_CHAN_REL_ACK(g_chan_nr));
f_rslem_unregister(0, g_chan_nr);
}
[] BSSAP.receive(tr_BSSMAP_ClearComplete) {
BSSAP.send(RAN_Conn_Prim:MSC_CONN_PRIM_DISC_REQ);