Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
zzha zzha
OpenXG-RAN
Commits
a4300281
Commit
a4300281
authored
Jul 15, 2019
by
laurent
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' of
https://gitlab.eurecom.fr/oai/openairinterface5g
into fs6
parents
6b662a3e
0de5ff48
Changes
23
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
1360 additions
and
336 deletions
+1360
-336
ci-scripts/Jenkinsfile-gitlab
ci-scripts/Jenkinsfile-gitlab
+20
-1
ci-scripts/Jenkinsfile-tmp-multi-enb
ci-scripts/Jenkinsfile-tmp-multi-enb
+282
-0
ci-scripts/conf_files/rcc.band38.tm1.50PRB.multi.rru.conf
ci-scripts/conf_files/rcc.band38.tm1.50PRB.multi.rru.conf
+240
-0
ci-scripts/conf_files/rru.band38.tm1.master.conf
ci-scripts/conf_files/rru.band38.tm1.master.conf
+46
-0
ci-scripts/conf_files/rru.band38.tm1.slave.conf
ci-scripts/conf_files/rru.band38.tm1.slave.conf
+46
-0
ci-scripts/doGitLabMerge.sh
ci-scripts/doGitLabMerge.sh
+10
-1
ci-scripts/main.py
ci-scripts/main.py
+367
-147
ci-scripts/xml_files/multi_rru_band38_build.xml
ci-scripts/xml_files/multi_rru_band38_build.xml
+84
-0
ci-scripts/xml_files/multi_rru_band38_full_termination.xml
ci-scripts/xml_files/multi_rru_band38_full_termination.xml
+53
-0
ci-scripts/xml_files/multi_rru_band38_test_10mhz_tm1.xml
ci-scripts/xml_files/multi_rru_band38_test_10mhz_tm1.xml
+86
-0
common/utils/T/tracer/macpdu2wireshark.c
common/utils/T/tracer/macpdu2wireshark.c
+19
-75
openair1/PHY/LTE_TRANSPORT/dci.c
openair1/PHY/LTE_TRANSPORT/dci.c
+2
-18
openair1/SCHED/phy_procedures_lte_eNb.c
openair1/SCHED/phy_procedures_lte_eNb.c
+64
-68
openair1/SCHED/ru_procedures.c
openair1/SCHED/ru_procedures.c
+1
-1
openair2/COMMON/x2ap_messages_types.h
openair2/COMMON/x2ap_messages_types.h
+1
-1
openair2/RRC/LTE/rrc_eNB.c
openair2/RRC/LTE/rrc_eNB.c
+6
-2
openair2/RRC/LTE/rrc_proto.h
openair2/RRC/LTE/rrc_proto.h
+5
-3
openair2/X2AP/x2ap_eNB_handler.c
openair2/X2AP/x2ap_eNB_handler.c
+2
-2
openair3/SCTP/sctp_default_values.h
openair3/SCTP/sctp_default_values.h
+1
-1
openair3/SCTP/sctp_eNB_task.c
openair3/SCTP/sctp_eNB_task.c
+5
-0
targets/ARCH/BLADERF/USERSPACE/LIB/bladerf_lib.h
targets/ARCH/BLADERF/USERSPACE/LIB/bladerf_lib.h
+1
-1
targets/RT/USER/lte-enb.c
targets/RT/USER/lte-enb.c
+6
-9
targets/RT/USER/lte-ru.c
targets/RT/USER/lte-ru.c
+13
-6
No files found.
ci-scripts/Jenkinsfile-gitlab
View file @
a4300281
...
...
@@ -44,7 +44,7 @@ pipeline {
disableConcurrentBuilds
()
timestamps
()
gitLabConnection
(
'OAI GitLab'
)
gitlabBuilds
(
builds:
[
"Build eNb-USRP"
,
"Build basic-sim"
,
"Build phy-sim"
,
"Build eNb-ethernet"
,
"Build UE-ethernet"
,
"Analysis with cppcheck"
,
"Test phy-sim"
,
"Test basic-sim"
,
"Test L2-sim"
,
"Test-Mono-FDD-Band7"
,
"Test-Mono-TDD-Band40"
,
"Test-IF4p5-FDD-Band7"
,
"Test-IF4p5-TDD-Band40"
,
"Test-Mono-FDD-Band13"
])
gitlabBuilds
(
builds:
[
"Build eNb-USRP"
,
"Build basic-sim"
,
"Build phy-sim"
,
"Build eNb-ethernet"
,
"Build UE-ethernet"
,
"Analysis with cppcheck"
,
"Test phy-sim"
,
"Test basic-sim"
,
"Test L2-sim"
,
"Test-Mono-FDD-Band7"
,
"Test-Mono-TDD-Band40"
,
"Test-IF4p5-FDD-Band7"
,
"Test-IF4p5-TDD-Band40"
,
"Test-Mono-FDD-Band13"
,
"Test-IF4p5-TDD-Band38-Multi-RRU"
])
ansiColor
(
'xterm'
)
}
...
...
@@ -481,6 +481,25 @@ pipeline {
}
}
}
stage
(
"Test IF4p5 - TDD - Band 38 - B210 - MultiRRU"
)
{
steps
{
script
{
triggerSlaveJob
(
'eNB-CI-IF4p5-TDD-Band38-MultiRRU-B210'
,
'Test-IF4p5-TDD-Band38-Multi-RRU'
)
}
}
post
{
always
{
script
{
finalizeSlaveJob
(
'eNB-CI-IF4p5-TDD-Band38-MultiRRU-B210'
)
}
}
failure
{
script
{
currentBuild
.
result
=
'FAILURE'
}
}
}
}
stage
(
"Test IF4p5 - TDD - Band 40 - B210"
)
{
steps
{
script
{
...
...
ci-scripts/Jenkinsfile-tmp-multi-enb
0 → 100644
View file @
a4300281
This diff is collapsed.
Click to expand it.
ci-scripts/conf_files/rcc.band38.tm1.50PRB.multi.rru.conf
0 → 100644
View file @
a4300281
Active_eNBs
= (
"eNB_Eurecom_LTEBox"
);
# Asn1_verbosity, choice in: none, info, annoying
Asn1_verbosity
=
"none"
;
eNBs
=
(
{
# real_time choice in {hard, rt-preempt, no}
real_time
=
"no"
;
//////////
Identification
parameters
:
eNB_ID
=
0
xe00
;
cell_type
=
"CELL_MACRO_ENB"
;
eNB_name
=
"eNB_Eurecom_LTEBox"
;
//
Tracking
area
code
,
0
x0000
and
0
xfffe
are
reserved
values
tracking_area_code
=
1
;
plmn_list
= ( {
mcc
=
208
;
mnc
=
92
;
mnc_length
=
2
; } );
tr_s_preference
=
"local_mac"
//////////
Physical
parameters
:
component_carriers
= (
{
node_function
=
"NGFI_RCC_IF4p5"
;
node_timing
=
"synch_to_ext_device"
;
node_synch_ref
=
0
;
frame_type
=
"TDD"
;
tdd_config
=
1
;
tdd_config_s
=
0
;
prefix_type
=
"NORMAL"
;
eutra_band
=
38
;
downlink_frequency
=
2580000000
L
;
uplink_frequency_offset
=
0
;
Nid_cell
=
0
;
N_RB_DL
=
50
;
#25;
Nid_cell_mbsfn
=
0
;
nb_antenna_ports
=
1
;
nb_antennas_tx
=
1
;
nb_antennas_rx
=
1
;
tx_gain
=
90
;
rx_gain
=
125
;
pbch_repetition
=
"FALSE"
;
prach_root
=
0
;
prach_config_index
=
0
;
prach_high_speed
=
"DISABLE"
;
prach_zero_correlation
=
1
;
prach_freq_offset
=
2
;
pucch_delta_shift
=
1
;
pucch_nRB_CQI
=
0
;
pucch_nCS_AN
=
0
;
pucch_n1_AN
=
32
;
pdsch_referenceSignalPower
= -
27
;
pdsch_p_b
=
0
;
pusch_n_SB
=
1
;
pusch_enable64QAM
=
"DISABLE"
;
pusch_hoppingMode
=
"interSubFrame"
;
pusch_hoppingOffset
=
0
;
pusch_groupHoppingEnabled
=
"ENABLE"
;
pusch_groupAssignment
=
0
;
pusch_sequenceHoppingEnabled
=
"DISABLE"
;
pusch_nDMRS1
=
1
;
phich_duration
=
"NORMAL"
;
phich_resource
=
"ONESIXTH"
;
srs_enable
=
"DISABLE"
;
/*
srs_BandwidthConfig
=;
srs_SubframeConfig
=;
srs_ackNackST
=;
srs_MaxUpPts
=;*/
pusch_p0_Nominal
= -
104
;
#-96;
pusch_alpha
=
"AL1"
;
pucch_p0_Nominal
= -
96
;
#-104;
msg3_delta_Preamble
=
6
;
pucch_deltaF_Format1
=
"deltaF2"
;
pucch_deltaF_Format1b
=
"deltaF3"
;
pucch_deltaF_Format2
=
"deltaF0"
;
pucch_deltaF_Format2a
=
"deltaF0"
;
pucch_deltaF_Format2b
=
"deltaF0"
;
rach_numberOfRA_Preambles
=
64
;
rach_preamblesGroupAConfig
=
"DISABLE"
;
/*
rach_sizeOfRA_PreamblesGroupA
= ;
rach_messageSizeGroupA
= ;
rach_messagePowerOffsetGroupB
= ;
*/
rach_powerRampingStep
=
4
;
rach_preambleInitialReceivedTargetPower
= -
108
;
rach_preambleTransMax
=
10
;
rach_raResponseWindowSize
=
10
;
rach_macContentionResolutionTimer
=
48
;
rach_maxHARQ_Msg3Tx
=
4
;
pcch_default_PagingCycle
=
128
;
pcch_nB
=
"oneT"
;
bcch_modificationPeriodCoeff
=
2
;
ue_TimersAndConstants_t300
=
1000
;
ue_TimersAndConstants_t301
=
1000
;
ue_TimersAndConstants_t310
=
1000
;
ue_TimersAndConstants_t311
=
10000
;
ue_TimersAndConstants_n310
=
20
;
ue_TimersAndConstants_n311
=
1
;
ue_TransmissionMode
=
1
;
}
);
srb1_parameters
:
{
# timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500]
timer_poll_retransmit
=
80
;
# timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200]
timer_reordering
=
35
;
# timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500]
timer_status_prohibit
=
0
;
# poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)]
poll_pdu
=
4
;
# poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)]
poll_byte
=
99999
;
# max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32]
max_retx_threshold
=
4
;
}
# ------- SCTP definitions
SCTP
:
{
# Number of streams to use in input/output
SCTP_INSTREAMS
=
2
;
SCTP_OUTSTREAMS
=
2
;
};
//////////
MME
parameters
:
mme_ip_address
= ( {
ipv4
=
"CI_MME_IP_ADDR"
;
ipv6
=
"192:168:30::17"
;
active
=
"yes"
;
preference
=
"ipv4"
;
}
);
NETWORK_INTERFACES
:
{
ENB_INTERFACE_NAME_FOR_S1_MME
=
"enp129s0f0"
;
ENB_IPV4_ADDRESS_FOR_S1_MME
=
"CI_ENB_IP_ADDR"
;
ENB_INTERFACE_NAME_FOR_S1U
=
"enp129s0f0"
;
ENB_IPV4_ADDRESS_FOR_S1U
=
"CI_ENB_IP_ADDR"
;
#"127.0.0.4/24";
ENB_PORT_FOR_S1U
=
2152
;
# Spec 2152\
ENB_IPV4_ADDRESS_FOR_X2C
=
"CI_ENB_IP_ADDR"
;
ENB_PORT_FOR_X2C
=
36422
;
# Spec 36422
};
}
);
MACRLCs
= (
{
num_cc
=
1
;
tr_s_preference
=
"local_L1"
;
tr_n_preference
=
"local_RRC"
;
}
);
L1s
= (
{
num_cc
=
1
;
tr_n_preference
=
"local_mac"
;
}
);
RUs
= (
{
local_if_name
=
"enp129s0f0"
;
local_address
=
"CI_ENB_IP_ADDR"
;
remote_address
=
"CI_RRU1_IP_ADDR"
;
local_portc
=
50002
;
remote_portc
=
50002
;
local_portd
=
50003
;
remote_portd
=
50003
;
local_rf
=
"no"
tr_preference
=
"udp_if4p5"
nb_tx
=
1
nb_rx
=
1
att_tx
=
20
att_rx
=
20
;
eNB_instances
= [
0
];
is_slave
=
"no"
;
},
{
local_if_name
=
"enp129s0f0"
;
local_address
=
"CI_ENB_IP_ADDR"
;
remote_address
=
"CI_RRU2_IP_ADDR"
;
local_portc
=
50010
;
remote_portc
=
50010
;
local_portd
=
50011
;
remote_portd
=
50011
;
local_rf
=
"no"
tr_preference
=
"udp_if4p5"
nb_tx
=
1
nb_rx
=
1
att_tx
=
20
att_rx
=
20
;
eNB_instances
= [
0
];
is_slave
=
"yes"
;
}
);
THREAD_STRUCT
= (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config
=
"PARALLEL_RU_L1_TRX_SPLIT"
;
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config
=
"WORKER_ENABLE"
;
}
);
log_config
= {
global_log_level
=
"info"
;
global_log_verbosity
=
"medium"
;
hw_log_level
=
"info"
;
hw_log_verbosity
=
"medium"
;
phy_log_level
=
"info"
;
phy_log_verbosity
=
"medium"
;
mac_log_level
=
"info"
;
mac_log_verbosity
=
"high"
;
rlc_log_level
=
"info"
;
rlc_log_verbosity
=
"medium"
;
pdcp_log_level
=
"info"
;
pdcp_log_verbosity
=
"medium"
;
rrc_log_level
=
"info"
;
rrc_log_verbosity
=
"medium"
;
};
ci-scripts/conf_files/rru.band38.tm1.master.conf
0 → 100644
View file @
a4300281
RUs
= (
{
local_if_name
=
"enp1s0"
;
remote_address
=
"CI_RCC_IP_ADDR"
;
local_address
=
"CI_ENB_IP_ADDR"
;
local_portc
=
50002
;
remote_portc
=
50002
;
local_portd
=
50003
;
remote_portd
=
50003
;
local_rf
=
"yes"
tr_preference
=
"udp_if4p5"
;
nb_tx
=
1
;
nb_rx
=
1
;
max_pdschReferenceSignalPower
= -
12
;
max_rxgain
=
100
;
bands
= [
38
];
is_slave
=
"no"
;
}
);
THREAD_STRUCT
= (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config
=
"PARALLEL_SINGLE_THREAD"
;
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config
=
"WORKER_ENABLE"
;
}
);
log_config
= {
global_log_level
=
"info"
;
global_log_verbosity
=
"medium"
;
hw_log_level
=
"info"
;
hw_log_verbosity
=
"medium"
;
phy_log_level
=
"info"
;
phy_log_verbosity
=
"medium"
;
mac_log_level
=
"info"
;
mac_log_verbosity
=
"high"
;
rlc_log_level
=
"info"
;
rlc_log_verbosity
=
"medium"
;
pdcp_log_level
=
"info"
;
pdcp_log_verbosity
=
"medium"
;
rrc_log_level
=
"info"
;
rrc_log_verbosity
=
"medium"
;
};
ci-scripts/conf_files/rru.band38.tm1.slave.conf
0 → 100644
View file @
a4300281
RUs
= (
{
local_if_name
=
"enp1s0"
;
remote_address
=
"CI_RCC_IP_ADDR"
;
local_address
=
"CI_ENB_IP_ADDR"
;
local_portc
=
50010
;
remote_portc
=
50010
;
local_portd
=
50011
;
remote_portd
=
50011
;
local_rf
=
"yes"
tr_preference
=
"udp_if4p5"
;
nb_tx
=
1
;
nb_rx
=
1
;
max_pdschReferenceSignalPower
= -
12
;
max_rxgain
=
100
;
bands
= [
38
];
is_slave
=
"yes"
;
}
);
THREAD_STRUCT
= (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config
=
"PARALLEL_SINGLE_THREAD"
;
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config
=
"WORKER_ENABLE"
;
}
);
log_config
= {
global_log_level
=
"info"
;
global_log_verbosity
=
"medium"
;
hw_log_level
=
"info"
;
hw_log_verbosity
=
"medium"
;
phy_log_level
=
"info"
;
phy_log_verbosity
=
"medium"
;
mac_log_level
=
"info"
;
mac_log_verbosity
=
"high"
;
rlc_log_level
=
"info"
;
rlc_log_verbosity
=
"medium"
;
pdcp_log_level
=
"info"
;
pdcp_log_verbosity
=
"medium"
;
rrc_log_level
=
"info"
;
rrc_log_verbosity
=
"medium"
;
};
ci-scripts/doGitLabMerge.sh
View file @
a4300281
...
...
@@ -125,7 +125,16 @@ fi
git config user.email
"jenkins@openairinterface.org"
git config user.name
"OAI Jenkins"
git checkout
-f
$SOURCE_COMMIT_ID
git checkout
-f
$SOURCE_COMMIT_ID
>
checkout.txt 2>&1
STATUS
=
`
egrep
-c
"fatal: reference is not a tree"
checkout.txt
`
rm
-f
checkout.txt
if
[
$STATUS
-ne
0
]
then
echo
"fatal: reference is not a tree -->
$SOURCE_COMMIT_ID
"
STATUS
=
-1
exit
$STATUS
fi
git log
-n1
--pretty
=
format:
\"
%s
\"
>
.git/CI_COMMIT_MSG
git merge
--ff
$TARGET_COMMIT_ID
-m
"Temporary merge for CI"
...
...
ci-scripts/main.py
View file @
a4300281
This diff is collapsed.
Click to expand it.
ci-scripts/xml_files/multi_rru_band38_build.xml
0 → 100644
View file @
a4300281
<!--
Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The OpenAirInterface Software Alliance licenses this file to You under
the OAI Public License, Version 1.1 (the "License"); you may not use this file
except in compliance with the License.
You may obtain a copy of the License at
http://www.openairinterface.org/?page_id=698
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
For more information about the OpenAirInterface (OAI) Software Alliance:
contact@openairinterface.org
-->
<testCaseList>
<htmlTabRef>
build-tab
</htmlTabRef>
<htmlTabName>
Build
</htmlTabName>
<htmlTabIcon>
wrench
</htmlTabIcon>
<TestCaseRequestedList>
010101 010102 010103
000101 000102 000103
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase
id=
"010101"
>
<class>
Build_eNB
</class>
<desc>
Build RCC
</desc>
<Build_eNB_args>
-w USRP -c --eNB
</Build_eNB_args>
<eNB_instance>
0
</eNB_instance>
<eNB_serverId>
0
</eNB_serverId>
<backgroundBuild>
True
</backgroundBuild>
</testCase>
<testCase
id=
"000101"
>
<class>
WaitEndBuild_eNB
</class>
<desc>
Wait for end of Build RCC
</desc>
<Build_eNB_args>
-w USRP -c --eNB
</Build_eNB_args>
<eNB_instance>
0
</eNB_instance>
<eNB_serverId>
0
</eNB_serverId>
</testCase>
<testCase
id=
"010102"
>
<class>
Build_eNB
</class>
<desc>
Build Master RRU
</desc>
<Build_eNB_args>
-w USRP -c --eNB
</Build_eNB_args>
<eNB_instance>
1
</eNB_instance>
<eNB_serverId>
1
</eNB_serverId>
<backgroundBuild>
True
</backgroundBuild>
</testCase>
<testCase
id=
"000102"
>
<class>
WaitEndBuild_eNB
</class>
<desc>
Wait for end of Build Master RRU
</desc>
<Build_eNB_args>
-w USRP -c --eNB
</Build_eNB_args>
<eNB_instance>
1
</eNB_instance>
<eNB_serverId>
1
</eNB_serverId>
</testCase>
<testCase
id=
"010103"
>
<class>
Build_eNB
</class>
<desc>
Build Slave RRU
</desc>
<Build_eNB_args>
-w USRP -c --eNB
</Build_eNB_args>
<eNB_instance>
2
</eNB_instance>
<eNB_serverId>
2
</eNB_serverId>
<backgroundBuild>
True
</backgroundBuild>
</testCase>
<testCase
id=
"000103"
>
<class>
WaitEndBuild_eNB
</class>
<desc>
Wait for end of Build Slave RRU
</desc>
<Build_eNB_args>
-w USRP -c --eNB
</Build_eNB_args>
<eNB_instance>
2
</eNB_instance>
<eNB_serverId>
2
</eNB_serverId>
</testCase>
</testCaseList>
ci-scripts/xml_files/multi_rru_band38_full_termination.xml
0 → 100644
View file @
a4300281
<!--
Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The OpenAirInterface Software Alliance licenses this file to You under
the OAI Public License, Version 1.1 (the "License"); you may not use this file
except in compliance with the License.
You may obtain a copy of the License at
http://www.openairinterface.org/?page_id=698
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
For more information about the OpenAirInterface (OAI) Software Alliance:
contact@openairinterface.org
-->
<testCaseList>
<htmlTabRef>
test-full-termintation
</htmlTabRef>
<htmlTabName>
Test-RCC-RRUs-Termination
</htmlTabName>
<htmlTabIcon>
off
</htmlTabIcon>
<TestCaseRequestedList>
030211 030212 030213
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase
id=
"030211"
>
<class>
Terminate_eNB
</class>
<desc>
Terminate RCC
</desc>
<eNB_instance>
0
</eNB_instance>
<eNB_serverId>
0
</eNB_serverId>
</testCase>
<testCase
id=
"030212"
>
<class>
Terminate_eNB
</class>
<desc>
Terminate Master RRU
</desc>
<eNB_instance>
1
</eNB_instance>
<eNB_serverId>
1
</eNB_serverId>
</testCase>
<testCase
id=
"030213"
>
<class>
Terminate_eNB
</class>
<desc>
Terminate Slave RRU
</desc>
<eNB_instance>
2
</eNB_instance>
<eNB_serverId>
2
</eNB_serverId>
</testCase>
</testCaseList>
ci-scripts/xml_files/multi_rru_band38_test_10mhz_tm1.xml
0 → 100644
View file @
a4300281
<!--
Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The OpenAirInterface Software Alliance licenses this file to You under
the OAI Public License, Version 1.1 (the "License"); you may not use this file
except in compliance with the License.
You may obtain a copy of the License at
http://www.openairinterface.org/?page_id=698
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
For more information about the OpenAirInterface (OAI) Software Alliance:
contact@openairinterface.org
-->
<testCaseList>
<htmlTabRef>
test-multi-rru-10
</htmlTabRef>
<htmlTabName>
Test-Multi-RRU-10MHz
</htmlTabName>
<htmlTabIcon>
tasks
</htmlTabIcon>
<TestCaseRequestedList>
030211 030212 030213
030111 030112 030113
000001
030211 030212 030213
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase
id=
"000001"
>
<class>
IdleSleep
</class>
<desc>
Sleep
</desc>
<idle_sleep_time_in_sec>
60
</idle_sleep_time_in_sec>
</testCase>
<testCase
id=
"030111"
>
<class>
Initialize_eNB
</class>
<desc>
Initialize RCC (TDD/Band38/10MHz)
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/rcc.band38.tm1.50PRB.multi.rru.conf --noS1
</Initialize_eNB_args>
<eNB_instance>
0
</eNB_instance>
<eNB_serverId>
0
</eNB_serverId>
</testCase>
<testCase
id=
"030112"
>
<class>
Initialize_eNB
</class>
<desc>
Initialize Master RRU (TDD/Band38/10MHz)
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/rru.band38.tm1.master.conf --noS1
</Initialize_eNB_args>
<eNB_instance>
1
</eNB_instance>
<eNB_serverId>
1
</eNB_serverId>
</testCase>
<testCase
id=
"030113"
>
<class>
Initialize_eNB
</class>
<desc>
Initialize Slave RRU (TDD/Band38/10MHz)
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/rru.band38.tm1.slave.conf --noS1
</Initialize_eNB_args>
<eNB_instance>
2
</eNB_instance>
<eNB_serverId>
2
</eNB_serverId>
</testCase>
<testCase
id=
"030211"
>
<class>
Terminate_eNB
</class>
<desc>
Terminate RCC
</desc>
<eNB_instance>
0
</eNB_instance>
<eNB_serverId>
0
</eNB_serverId>
</testCase>
<testCase
id=
"030212"
>
<class>
Terminate_eNB
</class>
<desc>
Terminate Master RRU
</desc>
<eNB_instance>
1
</eNB_instance>
<eNB_serverId>
1
</eNB_serverId>
</testCase>
<testCase
id=
"030213"
>
<class>
Terminate_eNB
</class>
<desc>
Terminate Slave RRU
</desc>
<eNB_instance>
2
</eNB_instance>
<eNB_serverId>
2
</eNB_serverId>
</testCase>
</testCaseList>
common/utils/T/tracer/macpdu2wireshark.c
View file @
a4300281
...
...
@@ -52,6 +52,7 @@ typedef struct {
int
max_mib
;
int
max_sib
;
int
live
;
int
no_bind
;
/* runtime vars */
int
cur_mib
;
int
cur_sib
;
...
...
@@ -264,9 +265,11 @@ void *receiver(void *_d) {
abort
();
}
if
(
bind
(
s
,
(
struct
sockaddr
*
)
&
d
->
to
,
sizeof
(
struct
sockaddr_in
))
==
-
1
)
{
perror
(
"bind"
);
abort
();
if
(
d
->
no_bind
==
0
)
{
if
(
bind
(
s
,
(
struct
sockaddr
*
)
&
d
->
to
,
sizeof
(
struct
sockaddr_in
))
==
-
1
)
{
perror
(
"bind"
);
abort
();
}
}
while
(
1
)
{
...
...
@@ -290,6 +293,7 @@ void usage(void) {
" -live run live
\n
"
" -live-ip <IP address> tracee's IP address (default %s)
\n
"
" -live-port <port> tracee's port (default %d)
\n
"
" -no-bind don't bind to IP address (for remote logging)
\n
"
"-i and -live are mutually exclusive options. One of them must be provided
\n
"
"but not both.
\n
"
,
DEFAULT_IP
,
...
...
@@ -318,78 +322,18 @@ int main(int n, char **v) {
for
(
i
=
1
;
i
<
n
;
i
++
)
{
if
(
!
strcmp
(
v
[
i
],
"-h"
)
||
!
strcmp
(
v
[
i
],
"--help"
))
usage
();
if
(
!
strcmp
(
v
[
i
],
"-d"
))
{
if
(
i
>
n
-
2
)
usage
();
database_filename
=
v
[
++
i
];
continue
;
}
if
(
!
strcmp
(
v
[
i
],
"-i"
))
{
if
(
i
>
n
-
2
)
usage
();
input_filename
=
v
[
++
i
];
continue
;
}
if
(
!
strcmp
(
v
[
i
],
"-ip"
))
{
if
(
i
>
n
-
2
)
usage
();
ip
=
v
[
++
i
];
continue
;
}
if
(
!
strcmp
(
v
[
i
],
"-p"
))
{
if
(
i
>
n
-
2
)
usage
();
port
=
atoi
(
v
[
++
i
]);
continue
;
}
if
(
!
strcmp
(
v
[
i
],
"-no-mib"
))
{
d
.
no_mib
=
1
;
continue
;
}
if
(
!
strcmp
(
v
[
i
],
"-no-sib"
))
{
d
.
no_sib
=
1
;
continue
;
}
if
(
!
strcmp
(
v
[
i
],
"-max-mib"
))
{
if
(
i
>
n
-
2
)
usage
();
d
.
max_mib
=
atoi
(
v
[
++
i
]);
continue
;
}
if
(
!
strcmp
(
v
[
i
],
"-max-sib"
))
{
if
(
i
>
n
-
2
)
usage
();
d
.
max_sib
=
atoi
(
v
[
++
i
]);
continue
;
}
if
(
!
strcmp
(
v
[
i
],
"-live"
))
{
live
=
1
;
continue
;
}
if
(
!
strcmp
(
v
[
i
],
"-live-ip"
))
{
if
(
i
>
n
-
2
)
usage
();
live_ip
=
v
[
++
i
];
continue
;
}
if
(
!
strcmp
(
v
[
i
],
"-live-port"
))
{
if
(
i
>
n
-
2
)
usage
();
live_port
=
atoi
(
v
[
++
i
]);
continue
;
}
if
(
!
strcmp
(
v
[
i
],
"-d"
))
{
if
(
i
>
n
-
2
)
usage
();
database_filename
=
v
[
++
i
];
continue
;
}
if
(
!
strcmp
(
v
[
i
],
"-i"
))
{
if
(
i
>
n
-
2
)
usage
();
input_filename
=
v
[
++
i
];
continue
;
}
if
(
!
strcmp
(
v
[
i
],
"-ip"
))
{
if
(
i
>
n
-
2
)
usage
();
ip
=
v
[
++
i
];
continue
;
}
if
(
!
strcmp
(
v
[
i
],
"-p"
))
{
if
(
i
>
n
-
2
)
usage
();
port
=
atoi
(
v
[
++
i
]);
continue
;
}
if
(
!
strcmp
(
v
[
i
],
"-no-mib"
))
{
d
.
no_mib
=
1
;
continue
;
}
if
(
!
strcmp
(
v
[
i
],
"-no-sib"
))
{
d
.
no_sib
=
1
;
continue
;
}
if
(
!
strcmp
(
v
[
i
],
"-max-mib"
))
{
if
(
i
>
n
-
2
)
usage
();
d
.
max_mib
=
atoi
(
v
[
++
i
]);
continue
;
}
if
(
!
strcmp
(
v
[
i
],
"-max-sib"
))
{
if
(
i
>
n
-
2
)
usage
();
d
.
max_sib
=
atoi
(
v
[
++
i
]);
continue
;
}
if
(
!
strcmp
(
v
[
i
],
"-live"
))
{
live
=
1
;
continue
;
}
if
(
!
strcmp
(
v
[
i
],
"-live-ip"
))
{
if
(
i
>
n
-
2
)
usage
();
live_ip
=
v
[
++
i
];
continue
;
}
if
(
!
strcmp
(
v
[
i
],
"-live-port"
))
{
if
(
i
>
n
-
2
)
usage
();
live_port
=
atoi
(
v
[
++
i
]);
continue
;
}
if
(
!
strcmp
(
v
[
i
],
"-no-bind"
))
{
d
.
no_bind
=
1
;
continue
;
}
usage
();
}
...
...
openair1/PHY/LTE_TRANSPORT/dci.c
View file @
a4300281
...
...
@@ -291,24 +291,8 @@ uint8_t generate_dci_top(uint8_t num_pdcch_symbols,
y
[
0
]
=
&
yseq0
[
0
];
y
[
1
]
=
&
yseq1
[
0
];
if
(
IS_SOFTMODEM_BASICSIM
)
{
/* this should be the normal case
* but it has to be validated for all the various cases
* so let's just do it for the basic simulator
*/
// memset(e, 2, DCI_BITS_MAX);
}
else
{
// reset all bits to <NIL>, here we set <NIL> elements as 2
// memset(e, 2, DCI_BITS_MAX);
// here we interpret NIL as a random QPSK sequence. That makes power estimation easier.
for
(
i
=
0
;
i
<
DCI_BITS_MAX
;
i
++
)
e
[
i
]
=
taus
()
&
1
;
/* clear all bits, the above code may generate too much false detections
* (not sure about this, to be checked somehow)
*/
//memset(e, 0, DCI_BITS_MAX);
}
/* BASIC_SIMULATOR */
/* reset all bits to <NIL>, here we set <NIL> elements as 2 */
memset
(
e
,
2
,
DCI_BITS_MAX
);
e_ptr
=
e
;
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_GENERATE_DCI0
,
1
);
...
...
openair1/SCHED/phy_procedures_lte_eNb.c
View file @
a4300281
...
...
@@ -230,13 +230,11 @@ void common_signal_procedures (PHY_VARS_eNB *eNB,int frame, int subframe) {
void
pd
sch_procedures
(
PHY_VARS_eNB
*
eNB
,
bool
dl
sch_procedures
(
PHY_VARS_eNB
*
eNB
,
L1_rxtx_proc_t
*
proc
,
int
harq_pid
,
LTE_eNB_DLSCH_t
*
dlsch
,
LTE_eNB_DLSCH_t
*
dlsch1
,
LTE_eNB_UE_stats
*
ue_stats
,
int
ra_flag
)
{
LTE_eNB_UE_stats
*
ue_stats
)
{
int
frame
=
proc
->
frame_tx
;
int
subframe
=
proc
->
subframe_tx
;
LTE_DL_eNB_HARQ_t
*
dlsch_harq
=
dlsch
->
harq_processes
[
harq_pid
];
...
...
@@ -265,27 +263,6 @@ void pdsch_procedures(PHY_VARS_eNB *eNB,
dlsch_harq
->
round
);
}
MSC_LOG_TX_MESSAGE
(
MSC_PHY_ENB
,
MSC_PHY_UE
,
NULL
,
0
,
"%05u:%02u PDSCH/DLSCH input size = %"
PRIu16
", G %d, nb_rb %"
PRIu16
", TBS %"
PRIu16
", pmi_alloc %"
PRIx16
", rv %"
PRIu8
" (round %"
PRIu8
")"
,
frame
,
subframe
,
dlsch_harq
->
TBS
/
8
,
get_G
(
fp
,
dlsch_harq
->
nb_rb
,
dlsch_harq
->
rb_alloc
,
dlsch_harq
->
Qm
,
dlsch_harq
->
Nl
,
dlsch_harq
->
pdsch_start
,
frame
,
subframe
,
dlsch_harq
->
mimo_mode
==
TM7
?
7
:
0
),
dlsch_harq
->
nb_rb
,
dlsch_harq
->
TBS
,
pmi2hex_2Ar1
(
dlsch_harq
->
pmi_alloc
),
dlsch_harq
->
rvidx
,
dlsch_harq
->
round
);
if
(
ue_stats
)
ue_stats
->
dlsch_sliding_cnt
++
;
if
(
dlsch_harq
->
round
==
0
)
{
...
...
@@ -300,15 +277,17 @@ void pdsch_procedures(PHY_VARS_eNB *eNB,
#endif
}
if
(
dlsch
->
rnti
!=
0xffff
)
LOG_D
(
PHY
,
"Generating DLSCH/PDSCH pdu:%p pdsch_start:%d frame:%d subframe:%d nb_rb:%d rb_alloc:%d Qm:%d Nl:%d round:%d
\n
"
,
dlsch_harq
->
pdu
,
dlsch_harq
->
pdsch_start
,
frame
,
subframe
,
dlsch_harq
->
nb_rb
,
dlsch_harq
->
rb_alloc
[
0
],
dlsch_harq
->
Qm
,
dlsch_harq
->
Nl
,
dlsch_harq
->
round
);
if
(
dlsch
->
rnti
!=
0xffff
)
LOG_D
(
PHY
,
"Generating DLSCH/PDSCH pdu:%p pdsch_start:%d frame:%d subframe:%d nb_rb:%d rb_alloc:%d Qm:%d Nl:%d round:%d
\n
"
,
dlsch_harq
->
pdu
,
dlsch_harq
->
pdsch_start
,
frame
,
subframe
,
dlsch_harq
->
nb_rb
,
dlsch_harq
->
rb_alloc
[
0
],
dlsch_harq
->
Qm
,
dlsch_harq
->
Nl
,
dlsch_harq
->
round
);
// 36-212
if
(
NFAPI_MODE
==
NFAPI_MONOLITHIC
||
NFAPI_MODE
==
NFAPI_MODE_PNF
)
{
// monolthic OR PNF - do not need turbo encoding on VNF
if
(
dlsch_harq
->
pdu
==
NULL
)
{
LOG_E
(
PHY
,
"dlsch_harq->pdu == NULL SFN/SF:%04d%d dlsch[rnti:%x] dlsch_harq[pdu:%p pdsch_start:%d Qm:%d Nl:%d round:%d nb_rb:%d rb_alloc[0]:%d]
\n
"
,
frame
,
subframe
,
dlsch
->
rnti
,
dlsch_harq
->
pdu
,
dlsch_harq
->
pdsch_start
,
dlsch_harq
->
Qm
,
dlsch_harq
->
Nl
,
dlsch_harq
->
round
,
dlsch_harq
->
nb_rb
,
dlsch_harq
->
rb_alloc
[
0
]);
return
;
return
false
;
}
start_meas
(
&
eNB
->
dlsch_encoding_stats
);
...
...
@@ -330,44 +309,57 @@ void pdsch_procedures(PHY_VARS_eNB *eNB,
if
(
eNB
->
dlsch_encoding_stats
.
p_time
>
500
*
3000
&&
opp_enabled
==
1
)
{
print_meas_now
(
&
eNB
->
dlsch_encoding_stats
,
"total coding"
,
stderr
);
}
// 36-211
start_meas
(
&
eNB
->
dlsch_scrambling_stats
);
dlsch_scrambling
(
fp
,
0
,
dlsch
,
harq_pid
,
get_G
(
fp
,
dlsch_harq
->
nb_rb
,
dlsch_harq
->
rb_alloc
,
dlsch_harq
->
Qm
,
dlsch_harq
->
Nl
,
dlsch_harq
->
pdsch_start
,
frame
,
subframe
,
0
),
0
,
frame
,
subframe
<<
1
);
stop_meas
(
&
eNB
->
dlsch_scrambling_stats
);
start_meas
(
&
eNB
->
dlsch_modulation_stats
);
dlsch_modulation
(
eNB
,
eNB
->
common_vars
.
txdataF
,
AMP
,
frame
,
subframe
,
dlsch_harq
->
pdsch_start
,
dlsch
,
dlsch
->
ue_type
==
0
?
dlsch1
:
(
LTE_eNB_DLSCH_t
*
)
NULL
);
stop_meas
(
&
eNB
->
dlsch_modulation_stats
);
}
#ifdef PHY_TX_THREAD
dlsch
->
active
[
subframe
]
=
0
;
dlsch
->
active
[
subframe
]
=
0
;
#else
dlsch
->
active
=
0
;
dlsch
->
active
=
0
;
#endif
dlsch_harq
->
round
++
;
LOG_D
(
PHY
,
"Generating DLSCH/PDSCH dlsch_harq[round:%d]
\n
"
,
dlsch_harq
->
round
);
dlsch_harq
->
round
++
;
LOG_D
(
PHY
,
"Generated DLSCH dlsch_harq[round:%d]
\n
"
,
dlsch_harq
->
round
);
return
true
;
}
return
false
;
}
void
pdsch_procedures
(
PHY_VARS_eNB
*
eNB
,
L1_rxtx_proc_t
*
proc
,
int
harq_pid
,
LTE_eNB_DLSCH_t
*
dlsch
,
LTE_eNB_DLSCH_t
*
dlsch1
)
{
int
frame
=
proc
->
frame_tx
;
int
subframe
=
proc
->
subframe_tx
;
LTE_DL_eNB_HARQ_t
*
dlsch_harq
=
dlsch
->
harq_processes
[
harq_pid
];
LTE_DL_FRAME_PARMS
*
fp
=&
eNB
->
frame_parms
;
// 36-211
start_meas
(
&
eNB
->
dlsch_scrambling_stats
);
dlsch_scrambling
(
fp
,
0
,
dlsch
,
harq_pid
,
get_G
(
fp
,
dlsch_harq
->
nb_rb
,
dlsch_harq
->
rb_alloc
,
dlsch_harq
->
Qm
,
dlsch_harq
->
Nl
,
dlsch_harq
->
pdsch_start
,
frame
,
subframe
,
0
),
0
,
frame
,
subframe
<<
1
);
stop_meas
(
&
eNB
->
dlsch_scrambling_stats
);
start_meas
(
&
eNB
->
dlsch_modulation_stats
);
dlsch_modulation
(
eNB
,
eNB
->
common_vars
.
txdataF
,
AMP
,
frame
,
subframe
,
dlsch_harq
->
pdsch_start
,
dlsch
,
dlsch
->
ue_type
==
0
?
dlsch1
:
(
LTE_eNB_DLSCH_t
*
)
NULL
);
stop_meas
(
&
eNB
->
dlsch_modulation_stats
);
LOG_D
(
PHY
,
"Generated PDSCH dlsch_harq[round:%d]
\n
"
,
dlsch_harq
->
round
);
}
...
...
@@ -531,14 +523,18 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
dlsch0
->
harq_ids
[
frame
%
2
][
6
],
dlsch0
->
harq_ids
[
frame
%
2
][
7
]);
}
else
{
// generate pdsch
pdsch_procedures
(
eNB
,
if
(
dlsch_procedures
(
eNB
,
proc
,
harq_pid
,
dlsch0
,
dlsch1
,
&
eNB
->
UE_stats
[(
uint32_t
)
UE_id
],
0
);
&
eNB
->
UE_stats
[(
uint32_t
)
UE_id
]))
{
// if we generate dlsch, we must generate pdsch
pdsch_procedures
(
eNB
,
proc
,
harq_pid
,
dlsch0
,
dlsch1
);
}
}
}
else
if
((
dlsch0
)
&&
(
dlsch0
->
rnti
>
0
)
&&
#ifdef PHY_TX_THREAD
...
...
openair1/SCHED/ru_procedures.c
View file @
a4300281
...
...
@@ -100,7 +100,7 @@ void feptx0(RU_t *ru,int slot) {
*/
int
num_symb
=
7
;
if
(
subframe_select
(
fp
,
subframe
)
==
SF_S
)
num_symb
=
fp
->
dl_symbols_in_S_subframe
;
if
(
subframe_select
(
fp
,
subframe
)
==
SF_S
)
num_symb
=
fp
->
dl_symbols_in_S_subframe
+
1
;
if
(
ru
->
generate_dmrs_sync
==
1
&&
slot
==
0
&&
subframe
==
1
&&
aa
==
0
)
{
//int32_t dmrs[ru->frame_parms.ofdm_symbol_size*14] __attribute__((aligned(32)));
...
...
openair2/COMMON/x2ap_messages_types.h
View file @
a4300281
...
...
@@ -205,7 +205,7 @@ typedef struct x2ap_handover_req_s {
x2ap_lastvisitedcell_info_t
lastvisitedcell_info
;
uint8_t
rrc_buffer
[
1024
/* arbitrary, big enough */
];
uint8_t
rrc_buffer
[
8192
/* arbitrary, big enough */
];
int
rrc_buffer_size
;
int
target_assoc_id
;
...
...
openair2/RRC/LTE/rrc_eNB.c
View file @
a4300281
...
...
@@ -116,6 +116,10 @@ extern int rrc_eNB_process_security(const protocol_ctxt_t *const ctxt_pP, rrc_eN
extern
void
process_eNB_security_key
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
rrc_eNB_ue_context_t
*
const
ue_context_pP
,
uint8_t
*
security_key_pP
);
extern
int
derive_keNB_star
(
const
uint8_t
*
kenb_32
,
const
uint16_t
pci
,
const
uint32_t
earfcn_dl
,
const
bool
is_rel8_only
,
uint8_t
*
kenb_star
);
pthread_mutex_t
rrc_release_freelist
;
RRC_release_list_t
rrc_release_info
;
pthread_mutex_t
lock_ue_freelist
;
void
openair_rrc_on
(
const
protocol_ctxt_t
*
const
ctxt_pP
...
...
@@ -4610,10 +4614,10 @@ rrc_eNB_generate_HandoverPreparationInformation(
uint8_t
*
buffer
,
int
*
_size
)
{
memset
(
buffer
,
0
,
RRC_BUF_SIZE
);
memset
(
buffer
,
0
,
8192
);
char
*
ho_buf
=
(
char
*
)
buffer
;
int
ho_size
;
ho_size
=
do_HandoverPreparation
(
ho_buf
,
1024
,
ue_context_pP
->
ue_context
.
UE_Capability
,
ue_context_pP
->
ue_context
.
UE_Capability_size
);
ho_size
=
do_HandoverPreparation
(
ho_buf
,
8192
,
ue_context_pP
->
ue_context
.
UE_Capability
,
ue_context_pP
->
ue_context
.
UE_Capability_size
);
*
_size
=
ho_size
;
}
...
...
openair2/RRC/LTE/rrc_proto.h
View file @
a4300281
...
...
@@ -667,9 +667,11 @@ void openair_rrc_top_init_ue(
uint8_t
cba_group_active
,
uint8_t
HO_active
);
pthread_mutex_t
rrc_release_freelist
;
RRC_release_list_t
rrc_release_info
;
pthread_mutex_t
lock_ue_freelist
;
extern
pthread_mutex_t
rrc_release_freelist
;
extern
RRC_release_list_t
rrc_release_info
;
extern
pthread_mutex_t
lock_ue_freelist
;
void
remove_UE_from_freelist
(
module_id_t
mod_id
,
rnti_t
rnti
);
void
put_UE_in_freelist
(
module_id_t
mod_id
,
rnti_t
rnti
,
boolean_t
removeFlag
);
void
release_UE_in_freeList
(
module_id_t
mod_id
);
...
...
openair2/X2AP/x2ap_eNB_handler.c
View file @
a4300281
...
...
@@ -730,7 +730,7 @@ int x2ap_eNB_handle_handover_preparation (instance_t instance,
X2AP_RRC_Context_t
*
c
=
&
ie
->
value
.
choice
.
UE_ContextInformation
.
rRC_Context
;
if
(
c
->
size
>
1024
/* TODO: this is the size of rrc_buffer in struct x2ap_handover_req_ack_s
*/
)
if
(
c
->
size
>
8192
/* TODO: this is the size of rrc_buffer in struct x2ap_handover_req_s
*/
)
{
printf
(
"%s:%d: fatal: buffer too big
\n
"
,
__FILE__
,
__LINE__
);
abort
();
}
memcpy
(
X2AP_HANDOVER_REQ
(
msg
).
rrc_buffer
,
c
->
buf
,
c
->
size
);
...
...
@@ -821,7 +821,7 @@ int x2ap_eNB_handle_handover_response (instance_t instance,
X2AP_TargeteNBtoSource_eNBTransparentContainer_t
*
c
=
&
ie
->
value
.
choice
.
TargeteNBtoSource_eNBTransparentContainer
;
if
(
c
->
size
>
1024
/* TODO: this is the size of rrc_buffer in struct x2ap_handover_req_ack_s*/
)
if
(
c
->
size
>
1024
/* TODO: this is the size of rrc_buffer in struct x2ap_handover_req_ack_s
*/
)
{
printf
(
"%s:%d: fatal: buffer too big
\n
"
,
__FILE__
,
__LINE__
);
abort
();
}
memcpy
(
X2AP_HANDOVER_REQ_ACK
(
msg
).
rrc_buffer
,
c
->
buf
,
c
->
size
);
...
...
openair3/SCTP/sctp_default_values.h
View file @
a4300281
...
...
@@ -26,6 +26,6 @@
#define SCTP_IN_STREAMS (16)
#define SCTP_MAX_ATTEMPTS (2)
#define SCTP_TIMEOUT (5)
#define SCTP_RECV_BUFFER_SIZE (
1024
)
#define SCTP_RECV_BUFFER_SIZE (
8192
)
#endif
/* SCTP_DEFAULT_VALUES_H_ */
openair3/SCTP/sctp_eNB_task.c
View file @
a4300281
...
...
@@ -955,6 +955,11 @@ sctp_eNB_read_from_socket(
return
;
}
if
(
!
(
flags
&
MSG_EOR
))
{
SCTP_ERROR
(
"fatal: partial SCTP messages are not handled
\n
"
);
exit
(
1
);
}
if
(
flags
&
MSG_NOTIFICATION
)
{
union
sctp_notification
*
snp
;
snp
=
(
union
sctp_notification
*
)
buffer
;
...
...
targets/ARCH/BLADERF/USERSPACE/LIB/bladerf_lib.h
View file @
a4300281
...
...
@@ -27,7 +27,7 @@
#include <libbladeRF.h>
#include "common_lib.h"
#include "log.h"
#include "
LOG/
log.h"
/** @addtogroup _BLADERF_PHY_RF_INTERFACE_
* @{
...
...
targets/RT/USER/lte-enb.c
View file @
a4300281
...
...
@@ -635,15 +635,12 @@ void wakeup_prach_eNB(PHY_VARS_eNB *eNB,RU_t *ru,int frame,int subframe) {
AssertFatal
((
ret
=
pthread_mutex_lock
(
&
proc
->
mutex_RU_PRACH
))
==
0
,
"mutex_lock return %d
\n
"
,
ret
);
for
(
i
=
0
;
i
<
eNB
->
num_RU
;
i
++
)
{
if
(
ru
==
eNB
->
RU_list
[
i
])
{
LOG_D
(
PHY
,
"frame %d, subframe %d: RU %d for eNB %d signals PRACH (mask %x, num_RU %d)
\n
"
,
frame
,
subframe
,
i
,
eNB
->
Mod_id
,
proc
->
RU_mask_prach
,
eNB
->
num_RU
);
if
((
proc
->
RU_mask_prach
&
(
1
<<
i
))
>
0
)
LOG_E
(
PHY
,
"eNB %d frame %d, subframe %d : previous information (PRACH) from RU %d (num_RU %d, mask %x) has not been served yet!
\n
"
,
eNB
->
Mod_id
,
frame
,
subframe
,
ru
->
idx
,
eNB
->
num_RU
,
proc
->
RU_mask_prach
);
proc
->
RU_mask_prach
|=
(
1
<<
i
);
}
if
(
ru
==
eNB
->
RU_list
[
i
]
&&
eNB
->
RU_list
[
i
]
->
wait_cnt
==
0
)
{
LOG_D
(
PHY
,
"frame %d, subframe %d: RU %d for eNB %d signals PRACH (mask %x, num_RU %d)
\n
"
,
frame
,
subframe
,
i
,
eNB
->
Mod_id
,
proc
->
RU_mask_prach
,
eNB
->
num_RU
);
proc
->
RU_mask_prach
|=
(
1
<<
i
);
}
else
if
(
eNB
->
RU_list
[
i
]
->
state
==
RU_SYNC
||
eNB
->
RU_list
[
i
]
->
wait_cnt
>
0
)
{
proc
->
RU_mask_prach
|=
(
1
<<
i
);
}
}
if
(
proc
->
RU_mask_prach
!=
(
1
<<
eNB
->
num_RU
)
-
1
)
{
// not all RUs have provided their information so return
...
...
targets/RT/USER/lte-ru.c
View file @
a4300281
...
...
@@ -217,6 +217,7 @@ void fh_if4p5_south_in(RU_t *ru,int *frame,int *subframe) {
if
(
proc
->
symbol_mask
[
*
subframe
]
==
0
)
{
// this is normal case, if not true then we received a PULTICK before the previous subframe was finished
do
{
recv_IF4p5
(
ru
,
&
f
,
&
sf
,
&
packet_type
,
&
symbol_number
);
LOG_D
(
PHY
,
"fh_if4p5_south_in: RU %d, frame %d, subframe %d, f %d, sf %d
\n
"
,
ru
->
idx
,
*
frame
,
*
subframe
,
f
,
sf
);
if
(
oai_exit
==
1
||
ru
->
cmd
==
STOP_RU
)
break
;
if
(
packet_type
==
IF4p5_PULFFT
)
proc
->
symbol_mask
[
sf
]
=
proc
->
symbol_mask
[
sf
]
|
(
1
<<
symbol_number
);
else
if
(
packet_type
==
IF4p5_PULTICK
)
{
...
...
@@ -230,8 +231,8 @@ void fh_if4p5_south_in(RU_t *ru,int *frame,int *subframe) {
}
else
if
(
packet_type
==
IF4p5_PRACH
)
{
// nothing in RU for RAU
}
LOG_D
(
PHY
,
"rx_fh_if4p5
: subframe %d symbol mask %x
\n
"
,
*
subframe
,
proc
->
symbol_mask
[
*
subframe
]);
}
while
(
proc
->
symbol_mask
[
*
subframe
]
!=
symbol_mask_full
);
LOG_D
(
PHY
,
"rx_fh_if4p5
for RU %d: subframe %d, sf %d, symbol mask %x
\n
"
,
ru
->
idx
,
*
subframe
,
sf
,
proc
->
symbol_mask
[
sf
]);
}
while
(
proc
->
symbol_mask
[
sf
]
!=
symbol_mask_full
);
}
else
{
f
=
*
frame
;
...
...
@@ -437,10 +438,13 @@ void fh_if4p5_north_asynch_in(RU_t *ru,int *frame,int *subframe) {
proc
->
first_tx
=
0
;
symbol_mask_full
=
((
subframe_select
(
fp
,
*
subframe
)
==
SF_S
)
?
(
1
<<
fp
->
dl_symbols_in_S_subframe
)
:
(
1
<<
fp
->
symbols_per_tti
))
-
1
;
}
else
{
AssertFatal
(
frame_tx
==
*
frame
,
/*
AssertFatal(frame_tx == *frame,
"frame_tx %d is not what we expect %d\n",frame_tx,*frame);
AssertFatal(subframe_tx == *subframe,
"In frame_tx %d : subframe_tx %d is not what we expect %d\n",frame_tx,subframe_tx,*subframe);
*/
*
frame
=
frame_tx
;
*
subframe
=
subframe_tx
;
}
if
(
packet_type
==
IF4p5_PDLFFT
)
{
...
...
@@ -1661,7 +1665,7 @@ void *ru_thread( void *param ) {
proc
->
instance_cnt_asynch_rxtx
=
0
;
pthread_cond_signal
(
&
proc
->
cond_asynch_rxtx
);
AssertFatal
((
ret
=
pthread_mutex_unlock
(
&
proc
->
mutex_asynch_rxtx
))
==
0
,
"mutex_unlock returns %d
\n
"
,
ret
);
}
else
LOG_
I
(
PHY
,
"RU %d no asynch_south interface
\n
"
,
ru
->
idx
);
}
else
LOG_
D
(
PHY
,
"RU %d no asynch_south interface
\n
"
,
ru
->
idx
);
// if this is a slave RRU, try to synchronize on the DL frequency
if
((
ru
->
is_slave
==
1
)
&&
(
ru
->
if_south
==
LOCAL_RF
))
do_ru_synch
(
ru
);
...
...
@@ -1872,7 +1876,8 @@ void *ru_thread_synch(void *arg) {
&
avg
);
LOG_I
(
PHY
,
"RU synch cnt %d: %d, val %llu (%d dB,%d dB)
\n
"
,
cnt
,
ru
->
rx_offset
,(
unsigned
long
long
)
peak_val
,
dB_fixed64
(
peak_val
),
dB_fixed64
(
avg
));
cnt
++
;
if
(
/*ru->rx_offset >= 0*/
dB_fixed
(
peak_val
)
>=
85
&&
cnt
>
10
)
{
//if (/*ru->rx_offset >= 0*/dB_fixed(peak_val)>=85 && cnt>10) {
if
(
ru
->
rx_offset
>=
0
&&
avg
>
0
&&
dB_fixed
(
peak_val
/
avg
)
>=
15
&&
cnt
>
10
)
{
LOG_I
(
PHY
,
"Estimated peak_val %d dB, avg %d => timing offset %llu
\n
"
,
dB_fixed
(
peak_val
),
dB_fixed
(
avg
),(
unsigned
long
long
int
)
ru
->
rx_offset
);
ru
->
in_synch
=
1
;
/*
...
...
@@ -2628,7 +2633,7 @@ void init_RU(char *rf_config_file, clock_source_t clock_source,clock_source_t ti
// NOTE: multiple CC_id are not handled here yet!
ru
->
openair0_cfg
.
clock_source
=
clock_source
;
ru
->
openair0_cfg
.
time_source
=
time_source
;
//
ru->generate_dmrs_sync = (ru->is_slave == 0) ? 1 : 0;
ru
->
generate_dmrs_sync
=
(
ru
->
is_slave
==
0
)
?
1
:
0
;
if
(
ru
->
generate_dmrs_sync
==
1
)
{
generate_ul_ref_sigs
();
ru
->
dmrssync
=
(
int16_t
*
)
malloc16_clear
(
ru
->
frame_parms
.
ofdm_symbol_size
*
2
*
sizeof
(
int16_t
));
...
...
@@ -2919,6 +2924,8 @@ void RCconfig_RU(void) {
RC
.
ru
[
j
]
->
max_pdschReferenceSignalPower
=
*
(
RUParamList
.
paramarray
[
j
][
RU_MAX_RS_EPRE_IDX
].
uptr
);;
RC
.
ru
[
j
]
->
max_rxgain
=
*
(
RUParamList
.
paramarray
[
j
][
RU_MAX_RXGAIN_IDX
].
uptr
);
RC
.
ru
[
j
]
->
num_bands
=
RUParamList
.
paramarray
[
j
][
RU_BAND_LIST_IDX
].
numelt
;
/* sf_extension is in unit of samples for 30.72MHz here, has to be scaled later */
RC
.
ru
[
j
]
->
sf_extension
=
*
(
RUParamList
.
paramarray
[
j
][
RU_SF_EXTENSION_IDX
].
uptr
);
for
(
i
=
0
;
i
<
RC
.
ru
[
j
]
->
num_bands
;
i
++
)
RC
.
ru
[
j
]
->
band
[
i
]
=
RUParamList
.
paramarray
[
j
][
RU_BAND_LIST_IDX
].
iptr
[
i
];
}
//strcmp(local_rf, "yes") == 0
else
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment