fixeria has uploaded this change for review.
trxcon: trxcon_fsm: permit loop DCH transitions
According to 3GPP TS 44.004, Figure 5.1, it's absolutely legal to
perform loop transitions in state 'DCH' (i.e. from 'DCH' to 'DCH').
This kind of transition is needed in the following cases:
* on reciept of RR FREQUENCY REDEFINITION,
* on reciept of RR ASSIGNMENT REQUEST,
* on reciept of RR HANDOVER REQUEST,
when going back from state 'DCH' to state 'BCH' is not required nor
actually desired. In context of the trxcon_fsm, this applies to
both TRXCON_ST_DEDICATED and TRXCON_ST_PACKET_DATA.
Change-Id: I3b402ec84610a5df744d9b06e5f7dab7a9a3ddad
Related: OS#5599
---
M src/host/trxcon/src/trxcon_fsm.c
1 file changed, 10 insertions(+), 2 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/18/30318/1
diff --git a/src/host/trxcon/src/trxcon_fsm.c b/src/host/trxcon/src/trxcon_fsm.c
index 84bbcaf..bf952de 100644
--- a/src/host/trxcon/src/trxcon_fsm.c
+++ b/src/host/trxcon/src/trxcon_fsm.c
@@ -336,6 +336,9 @@
trxcon->l1p.band_arfcn = req->h0.band_arfcn;
}
+ /* Remove all active timeslots */
+ l1sched_reset(trxcon->sched, false);
+
rc = l1sched_configure_ts(trxcon->sched, req->chan_nr & 0x07, config);
if (rc)
return;
@@ -410,6 +413,9 @@
case TRXCON_EV_TX_ACCESS_BURST_CNF:
l1ctl_tx_rach_conf(trxcon, (const struct trxcon_param_tx_access_burst_cnf *)data);
break;
+ case TRXCON_EV_DCCH_EST_REQ:
+ handle_dcch_est_req(fi, (const struct trxcon_param_dcch_est_req *)data);
+ break;
case TRXCON_EV_DCCH_REL_REQ:
l1sched_reset(trxcon->sched, false);
osmo_fsm_inst_state_chg(fi, TRXCON_ST_RESET, 0, 0);
@@ -601,7 +607,8 @@
[TRXCON_ST_DEDICATED] = {
.name = "DEDICATED",
.out_state_mask = S(TRXCON_ST_RESET)
- | S(TRXCON_ST_FBSB_SEARCH),
+ | S(TRXCON_ST_FBSB_SEARCH)
+ | S(TRXCON_ST_DEDICATED),
.in_event_mask = S(TRXCON_EV_DCCH_REL_REQ)
| S(TRXCON_EV_TX_ACCESS_BURST_REQ)
| S(TRXCON_EV_TX_ACCESS_BURST_CNF)
@@ -615,7 +622,8 @@
[TRXCON_ST_PACKET_DATA] = {
.name = "PACKET_DATA",
.out_state_mask = S(TRXCON_ST_RESET)
- | S(TRXCON_ST_FBSB_SEARCH),
+ | S(TRXCON_ST_FBSB_SEARCH)
+ | S(TRXCON_ST_PACKET_DATA),
.in_event_mask = S(TRXCON_EV_DCCH_REL_REQ)
| S(TRXCON_EV_TX_ACCESS_BURST_REQ)
| S(TRXCON_EV_TX_ACCESS_BURST_CNF)
To view, visit change 30318. To unsubscribe, or for help writing mail filters, visit settings.