Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
dyyu
openairinterface5G
Commits
8ee3f3b3
Commit
8ee3f3b3
authored
Jul 25, 2017
by
knopp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
initial tests with USRP as monolithic eNB, "connectionless" execution is fine.
parent
09a43fae
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
93 additions
and
90 deletions
+93
-90
openair1/PHY/LTE_TRANSPORT/dci.c
openair1/PHY/LTE_TRANSPORT/dci.c
+2
-2
openair1/PHY/LTE_TRANSPORT/dci_tools.c
openair1/PHY/LTE_TRANSPORT/dci_tools.c
+5
-5
openair1/PHY/LTE_TRANSPORT/pbch.c
openair1/PHY/LTE_TRANSPORT/pbch.c
+1
-1
openair1/PHY/LTE_TRANSPORT/prach.c
openair1/PHY/LTE_TRANSPORT/prach.c
+7
-4
openair1/SCHED/phy_procedures_lte_eNb.c
openair1/SCHED/phy_procedures_lte_eNb.c
+16
-16
openair2/ENB_APP/enb_config.c
openair2/ENB_APP/enb_config.c
+15
-13
openair2/LAYER2/MAC/eNB_scheduler.c
openair2/LAYER2/MAC/eNB_scheduler.c
+4
-16
openair2/LAYER2/MAC/eNB_scheduler_bch.c
openair2/LAYER2/MAC/eNB_scheduler_bch.c
+4
-4
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
+10
-11
openair2/PHY_INTERFACE/IF_Module.c
openair2/PHY_INTERFACE/IF_Module.c
+5
-5
openair2/RRC/LITE/L2_interface.c
openair2/RRC/LITE/L2_interface.c
+1
-1
targets/RT/USER/lte-enb.c
targets/RT/USER/lte-enb.c
+10
-1
targets/RT/USER/lte-ru.c
targets/RT/USER/lte-ru.c
+13
-11
No files found.
openair1/PHY/LTE_TRANSPORT/dci.c
View file @
8ee3f3b3
...
@@ -2123,11 +2123,11 @@ uint8_t generate_dci_top(uint8_t num_pdcch_symbols,
...
@@ -2123,11 +2123,11 @@ uint8_t generate_dci_top(uint8_t num_pdcch_symbols,
if
(
dci_alloc
[
i
].
L
==
(
uint8_t
)
L
)
{
if
(
dci_alloc
[
i
].
L
==
(
uint8_t
)
L
)
{
//
#ifdef DEBUG_DCI_ENCODING
#ifdef DEBUG_DCI_ENCODING
LOG_I
(
PHY
,
"Generating DCI %d/%d (nCCE %d) of length %d, aggregation %d (%x)
\n
"
,
i
,
num_dci
,
dci_alloc
[
i
].
firstCCE
,
dci_alloc
[
i
].
dci_length
,
dci_alloc
[
i
].
L
,
LOG_I
(
PHY
,
"Generating DCI %d/%d (nCCE %d) of length %d, aggregation %d (%x)
\n
"
,
i
,
num_dci
,
dci_alloc
[
i
].
firstCCE
,
dci_alloc
[
i
].
dci_length
,
dci_alloc
[
i
].
L
,
*
(
unsigned
int
*
)
dci_alloc
[
i
].
dci_pdu
);
*
(
unsigned
int
*
)
dci_alloc
[
i
].
dci_pdu
);
dump_dci
(
frame_parms
,
&
dci_alloc
[
i
]);
dump_dci
(
frame_parms
,
&
dci_alloc
[
i
]);
//
#endif
#endif
if
(
dci_alloc
[
i
].
firstCCE
>=
0
)
{
if
(
dci_alloc
[
i
].
firstCCE
>=
0
)
{
e_ptr
=
generate_dci0
(
dci_alloc
[
i
].
dci_pdu
,
e_ptr
=
generate_dci0
(
dci_alloc
[
i
].
dci_pdu
,
...
...
openair1/PHY/LTE_TRANSPORT/dci_tools.c
View file @
8ee3f3b3
...
@@ -882,7 +882,7 @@ int fill_dci_and_dlsch(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC_t *dci_
...
@@ -882,7 +882,7 @@ int fill_dci_and_dlsch(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC_t *dci_
dci_alloc
->
harq_pid
=
rel8
->
harq_process
;
dci_alloc
->
harq_pid
=
rel8
->
harq_process
;
dci_alloc
->
ra_flag
=
0
;
dci_alloc
->
ra_flag
=
0
;
LOG_
I
(
PHY
,
"NFAPI: DCI format %d, nCCE %d, L %d, rnti %x,harq_pid %d
\n
"
,
LOG_
D
(
PHY
,
"NFAPI: DCI format %d, nCCE %d, L %d, rnti %x,harq_pid %d
\n
"
,
rel8
->
dci_format
,
rel8
->
cce_idx
,
rel8
->
aggregation_level
,
rel8
->
rnti
,
rel8
->
harq_process
);
rel8
->
dci_format
,
rel8
->
cce_idx
,
rel8
->
aggregation_level
,
rel8
->
rnti
,
rel8
->
harq_process
);
if
((
rel8
->
rnti_type
==
2
)
&&
(
rel8
->
rnti
!=
SI_RNTI
)
&&
(
rel8
->
rnti
!=
P_RNTI
))
dci_alloc
->
ra_flag
=
1
;
if
((
rel8
->
rnti_type
==
2
)
&&
(
rel8
->
rnti
!=
SI_RNTI
)
&&
(
rel8
->
rnti
!=
P_RNTI
))
dci_alloc
->
ra_flag
=
1
;
...
@@ -1065,7 +1065,7 @@ int fill_dci_and_dlsch(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC_t *dci_
...
@@ -1065,7 +1065,7 @@ int fill_dci_and_dlsch(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC_t *dci_
if
(
dlsch0_harq
->
round
==
0
)
if
(
dlsch0_harq
->
round
==
0
)
dlsch0_harq
->
status
=
ACTIVE
;
dlsch0_harq
->
status
=
ACTIVE
;
LOG_
I
(
PHY
,
"DCI 1A: mcs %d, rballoc %x,rv %d, rnti %x
\n
"
,
rel8
->
mcs_1
,
rel8
->
resource_block_coding
,
rel8
->
redundancy_version_1
,
rel8
->
rnti
);
LOG_
D
(
PHY
,
"DCI 1A: mcs %d, rballoc %x,rv %d, rnti %x
\n
"
,
rel8
->
mcs_1
,
rel8
->
resource_block_coding
,
rel8
->
redundancy_version_1
,
rel8
->
rnti
);
break
;
break
;
case
NFAPI_DL_DCI_FORMAT_1
:
case
NFAPI_DL_DCI_FORMAT_1
:
...
@@ -6535,9 +6535,9 @@ void prepare_dl_decoding_format1_1A(DCI_format_t dci_format,
...
@@ -6535,9 +6535,9 @@ void prepare_dl_decoding_format1_1A(DCI_format_t dci_format,
{
{
if
(
rnti
==
tc_rnti
)
{
if
(
rnti
==
tc_rnti
)
{
//fix for standalone Contention Resolution Id
//fix for standalone Contention Resolution Id
pdlsch0_harq
->
DCINdi
=
(
uint8_t
)
-
1
;
pdlsch0_harq
->
DCINdi
=
(
uint8_t
)
-
1
;
LOG_D
(
PHY
,
"UE (%x/%d): Format1A DCI: C-RNTI is temporary. Set NDI = %d and to be ignored
\n
"
,
LOG_D
(
PHY
,
"UE (%x/%d): Format1A DCI: C-RNTI is temporary. Set NDI = %d and to be ignored
\n
"
,
rnti
,
harq_pid
,
pdlsch0_harq
->
DCINdi
);
rnti
,
harq_pid
,
pdlsch0_harq
->
DCINdi
);
}
}
// DCI has been toggled or this is the first transmission
// DCI has been toggled or this is the first transmission
...
...
openair1/PHY/LTE_TRANSPORT/pbch.c
View file @
8ee3f3b3
...
@@ -210,7 +210,7 @@ int generate_pbch(LTE_eNB_PBCH *eNB_pbch,
...
@@ -210,7 +210,7 @@ int generate_pbch(LTE_eNB_PBCH *eNB_pbch,
//#ifdef DEBUG_PBCH
//#ifdef DEBUG_PBCH
for
(
i
=
0
;
i
<
(
PBCH_A
>>
3
);
i
++
)
for
(
i
=
0
;
i
<
(
PBCH_A
>>
3
);
i
++
)
LOG_
I
(
PHY
,
"[PBCH] pbch_data[%d] = %x
\n
"
,
i
,
pbch_a
[
i
]);
LOG_
D
(
PHY
,
"[PBCH] pbch_data[%d] = %x
\n
"
,
i
,
pbch_a
[
i
]);
//#endif
//#endif
...
...
openair1/PHY/LTE_TRANSPORT/prach.c
View file @
8ee3f3b3
...
@@ -1115,6 +1115,7 @@ void rx_prach(PHY_VARS_eNB *eNB,
...
@@ -1115,6 +1115,7 @@ void rx_prach(PHY_VARS_eNB *eNB,
prach_ConfigIndex
=
fp
->
prach_config_common
.
prach_ConfigInfo
.
prach_ConfigIndex
;
prach_ConfigIndex
=
fp
->
prach_config_common
.
prach_ConfigInfo
.
prach_ConfigIndex
;
Ncs_config
=
fp
->
prach_config_common
.
prach_ConfigInfo
.
zeroCorrelationZoneConfig
;
Ncs_config
=
fp
->
prach_config_common
.
prach_ConfigInfo
.
zeroCorrelationZoneConfig
;
restricted_set
=
fp
->
prach_config_common
.
prach_ConfigInfo
.
highSpeedFlag
;
restricted_set
=
fp
->
prach_config_common
.
prach_ConfigInfo
.
highSpeedFlag
;
int16_t
*
prach
[
nb_rx
];
int16_t
*
prach
[
nb_rx
];
if
(
eNB
)
{
if
(
eNB
)
{
...
@@ -1161,9 +1162,10 @@ void rx_prach(PHY_VARS_eNB *eNB,
...
@@ -1161,9 +1162,10 @@ void rx_prach(PHY_VARS_eNB *eNB,
int
en
,
en0
=
0
;
int
en
,
en0
=
0
;
#endif
#endif
AssertFatal
(
ru
!=
NULL
,
"ru is null
\n
"
);
for
(
aa
=
0
;
aa
<
nb_rx
;
aa
++
)
{
for
(
aa
=
0
;
aa
<
nb_rx
;
aa
++
)
{
if
((
eNB
==
NULL
)
&&
if
(
ru
->
if_south
==
LOCAL_RF
)
{
// set the time-domain signal if we have to use it in this node
(
ru
!=
NULL
))
{
prach
[
aa
]
=
(
int16_t
*
)
&
ru
->
common
.
rxdata
[
aa
][(
subframe
*
fp
->
samples_per_tti
)
-
ru
->
N_TA_offset
];
prach
[
aa
]
=
(
int16_t
*
)
&
ru
->
common
.
rxdata
[
aa
][(
subframe
*
fp
->
samples_per_tti
)
-
ru
->
N_TA_offset
];
#ifdef PRACH_DEBUG
#ifdef PRACH_DEBUG
LOG_D
(
PHY
,
"RU %d, subframe %d, : prach %p (energy %d)
\n
"
,
ru
->
idx
,
subframe
,
prach
[
aa
],
dB_fixed
(
en0
=
signal_energy
(
prach
[
aa
],
fp
->
samples_per_tti
)));
LOG_D
(
PHY
,
"RU %d, subframe %d, : prach %p (energy %d)
\n
"
,
ru
->
idx
,
subframe
,
prach
[
aa
],
dB_fixed
(
en0
=
signal_energy
(
prach
[
aa
],
fp
->
samples_per_tti
)));
...
@@ -1246,11 +1248,12 @@ void rx_prach(PHY_VARS_eNB *eNB,
...
@@ -1246,11 +1248,12 @@ void rx_prach(PHY_VARS_eNB *eNB,
}
}
if
(((
eNB
!=
NULL
)
&&
(
ru
!=
NULL
)
&&
(
ru
->
function
!=
NGFI_RAU_IF4p5
))
||
if
(((
eNB
!=
NULL
)
&&
(
ru
->
function
!=
NGFI_RAU_IF4p5
))
||
((
eNB
==
NULL
)
&&
(
ru
!=
NULL
)
&&
(
ru
->
function
==
NGFI_RRU_IF4p5
)))
{
// compute the DFTs of the PRACH temporal resources
((
eNB
==
NULL
)
&&
(
ru
->
function
==
NGFI_RRU_IF4p5
)))
{
// compute the DFTs of the PRACH temporal resources
// Do forward transform
// Do forward transform
LOG_D
(
PHY
,
"rx_prach: Doing FFT for N_RB_UL %d
\n
"
,
fp
->
N_RB_UL
);
LOG_D
(
PHY
,
"rx_prach: Doing FFT for N_RB_UL %d
\n
"
,
fp
->
N_RB_UL
);
for
(
aa
=
0
;
aa
<
nb_rx
;
aa
++
)
{
for
(
aa
=
0
;
aa
<
nb_rx
;
aa
++
)
{
AssertFatal
(
prach
[
aa
]
!=
NULL
,
"prach[%d] is null
\n
"
,
aa
);
prach2
=
prach
[
aa
]
+
(
Ncp
<<
1
);
prach2
=
prach
[
aa
]
+
(
Ncp
<<
1
);
// do DFT
// do DFT
...
...
openair1/SCHED/phy_procedures_lte_eNb.c
View file @
8ee3f3b3
...
@@ -715,7 +715,7 @@ void pdsch_procedures(PHY_VARS_eNB *eNB,
...
@@ -715,7 +715,7 @@ void pdsch_procedures(PHY_VARS_eNB *eNB,
LTE_DL_FRAME_PARMS
*
fp
=&
eNB
->
frame_parms
;
LTE_DL_FRAME_PARMS
*
fp
=&
eNB
->
frame_parms
;
int
i
;
int
i
;
LOG_
I
(
PHY
,
LOG_
D
(
PHY
,
"[eNB %"
PRIu8
"][PDSCH %"
PRIx16
"/%"
PRIu8
"] Frame %d, subframe %d: Generating PDSCH/DLSCH with input size = %"
PRIu16
", G %d, nb_rb %"
PRIu16
", mcs %"
PRIu8
", pmi_alloc %"
PRIx64
", rv %"
PRIu8
" (round %"
PRIu8
")
\n
"
,
"[eNB %"
PRIu8
"][PDSCH %"
PRIx16
"/%"
PRIu8
"] Frame %d, subframe %d: Generating PDSCH/DLSCH with input size = %"
PRIu16
", G %d, nb_rb %"
PRIu16
", mcs %"
PRIu8
", pmi_alloc %"
PRIx64
", rv %"
PRIu8
" (round %"
PRIu8
")
\n
"
,
eNB
->
Mod_id
,
dlsch
->
rnti
,
harq_pid
,
eNB
->
Mod_id
,
dlsch
->
rnti
,
harq_pid
,
frame
,
subframe
,
input_buffer_length
,
frame
,
subframe
,
input_buffer_length
,
...
@@ -903,7 +903,7 @@ void handle_nfapi_dci_dl_pdu(PHY_VARS_eNB *eNB,
...
@@ -903,7 +903,7 @@ void handle_nfapi_dci_dl_pdu(PHY_VARS_eNB *eNB,
LTE_eNB_PDCCH
*
pdcch_vars
=
&
eNB
->
pdcch_vars
[
idx
];
LTE_eNB_PDCCH
*
pdcch_vars
=
&
eNB
->
pdcch_vars
[
idx
];
nfapi_dl_config_dci_dl_pdu
*
pdu
=
&
dl_config_pdu
->
dci_dl_pdu
;
nfapi_dl_config_dci_dl_pdu
*
pdu
=
&
dl_config_pdu
->
dci_dl_pdu
;
LOG_
I
(
PHY
,
"Frame %d, Subframe %d: DCI processing
\n
"
,
proc
->
frame_tx
,
proc
->
subframe_tx
);
LOG_
D
(
PHY
,
"Frame %d, Subframe %d: DCI processing
\n
"
,
proc
->
frame_tx
,
proc
->
subframe_tx
);
// copy dci configuration into eNB structure
// copy dci configuration into eNB structure
fill_dci_and_dlsch
(
eNB
,
proc
,
&
pdcch_vars
->
dci_alloc
[
pdcch_vars
->
num_dci
],
pdu
);
fill_dci_and_dlsch
(
eNB
,
proc
,
&
pdcch_vars
->
dci_alloc
[
pdcch_vars
->
num_dci
],
pdu
);
...
@@ -918,7 +918,7 @@ void handle_nfapi_mpdcch_pdu(PHY_VARS_eNB *eNB,
...
@@ -918,7 +918,7 @@ void handle_nfapi_mpdcch_pdu(PHY_VARS_eNB *eNB,
LTE_eNB_MPDCCH
*
mpdcch_vars
=
&
eNB
->
mpdcch_vars
[
idx
];
LTE_eNB_MPDCCH
*
mpdcch_vars
=
&
eNB
->
mpdcch_vars
[
idx
];
nfapi_dl_config_mpdcch_pdu
*
pdu
=
&
dl_config_pdu
->
mpdcch_pdu
;
nfapi_dl_config_mpdcch_pdu
*
pdu
=
&
dl_config_pdu
->
mpdcch_pdu
;
LOG_
I
(
PHY
,
"Frame %d, Subframe %d: MDCI processing
\n
"
,
proc
->
frame_tx
,
proc
->
subframe_tx
);
LOG_
D
(
PHY
,
"Frame %d, Subframe %d: MDCI processing
\n
"
,
proc
->
frame_tx
,
proc
->
subframe_tx
);
// copy dci configuration into eNB structure
// copy dci configuration into eNB structure
fill_mdci_and_dlsch
(
eNB
,
proc
,
&
mpdcch_vars
->
mdci_alloc
[
mpdcch_vars
->
num_dci
],
pdu
);
fill_mdci_and_dlsch
(
eNB
,
proc
,
&
mpdcch_vars
->
mdci_alloc
[
mpdcch_vars
->
num_dci
],
pdu
);
...
@@ -946,7 +946,7 @@ void handle_nfapi_hi_dci0_hi_pdu(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,
...
@@ -946,7 +946,7 @@ void handle_nfapi_hi_dci0_hi_pdu(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,
nfapi_hi_dci0_hi_pdu
*
pdu
=
&
hi_dci0_config_pdu
->
hi_pdu
;
nfapi_hi_dci0_hi_pdu
*
pdu
=
&
hi_dci0_config_pdu
->
hi_pdu
;
// copy dci configuration in to eNB structure
// copy dci configuration in to eNB structure
LOG_
I
(
PHY
,
"Received HI PDU which value %d (rbstart %d,cshift %d)
\n
"
,
LOG_
D
(
PHY
,
"Received HI PDU which value %d (rbstart %d,cshift %d)
\n
"
,
hi_dci0_config_pdu
->
hi_pdu
.
hi_pdu_rel8
.
hi_value
,
hi_dci0_config_pdu
->
hi_pdu
.
hi_pdu_rel8
.
hi_value
,
hi_dci0_config_pdu
->
hi_pdu
.
hi_pdu_rel8
.
resource_block_start
,
hi_dci0_config_pdu
->
hi_pdu
.
hi_pdu_rel8
.
resource_block_start
,
hi_dci0_config_pdu
->
hi_pdu
.
hi_pdu_rel8
.
cyclic_shift_2_for_drms
);
hi_dci0_config_pdu
->
hi_pdu
.
hi_pdu_rel8
.
cyclic_shift_2_for_drms
);
...
@@ -960,7 +960,7 @@ handle_nfapi_bch_pdu(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,
...
@@ -960,7 +960,7 @@ handle_nfapi_bch_pdu(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,
AssertFatal
(
rel8
->
length
==
3
,
"BCH PDU has length %d != 3
\n
"
,
rel8
->
length
);
AssertFatal
(
rel8
->
length
==
3
,
"BCH PDU has length %d != 3
\n
"
,
rel8
->
length
);
LOG_
I
(
PHY
,
"bch_pdu: %x,%x,%x
\n
"
,
sdu
[
0
],
sdu
[
1
],
sdu
[
2
]);
LOG_
D
(
PHY
,
"bch_pdu: %x,%x,%x
\n
"
,
sdu
[
0
],
sdu
[
1
],
sdu
[
2
]);
eNB
->
pbch_pdu
[
0
]
=
sdu
[
2
];
eNB
->
pbch_pdu
[
0
]
=
sdu
[
2
];
eNB
->
pbch_pdu
[
1
]
=
sdu
[
1
];
eNB
->
pbch_pdu
[
1
]
=
sdu
[
1
];
eNB
->
pbch_pdu
[
2
]
=
sdu
[
0
];
eNB
->
pbch_pdu
[
2
]
=
sdu
[
0
];
...
@@ -1012,7 +1012,7 @@ handle_nfapi_dlsch_pdu(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,
...
@@ -1012,7 +1012,7 @@ handle_nfapi_dlsch_pdu(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,
dlsch1_harq
=
dlsch1
->
harq_processes
[
harq_pid
];
dlsch1_harq
=
dlsch1
->
harq_processes
[
harq_pid
];
AssertFatal
(
dlsch0_harq
!=
NULL
,
"dlsch_harq is null
\n
"
);
AssertFatal
(
dlsch0_harq
!=
NULL
,
"dlsch_harq is null
\n
"
);
LOG_
I
(
PHY
,
"NFAPI: frame %d, subframe %d: programming dlsch, rnti %x, UE_id %d, harq_pid %d
\n
"
,
LOG_
D
(
PHY
,
"NFAPI: frame %d, subframe %d: programming dlsch, rnti %x, UE_id %d, harq_pid %d
\n
"
,
proc
->
frame_tx
,
proc
->
subframe_tx
,
rel8
->
rnti
,
UE_id
,
harq_pid
);
proc
->
frame_tx
,
proc
->
subframe_tx
,
rel8
->
rnti
,
UE_id
,
harq_pid
);
if
(
codeword_index
==
0
)
dlsch0_harq
->
pdu
=
sdu
;
if
(
codeword_index
==
0
)
dlsch0_harq
->
pdu
=
sdu
;
else
dlsch1_harq
->
pdu
=
sdu
;
else
dlsch1_harq
->
pdu
=
sdu
;
...
@@ -1129,7 +1129,7 @@ void schedule_response(Sched_Rsp_t *Sched_INFO) {
...
@@ -1129,7 +1129,7 @@ void schedule_response(Sched_Rsp_t *Sched_INFO) {
eNB
->
pdcch_vars
[
subframe
&
1
].
num_dci
=
0
;
eNB
->
pdcch_vars
[
subframe
&
1
].
num_dci
=
0
;
LOG_
I
(
PHY
,
"NFAPI: received %d dl_pdu, %d tx_req, %d hi_dci0_config_req, %d UL_config
\n
"
,
LOG_
D
(
PHY
,
"NFAPI: received %d dl_pdu, %d tx_req, %d hi_dci0_config_req, %d UL_config
\n
"
,
number_dl_pdu
,
TX_req
->
tx_request_body
.
number_of_pdus
,
number_hi_dci0_pdu
,
number_ul_pdu
);
number_dl_pdu
,
TX_req
->
tx_request_body
.
number_of_pdus
,
number_hi_dci0_pdu
,
number_ul_pdu
);
...
@@ -1149,7 +1149,7 @@ void schedule_response(Sched_Rsp_t *Sched_INFO) {
...
@@ -1149,7 +1149,7 @@ void schedule_response(Sched_Rsp_t *Sched_INFO) {
}
}
for
(
i
=
0
;
i
<
number_dl_pdu
;
i
++
)
{
for
(
i
=
0
;
i
<
number_dl_pdu
;
i
++
)
{
dl_config_pdu
=
&
DL_req
->
dl_config_request_body
.
dl_config_pdu_list
[
i
];
dl_config_pdu
=
&
DL_req
->
dl_config_request_body
.
dl_config_pdu_list
[
i
];
LOG_
I
(
PHY
,
"NFAPI: dl_pdu %d : type %d
\n
"
,
i
,
dl_config_pdu
->
pdu_type
);
LOG_
D
(
PHY
,
"NFAPI: dl_pdu %d : type %d
\n
"
,
i
,
dl_config_pdu
->
pdu_type
);
switch
(
dl_config_pdu
->
pdu_type
)
{
switch
(
dl_config_pdu
->
pdu_type
)
{
case
NFAPI_DL_CONFIG_DCI_DL_PDU_TYPE
:
case
NFAPI_DL_CONFIG_DCI_DL_PDU_TYPE
:
handle_nfapi_dci_dl_pdu
(
eNB
,
proc
,
dl_config_pdu
);
handle_nfapi_dci_dl_pdu
(
eNB
,
proc
,
dl_config_pdu
);
...
@@ -1226,7 +1226,7 @@ void schedule_response(Sched_Rsp_t *Sched_INFO) {
...
@@ -1226,7 +1226,7 @@ void schedule_response(Sched_Rsp_t *Sched_INFO) {
for
(
i
=
0
;
i
<
number_ul_pdu
;
i
++
)
{
for
(
i
=
0
;
i
<
number_ul_pdu
;
i
++
)
{
ul_config_pdu
=
&
UL_req
->
ul_config_request_body
.
ul_config_pdu_list
[
i
];
ul_config_pdu
=
&
UL_req
->
ul_config_request_body
.
ul_config_pdu_list
[
i
];
LOG_
I
(
PHY
,
"NFAPI: ul_pdu %d : type %d
\n
"
,
i
,
ul_config_pdu
->
pdu_type
);
LOG_
D
(
PHY
,
"NFAPI: ul_pdu %d : type %d
\n
"
,
i
,
ul_config_pdu
->
pdu_type
);
AssertFatal
(
ul_config_pdu
->
pdu_type
==
NFAPI_UL_CONFIG_ULSCH_PDU_TYPE
,
AssertFatal
(
ul_config_pdu
->
pdu_type
==
NFAPI_UL_CONFIG_ULSCH_PDU_TYPE
,
"Optional UL_PDU type %d not supported
\n
"
,
ul_config_pdu
->
pdu_type
);
"Optional UL_PDU type %d not supported
\n
"
,
ul_config_pdu
->
pdu_type
);
handle_nfapi_ul_pdu
(
eNB
,
proc
,
ul_config_pdu
);
handle_nfapi_ul_pdu
(
eNB
,
proc
,
ul_config_pdu
);
...
@@ -1382,7 +1382,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
...
@@ -1382,7 +1382,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
num_dci
=
eNB
->
pdcch_vars
[
subframe
&
1
].
num_dci
;
num_dci
=
eNB
->
pdcch_vars
[
subframe
&
1
].
num_dci
;
// LOG_D(PHY,"num_pdcch_symbols %"PRIu8",(dci common %"PRIu8", dci uespec %"PRIu8"\n",num_pdcch_symbols,
// 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);
// DCI_pdu->Num_common_dci,DCI_pdu->Num_ue_spec_dci);
LOG_
I
(
PHY
,
"num_pdcch_symbols %"
PRIu8
",(number dci %"
PRIu8
"
\n
"
,
num_pdcch_symbols
,
LOG_
D
(
PHY
,
"num_pdcch_symbols %"
PRIu8
",(number dci %"
PRIu8
"
\n
"
,
num_pdcch_symbols
,
num_dci
);
num_dci
);
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_DCI_INFO
,
num_pdcch_symbols
);
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_DCI_INFO
,
num_pdcch_symbols
);
...
@@ -1394,7 +1394,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
...
@@ -1394,7 +1394,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
phy_config_dedicated_eNB_step2
(
eNB
);
phy_config_dedicated_eNB_step2
(
eNB
);
if
(
num_dci
>
0
)
if
(
num_dci
>
0
)
LOG_
I
(
PHY
,
"[eNB %"
PRIu8
"] Frame %d, subframe %d: Calling generate_dci_top (pdcch) (num_dci %"
PRIu8
")
\n
"
,
eNB
->
Mod_id
,
frame
,
subframe
,
LOG_
D
(
PHY
,
"[eNB %"
PRIu8
"] Frame %d, subframe %d: Calling generate_dci_top (pdcch) (num_dci %"
PRIu8
")
\n
"
,
eNB
->
Mod_id
,
frame
,
subframe
,
num_dci
);
num_dci
);
generate_dci_top
(
num_pdcch_symbols
,
generate_dci_top
(
num_pdcch_symbols
,
...
@@ -1956,7 +1956,7 @@ void prach_procedures(PHY_VARS_eNB *eNB) {
...
@@ -1956,7 +1956,7 @@ void prach_procedures(PHY_VARS_eNB *eNB) {
}
}
//#ifdef DEBUG_PHY_PROC
//#ifdef DEBUG_PHY_PROC
LOG_
I
(
PHY
,
"[RAPROC] Frame %d, subframe %d : Most likely preamble %d, energy %d dB delay %d
\n
"
,
LOG_
D
(
PHY
,
"[RAPROC] Frame %d, subframe %d : Most likely preamble %d, energy %d dB delay %d
\n
"
,
frame
,
subframe
,
frame
,
subframe
,
preamble_max
,
preamble_max
,
preamble_energy_list
[
preamble_max
],
preamble_energy_list
[
preamble_max
],
...
@@ -1971,7 +1971,7 @@ void prach_procedures(PHY_VARS_eNB *eNB) {
...
@@ -1971,7 +1971,7 @@ void prach_procedures(PHY_VARS_eNB *eNB) {
// eNB->UE_stats[(uint32_t)UE_id].UE_timing_offset = preamble_delay_list[preamble_max]&0x1FFF; //limit to 13 (=11+2) bits
// eNB->UE_stats[(uint32_t)UE_id].UE_timing_offset = preamble_delay_list[preamble_max]&0x1FFF; //limit to 13 (=11+2) bits
// eNB->UE_stats[(uint32_t)UE_id].sector = 0;
// eNB->UE_stats[(uint32_t)UE_id].sector = 0;
LOG_
I
(
PHY
,
"[eNB %d/%d][RAPROC] Frame %d, subframe %d Initiating RA procedure with preamble %d, energy %d.%d dB, delay %d
\n
"
,
LOG_
D
(
PHY
,
"[eNB %d/%d][RAPROC] Frame %d, subframe %d Initiating RA procedure with preamble %d, energy %d.%d dB, delay %d
\n
"
,
eNB
->
Mod_id
,
eNB
->
Mod_id
,
eNB
->
CC_id
,
eNB
->
CC_id
,
frame
,
frame
,
...
@@ -2569,7 +2569,7 @@ void phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,const
...
@@ -2569,7 +2569,7 @@ void phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,const
if
((
ulsch
)
&&
if
((
ulsch
)
&&
(
eNB
->
ulsch
[
i
]
->
rnti
>
0
)
&&
(
eNB
->
ulsch
[
i
]
->
rnti
>
0
)
&&
(
ulsch_harq
->
status
=
ACTIVE
))
(
ulsch_harq
->
status
=
ACTIVE
))
LOG_
I
(
PHY
,
"Frame %d Subframe UE %d/%x active: scheduled for (%d,%d)
\n
"
,
LOG_
D
(
PHY
,
"Frame %d Subframe UE %d/%x active: scheduled for (%d,%d)
\n
"
,
frame
,
i
,
eNB
->
ulsch
[
i
]
->
rnti
,
ulsch_harq
->
frame
,
ulsch_harq
->
subframe
);
frame
,
i
,
eNB
->
ulsch
[
i
]
->
rnti
,
ulsch_harq
->
frame
,
ulsch_harq
->
subframe
);
if
((
ulsch
)
&&
if
((
ulsch
)
&&
(
eNB
->
ulsch
[
i
]
->
rnti
>
0
)
&&
(
eNB
->
ulsch
[
i
]
->
rnti
>
0
)
&&
...
@@ -2620,7 +2620,7 @@ void phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,const
...
@@ -2620,7 +2620,7 @@ void phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,const
}
}
}
}
LOG_
I
(
PHY
,
LOG_
D
(
PHY
,
"[eNB %d][PUSCH %d] Frame %d Subframe %d Demodulating PUSCH: dci_alloc %d, rar_alloc %d, round %d, first_rb %d, nb_rb %d, mcs %d, TBS %d, rv %d, cyclic_shift %d (n_DMRS2 %d, cyclicShift_common %d, nprs %d), O_ACK %d
\n
"
,
"[eNB %d][PUSCH %d] Frame %d Subframe %d Demodulating PUSCH: dci_alloc %d, rar_alloc %d, round %d, first_rb %d, nb_rb %d, mcs %d, TBS %d, rv %d, cyclic_shift %d (n_DMRS2 %d, cyclicShift_common %d, nprs %d), O_ACK %d
\n
"
,
eNB
->
Mod_id
,
harq_pid
,
frame
,
subframe
,
eNB
->
Mod_id
,
harq_pid
,
frame
,
subframe
,
ulsch_harq
->
dci_alloc
,
ulsch_harq
->
dci_alloc
,
...
@@ -2660,7 +2660,7 @@ void phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,const
...
@@ -2660,7 +2660,7 @@ void phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,const
stop_meas
(
&
eNB
->
ulsch_decoding_stats
);
stop_meas
(
&
eNB
->
ulsch_decoding_stats
);
LOG_
I
(
PHY
,
"[eNB %d][PUSCH %d] frame %d subframe %d RNTI %x RX power (%d,%d) RSSI (%d,%d) N0 (%d,%d) dB ACK (%d,%d), decoding iter %d
\n
"
,
LOG_
D
(
PHY
,
"[eNB %d][PUSCH %d] frame %d subframe %d RNTI %x RX power (%d,%d) RSSI (%d,%d) N0 (%d,%d) dB ACK (%d,%d), decoding iter %d
\n
"
,
eNB
->
Mod_id
,
harq_pid
,
eNB
->
Mod_id
,
harq_pid
,
frame
,
subframe
,
frame
,
subframe
,
ulsch
->
rnti
,
ulsch
->
rnti
,
...
...
openair2/ENB_APP/enb_config.c
View file @
8ee3f3b3
...
@@ -519,19 +519,20 @@ void RCconfig_RU() {
...
@@ -519,19 +519,20 @@ void RCconfig_RU() {
RC
.
config_file_name
,
j
);
RC
.
config_file_name
,
j
);
continue
;
// FIXME will prevent segfaults below, not sure what happens at function exit...
continue
;
// FIXME will prevent segfaults below, not sure what happens at function exit...
}
}
AssertFatal
((
setting_eNB_list
=
config_setting_get_member
(
setting_ru
,
CONFIG_STRING_RU_ENB_LIST
))
!=
NULL
,
"No RU<->eNB mappings
\n
"
);
if
(
setting_eNB_list
!=
NULL
)
num_eNB4RU
=
config_setting_length
(
setting_eNB_list
);
else
num_eNB4RU
=
0
;
AssertFatal
(
num_eNB4RU
>
0
,
"Number of eNBs is zero
\n
"
);
for
(
i
=
0
;
i
<
num_eNB4RU
;
i
++
)
{
setting_eNB_list_elem
=
config_setting_get_elem
(
setting_eNB_list
,
i
);
eNB_list
[
i
]
=
config_setting_get_int
(
setting_eNB_list_elem
);
printf
(
"RU %d: eNB %d
\n
"
,
j
,
eNB_list
[
i
]);
}
}
}
AssertFatal
((
setting_eNB_list
=
config_setting_get_member
(
setting_ru
,
CONFIG_STRING_RU_ENB_LIST
))
!=
NULL
,
"No RU<->eNB mappings
\n
"
);
if
(
setting_eNB_list
!=
NULL
)
num_eNB4RU
=
config_setting_length
(
setting_eNB_list
);
else
num_eNB4RU
=
0
;
AssertFatal
(
num_eNB4RU
>
0
,
"Number of eNBs is zero
\n
"
);
for
(
i
=
0
;
i
<
num_eNB4RU
;
i
++
)
{
setting_eNB_list_elem
=
config_setting_get_elem
(
setting_eNB_list
,
i
);
eNB_list
[
i
]
=
config_setting_get_int
(
setting_eNB_list_elem
);
printf
(
"RU %d: eNB %d
\n
"
,
j
,
eNB_list
[
i
]);
}
if
(
!
(
if
(
!
(
config_setting_lookup_int
(
setting_ru
,
CONFIG_STRING_RU_NB_TX
,
&
nb_tx
)
config_setting_lookup_int
(
setting_ru
,
CONFIG_STRING_RU_NB_TX
,
&
nb_tx
)
&&
config_setting_lookup_int
(
setting_ru
,
CONFIG_STRING_RU_NB_RX
,
&
nb_rx
)
&&
config_setting_lookup_int
(
setting_ru
,
CONFIG_STRING_RU_NB_RX
,
&
nb_rx
)
...
@@ -552,6 +553,8 @@ void RCconfig_RU() {
...
@@ -552,6 +553,8 @@ void RCconfig_RU() {
RC
.
ru
[
j
]
->
if_timing
=
synch_to_ext_device
;
RC
.
ru
[
j
]
->
if_timing
=
synch_to_ext_device
;
RC
.
ru
[
j
]
->
num_eNB
=
num_eNB4RU
;
RC
.
ru
[
j
]
->
num_eNB
=
num_eNB4RU
;
for
(
i
=
0
;
i
<
num_eNB4RU
;
i
++
)
RC
.
ru
[
j
]
->
eNB_list
[
i
]
=
RC
.
eNB
[
eNB_list
[
i
]][
0
];
if
(
strcmp
(
local_rf
,
"yes"
)
==
0
)
{
if
(
strcmp
(
local_rf
,
"yes"
)
==
0
)
{
if
(
fronthaul_flag
==
CONFIG_FALSE
)
{
if
(
fronthaul_flag
==
CONFIG_FALSE
)
{
...
@@ -593,7 +596,6 @@ void RCconfig_RU() {
...
@@ -593,7 +596,6 @@ void RCconfig_RU() {
RC
.
ru
[
j
]
->
eth_params
.
remote_portc
=
remote_portc
;
RC
.
ru
[
j
]
->
eth_params
.
remote_portc
=
remote_portc
;
RC
.
ru
[
j
]
->
eth_params
.
my_portd
=
local_portd
;
RC
.
ru
[
j
]
->
eth_params
.
my_portd
=
local_portd
;
RC
.
ru
[
j
]
->
eth_params
.
remote_portd
=
remote_portd
;
RC
.
ru
[
j
]
->
eth_params
.
remote_portd
=
remote_portd
;
for
(
i
=
0
;
i
<
num_eNB4RU
;
i
++
)
RC
.
ru
[
j
]
->
eNB_list
[
i
]
=
RC
.
eNB
[
eNB_list
[
i
]][
0
];
if
(
strcmp
(
tr_preference
,
"udp"
)
==
0
)
{
if
(
strcmp
(
tr_preference
,
"udp"
)
==
0
)
{
RC
.
ru
[
j
]
->
if_south
=
REMOTE_IF5
;
RC
.
ru
[
j
]
->
if_south
=
REMOTE_IF5
;
...
...
openair2/LAYER2/MAC/eNB_scheduler.c
View file @
8ee3f3b3
...
@@ -313,10 +313,7 @@ void eNB_dlsch_ulsch_scheduler(module_id_t module_idP,uint8_t cooperation_flag,
...
@@ -313,10 +313,7 @@ void eNB_dlsch_ulsch_scheduler(module_id_t module_idP,uint8_t cooperation_flag,
}
}
#endif
#endif
LOG_I
(
MAC
,
"[eNB %d][before switch] Frame %d, Subframe %d CC_id %d RA 0 is active, Msg3 in (%d,%d), (%d,%d,%d,%d) UL_pdus %d
\n
"
,
module_idP
,
frameP
,
subframeP
,
CC_id
,
cc
[
0
].
RA_template
[
0
].
Msg3_frame
,
cc
[
0
].
RA_template
[
0
].
Msg3_subframe
,
cc
[
0
].
RA_template
[
0
].
RA_active
,
cc
[
0
].
RA_template
[
1
].
RA_active
,
cc
[
0
].
RA_template
[
2
].
RA_active
,
cc
[
0
].
RA_template
[
3
].
RA_active
,
RC
.
mac
[
module_idP
]
->
UL_req
[
0
].
ul_config_request_body
.
number_of_pdus
);
switch
(
subframeP
)
{
switch
(
subframeP
)
{
case
0
:
case
0
:
...
@@ -326,9 +323,9 @@ void eNB_dlsch_ulsch_scheduler(module_id_t module_idP,uint8_t cooperation_flag,
...
@@ -326,9 +323,9 @@ void eNB_dlsch_ulsch_scheduler(module_id_t module_idP,uint8_t cooperation_flag,
// schedule_RA(module_idP,frameP,subframeP,2);
// schedule_RA(module_idP,frameP,subframeP,2);
LOG_
I
(
MAC
,
"Scheduling MIB
\n
"
);
LOG_
D
(
MAC
,
"Scheduling MIB
\n
"
);
if
((
frameP
&
3
)
==
0
)
schedule_mib
(
module_idP
,
frameP
,
subframeP
);
if
((
frameP
&
3
)
==
0
)
schedule_mib
(
module_idP
,
frameP
,
subframeP
);
LOG_
I
(
MAC
,
"NFAPI: number_of_pdus %d, number_of_TX_req %d
\n
"
,
LOG_
D
(
MAC
,
"NFAPI: number_of_pdus %d, number_of_TX_req %d
\n
"
,
DL_req
[
0
].
dl_config_request_body
.
number_pdu
,
DL_req
[
0
].
dl_config_request_body
.
number_pdu
,
TX_req
[
0
].
tx_request_body
.
number_of_pdus
);
TX_req
[
0
].
tx_request_body
.
number_of_pdus
);
if
(
cc
[
0
].
tdd_Config
==
NULL
)
{
//FDD
if
(
cc
[
0
].
tdd_Config
==
NULL
)
{
//FDD
...
@@ -1026,21 +1023,12 @@ void eNB_dlsch_ulsch_scheduler(module_id_t module_idP,uint8_t cooperation_flag,
...
@@ -1026,21 +1023,12 @@ void eNB_dlsch_ulsch_scheduler(module_id_t module_idP,uint8_t cooperation_flag,
}
}
LOG_I
(
MAC
,
"FrameP %d, subframeP %d : Scheduling CCEs/Msg3
\n
"
,
frameP
,
subframeP
);
LOG_I
(
MAC
,
"[eNB %d][before] Frame %d, Subframe %d CC_id %d RA 0 is active, Msg3 in (%d,%d) (%d,%d,%d,%d) UL_pdus %d
\n
"
,
module_idP
,
frameP
,
subframeP
,
CC_id
,
cc
[
0
].
RA_template
[
0
].
Msg3_frame
,
cc
[
0
].
RA_template
[
0
].
Msg3_subframe
,
cc
[
0
].
RA_template
[
0
].
RA_active
,
cc
[
0
].
RA_template
[
1
].
RA_active
,
cc
[
0
].
RA_template
[
2
].
RA_active
,
cc
[
0
].
RA_template
[
3
].
RA_active
,
RC
.
mac
[
module_idP
]
->
UL_req
[
0
].
ul_config_request_body
.
number_of_pdus
);
// Allocate CCEs and Msg3 for good after scheduling is done
// Allocate CCEs and Msg3 for good after scheduling is done
for
(
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
{
for
(
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
{
allocate_CCEs
(
module_idP
,
CC_id
,
subframeP
,
0
);
allocate_CCEs
(
module_idP
,
CC_id
,
subframeP
,
0
);
check_and_add_msg3
(
module_idP
,
frameP
,
subframeP
);
check_and_add_msg3
(
module_idP
,
frameP
,
subframeP
);
}
}
LOG_I
(
MAC
,
"[eNB %d][after] Frame %d, Subframe %d CC_id 0 RA 0 is active, Msg3 in (%d,%d) (%d,%d,%d,%d) UL_pdus %d
\n
"
,
module_idP
,
frameP
,
subframeP
,
cc
[
0
].
RA_template
[
0
].
Msg3_frame
,
cc
[
0
].
RA_template
[
0
].
Msg3_subframe
,
cc
[
0
].
RA_template
[
0
].
RA_active
,
cc
[
0
].
RA_template
[
1
].
RA_active
,
cc
[
0
].
RA_template
[
2
].
RA_active
,
cc
[
0
].
RA_template
[
3
].
RA_active
,
RC
.
mac
[
module_idP
]
->
UL_req
[
0
].
ul_config_request_body
.
number_of_pdus
);
#if defined(FLEXRAN_AGENT_SB_IF)
#if defined(FLEXRAN_AGENT_SB_IF)
#ifndef DISABLE_CONT_STATS
#ifndef DISABLE_CONT_STATS
//Send subframe trigger to the controller
//Send subframe trigger to the controller
...
...
openair2/LAYER2/MAC/eNB_scheduler_bch.c
View file @
8ee3f3b3
...
@@ -496,12 +496,12 @@ void schedule_mib(module_id_t module_idP,
...
@@ -496,12 +496,12 @@ void schedule_mib(module_id_t module_idP,
module_idP
,
module_idP
,
0
);
// not used in this case
0
);
// not used in this case
LOG_
I
(
MAC
,
"Frame %d, subframe %d: BCH PDU length %d
\n
"
,
LOG_
D
(
MAC
,
"Frame %d, subframe %d: BCH PDU length %d
\n
"
,
frameP
,
subframeP
,
mib_sdu_length
);
frameP
,
subframeP
,
mib_sdu_length
);
if
(
mib_sdu_length
>
0
)
{
if
(
mib_sdu_length
>
0
)
{
LOG_
I
(
MAC
,
"Frame %d, subframe %d: Adding BCH PDU in position %d (length %d)
\n
"
,
LOG_
D
(
MAC
,
"Frame %d, subframe %d: Adding BCH PDU in position %d (length %d)
\n
"
,
frameP
,
subframeP
,
dl_req
->
number_pdu
,
mib_sdu_length
);
frameP
,
subframeP
,
dl_req
->
number_pdu
,
mib_sdu_length
);
dl_config_pdu
=
&
dl_req
->
dl_config_pdu_list
[
dl_req
->
number_pdu
];
dl_config_pdu
=
&
dl_req
->
dl_config_pdu_list
[
dl_req
->
number_pdu
];
...
@@ -513,7 +513,7 @@ void schedule_mib(module_id_t module_idP,
...
@@ -513,7 +513,7 @@ void schedule_mib(module_id_t module_idP,
dl_config_pdu
->
bch_pdu
.
bch_pdu_rel8
.
transmission_power
=
6000
;
dl_config_pdu
->
bch_pdu
.
bch_pdu_rel8
.
transmission_power
=
6000
;
dl_req
->
number_pdu
++
;
dl_req
->
number_pdu
++
;
LOG_
I
(
MAC
,
"eNB->DL_req[0].number_pdu %d (%p)
\n
"
,
LOG_
D
(
MAC
,
"eNB->DL_req[0].number_pdu %d (%p)
\n
"
,
dl_req
->
number_pdu
,
&
dl_req
->
number_pdu
);
dl_req
->
number_pdu
,
&
dl_req
->
number_pdu
);
// DL request
// DL request
...
@@ -647,7 +647,7 @@ schedule_SI(
...
@@ -647,7 +647,7 @@ schedule_SI(
dl_config_pdu
->
dci_dl_pdu
.
dci_dl_pdu_rel8
.
resource_block_coding
=
getRIV
(
N_RB_DL
,
first_rb
,
4
);
dl_config_pdu
->
dci_dl_pdu
.
dci_dl_pdu_rel8
.
resource_block_coding
=
getRIV
(
N_RB_DL
,
first_rb
,
4
);
if
(
!
CCE_allocation_infeasible
(
module_idP
,
CC_id
,
1
,
subframeP
,
dl_config_pdu
->
dci_dl_pdu
.
dci_dl_pdu_rel8
.
aggregation_level
,
SI_RNTI
))
{
if
(
!
CCE_allocation_infeasible
(
module_idP
,
CC_id
,
1
,
subframeP
,
dl_config_pdu
->
dci_dl_pdu
.
dci_dl_pdu_rel8
.
aggregation_level
,
SI_RNTI
))
{
LOG_
I
(
MAC
,
"Frame %d: Subframe %d : Adding common DCI for S_RNTI
\n
"
,
LOG_
D
(
MAC
,
"Frame %d: Subframe %d : Adding common DCI for S_RNTI
\n
"
,
frameP
,
subframeP
);
frameP
,
subframeP
);
dl_req
->
number_dci
++
;
dl_req
->
number_dci
++
;
dl_req
->
number_pdu
++
;
dl_req
->
number_pdu
++
;
...
...
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
View file @
8ee3f3b3
...
@@ -645,7 +645,6 @@ printf("MAC: cannot remove UE rnti %x\n", rntiP);
...
@@ -645,7 +645,6 @@ printf("MAC: cannot remove UE rnti %x\n", rntiP);
pCC_id
=
UE_PCCID
(
mod_idP
,
UE_id
);
pCC_id
=
UE_PCCID
(
mod_idP
,
UE_id
);
printf
(
"MAC: remove UE %d rnti %x
\n
"
,
UE_id
,
rntiP
);
LOG_I
(
MAC
,
"Removing UE %d from Primary CC_id %d (rnti %x)
\n
"
,
UE_id
,
pCC_id
,
rntiP
);
LOG_I
(
MAC
,
"Removing UE %d from Primary CC_id %d (rnti %x)
\n
"
,
UE_id
,
pCC_id
,
rntiP
);
dump_ue_list
(
UE_list
,
0
);
dump_ue_list
(
UE_list
,
0
);
...
@@ -1331,14 +1330,14 @@ int get_nCCE_offset(int *CCE_table,
...
@@ -1331,14 +1330,14 @@ int get_nCCE_offset(int *CCE_table,
nb_candidates
=
(
L
==
4
)
?
4
:
2
;
nb_candidates
=
(
L
==
4
)
?
4
:
2
;
nb_candidates
=
min
(
nb_candidates
,
nCCE
/
L
);
nb_candidates
=
min
(
nb_candidates
,
nCCE
/
L
);
printf
(
"Common DCI nb_candidates %d, L %d
\n
"
,
nb_candidates
,
L
);
//
printf("Common DCI nb_candidates %d, L %d\n",nb_candidates,L);
for
(
m
=
nb_candidates
-
1
;
m
>=
0
;
m
--
)
{
for
(
m
=
nb_candidates
-
1
;
m
>=
0
;
m
--
)
{
search_space_free
=
1
;
search_space_free
=
1
;
for
(
l
=
0
;
l
<
L
;
l
++
)
{
for
(
l
=
0
;
l
<
L
;
l
++
)
{
printf
(
"CCE_table[%d] %d
\n
"
,(
m
*
L
)
+
l
,
CCE_table
[(
m
*
L
)
+
l
]);
//
printf("CCE_table[%d] %d\n",(m*L)+l,CCE_table[(m*L)+l]);
if
(
CCE_table
[(
m
*
L
)
+
l
]
==
1
)
{
if
(
CCE_table
[(
m
*
L
)
+
l
]
==
1
)
{
search_space_free
=
0
;
search_space_free
=
0
;
break
;
break
;
...
@@ -1592,7 +1591,7 @@ int allocate_CCEs(int module_idP,
...
@@ -1592,7 +1591,7 @@ int allocate_CCEs(int module_idP,
int
i
,
j
,
idci
;
int
i
,
j
,
idci
;
int
nCCE
=
0
;
int
nCCE
=
0
;
LOG_
I
(
MAC
,
"Allocate CCEs subframe %d, test %d : (DL %d,UL %d)
\n
"
,
subframeP
,
test_onlyP
,
DL_req
->
number_dci
,
HI_DCI0_req
->
number_of_dci
);
LOG_
D
(
MAC
,
"Allocate CCEs subframe %d, test %d : (DL %d,UL %d)
\n
"
,
subframeP
,
test_onlyP
,
DL_req
->
number_dci
,
HI_DCI0_req
->
number_of_dci
);
DL_req
->
number_pdcch_ofdm_symbols
=
1
;
DL_req
->
number_pdcch_ofdm_symbols
=
1
;
try_again: