Commit Graph
158 Commits
Author SHA1 Message Date
Cedric Roux cff9149920 fix issue 227 - UE IP settings disrupts realtime
see https://gitlab.eurecom.fr/oai/openairinterface5g/issues/227

When the UE connects to the eNodeB and receives its IP address from the
network, it calls system() to set it in the linux kernel world. This call
is not done in a realtime thread, but in the NAS, which uses its own thread,
independent of the realtime processing.

In some situations this totally disrupts realtime processing.

It is difficult to know precisely why that happens, but it seems that calling
fork(), as system() does, in a multi-threaded program is not a good idea. (So
say several people on the internet.) It is not clear why the softmodem is
impacted, but it seems that fork() is really what triggers the disruption.
Several tests lead to that conclusion.

To fix the problem, we create a child background process very early in main()
(before anything else basically). Then instead of calling system(), the main
process sends the string to the background process. The background process
gets the string, passes it to system() and reports the success/failure back
to the main process.

This solution involves a lot of system calls, but calling system() in the
first place is not cheap either. As long as no realtime thread uses this
mechanism, things should be fine. Time will tell.
2017-03-23 12:34:24 +01:00
Cedric Roux d0a51bec01 hotfix: put back "system" for UE to setup its IP settings
We'll need to to do it in a separate thread/process.
To be done. In the meantime, put it back. It impacts
oaisim.
2017-03-20 13:45:29 +01:00
hbilel bd4898222f pdcch dual buffer 2017-03-13 15:50:10 +01:00
hbilel 305ebf5c4b rebase branch to develop 2017.w09 2017-03-08 14:57:30 +01:00
hbilel 9dd65f2801 [OAI-UE] remove unused debug-printf 2017-03-08 14:21:14 +01:00
hbilel ba55fcac27 [OAI-UE] Mimo LLR computation AVX2 + fix in TM3 deprecoding 2017-03-08 12:16:38 +01:00
hbilel ff6d41b6e8 [OAI-UE] Mimo feature 2017-03-08 12:15:02 +01:00
Cedric Roux 603c84c700 fix warnings: fix LOG_X problems when compiling lte-softmodem
The compilation line was:
    ./build_oai --eNB -w USRP

The file openairinterface5g/cmake_targets/log/lte-softmodem.Rel10.txt
has been checked and all LOG_X (and 'msg') warnings have been fixed.
2017-02-17 18:07:06 +01:00
Cedric Roux 37bc075cb2 fix: exit if memory_read fails in the function nas_user_initialize 2017-02-17 18:07:06 +01:00
gabrielC eadcba956e Merge branch 'develop-realtime-lts' into develop_integration_w07
Conflicts:
	targets/RT/USER/lte-enb.c
	targets/RT/USER/lte-softmodem.c
	targets/RT/USER/lte-ue.c
2017-02-17 11:51:03 +01:00
Cedric Roux 9535e7a276 bugfix: make some functions thread safe
Those functions modify a global char array (a string).

Let's pass a buffer to those functions, so that it's
thread safe. The caller has been modified, with hopefully
a buffer big enough (still bigger than what was there before,
so should not break more than it did).
2017-02-16 15:35:07 +01:00
Cedric Roux f92bd91544 Merge branch 'enhancement-199-nas-multi-ue' into develop_integration_w07
Conflicts:
	openair1/SCHED/phy_procedures_lte_ue.c
	targets/RT/USER/lte-softmodem.c
	targets/SIMU/USER/oaisim.c
	targets/SIMU/USER/oaisim_functions.c
2017-02-16 12:14:26 +01:00
Cedric Roux 63c0ed7042 fix UE default configuration file
- fix OPc key
- clear EHPLMN_LIST, UE does not start the RA procedure when set
  to be fixed
