Compare commits

..

153 Commits

Author SHA1 Message Date
vijay chadachan
af9e55428f Changes to support multiple TDD patterns
- Updated the configuration changes for 2 Patterns
- Update the TDD table configuration for NFAPI
- Added the tdd config map for the period
2024-06-03 14:43:25 +02:00
Robert Schmidt
9249131046 Merge branch 'integration_2024_w21b' into 'develop'
Integration: `2024.w21b`

Closes #734

See merge request oai/openairinterface5g!2755

* !2700 Fix UE PUCCH multiplexing infinite loop
* !2724 Correct PRACH preamble tx power calculation.
* !2726 NR SA Tutorials
* !2728 Use existing function for bits reversal
* !2732 CU handle F1 setup Req- TAC conversion
* !2738 Correct data offset for unscrambling in PUSCH processing
* !2742 UE: fix mutex locking verification
* !2737 rename persisted ul harq status per pid with a uniq name, make better mutual exclision of processSlotTX()
2024-05-24 07:25:15 +00:00
Robert Schmidt
295f221a9b Merge remote-tracking branch 'origin/simpler-parallel-exclusion-ue-tx' into integration_2024_w21b 2024-05-24 08:13:41 +02:00
Robert Schmidt
58335443b1 Revert "remove asserts on min RX/TX, set the RX/TX shift as 2 in the UE"
This reverts commit 0d0e111135.  It was
set to UE RX to TX time to 2 as it was deemed that the UE could sustain
this time. However, we noticed a degradation of performance, so reset
the RX to TX time to something higher to ensure proper performance.
2024-05-24 06:54:30 +02:00
Robert Schmidt
b5159b5e47 Revert "ci: set min_rxtxtime = 2 in OAIUE pipeline"
This reverts commit 31b4f48e29.
2024-05-24 06:54:15 +02:00
Robert Schmidt
7a631ce3a2 Use an enum for stream_status states 2024-05-23 16:41:20 +02:00
Jaroslava Fiedlerova
1001f2eb13 Merge remote-tracking branch 'origin/fix-mutex-management-bug' into integration_2024_w21b 2024-05-23 12:46:13 +02:00
Jaroslava Fiedlerova
018ca77aa0 Merge remote-tracking branch 'origin/issue-734' into integration_2024_w21b 2024-05-23 12:42:46 +02:00
Jaroslava Fiedlerova
e580450ae2 Merge remote-tracking branch 'origin/IISc_F1setup_tac' into integration_2024_w21b 2024-05-23 12:42:15 +02:00
Jaroslava Fiedlerova
64e6c6e5b2 Merge remote-tracking branch 'origin/ue-pbch-use-reversebits' into integration_2024_w21b 2024-05-23 12:41:38 +02:00
Jaroslava Fiedlerova
841869b0ec Merge remote-tracking branch 'origin/NR_SA_Tutorials' into integration_2024_w21b 2024-05-23 12:40:07 +02:00
Jaroslava Fiedlerova
d3acd5d6c0 Merge remote-tracking branch 'origin/nr-prach-tx-power-fix' into integration_2024_w21b 2024-05-23 12:39:40 +02:00
Jaroslava Fiedlerova
3a4dac00ee Merge remote-tracking branch 'origin/NR_UE_fix_PUCCH_multiplexing' into integration_2024_w21b 2024-05-23 12:37:32 +02:00
Robert Schmidt
082007834c Merge branch 'integration_2024_w21' into 'develop'
Integration: `2024.w21`

See merge request oai/openairinterface5g!2746

* !2717 Additional check on pucch_Config and srs_Config
* !2730 Fix for SSB index in function get_nr_prach_info_from_ssb_index
* !2734 add a function to reset the transmission timestamps chain
* !2741 Fix several potential segfaults in UE PUCCH tx power determination.
2024-05-22 12:55:51 +00:00
Laurent THOMAS
6379350f51 Correct data offset for unscrambling in PUSCH processing
Correctly compute the offset of data to unscramble in PUSCH processing
at the gNB. Rename variables to make them easier to spot (instead of
"s"), and remove a global variable.

Closes: #734
2024-05-22 09:04:33 +02:00
luis_pereira87
9278394f3c Tutorials: Update links for the latest Ubuntu 22.04 LTS iso file 2024-05-22 07:14:36 +01:00
luis_pereira87
246a8aff16 Tutorials: Rename OAI CN5G docker network interface name from 'demo-oai' to 'oai-cn5g' and remove commented lines 2024-05-22 07:14:36 +01:00
luis_pereira87
3c6ae9c2cb Tutorials: Fix multiple S-NSSAI redefinitions for the same S-NSSAI in the configuration file 2024-05-22 07:14:36 +01:00
Robert Schmidt
73243f668e Merge remote-tracking branch 'origin/fix-pucch-tx-power-segfaults' into integration_2024_w21 2024-05-22 07:45:51 +02:00
Robert Schmidt
959df471f3 Merge remote-tracking branch 'origin/reset-transmission-sequence' into integration_2024_w21 2024-05-22 07:45:41 +02:00
Robert Schmidt
d326477494 Merge remote-tracking branch 'origin/NR_UE_ssb_index_fix' into integration_2024_w21 2024-05-22 07:45:34 +02:00
Robert Schmidt
10940010f5 Merge remote-tracking branch 'origin/nr-ue-config-pointer-check' into integration_2024_w21 2024-05-22 07:45:27 +02:00
Raphael Defosseux
0ad85cb111 chore(ci): dummy commit to retrigger CI
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2024-05-21 14:33:40 +02:00
Jaroslava Fiedlerova
5238ce912b Replace "theseus" OC node by "demophon" 2024-05-21 12:16:05 +02:00
Laurent THOMAS
f2213bf792 fix a error that was created by over complexity in setting a pointer to null for a wrong later assert verification 2024-05-20 20:57:46 +02:00
Bartosz Podrygajlo
b101e682f5 Fix several potential segfaults in UE PUCCH tx power determination. 2024-05-20 15:00:29 +02:00
francescomani
075f564606 fix ssb index in get_nr_prach_info_from_ssb_index 2024-05-16 18:37:38 +02:00
Laurent THOMAS
e217980249 simplify and make better performance the mutual exclusion of processSlotTX() function 2024-05-16 14:06:24 +02:00
Laurent THOMAS
3e4526a6ad rename persisted ul harq status per pid with a uniq name as this variable is persisted in memory and accessed by multiple threads, a uniq name helps to debug 2024-05-16 14:05:39 +02:00
Robert Schmidt
9fd1b9ac69 Correct buffer size for do_NR_DLInformationTransfer()
uper_encode_to_buffer() of asn1c returns the number of BITS that have
been encoded; if we use this, we need to calculate the resulting number
of bytes (rounding up) to get the right buffer size.

Note that do_NR_ULInformationTransfer() uses
uper_encode_to_new_buffer() which returns the number of BYTES, hence, in
this similar function, we should not modify the return value.
2024-05-16 11:59:55 +02:00
Sreeshma Shiv
17f2eaa558 TAC-Octet String to integer conversion function corrections
-Corrected the conversion function used in CU_handle_F1_SETUP_REQUEST

-Corrected the conversion function in CU_handle_gNB_DU_CONFIGURATION_UPDATE
2024-05-16 12:21:59 +05:30
laurent
ca06b77a89 add a function to reset the transmission timestamps chain, and use it in context of UE resynchronization 2024-05-15 17:35:02 +02:00
Sakthivel Velumani
40b52bc8f4 Use existing function for bits reversal 2024-05-10 12:51:50 -04:00
Bartosz Podrygajlo
70f536a0f0 Correct PRACH preamble tx power calculation.
Removed arbitrary offset of 30dB.
Changed sign for pathloss: pathloss calculated in compute_nr_SSB_PL is the difference between transmitted and received power.
Transmission power for preamble should compensate the pathloss, therefore power should increase with pathloss.
2024-05-08 12:19:08 +02:00
Robert Schmidt
82bd07ebd5 Merge branch 'integration_2024_w18' into 'develop'
Integration `2024.w18`

See merge request oai/openairinterface5g!2713

* !2705 Fix CRC check in UE DCI detection
* !2708 Adding few more NR bands to the list of supported ones
* !2701 gNB archi fixes
* !2203 DL-MMSE
* !2684 remove asserts on min RX/TX, set the RX/TX shift as 2 in the UE
* !2594 F1AP refactoring to align with O-RAN.WG5.C.1-v11
2024-05-07 08:06:51 +00:00
Guido Casati
cf22a331e5 Additional check on pucch_Config and srs_Config 2024-05-06 18:10:03 +02:00
Jaroslava Fiedlerova
65d494fb09 Merge remote-tracking branch 'origin/f1ap_uecontext_refactoring' into integration_2024_w18 2024-05-06 15:29:48 +02:00
Jaroslava Fiedlerova
944925ff69 Merge remote-tracking branch 'origin/ue-make-rxtx-of-2-slots' into integration_2024_w18 2024-05-06 14:23:49 +02:00
Robert Schmidt
0fb0b055e5 NGAP: Correct encoding of AMF Set ID and Pointer
Taking the example of the AMF Set ID, the previous version of the macro
used another macro to encode the number, then marked the last 6 bits in
the bit string (of length 16/2 bytes) as unused. This is wrong, because,
assuming AMF Set ID=3, it basically truncates the number by encoding all
16 bits and cutting off the last 6, like this:

  ------------------- encode 16 bits
  0000 0000 0000 0011
  ------------        take these 10 bits

