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
lizhongxiao
OpenXG-RAN
Commits
6d21972e
Commit
6d21972e
authored
Apr 03, 2018
by
wujing
Browse files
Options
Browse Files
Download
Plain Diff
merge ues_test branch
parents
2505f15e
8f86f38d
Changes
10
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
63 additions
and
23 deletions
+63
-23
openair1/PHY/LTE_TRANSPORT/dci_tools.c
openair1/PHY/LTE_TRANSPORT/dci_tools.c
+12
-4
openair1/SCHED/fapi_l1.c
openair1/SCHED/fapi_l1.c
+16
-8
openair2/LAYER2/MAC/eNB_scheduler_RA.c
openair2/LAYER2/MAC/eNB_scheduler_RA.c
+7
-3
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
+10
-0
openair2/LAYER2/MAC/pre_processor.c
openair2/LAYER2/MAC/pre_processor.c
+4
-4
openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.c
openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.c
+1
-0
openair2/LAYER2/RLC/UM_v9.3.0/rlc_um.c
openair2/LAYER2/RLC/UM_v9.3.0/rlc_um.c
+1
-0
openair2/LAYER2/RLC/rlc.c
openair2/LAYER2/RLC/rlc.c
+4
-0
openair2/LAYER2/RLC/rlc_mac.c
openair2/LAYER2/RLC/rlc_mac.c
+1
-0
openair2/RRC/LITE/rrc_eNB.c
openair2/RRC/LITE/rrc_eNB.c
+7
-4
No files found.
openair1/PHY/LTE_TRANSPORT/dci_tools.c
View file @
6d21972e
...
...
@@ -1052,8 +1052,12 @@ void fill_dci_and_dlsch(PHY_VARS_eNB *eNB,int frame,int subframe,eNB_rxtx_proc_t
if
((
rel8
->
rnti_type
==
2
)
&&
(
rel8
->
rnti
!=
SI_RNTI
)
&&
(
rel8
->
rnti
!=
P_RNTI
))
dci_alloc
->
ra_flag
=
1
;
UE_id
=
find_dlsch
(
rel8
->
rnti
,
eNB
,
SEARCH_EXIST_OR_FREE
);
AssertFatal
(
UE_id
!=-
1
,
"no free or exiting dlsch_context
\n
"
);
AssertFatal
(
UE_id
<
NUMBER_OF_UE_MAX
,
"returned UE_id %d >= %d(NUMBER_OF_UE_MAX)
\n
"
,
UE_id
,
NUMBER_OF_UE_MAX
);
if
(
(
UE_id
<
0
)
||
(
UE_id
>=
NUMBER_OF_UE_MAX
)
){
LOG_E
(
PHY
,
"illegal UE_id found!!! rnti %04x UE_id %d
\n
"
,
rel8
->
rnti
,
UE_id
);
return
;
}
//AssertFatal(UE_id!=-1,"no free or exiting dlsch_context\n");
//AssertFatal(UE_id<NUMBER_OF_UE_MAX,"returned UE_id %d >= %d(NUMBER_OF_UE_MAX)\n",UE_id,NUMBER_OF_UE_MAX);
dlsch0
=
eNB
->
dlsch
[
UE_id
][
0
];
dlsch1
=
eNB
->
dlsch
[
UE_id
][
1
];
...
...
@@ -2309,8 +2313,12 @@ void fill_mdci_and_dlsch(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,mDCI_ALLOC_t *d
if
(
rel13
->
rnti_type
==
2
)
dci_alloc
->
ra_flag
=
1
;
UE_id
=
find_dlsch
(
rel13
->
rnti
,
eNB
,
SEARCH_EXIST_OR_FREE
);
AssertFatal
(
UE_id
!=-
1
,
"no free or exiting dlsch_context
\n
"
);
AssertFatal
(
UE_id
<
NUMBER_OF_UE_MAX
,
"returned UE_id %d >= %d(NUMBER_OF_UE_MAX)
\n
"
,
UE_id
,
NUMBER_OF_UE_MAX
);
if
(
(
UE_id
<
0
)
||
(
UE_id
>=
NUMBER_OF_UE_MAX
)
){
LOG_E
(
PHY
,
"illegal UE_id found!!! rnti %04x UE_id %d
\n
"
,
rel13
->
rnti
,
UE_id
);
return
;
}
//AssertFatal(UE_id!=-1,"no free or exiting dlsch_context\n");
//AssertFatal(UE_id<NUMBER_OF_UE_MAX,"returned UE_id %d >= %d(NUMBER_OF_UE_MAX)\n",UE_id,NUMBER_OF_UE_MAX);
dlsch0
=
eNB
->
dlsch
[
UE_id
][
0
];
dlsch0_harq
=
dlsch0
->
harq_processes
[
rel13
->
harq_process
];
...
...
openair1/SCHED/fapi_l1.c
View file @
6d21972e
...
...
@@ -154,8 +154,12 @@ void handle_nfapi_dlsch_pdu(PHY_VARS_eNB *eNB,int frame,int subframe,eNB_rxtx_pr
int
harq_pid
;
UE_id
=
find_dlsch
(
rel8
->
rnti
,
eNB
,
SEARCH_EXIST_OR_FREE
);
AssertFatal
(
UE_id
!=-
1
,
"no free or exiting dlsch_context
\n
"
);
AssertFatal
(
UE_id
<
NUMBER_OF_UE_MAX
,
"returned UE_id %d >= %d(NUMBER_OF_UE_MAX)
\n
"
,
UE_id
,
NUMBER_OF_UE_MAX
);
if
(
(
UE_id
<
0
)
||
(
UE_id
>=
NUMBER_OF_UE_MAX
)
){
LOG_E
(
PHY
,
"illegal UE_id found!!! rnti %04x UE_id %d
\n
"
,
rel8
->
rnti
,
UE_id
);
return
;
}
//AssertFatal(UE_id!=-1,"no free or exiting dlsch_context\n");
//AssertFatal(UE_id<NUMBER_OF_UE_MAX,"returned UE_id %d >= %d(NUMBER_OF_UE_MAX)\n",UE_id,NUMBER_OF_UE_MAX);
dlsch0
=
eNB
->
dlsch
[
UE_id
][
0
];
dlsch1
=
eNB
->
dlsch
[
UE_id
][
1
];
...
...
@@ -207,12 +211,16 @@ void handle_nfapi_dlsch_pdu(PHY_VARS_eNB *eNB,int frame,int subframe,eNB_rxtx_pr
dlsch0_harq
->
pdsch_start
=
eNB
->
pdcch_vars
[
subframe
&
1
].
num_pdcch_symbols
;
if
(
dlsch0_harq
->
round
==
0
)
{
//get pointer to SDU if this a new SDU
AssertFatal
(
sdu
!=
NULL
,
"NFAPI: SFN/SF:%04d%d proc:TX:[frame %d subframe %d]: programming dlsch for round 0, rnti %x, UE_id %d, harq_pid %d : sdu is null for pdu_index %d dlsch0_harq[round:%d SFN/SF:%d%d pdu:%p mcs:%d ndi:%d pdschstart:%d]
\n
"
,
frame
,
subframe
,
proc
->
frame_tx
,
proc
->
subframe_tx
,
rel8
->
rnti
,
UE_id
,
harq_pid
,
dl_config_pdu
->
dlsch_pdu
.
dlsch_pdu_rel8
.
pdu_index
,
dlsch0_harq
->
round
,
dlsch0_harq
->
frame
,
dlsch0_harq
->
subframe
,
dlsch0_harq
->
pdu
,
dlsch0_harq
->
mcs
,
dlsch0_harq
->
ndi
,
dlsch0_harq
->
pdsch_start
);
if
(
rel8
->
rnti
!=
0xFFFF
)
LOG_D
(
PHY
,
"NFAPI: SFN/SF:%04d%d proc:TX:[frame %d, subframe %d]: programming dlsch for round 0, rnti %x, UE_id %d, harq_pid %d
\n
"
,
frame
,
subframe
,
proc
->
frame_tx
,
proc
->
subframe_tx
,
rel8
->
rnti
,
UE_id
,
harq_pid
);
if
(
sdu
==
NULL
)
{
LOG_E
(
PHY
,
"NFAPI: frame %d, subframe %d: programming dlsch for round 0, rnti %x, UE_id %d, harq_pid %d : sdu is null for pdu_index %d
\n
"
,
proc
->
frame_tx
,
proc
->
subframe_tx
,
rel8
->
rnti
,
UE_id
,
harq_pid
,
dl_config_pdu
->
dlsch_pdu
.
dlsch_pdu_rel8
.
pdu_index
);
return
;
}
//AssertFatal(sdu!=NULL,"NFAPI: frame %d, subframe %d: programming dlsch for round 0, rnti %x, UE_id %d, harq_pid %d : sdu is null for pdu_index %d\n",
// proc->frame_tx,proc->subframe_tx,rel8->rnti,UE_id,harq_pid,
// dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.pdu_index);
if
(
rel8
->
rnti
!=
0xFFFF
)
LOG_D
(
PHY
,
"NFAPI: frame %d, subframe %d: programming dlsch for round 0, rnti %x, UE_id %d, harq_pid %d
\n
"
,
proc
->
frame_tx
,
proc
->
subframe_tx
,
rel8
->
rnti
,
UE_id
,
harq_pid
);
if
(
codeword_index
==
0
)
dlsch0_harq
->
pdu
=
sdu
;
else
dlsch1_harq
->
pdu
=
sdu
;
}
...
...
openair2/LAYER2/MAC/eNB_scheduler_RA.c
View file @
6d21972e
...
...
@@ -859,8 +859,12 @@ generate_Msg4(module_id_t module_idP, int CC_idP, frame_t frameP,
rrc_sdu_length
=
mac_rrc_data_req
(
module_idP
,
CC_idP
,
frameP
,
CCCH
,
1
,
// 1 transport block
&
cc
[
CC_idP
].
CCCH_pdu
.
payload
[
0
],
ENB_FLAG_YES
,
module_idP
,
0
);
// not used in this case
AssertFatal
(
rrc_sdu_length
>
0
,
"[MAC][eNB Scheduler] CCCH not allocated
\n
"
);
if
(
rrc_sdu_length
<=
0
)
{
LOG_D
(
MAC
,
"[MAC][eNB Scheduler] CCCH not allocated
\n
%d"
,
rrc_sdu_length
);
return
;
}
//AssertFatal(rrc_sdu_length > 0,
//"[MAC][eNB Scheduler] CCCH not allocated\n");
LOG_D
(
MAC
,
...
...
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
View file @
6d21972e
...
...
@@ -1918,6 +1918,14 @@ void schedule_ulsch_rnti(module_id_t module_idP,
UE_sched_ctrl
->
ul_scheduled
|=
(
1
<<
harq_pid
);
if
(
UE_id
==
UE_list
->
head
)
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_UE0_SCHEDULED
,
UE_sched_ctrl
->
ul_scheduled
);
// adjust total UL buffer status by TBS, wait for UL sdus to do final update
/*LOG_D(MAC,"[eNB %d] CC_id %d UE %d/%x : adjusting ul_total_buffer, old %d, TBS %d\n", module_idP,CC_id,UE_id,rnti,UE_template->ul_total_buffer,UE_template->TBS_UL[harq_pid]);
if (UE_template->ul_total_buffer > UE_template->TBS_UL[harq_pid])
UE_template->ul_total_buffer -= UE_template->TBS_UL[harq_pid];
else
UE_template->ul_total_buffer = 0;
LOG_D(MAC,"ul_total_buffer, new %d\n", UE_template->ul_total_buffer);*/
// Cyclic shift for DM RS
cshift
=
0
;
// values from 0 to 7 can be used for mapping the cyclic shift (36.211 , Table 5.5.2.1.1-1)
// save it for a potential retransmission
...
...
@@ -2021,6 +2029,7 @@ void schedule_ulsch_rnti(module_id_t module_idP,
// increment first rb for next UE allocation
first_rb
[
CC_id
]
+=
rb_table
[
rb_table_index
];
if
(
ulsch_ue_select
[
CC_id
].
list
[
ulsch_ue_num
].
ue_priority
==
SCH_UL_FIRST
)
{
LOG_D
(
MAC
,
"[eNB %d] CC_id %d UE %d/%x : adjusting ul_total_buffer, old %d, TBS %d
\n
"
,
module_idP
,
CC_id
,
UE_id
,
rnti
,
UE_template
->
ul_total_buffer
,
UE_template
->
TBS_UL
[
harq_pid
]);
if
(
ulsch_ue_select
[
CC_id
].
list
[
ulsch_ue_num
].
ul_total_buffer
>
0
){
LOG_D
(
MAC
,
"[eNB %d] CC_id %d UE %d/%x : adjusting ul_total_buffer, old %d, TBS %d
\n
"
,
module_idP
,
CC_id
,
UE_id
,
rnti
,
UE_template
->
ul_total_buffer
,
UE_template
->
TBS_UL
[
harq_pid
]);
...
...
@@ -2032,6 +2041,7 @@ void schedule_ulsch_rnti(module_id_t module_idP,
}
else
{
UE_template
->
ul_SR
=
0
;
}
LOG_D
(
MAC
,
"ul_total_buffer, new %d
\n
"
,
UE_template
->
ul_total_buffer
);
}
if
((
ulsch_ue_select
[
CC_id
].
list
[
ulsch_ue_num
].
ue_priority
==
SCH_UL_INACTIVE
)
&&
(
ULSCH_first_end
==
0
))
{
ULSCH_first_end
=
1
;
...
...
openair2/LAYER2/MAC/pre_processor.c
View file @
6d21972e
...
...
@@ -2797,13 +2797,13 @@ void ulsch_scheduler_pre_processor(module_id_t module_idP,
if
(
ulsch_ue_select
[
CC_id
].
list
[
ulsch_ue_num
].
ue_priority
==
SCH_UL_FIRST
)
{
if
(
ulsch_ue_select
[
CC_id
].
list
[
ulsch_ue_num
].
ul_total_buffer
>
0
)
{
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
);
tbs
=
get_TBS_UL
(
mcs
,
rb_table
[
rb_table_index
]);
tx_power
=
estimate_ue_tx_power
(
tbs
*
8
,
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
);
tbs
=
get_TBS_UL
(
mcs
,
rb_table
[
rb_table_index
]);
tx_power
=
estimate_ue_tx_power
(
tbs
*
8
,
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
-
num_pucch_rb
-
first_rb
[
CC_id
]))
&&
...
...
openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.c
View file @
6d21972e
...
...
@@ -509,6 +509,7 @@ rlc_am_rx (
default:
LOG_E
(
RLC
,
PROTOCOL_RLC_AM_CTXT_FMT
" TX UNKNOWN PROTOCOL STATE 0x%02X
\n
"
,
PROTOCOL_RLC_AM_CTXT_ARGS
(
ctxt_pP
,
rlc
),
rlc
->
protocol_state
);
list_free
(
&
data_indP
.
data
);
}
}
...
...
openair2/LAYER2/RLC/UM_v9.3.0/rlc_um.c
View file @
6d21972e
...
...
@@ -421,6 +421,7 @@ rlc_um_rx (const protocol_ctxt_t* const ctxt_pP, void *argP, struct mac_data_ind
LOG_E
(
RLC
,
PROTOCOL_RLC_UM_CTXT_FMT
" TX UNKNOWN PROTOCOL STATE %02X hex
\n
"
,
PROTOCOL_RLC_UM_CTXT_ARGS
(
ctxt_pP
,
l_rlc_p
),
l_rlc_p
->
protocol_state
);
list_free
(
&
data_indP
.
data
);
}
}
...
...
openair2/LAYER2/RLC/rlc.c
View file @
6d21972e
...
...
@@ -431,6 +431,7 @@ rlc_op_status_t rlc_data_req (const protocol_ctxt_t* const ctxt_pP,
return
RLC_OP_STATUS_OK
;
}
else
{
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_DATA_REQ
,
VCD_FUNCTION_OUT
);
free_mem_block
(
sdu_pP
,
__func__
);
return
RLC_OP_STATUS_INTERNAL_ERROR
;
}
...
...
@@ -455,6 +456,7 @@ rlc_op_status_t rlc_data_req (const protocol_ctxt_t* const ctxt_pP,
return
RLC_OP_STATUS_OK
;
}
else
{
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_DATA_REQ
,
VCD_FUNCTION_OUT
);
free_mem_block
(
sdu_pP
,
__func__
);
return
RLC_OP_STATUS_INTERNAL_ERROR
;
}
...
...
@@ -477,6 +479,7 @@ rlc_op_status_t rlc_data_req (const protocol_ctxt_t* const ctxt_pP,
}
else
{
//handle_event(ERROR,"FILE %s FONCTION rlc_data_req() LINE %s : out of memory\n", __FILE__, __LINE__);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_DATA_REQ
,
VCD_FUNCTION_OUT
);
free_mem_block
(
sdu_pP
,
__func__
);
return
RLC_OP_STATUS_INTERNAL_ERROR
;
}
...
...
@@ -511,6 +514,7 @@ rlc_op_status_t rlc_data_req (const protocol_ctxt_t* const ctxt_pP,
return
RLC_OP_STATUS_OK
;
}
else
{
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_DATA_REQ
,
VCD_FUNCTION_OUT
);
free_mem_block
(
sdu_pP
,
__func__
);
return
RLC_OP_STATUS_BAD_PARAMETER
;
}
}
else
{
...
...
openair2/LAYER2/RLC/rlc_mac.c
View file @
6d21972e
...
...
@@ -280,6 +280,7 @@ void mac_rlc_data_ind (
switch
(
rlc_mode
)
{
case
RLC_MODE_NONE
:
//handle_event(WARNING,"FILE %s FONCTION mac_rlc_data_ind() LINE %s : no radio bearer configured :%d\n", __FILE__, __LINE__, channel_idP);
list_free
(
&
data_ind
.
data
);
break
;
case
RLC_MODE_AM
:
...
...
openair2/RRC/LITE/rrc_eNB.c
View file @
6d21972e
...
...
@@ -930,6 +930,7 @@ void release_UE_in_freeList(module_id_t mod_id)
int
i
,
j
,
CC_id
,
pdu_number
;
protocol_ctxt_t
ctxt
;
LTE_eNB_ULSCH_t
*
ulsch
=
NULL
;
LTE_eNB_DLSCH_t
*
dlsch
=
NULL
;
nfapi_ul_config_request_body_t
*
ul_req_tmp
=
NULL
;
PHY_VARS_eNB
*
eNB_PHY
=
NULL
;
struct
rrc_eNB_ue_context_s
*
ue_context_pP
=
NULL
;
...
...
@@ -969,10 +970,12 @@ void release_UE_in_freeList(module_id_t mod_id)
memset
(
&
eNB_PHY
->
uci_vars
[
i
],
0
,
sizeof
(
LTE_eNB_UCI
));
}
}
ulsch
=
eNB_PHY
->
ulsch
[
i
];
if
((
ulsch
!=
NULL
)
&&
(
ulsch
->
rnti
==
rnti
)){
LOG_I
(
RRC
,
"clean_eNb_ulsch ulsch[%d] UE %x
\n
"
,
i
,
rnti
);
clean_eNb_ulsch
(
ulsch
);
for
(
i
=
0
;
i
<
NUMBER_OF_UE_MAX
;
i
++
)
{
dlsch
=
eNB_PHY
->
dlsch
[
i
][
0
];
if
((
dlsch
!=
NULL
)
&&
(
dlsch
->
rnti
==
rnti
)){
LOG_I
(
RRC
,
"clean_eNb_dlsch dlsch[%d] UE %x
\n
"
,
i
,
rnti
);
clean_eNb_dlsch
(
dlsch
);
}
}
for
(
j
=
0
;
j
<
10
;
j
++
){
...
...
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