aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <holger@moiji-mobile.com>2013-11-13 17:15:26 +0100
committerHolger Hans Peter Freyther <holger@moiji-mobile.com>2013-11-13 17:16:28 +0100
commitb1302b083e9d8f5dd60229570716f497ea61d26c (patch)
treedc3af06e33999dbc4fb270229418e17e9be03eec /src
parent32f9a59ab42f9c37908d3d4a9db341583ab516ac (diff)
llc: Move the decision if a frame has expired into the LLC
This way the generation of the expiry information and the check is at the same place. This should make reading the code more easy.
Diffstat (limited to 'src')
-rw-r--r--src/llc.cpp9
-rw-r--r--src/llc.h1
-rw-r--r--src/tbf.cpp5
3 files changed, 11 insertions, 4 deletions
diff --git a/src/llc.cpp b/src/llc.cpp
index 2997ec1..c0c517f 100644
--- a/src/llc.cpp
+++ b/src/llc.cpp
@@ -102,3 +102,12 @@ void gprs_llc::calc_pdu_lifetime(BTS *bts, const uint16_t pdu_delay_csec, struct
timeradd(&now, &csec, tv);
}
+
+bool gprs_llc::is_frame_expired(struct timeval *tv_now, struct timeval *tv)
+{
+ /* Timeout is infinite */
+ if (tv->tv_sec == 0 && tv->tv_usec == 0)
+ return false;
+
+ return timercmp(tv_now, tv, >);
+}
diff --git a/src/llc.h b/src/llc.h
index f83b9f9..f1692f4 100644
--- a/src/llc.h
+++ b/src/llc.h
@@ -28,6 +28,7 @@
*/
struct gprs_llc {
static void calc_pdu_lifetime(BTS *bts, const uint16_t pdu_delay_csec, struct timeval *tv);
+ static bool is_frame_expired(struct timeval *now, struct timeval *tv);
void init();
void reset();
diff --git a/src/tbf.cpp b/src/tbf.cpp
index 41a94bc..63c8070 100644
--- a/src/tbf.cpp
+++ b/src/tbf.cpp
@@ -689,10 +689,7 @@ struct msgb *gprs_rlcmac_tbf::llc_dequeue(bssgp_bvc_ctx *bctx)
tv = (struct timeval *)msg->data;
msgb_pull(msg, sizeof(*tv));
- /* Timeout is infinite */
- if (tv->tv_sec == 0 && tv->tv_usec == 0)
- break;
- if (timercmp(&tv_now, tv, >)) {
+ if (gprs_llc::is_frame_expired(&tv_now, tv)) {
LOGP(DRLCMACDL, LOGL_NOTICE, "%s Discarding LLC PDU "
"because lifetime limit reached\n",
tbf_name(this));