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
wangjie
OpenXG-RAN
Commits
2c010009
Commit
2c010009
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
3c303223
9c010e30
Changes
4
Show 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 @
2c010009
...
@@ -56,21 +56,21 @@ pipeline {
...
@@ -56,21 +56,21 @@ pipeline {
booleanParam
(
name:
'eNB_AllowMergeRequestProcess'
,
value:
Boolean
.
valueOf
(
ALLOW_MERGE
))
booleanParam
(
name:
'eNB_AllowMergeRequestProcess'
,
value:
Boolean
.
valueOf
(
ALLOW_MERGE
))
]
]
//calling NSA long sub job
//calling NSA long sub job
build
job:
"RAN-NSA-Mini-Module-Long"
,
wait
:
true
,
propagate
:
false
,
parameters:
[
//
build job: "RAN-NSA-Mini-Module-Long", wait : true, propagate : false, parameters: [
string
(
name:
'eNB_MR'
,
value:
String
.
valueOf
(
MR
)),
// string(name: 'eNB_MR', value: String.valueOf(MR)),
string
(
name:
'eNB_Branch'
,
value:
String
.
valueOf
(
SRC_BRANCH
)),
//
string(name: 'eNB_Branch', value: String.valueOf(SRC_BRANCH)),
string
(
name:
'eNB_CommitID'
,
value:
String
.
valueOf
(
COMMIT_ID
)),
//
string(name: 'eNB_CommitID', value: String.valueOf(COMMIT_ID)),
string
(
name:
'eNB_TargetBranch'
,
value:
String
.
valueOf
(
TARGET_BRANCH
)),
//
string(name: 'eNB_TargetBranch', value: String.valueOf(TARGET_BRANCH)),
booleanParam
(
name:
'eNB_AllowMergeRequestProcess'
,
value:
Boolean
.
valueOf
(
ALLOW_MERGE
))
//
booleanParam(name: 'eNB_AllowMergeRequestProcess', value: Boolean.valueOf(ALLOW_MERGE))
]
//
]
//calling NSA attach/detach job
//calling NSA attach/detach job
build
job:
"RAN-NSA-Mini-Module-Attach-Detach"
,
wait
:
true
,
propagate
:
false
,
parameters:
[
//
build job: "RAN-NSA-Mini-Module-Attach-Detach", wait : true, propagate : false, parameters: [
string
(
name:
'eNB_MR'
,
value:
String
.
valueOf
(
MR
)),
// string(name: 'eNB_MR', value: String.valueOf(MR)),
string
(
name:
'eNB_Branch'
,
value:
String
.
valueOf
(
SRC_BRANCH
)),
//
string(name: 'eNB_Branch', value: String.valueOf(SRC_BRANCH)),
string
(
name:
'eNB_CommitID'
,
value:
String
.
valueOf
(
COMMIT_ID
)),
//
string(name: 'eNB_CommitID', value: String.valueOf(COMMIT_ID)),
string
(
name:
'eNB_TargetBranch'
,
value:
String
.
valueOf
(
TARGET_BRANCH
)),
//
string(name: 'eNB_TargetBranch', value: String.valueOf(TARGET_BRANCH)),
booleanParam
(
name:
'eNB_AllowMergeRequestProcess'
,
value:
Boolean
.
valueOf
(
ALLOW_MERGE
))
//
booleanParam(name: 'eNB_AllowMergeRequestProcess', value: Boolean.valueOf(ALLOW_MERGE))
]
//
]
}
}
}
}
...
...
openair1/PHY/NR_TRANSPORT/nr_prach.c
View file @
2c010009
...
@@ -872,24 +872,36 @@ void rx_nr_prach(PHY_VARS_gNB *gNB,
...
@@ -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)
// Now do IFFT of size 1024 (N_ZC=839) or 256 (N_ZC=139)
if
(
N_ZC
==
839
)
{
if
(
N_ZC
==
839
)
{
log2_ifft_size
=
10
;
idft
(
IDFT_1024
,
prachF
,
prach_ifft_tmp
,
1
);
idft
(
IDFT_1024
,
prachF
,
prach_ifft_tmp
,
1
);
// compute energy and accumulate over receive antennas
// compute energy and accumulate over receive antennas
for
(
i
=
0
;
i
<
2048
;
i
++
)
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
)])
/
nb_rx
;
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
{
}
else
{
idft
(
IDFT_256
,
prachF
,
prach_ifft_tmp
,
1
);
idft
(
IDFT_256
,
prachF
,
prach_ifft_tmp
,
1
);
log2_ifft_size
=
8
;
log2_ifft_size
=
8
;
// compute energy and accumulate over receive antennas and repetitions for BR
// compute energy and accumulate over receive antennas and repetitions for BR
for
(
i
=
0
;
i
<
256
;
i
++
)
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
;
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
(
LOG_DUMPFLAG
(
PRACH
))
{
if
(
aa
==
0
)
LOG_M
(
"prach_rxF_comp0.m"
,
"prach_rxF_comp0"
,
prachF
,
1024
,
1
,
1
);
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
(
aa
==
1
)
LOG_M
(
"prach_rxF_comp1.m"
,
"prach_rxF_comp1"
,
prachF
,
1024
,
1
,
1
);
}
}
}
// antennas_rx
}
// 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
}
// new dft
// check energy in nth time shift, for
// check energy in nth time shift, for
...
...
openair2/GNB_APP/L1_nr_paramdef.h
View file @
2c010009
...
@@ -66,7 +66,7 @@
...
@@ -66,7 +66,7 @@
{CONFIG_STRING_L1_REMOTE_N_PORTD, NULL, 0, uptr:NULL, defintval:50031, TYPE_UINT, 0}, \
{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_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_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} \
{CONFIG_STRING_L1_PUSCH_DTX_THRESHOLD, NULL, 0, uptr:NULL, defintval:50, TYPE_UINT, 0} \
}
}
#define L1_CC_IDX 0
#define L1_CC_IDX 0
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
View file @
2c010009
...
@@ -144,7 +144,7 @@ void calculate_preferred_ul_tda(module_id_t module_id, const NR_BWP_Uplink_t *ub
...
@@ -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
)
{
if
((
symb_pucch
&
symb_tda_mi
)
==
0
&&
(
symb_ulMixed
&
symb_tda_mi
)
==
symb_tda_mi
)
{
tdaMi
=
1
;
tdaMi
=
1
;
}
else
{
}
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
"
,
"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_pucch
,
symb_ulMixed
,
symb_ulMixed
,
...
@@ -168,7 +168,7 @@ void calculate_preferred_ul_tda(module_id_t module_id, const NR_BWP_Uplink_t *ub
...
@@ -168,7 +168,7 @@ void calculate_preferred_ul_tda(module_id_t module_id, const NR_BWP_Uplink_t *ub
}
}
if
(
k2
<
tdd
->
nrofUplinkSlots
)
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 %d < tdd->nrofUplinkSlots %ld: not all UL slots can be scheduled
\n
"
,
k2
,
k2
,
tdd
->
nrofUplinkSlots
);
tdd
->
nrofUplinkSlots
);
...
@@ -331,7 +331,7 @@ void nr_process_mac_pdu(module_id_t module_idP,
...
@@ -331,7 +331,7 @@ void nr_process_mac_pdu(module_id_t module_idP,
sched_ctrl
->
ph
=
PH
-
32
+
(
PH
-
54
);
sched_ctrl
->
ph
=
PH
-
32
+
(
PH
-
54
);
/* 38.133 Table10.1.18.1-1 */
/* 38.133 Table10.1.18.1-1 */
sched_ctrl
->
pcmax
=
PCMAX
-
29
;
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
);
phr
->
R1
,
PH
,
sched_ctrl
->
ph
,
phr
->
R2
,
PCMAX
,
sched_ctrl
->
pcmax
);
break
;
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
...
@@ -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 */
* (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
has_data
=
sched_ctrl
->
estimated_ul_buffer
>
sched_ctrl
->
sched_ul_bytes
;
const
bool
high_inactivity
=
diff
>=
nrmac
->
ulsch_max_slots_inactivity
;
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
"
,
"%4d.%2d UL inactivity %d slots has_data %d SR %d
\n
"
,
frame
,
frame
,
slot
,
slot
,
...
@@ -854,12 +854,13 @@ bool allocate_ul_retransmission(module_id_t module_id,
...
@@ -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
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
;
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
)
{
if
(
tda
==
retInfo
->
time_domain_allocation
)
{
/* Check the resource is enough for retransmission */
/* Check the resource is enough for retransmission */
while
(
rbStart
<
bwpSize
&&
!
rballoc_mask
[
rbStart
])
while
(
rbStart
<
bwpSize
&&
!
rballoc_mask
[
rbStart
])
rbStart
++
;
rbStart
++
;
if
(
rbStart
+
retInfo
->
rbSize
>
=
bwpSize
)
{
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
]
);
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
;
return
false
;
}
}
/* check whether we need to switch the TDA allocation since tha last
/* 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,
...
@@ -871,7 +872,7 @@ bool allocate_ul_retransmission(module_id_t module_id,
||
ps
->
dci_format
!=
dci_format
||
ps
->
dci_format
!=
dci_format
||
ps
->
num_dmrs_cdm_grps_no_data
!=
num_dmrs_cdm_grps_no_data
)
||
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
);
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
{
}
else
{
/* the retransmission will use a different time domain allocation, check
/* the retransmission will use a different time domain allocation, check
* that we have enough resources */
* that we have enough resources */
...
@@ -895,10 +896,10 @@ bool allocate_ul_retransmission(module_id_t module_id,
...
@@ -895,10 +896,10 @@ bool allocate_ul_retransmission(module_id_t module_id,
&
new_tbs
,
&
new_tbs
,
&
new_rbSize
);
&
new_rbSize
);
if
(
!
success
||
new_tbs
!=
retInfo
->
tb_size
)
{
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 */
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
/* we can allocate it. Overwrite the time_domain_allocation, the number
* of RBs, and the new TB size. The rest is done below */
* of RBs, and the new TB size. The rest is done below */
retInfo
->
tb_size
=
new_tbs
;
retInfo
->
tb_size
=
new_tbs
;
...
@@ -910,7 +911,7 @@ bool allocate_ul_retransmission(module_id_t module_id,
...
@@ -910,7 +911,7 @@ bool allocate_ul_retransmission(module_id_t module_id,
/* Find free CCE */
/* Find free CCE */
bool
freeCCE
=
find_free_CCE
(
module_id
,
slot
,
UE_id
);
bool
freeCCE
=
find_free_CCE
(
module_id
,
slot
,
UE_id
);
if
(
!
freeCCE
)
{
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
;
return
false
;
}
}
...
@@ -923,7 +924,7 @@ bool allocate_ul_retransmission(module_id_t module_id,
...
@@ -923,7 +924,7 @@ bool allocate_ul_retransmission(module_id_t module_id,
sched_ctrl
->
sched_pusch
=
*
retInfo
;
sched_ctrl
->
sched_pusch
=
*
retInfo
;
NR_sched_pusch_t
*
sched_pusch
=
&
sched_ctrl
->
sched_pusch
;
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
"
,
"%4d.%2d Allocate UL retransmission UE %d/RNTI %04x sched %4d.%2d (%d RBs)
\n
"
,
frame
,
frame
,
slot
,
slot
,
...
@@ -999,7 +1000,7 @@ void pf_ul(module_id_t module_id,
...
@@ -999,7 +1000,7 @@ void pf_ul(module_id_t module_id,
bool
r
=
allocate_ul_retransmission
(
bool
r
=
allocate_ul_retransmission
(
module_id
,
frame
,
slot
,
rballoc_mask
,
&
n_rb_sched
,
UE_id
,
sched_pusch
->
ul_harq_pid
);
module_id
,
frame
,
slot
,
rballoc_mask
,
&
n_rb_sched
,
UE_id
,
sched_pusch
->
ul_harq_pid
);
if
(
!
r
)
{
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
;
continue
;
}
}
/* reduce max_num_ue once we are sure UE can be allocated, i.e., has CCE */
/* 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,
...
@@ -1030,7 +1031,7 @@ void pf_ul(module_id_t module_id,
if
(
max_num_ue
<
0
)
if
(
max_num_ue
<
0
)
return
;
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
++
;
while
(
rbStart
<
bwpSize
&&
!
rballoc_mask
[
rbStart
])
rbStart
++
;
if
(
rbStart
+
min_rb
>=
bwpSize
)
{
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
"
,
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,
...
@@ -1162,7 +1163,7 @@ void pf_ul(module_id_t module_id,
&
rbSize
);
&
rbSize
);
sched_pusch
->
rbSize
=
rbSize
;
sched_pusch
->
rbSize
=
rbSize
;
sched_pusch
->
tb_size
=
TBS
;
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
);
rbSize
,
sched_pusch
->
tb_size
,
sched_ctrl
->
estimated_ul_buffer
,
sched_ctrl
->
sched_ul_bytes
,
B
);
/* Mark the corresponding RBs as used */
/* 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