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
zzha zzha
OpenXG-RAN
Commits
4070a3af
Commit
4070a3af
authored
May 10, 2016
by
Raymond Knopp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fixed CCE allocation bug.
parent
8df63bdf
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
47 additions
and
23 deletions
+47
-23
openair1/SCHED/phy_mac_stub.c
openair1/SCHED/phy_mac_stub.c
+4
-3
openair1/SCHED/phy_procedures_lte_eNb.c
openair1/SCHED/phy_procedures_lte_eNb.c
+7
-7
openair2/LAYER2/MAC/defs.h
openair2/LAYER2/MAC/defs.h
+1
-1
openair2/LAYER2/MAC/eNB_scheduler.c
openair2/LAYER2/MAC/eNB_scheduler.c
+21
-2
openair2/LAYER2/MAC/eNB_scheduler_RA.c
openair2/LAYER2/MAC/eNB_scheduler_RA.c
+2
-0
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
+8
-6
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210.conf
...TS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210.conf
+4
-4
No files found.
openair1/SCHED/phy_mac_stub.c
View file @
4070a3af
...
...
@@ -571,12 +571,13 @@ void fill_dci(DCI_PDU *DCI_pdu, uint8_t sched_subframe, PHY_VARS_eNB *phy_vars_e
break;*/
}
/*
DCI_pdu->nCCE = 0;
for (i=0; i<DCI_pdu->Num_common_dci+DCI_pdu->Num_ue_spec_dci; i++) {
DCI_pdu->nCCE += (1<<(DCI_pdu->dci_alloc[i].L));
}
*/
}
void
fill_dci_emos
(
DCI_PDU
*
DCI_pdu
,
uint8_t
subframe
,
PHY_VARS_eNB
*
phy_vars_eNB
)
...
...
@@ -744,11 +745,11 @@ void fill_dci_emos(DCI_PDU *DCI_pdu, uint8_t subframe, PHY_VARS_eNB *phy_vars_eN
default:
break
;
}
/*
DCI_pdu->nCCE = 0;
for (i=0; i<DCI_pdu->Num_common_dci+DCI_pdu->Num_ue_spec_dci; i++) {
DCI_pdu->nCCE += (1<<(DCI_pdu->dci_alloc[i].L));
}
*/
}
openair1/SCHED/phy_procedures_lte_eNb.c
View file @
4070a3af
/*******************************************************************************
OpenAirInterface
Copyright(c) 1999 - 2014 Eurecom
...
...
@@ -965,7 +966,7 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
num_pdcch_symbols
=
DCI_pdu
->
num_pdcch_symbols
;
LOG_D
(
PHY
,
"num_pdcch_symbols %"
PRIu8
",
nCCE %u (dci commond %"
PRIu8
", dci uespec %"
PRIu8
"
\n
"
,
num_pdcch_symbols
,
DCI_pdu
->
nCCE
,
LOG_D
(
PHY
,
"num_pdcch_symbols %"
PRIu8
",
(dci common %"
PRIu8
", dci uespec %"
PRIu8
"
\n
"
,
num_pdcch_symbols
,
DCI_pdu
->
Num_common_dci
,
DCI_pdu
->
Num_ue_spec_dci
);
#if defined(SMBV) && !defined(EXMIMO)
...
...
@@ -1008,7 +1009,7 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
phy_vars_eNB
->
dlsch_eNB_SI
->
nCCE
[
subframe
]
=
DCI_pdu
->
dci_alloc
[
i
].
firstCCE
;
LOG_T
(
PHY
,
"[eNB %"
PRIu8
"] Frame %d subframe %d : CCE resource for common DCI (SI) => %"
PRIu8
"/%u
\n
"
,
phy_vars_eNB
->
Mod_id
,
phy_vars_eNB
->
proc
[
sched_subframe
].
frame_tx
,
subframe
,
phy_vars_eNB
->
dlsch_eNB_SI
->
nCCE
[
subframe
],
DCI_pdu
->
n
CCE
);
phy_vars_eNB
->
dlsch_eNB_SI
->
nCCE
[
subframe
],
DCI_pdu
->
dci_alloc
[
i
].
first
CCE
);
#if defined(SMBV) && !defined(EXMIMO)
...
...
@@ -1039,8 +1040,8 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
phy_vars_eNB
->
dlsch_eNB_ra
->
nCCE
[
subframe
]
=
DCI_pdu
->
dci_alloc
[
i
].
firstCCE
;
LOG_D
(
PHY
,
"[eNB %"
PRIu8
"] Frame %d subframe %d : CCE resource for common DCI (RA) => %"
PRIu8
"/%u
\n
"
,
phy_vars_eNB
->
Mod_id
,
phy_vars_eNB
->
proc
[
sched_subframe
].
frame_tx
,
subframe
,
phy_vars_eNB
->
dlsch_eNB_ra
->
nCCE
[
subframe
],
DCI_pdu
->
nCCE
);
LOG_D
(
PHY
,
"[eNB %"
PRIu8
"] Frame %d subframe %d : CCE resource for common DCI (RA) => %"
PRIu8
"/%u
(num_pdcch_symbols %d)
\n
"
,
phy_vars_eNB
->
Mod_id
,
phy_vars_eNB
->
proc
[
sched_subframe
].
frame_tx
,
subframe
,
phy_vars_eNB
->
dlsch_eNB_ra
->
nCCE
[
subframe
],
get_nCCE_mac
(
phy_vars_eNB
->
Mod_id
,
phy_vars_eNB
->
CC_id
,
num_pdcch_symbols
,
subframe
),
num_pdcch_symbols
);
#if defined(SMBV) && !defined(EXMIMO)
// configure RA DCI
...
...
@@ -1094,7 +1095,7 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
phy_vars_eNB
->
dlsch_eNB
[(
uint8_t
)
UE_id
][
0
]
->
nCCE
[
subframe
]
=
DCI_pdu
->
dci_alloc
[
i
].
firstCCE
;
LOG_D
(
PHY
,
"[eNB %"
PRIu8
"] Frame %d subframe %d : CCE resource for ue DCI (PDSCH %"
PRIx16
") => %"
PRIu8
"/%u
\n
"
,
phy_vars_eNB
->
Mod_id
,
phy_vars_eNB
->
proc
[
sched_subframe
].
frame_tx
,
subframe
,
DCI_pdu
->
dci_alloc
[
i
].
rnti
,
phy_vars_eNB
->
dlsch_eNB
[(
uint8_t
)
UE_id
][
0
]
->
nCCE
[
subframe
],
DCI_pdu
->
n
CCE
);
DCI_pdu
->
dci_alloc
[
i
].
rnti
,
phy_vars_eNB
->
dlsch_eNB
[(
uint8_t
)
UE_id
][
0
]
->
nCCE
[
subframe
],
DCI_pdu
->
dci_alloc
[
i
].
first
CCE
);
#if defined(SMBV) && !defined(EXMIMO)
...
...
@@ -1177,7 +1178,7 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
LOG_T
(
PHY
,
"[eNB %"
PRIu8
"] Frame %d subframe %d : CCE resources for UE spec DCI (PUSCH %"
PRIx16
") => %d/%u
\n
"
,
phy_vars_eNB
->
Mod_id
,
phy_vars_eNB
->
proc
[
sched_subframe
].
frame_tx
,
subframe
,
DCI_pdu
->
dci_alloc
[
i
].
rnti
,
DCI_pdu
->
dci_alloc
[
i
].
firstCCE
,
DCI_pdu
->
n
CCE
);
DCI_pdu
->
dci_alloc
[
i
].
firstCCE
,
DCI_pdu
->
dci_alloc
[
i
].
first
CCE
);
#if defined(SMBV) && !defined(EXMIMO)
...
...
@@ -1218,7 +1219,6 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
LOG_D
(
PHY
,
"[eNB %"
PRIu8
"] Frame %d, subframe %d: Calling generate_dci_top (pdcch) (common %"
PRIu8
",ue_spec %"
PRIu8
")
\n
"
,
phy_vars_eNB
->
Mod_id
,
phy_vars_eNB
->
proc
[
sched_subframe
].
frame_tx
,
subframe
,
DCI_pdu
->
Num_common_dci
,
DCI_pdu
->
Num_ue_spec_dci
);
num_pdcch_symbols
=
generate_dci_top
(
DCI_pdu
->
Num_ue_spec_dci
,
DCI_pdu
->
Num_common_dci
,
DCI_pdu
->
dci_alloc
,
...
...
openair2/LAYER2/MAC/defs.h
View file @
4070a3af
...
...
@@ -251,7 +251,7 @@ typedef struct {
typedef
struct
{
uint8_t
Num_ue_spec_dci
;
uint8_t
Num_common_dci
;
uint32_t
nCCE
;
//
uint32_t nCCE;
uint32_t
num_pdcch_symbols
;
DCI_ALLOC_t
dci_alloc
[
NUM_DCI_MAX
]
;
}
DCI_PDU
;
...
...
openair2/LAYER2/MAC/eNB_scheduler.c
View file @
4070a3af
...
...
@@ -108,8 +108,6 @@ void eNB_dlsch_ulsch_scheduler(module_id_t module_idP,uint8_t cooperation_flag,
for
(
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
{
DCI_pdu
[
CC_id
]
=
&
eNB_mac_inst
[
module_idP
].
common_channels
[
CC_id
].
DCI_pdu
;
DCI_pdu
[
CC_id
]
->
nCCE
=
0
;
DCI_pdu
[
CC_id
]
->
num_pdcch_symbols
=
1
;
mbsfn_status
[
CC_id
]
=
0
;
// clear vrb_map
memset
(
eNB_mac_inst
[
module_idP
].
common_channels
[
CC_id
].
vrb_map
,
0
,
100
);
...
...
@@ -661,7 +659,28 @@ void eNB_dlsch_ulsch_scheduler(module_id_t module_idP,uint8_t cooperation_flag,
for
(
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
allocate_CCEs
(
module_idP
,
CC_id
,
subframeP
,
0
);
/*
int dummy=0;
for (i=0;
i<DCI_pdu[CC_id]->Num_common_dci+DCI_pdu[CC_id]->Num_ue_spec_dci;
i++)
if (DCI_pdu[CC_id]->dci_alloc[i].rnti==2)
dummy=1;
if (dummy==1)
for (i=0;
i<DCI_pdu[CC_id]->Num_common_dci+DCI_pdu[CC_id]->Num_ue_spec_dci;
i++)
LOG_I(MAC,"Frame %d, subframe %d: DCI %d/%d, format %d, rnti %x, NCCE %d(num_pdcch_symb %d)\n",
frameP,subframeP,i,DCI_pdu[CC_id]->Num_common_dci+DCI_pdu[CC_id]->Num_ue_spec_dci,
DCI_pdu[CC_id]->dci_alloc[i].format,
DCI_pdu[CC_id]->dci_alloc[i].rnti,
DCI_pdu[CC_id]->dci_alloc[i].firstCCE,
DCI_pdu[CC_id]->num_pdcch_symbols);
LOG_D(MAC,"frameP %d, subframeP %d\n",frameP,subframeP);
*/
stop_meas
(
&
eNB_mac_inst
[
module_idP
].
eNB_scheduler
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ULSCH_SCHEDULER
,
VCD_FUNCTION_OUT
);
...
...
openair2/LAYER2/MAC/eNB_scheduler_RA.c
View file @
4070a3af
...
...
@@ -251,6 +251,8 @@ void schedule_RA(module_id_t module_idP,frame_t frameP, sub_frame_t subframeP,un
}
if
(
!
CCE_allocation_infeasible
(
module_idP
,
CC_id
,
1
,
subframeP
,
2
,
RA_template
->
RA_rnti
))
{
LOG_D
(
MAC
,
"Frame %d: Subframe %d : Adding common DCI for RA_RNTI %x
\n
"
,
frameP
,
subframeP
,
RA_template
->
RA_rnti
);
add_common_dci
(
DCI_pdu
,
(
void
*
)
&
RA_template
->
RA_alloc_pdu1
[
0
],
RA_template
->
RA_rnti
,
...
...
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
View file @
4070a3af
...
...
@@ -993,17 +993,19 @@ int allocate_CCEs(int module_idP,
int
*
CCE_table
=
eNB_mac_inst
[
module_idP
].
CCE_table
[
CC_idP
];
DCI_PDU
*
DCI_pdu
=
&
eNB_mac_inst
[
module_idP
].
common_channels
[
CC_idP
].
DCI_pdu
;
int
nCCE_max
=
mac_xface
->
get_nCCE_max
(
module_idP
,
CC_idP
,
DCI_pdu
->
num_pdcch_symbols
,
subframeP
);
int
nCCE_max
=
mac_xface
->
get_nCCE_max
(
module_idP
,
CC_idP
,
1
,
subframeP
);
int
fCCE
;
int
i
,
j
;
int
allocation_is_feasible
=
1
;
DCI_ALLOC_t
*
dci_alloc
;
int
nCCE
=
0
;
LOG_D
(
MAC
,
"Allocate CCEs subframe %d, test %d : (common %d,uspec %d)
\n
"
,
subframeP
,
test_onlyP
,
DCI_pdu
->
Num_common_dci
,
DCI_pdu
->
Num_ue_spec_dci
);
DCI_pdu
->
num_pdcch_symbols
=
1
;
while
(
allocation_is_feasible
==
1
)
{
init_CCE_table
(
module_idP
,
CC_idP
);
DCI_pdu
->
nCCE
=
0
;
nCCE
=
0
;
for
(
i
=
0
;
i
<
DCI_pdu
->
Num_common_dci
+
DCI_pdu
->
Num_ue_spec_dci
;
i
++
)
{
dci_alloc
=
&
DCI_pdu
->
dci_alloc
[
i
];
...
...
@@ -1011,9 +1013,9 @@ int allocate_CCEs(int module_idP,
i
,
DCI_pdu
->
Num_common_dci
+
DCI_pdu
->
Num_ue_spec_dci
,
DCI_pdu
->
Num_common_dci
,
DCI_pdu
->
Num_ue_spec_dci
,
dci_alloc
->
rnti
,
1
<<
dci_alloc
->
L
,
DCI_pdu
->
nCCE
,
nCCE_max
,
DCI_pdu
->
num_pdcch_symbols
);
nCCE
,
nCCE_max
,
DCI_pdu
->
num_pdcch_symbols
);
if
(
DCI_pdu
->
nCCE
+
(
1
<<
dci_alloc
->
L
)
>
nCCE_max
)
{
if
(
nCCE
+
(
1
<<
dci_alloc
->
L
)
>
nCCE_max
)
{
if
(
DCI_pdu
->
num_pdcch_symbols
==
3
)
allocation_is_feasible
=
0
;
else
{
...
...
@@ -1032,7 +1034,7 @@ int allocate_CCEs(int module_idP,
LOG_D
(
MAC
,
"Allocating at nCCE %d
\n
"
,
fCCE
);
if
(
test_onlyP
==
0
)
{
DCI_pdu
->
nCCE
+=
(
1
<<
dci_alloc
->
L
);
nCCE
+=
(
1
<<
dci_alloc
->
L
);
dci_alloc
->
firstCCE
=
fCCE
;
LOG_D
(
MAC
,
"Allocate CCEs subframe %d, test %d
\n
"
,
subframeP
,
test_onlyP
);
}
...
...
@@ -1049,7 +1051,7 @@ int allocate_CCEs(int module_idP,
DCI_pdu
->
Num_common_dci
,
DCI_pdu
->
Num_ue_spec_dci
,
DCI_pdu
->
dci_alloc
[
j
].
rnti
,
DCI_pdu
->
dci_alloc
[
j
].
format
,
1
<<
DCI_pdu
->
dci_alloc
[
j
].
L
,
DCI_pdu
->
nCCE
,
nCCE_max
,
DCI_pdu
->
num_pdcch_symbols
);
nCCE
,
nCCE_max
,
DCI_pdu
->
num_pdcch_symbols
);
}
}
else
{
...
...
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210.conf
View file @
4070a3af
...
...
@@ -130,7 +130,7 @@ eNBs =
};
//////////
MME
parameters
:
mme_ip_address
= ( {
ipv4
=
"1
92.168.12.11
"
;
mme_ip_address
= ( {
ipv4
=
"1
27.0.0.3
"
;
ipv6
=
"192:168:30::17"
;
active
=
"yes"
;
preference
=
"ipv4"
;
...
...
@@ -139,11 +139,11 @@ eNBs =
NETWORK_INTERFACES
:
{
ENB_INTERFACE_NAME_FOR_S1_MME
=
"
eth0
"
;
ENB_IPV4_ADDRESS_FOR_S1_MME
=
"1
92.168.12.213
/24"
;
ENB_INTERFACE_NAME_FOR_S1_MME
=
"
lo
"
;
ENB_IPV4_ADDRESS_FOR_S1_MME
=
"1
27.0.0.2
/24"
;
ENB_INTERFACE_NAME_FOR_S1U
=
"eth0"
;
ENB_IPV4_ADDRESS_FOR_S1U
=
"1
92.168.12.213
/24"
;
ENB_IPV4_ADDRESS_FOR_S1U
=
"1
27.0.0.4
/24"
;
ENB_PORT_FOR_S1U
=
2152
;
# Spec 2152
};
...
...
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