fixeria has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmocom-bb/+/30318 )
Change subject: trxcon: trxcon_fsm: permit loop DCH transitions ......................................................................
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)