2017-02-16 10:10:42 +01:00
Cedric Roux 7b36af0597 bugfix: variable was on the stack
Guess what happens when we return from the function...
2017-02-15 15:38:37 +01:00
Cedric Roux 3e77251f96 minor: add a message before aborting
The case instance == INSTANCE_DEFAULT should normally not happen,
but let's be a bit verbose if it does.
2017-02-09 10:57:46 +01:00
Cedric Roux 393fe86563 fix: pass UE parameter to UE threads
oaisim is not functional with several UEs.
This fixes one issue. (It's still not functional for other reasons.)
2017-02-09 09:47:13 +01:00
laurent 51b23b4061 merge latest develop, enhance real time, set back BCH tracing in UE as in develop branch 2017-02-08 21:19:10 +01:00
Cedric Roux d72294b966 fix gen_emm_data
It was not setting emm_data->eplmn.plmn[X], only emm_data->eplmn.n_plmns,
leading to the UE to dig for PLMN 00000.

(It's not the end of the story, seems like the PLMN selection
does not work, the UE only tries one from what I've seen, but
I didn't dig much, may be wrong.)
2017-02-02 17:10:59 +01:00
Cedric Roux ea6fb5c481 better handle user input in hex_string_to_hex_value
Adapt calling sites too.

When data comes from the user, it is good to check that
what we read is correct and warn the user if it's not.
2017-02-02 16:35:45 +01:00
Cedric Roux 163c37a5a3 bugfix: return error in 'emm_msg_encode' in case of failure 2017-02-01 12:17:39 +01:00
hbilel 7b64eae285 [OAI-UE] issue#200 release harq p[rocess after sending Ack 2017-01-30 12:00:08 +01:00
Cedric Roux 53e416be0b update license information
Also included some source files not related to this branch.

	modified:   openair1/PHY/LTE_ESTIMATION/lte_dl_bf_channel_estimation.c
	modified:   openair1/PHY/LTE_TRANSPORT/pilots_ue_spec.c
	modified:   openair1/PHY/MODULATION/beamforming.c
	modified:   openair1/PHY/TOOLS/twiddle18432.h
	modified:   openair1/SIMULATION/LTE_PHY/dlsim_tm7.c
	modified:   openair3/NAS/TOOLS/nvram.c
	modified:   openair3/NAS/TOOLS/usim.c
	modified:   openair3/NAS/UE/user_defs.h
2017-01-27 16:09:56 +01:00
Cedric Roux f6e42ce9e4 fix compilation of oaisim
That's not the end of the story though.
2017-01-27 15:52:22 +01:00
Cedric Roux c62b54a030 remove duplicated definitions
I am not sure if it's the right way to solve the
problem, so I keep the definitions here and
put them inside #if 0 #endif
2017-01-27 15:49:45 +01:00
Imad ALAWE 8bff2cff3e BUGFIX(GTP-U): Add missing ip rules in order to have point to point connection 2017-01-25 13:59:47 +01:00
Imad ALAWE b3ded7799a openairinterface5g: Fix multi definition of UE/eNB NB_MAX
In openairinterface5g many definitions in many layers of UE or eNB NB_MAX.
We created a file called openairinterface5g_limits.h
located at openairinterface5g_dir/targets/COMMON/ declaring the number max
of UE and eNB to be used in ALL layers depending on launching conditions
(LARGE_SCALE for example).
2017-01-25 13:58:53 +01:00
Frédéric Leroy 3d0fbc00a1 feat(conf2uedata): reintroduce nvram binary 2017-01-25 13:29:48 +01:00
Frédéric Leroy 30fde6bfe2 feat(conf2uedata): reintroduce usim binary 2017-01-25 13:29:48 +01:00
Frédéric Leroy e439a24f03 feat(conf2uedata): print USIM filename on display 2017-01-25 13:29:48 +01:00
Frédéric Leroy d8aa8d4a64 fix(conf2uedata): update INT_ALGO to match openair develop branch 2017-01-25 13:29:48 +01:00
Frédéric Leroy 95503ffd52 fix(conf2uedata): update ue_eurecom_test_sfr.conf to match openair develop branch 2017-01-25 13:29:48 +01:00
Frédéric Leroy 747cea249b feat(conf2uedata): add a selector for displaying files 2017-01-25 13:29:48 +01:00
Frédéric Leroy af4027660b feat(conf2uedata): add a selector for writing files 2017-01-25 13:29:48 +01:00
Frédéric Leroy 6c588589ac refactor(conf2uedata): move parser functions to conf_parser.[c|h] 2017-01-25 13:29:48 +01:00
Frédéric Leroy bf699414d1 style(conf2uedata): use bool type for readability 2017-01-25 13:29:48 +01:00
Frédéric Leroy 86c8d0f95a refactor(conf2uedata): move plmns functions to conf_user_plmn.[c|h] 2017-01-25 13:29:48 +01:00
Frédéric Leroy 51c7753526 refactor(conf2uedata): move networks function to conf_networks.[c|h] 2017-01-25 13:29:48 +01:00
Frédéric Leroy 1b54e18a47 refactor(conf2uedata): add networks_t for managing known_networks 2017-01-25 13:29:48 +01:00
Frédéric Leroy 8d36213f6f refactor(conf2uedata): add make_plmn_from_conf() 2017-01-25 13:29:48 +01:00
Frédéric Leroy 459a6ec372 refactor(conf2uedata): use user_plmns struct to store plmns lists
This remove the old static lists
2017-01-25 13:29:48 +01:00
Frédéric Leroy c86b437eb3 refactor(conf2uedata): make plmns_list struct for managing plmns 2017-01-25 13:29:48 +01:00
Frédéric Leroy fcb857e508 refactor(conf2uedata): add parse_Xplmn() to read *plmns 2017-01-25 13:29:48 +01:00
Frédéric Leroy 5c8410c56f fix(conf2uedata): make hplmn_index a local variable
There was a side effect corrupting data because hplmn_index was not computed.
2017-01-25 13:29:48 +01:00
Frédéric Leroy 7fe8d45d6a refactor(conf2uedata): move usim_data funcions in conf_usim.[c|h] 2017-01-25 13:29:48 +01:00
Frédéric Leroy f03e2dbc0e refactor(conf2uedata): move user_data function in conf_user_data[c|h] 2017-01-25 13:29:48 +01:00
Frédéric Leroy eeb44860e9 refactor(conf2uedata): move emm_data funcions in conf_emm.[c|h] 2017-01-25 13:29:48 +01:00
Frédéric Leroy ef2dee59d4 refactor(conf2uedata): separate processing and writing of data 2017-01-25 13:29:48 +01:00
Frédéric Leroy 8461a56aa1 refactor(conf2uedata): add fs.[h|c] and display.[c|h] 2017-01-25 13:29:48 +01:00
Frédéric Leroy 8ae72d1cf1 refactor(conf2uedata): put display out of build 2017-01-25 13:29:48 +01:00
Frédéric Leroy e2dc453b62 fix(conf2uedata): fix missing extern in header 2017-01-25 13:29:48 +01:00