* Instead of partly initializing in read_config_and_init(), everything of
PDCP is initialized in main() of lte-softmodem
* Omit RC.rrc access in RRU through checking of RC.nb_inst > 0
* Includes FlexRAN, i.e. do not start FlexRAN in RRU
* Function pointers to PDCP functions have to be set explicitly (avoid
confusion of multiply setting function pointers)
With the introduction of X2AP into develop, the UEs now have to regularly
send measurement reports.
In the logs of the eNB, we see:
[OSA] Mismatch found in integrity for algorithm 2,
got e0.a0.c2.66, expecting a5.9c.cb.57
[PDCP] [OSA][RB 1] eNB failed to validate MAC-I of incoming PDU
This is a bug in the PDCP layer that uses wrong parameters to compute the
integrity.
This commit fixes this bug.
The function pdcp_is_rx_seq_number_valid was removed. Its processing
has been directly integrated into the function pdcp_data_ind.
The function pdcp_mark_current_pdu_as_received is not called anymore.
Its processing was not used later on, so as of today, not calling it does
not introduce any functional change.
The function pdcp_validate_security takes now as parameters both
SN and HFN. Same for the function pdcp_get_next_count_rx.
Useless constants PDCP_SN_5BIT, PDCP_SN_7BIT and PDCP_SN_12BIT have been
removed.
The compilation option ENABLE_SECURITY has been removed. It's now always
on. (This may impact some use cases.)
The PDCP for DRB using RLC AM is not correct. It was not correct before
this commit (apart from the integrity bug). We should deal with a list
of PDUs and transmit packets to upper layers as detailed in the specs.
Today we transmit the PDU as soon as we get it. We don't care about
duplicates, in-order delivery, timeouts.
Also, we don't deal with "PDCP re-establishment". Not sure how that impacts
the software.
And, last but not least, there is still no ROHC.
This commit manually reverts the commits:
- 97c69dc4a4
- 3278aa494d
The basic simulator was not functional anymore because
the UE did not send RRCConnectionSetupComplete due to
some problem in the PDCP layer, most probably.
When the RLC layer returns error codes (like dropped packets), this is still
counted as PDCP layer traffic. In order to reflect dropped packets or
malfunctioning, this patch makes that upon an RLC error code, the function is
exited immediately. In this case, it is not counted as additional PDCP traffic.
An example is too much UDP traffic. If the RLC buffer is saturated and the
packet therefore refused, incoming traffic won't be counted anymore. With this
patch, the PDCP layer statistics won't count such traffic anymore.
If the buffer in the RLC is full, testing the buffer state over and over again
slows the DL traffic down. In order to circumvent this, the PDCP will drop any
data during a configurable time (compile-time) before it delivers data to RLC
again.
To change this, see the constant TM_SKIP_FULL_BUF_MS in pdcp.h.