aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2020-05-18 11:02:39 +0200
committerPau Espin Pedrol <pespin@sysmocom.de>2020-05-18 11:07:03 +0200
commit5bb87b83d1ff90686bb1709969bcc2fc86185e46 (patch)
treea3f69442397c054917c76bec0bc6321ff741fae2
parentc68e97012c36c4e65aa632e32bb47fff609bacd4 (diff)
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
-rw-r--r--src/rlc.cpp10
-rw-r--r--src/rlc.h4
-rw-r--r--src/tbf_dl.cpp2
-rw-r--r--tests/types/TypesTest.cpp2
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);