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
aa0d93a9
Commit
aa0d93a9
authored
Jan 13, 2018
by
Xu Bo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix n1_pucch issue: 25RB pucch 2RB;50RB/100RB pucch 4RB
parent
57fccea4
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
83 additions
and
33 deletions
+83
-33
openair1/SCHED/phy_procedures_lte_eNb.c
openair1/SCHED/phy_procedures_lte_eNb.c
+2
-2
openair2/COMMON/rrc_messages_types.h
openair2/COMMON/rrc_messages_types.h
+2
-2
openair2/ENB_APP/enb_config.c
openair2/ENB_APP/enb_config.c
+2
-2
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
+2
-1
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
+25
-9
openair2/LAYER2/MAC/pre_processor.c
openair2/LAYER2/MAC/pre_processor.c
+43
-14
openair2/LAYER2/MAC/rar_tools.c
openair2/LAYER2/MAC/rar_tools.c
+5
-1
openair2/RRC/LITE/MESSAGES/asn1_msg.c
openair2/RRC/LITE/MESSAGES/asn1_msg.c
+2
-2
No files found.
openair1/SCHED/phy_procedures_lte_eNb.c
View file @
aa0d93a9
...
...
@@ -838,10 +838,10 @@ void uci_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc)
if
(
uci
->
type
==
SR
)
{
if
(
SR_payload
==
1
)
{
fill_sr_indication
(
eNB
,
uci
->
rnti
,
frame
,
subframe
,
metric_SR
);
continue
;
break
;
}
else
{
continue
;
break
;
}
}
case
HARQ
:
...
...
openair2/COMMON/rrc_messages_types.h
View file @
aa0d93a9
...
...
@@ -115,9 +115,9 @@ typedef struct RrcConfigurationReq_s {
long
pucch_delta_shift
[
MAX_NUM_CCs
];
long
pucch_nRB_CQI
[
MAX_NUM_CCs
];
long
pucch_nCS_AN
[
MAX_NUM_CCs
];
#if !defined(Rel10) && !defined(Rel14)
//
#if !defined(Rel10) && !defined(Rel14)
long
pucch_n1_AN
[
MAX_NUM_CCs
];
#endif
//
#endif
long
pdsch_referenceSignalPower
[
MAX_NUM_CCs
];
long
pdsch_p_b
[
MAX_NUM_CCs
];
long
pusch_n_SB
[
MAX_NUM_CCs
];
...
...
openair2/ENB_APP/enb_config.c
View file @
aa0d93a9
...
...
@@ -856,7 +856,7 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for pucch_nCS_AN choice: 0..7!
\n
"
,
RC
.
config_file_name
,
i
,
pucch_nCS_AN
);
#if !defined(Rel10) && !defined(Rel14)
//
#if !defined(Rel10) && !defined(Rel14)
RRC_CONFIGURATION_REQ
(
msg_p
).
pucch_n1_AN
[
j
]
=
pucch_n1_AN
;
if
((
pucch_n1_AN
<
0
)
||
(
pucch_n1_AN
>
2047
))
...
...
@@ -864,7 +864,7 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for pucch_n1_AN choice: 0..2047!
\n
"
,
RC
.
config_file_name
,
i
,
pucch_n1_AN
);
#endif
//
#endif
RRC_CONFIGURATION_REQ
(
msg_p
).
pdsch_referenceSignalPower
[
j
]
=
pdsch_referenceSignalPower
;
if
((
pdsch_referenceSignalPower
<-
60
)
||
(
pdsch_referenceSignalPower
>
50
))
...
...
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
View file @
aa0d93a9
...
...
@@ -3380,7 +3380,8 @@ allocate_CCEs(int module_idP, int CC_idP, frame_t frameP, sub_frame_t subframeP,
if
(((
ul_req
->
ul_config_pdu_list
[
ack_int
].
pdu_type
==
NFAPI_UL_CONFIG_UCI_HARQ_PDU_TYPE
)
||
(
ul_req
->
ul_config_pdu_list
[
ack_int
].
pdu_type
==
NFAPI_UL_CONFIG_UCI_SR_HARQ_PDU_TYPE
))
&&
(
ul_req
->
ul_config_pdu_list
[
ack_int
].
uci_harq_pdu
.
ue_information
.
ue_information_rel8
.
rnti
==
dl_config_pdu
[
i
].
dci_dl_pdu
.
dci_dl_pdu_rel8
.
rnti
)){
ul_req
->
ul_config_pdu_list
[
ack_int
].
uci_harq_pdu
.
harq_information
.
harq_information_rel9_fdd
.
n_pucch_1_0
=
fCCE
;
ul_req
->
ul_config_pdu_list
[
ack_int
].
uci_harq_pdu
.
harq_information
.
harq_information_rel9_fdd
.
n_pucch_1_0
=
cc
->
radioResourceConfigCommon
->
pucch_ConfigCommon
.
n1PUCCH_AN
+
fCCE
;
}
}
}
...
...
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
View file @
aa0d93a9
...
...
@@ -1044,7 +1044,11 @@ schedule_ulsch(module_id_t module_idP, frame_t frameP,
for
(
i
=
0
;
i
<
NB_RA_PROC_MAX
;
i
++
)
{
if
((
cc
->
ra
[
i
].
state
==
WAITMSG3
)
&&
(
cc
->
ra
[
i
].
Msg3_subframe
==
sched_subframe
))
{
ulsch_ue_select
[
CC_id
].
list
[
ulsch_ue_select
[
CC_id
].
ue_num
].
ue_priority
=
SCH_UL_MSG3
;
ulsch_ue_select
[
CC_id
].
list
[
ulsch_ue_select
[
CC_id
].
ue_num
].
start_rb
=
1
;
if
(
frame_parms
->
N_RB_UL
==
25
){
ulsch_ue_select
[
CC_id
].
list
[
ulsch_ue_select
[
CC_id
].
ue_num
].
start_rb
=
1
;
}
else
{
ulsch_ue_select
[
CC_id
].
list
[
ulsch_ue_select
[
CC_id
].
ue_num
].
start_rb
=
2
;
}
ulsch_ue_select
[
CC_id
].
list
[
ulsch_ue_select
[
CC_id
].
ue_num
].
nb_rb
=
1
;
ulsch_ue_select
[
CC_id
].
list
[
ulsch_ue_select
[
CC_id
].
ue_num
].
UE_id
=
-
1
;
ulsch_ue_select
[
CC_id
].
ue_num
++
;
...
...
@@ -1608,19 +1612,31 @@ void schedule_ulsch_rnti(module_id_t module_idP,
// loop over all active UEs
for
(
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
{
//leave out first RB for PUCCH
first_rb
[
CC_id
]
=
1
;
ULSCH_first_end
=
0
;
cc
=
&
eNB
->
common_channels
[
CC_id
];
// This is the actual CC_id in the list
N_RB_UL
=
to_prb
(
cc
->
mib
->
message
.
dl_Bandwidth
);
//leave out first RB for PUCCH
if
(
N_RB_UL
==
25
){
first_rb
[
CC_id
]
=
1
;
}
else
{
first_rb
[
CC_id
]
=
2
;
}
for
(
ulsch_ue_num
=
0
;
ulsch_ue_num
<
ulsch_ue_select
[
CC_id
].
ue_num
;
ulsch_ue_num
++
)
{
// This is the actual CC_id in the list
N_RB_UL
=
to_prb
(
cc
->
ul_Bandwidth
);
UE_id
=
ulsch_ue_select
[
CC_id
].
list
[
ulsch_ue_num
].
UE_id
;
/* be sure that there are some free RBs */
if
(
first_rb
[
CC_id
]
>=
N_RB_UL
-
1
)
{
LOG_W
(
MAC
,
"[eNB %d] frame %d subframe %d, UE %d/%x CC %d: dropping, not enough RBs
\n
"
,
module_idP
,
frameP
,
subframeP
,
UE_id
,
rnti
,
CC_id
);
break
;
if
(
N_RB_UL
==
25
){
if
(
first_rb
[
CC_id
]
>=
N_RB_UL
-
1
)
{
LOG_W
(
MAC
,
"[eNB %d] frame %d subframe %d, UE %d/%x CC %d: dropping, not enough RBs
\n
"
,
module_idP
,
frameP
,
subframeP
,
UE_id
,
rnti
,
CC_id
);
break
;
}
}
else
{
if
(
first_rb
[
CC_id
]
>=
N_RB_UL
-
2
)
{
LOG_W
(
MAC
,
"[eNB %d] frame %d subframe %d, UE %d/%x CC %d: dropping, not enough RBs
\n
"
,
module_idP
,
frameP
,
subframeP
,
UE_id
,
rnti
,
CC_id
);
break
;
}
}
//MSG3
if
(
ulsch_ue_select
[
CC_id
].
list
[
ulsch_ue_num
].
ue_priority
==
SCH_UL_MSG3
)
{
...
...
openair2/LAYER2/MAC/pre_processor.c
View file @
aa0d93a9
...
...
@@ -2620,7 +2620,11 @@ void ulsch_scheduler_pre_processor(module_id_t module_idP,
// MCS and RB assgin
for
(
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
{
frame_parms
=
&
(
RC
.
eNB
[
module_idP
][
CC_id
]
->
frame_parms
);
first_rb
[
CC_id
]
=
1
;
if
(
frame_parms
->
N_RB_UL
==
25
){
first_rb
[
CC_id
]
=
1
;
}
else
{
first_rb
[
CC_id
]
=
2
;
}
ue_num_temp
=
ulsch_ue_select
[
CC_id
].
ue_num
;
for
(
ulsch_ue_num
=
0
;
ulsch_ue_num
<
ulsch_ue_select
[
CC_id
].
ue_num
;
ulsch_ue_num
++
)
{
...
...
@@ -2639,13 +2643,23 @@ void ulsch_scheduler_pre_processor(module_id_t module_idP,
}
rnti
=
UE_RNTI
(
CC_id
,
UE_id
);
if
(
first_rb
[
CC_id
]
>=
frame_parms
->
N_RB_UL
-
1
)
{
LOG_W
(
MAC
,
"[eNB %d] frame %d subframe %d, UE %d/%x CC %d: dropping, not enough RBs
\n
"
,
module_idP
,
frameP
,
subframeP
,
UE_id
,
rnti
,
CC_id
);
break
;
if
(
frame_parms
->
N_RB_UL
==
25
){
if
(
first_rb
[
CC_id
]
>=
frame_parms
->
N_RB_UL
-
1
){
LOG_W
(
MAC
,
"[eNB %d] frame %d subframe %d, UE %d/%x CC %d: dropping, not enough RBs
\n
"
,
module_idP
,
frameP
,
subframeP
,
UE_id
,
rnti
,
CC_id
);
break
;
}
// calculate the average rb ( remain UE)
total_rbs
=
frame_parms
->
N_RB_UL
-
1
-
first_rb
[
CC_id
];
}
else
{
if
(
first_rb
[
CC_id
]
>=
frame_parms
->
N_RB_UL
-
2
){
LOG_W
(
MAC
,
"[eNB %d] frame %d subframe %d, UE %d/%x CC %d: dropping, not enough RBs
\n
"
,
module_idP
,
frameP
,
subframeP
,
UE_id
,
rnti
,
CC_id
);
break
;
}
// calculate the average rb ( remain UE)
total_rbs
=
frame_parms
->
N_RB_UL
-
2
-
first_rb
[
CC_id
];
}
// calculate the average rb ( remain UE)
total_rbs
=
frame_parms
->
N_RB_UL
-
1
-
first_rb
[
CC_id
];
average_rbs
=
(
int
)
round
((
double
)
total_rbs
/
(
double
)
ue_num_temp
);
if
(
average_rbs
<
3
)
{
ue_num_temp
--
;
...
...
@@ -2667,8 +2681,12 @@ void ulsch_scheduler_pre_processor(module_id_t module_idP,
}
else
{
// assigne RBS(remain rbs)
ulsch_ue_select
[
CC_id
].
list
[
ulsch_ue_num
].
start_rb
=
first_rb
[
CC_id
];
first_rb
[
CC_id
]
=
first_rb
[
CC_id
]
+
total_rbs
;
ulsch_ue_select
[
CC_id
].
list
[
ulsch_ue_num
].
nb_rb
=
first_rb
[
CC_id
]
-
ulsch_ue_select
[
CC_id
].
list
[
ulsch_ue_num
].
start_rb
;
rb_table_index
=
2
;
while
(
rb_table
[
rb_table_index
]
<=
total_rbs
){
rb_table_index
++
;
}
ulsch_ue_select
[
CC_id
].
list
[
ulsch_ue_num
].
nb_rb
=
rb_table
[
rb_table_index
-
1
];
first_rb
[
CC_id
]
=
first_rb
[
CC_id
]
+
rb_table
[
rb_table_index
-
1
];
}
}
}
else
{
...
...
@@ -2683,16 +2701,27 @@ void ulsch_scheduler_pre_processor(module_id_t module_idP,
rb_table_index
=
2
;
tbs
=
get_TBS_UL
(
mcs
,
rb_table
[
rb_table_index
])
<<
3
;
tx_power
=
estimate_ue_tx_power
(
tbs
,
rb_table
[
rb_table_index
],
0
,
frame_parms
->
Ncp
,
0
);
while
(
(((
UE_template
->
phr_info
-
tx_power
)
<
0
)
||
(
tbs
>
UE_template
->
ul_total_buffer
))
&&
(
mcs
>
3
)
)
{
mcs
--
;
tbs
=
get_TBS_UL
(
mcs
,
rb_table
[
rb_table_index
])
<<
3
;
tx_power
=
estimate_ue_tx_power
(
tbs
,
rb_table
[
rb_table_index
],
0
,
frame_parms
->
Ncp
,
0
);
}
while
(
(
tbs
<
UE_template
->
ul_total_buffer
)
&&
(
rb_table
[
rb_table_index
]
<
(
frame_parms
->
N_RB_UL
-
first_rb
[
CC_id
]))
&&
((
UE_template
->
phr_info
-
tx_power
)
>
0
)
&&
(
rb_table_index
<
32
))
{
rb_table_index
++
;
tbs
=
get_TBS_UL
(
mcs
,
rb_table
[
rb_table_index
])
<<
3
;
tx_power
=
estimate_ue_tx_power
(
tbs
,
rb_table
[
rb_table_index
],
0
,
frame_parms
->
Ncp
,
0
);
if
(
frame_parms
->
N_RB_UL
==
25
){
while
(
(
tbs
<
UE_template
->
ul_total_buffer
)
&&
(
rb_table
[
rb_table_index
]
<
(
frame_parms
->
N_RB_UL
-
1
-
first_rb
[
CC_id
]))
&&
((
UE_template
->
phr_info
-
tx_power
)
>
0
)
&&
(
rb_table_index
<
32
))
{
rb_table_index
++
;
tbs
=
get_TBS_UL
(
mcs
,
rb_table
[
rb_table_index
])
<<
3
;
tx_power
=
estimate_ue_tx_power
(
tbs
,
rb_table
[
rb_table_index
],
0
,
frame_parms
->
Ncp
,
0
);
}
}
else
{
while
(
(
tbs
<
UE_template
->
ul_total_buffer
)
&&
(
rb_table
[
rb_table_index
]
<
(
frame_parms
->
N_RB_UL
-
2
-
first_rb
[
CC_id
]))
&&
((
UE_template
->
phr_info
-
tx_power
)
>
0
)
&&
(
rb_table_index
<
32
))
{
rb_table_index
++
;
tbs
=
get_TBS_UL
(
mcs
,
rb_table
[
rb_table_index
])
<<
3
;
tx_power
=
estimate_ue_tx_power
(
tbs
,
rb_table
[
rb_table_index
],
0
,
frame_parms
->
Ncp
,
0
);
}
}
if
(
rb_table
[
rb_table_index
]
<
3
)
{
rb_table_index
=
2
;
...
...
openair2/LAYER2/MAC/rar_tools.c
View file @
aa0d93a9
...
...
@@ -71,7 +71,11 @@ fill_rar(const module_id_t module_idP,
ra
->
timing_offset
/=
16
;
//T_A = N_TA/16, where N_TA should be on a 30.72Msps
rar
[
0
]
=
(
uint8_t
)
(
ra
->
timing_offset
>>
(
2
+
4
));
// 7 MSBs of timing advance + divide by 4
rar
[
1
]
=
(
uint8_t
)
(
ra
->
timing_offset
<<
(
4
-
2
))
&
0xf0
;
// 4 LSBs of timing advance + divide by 4
ra
->
msg3_first_rb
=
1
;
if
(
N_RB_UL
==
25
){
ra
->
msg3_first_rb
=
1
;
}
else
{
ra
->
msg3_first_rb
=
2
;
}
ra
->
msg3_nb_rb
=
1
;
uint16_t
rballoc
=
mac_computeRIV
(
N_RB_UL
,
ra
->
msg3_first_rb
,
ra
->
msg3_nb_rb
);
// first PRB only for UL Grant
rar
[
1
]
|=
(
rballoc
>>
7
)
&
7
;
// Hopping = 0 (bit 3), 3 MSBs of rballoc
...
...
openair2/RRC/LITE/MESSAGES/asn1_msg.c
View file @
aa0d93a9
...
...
@@ -656,10 +656,10 @@ uint8_t do_SIB23(uint8_t Mod_id,
=
configuration
->
pucch_nRB_CQI
[
CC_id
];
(
*
sib2
)
->
radioResourceConfigCommon
.
pucch_ConfigCommon
.
nCS_AN
=
configuration
->
pucch_nCS_AN
[
CC_id
];
#if !defined(Rel10) && !defined(Rel14)
//
#if !defined(Rel10) && !defined(Rel14)
(
*
sib2
)
->
radioResourceConfigCommon
.
pucch_ConfigCommon
.
n1PUCCH_AN
=
configuration
->
pucch_n1_AN
[
CC_id
];
#endif
//
#endif
// SRS Config
if
(
configuration
->
srs_enable
[
CC_id
]
==
1
)
{
...
...
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