diff options
author | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2013-11-24 22:43:03 +0100 |
---|---|---|
committer | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2013-11-26 21:00:51 +0100 |
commit | 6ab5b24be4fe42ae8843b4843f4bfcf550484e12 (patch) | |
tree | 45a8cb5a22d7e0195883a19d57d5e15bb8d88a09 /src/rlc.h | |
parent | 7decedcbf895e70517ca4a9abc9b7e583e1d328e (diff) |
tbf/rlc: Move the check if something is in the window out.
Diffstat (limited to 'src/rlc.h')
-rw-r--r-- | src/rlc.h | 13 |
1 files changed, 13 insertions, 0 deletions
@@ -83,6 +83,8 @@ struct gprs_rlc_ul_window { const uint16_t v_r() const; const uint16_t v_q() const; + bool is_in_window(uint8_t bsn) const; + void raise(int moves); void increment_q(int); @@ -300,6 +302,17 @@ inline const int16_t gprs_rlc_dl_window::distance() const return (m_v_s - m_v_a) & mod_sns(); } +inline bool gprs_rlc_ul_window::is_in_window(uint8_t bsn) const +{ + uint16_t offset_v_q; + + /* current block relative to lowest unreceived block */ + offset_v_q = (bsn - m_v_q) & mod_sns(); + /* If out of window (may happen if blocks below V(Q) are received + * again. */ + return offset_v_q < ws(); +} + inline const uint16_t gprs_rlc_ul_window::sns() const { return 128; |