bsc: expect proper chan_nr for various RSL_MT_RF_CHAN_REL

So far we were often just expecting the message type. Instead expect a
release on the proper channel number.

While hunting a test error, this confused me for a while, because a
missing handler resulted in the release message handled in the wrong
place, even though the chan_nr mismatched.

Related: SYS#5130
Change-Id: I002c9273a387104bea062dec8879b4e19a72008d
This commit is contained in:
Neels Hofmeyr 2021-07-22 19:18:40 +02:00 committed by laforge
parent 85bcd27bf0
commit 3c5127edeb
1 changed files with 7 additions and 7 deletions

View File

@ -5039,12 +5039,12 @@ private function f_tc_ho_int_radio_link_failure(charstring id) runs on MSC_ConnH
interleave {
[] RSL.receive(tr_RSL_DATA_REQ(g_chan_nr, ?, decmatch tr_RRM_RR_RELEASE(int2oct(enum2int(rr_cause), 1)))) {}
[] RSL.receive(tr_RSL_DEACT_SACCH(g_chan_nr)) {}
[] RSL.receive(tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL)) {
[] RSL.receive(tr_RSL_RF_CHAN_REL(g_chan_nr)) {
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.receive(tr_RSL_RF_CHAN_REL(new_chan_nr)) {
RSL1.send(ts_RSL_RF_CHAN_REL_ACK(new_chan_nr));
f_rslem_unregister(0, g_chan_nr, PT := RSL1_PROC);
}
@ -5424,7 +5424,7 @@ private function f_tc_ho_out_fail_no_result_after_ho_cmd(charstring id) runs on
[] RSL.receive(tr_RSL_DATA_REQ(g_chan_nr, ?, decmatch tr_RRM_RR_RELEASE)) {
log("Got RR Release");
}
[] RSL.receive(tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL)) {
[] RSL.receive(tr_RSL_RF_CHAN_REL(g_chan_nr)) {
log("Got RF Chan Rel");
RSL.send(ts_RSL_RF_CHAN_REL_ACK(g_chan_nr));
f_rslem_unregister(0, g_chan_nr);
@ -7224,7 +7224,7 @@ runs on MSC_ConnHdlr {
[] rsl_pt.receive(tr_RSL_DEACT_SACCH(g_chan_nr)) {
f_logp(BSCVTY, "Got RSL Deact SACCH");
}
[] rsl_pt.receive(tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL)) {
[] rsl_pt.receive(tr_RSL_RF_CHAN_REL(g_chan_nr)) {
f_logp(BSCVTY, "Got RSL RF Chan Rel, sending Rel Ack");
rsl_pt.send(ts_RSL_RF_CHAN_REL_ACK(g_chan_nr));
f_rslem_unregister(0, g_chan_nr, PT := rsl_proc_pt);
@ -7250,7 +7250,7 @@ runs on MSC_ConnHdlr {
/* Also drop the SCCP connection */
BSSAP.send(RAN_Conn_Prim:MSC_CONN_PRIM_DISC_REQ);
}
[] rsl_pt.receive(tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL)) {
[] rsl_pt.receive(tr_RSL_RF_CHAN_REL(g_chan_nr)) {
f_logp(BSCVTY, "Got RSL RF Chan Rel, sending Rel Ack");
rsl_pt.send(ts_RSL_RF_CHAN_REL_ACK(g_chan_nr));
f_rslem_unregister(0, g_chan_nr, PT := rsl_proc_pt);
@ -9210,7 +9210,7 @@ private function f_tc_no_msc(charstring id) runs on MSC_ConnHdlr {
[] RSL.receive(tr_RSL_DEACT_SACCH(g_chan_nr)) {
f_logp(BSCVTY, "Got RSL Deact SACCH");
}
[] RSL.receive(tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL)) {
[] RSL.receive(tr_RSL_RF_CHAN_REL(g_chan_nr)) {
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);
@ -9388,7 +9388,7 @@ private function f_TC_reassignment_codec(charstring id) runs on MSC_ConnHdlr {
[] MGCP.receive(tr_DLCX) {}
[] RSL.receive(tr_RSL_DATA_REQ(g_chan_nr, ?, decmatch tr_RRM_RR_RELEASE)) {}
[] RSL.receive(tr_RSL_DEACT_SACCH(g_chan_nr)) {}
[] RSL.receive(tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL)) {
[] RSL.receive(tr_RSL_RF_CHAN_REL(g_chan_nr)) {
RSL.send(ts_RSL_RF_CHAN_REL_ACK(g_chan_nr));
f_rslem_unregister(0, g_chan_nr);
}