pespin submitted this change.
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(-)
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),
To view, visit change 33455. To unsubscribe, or for help writing mail filters, visit settings.