mirror of https://github.com/PentHertz/srsLTE.git
Fix errors in RLC stress tests due to PDCP SN wrap-around
This commit is contained in:
parent
1cd3576134
commit
4011714664
|
@ -361,11 +361,17 @@ public:
|
||||||
int get_nof_rx_pdus() { return rx_pdus; }
|
int get_nof_rx_pdus() { return rx_pdus; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void run_thread()
|
const static size_t max_pdcp_sn = 262143u; // 18bit SN
|
||||||
|
void run_thread()
|
||||||
{
|
{
|
||||||
uint32_t pdcp_sn = 0;
|
uint32_t pdcp_sn = 0;
|
||||||
byte_buffer_pool* pool = byte_buffer_pool::get_instance();
|
byte_buffer_pool* pool = byte_buffer_pool::get_instance();
|
||||||
while (run_enable) {
|
while (run_enable) {
|
||||||
|
// SDU queue is full, don't assign PDCP SN
|
||||||
|
if (rlc->sdu_queue_is_full(lcid)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
unique_byte_buffer_t pdu = srslte::make_byte_buffer();
|
unique_byte_buffer_t pdu = srslte::make_byte_buffer();
|
||||||
if (pdu == NULL) {
|
if (pdu == NULL) {
|
||||||
printf("Error: Could not allocate PDU in rlc_tester::run_thread\n\n\n");
|
printf("Error: Could not allocate PDU in rlc_tester::run_thread\n\n\n");
|
||||||
|
@ -377,9 +383,9 @@ private:
|
||||||
for (uint32_t i = 0; i < args.sdu_size; i++) {
|
for (uint32_t i = 0; i < args.sdu_size; i++) {
|
||||||
pdu->msg[i] = pdcp_sn & 0xFF;
|
pdu->msg[i] = pdcp_sn & 0xFF;
|
||||||
}
|
}
|
||||||
pdcp_sn++;
|
|
||||||
pdu->N_bytes = args.sdu_size;
|
pdu->N_bytes = args.sdu_size;
|
||||||
rlc->write_sdu(lcid, std::move(pdu));
|
rlc->write_sdu(lcid, std::move(pdu));
|
||||||
|
pdcp_sn = (pdcp_sn + 1) % max_pdcp_sn;
|
||||||
if (args.sdu_gen_delay_usec > 0) {
|
if (args.sdu_gen_delay_usec > 0) {
|
||||||
usleep(args.sdu_gen_delay_usec);
|
usleep(args.sdu_gen_delay_usec);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue