pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-pcu/+/33455 )
Change subject: tbf_dl_fsm: Ignore DL_ACKNACK_MISS events in WAIT_{RELEASE,REUSE_TFI} states ......................................................................
tbf_dl_fsm: Ignore DL_ACKNACK_MISS events in WAIT_{RELEASE,REUSE_TFI} states
If in those states, we already left the FINISHED step which means we already received a FinalACk previously, hence it means we are missing requested retransmissions of the last DL ACK/NACK due to fn-advance (several DL blocks in transit before receiving UL response).
Change-Id: Ib0f23a9cc3c614fe428b682e01502930cd2e478f --- M src/tbf_dl_fsm.c 1 file changed, 25 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/55/33455/1
diff --git a/src/tbf_dl_fsm.c b/src/tbf_dl_fsm.c index 557fb7a..3a963ce 100644 --- a/src/tbf_dl_fsm.c +++ b/src/tbf_dl_fsm.c @@ -286,6 +286,11 @@ case TBF_EV_FINAL_ACK_RECVD: /* ignore, duplicate ACK, we already know about since we left ST_FINISHED */ break; + case TBF_EV_DL_ACKNACK_MISS: + /* ignore, miss for retransmitted ACK, but a previous one was + * already ACKED since we left ST_FINISHED. This happens due to + * fn-advance scheduling several DL blocks in advance. */ + break; default: OSMO_ASSERT(0); } @@ -320,6 +325,10 @@ case TBF_EV_FINAL_ACK_RECVD: /* ignore, duplicate ACK, we already know about since we left ST_FINISHED */ break; + case TBF_EV_DL_ACKNACK_MISS: + /* ignore, miss for retransmitted ACK, but a previous one was + * already ACKED since we left ST_FINISHED. This happens due to + * fn-advance scheduling several DL blocks in advance. */ default: OSMO_ASSERT(0); } @@ -450,6 +459,7 @@ }, [TBF_ST_WAIT_RELEASE] = { .in_event_mask = + X(TBF_EV_DL_ACKNACK_MISS) | X(TBF_EV_FINAL_ACK_RECVD) | X(TBF_EV_MAX_N3105), .out_state_mask = @@ -461,6 +471,7 @@ }, [TBF_ST_WAIT_REUSE_TFI] = { .in_event_mask = + X(TBF_EV_DL_ACKNACK_MISS) | X(TBF_EV_FINAL_ACK_RECVD), .out_state_mask = X(TBF_ST_RELEASING),