Skip to content

speedup NR RLC RX for AM

rx_list is replaced by an array of size 2^(SN size - 1) which is 131072 for an SN size of 18 bits, leading to 1048576 bytes of memory used. (Less for smaller SN sizes.)

A lot of RX processing was to run through rx_list. When the list was big (with some non-ideal channel), it can take some time. Removing this list should improve things. Checking with benchmark_nr_rlc_am_entity a speedup of more thant x10 is achieved (except for the case 1024 which is surprisingly faster than the others in the develop branch).

The only thing that may be slower is when looking for cur->next where the SN is different, in which case we need to look for all SN one by one until we find something or reach the limit (rx_highest_status). These are the functions get_first_rx_pdu() and get_next_rx_pdu().

Merge request reports

Loading