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.
The bug popped up when one UE was doing TCP UL iperf and a second UE
attempted to connect. A crash of the eNB happened because we changed
the wrong NFAPI structure in a TTI where both UEs are scheduled.
Something like that.
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.
- there can be a race between the FlexRAN agent reading the RC.mac and its
allocation in main.c
- In order to circumvent this, change the allocation by allocating
everything "into" a local variable
- finally "make it visible" by storing the pointer in RC.mac
- until now, on every iteration, the scheduler checked for changed parameter
(and verified some)
- this functionality moves to the FlexRAN Agent, which verifies all parameters
* individually, e.g. Max MCS <= 28 for DL
* group-based, e.g. the sum of slice percentages is <= 100
- slice configuration changes are only applied if all verifications pass
- it is assumed in the scheduler, that configuration passed from outside is
correct and can be used "as-is"
fix accounting setting
- uncomment "Couldn't find RNTI for UE X" in UE_RNTI() and rb_alloc in
pre_processor_reset() as they only inflate the debug output with little
benefited
- "doing ue_schedule_spec" is now displayed for individual UEs (and individual
CCs)
- show messages when not scheduling UE in ue_schedule_spec() due to invalid
slice or if not in RRC_CONNECTED
- slice multiplexing resorts UE_list for its purposes with restoring the
original order
- in order to keep the order in UE_list, resort to original order after
multiplexing
- ideally, this would happen in the multiplexing but currently, the slice_idx
is not passed to multiplexing (it does not care), so this cannot be done ATM
Incoming slice configuration changes are buffered in an intermediate structure.
The MAC scheduler periodically polls the agent about changes. If there has been
a slice configuration change, apply it.