From 5bb87b83d1ff90686bb1709969bcc2fc86185e46 Mon Sep 17 00:00:00 2001 From: Pau Espin Pedrol Date: Mon, 18 May 2020 11:02:39 +0200 Subject: rlc: Move prepare() function out of gprs_rlc_data struct Newer gcc 10.1.0 is erroring due to memset being applied on a complex type, so let's start by removing this only function outside of the struct. Change-Id: I20426557d9b3049ab275fadb92e10ea8a860a119 --- src/rlc.cpp | 10 +++++----- src/rlc.h | 4 ++-- src/tbf_dl.cpp | 2 +- tests/types/TypesTest.cpp | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/rlc.cpp b/src/rlc.cpp index 6d084b13..5316136d 100644 --- a/src/rlc.cpp +++ b/src/rlc.cpp @@ -32,16 +32,16 @@ extern "C" { } -uint8_t *gprs_rlc_data::prepare(size_t block_data_len) +uint8_t *prepare(struct gprs_rlc_data *rlc, size_t block_data_len) { /* todo.. only set it once if it turns out to be a bottleneck */ - memset(block, 0x0, sizeof(block)); - memset(block, 0x2b, block_data_len); + memset(rlc->block, 0x0, sizeof(rlc->block)); + memset(rlc->block, 0x2b, block_data_len); /* Initial value of puncturing scheme */ - next_ps = EGPRS_PS_1; + rlc->next_ps = EGPRS_PS_1; - return block; + return rlc->block; } void gprs_rlc_v_b::reset() diff --git a/src/rlc.h b/src/rlc.h index 135060e7..109c5b3a 100644 --- a/src/rlc.h +++ b/src/rlc.h @@ -177,8 +177,6 @@ union split_block_status { }; struct gprs_rlc_data { - uint8_t *prepare(size_t block_data_length); - /* block data including LI headers */ uint8_t block[RLC_MAX_LEN]; /* block data len including LI headers*/ @@ -211,6 +209,8 @@ struct gprs_rlc_data { union split_block_status spb_status; }; +uint8_t *prepare(struct gprs_rlc_data *rlc, size_t block_data_length); + void gprs_rlc_data_info_init_dl(struct gprs_rlc_data_info *rlc, GprsCodingScheme cs, bool with_padding, const unsigned int spb); void gprs_rlc_data_info_init_ul(struct gprs_rlc_data_info *rlc, diff --git a/src/tbf_dl.cpp b/src/tbf_dl.cpp index dab1e290..cd4ddb91 100644 --- a/src/tbf_dl.cpp +++ b/src/tbf_dl.cpp @@ -581,7 +581,7 @@ int gprs_rlcmac_dl_tbf::create_new_bsn(const uint32_t fn, GprsCodingScheme cs) /* now we still have untransmitted LLC data, so we fill mac block */ rlc_data = m_rlc.block(bsn); - data = rlc_data->prepare(block_data_len); + data = prepare(rlc_data, block_data_len); rlc_data->cs_last = cs; rlc_data->cs_current_trans = cs; diff --git a/tests/types/TypesTest.cpp b/tests/types/TypesTest.cpp index b46a82b5..e1c894dd 100644 --- a/tests/types/TypesTest.cpp +++ b/tests/types/TypesTest.cpp @@ -97,7 +97,7 @@ static void test_rlc() { struct gprs_rlc_data rlc = { 0, }; memset(rlc.block, 0x23, RLC_MAX_LEN); - uint8_t *p = rlc.prepare(20); + uint8_t *p = prepare(&rlc, 20); OSMO_ASSERT(p == rlc.block); for (int i = 0; i < 20; ++i) OSMO_ASSERT(p[i] == 0x2B); -- cgit v1.2.3