diff options
-rw-r--r-- | src/rlc.cpp | 6 | ||||
-rw-r--r-- | src/rlc.h | 1 | ||||
-rw-r--r-- | src/tbf.cpp | 3 |
3 files changed, 8 insertions, 2 deletions
diff --git a/src/rlc.cpp b/src/rlc.cpp index f29af62d..838554ae 100644 --- a/src/rlc.cpp +++ b/src/rlc.cpp @@ -34,6 +34,12 @@ uint8_t *gprs_rlc_data::prepare(size_t block_data_len) return block; } +void gprs_rlc_data::put_data(const uint8_t *data, size_t data_len) +{ + memcpy(block, data, data_len); + len = data_len; +} + void gprs_rlc_v_b::reset() { for (size_t i = 0; i < ARRAY_SIZE(m_v_b); ++i) @@ -29,6 +29,7 @@ class BTS; struct gprs_rlc_data { uint8_t *prepare(size_t block_data_length); + void put_data(const uint8_t *data, size_t len); /* block history */ uint8_t block[RLC_MAX_LEN]; diff --git a/src/tbf.cpp b/src/tbf.cpp index 0b9a1944..edba28a5 100644 --- a/src/tbf.cpp +++ b/src/tbf.cpp @@ -1607,8 +1607,7 @@ int gprs_rlcmac_tbf::rcv_data_block_acknowledged(const uint8_t *data, size_t len /* Write block to buffer and set receive state array. */ index = rh->bsn & mod_sns_half; /* memory index of block */ - memcpy(m_rlc.blocks[index].block, data, len); /* Copy block. */ - m_rlc.blocks[index].len = len; + m_rlc.blocks[index].put_data(data, len); dir.ul.v_n.mark_received(index); LOGP(DRLCMACUL, LOGL_DEBUG, "- BSN %d storing in window (%d..%d)\n", rh->bsn, dir.ul.window.v_q(), |