So what remains is these bit positions of the number:
(16,15,14,13,12,11,10,9,8,7) -- the last 6 bits are cut (and the first 6
are either 0 or garbage, because they don't exist).

Instead, manually encode bits (10,9,8,7,6,5,4,3) in the first byte, and
(2,1) in the second byte of the bit string, like so:

  ------------        encode 10 bits
  0000 0000 1100 0000
  ------------        take these 10 bits

Do the same with the pointer.

The AMF Region ID above is correct, as it is exactly 8 bits.
2024-05-06 12:03:20 +02:00
Robert Schmidt
8d225a7e10 NGAP Release Cplt: indicate release PDU sessions
We can optionally indicate the PDU session IDs. At least with OAI 5GC,
that should help it clean up.
2024-05-06 12:00:26 +02:00
Robert Schmidt
3e2d5f8820 Handle PDU sessions in NG UE context setup request
In the case of PDU sessions in the NG UE context setup request, we first
have to set up security. Hence, in this commit, implement the "delayed"
set up of theses PDU sessions, and acknowledge the setup request after
reconfiguration, as requested by O-RAN.WG5.C.1-v11.
2024-05-06 11:59:59 +02:00
Robert Schmidt
1fc16077ff Correctly trigger NGAP UE Context Setup Response
Trigger UE ctxt setup response for the case of "registration request"
(no PDU sessions in UE Context setup response), as mandated by
O-RAN.WG5.C.1-v11.
2024-05-06 11:59:55 +02:00
Robert Schmidt
cbf446e267 Trigger UE context setup req after E1 bearer setup resp
As of this commit, since we now send the UE security command as a DL NAS
message, there is no F1 UE Context setup request. Hence, instead of
sending a UE context modif request, send the UE context setup request
after the E1 bearer setup response (which logically also makes more
sense, as the E1 setup procedure comes before the F1 setup procedure).
2024-05-06 11:59:51 +02:00
Robert Schmidt
179ecb8e84 Revert "Delay PDU session resource setup request if necessary"
This reverts commit 0f100a6e94, which
introduced a hack to possibly wait with a PDU session setup at the RRC
in case a RRC UE capability transaction (requesting UE capabilities from
a UE) was ongoing. This happened, as we delayed the UE capabilities to
after the first RRC reconfiguration; in that case, certain UEs were
requesting the next PDU session, and if RRC did not delay the new PDU
session (as requested from the core), this procedure might occur while
UE capability enquiry was ongoing, leading to failures in these
transactions.
2024-05-06 11:58:31 +02:00
Robert Schmidt
c7a2471542 Remove unused function for "default" RRC reconfiguration
The default RRC reconfiguration was previously sent after the security
mode command as a "first" RRC reconfiguration. However, it is simply not
needed, as it will be triggered through a subsequent reconfiguration
that also sets up DRBs.

Move the Measurement Config to the "other/dedicated" RRC
reconfiguration.

This reconfiguration would have forwarded a NAS PDU (typically a
registration accept). This is now done by a dedicated forwarding of NAS.
2024-05-06 11:58:21 +02:00
Giulio Carota
388942b5d3 Revert "Send RRC UECapabilityEnquiry after reconfig, trigger UE update if necessary"
This reverts commit 4a7d7975ce.

Trigger the UE capability right after security mode complete, as
specified in O-RAN WG5.C.1-v11. Also, there is no "need" for the
"default" RRC Reconfiguration (it will come once PDU sessions are
requested), so remove this as well.
2024-05-06 11:58:15 +02:00
Giulio Carota
7340abc6f4 Refactor Security Mode Command procedure: send in RRC DL transfer
Previously, the CU sent the Security Mode Command as part of a UE
context setup request. This was done "because it was possible", not
because there was an inherent need to do this. However the LiteOn DU
does not like this, as it expects to also have a DRB in the UE context
setup request procedure, which is not always the case.

Hence, send the Security Mode Command in a normal DL RRC msg transfer
over F1. As of this commit, there is not UE context Setup Request (so it
might not work with all DUs), but the OAI DU is cool and does not care,
so RFsim still works.

This also aligns the CU's behavior with O-RAN.WG5.C.1-v11.

Finally, as of this commit, we do not trigger a UE context setup
request, so we cannot handle PDU sessions inside the initial UE context
setup request at the same time as the security mode command (which was
done previously before reaching this point). This will be fixed in a
later commit.
2024-05-06 11:56:57 +02:00
Giulio Carota
46e27ba445 Add UE Context Setup/Modification functions in RRC 2024-05-06 11:55:19 +02:00
Robert Schmidt
956df365de Refactor F1 Setup Req/DU config update: transport slices via F1 and read config
In the DU, read slice information from the DU config file. Handle
multiple slices within the F1 Setup Request structure representation,
and forward it via F1 to CU. The DU slice information is stored in the
setup request structure.
2024-05-06 11:54:41 +02:00
Robert Schmidt
740189c625 Revert "kssb < 16 or we cannot do reestablishment: add assert in DU"
This reverts commit eaf28414ca.

This assertion was introduced as we (wrongfully) thought we needed to
calculate the SSB ARFCN at the CU. Since PBCH might carry one bit, which
is not available at the CU, only certain SSB ARFCNs would have been
possible.

With the availability of the SSB ARFCN through the
MeasurementTimingConfiguration, this is not necessary anymore.
2024-05-06 11:46:15 +02:00
Robert Schmidt
177ddaa079 Fill RRC MeasConfig with correct SSB values from DU 2024-05-06 11:45:18 +02:00
Robert Schmidt
00cb7efa2a Use MeasurementTimingConfiguration to look up SSB ARFCN when needed
MeasTimingConfig may not come with F1 Setup Request: some DUs send it
with the DU configuration update. Handle this gracefully by checking for
MTC before using it.
2024-05-06 11:44:33 +02:00
Giulio Carota
2f81f190d1 Generate TimingMeasurementConfig at DU, store at CU 2024-05-06 11:44:32 +02:00
Robert Schmidt
a771d58472 Implement F1AP code for gNB-DU configuration update 2024-05-06 11:36:40 +02:00
Robert Schmidt
67e5547957 Refactor F1 setup req reading
Refactor parts into a separate function, which will be reused within the
gNB-DU configuration update function in the next commit.
2024-05-06 11:35:58 +02:00
Robert Schmidt
aaaa00378a Do not send UE Context modif only with successful reconfig
The OAI DU does not use this message, and could not roll-back. The
LiteOn DU does not seem to like it. It is useless (as of now), so remove
it
2024-05-06 11:35:16 +02:00
Giulio Carota
ae66ba7a7b fix(du/cu/rrc): use the correct MIB data structure
Use the correct MIB data structure, MIB_t. This is required by 38.473,
and the LiteOn DU sends only that. So our CU needs to handle it, so
align the OAI DU as well.
2024-05-06 11:34:29 +02:00
Robert Schmidt
1cefbdb87f F1AP for gNB-DU config update & ack in CU 2024-05-06 11:34:01 +02:00
Robert Schmidt
cdd629de89 gNB-DU config update in DU 2024-05-06 11:22:57 +02:00
Robert Schmidt
aa18edb8ac gNB-DU config update msg def and handle in CU 2024-05-06 11:18:43 +02:00
Robert Schmidt
f247373474 Refactor TDD/FDD config reading into functions 2024-05-06 11:18:10 +02:00
Robert Schmidt
1c747e8223 RRC stats: show DU info 2024-05-06 11:17:51 +02:00
Robert Schmidt
1bd6018f91 Add extract_sys_info(): refactor DU cell sys_info handling in own function 2024-05-06 11:17:20 +02:00
Giulio Carota
9518e00923 fix(f1ap): Do not send optional hardcoded fields in UE context setup request 2024-05-06 11:17:18 +02:00
Robert Schmidt
00f85d54c5 Remove dead code 2024-05-06 11:14:17 +02:00
Robert Schmidt
c8539aeef5 Remove misleading comment 2024-05-06 11:14:09 +02:00
Robert Schmidt
590afc811f Correct F1 criticality 2024-05-06 11:11:32 +02:00
Jaroslava Fiedlerova
c73642868a Merge remote-tracking branch 'origin/develop-DL-improvements' into integration_2024_w18 2024-05-06 09:39:20 +02:00
Jaroslava Fiedlerova
fece66201c Merge remote-tracking branch 'origin/clean-and-doc-gnb-main-archi' into integration_2024_w18 2024-05-05 23:32:34 +02:00
Jaroslava Fiedlerova
578af2f81f Merge remote-tracking branch 'origin/NR_new_bands' into integration_2024_w18 2024-05-05 20:59:14 +02:00
Laurent THOMAS
00d78f048a remove a unused global storage of slot number
This has no meaning at a global level, we run several slots: one tx,
several rx at same time. Some minor cleaning of C style
2024-05-03 18:32:26 +02:00
Laurent THOMAS
c02908453a fix order error in ru.common.rxdataF filling lock, use consistently #define for buffer size 2024-05-03 18:31:45 +02:00
Laurent THOMAS
bb66056b75 fix nr-ru.c external declarations in .c file
The external declarations were incorrect, leading to mismatching
prototypes of config_ru and config_rru (true bug in OAI lte!).
2024-05-03 18:31:17 +02:00
rmagueta
a5055cacf0 Remove commented code 2024-05-03 15:07:26 +01:00
rmagueta
bcbf9287ba Noise power estimation and MMSE computation for DL at UE side 2024-05-03 15:07:26 +01:00
rmagueta
f5dccc2a59 Improvements in nr_dlsch_channel_compensation() function 2024-05-03 15:07:26 +01:00
Jaroslava Fiedlerova
f49dbf470a Merge remote-tracking branch 'origin/NR_UE_DCI_RX_improvements' into integration_2024_w18 2024-05-03 15:04:18 +02:00
Jaroslava Fiedlerova
31b4f48e29 ci: set min_rxtxtime = 2 in OAIUE pipeline 2024-05-02 20:06:10 +02:00
Jaroslava Fiedlerova
af49883543 Remove version field from oai cn5g docker compose file 2024-05-02 16:49:40 +02:00
Jaroslava Fiedlerova
ac51870b43 Remove version field from docker-compose files
For docker version > 25.0.5, "version" field is not relevant and reported as obsolete.
2024-05-02 15:54:59 +02:00
francescomani
1056e53acb mostly formatting 2024-05-01 16:51:40 +02:00
francescomani
c719b3f057 adding new nr bands to the tables 2024-05-01 16:13:04 +02:00
Robert Schmidt
d977ac8fc1 Merge branch 'integration_2024_w17' into 'develop'
Integration `2024.w17`

See merge request oai/openairinterface5g!2702

* !2659 NR bandwidth index fix
* !2693 Harmonize frequency range structures
* !2699 Add support for USRP X410 to run with 200 MHz bandwidth in FR2 at 120 kHz SCS
* !2692 Fix for the overflow issue while processing GPS based timestamp from RU
* !2665 NR UE improvements in handling RRC Release
* !2682 dci11type0
* !2686 CI: Maintenance, fixes, improvements
* !2677 NR UE trigger RA for SR failure
* !2683 Ue small fixes
* !2668 Refactor PDCP Reestablishment and introduce PDCP Suspend at gNB
* Add rhel9.4 to the list of OAI supported distributions
* !2673 speedup integrity computation
* !2706 doc: Update of CI testbenches
2024-04-30 15:38:45 +00:00
francescomani
114fb5dbca bugfix in dci reception, CRC is 24 bits but uint16 was used 2024-04-30 12:36:15 +02:00
Robert Schmidt
e64e687fcd Use --continuous-tx for F1 SABox test for B200 2024-04-30 12:11:48 +02:00
Jaroslava Fiedlerova
28d9b5b004 Merge remote-tracking branch 'origin/ci-testebench-update' into integration_2024_w17 2024-04-30 11:23:00 +02:00
Jaroslava Fiedlerova
252a7cafdb Merge remote-tracking branch 'origin/bugfix-speedup-integrity' into integration_2024_w17 2024-04-30 11:22:30 +02:00
Jaroslava Fiedlerova
434b2b2245 Add rhel9.4 to the list of OAI supported distributions 2024-04-30 10:45:10 +02:00
Jaroslava Fiedlerova
b915482e9b Merge remote-tracking branch 'origin/nr-pdcp-suspend' into integration_2024_w17 2024-04-30 09:01:28 +02:00
Jaroslava Fiedlerova
ab75ad2427 Merge remote-tracking branch 'origin/ue-small-fixes' into integration_2024_w17 2024-04-30 08:56:08 +02:00
Guido Casati
2b859cd7e2 Remove PDCP Suspend from nrUE
- according to clause 5.3.7.2 of 3GPP TS 38.331
  PDCP Suspend is not required during RRCReestablishment
2024-04-30 08:40:56 +02:00
Guido Casati
f010058e45 Re-establish RLC for SRB1 only when receiving RRCReestablishmentRequest
- according to 5.3.7.4 of TS 38.331: 1> re-establish RLC for SRB1;
- gNB:
1) re-establish RLC for SRB1 in nr_rlc_update_id
2) re-establish RLC for remaining RBs concurrently with RRCReconfiguration

issue: gNB) in nr_rlc_update_id the gNB is re-establishing RLC for all
            RBs at the same time when receiving RRCReestablishmentRequest
            from UE
        UE) according to the specs, the UE is re-establishing RLC for
            SRB1 with RRCReestablishmentRequest the other RBs are
            re-established during RRCReconfiguration (in our case in
            nr_rrc_ue_process_RadioBearerConfig) when receiving
            reestablishRLC IE in rlc_BearerToAddModList
    RLC TX) this leads to RLC counters mismatch after re-establishment:
            control PDUs discarded until max nb of retx is reached
            and then UL failure occurs
2024-04-30 08:40:56 +02:00
Guido Casati
99c4e5477c Minor comments and logging 2024-04-30 08:40:56 +02:00
Jaroslava Fiedlerova
17cbd4352c Update of CI testbenches doc
- replace nrmodule2 by up2
- add matix in CI machines
- add info about RAN-SA-2x2-Module-CN5G in list of pipeline
- update of 5G OTA testbench image
2024-04-29 19:17:06 +02:00
Jaroslava Fiedlerova
960d0cc01f Merge remote-tracking branch 'origin/NR_UE_trigger_RA_UL_failure' into integration_2024_w17 2024-04-29 19:06:22 +02:00
Laurent THOMAS
445aac11b9 put dci search in trace level trace, so the trace level debug prints the decoded DCIs 2024-04-29 16:03:43 +02:00
francescomani
27975f99d3 fix for MSG3 buffer when retransmitting 2024-04-29 14:50:14 +02:00
francescomani
e31d87eee9 trigger RA also in case of no valid pucch resource configured for pending SR 2024-04-29 14:50:11 +02:00
francescomani
90f82d19da remove false DCI reception indication 2024-04-29 12:39:44 +02:00
Jaroslava Fiedlerova
1cd990c05a Merge remote-tracking branch 'origin/ci-multi-fixes' into integration_2024_w17 2024-04-29 11:07:09 +02:00
francescomani
408cebc1e7 implementing triggering RA after SR failure 2024-04-29 11:06:17 +02:00
Jaroslava Fiedlerova
132c0738c0 Merge remote-tracking branch 'origin/implement-dci11-type0-contiguous-rbs' into integration_2024_w17 2024-04-29 10:01:06 +02:00
Jaroslava Fiedlerova
94474ac660 Merge remote-tracking branch 'origin/NR_UE_RRCRelease_improvements' into integration_2024_w17 2024-04-29 10:00:12 +02:00
Cedric Roux
39a5e72818 define stream_security_context_t as a struct to get type checking
By using a struct we may have warnings at compilation time in some
cases if the type is not used properly.

The type definition becomes a bit weird, so we need to properly
comment.

If too strange, we can revert to the classical "void" definition.
2024-04-26 23:31:17 +02:00
Cedric Roux
de7bc13000 minor: rename stream_security_container_create() to stream_security_container_init() 2024-04-26 23:31:17 +02:00
Cedric Roux
fac5c1f624 minor cleanup - use variable defined above 2024-04-26 23:31:17 +02:00
Cedric Roux
61a2c085ca cleanup the structure cbc_cmac_ctx_t
- rename "lib_ctx" to "mac_implementation" which is what is stored because
  of previous commit
- rename "mac" to "mac_context" to be clearer with what is stored in this
  variable too
2024-04-26 23:31:17 +02:00
Cedric Roux
d7931ea412 bugfix: speedup integrity computation
The main work of this commit is to rewrite cipher_aes_128_cbc_cmac()
which was too slow and created issues when running the 4G eNB on some
machines (LLL when using a b210).

Instead of creating the security context, use it, and delete it, all in
cipher_aes_128_cbc_cmac(), we introduce the function init_aes_128_cbc_cmac()
to create it, and we change cipher_aes_128_cbc_cmac() to just use it,
and we also adapt free_aes_128_cbc_cmac(). The function aes_128_cbc_cmac()
is removed, it does not follow the new init/use/free API.

