aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2021-10-12 19:32:28 +0200
committerPau Espin Pedrol <pespin@sysmocom.de>2021-10-12 19:32:28 +0200
commitffe998ce9d0437d44f7ba129d30b5bdc39139af4 (patch)
tree7bed99d63c6f5b15ce35c6d3358d3b63ad5b7a7d
parent38a9c873bc6390009bee610d734d616d11cc1bda (diff)
tbf: Document temporary change of control_ts and move code assigning it back to FSM
-rw-r--r--src/pdch.cpp12
-rw-r--r--src/tbf_fsm.c1
2 files changed, 8 insertions, 5 deletions
diff --git a/src/pdch.cpp b/src/pdch.cpp
index dbdd47f5..ca3a0ea1 100644
--- a/src/pdch.cpp
+++ b/src/pdch.cpp
@@ -384,8 +384,6 @@ void gprs_rlcmac_pdch::rcv_control_ack(Packet_Control_Acknowledgement_t *packet,
tbf_free(tbf);
osmo_fsm_inst_dispatch(new_tbf->state_fsm.fi, TBF_EV_ASSIGN_ACK_PACCH, NULL);
-
- tbf_assign_control_ts(new_tbf);
/* there might be LLC packets waiting in the queue, but the DL
* TBF might have been released while the UL TBF has been
* established */
@@ -417,8 +415,6 @@ void gprs_rlcmac_pdch::rcv_control_ack(Packet_Control_Acknowledgement_t *packet,
tbf_free(tbf);
osmo_fsm_inst_dispatch(new_tbf->state_fsm.fi, TBF_EV_ASSIGN_ACK_PACCH, NULL);
-
- tbf_assign_control_ts(new_tbf);
return;
case PDCH_ULC_POLL_CELL_CHG_CONTINUE:
@@ -717,7 +713,13 @@ void gprs_rlcmac_pdch::rcv_resource_request(Packet_Resource_Request_t *request,
goto return_unref;
}
- /* set control ts to current MS's TS, until assignment complete */
+ /* Set control TS to the TS where this PktResReq was received,
+ * which in practice happens to be the control_ts from the
+ * previous UL-TBF or SBA. When CTRL ACK is received as RRBP of the Pkt
+ * UL Ass scheduled below, then TBF_EV_ASSIGN_ACK_PACCH will be
+ * sent to tbf_fsm which will call tbf_assign_control_ts(),
+ * effectively setting back control_ts to
+ * tbf->initial_common_ts. */
LOGPTBF(ul_tbf, LOGL_DEBUG, "change control TS %d -> %d until assignment is complete.\n",
ul_tbf->control_ts, ts_no);
diff --git a/src/tbf_fsm.c b/src/tbf_fsm.c
index 84d5bcc0..36981e6d 100644
--- a/src/tbf_fsm.c
+++ b/src/tbf_fsm.c
@@ -157,6 +157,7 @@ static void st_assign(struct osmo_fsm_inst *fi, uint32_t event, void *data)
mod_ass_type(ctx, GPRS_RLCMAC_FLAG_PACCH, true);
break;
case TBF_EV_ASSIGN_ACK_PACCH:
+ tbf_assign_control_ts(ctx->tbf);
if (ctx->state_flags & (1 << GPRS_RLCMAC_FLAG_CCCH)) {
/* We now know that the PACCH really existed */
LOGPTBF(ctx->tbf, LOGL_INFO,