aboutsummaryrefslogtreecommitdiffstats
path: root/src/pdch.cpp
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2021-03-29 18:15:30 +0200
committerPau Espin Pedrol <pespin@sysmocom.de>2021-03-31 17:39:50 +0200
commit86580e1966b7272cad75c845607e45b8347cf758 (patch)
tree3b65144d5888c3c1eed7fbb5de9ee2c86bdfdcda /src/pdch.cpp
parentb5ae0811d1667e792fc3a4e550384791f4bca4c9 (diff)
pdch_ulc: Store TBF poll reason
This allows easily checking the initial reason to trigger the poll when either it is received or times out. Later on this reason can be transformed into an FSM event and sent to the related FSM. Related: OS#5020 Change-Id: Ie8fefd1f47ad674ce597a8065b15284088956bde
Diffstat (limited to 'src/pdch.cpp')
-rw-r--r--src/pdch.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/pdch.cpp b/src/pdch.cpp
index 45c7c984..22bac0bd 100644
--- a/src/pdch.cpp
+++ b/src/pdch.cpp
@@ -306,6 +306,7 @@ void gprs_rlcmac_pdch::rcv_control_ack(Packet_Control_Acknowledgement_t *packet,
uint32_t tlli = packet->TLLI;
GprsMs *ms = bts_ms_by_tlli(bts(), tlli, GSM_RESERVED_TMSI);
gprs_rlcmac_ul_tbf *ul_tbf;
+ enum pdch_ulc_tbf_poll_reason reason;
struct pdch_ulc_node *poll;
poll = pdch_ulc_get_node(ulc, fn);
@@ -325,6 +326,7 @@ void gprs_rlcmac_pdch::rcv_control_ack(Packet_Control_Acknowledgement_t *packet,
return;
}
tbf = poll->tbf_poll.poll_tbf;
+ reason = poll->tbf_poll.reason;
/* Reset N3101 counter: */
tbf->n_reset(N3101);
@@ -337,7 +339,7 @@ void gprs_rlcmac_pdch::rcv_control_ack(Packet_Control_Acknowledgement_t *packet,
/* check if this control ack belongs to packet uplink ack */
ul_tbf = as_ul_tbf(tbf);
- if (ul_tbf && ul_tbf->handle_ctrl_ack()) {
+ if (ul_tbf && ul_tbf->handle_ctrl_ack(reason)) {
LOGPTBF(tbf, LOGL_DEBUG, "[UPLINK] END\n");
if (ul_tbf->ctrl_ack_to_toggle())
LOGPTBF(tbf, LOGL_NOTICE, "Recovered uplink ack for UL\n");