aboutsummaryrefslogtreecommitdiffstats
path: root/src/bts.h
diff options
context:
space:
mode:
authorJacob Erlbeck <jerlbeck@sysmocom.de>2015-03-20 14:26:05 +0100
committerJacob Erlbeck <jerlbeck@sysmocom.de>2015-03-25 12:34:38 +0100
commit502bd1feea9441938498b92405220437dc3a91bf (patch)
tree2a90f0c6b8ff7d4158251f9040064a03b4e140c3 /src/bts.h
parente25b5b91f60f20f61096bc6199a05b58ee6c6328 (diff)
tbf: Poll MS on idle DL TBFs
If an MS wants to open a new UL TBF, it can either use (P)RACH or request one in a Ack/Nack message for a DL TBF (PACCH). When a TBF becomes idle (LCC queue is empty but the TBF is kept open), there aren't any Ack/Nack requests that can be used by the MS to ask for an UL TBF, therefore it has to use the RACH. This leads to many RACH requests even for a single HTTP transaction, so it takes some time to retrieve even a simple web page. This commit modifies the scheduler to regularly send Ack/Nack requests on idle DL TBFs. It does so by extending the priority based scheduling algorithm to have 5 priority levels (highest priority first): - Control block is pending - High age (100%) threshold reached (-> request Ack/Nack) - Data is waiting or there are pending Nacks - Low age (200ms) threshold reached (-> request Ack/Nack) - Pending Nacks that have been resent already - None of the above (-> send DL dummy control block) The 'age' refers to the time since since the last control block has been sent on the TBF. This high age threshold is set to dl-tbf-idle-time or to 50% of T3190 (whichever is smaller), aiming for at least a poll (and TBF shutdown) after the TBF has expired and to safely prevent expiry of T3190. So if dl-tbf-idle-time > 200ms, there will be a poll every 200ms and a final poll after dl-tbf-idle-time. On high load, the interval between polls can get higher, but the 'high age' poll should be in place. This commit implements the scheduling with respect to GSM 44.060, 9.3.1a ("Delayed release of downlink TBF"). Ticket: #556 Sponsored-by: On-Waves ehf
Diffstat (limited to 'src/bts.h')
-rw-r--r--src/bts.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/bts.h b/src/bts.h
index 3d74b759..2b43736e 100644
--- a/src/bts.h
+++ b/src/bts.h
@@ -178,6 +178,10 @@ public:
CTR_RACH_REQUESTS,
};
+ enum {
+ TIMER_T3190_MSEC = 5000,
+ };
+
BTS();
~BTS();