Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
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
Michael Black
OpenXG UE
Commits
93a5f63a
Commit
93a5f63a
authored
Jul 18, 2021
by
Eurecom
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/develop-NR_SA_F1AP_5GRECORDS-abs' into bandwidth-testing
parents
e45bc9c5
9ed184b9
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
53 additions
and
40 deletions
+53
-40
ci-scripts/Jenkinsfile-trig-nsa
ci-scripts/Jenkinsfile-trig-nsa
+14
-14
openair1/PHY/NR_TRANSPORT/nr_prach.c
openair1/PHY/NR_TRANSPORT/nr_prach.c
+23
-11
openair2/GNB_APP/L1_nr_paramdef.h
openair2/GNB_APP/L1_nr_paramdef.h
+1
-1
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
+15
-14
No files found.
ci-scripts/Jenkinsfile-trig-nsa
View file @
93a5f63a
...
...
@@ -56,21 +56,21 @@ pipeline {
booleanParam
(
name:
'eNB_AllowMergeRequestProcess'
,
value:
Boolean
.
valueOf
(
ALLOW_MERGE
))
]
//calling NSA long sub job
build
job:
"RAN-NSA-Mini-Module-Long"
,
wait
:
true
,
propagate
:
false
,
parameters:
[
string
(
name:
'eNB_MR'
,
value:
String
.
valueOf
(
MR
)),
string
(
name:
'eNB_Branch'
,
value:
String
.
valueOf
(
SRC_BRANCH
)),
string
(
name:
'eNB_CommitID'
,
value:
String
.
valueOf
(
COMMIT_ID
)),
string
(
name:
'eNB_TargetBranch'
,
value:
String
.
valueOf
(
TARGET_BRANCH
)),
booleanParam
(
name:
'eNB_AllowMergeRequestProcess'
,
value:
Boolean
.
valueOf
(
ALLOW_MERGE
))
]
//
build job: "RAN-NSA-Mini-Module-Long", wait : true, propagate : false, parameters: [
// string(name: 'eNB_MR', value: String.valueOf(MR)),
//
string(name: 'eNB_Branch', value: String.valueOf(SRC_BRANCH)),
//
string(name: 'eNB_CommitID', value: String.valueOf(COMMIT_ID)),
//
string(name: 'eNB_TargetBranch', value: String.valueOf(TARGET_BRANCH)),
//
booleanParam(name: 'eNB_AllowMergeRequestProcess', value: Boolean.valueOf(ALLOW_MERGE))
//
]
//calling NSA attach/detach job
build
job:
"RAN-NSA-Mini-Module-Attach-Detach"
,
wait
:
true
,
propagate
:
false
,
parameters:
[
string
(
name:
'eNB_MR'
,
value:
String
.
valueOf
(
MR
)),
string
(
name:
'eNB_Branch'
,
value:
String
.
valueOf
(
SRC_BRANCH
)),
string
(
name:
'eNB_CommitID'
,
value:
String
.
valueOf
(
COMMIT_ID
)),
string
(
name:
'eNB_TargetBranch'
,
value:
String
.
valueOf
(
TARGET_BRANCH
)),
booleanParam
(
name:
'eNB_AllowMergeRequestProcess'
,
value:
Boolean
.
valueOf
(
ALLOW_MERGE
))
]
//
build job: "RAN-NSA-Mini-Module-Attach-Detach", wait : true, propagate : false, parameters: [
// string(name: 'eNB_MR', value: String.valueOf(MR)),
//
string(name: 'eNB_Branch', value: String.valueOf(SRC_BRANCH)),
//
string(name: 'eNB_CommitID', value: String.valueOf(COMMIT_ID)),
//
string(name: 'eNB_TargetBranch', value: String.valueOf(TARGET_BRANCH)),
//
booleanParam(name: 'eNB_AllowMergeRequestProcess', value: Boolean.valueOf(ALLOW_MERGE))
//
]
}
}
...
...
openair1/PHY/NR_TRANSPORT/nr_prach.c
View file @
93a5f63a
...
...
@@ -872,24 +872,36 @@ void rx_nr_prach(PHY_VARS_gNB *gNB,
// Now do IFFT of size 1024 (N_ZC=839) or 256 (N_ZC=139)
if
(
N_ZC
==
839
)
{
log2_ifft_size
=
10
;
idft
(
IDFT_1024
,
prachF
,
prach_ifft_tmp
,
1
);
// compute energy and accumulate over receive antennas
for
(
i
=
0
;
i
<
2048
;
i
++
)
prach_ifft
[
i
]
+=
(
(
int32_t
)
prach_ifft_tmp
[
i
<<
1
]
*
(
int32_t
)
prach_ifft_tmp
[
i
<<
1
]
+
(
int32_t
)
prach_ifft_tmp
[
1
+
(
i
<<
1
)]
*
(
int32_t
)
prach_ifft_tmp
[
1
+
(
i
<<
1
)])
/
nb_rx
;
for
(
i
=
0
;
i
<
1024
;
i
++
)
prach_ifft
[
i
]
+=
(
int32_t
)
prach_ifft_tmp
[
i
<<
1
]
*
(
int32_t
)
prach_ifft_tmp
[
i
<<
1
]
+
(
int32_t
)
prach_ifft_tmp
[
1
+
(
i
<<
1
)]
*
(
int32_t
)
prach_ifft_tmp
[
1
+
(
i
<<
1
)]
;
}
else
{
idft
(
IDFT_256
,
prachF
,
prach_ifft_tmp
,
1
);
log2_ifft_size
=
8
;
// compute energy and accumulate over receive antennas and repetitions for BR
for
(
i
=
0
;
i
<
256
;
i
++
)
prach_ifft
[
i
]
+=
((
int32_t
)
prach_ifft_tmp
[
i
<<
1
]
*
(
int32_t
)
prach_ifft_tmp
[(
i
<<
1
)]
+
(
int32_t
)
prach_ifft_tmp
[
1
+
(
i
<<
1
)]
*
(
int32_t
)
prach_ifft_tmp
[
1
+
(
i
<<
1
)])
/
nb_rx
;
}
// compute energy and accumulate over receive antennas and repetitions for BR
for
(
i
=
0
;
i
<
256
;
i
++
)
prach_ifft
[
i
]
+=
(
int32_t
)
prach_ifft_tmp
[
i
<<
1
]
*
(
int32_t
)
prach_ifft_tmp
[(
i
<<
1
)]
+
(
int32_t
)
prach_ifft_tmp
[
1
+
(
i
<<
1
)]
*
(
int32_t
)
prach_ifft_tmp
[
1
+
(
i
<<
1
)];
}
if
(
LOG_DUMPFLAG
(
PRACH
))
{
if
(
aa
==
0
)
LOG_M
(
"prach_rxF_comp0.m"
,
"prach_rxF_comp0"
,
prachF
,
1024
,
1
,
1
);
if
(
aa
==
1
)
LOG_M
(
"prach_rxF_comp1.m"
,
"prach_rxF_comp1"
,
prachF
,
1024
,
1
,
1
);
}
if
(
LOG_DUMPFLAG
(
PRACH
))
{
if
(
aa
==
0
)
LOG_M
(
"prach_rxF_comp0.m"
,
"prach_rxF_comp0"
,
prachF
,
1024
,
1
,
1
);
if
(
aa
==
1
)
LOG_M
(
"prach_rxF_comp1.m"
,
"prach_rxF_comp1"
,
prachF
,
1024
,
1
,
1
);
}
}
// antennas_rx
// Normalization of energy over ifft and receive antennas
if
(
N_ZC
==
839
)
{
log2_ifft_size
=
10
;
for
(
i
=
0
;
i
<
1024
;
i
++
)
prach_ifft
[
i
]
=
(
prach_ifft
[
i
]
>>
log2_ifft_size
)
/
nb_rx
;
}
else
{
log2_ifft_size
=
8
;
for
(
i
=
0
;
i
<
256
;
i
++
)
prach_ifft
[
i
]
=
(
prach_ifft
[
i
]
>>
log2_ifft_size
)
/
nb_rx
;
}
}
// new dft
// check energy in nth time shift, for
...
...
openair2/GNB_APP/L1_nr_paramdef.h
View file @
93a5f63a
...
...
@@ -66,7 +66,7 @@
{CONFIG_STRING_L1_REMOTE_N_PORTD, NULL, 0, uptr:NULL, defintval:50031, TYPE_UINT, 0}, \
{CONFIG_STRING_L1_PUSCH_PROC_THREADS, NULL, 0, uptr:NULL, defintval:1, TYPE_UINT, 0}, \
{CONFIG_STRING_L1_PUCCH0_DTX_THRESHOLD, NULL, 0, uptr:NULL, defintval:100, TYPE_UINT, 0}, \
{CONFIG_STRING_L1_PRACH_DTX_THRESHOLD, NULL, 0, uptr:NULL, defintval:
2
50, TYPE_UINT, 0}, \
{CONFIG_STRING_L1_PRACH_DTX_THRESHOLD, NULL, 0, uptr:NULL, defintval:
1
50, TYPE_UINT, 0}, \
{CONFIG_STRING_L1_PUSCH_DTX_THRESHOLD, NULL, 0, uptr:NULL, defintval:50, TYPE_UINT, 0} \
}
#define L1_CC_IDX 0
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
View file @
93a5f63a
...
...
@@ -144,7 +144,7 @@ void calculate_preferred_ul_tda(module_id_t module_id, const NR_BWP_Uplink_t *ub
if
((
symb_pucch
&
symb_tda_mi
)
==
0
&&
(
symb_ulMixed
&
symb_tda_mi
)
==
symb_tda_mi
)
{
tdaMi
=
1
;
}
else
{
LOG_E
(
MAC
,
LOG_E
(
NR_
MAC
,
"TDA index 1 UL overlaps with PUCCH or is not entirely in mixed slot (symb_pucch %x symb_ulMixed %x symb_tda_mi %x), won't schedule UL mixed slot
\n
"
,
symb_pucch
,
symb_ulMixed
,
...
...
@@ -168,7 +168,7 @@ void calculate_preferred_ul_tda(module_id_t module_id, const NR_BWP_Uplink_t *ub
}
if
(
k2
<
tdd
->
nrofUplinkSlots
)
LOG_W
(
MAC
,
LOG_W
(
NR_
MAC
,
"k2 %d < tdd->nrofUplinkSlots %ld: not all UL slots can be scheduled
\n
"
,
k2
,
tdd
->
nrofUplinkSlots
);
...
...
@@ -331,7 +331,7 @@ void nr_process_mac_pdu(module_id_t module_idP,
sched_ctrl
->
ph
=
PH
-
32
+
(
PH
-
54
);
/* 38.133 Table10.1.18.1-1 */
sched_ctrl
->
pcmax
=
PCMAX
-
29
;
LOG_D
(
MAC
,
"SINGLE ENTRY PHR R1 %d PH %d (%d dB) R2 %d PCMAX %d (%d dBm)
\n
"
,
LOG_D
(
NR_
MAC
,
"SINGLE ENTRY PHR R1 %d PH %d (%d dB) R2 %d PCMAX %d (%d dBm)
\n
"
,
phr
->
R1
,
PH
,
sched_ctrl
->
ph
,
phr
->
R2
,
PCMAX
,
sched_ctrl
->
pcmax
);
break
;
...
...
@@ -817,7 +817,7 @@ bool nr_UE_is_to_be_scheduled(module_id_t mod_id, int CC_id, int UE_id, frame_t
* (3) or we did not schedule it in more than 10 frames */
const
bool
has_data
=
sched_ctrl
->
estimated_ul_buffer
>
sched_ctrl
->
sched_ul_bytes
;
const
bool
high_inactivity
=
diff
>=
nrmac
->
ulsch_max_slots_inactivity
;
LOG_D
(
MAC
,
LOG_D
(
NR_
MAC
,
"%4d.%2d UL inactivity %d slots has_data %d SR %d
\n
"
,
frame
,
slot
,
...
...
@@ -854,12 +854,13 @@ bool allocate_ul_retransmission(module_id_t module_id,
const
uint8_t
num_dmrs_cdm_grps_no_data
=
sched_ctrl
->
active_bwp
?
1
:
2
;
const
int
tda
=
sched_ctrl
->
active_ubwp
?
RC
.
nrmac
[
module_id
]
->
preferred_ul_tda
[
sched_ctrl
->
active_ubwp
->
bwp_Id
][
slot
]
:
0
;
LOG_D
(
NR_MAC
,
"retInfo->time_domain_allocation = %d, tda = %d
\n
"
,
retInfo
->
time_domain_allocation
,
tda
);
if
(
tda
==
retInfo
->
time_domain_allocation
)
{
/* Check the resource is enough for retransmission */
while
(
rbStart
<
bwpSize
&&
!
rballoc_mask
[
rbStart
])
rbStart
++
;
if
(
rbStart
+
retInfo
->
rbSize
>
=
bwpSize
)
{
LOG_
D
(
MAC
,
"cannot allocate retransmission of UE %d/RNTI %04x: no resources
\n
"
,
UE_id
,
UE_info
->
rnti
[
UE_id
]
);
if
(
rbStart
+
retInfo
->
rbSize
>
bwpSize
)
{
LOG_
W
(
NR_MAC
,
"cannot allocate retransmission of UE %d/RNTI %04x: no resources (rbStart %d, retInfo->rbSize %d, bwpSize %d
\n
"
,
UE_id
,
UE_info
->
rnti
[
UE_id
],
rbStart
,
retInfo
->
rbSize
,
bwpSize
);
return
false
;
}
/* check whether we need to switch the TDA allocation since tha last
...
...
@@ -871,7 +872,7 @@ bool allocate_ul_retransmission(module_id_t module_id,
||
ps
->
dci_format
!=
dci_format
||
ps
->
num_dmrs_cdm_grps_no_data
!=
num_dmrs_cdm_grps_no_data
)
nr_set_pusch_semi_static
(
scc
,
sched_ctrl
->
active_ubwp
,
dci_format
,
tda
,
num_dmrs_cdm_grps_no_data
,
ps
);
LOG_D
(
MAC
,
"%s(): retransmission keeping TDA %d and TBS %d
\n
"
,
__func__
,
tda
,
retInfo
->
tb_size
);
LOG_D
(
NR_
MAC
,
"%s(): retransmission keeping TDA %d and TBS %d
\n
"
,
__func__
,
tda
,
retInfo
->
tb_size
);
}
else
{
/* the retransmission will use a different time domain allocation, check
* that we have enough resources */
...
...
@@ -895,10 +896,10 @@ bool allocate_ul_retransmission(module_id_t module_id,
&
new_tbs
,
&
new_rbSize
);
if
(
!
success
||
new_tbs
!=
retInfo
->
tb_size
)
{
LOG_D
(
MAC
,
"%s(): new TBsize %d of new TDA does not match old TBS %d
\n
"
,
__func__
,
new_tbs
,
retInfo
->
tb_size
);
LOG_D
(
NR_
MAC
,
"%s(): new TBsize %d of new TDA does not match old TBS %d
\n
"
,
__func__
,
new_tbs
,
retInfo
->
tb_size
);
return
false
;
/* the maximum TBsize we might have is smaller than what we need */
}
LOG_D
(
MAC
,
"%s(): retransmission with TDA %d->%d and TBS %d -> %d
\n
"
,
__func__
,
retInfo
->
time_domain_allocation
,
tda
,
retInfo
->
tb_size
,
new_tbs
);
LOG_D
(
NR_
MAC
,
"%s(): retransmission with TDA %d->%d and TBS %d -> %d
\n
"
,
__func__
,
retInfo
->
time_domain_allocation
,
tda
,
retInfo
->
tb_size
,
new_tbs
);
/* we can allocate it. Overwrite the time_domain_allocation, the number
* of RBs, and the new TB size. The rest is done below */
retInfo
->
tb_size
=
new_tbs
;
...
...
@@ -910,7 +911,7 @@ bool allocate_ul_retransmission(module_id_t module_id,
/* Find free CCE */
bool
freeCCE
=
find_free_CCE
(
module_id
,
slot
,
UE_id
);
if
(
!
freeCCE
)
{
LOG_D
(
MAC
,
"%4d.%2d no free CCE for retransmission UL DCI UE %04x
\n
"
,
frame
,
slot
,
UE_info
->
rnti
[
UE_id
]);
LOG_D
(
NR_
MAC
,
"%4d.%2d no free CCE for retransmission UL DCI UE %04x
\n
"
,
frame
,
slot
,
UE_info
->
rnti
[
UE_id
]);
return
false
;
}
...
...
@@ -923,7 +924,7 @@ bool allocate_ul_retransmission(module_id_t module_id,
sched_ctrl
->
sched_pusch
=
*
retInfo
;
NR_sched_pusch_t
*
sched_pusch
=
&
sched_ctrl
->
sched_pusch
;
LOG_D
(
MAC
,
LOG_D
(
NR_
MAC
,
"%4d.%2d Allocate UL retransmission UE %d/RNTI %04x sched %4d.%2d (%d RBs)
\n
"
,
frame
,
slot
,
...
...
@@ -999,7 +1000,7 @@ void pf_ul(module_id_t module_id,
bool
r
=
allocate_ul_retransmission
(
module_id
,
frame
,
slot
,
rballoc_mask
,
&
n_rb_sched
,
UE_id
,
sched_pusch
->
ul_harq_pid
);
if
(
!
r
)
{
LOG_D
(
MAC
,
"%4d.%2d UL retransmission UE RNTI %04x can NOT be allocated
\n
"
,
frame
,
slot
,
UE_info
->
rnti
[
UE_id
]);
LOG_D
(
NR_
MAC
,
"%4d.%2d UL retransmission UE RNTI %04x can NOT be allocated
\n
"
,
frame
,
slot
,
UE_info
->
rnti
[
UE_id
]);
continue
;
}
/* reduce max_num_ue once we are sure UE can be allocated, i.e., has CCE */
...
...
@@ -1030,7 +1031,7 @@ void pf_ul(module_id_t module_id,
if
(
max_num_ue
<
0
)
return
;
LOG_D
(
NR_MAC
,
"Looking for min_rb %d RBs, starting at %d
\n
"
,
min_rb
,
rbStart
);
LOG_D
(
NR_MAC
,
"Looking for min_rb %d RBs, starting at %d
\n
"
,
min_rb
,
rbStart
);
while
(
rbStart
<
bwpSize
&&
!
rballoc_mask
[
rbStart
])
rbStart
++
;
if
(
rbStart
+
min_rb
>=
bwpSize
)
{
LOG_W
(
NR_MAC
,
"cannot allocate continuous UL data for UE %d/RNTI %04x: no resources (rbStart %d, min_rb %d, bwpSize %d
\n
"
,
...
...
@@ -1162,7 +1163,7 @@ void pf_ul(module_id_t module_id,
&
rbSize
);
sched_pusch
->
rbSize
=
rbSize
;
sched_pusch
->
tb_size
=
TBS
;
LOG_D
(
MAC
,
"rbSize %d, TBS %d, est buf %d, sched_ul %d, B %d
\n
"
,
LOG_D
(
NR_
MAC
,
"rbSize %d, TBS %d, est buf %d, sched_ul %d, B %d
\n
"
,
rbSize
,
sched_pusch
->
tb_size
,
sched_ctrl
->
estimated_ul_buffer
,
sched_ctrl
->
sched_ul_bytes
,
B
);
/* Mark the corresponding RBs as used */
...
...
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