Changed PDCP LTE to use unique_lock.

master
Pedro Alvarez 6 years ago committed by Andre Puschmann
parent 3da0391fff
commit 8c10eabf23

@ -112,7 +112,8 @@ void pdcp_entity_lte::write_sdu(unique_byte_buffer_t sdu, bool blocking)
(do_integrity) ? "true" : "false",
(do_encryption) ? "true" : "false");
mutex.lock();
{
std::unique_lock<std::mutex> lock(mutex);
if (is_srb()) {
pdcp_pack_control_pdu(tx_count, sdu.get());
@ -135,8 +136,7 @@ void pdcp_entity_lte::write_sdu(unique_byte_buffer_t sdu, bool blocking)
log->info_hex(sdu->msg, sdu->N_bytes, "TX %s SDU (encrypted)", rrc->get_rb_name(lcid).c_str());
}
tx_count++;
mutex.unlock();
}
rlc->write_sdu(lcid, std::move(sdu), blocking);
}
@ -157,8 +157,7 @@ void pdcp_entity_lte::write_pdu(unique_byte_buffer_t pdu)
return;
}
mutex.lock();
std::unique_lock<std::mutex> lock(mutex);
if (is_drb()) {
// Handle DRB messages
if (rlc->rb_is_um(lcid)) {
@ -192,7 +191,6 @@ void pdcp_entity_lte::write_pdu(unique_byte_buffer_t pdu)
}
exit:
rx_count++;
mutex.unlock();
}
/****************************************************************************

@ -260,7 +260,7 @@ int test_tx_all(srslte::byte_buffer_pool* pool, srslte::log* log)
* RX Test: PDCP Entity with SN LEN = 12 and 18. Tested 4097 packets received without losses.
* PDCP entity configured with EIA2 and EEA2
*/
int test_rx_in_sequence(uint32_t n_packets, uint8_t pdcp_sn_len, srslte::byte_buffer_pool* pool, srslte::log* log)
int test_rx_in_sequence(uint64_t n_packets, uint8_t pdcp_sn_len, srslte::byte_buffer_pool* pool, srslte::log* log)
{
srslte::pdcp_entity_nr pdcp_tx;
srslte::pdcp_entity_nr pdcp_rx;
@ -296,7 +296,7 @@ int test_rx_in_sequence(uint32_t n_packets, uint8_t pdcp_sn_len, srslte::byte_bu
// Generate test message and
// decript and check matching SDUs
for (uint32_t i = 0; i < n_packets; ++i) {
for (uint64_t i = 0; i < n_packets; ++i) {
srslte::unique_byte_buffer_t sdu = allocate_unique_buffer(*pool);
srslte::unique_byte_buffer_t pdu = allocate_unique_buffer(*pool);
memcpy(sdu->msg, sdu_exp->msg, SDU1_LEN);
@ -326,6 +326,7 @@ int run_all_tests(srslte::byte_buffer_pool* pool)
TESTASSERT(test_tx_all(pool, &log) == 0);
TESTASSERT(test_rx_in_sequence(4097, srslte::PDCP_SN_LEN_12, pool, &log) == 0);
// TESTASSERT(test_rx_in_sequence(4294967297, srslte::PDCP_SN_LEN_12, pool, &log) == 0);
TESTASSERT(test_rx_in_sequence(262145, srslte::PDCP_SN_LEN_18, pool, &log) == 0);
return 0;
}

Loading…
Cancel
Save