Doing airplane mode off to connect a cots UE followed by airplane mode on
to disconnect it gives very bad results (bad disconnection with lots of
UL failures followed by lots of logs in the eNB). It used to work properly
after the work done by Xu Bo.
It turns out that in 2018.w04 things were still working okay. But
in 2018.w05 no.
So I ran:
git diff 2018.w04 2018.w05
And I checked all the modifications that I thought were relevant
(everything related to the UE, oaisim, if4 and fapi has not been checked).
This commits takes back the version of 2018.w04.
The modifications in openair2/RRC/LITE/rrc_eNB.c are necessary, I think.
The other modifications may not be necessary or even wrong. To be checked
at some point.
Summary of changes:
- fix MAC indentation
- bug fixes:
- fix uplink over-scheduling
- fix CQI updating (it was done even when it shouldn't)
- fix rrc rel10 compilation
- some minor bug fixes related to ASN.1
'_' is not a valid character.
S1AP specs say:
ENBname ::= PrintableString (SIZE (1..150,...))
And X.680 (08/2015) 41.4 table 10 lists the valid characters for
PrintableString. '_' is not there. We replace by '-' which is there.
Connection of eNB to ppenair-cn has not been tested. There is no reason
why it would fail.
The problem that may happen is that when the UE does not transmit
on PUCCH (for whatever reason) we may get no signal at all, and
thus compute a very low CQI. Later on we may ask the UE to transmit
louder which may lead to saturation and more problems.
The solution is simple: don't care about CQI in case of DTX
(and NACK also, as done for PUSCH).
Only FDD case done.
For TDD it seems that:
- nfapi structures are not correct. See nfapi_harq_indication_tdd_rel13_t
in nfapi/open-nFAPI/nfapi/public_inc/nfapi_interface.h, all the cases
(bundling, multiplex, ...) use nfapi_harq_indication_tdd_harq_data_t
- the function extract_harq does not handle TDD
S1AP specs say:
initialUEMessage S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE InitialUEMessage
PROCEDURE CODE id-initialUEMessage
CRITICALITY ignore
}
So let's use "ignore", not "reject".
The online decoder http://asn1-playground.oss.com/ did
not decode a message encoded by the eNB because of this.
Only the S1AP messages captured while doing a simple connection
of one UE have been tested with the online decoder.
So, not all the S1AP messages have been checked, maybe some
instances of this problem are still there.
It does not seem to harm the actual UE<->eNB<->EPC communication
(because we don't check the integrity of messages or because
asn1c does not do it), so it's not a big deal.
As reported by Emad Alizade:
According to "Issue255 256 257 paging reesta release" that has been
merged in develop version, we have a question: In rrc_eNB_free_UE()
function only all ulsch related memory of user has been cleaned, but
I think not only ulsch memory but also dlsch memory must be cleaned.
I tested the latest develop version and with repetition UE attach-detach
procedures we find that the dlsch memory has not been cleaned and after
repeat this sequence (45 times) assertion with cause UE_id!=-1 (no free
or exiting dlsch_context, dci_tools.c: fill_dci_and_dlsch() ) occurred
and no UE will be attached to system.
The fixes in this commit are from Emad Alizade.
Summary of changes:
- Implementation of paging (see issue #255 in gitlab)
- Implementation of RRC RE-ESTABLISHMENT (see issue #256 in gitlab)
- Implementation of RRC CONNECTION RELEASE (see issue #257 in gitlab)
Some modifications with timers have been done.
Expect (and report) problems, thanks.
What has been tested:
- monolithic eNB 5 and 10MHz with one commercial UE. UDP and TCP
traffic, uplink and downlink, with iperf (with a third party
EPC, not openair-cn). TCP downlink traffic is not stable.
Reason yet unknown. Will be fixed later.