summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2023-07-17 17:07:33 +0200
committerPau Espin Pedrol <pespin@sysmocom.de>2023-07-24 14:00:47 +0200
commit89ef574fe2257f65ae4140b71620589e8c0726e9 (patch)
treec32730b0084fecf7c9db3ba784824a9b51dc6863
parent345d03a6f6eb4c2d9511774b1eda33f0a886742a (diff)
layer23: modem: Avoid direct transition ST_PACKET_TRANSFER->ST_PACKET_IDLE
Right now the existing code is switching to state IDLE and hence running grr_st_packet_idle_onenter() which attempts stuff like starting an attach. This is all done while the L1CTL RESET + FBSB is still in progress. We should instead wait to receive confirmation from those. As an easy implementation for now, simply switch to the GRR_ST_PACKET_NOT_READY state, which will move to GRR_ST_PACKET_IDLE once it starts receiving CCCH blocks (aka it will already have gone through L1CTL RESET + FBSB completely). Change-Id: Ie797b36701d10c6052500c637a08b061bb1e4bd7
-rw-r--r--src/host/layer23/src/modem/grr.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/host/layer23/src/modem/grr.c b/src/host/layer23/src/modem/grr.c
index 2047eefd..12d7059c 100644
--- a/src/host/layer23/src/modem/grr.c
+++ b/src/host/layer23/src/modem/grr.c
@@ -688,7 +688,7 @@ static void grr_st_packet_transfer_action(struct osmo_fsm_inst *fi,
break;
case GRR_EV_PDCH_RELEASE_REQ:
modem_sync_to_cell(ms);
- osmo_fsm_inst_state_chg(fi, GRR_ST_PACKET_IDLE, 0, 0);
+ osmo_fsm_inst_state_chg(fi, GRR_ST_PACKET_NOT_READY, 0, 0);
break;
default:
OSMO_ASSERT(0);
@@ -717,8 +717,7 @@ static const struct osmo_fsm_state grr_fsm_states[] = {
},
[GRR_ST_PACKET_TRANSFER] = {
.name = "PACKET_TRANSFER",
- .out_state_mask = S(GRR_ST_PACKET_NOT_READY)
- | S(GRR_ST_PACKET_IDLE),
+ .out_state_mask = S(GRR_ST_PACKET_NOT_READY),
.in_event_mask = S(GRR_EV_PDCH_UL_TBF_CFG_REQ)
| S(GRR_EV_PDCH_DL_TBF_CFG_REQ)
| S(GRR_EV_PDCH_BLOCK_REQ)