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
alex037yang
OpenXG-RAN
Commits
8fffe90d
Commit
8fffe90d
authored
Feb 08, 2018
by
wujing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix hundreds_of_ues issue(n1_PUCCH_AN DAI) for TDD cofnig1
parent
e8300aa9
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
111 additions
and
20 deletions
+111
-20
nfapi/open-nFAPI/nfapi/public_inc/nfapi_interface.h
nfapi/open-nFAPI/nfapi/public_inc/nfapi_interface.h
+1
-0
openair1/PHY/LTE_TRANSPORT/dci_tools.c
openair1/PHY/LTE_TRANSPORT/dci_tools.c
+9
-0
openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
+2
-0
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
+73
-19
openair2/RRC/LITE/MESSAGES/asn1_msg.c
openair2/RRC/LITE/MESSAGES/asn1_msg.c
+26
-1
No files found.
nfapi/open-nFAPI/nfapi/public_inc/nfapi_interface.h
View file @
8fffe90d
...
@@ -2218,6 +2218,7 @@ typedef struct {
...
@@ -2218,6 +2218,7 @@ typedef struct {
uint8_t
dl_assignment_index
;
uint8_t
dl_assignment_index
;
uint32_t
tpc_bitmap
;
uint32_t
tpc_bitmap
;
uint16_t
transmission_power
;
uint16_t
transmission_power
;
uint8_t
harq_pid
;
}
nfapi_hi_dci0_dci_pdu_rel8_t
;
}
nfapi_hi_dci0_dci_pdu_rel8_t
;
#define NFAPI_HI_DCI0_REQUEST_DCI_PDU_REL8_TAG 0x2020
#define NFAPI_HI_DCI0_REQUEST_DCI_PDU_REL8_TAG 0x2020
...
...
openair1/PHY/LTE_TRANSPORT/dci_tools.c
View file @
8fffe90d
...
@@ -2565,6 +2565,8 @@ void fill_dci0(PHY_VARS_eNB *eNB,int frame,int subframe,eNB_rxtx_proc_t *proc,
...
@@ -2565,6 +2565,8 @@ void fill_dci0(PHY_VARS_eNB *eNB,int frame,int subframe,eNB_rxtx_proc_t *proc,
uint32_t
ndi
=
pdu
->
dci_pdu_rel8
.
new_data_indication_1
;
uint32_t
ndi
=
pdu
->
dci_pdu_rel8
.
new_data_indication_1
;
uint16_t
UE_id
=
-
1
;
#ifdef T_TRACER
#ifdef T_TRACER
T
(
T_ENB_PHY_ULSCH_UE_DCI
,
T_INT
(
eNB
->
Mod_id
),
T_INT
(
frame
),
T_INT
(
subframe
),
T
(
T_ENB_PHY_ULSCH_UE_DCI
,
T_INT
(
eNB
->
Mod_id
),
T_INT
(
frame
),
T_INT
(
subframe
),
T_INT
(
pdu
->
dci_pdu_rel8
.
rnti
),
T_INT
(((
frame
*
10
+
subframe
+
4
)
%
8
)
/* TODO: correct harq pid */
),
T_INT
(
pdu
->
dci_pdu_rel8
.
rnti
),
T_INT
(((
frame
*
10
+
subframe
+
4
)
%
8
)
/* TODO: correct harq pid */
),
...
@@ -2710,6 +2712,13 @@ void fill_dci0(PHY_VARS_eNB *eNB,int frame,int subframe,eNB_rxtx_proc_t *proc,
...
@@ -2710,6 +2712,13 @@ void fill_dci0(PHY_VARS_eNB *eNB,int frame,int subframe,eNB_rxtx_proc_t *proc,
DevParam
(
frame_parms
->
N_RB_DL
,
0
,
0
);
DevParam
(
frame_parms
->
N_RB_DL
,
0
,
0
);
break
;
break
;
}
}
if
(
frame_parms
->
frame_type
==
TDD
){
UE_id
=
find_ulsch
(
pdu
->
dci_pdu_rel8
.
rnti
,
eNB
,
SEARCH_EXIST_OR_FREE
);
if
(
UE_id
!=
-
1
){
eNB
->
ulsch
[
UE_id
]
->
harq_processes
[
pdu
->
dci_pdu_rel8
.
harq_pid
]
->
V_UL_DAI
=
dai
+
1
;
}
}
}
}
void
fill_ulsch
(
PHY_VARS_eNB
*
eNB
,
int
UE_id
,
nfapi_ul_config_ulsch_pdu
*
ulsch_pdu
,
int
frame
,
int
subframe
)
void
fill_ulsch
(
PHY_VARS_eNB
*
eNB
,
int
UE_id
,
nfapi_ul_config_ulsch_pdu
*
ulsch_pdu
,
int
frame
,
int
subframe
)
...
...
openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
View file @
8fffe90d
...
@@ -338,6 +338,7 @@ set_ul_DAI(int module_idP, int UE_idP, int CC_idP, int frameP,
...
@@ -338,6 +338,7 @@ set_ul_DAI(int module_idP, int UE_idP, int CC_idP, int frameP,
case
1
:
case
1
:
switch
(
subframeP
)
{
switch
(
subframeP
)
{
case
0
:
case
1
:
case
1
:
UE_list
->
UE_template
[
CC_idP
][
UE_idP
].
DAI_ul
[
7
]
=
DAI
;
UE_list
->
UE_template
[
CC_idP
][
UE_idP
].
DAI_ul
[
7
]
=
DAI
;
break
;
break
;
...
@@ -346,6 +347,7 @@ set_ul_DAI(int module_idP, int UE_idP, int CC_idP, int frameP,
...
@@ -346,6 +347,7 @@ set_ul_DAI(int module_idP, int UE_idP, int CC_idP, int frameP,
UE_list
->
UE_template
[
CC_idP
][
UE_idP
].
DAI_ul
[
8
]
=
DAI
;
UE_list
->
UE_template
[
CC_idP
][
UE_idP
].
DAI_ul
[
8
]
=
DAI
;
break
;
break
;
case
5
:
case
6
:
case
6
:
UE_list
->
UE_template
[
CC_idP
][
UE_idP
].
DAI_ul
[
2
]
=
DAI
;
UE_list
->
UE_template
[
CC_idP
][
UE_idP
].
DAI_ul
[
2
]
=
DAI
;
break
;
break
;
...
...
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
View file @
8fffe90d
...
@@ -1097,10 +1097,25 @@ schedule_ulsch(module_id_t module_idP, frame_t frameP,
...
@@ -1097,10 +1097,25 @@ schedule_ulsch(module_id_t module_idP, frame_t frameP,
for
(
i
=
0
;
i
<
NB_RA_PROC_MAX
;
i
++
)
{
for
(
i
=
0
;
i
<
NB_RA_PROC_MAX
;
i
++
)
{
if
((
cc
->
ra
[
i
].
state
==
WAITMSG3
)
&&
(
cc
->
ra
[
i
].
Msg3_subframe
==
sched_subframe
))
{
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
].
ue_priority
=
SCH_UL_MSG3
;
if
(
frame_parms
->
N_RB_UL
==
25
){
if
(
cc
->
tdd_Config
==
NULL
)
{
ulsch_ue_select
[
CC_id
].
list
[
ulsch_ue_select
[
CC_id
].
ue_num
].
start_rb
=
1
;
if
(
frame_parms
->
N_RB_UL
==
25
){
}
else
{
ulsch_ue_select
[
CC_id
].
list
[
ulsch_ue_select
[
CC_id
].
ue_num
].
start_rb
=
1
;
ulsch_ue_select
[
CC_id
].
list
[
ulsch_ue_select
[
CC_id
].
ue_num
].
start_rb
=
2
;
}
else
{
ulsch_ue_select
[
CC_id
].
list
[
ulsch_ue_select
[
CC_id
].
ue_num
].
start_rb
=
2
;
}
}
else
{
switch
(
frame_parms
->
N_RB_UL
){
case
25
:
default:
ulsch_ue_select
[
CC_id
].
list
[
ulsch_ue_select
[
CC_id
].
ue_num
].
start_rb
=
1
;
break
;
case
50
:
ulsch_ue_select
[
CC_id
].
list
[
ulsch_ue_select
[
CC_id
].
ue_num
].
start_rb
=
2
;
break
;
case
100
:
ulsch_ue_select
[
CC_id
].
list
[
ulsch_ue_select
[
CC_id
].
ue_num
].
start_rb
=
3
;
break
;
}
}
}
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
].
nb_rb
=
1
;
ulsch_ue_select
[
CC_id
].
list
[
ulsch_ue_select
[
CC_id
].
ue_num
].
UE_id
=
-
1
;
ulsch_ue_select
[
CC_id
].
list
[
ulsch_ue_select
[
CC_id
].
ue_num
].
UE_id
=
-
1
;
...
@@ -1696,25 +1711,62 @@ void schedule_ulsch_rnti(module_id_t module_idP,
...
@@ -1696,25 +1711,62 @@ void schedule_ulsch_rnti(module_id_t module_idP,
// This is the actual CC_id in the list
// This is the actual CC_id in the list
N_RB_UL
=
to_prb
(
cc
->
mib
->
message
.
dl_Bandwidth
);
N_RB_UL
=
to_prb
(
cc
->
mib
->
message
.
dl_Bandwidth
);
//leave out first RB for PUCCH
//leave out first RB for PUCCH
if
(
N_RB_UL
==
25
){
if
(
cc
->
tdd_Config
==
NULL
)
{
first_rb
[
CC_id
]
=
1
;
if
(
N_RB_UL
==
25
){
}
else
{
first_rb
[
CC_id
]
=
1
;
first_rb
[
CC_id
]
=
2
;
}
else
{
first_rb
[
CC_id
]
=
2
;
}
}
else
{
switch
(
N_RB_UL
){
case
25
:
default:
first_rb
[
CC_id
]
=
1
;
break
;
case
50
:
first_rb
[
CC_id
]
=
2
;
break
;
case
100
:
first_rb
[
CC_id
]
=
3
;
break
;
}
}
}
for
(
ulsch_ue_num
=
0
;
ulsch_ue_num
<
ulsch_ue_select
[
CC_id
].
ue_num
;
ulsch_ue_num
++
)
{
for
(
ulsch_ue_num
=
0
;
ulsch_ue_num
<
ulsch_ue_select
[
CC_id
].
ue_num
;
ulsch_ue_num
++
)
{
UE_id
=
ulsch_ue_select
[
CC_id
].
list
[
ulsch_ue_num
].
UE_id
;
UE_id
=
ulsch_ue_select
[
CC_id
].
list
[
ulsch_ue_num
].
UE_id
;
/* be sure that there are some free RBs */
/* be sure that there are some free RBs */
if
(
N_RB_UL
==
25
){
if
(
cc
->
tdd_Config
==
NULL
){
if
(
first_rb
[
CC_id
]
>=
N_RB_UL
-
1
)
{
if
(
N_RB_UL
==
25
){
LOG_W
(
MAC
,
"[eNB %d] frame %d subframe %d, UE %d/%x CC %d: dropping, not enough RBs
\n
"
,
if
(
first_rb
[
CC_id
]
>=
N_RB_UL
-
1
)
{
module_idP
,
frameP
,
subframeP
,
UE_id
,
rnti
,
CC_id
);
LOG_W
(
MAC
,
"[eNB %d] frame %d subframe %d, UE %d/%x CC %d: dropping, not enough RBs
\n
"
,
break
;
module_idP
,
frameP
,
subframeP
,
UE_id
,
rnti
,
CC_id
);
}
break
;
}
else
{
}
if
(
first_rb
[
CC_id
]
>=
N_RB_UL
-
2
)
{
}
else
{
LOG_W
(
MAC
,
"[eNB %d] frame %d subframe %d, UE %d/%x CC %d: dropping, not enough RBs
\n
"
,
if
(
first_rb
[
CC_id
]
>=
N_RB_UL
-
2
)
{
module_idP
,
frameP
,
subframeP
,
UE_id
,
rnti
,
CC_id
);
LOG_W
(
MAC
,
"[eNB %d] frame %d subframe %d, UE %d/%x CC %d: dropping, not enough RBs
\n
"
,
break
;
module_idP
,
frameP
,
subframeP
,
UE_id
,
rnti
,
CC_id
);
break
;
}
}
}
else
{
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 N_RB_UL %d first_rb %d: dropping, not enough RBs
\n
"
,
module_idP
,
frameP
,
subframeP
,
UE_id
,
rnti
,
CC_id
,
N_RB_UL
,
first_rb
);
break
;
}
}
else
if
(
N_RB_UL
==
50
){
if
(
first_rb
[
CC_id
]
>=
N_RB_UL
-
2
)
{
LOG_W
(
MAC
,
"[eNB %d] frame %d subframe %d, UE %d/%x CC %d N_RB_UL %d first_rb %d: dropping, not enough RBs
\n
"
,
module_idP
,
frameP
,
subframeP
,
UE_id
,
rnti
,
CC_id
,
N_RB_UL
,
first_rb
);
break
;
}
}
else
if
(
N_RB_UL
==
100
){
if
(
first_rb
[
CC_id
]
>=
N_RB_UL
-
3
)
{
LOG_W
(
MAC
,
"[eNB %d] frame %d subframe %d, UE %d/%x CC %d N_RB_UL %d first_rb %d: dropping, not enough RBs
\n
"
,
module_idP
,
frameP
,
subframeP
,
UE_id
,
rnti
,
CC_id
,
N_RB_UL
,
first_rb
);
break
;
}
}
}
}
}
//MSG3
//MSG3
...
@@ -1857,6 +1909,7 @@ void schedule_ulsch_rnti(module_id_t module_idP,
...
@@ -1857,6 +1909,7 @@ void schedule_ulsch_rnti(module_id_t module_idP,
hi_dci0_pdu
->
dci_pdu
.
dci_pdu_rel8
.
tpc
=
tpc
;
hi_dci0_pdu
->
dci_pdu
.
dci_pdu_rel8
.
tpc
=
tpc
;
hi_dci0_pdu
->
dci_pdu
.
dci_pdu_rel8
.
cqi_csi_request
=
cqi_req
;
hi_dci0_pdu
->
dci_pdu
.
dci_pdu_rel8
.
cqi_csi_request
=
cqi_req
;
hi_dci0_pdu
->
dci_pdu
.
dci_pdu_rel8
.
dl_assignment_index
=
UE_template
->
DAI_ul
[
sched_subframeP
];
hi_dci0_pdu
->
dci_pdu
.
dci_pdu_rel8
.
dl_assignment_index
=
UE_template
->
DAI_ul
[
sched_subframeP
];
hi_dci0_pdu
->
dci_pdu
.
dci_pdu_rel8
.
harq_pid
=
harq_pid
;
hi_dci0_req
->
number_of_dci
++
;
hi_dci0_req
->
number_of_dci
++
;
...
@@ -1971,6 +2024,7 @@ void schedule_ulsch_rnti(module_id_t module_idP,
...
@@ -1971,6 +2024,7 @@ void schedule_ulsch_rnti(module_id_t module_idP,
hi_dci0_pdu
->
dci_pdu
.
dci_pdu_rel8
.
tpc
=
tpc
;
hi_dci0_pdu
->
dci_pdu
.
dci_pdu_rel8
.
tpc
=
tpc
;
hi_dci0_pdu
->
dci_pdu
.
dci_pdu_rel8
.
cqi_csi_request
=
cqi_req
;
hi_dci0_pdu
->
dci_pdu
.
dci_pdu_rel8
.
cqi_csi_request
=
cqi_req
;
hi_dci0_pdu
->
dci_pdu
.
dci_pdu_rel8
.
dl_assignment_index
=
UE_template
->
DAI_ul
[
sched_subframeP
];
hi_dci0_pdu
->
dci_pdu
.
dci_pdu_rel8
.
dl_assignment_index
=
UE_template
->
DAI_ul
[
sched_subframeP
];
hi_dci0_pdu
->
dci_pdu
.
dci_pdu_rel8
.
harq_pid
=
harq_pid
;
hi_dci0_req
->
number_of_dci
++
;
hi_dci0_req
->
number_of_dci
++
;
// fill in NAK information
// fill in NAK information
...
...
openair2/RRC/LITE/MESSAGES/asn1_msg.c
View file @
8fffe90d
...
@@ -1267,6 +1267,10 @@ do_RRCConnectionSetup(
...
@@ -1267,6 +1267,10 @@ do_RRCConnectionSetup(
RRCConnectionSetup_t
*
rrcConnectionSetup
=
NULL
;
RRCConnectionSetup_t
*
rrcConnectionSetup
=
NULL
;
#ifdef UE_EXPANSION
LTE_DL_FRAME_PARMS
*
frame_parms
=
&
RC
.
eNB
[
ctxt_pP
->
module_id
][
CC_id
]
->
frame_parms
;
#endif
memset
((
void
*
)
&
dl_ccch_msg
,
0
,
sizeof
(
DL_CCCH_Message_t
));
memset
((
void
*
)
&
dl_ccch_msg
,
0
,
sizeof
(
DL_CCCH_Message_t
));
dl_ccch_msg
.
message
.
present
=
DL_CCCH_MessageType_PR_c1
;
dl_ccch_msg
.
message
.
present
=
DL_CCCH_MessageType_PR_c1
;
dl_ccch_msg
.
message
.
choice
.
c1
.
present
=
DL_CCCH_MessageType__c1_PR_rrcConnectionSetup
;
dl_ccch_msg
.
message
.
choice
.
c1
.
present
=
DL_CCCH_MessageType__c1_PR_rrcConnectionSetup
;
...
@@ -1533,7 +1537,28 @@ do_RRCConnectionSetup(
...
@@ -1533,7 +1537,28 @@ do_RRCConnectionSetup(
physicalConfigDedicated2
->
schedulingRequestConfig
->
present
=
SchedulingRequestConfig_PR_setup
;
physicalConfigDedicated2
->
schedulingRequestConfig
->
present
=
SchedulingRequestConfig_PR_setup
;
#ifdef UE_EXPANSION
#ifdef UE_EXPANSION
physicalConfigDedicated2
->
schedulingRequestConfig
->
choice
.
setup
.
sr_PUCCH_ResourceIndex
=
31
-
ue_context_pP
->
local_uid
/
10
;
//ue_context_pP->local_uid;
if
(
carrier
->
sib1
->
tdd_Config
==
NULL
)
{
physicalConfigDedicated2
->
schedulingRequestConfig
->
choice
.
setup
.
sr_PUCCH_ResourceIndex
=
31
-
ue_context_pP
->
local_uid
/
10
;
//ue_context_pP->local_uid;
}
else
{
switch
(
carrier
->
sib1
->
tdd_Config
->
subframeAssignment
)
{
case
1
:
switch
(
frame_parms
->
N_RB_UL
){
case
25
:
physicalConfigDedicated2
->
schedulingRequestConfig
->
choice
.
setup
.
sr_PUCCH_ResourceIndex
=
15
-
ue_context_pP
->
local_uid
/
4
;
break
;
case
50
:
physicalConfigDedicated2
->
schedulingRequestConfig
->
choice
.
setup
.
sr_PUCCH_ResourceIndex
=
31
-
ue_context_pP
->
local_uid
/
4
;
break
;
case
100
:
physicalConfigDedicated2
->
schedulingRequestConfig
->
choice
.
setup
.
sr_PUCCH_ResourceIndex
=
63
-
ue_context_pP
->
local_uid
/
4
;
break
;
}
break
;
default:
physicalConfigDedicated2
->
schedulingRequestConfig
->
choice
.
setup
.
sr_PUCCH_ResourceIndex
=
71
-
ue_context_pP
->
local_uid
/
10
;
//ue_context_pP->local_uid;
break
;
}
}
#else
#else
physicalConfigDedicated2
->
schedulingRequestConfig
->
choice
.
setup
.
sr_PUCCH_ResourceIndex
=
71
-
ue_context_pP
->
local_uid
/
10
;
//ue_context_pP->local_uid;
physicalConfigDedicated2
->
schedulingRequestConfig
->
choice
.
setup
.
sr_PUCCH_ResourceIndex
=
71
-
ue_context_pP
->
local_uid
/
10
;
//ue_context_pP->local_uid;
#endif
#endif
...
...
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