Doing so, on the primary test machine used to do this work (a powerful
and fast machine where it is possible to set the CPUs' frequencies)
it was possible to limit the CPUs' frequencies to 500 MHz (it was not
possible to go lower) without any LLL (using a b210, quectel UE in
idle, no data traffic, only periodic measurement reports). Before this
commit, it was necessary to set a frequency of at least 1.8 GHz
otherwise some LLL would appear.

Then we need to adapt the rest of the code to take into account those
changes.

A notion of security container (stream_security_container_t) containing
ciphering and integrity contexts is introduced.

And the code is harmonized for, hopefully, better readability.

The (opaque) type stream_security_context_t is introduced, used by
both integrity and ciphering contexts. The idea is to use a
init()/use()/free() API for all the security procedures, identical for
all the ciphering and integrity procedures.
2024-04-26 23:31:06 +02:00
Jaroslava Fiedlerova
aecc695d02 Merge remote-tracking branch 'origin/GPS_time_stamp_sync' into integration_2024_w17 2024-04-26 23:15:28 +02:00
Jaroslava Fiedlerova
55c91e726c Merge remote-tracking branch 'origin/NR_FR2_200MHz' into integration_2024_w17 2024-04-26 23:15:01 +02:00
Jaroslava Fiedlerova
da57e23637 Update config files for SA 2x2 pipeline 2024-04-26 23:03:48 +02:00
Jaroslava Fiedlerova
bb078e61e0 Create functions for OC CN deployment/undeployment
These functions enables (un)deployment of the OAI CN v2.0.1, increase
reliability and speedup overall CN (un)deployment compared to current
implementation.

Use "--wait" helm option to wait for deployment/undeployment of the CN.
Wait for pods to be in a ready state before marking the release as
successful. If not deployed/undeployed before timeout, marked as
unsuccessful.

Hardcode path for OC CN5G deployment/undeployment
2024-04-26 23:03:38 +02:00
Jaroslava Fiedlerova
6554816721 AW2S pipeline: Connect 16th UE after TCP tests with 15 UEs 2024-04-26 23:01:58 +02:00
Jaroslava Fiedlerova
de5f23c52b B200-SABOX pipeline - fix testcase descriptions 2024-04-26 23:01:58 +02:00
Jaroslava Fiedlerova
82423fba45 Change PLMN in OAIUE pipeline 2024-04-26 23:01:58 +02:00
Jaroslava Fiedlerova
09bd7b5b39 Change PLMN and frequency in AW2S pipeline
- Remove unused AmariUE config file, replace by new one - for PLMN 00102
- Change frequency of AW2S pipeline - Move center frequency by 40 MHz to avoid interferency with other setups
in the lab. Set center frequency to ~ 3450 MHz.
2024-04-26 23:01:02 +02:00
Jaroslava Fiedlerova
cc0ba68082 Merge remote-tracking branch 'origin/NR_harmonize_frequency_range' into integration_2024_w17 2024-04-26 15:56:06 +02:00
Jaroslava Fiedlerova
c4b1966fc5 Merge remote-tracking branch 'origin/NR_bw_index_fix' into integration_2024_w17 2024-04-26 15:46:50 +02:00
Robert Schmidt
18951f04e6 Update assertfatal message 2024-04-26 10:59:49 +02:00
Laurent THOMAS
309d5cacc9 remove sleep() in UE NAS that have no good purpose 2024-04-26 10:19:59 +02:00
Laurent THOMAS
d67383bd42 segv on missing if() clause 2024-04-26 10:19:59 +02:00
Laurent THOMAS
a07461813d NR UE: Implement DCI format 11 type0 for contiguous allocations 2024-04-26 10:07:23 +02:00
luis_pereira87
615284c5c8 Add support for USRP X410 to run with 200 MHz bandwidth in FR2 at 120 kHz SCS 2024-04-26 08:23:19 +01:00
francescomani
6fdb69a898 fix for possible infinite loop in UE PUCCH multiplexing 2024-04-25 15:24:36 +02:00
francescomani
9992a19a6f release SRS/PUCCH as described in 331 section 5.3.12 2024-04-23 17:53:46 +02:00
francescomani
bff1f06350 removing MAC reset cause from reset_ra 2024-04-23 17:18:32 +02:00
francescomani
efeb538490 harmonize usage of frequency range structures 2024-04-23 12:20:42 +02:00
Cedric Roux
c0934b26da bugfix: use correct security algorithm 2024-04-23 12:06:54 +02:00
vijay chadachan
1924b3c793 Fix for the overflow issue while processing GPS based timestamp from RU
The absslot_tx overflow issue observed during integration testing of AW2S
RU with GPS as the source for the clock synchronization. Causes the gNB
not to start the TX thread and stops the processing.
2024-04-23 10:44:00 +02:00
Robert Schmidt
8a3c329e90 Merge branch 'integration_2024_w16' into 'develop'
Integration `2024.w16`

See merge request oai/openairinterface5g!2689

* !2680 CI: Modification of log collection in UndeployObject()
* !2681 remove a useless copy and specific buffer for all UE UL payload
* !2685 Clang: make executable run, fix clang warnings, fix memsan warnings
* !2690 Remove hardcoding of 5G-S-TMSI on nrUE
2024-04-22 11:50:06 +00:00
Jaroslava Fiedlerova
67fb98a16c Merge remote-tracking branch 'origin/fix-5g-s-tmsi-hardcode-nr-ue' into integration_2024_w16 2024-04-22 10:00:31 +02:00
Guido Casati
105e9b5f58 Handling Bearer Context Status Change IE in Bearer Context Modification Request
- E1 encoding /decoding
- new enum for E1 Bearer Status Change

see 9.2.2.4 BEARER CONTEXT MODIFICATION REQUEST of 3GPP TS 38.463
2024-04-21 10:23:59 +02:00
francescomani
da26eacfd4 improvements in handling RRC Release 2024-04-21 09:05:56 +02:00
Guido Casati
2c2b7416c1 Check numDlUpParam size when processing DlUpParamList 2024-04-19 14:43:26 +02:00
Jaroslava Fiedlerova
ea1921809f Merge remote-tracking branch 'origin/clang-run-warning-memsan' into integration_2024_w16 2024-04-19 11:03:37 +02:00
Jaroslava Fiedlerova
219b4b7680 Merge remote-tracking branch 'origin/remove-useless-buffer-and-copy' into integration_2024_w16 2024-04-19 11:02:38 +02:00
Guido Casati
7a9b3485b1 Remove hardcoding of 5G-S-TMSI on nrUE 2024-04-19 10:58:09 +02:00
Jaroslava Fiedlerova
e3547dfb38 CI: Modification of log collection in UndeployObject()
After the recent update of matix, collected logs contain color codes
and we did not find the way to switch them completely off.
Replacement of "docker compose logs" by "docker logs" resolves this
issue. This commit includes changes related to "docker logs" usage.
2024-04-18 17:21:27 +02:00
Robert Schmidt
593191b51a Memory sanitizer patch not required anymore
Also, the check for clang is done in CMakeLists.txt; sleep is useless
2024-04-18 14:16:09 +02:00
Robert Schmidt
507e08cd39 Memsan uninitialized read: Initialize array to zero 2024-04-18 14:16:09 +02:00
Robert Schmidt
42254e6267 Memory sanitizer: unitialized read
Reset all the circular buffer to zero; this ensures that we cannot read
uninitialized data. Since this is RFsimulator, performance is not a
problem here either (and zeroing out happens only once).
2024-04-18 14:16:09 +02:00
Robert Schmidt
c114d2f547 Fix memory sanitizer warning: uninitialized read
Memsan complains that uninitialized reads originate because of these
warnings. Most of the corresponding variables are actually read into
through by libconfig; nevertheless, initializing them should not have a
bad side-effect (because the initialized value is overwritten).
2024-04-18 14:16:09 +02:00
Robert Schmidt
ed89498c4f Use standard C initializer list syntax
Fix clang warning

  warning: use of GNU old-style field designator extension [-Wgnu-designator]
2024-04-18 14:16:09 +02:00
Robert Schmidt
24baf08c87 Load unaligned data for SIMD processing to avoid segv
We access G_N at indexes that are not necessarily 32-byte aligned,
leading to segfaults. Use simde_mm256_loadu_si256() to load from memory
at an unaligned memory address to avoid the segfault.

Discovered using clang; it is unclear why gcc did not encounter the same
segfault.
2024-04-18 14:06:05 +02:00
Jaroslava Fiedlerova
d9b87d1cb7 Fix of iperf3 BIDIR reporting 2024-04-18 13:09:34 +02:00
Jaroslava Fiedlerova
6bbcc1d275 Improve LTE-2x2 radio behavior and log collection
- change testcase IDs to get all logs
2024-04-18 13:09:34 +02:00
Robert Schmidt
8e7ecaa73a Compile using -rdynamic with clang
-rdynamic is necessary for clang as well to properly link shared
executables. Add furthermore an option to ignore unused command line
arguments, to suppress warning

  clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]

This is likely because -rdynamic is only relevant for the linker, but
the corresponding option add_link_options() is only available starting
cmake 3.13, while we are still at 3.12 (for Ubuntu 18, to my
understanding).
2024-04-18 00:40:39 +02:00
Guido Casati
1d10a73b95 Apply default configuration for SRB1 when receiving RRCReestablishmentRequest
- according to 5.3.7.4 of TS 38.331
2024-04-17 16:17:42 +02:00
Guido Casati
ab65bc3b08 Refactor PDCP Reestablishment of DRBs according to 5.3.5.6.5 of 3GPP TS 38.331
- remove PDCP reestablishment for DRBs from RRCReestablishment message generation
- do PDCP reestablishment and CUUP notification calls after reception or RRCReestablishmentComplete
- this is necessary to make it consistent with the RRCReconfiguration message that contains
  RadioBearerConfig with the list of bearers to add/release
  which is followed by PDCP re-establishment at UE
2024-04-17 16:17:37 +02:00
Laurent THOMAS
df9cd171f6 remove a useless copy and specific buffer for all UE UL payload 2024-04-17 10:59:13 +02:00
Laurent THOMAS
0d0e111135 remove asserts on min RX/TX, set the RX/TX shift as 2 in the UE 2024-04-17 09:50:23 +02:00
Guido Casati
5610ce0738 Fix PDCP re-establishment of SRB1 and SRB2
- SRB1 shall be re-established at the time of RRCReestablishmentRequest
  according to 5.3.7.4 of 3GPP TS 38.331
- SRB2 shall be re-established when creating srb-ToAddModList
  according to 5.3.5.6.3 of 3GPP TS 38.331
2024-04-16 22:04:42 +02:00
francescomani
a0c5a3604a fix incorrect bw index evaluation for UE capabilities 2024-04-10 14:06:41 +02:00
250 changed files with 3546 additions and 2890 deletions

View File

