aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2021-06-04 17:53:37 +0200
committerNeels Hofmeyr <neels@hofmeyr.de>2021-06-04 19:11:58 +0200
commit9337d6391b065bedbf7b2267a83ecb1f107e8790 (patch)
tree6868e0ebb1f192a2f2181c2a52c5c11d14618d75
parent3512e3cf1b7fd16dbb476d5abf2eb9c13dcc876e (diff)
fixup: pass tsc = -1 for previous default training sequence codeneels/tsc
An unintended change in default behavior was introduced in patch: "allow explixit TSC Set and TSC on chan activ / modif / assignment" Ic665125255d7354f5499d10dda1dd866ab243d24 c33eb8d56943b8981523754b081967e6ff5f245d Set tsc_set and tsc = -1 for all lchan_activate_info and assignment_request requests to actually yield the default behavior of selecting the TSC based on the timeslot cfg or the BSIC value. By setting tsc = 0 implicitly, the patch caused all requests to ask for tsc 0 instead of calling gsm_ts_tsc(). For a Channel Mode Modify in assignment_fsm, pass the lchan's current TSC to keep it unchanged. Related: SYS#5315 OS#4940 Ic665125255d7354f5499d10dda1dd866ab243d24 Change-Id: If12df11511fe22ea167782f776736a1a9c484b1f
-rw-r--r--src/osmo-bsc/abis_rsl.c2
-rw-r--r--src/osmo-bsc/assignment_fsm.c6
-rw-r--r--src/osmo-bsc/lchan_fsm.c2
-rw-r--r--src/osmo-bsc/osmo_bsc_bssap.c4
4 files changed, 13 insertions, 1 deletions
diff --git a/src/osmo-bsc/abis_rsl.c b/src/osmo-bsc/abis_rsl.c
index 1fb4c0475..89ebeee6a 100644
--- a/src/osmo-bsc/abis_rsl.c
+++ b/src/osmo-bsc/abis_rsl.c
@@ -1782,6 +1782,8 @@ void abis_rsl_chan_rqd_queue_poll(struct gsm_bts *bts)
},
.ta = rqd->ta,
.ta_known = true,
+ .tsc_set = -1,
+ .tsc = -1,
};
lchan_activate(lchan, &info);
diff --git a/src/osmo-bsc/assignment_fsm.c b/src/osmo-bsc/assignment_fsm.c
index 0f38eec8a..cb44fd4a3 100644
--- a/src/osmo-bsc/assignment_fsm.c
+++ b/src/osmo-bsc/assignment_fsm.c
@@ -808,14 +808,18 @@ static void assignment_fsm_wait_mgw_endpoint_to_msc(struct osmo_fsm_inst *fi, ui
static void assignment_fsm_wait_lchan_modified_onenter(struct osmo_fsm_inst *fi, uint32_t prev_state)
{
struct gsm_subscriber_connection *conn = assignment_fi_conn(fi);
+ struct gsm_lchan *lchan = conn->lchan;
struct assignment_request *req = &conn->assignment.req;
struct lchan_modify_info modif_info = {
.modify_for = MODIFY_FOR_ASSIGNMENT,
.ch_mode_rate = conn->assignment.selected_ch_mode_rate,
.requires_voice_stream = conn->assignment.requires_voice_stream,
.msc_assigned_cic = req->msc_assigned_cic,
+ /* keep previous training sequence code */
+ .tsc_set = lchan->tsc_set,
+ .tsc = lchan->tsc,
};
- lchan_mode_modify(conn->lchan, &modif_info);
+ lchan_mode_modify(lchan, &modif_info);
}
static void assignment_fsm_wait_lchan_modified(struct osmo_fsm_inst *fi, uint32_t event, void *data)
diff --git a/src/osmo-bsc/lchan_fsm.c b/src/osmo-bsc/lchan_fsm.c
index a29ddae8e..e18d4df33 100644
--- a/src/osmo-bsc/lchan_fsm.c
+++ b/src/osmo-bsc/lchan_fsm.c
@@ -984,6 +984,8 @@ static void lchan_fsm_wait_rsl_chan_mode_modify_ack(struct osmo_fsm_inst *fi, ui
.ch_mode_rate = lchan->modify.ch_mode_rate,
.requires_voice_stream = true,
.msc_assigned_cic = lchan->modify.info.msc_assigned_cic,
+ .tsc_set = -1,
+ .tsc = -1,
};
lchan->activate.concluded = false;
lchan_fsm_state_chg(LCHAN_ST_WAIT_RLL_RTP_ESTABLISH);
diff --git a/src/osmo-bsc/osmo_bsc_bssap.c b/src/osmo-bsc/osmo_bsc_bssap.c
index 239c2ca88..90fecf031 100644
--- a/src/osmo-bsc/osmo_bsc_bssap.c
+++ b/src/osmo-bsc/osmo_bsc_bssap.c
@@ -928,6 +928,8 @@ static int bssmap_handle_assignm_req(struct gsm_subscriber_connection *conn,
.msc_assigned_cic = cic,
.use_osmux = use_osmux,
.osmux_cid = osmux_cid,
+ .tsc_set = -1,
+ .tsc = -1,
};
/* Match codec information from the assignment command against the
@@ -954,6 +956,8 @@ static int bssmap_handle_assignm_req(struct gsm_subscriber_connection *conn,
req = (struct assignment_request){
.assign_for = ASSIGN_FOR_BSSMAP_REQ,
.aoip = aoip,
+ .tsc_set = -1,
+ .tsc = -1,
};
rc = select_sign_chan(&req, &ct);