pespin has uploaded this change for review. (
https://gerrit.osmocom.org/c/osmo-pcu/+/33276 )
Change subject: Move GPRS_RLCMAC_FLAG_TO_DL_ACK from state_fsm to dl_tbf
......................................................................
Move GPRS_RLCMAC_FLAG_TO_DL_ACK from state_fsm to dl_tbf
That flag was still in state_fsm for historical reasons (refactoring
steps), but it's not really the best place for it, since it's really
specific to dl_tbf and to transmit of data and DL ACK/NACK not the
overall state of the TBF.
Change-Id: I6b44121bbe185b58f3a77be8c12b4ef1f3180a30
---
M src/tbf.cpp
M src/tbf.h
M src/tbf_dl.cpp
M src/tbf_dl.h
4 files changed, 24 insertions(+), 9 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/76/33276/1
diff --git a/src/tbf.cpp b/src/tbf.cpp
index 885c602..8981615 100644
--- a/src/tbf.cpp
+++ b/src/tbf.cpp
@@ -560,11 +560,11 @@
dl_tbf = tbf_as_dl_tbf(this);
/* POLL Timeout expecting DL ACK/NACK: implies direction == GPRS_RLCMAC_DL_TBF */
OSMO_ASSERT(dl_tbf);
- if (!(dl_tbf->state_fsm.state_flags & (1 << GPRS_RLCMAC_FLAG_TO_DL_ACK)))
{
+ if (!dl_tbf->m_last_dl_poll_ack_lost) {
LOGPTBF(this, LOGL_NOTICE,
"Timeout for polling PACKET DOWNLINK ACK: %s\n",
tbf_rlcmac_diag(dl_tbf));
- dl_tbf->state_fsm.state_flags |= (1 << GPRS_RLCMAC_FLAG_TO_DL_ACK);
+ dl_tbf->m_last_dl_poll_ack_lost = true;
}
if (dl_tbf->state_is(TBF_ST_RELEASING))
bts_do_rate_ctr_inc(bts, CTR_RLC_REL_TIMEDOUT);
diff --git a/src/tbf.h b/src/tbf.h
index 37756b0..941e350 100644
--- a/src/tbf.h
+++ b/src/tbf.h
@@ -110,8 +110,6 @@
#define GPRS_RLCMAC_FLAG_CCCH 0 /* assignment on CCCH */
#define GPRS_RLCMAC_FLAG_PACCH 1 /* assignment on PACCH */
#define GPRS_RLCMAC_FLAG_DL_ACK 2 /* DL TBF: At least one DL ACK/NACK was recieved since
it was assigned */
-#define GPRS_RLCMAC_FLAG_TO_DL_ACK 3 /* DL TBF: Failed to receive last polled DL ACK/NACK
*/
-
#define TBF_TFI_UNSET 0xff
#define T_START(tbf, t, T, r, f) tbf->t_start(t, T, r, f, __FILE__, __LINE__)
diff --git a/src/tbf_dl.cpp b/src/tbf_dl.cpp
index 3ffafbf..737b978 100644
--- a/src/tbf_dl.cpp
+++ b/src/tbf_dl.cpp
@@ -858,7 +858,7 @@
LOGPTBFDL(this, LOGL_DEBUG,
"Scheduling Ack/Nack polling, because it was requested explicitly "
"(e.g. first final block sent).\n");
- } else if (state_fsm.state_flags & (1 << GPRS_RLCMAC_FLAG_TO_DL_ACK)) {
+ } else if (m_last_dl_poll_ack_lost) {
LOGPTBFDL(this, LOGL_DEBUG,
"Scheduling Ack/Nack polling, because polling timed out.\n");
} else {
@@ -879,10 +879,10 @@
if (is_final)
T_START(this, T3191, 3191, "final block (DL-TBF)", true);
- state_fsm.state_flags &= ~(1 << GPRS_RLCMAC_FLAG_TO_DL_ACK); /* clear poll
timeout flag */
-
/* Clear request flag */
m_dl_ack_requested = false;
+ /* clear poll timeout flag */
+ m_last_dl_poll_ack_lost = false;
/* set polling in header */
rlc.rrbp = rrbp;
@@ -1080,7 +1080,7 @@
LOGPTBFDL(this, LOGL_DEBUG, "downlink acknowledge\n");
state_fsm.state_flags |= (1 << GPRS_RLCMAC_FLAG_DL_ACK);
- state_fsm.state_flags &= ~(1 << GPRS_RLCMAC_FLAG_TO_DL_ACK);
+ m_last_dl_poll_ack_lost = false;
/* reset N3105 */
n_reset(N3105);
@@ -1118,7 +1118,7 @@
{
/* poll after POLL_ACK_AFTER_FRAMES frames, or when final block is tx or
* when last polled DL ACK/NACK was lost. */
- return state_fsm.state_flags & (1 << GPRS_RLCMAC_FLAG_TO_DL_ACK) ||
+ return m_last_dl_poll_ack_lost ||
m_tx_counter >= POLL_ACK_AFTER_FRAMES ||
m_dl_ack_requested;
}
diff --git a/src/tbf_dl.h b/src/tbf_dl.h
index 6718c13..ec75e32 100644
--- a/src/tbf_dl.h
+++ b/src/tbf_dl.h
@@ -71,6 +71,9 @@
int32_t m_tx_counter; /* count all transmitted blocks */
bool m_dl_ack_requested;
int32_t m_last_dl_poll_fn;
+ /* Whether we failed to receive ("poll timeout") last PKT CTRL ACK from
+ * MS polled during DL ACK/NACK with RRBP set in "m_last_dl_poll_fn": */
+ bool m_last_dl_poll_ack_lost;
int32_t m_last_dl_drained_fn;
struct BandWidth {
--
To view, visit
https://gerrit.osmocom.org/c/osmo-pcu/+/33276
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Change-Id: I6b44121bbe185b58f3a77be8c12b4ef1f3180a30
Gerrit-Change-Number: 33276
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: newchange