@@ -158,11 +158,16 @@ endif()
# add autotools definitions that were maybe used!
add_definitions("-DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FCNTL_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_STRERROR=1 -DHAVE_SOCKET=1 -DHAVE_MEMSET=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_STDLIB_H=1 -DHAVE_MALLOC=1 -DHAVE_LIBSCTP")
set(commonOpts "-pipe -fPIC -Wall -fno-strict-aliasing")
# we need -rdynamic to incorporate all symbols in shared objects, see man page
set(commonOpts "-pipe -fPIC -Wall -fno-strict-aliasing -rdynamic")
# GNU C/C++ Compiler might throw many warnings without packed-bitfield-compat, see man page
# also, we need -rdynamic to incorporate all symbols in shared objects, again, see man page
if(CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
set(commonOpts "${commonOpts} -Wno-packed-bitfield-compat -rdynamic")
set(commonOpts "${commonOpts} -Wno-packed-bitfield-compat")
endif()
# clang: suppress complaints about unused command line argument (-rdynamic only
# used during linking)
if(CMAKE_C_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
set(commonOpts "${commonOpts} -Wno-unused-command-line-argument")
endif()
set(CMAKE_C_FLAGS

View File

@@ -25,6 +25,7 @@
<a href="https://hub.docker.com/r/oaisoftwarealliance/oai-nr-ue"><img alt="Docker Pulls" src="https://img.shields.io/docker/pulls/oaisoftwarealliance/oai-nr-ue?label=NR-UE%20docker%20pulls"></a>
<a href="https://hub.docker.com/r/oaisoftwarealliance/oai-enb"><img alt="Docker Pulls" src="https://img.shields.io/docker/pulls/oaisoftwarealliance/oai-enb?label=eNB%20docker%20pulls"></a>
<a href="https://hub.docker.com/r/oaisoftwarealliance/oai-lte-ue"><img alt="Docker Pulls" src="https://img.shields.io/docker/pulls/oaisoftwarealliance/oai-lte-ue?label=LTE-UE%20docker%20pulls"></a>
<a href="https://hub.docker.com/r/oaisoftwarealliance/oai-nr-cuup"><img alt="Docker Pulls" src="https://img.shields.io/docker/pulls/oaisoftwarealliance/oai-nr-cuup?label=NR-CUUP%20docker%20pulls"></a>
</p>
# OpenAirInterface License #

View File

@@ -30,11 +30,11 @@ global:
nrpsbchsim: dedale
nrprachsim: dedale
nrpucchsim: dedale
nrulschsim: theseus
nrulsim3gpp: theseus
nrulsimmimo: theseus
nrulsimmisc: theseus
nrulsimscfdma: theseus
polartest: theseus
smallblocktest: theseus
ulsim: theseus
nrulschsim: demophon
nrulsim3gpp: demophon
nrulsimmimo: demophon
nrulsimmisc: demophon
nrulsimscfdma: demophon
polartest: demophon
smallblocktest: demophon
ulsim: demophon

View File

@@ -25,8 +25,8 @@ allow dynamic UE creation from remote API */
rf_port: 0,
bandwidth: 20,
band: 78,
dl_nr_arfcn:627360,
ssb_nr_arfcn:627360,
dl_nr_arfcn:630048,
ssb_nr_arfcn:630048,
subcarrier_spacing: 30,
n_antenna_dl: N_ANTENNA_DL,
n_antenna_ul: N_ANTENNA_UL,
@@ -39,7 +39,7 @@ allow dynamic UE creation from remote API */
ue_list: [
{
"ue_id" : 1,
"imsi": "208970000000111",
"imsi": "001020000000001",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
@@ -54,7 +54,7 @@ allow dynamic UE creation from remote API */
},
{
"ue_id" : 2,
"imsi": "208970000000112",
"imsi": "001020000000002",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
@@ -69,7 +69,7 @@ allow dynamic UE creation from remote API */
},
{
"ue_id" : 3,
"imsi": "208970000000113",
"imsi": "001020000000003",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
@@ -84,7 +84,7 @@ allow dynamic UE creation from remote API */
},
{
"ue_id" : 4,
"imsi": "208970000000114",
"imsi": "001020000000004",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
@@ -99,7 +99,7 @@ allow dynamic UE creation from remote API */
},
{
"ue_id" : 5,
"imsi": "208970000000115",
"imsi": "001020000000005",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
@@ -114,7 +114,7 @@ allow dynamic UE creation from remote API */
},
{
"ue_id" : 6,
"imsi": "208970000000116",
"imsi": "001020000000006",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
@@ -129,7 +129,7 @@ allow dynamic UE creation from remote API */
},
{
"ue_id" : 7,
"imsi": "208970000000100",
"imsi": "001020000000007",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
@@ -144,7 +144,7 @@ allow dynamic UE creation from remote API */
},
{
"ue_id" : 8,
"imsi": "208970000000102",
"imsi": "001020000000008",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
@@ -159,7 +159,7 @@ allow dynamic UE creation from remote API */
},
{
"ue_id" : 9,
"imsi": "208970000000103",
"imsi": "001020000000009",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
@@ -174,7 +174,7 @@ allow dynamic UE creation from remote API */
},
{
"ue_id" : 10,
"imsi": "208970000000104",
"imsi": "001020000000010",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
@@ -189,7 +189,7 @@ allow dynamic UE creation from remote API */
},
{
"ue_id" : 11,
"imsi": "208970000000110",
"imsi": "001020000000011",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
@@ -204,7 +204,7 @@ allow dynamic UE creation from remote API */
},
{
"ue_id" : 12,
"imsi": "208970000000105",
"imsi": "001020000000012",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
@@ -219,7 +219,7 @@ allow dynamic UE creation from remote API */
},
{
"ue_id" : 13,
"imsi": "208970000000106",
"imsi": "001020000000013",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
@@ -234,7 +234,7 @@ allow dynamic UE creation from remote API */
},
{
"ue_id" : 14,
"imsi": "208970000000107",
"imsi": "001020000000014",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
@@ -249,7 +249,7 @@ allow dynamic UE creation from remote API */
},
{
"ue_id" : 15,
"imsi": "208970000000108",
"imsi": "001020000000015",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
@@ -264,7 +264,7 @@ allow dynamic UE creation from remote API */
},
{
"ue_id" : 16,
"imsi": "208970000000109",
"imsi": "001020000000016",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",

View File

@@ -1,280 +0,0 @@
/* UE simulator configuration file version 2021-06-17
* LTE / 5G Non StandAlone
* Copyright (C) 2019-2021 Amarisoft
*/
{
#define N_ANTENNA_DL 2
#define TDD 1
log_options: "all.level=warn,all.max_size=0,nas.level=debug,nas.max_size=1,rrc.level=debug,rrc.max_size=1",
log_filename: "/tmp/ue.log",
/* Enable remote API and Web interface */
com_addr: "0.0.0.0:9002",
include "rf_driver/1chan.cfg",
/* If true, allow the simulation of several UEs at the same time and
allow dynamic UE creation from remote API */
cell_groups: [{
group_type: "nr",
multi_ue: true,
cells: [{
rf_port: 0,
bandwidth: 20,
band: 78,
dl_nr_arfcn:627360,
ssb_nr_arfcn:627360,
subcarrier_spacing: 30,
n_antenna_dl: N_ANTENNA_DL,
n_antenna_ul: 1,
rx_to_tx_latency:2,
}],
}],
/* UE capabilities */
/* USIM data */
ue_list: [
{
"ue_id" : 1,
"imsi": "208970000000111",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
as_release: 15,
ue_category: "nr",
apn:"oai",
attach_pdn_type:"ipv4",
default_nssai: [ { sst: 1, }, ],
default_pdu_session_snssai: { sst: 1, },
tun_setup_script: "ue-ifup",
},
{
"ue_id" : 2,
"imsi": "208970000000112",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
as_release: 15,
ue_category: "nr",
apn:"oai",
attach_pdn_type:"ipv4",
default_nssai: [ { sst: 1, }, ],
default_pdu_session_snssai: { sst: 1, },
tun_setup_script: "ue-ifup",
},
{
"ue_id" : 3,
"imsi": "208970000000113",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
as_release: 15,
ue_category: "nr",
apn:"oai",
attach_pdn_type:"ipv4",
default_nssai: [ { sst: 1, }, ],
default_pdu_session_snssai: { sst: 1, },
tun_setup_script: "ue-ifup",
},
{
"ue_id" : 4,
"imsi": "208970000000114",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
as_release: 15,
ue_category: "nr",
apn:"oai",
attach_pdn_type:"ipv4",
default_nssai: [ { sst: 1, }, ],
default_pdu_session_snssai: { sst: 1, },
tun_setup_script: "ue-ifup",
},
{
"ue_id" : 5,
"imsi": "208970000000115",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
as_release: 15,
ue_category: "nr",
apn:"oai",
attach_pdn_type:"ipv4",
default_nssai: [ { sst: 1, }, ],
default_pdu_session_snssai: { sst: 1, },
tun_setup_script: "ue-ifup",
},
{
"ue_id" : 6,
"imsi": "208970000000116",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
as_release: 15,
ue_category: "nr",
apn:"oai",
attach_pdn_type:"ipv4",
default_nssai: [ { sst: 1, }, ],
default_pdu_session_snssai: { sst: 1, },
tun_setup_script: "ue-ifup",
},
{
"ue_id" : 7,
"imsi": "208970000000117",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
as_release: 15,
ue_category: "nr",
apn:"oai",
attach_pdn_type:"ipv4",
default_nssai: [ { sst: 1, }, ],
default_pdu_session_snssai: { sst: 1, },
tun_setup_script: "ue-ifup",
},
{
"ue_id" : 8,
"imsi": "208970000000118",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
as_release: 15,
ue_category: "nr",
apn:"oai",
attach_pdn_type:"ipv4",
default_nssai: [ { sst: 1, }, ],
default_pdu_session_snssai: { sst: 1, },
tun_setup_script: "ue-ifup",
},
{
"ue_id" : 9,
"imsi": "208970000000119",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
as_release: 15,
ue_category: "nr",
apn:"oai",
attach_pdn_type:"ipv4",
default_nssai: [ { sst: 1, }, ],
default_pdu_session_snssai: { sst: 1, },
tun_setup_script: "ue-ifup",
},
{
"ue_id" : 10,
"imsi": "208970000000120",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
as_release: 15,
ue_category: "nr",
apn:"oai",
attach_pdn_type:"ipv4",
default_nssai: [ { sst: 1, }, ],
default_pdu_session_snssai: { sst: 1, },
tun_setup_script: "ue-ifup",
},
{
"ue_id" : 11,
"imsi": "208970000000121",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
as_release: 15,
ue_category: "nr",
apn:"oai",
attach_pdn_type:"ipv4",
default_nssai: [ { sst: 1, }, ],
default_pdu_session_snssai: { sst: 1, },
tun_setup_script: "ue-ifup",
},
{
"ue_id" : 12,
"imsi": "208970000000122",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
as_release: 15,
ue_category: "nr",
apn:"oai",
attach_pdn_type:"ipv4",
default_nssai: [ { sst: 1, }, ],
default_pdu_session_snssai: { sst: 1, },
tun_setup_script: "ue-ifup",
},
{
"ue_id" : 13,
"imsi": "208970000000123",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
as_release: 15,
ue_category: "nr",
apn:"oai",
attach_pdn_type:"ipv4",
default_nssai: [ { sst: 1, }, ],
default_pdu_session_snssai: { sst: 1, },
tun_setup_script: "ue-ifup",
},
{
"ue_id" : 14,
"imsi": "208970000000124",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
as_release: 15,
ue_category: "nr",
apn:"oai",
attach_pdn_type:"ipv4",
default_nssai: [ { sst: 1, }, ],
default_pdu_session_snssai: { sst: 1, },
tun_setup_script: "ue-ifup",
},
{
"ue_id" : 15,
"imsi": "208970000000125",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
as_release: 15,
ue_category: "nr",
apn:"oai",
attach_pdn_type:"ipv4",
default_nssai: [ { sst: 1, }, ],
default_pdu_session_snssai: { sst: 1, },
tun_setup_script: "ue-ifup",
},
{
"ue_id" : 16,
"imsi": "208970000000126",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
as_release: 15,
ue_category: "nr",
apn:"oai",
attach_pdn_type:"ipv4",
default_nssai: [ { sst: 1, }, ],
default_pdu_session_snssai: { sst: 1, },
tun_setup_script: "ue-ifup",
},
],
}

View File

@@ -97,7 +97,7 @@ ltebox-nepes:
amarisoft_ue:
Host: amariue
InitScript: /root/lteue-linux-2023-10-27/ue/lteue /root/oaicicd/ran_sa_aw2s_asue_2x2/aw2s-multi-20897-2x2.cfg &
InitScript: /root/lteue-linux-2023-10-27/ue/lteue /root/oaicicd/ran_sa_aw2s_asue_2x2/aw2s-multi-00102-2x2.cfg &
TermScript: /root/2023-10-27/libs/ws.js -t 10 127.0.0.1:9002 '{"message":"quit"}' || killall -KILL lteue-avx2
amarisoft_ue_1:
Host: amariue

View File

@@ -44,6 +44,9 @@ OCUrl = "https://api.oai.cs.eurecom.fr:6443"
OCRegistry = "default-route-openshift-image-registry.apps.oai.cs.eurecom.fr/"
CI_OC_RAN_NAMESPACE = "oaicicd-ran"
CI_OC_CORE_NAMESPACE = "oaicicd-core-for-ci-ran"
CN_IMAGES = ["mysql", "oai-nrf", "oai-amf", "oai-smf", "oai-upf", "oai-ausf", "oai-udm", "oai-udr", "oai-traffic-server"]
CN_CONTAINERS = ["", "-c nrf", "-c amf", "-c smf", "-c upf", "-c ausf", "-c udm", "-c udr", ""]
def OC_login(cmd, ocUserName, ocPassword, ocProjectName):
if ocUserName == '' or ocPassword == '' or ocProjectName == '':
@@ -65,6 +68,51 @@ def OC_login(cmd, ocUserName, ocPassword, ocProjectName):
def OC_logout(cmd):
cmd.run(f'oc logout')
def OC_deploy_CN(cmd, ocUserName, ocPassword):
logging.debug('OC OAI CN5G: Deploying OAI CN5G on Openshift Cluster')
path = "/opt/oai-cn5g-fed-develop-2024-april-00102"
succeeded = OC_login(cmd, ocUserName, ocPassword, CI_OC_CORE_NAMESPACE)
if not succeeded:
return False, CONST.OC_LOGIN_FAIL
cmd.run('helm uninstall oai5gcn --wait --timeout 60s')
ret = cmd.run(f'helm install --wait --timeout 60s oai5gcn {path}/ci-scripts/charts/oai-5g-basic/.')
if ret.returncode != 0:
logging.error('OC OAI CN5G: Deployment failed')
OC_logout(cmd)
return False, CONST.OC_PROJECT_FAIL
report = cmd.run('oc get pods')
OC_logout(cmd)
return True, report
def OC_undeploy_CN(cmd, ocUserName, ocPassword):
logging.debug('OC OAI CN5G: Terminating CN on Openshift Cluster')
path = "/opt/oai-cn5g-fed-develop-2024-april-00102"
succeeded = OC_login(cmd, ocUserName, ocPassword, CI_OC_CORE_NAMESPACE)
if not succeeded:
return False, CONST.OC_LOGIN_FAIL
cmd.run(f'rm -Rf {path}/logs')
cmd.run(f'mkdir -p {path}/logs')
logging.debug('OC OAI CN5G: Collecting log files to workspace')
cmd.run(f'oc describe pod &> {path}/logs/describe-pods-post-test.log')
cmd.run(f'oc get pods.metrics.k8s &> {path}/logs/nf-resource-consumption.log')
for ii, ci in zip(CN_IMAGES, CN_CONTAINERS):
podName = cmd.run(f"oc get pods | grep {ii} | awk \'{{print $1}}\'").stdout.strip()
if not podName:
logging.debug(f'{ii} pod not found!')
else:
cmd.run(f'oc logs -f {podName} {ci} &> {path}/logs/{ii}.log &')
cmd.run(f'cd {path}/logs && zip -r -qq test_logs_CN.zip *.log')
cmd.copyin(f'{path}/logs/test_logs_CN.zip','test_logs_CN.zip')
ret = cmd.run('helm uninstall --wait --timeout 60s oai5gcn')
if ret.returncode != 0:
logging.error('OC OAI CN5G: Undeployment failed')
cmd.run('helm uninstall --wait --timeout 60s oai5gcn')
OC_logout(cmd)
return False, CONST.OC_PROJECT_FAIL
report = cmd.run('oc get pods')
OC_logout(cmd)
return True, report
class Cluster:
def __init__(self):
self.eNBIPAddress = ""

View File

@@ -1021,18 +1021,18 @@ class Containerize():
for s in allServices:
# outputs the hash if the container is running
ret = mySSH.run(f'docker compose -f {yamlDir}/ci-docker-compose.yml ps --all --quiet -- {s}')
running = ret.stdout.splitlines()
logging.debug(f'running services: {running}')
c = ret.stdout
logging.debug(f'running service {s} with container id {c}')
if ret.stdout != "" and ret.returncode == 0: # something is running for that service
services.append(s)
logging.info(f'stopping services {services}')
services.append((s, c))
logging.info(f'stopping services {[s for s, _ in services]}')
mySSH.run(f'docker compose -f {yamlDir}/ci-docker-compose.yml stop -t3')
copyin_res = True
for svcName in services:
for service_name, container_id in services:
# head -n -1 suppresses the final "X exited with status code Y"
filename = f'{svcName}-{HTML.testCase_id}.log'
mySSH.run(f'docker compose -f {yamlDir}/ci-docker-compose.yml logs --no-log-prefix -- {svcName} &> {lSourcePath}/cmake_targets/log/{filename}')
filename = f'{service_name}-{HTML.testCase_id}.log'
mySSH.run(f'docker logs {container_id} &> {lSourcePath}/cmake_targets/log/{filename}')
copyin_res = mySSH.copyin(f'{lSourcePath}/cmake_targets/log/{filename}', f'{filename}') and copyin_res
mySSH.run(f'docker compose -f {yamlDir}/ci-docker-compose.yml down -v')
@@ -1043,7 +1043,7 @@ class Containerize():
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.ENB_PROCESS_NOLOGFILE_TO_ANALYZE)
self.exitStatus = 1
# use function for UE log analysis, when oai-nr-ue container is used
elif 'oai-nr-ue' in services or 'lte_ue0' in services:
elif any(service_name == 'oai-nr-ue' or service_name == 'lte_ue0' for service_name, _ in services):
self.exitStatus == 0
logging.debug(f'Analyzing UE logfile {filename}')
logStatus = cls_oaicitest.OaiCiTest().AnalyzeLogFile_UE(f'{filename}', HTML, RAN)
@@ -1053,12 +1053,12 @@ class Containerize():
else:
HTML.CreateHtmlTestRow('UE log Analysis', 'OK', CONST.ALL_PROCESSES_OK)
else:
for svcName in services:
if svcName == 'nv-cubb':
for service_name, _ in services:
if service_name == 'nv-cubb':
msg = 'Undeploy PNF/Nvidia CUBB'
HTML.CreateHtmlTestRow(msg, 'OK', CONST.ALL_PROCESSES_OK)
else:
filename = f'{svcName}-{HTML.testCase_id}.log'
filename = f'{service_name}-{HTML.testCase_id}.log'
logging.debug(f'\u001B[1m Analyzing logfile {filename}\u001B[0m')
logStatus = RAN.AnalyzeLogFile_eNB(filename, HTML, self.ran_checkers)
if (logStatus < 0):

View File

@@ -129,10 +129,10 @@ def Iperf_analyzeV3BIDIRJson(filename):
with open(filename) as file:
filename = json.load(file)
try:
sender_bitrate_dl = round(filename['end']['streams'][0]['sender']['bits_per_second']/1000000,2)
receiver_bitrate_dl = round(filename['end']['streams'][0]['receiver']['bits_per_second']/1000000,2)
sender_bitrate_ul = round(filename['end']['streams'][1]['sender']['bits_per_second']/1000000,2)
receiver_bitrate_ul = round(filename['end']['streams'][1]['receiver']['bits_per_second']/1000000,2)
sender_bitrate_ul = round(filename['end']['streams'][0]['sender']['bits_per_second']/1000000,2)
receiver_bitrate_ul = round(filename['end']['streams'][0]['receiver']['bits_per_second']/1000000,2)
sender_bitrate_dl = round(filename['end']['streams'][1]['sender']['bits_per_second']/1000000,2)
receiver_bitrate_dl = round(filename['end']['streams'][1]['receiver']['bits_per_second']/1000000,2)
except Exception as e:
return (False, 'Could not compute BIDIR bitrate!')

View File

@@ -204,8 +204,8 @@ MACRLCs = (
bler_target_upper = 20.0;
bler_target_lower = 10.0;
max_ul_rb_index = 27;
puSch10xSnr = 190;
puCch10xSnr = 160;
puSch10xSnr = 250;
puCch10xSnr = 230;
}
);
@@ -224,8 +224,8 @@ RUs = (
local_rf = "yes"
nb_tx = 2
nb_rx = 2
att_tx = 10
att_rx = 5;
att_tx = 12
att_rx = 0;
bands = [38];
max_pdschReferenceSignalPower = -27;
max_rxgain = 75;

View File

@@ -204,8 +204,8 @@ MACRLCs = (
bler_target_upper = 20.0;
bler_target_lower = 10.0;
max_ul_rb_index = 27;
puSch10xSnr = 190;
puCch10xSnr = 160;
puSch10xSnr = 280;
puCch10xSnr = 250;
}
);
@@ -224,8 +224,8 @@ RUs = (
local_rf = "yes"
nb_tx = 2
nb_rx = 2
att_tx = 10
att_rx = 5;
att_tx = 18
att_rx = 0;
bands = [38];
max_pdschReferenceSignalPower = -27;
max_rxgain = 75;

View File

@@ -4,7 +4,6 @@ Asn1_verbosity = "none";
sa = 1;
nfapi = "AERIAL";
pdcp-drop = 1;
gNBs =
(
@@ -16,8 +15,8 @@ gNBs =
// Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 1;
plmn_list = ({
mcc = 001;
mnc = 01;
mcc = 208;
mnc = 97;
mnc_length = 2;
snssaiList = (
{
@@ -31,11 +30,10 @@ gNBs =
////////// Physical parameters:
pdsch_AntennaPorts_XP = 2;
pdsch_AntennaPorts_N1 = 2;
pusch_AntennaPorts = 2;
do_CSIRS = 1;
do_SRS = 0;
min_rxtxtime = 3;
min_rxtxtime = 2;
pdcch_ConfigSIB1 = (
{
@@ -170,19 +168,13 @@ gNBs =
# pattern1
# dl_UL_TransmissionPeriodicity
# 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10
dl_UL_TransmissionPeriodicity = 5; #6;
nrofDownlinkSlots = 3; #7;
nrofDownlinkSymbols = 6;
nrofUplinkSlots = 1; #2;
nrofUplinkSymbols = 0;
# dl_UL_TransmissionPeriodicity = 5; #6;
# nrofDownlinkSlots = 3; #7;
# nrofDownlinkSymbols = 6;
# nrofUplinkSlots = 1; #2;
# nrofUplinkSymbols = 0;
dl_UL_TransmissionPeriodicity = 6;
nrofDownlinkSlots = 6;
nrofDownlinkSymbols = 10;
nrofUplinkSlots = 3;
nrofUplinkSymbols = 0
ssPBCH_BlockPower = -34;
ssPBCH_BlockPower = -25;
}
);
@@ -197,22 +189,14 @@ gNBs =
};
////////// AMF parameters:
amf_ip_address = ( { ipv4 = "192.168.70.132";
ipv6 = "192:168:30::17";
active = "yes";
preference = "ipv4";
}
);
# amf_ip_address = ({ ipv4 = "192.168.71.132"; });
////////// AMF parameters:
amf_ip_address = ({ ipv4 = "192.168.71.132"; });
NETWORK_INTERFACES :
{
GNB_INTERFACE_NAME_FOR_NG_AMF = "demo-oai";
GNB_IPV4_ADDRESS_FOR_NG_AMF = "192.168.70.129/24";
GNB_INTERFACE_NAME_FOR_NGU = "demo-oai";
GNB_IPV4_ADDRESS_FOR_NGU = "192.168.70.129/24";
GNB_IPV4_ADDRESS_FOR_NG_AMF = "172.21.16.131";
GNB_IPV4_ADDRESS_FOR_NGU = "172.21.16.131";
GNB_PORT_FOR_S1U = 2152; # Spec 2152
};
@@ -230,11 +214,11 @@ MACRLCs = (
remote_s_portd = 50010; // pnf p7 port [!]
tr_s_preference = "aerial";
tr_n_preference = "local_RRC";
pusch_TargetSNRx10 = 280; # 150;
pucch_TargetSNRx10 = 100; #200;
pusch_TargetSNRx10 = 200; # 150;
pucch_TargetSNRx10 = 200; #200;
ulsch_max_frame_inactivity = 10;
dl_max_mcs = 27;
ul_max_mcs = 25;
dl_max_mcs = 28;
ul_max_mcs = 28;
}
);

View File

@@ -167,19 +167,12 @@ gNBs =
////////// AMF parameters:
amf_ip_address = ( { ipv4 = "192.168.61.132";
ipv6 = "192:168:30::17";
active = "yes";
preference = "ipv4";
}
);
amf_ip_address = ({ ipv4 = "192.168.61.132"; });
NETWORK_INTERFACES :
{
GNB_INTERFACE_NAME_FOR_NG_AMF = "demo-oai";
GNB_IPV4_ADDRESS_FOR_NG_AMF = "192.168.61.129/26";
GNB_INTERFACE_NAME_FOR_NGU = "demo-oai";
GNB_IPV4_ADDRESS_FOR_NGU = "192.168.61.129/26";
GNB_PORT_FOR_S1U = 2152; # Spec 2152
};

View File

@@ -164,20 +164,11 @@ gNBs = (
////////// AMF parameters:
amf_ip_address = (
{
ipv4 = "192.168.61.132";
ipv6 = "192:168:30::17";
active = "yes";
preference = "ipv4";
}
);
amf_ip_address = ({ ipv4 = "192.168.61.132"; });
NETWORK_INTERFACES :
{
GNB_INTERFACE_NAME_FOR_NG_AMF = "demo-oai";
GNB_IPV4_ADDRESS_FOR_NG_AMF = "192.168.61.129/24";
GNB_INTERFACE_NAME_FOR_NGU = "demo-oai";
GNB_IPV4_ADDRESS_FOR_NGU = "192.168.61.129/24";
GNB_PORT_FOR_S1U = 2152; # Spec 2152
}

View File

@@ -13,7 +13,7 @@ gNBs =
// Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 1;
plmn_list = ({ mcc = 208; mnc = 97; mnc_length = 2; snssaiList = ({sst = 1;}); });
plmn_list = ({ mcc = 001; mnc = 02; mnc_length = 2; snssaiList = ({sst = 1;}); });
nr_cellid = 12345678L

View File

@@ -16,7 +16,7 @@ gNBs =
// Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 0x1;
plmn_list = ({ mcc = 208; mnc = 97; mnc_length = 2; snssaiList = ({ sst =0x1; }) });
plmn_list = ({ mcc = 001; mnc = 02; mnc_length = 2; snssaiList = ({ sst =0x1; }) });
nr_cellid = 12345678L
@@ -35,10 +35,10 @@ gNBs =
# downlinkConfigCommon
#frequencyInfoDL
# this is 3410.4 MHz => 301 REs from PointA 25 PRBs + 1 RE
absoluteFrequencySSB = 627360;
absoluteFrequencySSB = 630048;
dl_frequencyBand = 78;
# this is 3410.4 - (51*12*30e-3/2) = 3401.22 MHz
dl_absoluteFrequencyPointA = 626748;
dl_absoluteFrequencyPointA = 629436;
#scs-SpecificCarrierList
dl_offstToCarrier = 0;
# subcarrierSpacing

View File

@@ -30,7 +30,7 @@ gNBs =
absoluteFrequencySSB = 620736;
dl_frequencyBand = 78;
# this is 3300.30 MHz
dl_absoluteFrequencyPointA = 620052;
dl_absoluteFrequencyPointA = 620020;
#scs-SpecificCarrierList
dl_offstToCarrier = 0;
# subcarrierSpacing

View File

@@ -298,39 +298,18 @@ class EPCManagement():
html_cell += '(' + res4.group('date') + ')'
html_cell += '\n'
elif re.match('OC-OAI-CN5G', self.Type, re.IGNORECASE):
self.testCase_id = HTML.testCase_id
imageNames = ["oai-nrf", "oai-amf", "oai-smf", "oai-spgwu-tiny", "oai-ausf", "oai-udm", "oai-udr", "mysql","oai-traffic-server"]
logging.debug('Deploying OAI CN5G on Openshift Cluster')
lIpAddr = self.IPAddress
lSourcePath = "/opt/oai-cn5g-fed-develop-2023-04-28-20897"
succeeded = OC.OC_login(mySSH, self.OCUserName, self.OCPassword, OC.CI_OC_CORE_NAMESPACE)
succeeded, report = OC.OC_deploy_CN(mySSH, self.OCUserName, self.OCPassword)
if not succeeded:
logging.error('\u001B[1m OC Cluster Login Failed\u001B[0m')
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_LOGIN_FAIL)
return False
for ii in imageNames:
mySSH.run(f'helm uninstall {ii}', reportNonZero=False)
mySSH.run(f'helm spray {lSourcePath}/ci-scripts/charts/oai-5g-basic/.')
ret = mySSH.run(f'oc get pods', silent=True)
if ret.stdout.count('Running') != 9:
logging.error('\u001B[1m Deploying 5GCN Failed using helm chart on OC Cluster\u001B[0m')
for ii in imageNames:
mySSH.run('helm uninstall '+ ii)
ret = mySSH.run(f'oc get pods')
if re.search('No resources found', ret.stdout):
logging.debug('All pods uninstalled')
OC.OC_logout(mySSH)
mySSH.close()
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_PROJECT_FAIL)
return False
ret = mySSH.run(f'oc get pods', silent=True)
for line in ret.stdout.split('\n')[1:]:
HTML.CreateHtmlTestRow('N/A', 'KO', report)
HTML.CreateHtmlTabFooter(False)
mySSH.close()
sys.exit("OC OAI CN5G: CN deployment failed!")
for line in report.stdout.split('\n')[1:]:
columns = line.strip().split()
name = columns[0]
status = columns[2]
html_cell += status + ' ' + name
html_cell += '\n'
OC.OC_logout(mySSH)
else:
logging.error('This option should not occur!')
mySSH.close()
@@ -562,8 +541,6 @@ class EPCManagement():
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
def Terminate5GCN(self, HTML):
imageNames = ["mysql", "oai-nrf", "oai-amf", "oai-smf", "oai-spgwu-tiny", "oai-ausf", "oai-udm", "oai-udr", "oai-traffic-server"]
containerInPods = ["", "-c nrf", "-c amf", "-c smf", "-c spgwu", "-c ausf", "-c udm", "-c udr", ""]
mySSH = cls_cmd.getConnection(self.IPAddress)
message = ''
if re.match('ltebox', self.Type, re.IGNORECASE):
@@ -598,36 +575,13 @@ class EPCManagement():
mySSH.copyin(f'{self.SourceCodePath}/logs/test_logs_CN.zip','test_logs_CN.zip')
logging.debug(message)
elif re.match('OC-OAI-CN5G', self.Type, re.IGNORECASE):
logging.debug('Terminating OAI CN5G on Openshift Cluster')
lIpAddr = self.IPAddress
lSourcePath = self.SourceCodePath
mySSH.run(f'rm -Rf {lSourcePath}/logs')
mySSH.run(f'mkdir -p {lSourcePath}/logs')
logging.debug('OC OAI CN5G - Collecting Log files to workspace')
succeeded = OC.OC_login(mySSH, self.OCUserName, self.OCPassword, OC.CI_OC_CORE_NAMESPACE)
succeeded, report = OC.OC_undeploy_CN(mySSH, self.OCUserName, self.OCPassword)
if not succeeded:
logging.error('\u001B[1m OC Cluster Login Failed\u001B[0m')
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_LOGIN_FAIL)
return False
mySSH.run(f'oc describe pod &> {lSourcePath}/logs/describe-pods-post-test.log')
mySSH.run(f'oc get pods.metrics.k8s &> {lSourcePath}/logs/nf-resource-consumption.log')
for ii, ci in zip(imageNames, containerInPods):
podName = mySSH.run(f"oc get pods | grep {ii} | awk \'{{print $1}}\'").stdout.strip()
if not podName:
logging.debug(f'{ii} pod not found!')
HTML.CreateHtmlTestRow(self.Type, 'KO', CONST.INVALID_PARAMETER)
HTML.CreateHtmlTabFooter(False)
mySSH.run(f'oc logs -f {podName} {ci} &> {lSourcePath}/logs/{ii}.log &')
mySSH.run(f'helm uninstall {ii}')
podName = ''
mySSH.run(f'cd {lSourcePath}/logs && zip -r -qq test_logs_CN.zip *.log')
mySSH.copyin(f'{lSourcePath}/logs/test_logs_CN.zip','test_logs_CN.zip')
ret = mySSH.run(f'oc get pods', silent=True)
res = re.search(f'No resources found in {OC.CI_OC_CORE_NAMESPACE} namespace.', ret.stdout)
if res is not None:
logging.debug('OC OAI CN5G components uninstalled')
message = 'OC OAI CN5G components uninstalled'
OC.OC_logout(mySSH)
HTML.CreateHtmlTestRow('N/A', 'KO', report)
HTML.CreateHtmlTabFooter(False)
sys.exit("OC OAI CN5G: CN undeployment failed!")
else:
message = report.stdout
else:
logging.error('This should not happen!')
mySSH.close()

View File

@@ -31,15 +31,15 @@
111111
100000
010010
030101
031101
010001
000001
050000
050001
070000
070001
051000
051001
071000
071001
010010
030201
031201
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
@@ -65,7 +65,7 @@
<command>sudo cpupower idle-set -E</command>
</testCase>
<testCase id="030101">
<testCase id="031101">
<class>Deploy_Object</class>
<desc>Deploy eNB (TDD/Band38/2.6Ghz/N3XX) in a container</desc>
<yaml_path>ci-scripts/yaml_files/lte_n3xx_tdd_2x2_tm2</yaml_path>
@@ -85,7 +85,7 @@
<id>up2</id>
</testCase>
<testCase id="050000">
<testCase id="051000">
<class>Ping</class>
<desc>Ping: 20 pings</desc>
<id>up2</id>
@@ -94,7 +94,7 @@
<ping_rttavg_threshold>60</ping_rttavg_threshold>
</testCase>
<testCase id="050001">
<testCase id="051001">
<class>Ping</class>
<desc>Ping: 100 pings, size 1024</desc>
<id>up2</id>
@@ -103,7 +103,7 @@
<ping_rttavg_threshold>60</ping_rttavg_threshold>
</testCase>
<testCase id="070000">
<testCase id="071000">
<class>Iperf</class>
<desc>iperf (DL/26Mbps/UDP)(60 sec)(single-ue profile)</desc>
<iperf_args>-u -b 1M -t 60 -R</iperf_args>
@@ -113,7 +113,7 @@
<iperf_bitrate_threshold>95</iperf_bitrate_threshold>
</testCase>
<testCase id="070001">
<testCase id="071001">
<class>Iperf</class>
<desc>iperf (UL/7Mbps/UDP)(60 sec)(single-ue profile)</desc>
<iperf_args>-u -b 7M -t 60</iperf_args>
@@ -129,7 +129,7 @@
<id>up2</id>
</testCase>
<testCase id="030201">
<testCase id="031201">
<class>Undeploy_Object</class>
<desc>Undeploy gNB</desc>
<yaml_path>ci-scripts/yaml_files/lte_n3xx_tdd_2x2_tm2</yaml_path>

View File

@@ -48,9 +48,9 @@
000100
000010
000020
002016
000030
000040
002016
000200
003000
004000

View File

@@ -165,7 +165,7 @@
<testCase id="070003">
<class>Iperf</class>
<desc>iperf (DL/TCP)(30 sec)(multi-ue profile)</desc>
<desc>iperf (DL/TCP)(30 sec)(single-ue profile)</desc>
<iperf_args>-t 30 -R</iperf_args>
<id>idefix</id>
<svr_id>sabox-nepes</svr_id>
@@ -174,7 +174,7 @@
<testCase id="070004">
<class>Iperf</class>
<desc>iperf (UL/TCP)(30 sec)(multi-ue profile)</desc>
<desc>iperf (UL/TCP)(30 sec)(single-ue profile)</desc>
<iperf_args>-t 30</iperf_args>
<id>idefix</id>
<svr_id>sabox-nepes</svr_id>

View File

@@ -157,7 +157,7 @@
<testCase id="370003">
<class>Iperf</class>
<desc>iperf (DL/TCP)(30 sec)(multi-ue profile)</desc>
<desc>iperf (DL/TCP)(30 sec)(single-ue profile)</desc>
<iperf_args>-t 30 -R</iperf_args>
<id>idefix</id>
<svr_id>sabox-nepes</svr_id>
@@ -166,7 +166,7 @@
<testCase id="370004">
<class>Iperf</class>
<desc>iperf (UL/TCP)(30 sec)(multi-ue profile)</desc>
<desc>iperf (UL/TCP)(30 sec)(single-ue profile)</desc>
<iperf_args>-t 30</iperf_args>
<id>idefix</id>
<svr_id>sabox-nepes</svr_id>

View File

@@ -189,7 +189,7 @@
<testCase id="170003">
<class>Iperf</class>
<desc>iperf (DL/TCP)(30 sec)(multi-ue profile)</desc>
<desc>iperf (DL/TCP)(30 sec)(single-ue profile)</desc>
<iperf_args>-t 30 -R</iperf_args>
<id>idefix</id>
<svr_id>sabox-nepes</svr_id>
@@ -198,7 +198,7 @@
<testCase id="170004">
<class>Iperf</class>
<desc>iperf (UL/TCP)(30 sec)(multi-ue profile)</desc>
<desc>iperf (UL/TCP)(30 sec)(single-ue profile)</desc>
<iperf_args>-t 30</iperf_args>
<id>idefix</id>
<svr_id>sabox-nepes</svr_id>

View File

@@ -159,7 +159,7 @@
<testCase id="270003">
<class>Iperf</class>
<desc>iperf (DL/TCP)(30 sec)(multi-ue profile)</desc>
<desc>iperf (DL/TCP)(30 sec)(single-ue profile)</desc>
<iperf_args>-t 30 -R</iperf_args>
<id>idefix</id>
<svr_id>sabox-nepes</svr_id>
@@ -168,7 +168,7 @@
<testCase id="270004">
<class>Iperf</class>
<desc>iperf (UL/TCP)(30 sec)(multi-ue profile)</desc>
<desc>iperf (UL/TCP)(30 sec)(single-ue profile)</desc>
<iperf_args>-t 30</iperf_args>
<id>idefix</id>
<svr_id>sabox-nepes</svr_id>

View File

@@ -1,5 +1,3 @@
version: '3.8'
services:
cassandra:
image: cassandra:2.1

View File

@@ -1,5 +1,3 @@
version: '3.8'
services:
cassandra:
image: cassandra:2.1

View File

@@ -1,5 +1,3 @@
version: '3.8'
services:
oai_enb0:
image: oaisoftwarealliance/oai-enb:develop

View File

@@ -1,5 +1,3 @@
version: '3.8'
services:
cassandra:
image: cassandra:2.1

View File

@@ -1,5 +1,3 @@
version: '3.8'
services:
cassandra:
image: cassandra:2.1

View File

@@ -1,5 +1,3 @@
version: '3.8'
services:
oai_enb0:
image: oaisoftwarealliance/oai-enb:develop

View File

@@ -1,5 +1,3 @@
version: '3.8'
services:
oai_enb0:
image: oaisoftwarealliance/oai-enb:develop

View File

@@ -1,5 +1,3 @@
version: '3.8'
services:
cassandra:
image: cassandra:2.1

View File

@@ -1,4 +1,3 @@
version: '3.8'
services:
mysql:
container_name: "rfsim5g-mysql"

View File

@@ -1,4 +1,3 @@
version: '3.8'
services:
mysql:
container_name: "rfsim5g-mysql"

View File

@@ -1,4 +1,3 @@
version: '3.8'
services:
mysql:
container_name: "l2sim-mysql"

View File

@@ -1,4 +1,3 @@
version: '3.8'
services:
mysql:
container_name: "rfsim5g-mysql"

View File

@@ -1,4 +1,3 @@
version: '3.8'
services:
mysql:
container_name: "rfsim5g-mysql"

View File

@@ -1,4 +1,3 @@
version: '3.8'
services:
mysql:
container_name: "rfsim5g-mysql"

View File

@@ -1,4 +1,3 @@
version: '3.8'
services:
oai-du:
image: oaisoftwarealliance/oai-gnb:develop

View File

@@ -1,4 +1,3 @@
version: '3.8'
services:
mysql:
container_name: "rfsim5g-mysql"

View File

@@ -1,4 +1,3 @@
version: '3.8'
services:
oai-gnb:
image: oaisoftwarealliance/oai-gnb:develop

View File

@@ -1,4 +1,3 @@
version: '3.8'
services:
mysql:
container_name: "rfsim5g-mysql"

View File

@@ -1,4 +1,3 @@
version: '3.8'
services:
oai-gnb:
image: oaisoftwarealliance/oai-gnb:develop

View File

@@ -1,4 +1,3 @@
version: '3.8'
services:
mysql:
container_name: "rfsim5g-mysql"

View File

@@ -1,4 +1,3 @@
version: '3.8'
services:
oai-nr-ue:
image: oai-nr-ue:latest
@@ -10,7 +9,7 @@ services:
#entrypoint: /bin/bash -c "sleep infinity"
environment:
TZ: Europe/Paris
USE_ADDITIONAL_OPTIONS: --usrp-args type=n3xx,name=ni-n3xx-31641B9,addr=192.168.10.2 -r 106 --numerology 1 --band 78 -C 3511200000 --sa --ue-fo-compensation --ue-rxgain 65 --tune-offset 20000000 -A 45 --log_config.global_log_options level,nocolor,time --uicc0.imsi 208970000000111 --uicc0.nssai_sd 16777215
USE_ADDITIONAL_OPTIONS: --usrp-args type=n3xx,name=ni-n3xx-31641B9,addr=192.168.10.2 -r 106 --numerology 1 --band 78 -C 3511200000 --sa --ue-fo-compensation --ue-rxgain 65 --tune-offset 20000000 -A 45 --log_config.global_log_options level,nocolor,time --uicc0.imsi 001020000000111 --uicc0.nssai_sd 16777215
volumes:
- ../../conf_files/ue.sa.conf:/opt/oai-nr-ue/etc/nr-ue.conf
healthcheck:

View File

@@ -1,5 +1,3 @@
version: '3.8'
services:
enb_mono_fdd:
image: oai-enb:latest

View File

@@ -1,5 +1,3 @@
version: '3.8'
services:
cassandra:
image: cassandra:2.1

View File

@@ -1,5 +1,3 @@
version: '3.8'
services:
rru_fdd:
image: oai-enb:latest

View File

@@ -1,5 +1,3 @@
version: '3.8'
services:
enb_mono_fdd:
image: oai-enb:latest

View File

@@ -1,5 +1,3 @@
version: '3.8'
services:
enb_mono_fdd:
image: oai-enb:latest

View File

@@ -1,5 +1,3 @@
version: '3.8'
services:
lte_ue0:
image: oai-lte-ue:latest

View File

@@ -1,5 +1,3 @@
version: '3.8'
services:
enb_mono_fdd:
image: oai-enb:latest

View File

@@ -1,5 +1,3 @@
version: '3.8'
services:
enb_mono_fdd:
image: oai-enb:latest

View File

@@ -1,5 +1,3 @@
version: '3.8'
services:
enb_mono_fdd:
image: oai-enb:latest

View File

@@ -1,5 +1,3 @@
version: '3.8'
services:
enb_mono_fdd:
image: oai-enb:latest

View File

@@ -1,5 +1,3 @@
version: '3.8'
services:
rru_tdd:
image: oai-enb:latest

View File

@@ -1,5 +1,3 @@
version: '3.8'
services:
enb_mono_tdd:
image: oai-enb:latest

View File

@@ -1,5 +1,3 @@
version: '3.8'
services:
enb_mono_tdd:
image: oai-enb:latest

View File

@@ -1,5 +1,3 @@
version: '3.8'
services:
enb_mono_tdd:
image: oai-enb:latest

View File

@@ -1,5 +1,3 @@
version: '3.8'
services:
enb_mono_tdd:
image: oai-enb:latest

View File

@@ -1,5 +1,3 @@
version: '3.8'
services:
enb_mono_tdd:
image: oai-enb:latest

View File

@@ -1,4 +1,3 @@
version: '3.8'
services:
oai-enb:
image: oai-enb:latest

View File

@@ -1,4 +1,3 @@
version: '3.8'
services:
oai-enb:
image: oai-enb:latest

View File

@@ -1,5 +1,3 @@
version: '3.8'
services:
cassandra:
image: cassandra:2.1

View File

@@ -1,5 +1,3 @@
version: '3.8'
services:
cassandra:
image: cassandra:2.1

View File

@@ -1,5 +1,3 @@
version: '3.8'
services:
enb_mono_fdd:
image: oai-enb:latest

View File

@@ -1,5 +1,3 @@
version: '3.8'
services:
gnb_mono_tdd:
image: oai-gnb:latest

View File

@@ -1,5 +1,3 @@
version: '3.8'
services:
gnb_mono_tdd:
image: oai-gnb:latest

View File

@@ -1,5 +1,3 @@
version: '3.8'
services:
gnb_cucp:
image: oai-gnb:latest

View File

@@ -1,5 +1,3 @@
version: '3.8'
services:
gnb_cu:
image: oai-gnb:latest
@@ -30,7 +28,7 @@ services:
core: -1 # for core dumps
environment:
USE_B2XX: 'yes'
USE_ADDITIONAL_OPTIONS: --sa --RUs.[0].sdr_addrs serial=30C51D4 --telnetsrv --telnetsrv.shrmod ci --log_config.global_log_options level,nocolor,time,line_num,function --gNBs.[0].min_rxtxtime 2 --gNBs.[0].do_CSIRS 1 --gNBs.[0].do_SRS 0 --L1s.[0].max_ldpc_iterations 20
USE_ADDITIONAL_OPTIONS: --sa --RUs.[0].sdr_addrs serial=30C51D4 --continuous-tx --telnetsrv --telnetsrv.shrmod ci --log_config.global_log_options level,nocolor,time,line_num,function --gNBs.[0].min_rxtxtime 2 --gNBs.[0].do_CSIRS 1 --gNBs.[0].do_SRS 0 --L1s.[0].max_ldpc_iterations 20
volumes:
- ../../conf_files/gnb-du.sa.band1.52prb.usrpb210.conf:/opt/oai-gnb/etc/gnb.conf
- /dev:/dev

View File

@@ -3,7 +3,10 @@
# Check if cuBB_SDK is defined, if not, use default path
cuBB_Path="${cuBB_SDK:-/opt/nvidia/cuBB}"
# Run gdrcopy insmod
cd "$cuBB_Path"/cuPHY-CP/external/gdrcopy/ || exit 1
./insmod.sh
cd "$cuBB_Path" || exit 1
# Add gdrcopy to LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/nvidia/lib:/usr/local/nvidia/lib64:/opt/mellanox/dpdk/lib/x86_64-linux-gnu:/opt/mellanox/doca/lib/x86_64-linux-gnu:/opt/nvidia/cuBB/cuPHY-CP/external/gdrcopy/build/x86_64/
@@ -18,8 +21,8 @@ export CUDA_MPS_LOG_DIRECTORY=/var
echo quit | nvidia-cuda-mps-control
# Start MPS
sudo -E nvidia-cuda-mps-control -d
sudo -E echo start_server -uid 0 | sudo -E nvidia-cuda-mps-control
nvidia-cuda-mps-control -d
echo start_server -uid 0 | nvidia-cuda-mps-control
# Start cuphycontroller_scf
# Check if an argument is provided
@@ -31,12 +34,4 @@ else
argument="$1"
fi
#sed -i "s/ nic:.*/ nic: 0000:cc:00.1/" ${cuBB_SDK}/cuPHY-CP/cuphycontroller/config/cuphycontroller_P5G_FXN_R750.yaml
#sed -i "s/ dst_mac_addr:.*/ dst_mac_addr: 6c:ad:ad:00:04:6c/" ${cuBB_SDK}/cuPHY-CP/cuphycontroller/config/cuphycontroller_P5G_FXN_R750.yaml
sed -i "s/ nic:.*/ nic: 0000:b5:00.0/" ${cuBB_SDK}/cuPHY-CP/cuphycontroller/config/cuphycontroller_P5G_FXN.yaml
sed -i "s/ dst_mac_addr:.*/ dst_mac_addr: 6c:ad:ad:00:04:6c/" ${cuBB_SDK}/cuPHY-CP/cuphycontroller/config/cuphycontroller_P5G_FXN.yaml
sudo -E "$cuBB_Path"/build/cuPHY-CP/cuphycontroller/examples/cuphycontroller_scf P5G_FXN
sudo ./build/cuPHY-CP/gt_common_libs/nvIPC/tests/pcap/pcap_collect
sudo mv nvipc.pcap /var/log/aerial/
sleep infinity
"$cuBB_Path"/build/cuPHY-CP/cuphycontroller/examples/cuphycontroller_scf "$argument"

View File

@@ -1,4 +1,3 @@
version: "3.8"
services:
nv-cubb:
container_name: nv-cubb
@@ -24,11 +23,10 @@ services:
- ../../../cmake_targets/share:/opt/cuBB/share
userns_mode: host
ipc: "shareable"
image: cubb-build:23-4
image: cubb-build:23-2
environment:
- cuBB_SDK=/opt/nvidia/cuBB
command: bash -c " sudo rm -rf /tmp/phy.log && sudo chmod +x /opt/nvidia/cuBB/aerial_l1_entrypoint.sh && /opt/nvidia/cuBB/aerial_l1_entrypoint.sh"
# command: bash -c "sleep infinity"
command: bash -c " rm -rf /tmp/phy.log && chmod +x /opt/nvidia/cuBB/aerial_l1_entrypoint.sh && /opt/nvidia/cuBB/aerial_l1_entrypoint.sh"
healthcheck:
test: ["CMD-SHELL",'grep -q "L1 is ready!" /tmp/phy.log && echo 0 || echo 1']
interval: 20s
@@ -36,7 +34,7 @@ services:
retries: 5
oai-gnb-aerial:
cpuset: "13-20"
image: oai-gnb-aerial:w15 # oai-gnb-aerial:latest
image: oai-gnb-aerial:latest
depends_on:
nv-cubb:
condition: service_healthy
@@ -58,9 +56,6 @@ services:
tty: true
volumes:
- ../../conf_files/gnb-vnf.sa.band78.273prb.aerial.conf:/opt/oai-gnb/etc/gnb.conf
- /var/log/aerial:/var/log/aerial
command: bash -c "chrt -f 99 /opt/oai-gnb/bin/nr-softmodem -O /opt/oai-gnb/etc/gnb.conf | ts | tee /var/log/aerial/oai.log"
# command: bash -c "/opt/oai-gnb/bin/nr-softmodem -O /opt/oai-gnb/etc/gnb.conf | ts | tee /var/log/aerial/oai.log"
container_name: oai-gnb-aerial
healthcheck:
test: /bin/bash -c "ps aux | grep -v grep | grep -c softmodem"

View File

@@ -1,5 +1,3 @@
version: '3.8'
services:
gnb_mono_tdd:
image: oai-gnb:latest

View File

@@ -418,8 +418,6 @@ function main() {
CMAKE_CMD="$CMAKE_CMD -DSANITIZE_UNDEFINED=True"
shift;;
--sanitize-memory | -fsanitize=memory)
echo_warning "Note: memory sanitizer\n* requires clang (tested: v17)\n* is incompatible with address/undefined behavior sanitizer\n* requires cmake_targets/tools/memsan.patch"
sleep 2
CMAKE_CMD="$CMAKE_CMD -DSANITIZE_MEMORY=ON -DSANITIZE_ADDRESS=OFF -DSANITIZE_UNDEFINED=OFF"
shift;;
--trace-asn1c-enc-dec)

View File

@@ -128,6 +128,7 @@ check_supported_distribution() {
"rhel9.1") return 0 ;;
"rhel9.2") return 0 ;;
"rhel9.3") return 0 ;;
"rhel9.4") return 0 ;;
"centos7") return 0 ;;
"centos8") return 0 ;;
"rocky8.7") return 0 ;;

