pespin has submitted this change. ( 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, 26 insertions(+), 0 deletions(-)
Approvals: osmith: Looks good to me, approved Jenkins Builder: Verified
diff --git a/src/tbf_dl_fsm.c b/src/tbf_dl_fsm.c index 557fb7a..d604f6f 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,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); } @@ -450,6 +460,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 +472,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),