diff options
author | Pau Espin Pedrol <pespin@sysmocom.de> | 2023-07-17 17:07:33 +0200 |
---|---|---|
committer | Pau Espin Pedrol <pespin@sysmocom.de> | 2023-07-24 14:00:47 +0200 |
commit | 89ef574fe2257f65ae4140b71620589e8c0726e9 (patch) | |
tree | c32730b0084fecf7c9db3ba784824a9b51dc6863 | |
parent | 345d03a6f6eb4c2d9511774b1eda33f0a886742a (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.c | 5 |
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) |