View File

@@ -1,53 +0,0 @@
commit bf7f0c4f0f1bfce586667b50050640b67a7a747a
Author: Robert Schmidt <robert.schmidt@openairinterface.org>
Date: Wed Jun 7 18:24:50 2023 +0200
Fix dlopen() linker errors in dfts, ldpc, ldpc_parityCheck, and params_libconfig
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c29105d503..3b9e7d1246 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -508,7 +508,7 @@ add_library(CONFIG_LIB
)
target_link_libraries(CONFIG_LIB PRIVATE dl UTIL)
add_library(params_libconfig MODULE ${CONFIG_ROOTDIR}/libconfig/config_libconfig.c)
-target_link_libraries(params_libconfig config)
+target_link_libraries(params_libconfig config CONFIG_LIB minimal_lib)
# shared library loader
set (SHLIB_LOADER_SOURCES
${OPENAIR_DIR}/common/utils/load_module_shlib.c
@@ -1018,16 +1018,19 @@ if (ENABLE_LDPC_CUDA)
endif()
endif()
-add_library(ldpc MODULE ${PHY_LDPC_OPTIM8SEGMULTI_SRC} )
+add_library(ldpc MODULE ${PHY_LDPC_OPTIM8SEGMULTI_SRC} ${OPENAIR1_DIR}/PHY/CODING/crc_byte.c)
target_link_libraries(ldpc PRIVATE ldpc_gen_HEADERS)
+target_link_libraries(ldpc PRIVATE UTIL)
add_library(ldpc_parityCheck MODULE ${PHY_LDPC_OPTIM8SEGMULTI_SRC} )
target_compile_definitions(ldpc_parityCheck PUBLIC NR_LDPC_ENABLE_PARITY_CHECK)
target_link_libraries(ldpc_parityCheck PRIVATE ldpc_gen_HEADERS)
+target_link_libraries(ldpc_parityCheck PRIVATE UTIL minimal_lib)
add_library(coding MODULE ${PHY_TURBOSRC} )
add_library(dfts MODULE ${OPENAIR1_DIR}/PHY/TOOLS/oai_dfts.c )
+target_link_libraries(dfts PRIVATE minimal_lib)
set(PHY_SRC_COMMON
diff --git a/common/utils/minimal_stub.c b/common/utils/minimal_stub.c
index be9c1b399d..7ad0df4d56 100644
--- a/common/utils/minimal_stub.c
+++ b/common/utils/minimal_stub.c
@@ -1,6 +1,8 @@
+#include <stdlib.h>
#ifndef T_TRACER
int T_stdout;
#endif
+int oai_exit = 0;
void exit_function(const char *file, const char *function, const int line, const char *s, const int assert)
{

View File

@@ -322,19 +322,16 @@ int config_libconfig_set(configmodule_interface_t *cfg, paramdef_t *cfgoptions,
int config_libconfig_get(configmodule_interface_t *cfg, paramdef_t *cfgoptions, int numoptions, char *prefix)
{
config_setting_t *setting;
char *str;
int i,u;
long long int llu;
double dbl;
int rst;
int status=0;
int notfound;
int defval;
int fatalerror=0;
int numdefvals=0;
char *str = NULL;
int u = 0;
long long int llu = 0;
double dbl = 0.0f;
int status = 0;
int fatalerror = 0;
int numdefvals = 0;
char cfgpath[512]; /* 512 should be enough for the sprintf below */
for(i=0; i<numoptions; i++) {
for(int i=0; i<numoptions; i++) {
if (prefix != NULL) {
sprintf(cfgpath,"%s.%s",prefix,cfgoptions[i].optname);
} else {
@@ -346,8 +343,8 @@ int config_libconfig_get(configmodule_interface_t *cfg, paramdef_t *cfgoptions,
continue;
}
notfound=0;
defval=0;
int notfound = 0;
int defval = 0;
switch(cfgoptions[i].type) {
case TYPE_STRING:
@@ -436,7 +433,7 @@ int config_libconfig_get(configmodule_interface_t *cfg, paramdef_t *cfgoptions,
if ( !config_lookup_string(&(libconfig_privdata.cfg),cfgpath, (const char **)&str)) {
defval = config_setdefault_ipv4addr(cfg, &(cfgoptions[i]), prefix);
} else {
rst = config_assign_ipv4addr(cfg, cfgoptions, str);
int rst = config_assign_ipv4addr(cfg, cfgoptions, str);
if (rst < 0) {
fprintf(stderr,"[LIBCONFIG] %s not valid for %s \n", str, cfgpath);

View File

@@ -164,7 +164,7 @@ index 0000000000..00baf34774
+ }
+
+ /* a buffer needed to receive events from the nr-softmodem */
+ OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
+ OBUF ebuf = { .osize = 0, .omaxsize = 0, .obuf = NULL };
+
+ /* read events */
+ while (1) {

View File

@@ -874,7 +874,7 @@ int main(int n, char **v)
if (pthread_mutex_init(&enb_data.lock, NULL)) abort();
setup_event_selector(g, database, is_on, is_on_changed, &enb_data);
OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
restart:
clear_remote_config();

View File

@@ -49,7 +49,7 @@ again:
#endif
read_error:
return (event){type: -1};
return (event){.type = -1};
}
#ifdef T_SEND_TIME

View File

@@ -113,7 +113,7 @@ int main(int n, char **v)
found = 0;
OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
while (1) {
event e;

View File

@@ -36,7 +36,7 @@ int main(int n, char **v)
in = fopen(input_filename, "r");
if (in == NULL) { perror(input_filename); abort(); }
OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
while (1) {
int type;

View File

@@ -104,7 +104,7 @@ err:
fd = open(file, O_RDONLY);
if (fd == -1) { perror(file); exit(1); }
OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
/* get wanted frame/subframe */
while (1) {

View File

@@ -101,7 +101,7 @@ err:
int last_subframe = -1;
int subframe_written = 0;
OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
while (1) {
event e;

View File

@@ -265,7 +265,7 @@ int main(int n, char **v)
gnb_main_gui(&eg, g, h, database, &gnb_data);
OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
restart:
clear_remote_config();

View File

@@ -85,7 +85,7 @@ int main(int n, char **v) {
socket_send(socket, is_on, number_of_events * sizeof(int)) == -1)
abort();
OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
char dump[10][T_BUFFER_MAX];
event dump_ev[10];
FILE *z = fopen("/tmp/dd", "w");

View File

@@ -145,7 +145,7 @@ int main(int n, char **v)
clear_cache(number_of_tags, cache);
OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
while (1) {
int type;

View File

@@ -86,7 +86,7 @@ int main(int n, char **v)
socket_send(socket, is_on, number_of_events * sizeof(int)) == -1)
abort();
OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
while (1) {
event e;

View File

@@ -131,7 +131,7 @@ static struct chunk next_chunk(char **s, database_event_format f)
cur++;
*s = cur;
if (find_argument(name, f, &it, &event_arg) == 0) goto error;
return (struct chunk){type:C_ARG_NAME, s:name, it:it, event_arg:event_arg};
return (struct chunk){.type = C_ARG_NAME, .s = name, .it = it, .event_arg = event_arg};
}
/* { } is name of event (anything in between is smashed) */
@@ -143,7 +143,7 @@ static struct chunk next_chunk(char **s, database_event_format f)
*cur = 0;
cur++;
*s = cur;
return (struct chunk){type:C_EVENT_NAME};
return (struct chunk){.type = C_EVENT_NAME};
}
/* anything but [ and { is raw string */
@@ -151,10 +151,10 @@ static struct chunk next_chunk(char **s, database_event_format f)
name = cur;
while (*cur && *cur != '[' && *cur != '{') cur++;
*s = cur;
return (struct chunk){type:C_STRING, s:name};
return (struct chunk){.type = C_STRING, .s = name};
error:
return (struct chunk){type:C_ERROR};
return (struct chunk){.type = C_ERROR};
}
logger *new_textlog(event_handler *h, void *database,

View File

@@ -808,7 +808,7 @@ int main(int n, char **v)
d.to.sin_port = htons(port);
d.to.sin_addr.s_addr = inet_addr(ip);
new_thread(receiver, &d);
OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
/* read messages */
while (1) {

View File

@@ -52,7 +52,7 @@ int send_messages_txt(int s, char *T_messages_txt, int T_messages_txt_len)
/* TODO: be careful, we use internal T stuff, to rewrite? */
T_LOCAL_size = 0;
T_HEADER(T_ID(-1));
T_PUT_buffer(1, ((T_buffer){addr:(src), length:(send_size)}));
T_PUT_buffer(1, ((T_buffer){.addr = src, .length = send_size}));
if (socket_send(s, &T_LOCAL_size, 4) == -1) return -1;
if (socket_send(s, buf, T_LOCAL_size) == -1) return -1;
src += send_size;
@@ -242,7 +242,7 @@ int main(int n, char **v)
/* create listener socket */
l = create_listen_socket("0.0.0.0", local_port);
OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
current_nfd = 0;

View File

@@ -123,7 +123,7 @@ int main(int n, char **v)
if (signal(SIGINT, force_stop) == SIG_ERR) abort();
if (signal(SIGTSTP, force_stop) == SIG_ERR) abort();
OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
/* read messages */
while (run) {

View File

@@ -136,7 +136,7 @@ int main(int n, char **v)
new_thread(get_message_thread, &socket);
OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
while (1) {
int type;

View File

@@ -130,7 +130,7 @@ int main(int n, char **v)
/* send the first message - activate selected traces */
activate_traces(socket, is_on, number_of_events);
OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
/* read messages */
while (1) {

View File

@@ -366,7 +366,7 @@ int main(int n, char **v)
if (signal(SIGINT, force_stop) == SIG_ERR) abort();
if (signal(SIGTSTP, force_stop) == SIG_ERR) abort();
OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
/* read messages */
while (run) {

View File

@@ -758,7 +758,7 @@ int main(int n, char **v)
if (pthread_mutex_init(&ue_data.lock, NULL)) abort();
setup_event_selector(g, database, is_on, is_on_changed, &ue_data);
OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
restart:
clear_remote_config();

View File

@@ -187,7 +187,7 @@ int main(int n, char **v)
/* send the first message - activate selected traces */
is_on_changed(&vcd_data);
OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
/* read messages */
while (1) {

View File

@@ -129,8 +129,7 @@ static void *ticktime_thread(void *_this)
pixel_length = this->pixel_length;
if (this->autoscroll) {
tnext = time_add(this->latest_time,
(struct timespec){tv_sec:0,tv_nsec:1});
tnext = time_add(this->latest_time, (struct timespec){.tv_sec = 0, .tv_nsec = 1});
tstart = time_sub(tnext, nano_to_time(pixel_length * width));
this->start_time = tstart;
} else {

View File

@@ -122,8 +122,7 @@ static void *time_thread(void *_this)
pixel_length = this->pixel_length;
if (this->autoscroll) {
tnext = time_add(this->latest_time,
(struct timespec){tv_sec:0,tv_nsec:1});
tnext = time_add(this->latest_time, (struct timespec){.tv_sec = 0, .tv_nsec = 1});
tstart = time_sub(tnext, nano_to_time(pixel_length * width));
this->start_time = tstart;
} else {

View File

@@ -105,7 +105,6 @@ int get_supported_band_index(int scs, frequency_range_t freq_range, int n_rbs)
return (-1); // not found
}
// Table 5.2-1 NR operating bands in FR1 & FR2 (3GPP TS 38.101)
// Table 5.4.2.3-1 Applicable NR-ARFCN per operating band in FR1 & FR2 (3GPP TS 38.101)
// Notes:
@@ -119,10 +118,12 @@ const nr_bandentry_t nr_bandtable[] = {
{5, 824000, 849000, 869000, 894000, 20, 173800, 100},
{7, 2500000, 2570000, 2620000, 2690000, 20, 524000, 100},
{8, 880000, 915000, 925000, 960000, 20, 185000, 100},
{12, 698000, 716000, 729000, 746000, 20, 145800, 100},
{12, 699000, 716000, 729000, 746000, 20, 145800, 100},
{13, 777000, 787000, 746000, 756000, 20, 149200, 100},
{14, 788000, 798000, 758000, 768000, 20, 151600, 100},
{18, 815000, 830000, 860000, 875000, 20, 172000, 100},
{20, 832000, 862000, 791000, 821000, 20, 158200, 100},
{24, 1627500, 1656500, 1526000, 1536000, 20, 305000, 100},
{25, 1850000, 1915000, 1930000, 1995000, 20, 386000, 100},
{26, 814000, 849000, 859000, 894000, 20, 171800, 100},
{28, 703000, 758000, 758000, 813000, 20, 151600, 100},
@@ -142,6 +143,7 @@ const nr_bandentry_t nr_bandtable[] = {
{53, 2483500, 2495000, 2483500, 2495000, 20, 496700, 100},
{65, 1920000, 2010000, 2110000, 2200000, 20, 422000, 100},
{66, 1710000, 1780000, 2110000, 2200000, 20, 422000, 100},
{67, 000, 000, 738000, 758000, 20, 147600, 100},
{70, 1695000, 1710000, 1995000, 2020000, 20, 399000, 100},
{71, 663000, 698000, 617000, 652000, 20, 123400, 100},
{74, 1427000, 1470000, 1475000, 1518000, 20, 295000, 100},
@@ -158,6 +160,7 @@ const nr_bandentry_t nr_bandtable[] = {
{82, 832000, 862000, 000, 000, 20, 166400, 100},
{83, 703000, 748000, 000, 000, 20, 140600, 100},
{84, 1920000, 1980000, 000, 000, 20, 384000, 100},
{85, 698000, 716000, 728000, 746000, 20, 145600, 100},
{86, 1710000, 1785000, 000, 000, 20, 342000, 100},
{89, 824000, 849000, 000, 000, 20, 342000, 100},
{90, 2496000, 2690000, 2496000, 2690000, 3, 499200, 15},
@@ -179,8 +182,9 @@ const nr_bandentry_t nr_bandtable[] = {
{261,27500040,28350000,27500040,28350000, 2,2070833, 120}
};
int get_supported_bw_mhz(frequency_range_t frequency_range, int bw_index)
int get_supported_bw_mhz(frequency_range_t frequency_range, int scs, int nb_rb)
{
int bw_index = get_supported_band_index(scs, frequency_range, nb_rb);
if (frequency_range == FR1) {
switch (bw_index) {
case 0 :
@@ -232,8 +236,8 @@ bool compare_relative_ul_channel_bw(int nr_band, int scs, int nb_ul, frame_type_
// 38.101-1 section 6.2.2
// Relative channel bandwidth <= 4% for TDD bands and <= 3% for FDD bands
int index = get_nr_table_idx(nr_band, scs);
int bw_index = get_supported_band_index(scs, nr_band > 256 ? FR2 : FR1, nb_ul);
int band_size_khz = get_supported_bw_mhz(nr_band > 256 ? FR2 : FR1, bw_index) * 1000;
int band_size_khz = get_supported_bw_mhz(nr_band > 256 ? FR2 : FR1, scs, nb_ul) * 1000;
float limit = frame_type == TDD ? 0.04 : 0.03;
float rel_bw = (float) (2 * band_size_khz) / (float) (nr_bandtable[index].ul_max + nr_bandtable[index].ul_min);
return rel_bw <= limit;

Some files were not shown because too many files have changed in this diff Show More