diff options
author | Jacob Erlbeck <jerlbeck@sysmocom.de> | 2015-08-24 14:35:14 +0200 |
---|---|---|
committer | Jacob Erlbeck <jerlbeck@sysmocom.de> | 2015-08-28 12:23:07 +0200 |
commit | 60f77033ad15da909cdbc0682c781151a23c170c (patch) | |
tree | 09aacd91770c3cae04e159f89a7388d77bbf91b0 /src/bts.h | |
parent | e77d49f2a2c20202dbdc5386c7dfeed4e773a077 (diff) |
poll: Use the data_ind FN as time source for current frame
The FN of the data_ind taken from the DSP are monotonic, so latency
does not affect the detection of poll timeouts if these FN are used.
If the FN is larger than a poll_fn value, it can safely be assumed
that the poll response will not arrive later on.
Currently a max_delay of 60 frames is used, which has the drawback
that additional ~250ms will pass until a lost ACK is detected.
Using the data_ind's FN alone breaks the poll timeout detection if
there are no other MS sending data blocks.
This commit adds BTS::set_current_block_frame_number that is called
with the FN taken from data_ind messages. The max_delay is set to 0
which removes the additional delay, when this FN is used to detect
poll timeouts. So the average additional delay decreases with the
number of data_ind per time. The current_frame is updated unless it
seems to have been updated already (assumed if 0 < cur_fn - block_fn
< 500). Thus the time_ind has still priority to update the
current_frame value.
Sponsored-by: On-Waves ehf
Diffstat (limited to 'src/bts.h')
-rw-r--r-- | src/bts.h | 2 |
1 files changed, 2 insertions, 0 deletions
@@ -244,6 +244,7 @@ public: /** TODO: change the number to unsigned */ void set_current_frame_number(int frame_number); + void set_current_block_frame_number(int frame_number); int current_frame_number() const; /** add paging to paging queue(s) */ @@ -301,6 +302,7 @@ public: private: int m_cur_fn; + int m_cur_blk_fn; struct gprs_rlcmac_bts m_bts; PollController m_pollController; SBAController m_sba; |