From fce431cf3acfcce343dd456d801f7ab0921ff9d2 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Wed, 13 Nov 2013 15:17:12 +0100 Subject: llc: Move the timeout calculation into the TBF --- src/llc.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/llc.cpp') diff --git a/src/llc.cpp b/src/llc.cpp index 524814cf..585f656b 100644 --- a/src/llc.cpp +++ b/src/llc.cpp @@ -74,3 +74,25 @@ struct msgb *gprs_llc::dequeue() { return msgb_dequeue(&queue); } + + +void gprs_llc::calc_pdu_lifetime(BTS *bts, const uint16_t pdu_delay_csec, struct timeval *tv) +{ + uint16_t delay_csec; + if (bts->bts_data()->force_llc_lifetime) + delay_csec = bts->bts_data()->force_llc_lifetime; + else + delay_csec = pdu_delay_csec; + + /* keep timestap at 0 for infinite delay */ + if (delay_csec != 0xffff) { + /* calculate timestamp of timeout */ + gettimeofday(tv, NULL); + tv->tv_usec += (delay_csec % 100) * 10000; + tv->tv_sec += delay_csec / 100; + if (tv->tv_usec > 999999) { + tv->tv_usec -= 1000000; + tv->tv_sec++; + } + } +} -- cgit v1.2.3