mirror of https://github.com/PentHertz/srsLTE.git
Starting to add the ability to tweak the initial state of the PDCP NR state, so that the tests of counter wraparound don't take hours.
This commit is contained in:
parent
517ce8a220
commit
39943367ab
|
@ -36,6 +36,7 @@ pdcp_security_cfg sec_cfg = {
|
||||||
srslte::CIPHERING_ALGORITHM_ID_128_EEA2,
|
srslte::CIPHERING_ALGORITHM_ID_128_EEA2,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// Test SDUs for tx
|
// Test SDUs for tx
|
||||||
uint8_t sdu1[] = {0x18, 0xE2};
|
uint8_t sdu1[] = {0x18, 0xE2};
|
||||||
uint8_t sdu2[] = {0xde, 0xad};
|
uint8_t sdu2[] = {0xde, 0xad};
|
||||||
|
@ -51,6 +52,14 @@ uint8_t pdu6[] = {0x80, 0x00, 0x00, 0xc2, 0x47, 0xa8, 0xdd, 0xc0, 0x73};
|
||||||
// Test PDUs for rx (generated from SDU2)
|
// Test PDUs for rx (generated from SDU2)
|
||||||
uint8_t pdu7[] = {0x80, 0x01, 0x5e, 0x3d, 0x64, 0xaf, 0xac, 0x7c};
|
uint8_t pdu7[] = {0x80, 0x01, 0x5e, 0x3d, 0x64, 0xaf, 0xac, 0x7c};
|
||||||
|
|
||||||
|
// Struct to help initialize pdcp_helper.
|
||||||
|
struct pdcp_nr_initial_state_cfg {
|
||||||
|
uint32_t tx_next = 0;
|
||||||
|
uint32_t rx_next = 0;
|
||||||
|
uint32_t rx_deliv = 0;
|
||||||
|
uint32_t rx_reord = 0;
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Genric function to test transmission of in-sequence packets
|
* Genric function to test transmission of in-sequence packets
|
||||||
*/
|
*/
|
||||||
|
@ -330,6 +339,52 @@ int test_rx_out_of_order(uint64_t n_packets, uint8_t pdcp_sn_len, srslte::byte_b
|
||||||
TESTASSERT(compare_two_packets(sdu_act, sdu_exp) == 0);
|
TESTASSERT(compare_two_packets(sdu_act, sdu_exp) == 0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int test_rx_with_initial_state(srslte::unique_byte_buffer_t sdu_exp,
|
||||||
|
std::vector<srslte::unique_byte_buffer_t> rx_pdus,
|
||||||
|
uint8_t pdcp_sn_len,
|
||||||
|
srslte::byte_buffer_pool* pool,
|
||||||
|
srslte::log* log)
|
||||||
|
{
|
||||||
|
|
||||||
|
srslte::pdcp_config_t cfg_rx = {1,
|
||||||
|
srslte::PDCP_RB_IS_DRB,
|
||||||
|
srslte::SECURITY_DIRECTION_DOWNLINK,
|
||||||
|
srslte::SECURITY_DIRECTION_UPLINK,
|
||||||
|
pdcp_sn_len,
|
||||||
|
srslte::pdcp_t_reordering_t::ms500};
|
||||||
|
|
||||||
|
pdcp_nr_test_helper pdcp_hlp_rx(cfg_rx, sec_cfg, log);
|
||||||
|
srslte::pdcp_entity_nr* pdcp_rx = &pdcp_hlp_rx.pdcp;
|
||||||
|
gw_dummy* gw_rx = &pdcp_hlp_rx.gw;
|
||||||
|
|
||||||
|
// Set PDCP initial state
|
||||||
|
struct pdcp_nr_initial_state_cfg initial_state;
|
||||||
|
initial_state.tx_next = 0;
|
||||||
|
initial_state.rx_next = 4294967295;
|
||||||
|
initial_state.rx_deliv = 4294967295;
|
||||||
|
initial_state.rx_reord = 0;
|
||||||
|
|
||||||
|
pdcp_rx->set_tx_next(initial_state.tx_next);
|
||||||
|
pdcp_rx->set_rx_next(initial_state.rx_next);
|
||||||
|
pdcp_rx->set_rx_deliv(initial_state.rx_deliv);
|
||||||
|
pdcp_rx->set_rx_reord(initial_state.rx_reord);
|
||||||
|
|
||||||
|
// Write PDUs into Rx PDCP
|
||||||
|
for(srslte::unique_byte_buffer_t &rx_pdu : rx_pdus){
|
||||||
|
pdcp_rx->write_pdu(std::move(rx_pdu));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Test actual reception
|
||||||
|
TESTASSERT(gw_rx->rx_count == rx_pdus.size());
|
||||||
|
srslte::unique_byte_buffer_t sdu_act = allocate_unique_buffer(*pool);
|
||||||
|
gw_rx->get_last_pdu(sdu_act);
|
||||||
|
|
||||||
|
log->info_hex(sdu_act->msg, sdu_act->N_bytes, "SDU act");
|
||||||
|
TESTASSERT(compare_two_packets(sdu_act, sdu_exp) == 0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* TX Test: PDCP Entity with SN LEN = 12 and 18.
|
* TX Test: PDCP Entity with SN LEN = 12 and 18.
|
||||||
* PDCP entity configured with EIA2 and EEA2
|
* PDCP entity configured with EIA2 and EEA2
|
||||||
|
|
Loading…
Reference in New Issue