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
spbro
OpenXG-RAN
Commits
7cbf24d3
Commit
7cbf24d3
authored
Jan 03, 2021
by
Raymond Knopp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
updates for tracing
parent
1b95baaf
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
171 additions
and
136 deletions
+171
-136
openair1/PHY/INIT/lte_init.c
openair1/PHY/INIT/lte_init.c
+48
-49
openair1/PHY/LTE_ESTIMATION/lte_eNB_measurements.c
openair1/PHY/LTE_ESTIMATION/lte_eNB_measurements.c
+21
-21
openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
+8
-7
openair1/PHY/LTE_TRANSPORT/pucch.c
openair1/PHY/LTE_TRANSPORT/pucch.c
+4
-1
openair1/PHY/LTE_TRANSPORT/transport_common.h
openair1/PHY/LTE_TRANSPORT/transport_common.h
+1
-1
openair1/PHY/defs_eNB.h
openair1/PHY/defs_eNB.h
+16
-16
openair1/SCHED/phy_procedures_lte_eNb.c
openair1/SCHED/phy_procedures_lte_eNb.c
+4
-3
openair2/LAYER2/MAC/eNB_scheduler_fairRR.c
openair2/LAYER2/MAC/eNB_scheduler_fairRR.c
+2
-2
openair2/LAYER2/MAC/mac.h
openair2/LAYER2/MAC/mac.h
+2
-1
openair2/RRC/LTE/rrc_eNB.c
openair2/RRC/LTE/rrc_eNB.c
+3
-1
openair3/NAS/COMMON/IES/NasPagingIdentity.h
openair3/NAS/COMMON/IES/NasPagingIdentity.h
+43
-0
targets/COMMON/openairinterface5g_limits.h
targets/COMMON/openairinterface5g_limits.h
+2
-4
targets/RT/USER/lte-enb.c
targets/RT/USER/lte-enb.c
+17
-30
No files found.
openair1/PHY/INIT/lte_init.c
View file @
7cbf24d3
...
...
@@ -456,13 +456,13 @@ int phy_init_lte_eNB(PHY_VARS_eNB *eNB,
}
// Channel estimates for SRS
for
(
UE_id
=
0
;
UE_id
<
NUMBER_OF_UE_MAX
;
UE
_id
++
)
{
srs_vars
[
UE
_id
].
srs_ch_estimates
=
(
int32_t
**
)
malloc16
(
64
*
sizeof
(
int32_t
*
));
srs_vars
[
UE
_id
].
srs_ch_estimates_time
=
(
int32_t
**
)
malloc16
(
64
*
sizeof
(
int32_t
*
));
for
(
int
srs_id
=
0
;
srs_id
<
NUMBER_OF_SRS_MAX
;
srs
_id
++
)
{
srs_vars
[
srs
_id
].
srs_ch_estimates
=
(
int32_t
**
)
malloc16
(
64
*
sizeof
(
int32_t
*
));
srs_vars
[
srs
_id
].
srs_ch_estimates_time
=
(
int32_t
**
)
malloc16
(
64
*
sizeof
(
int32_t
*
));
for
(
i
=
0
;
i
<
64
;
i
++
)
{
srs_vars
[
UE
_id
].
srs_ch_estimates
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
fp
->
ofdm_symbol_size
);
srs_vars
[
UE
_id
].
srs_ch_estimates_time
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
fp
->
ofdm_symbol_size
*
2
);
srs_vars
[
srs
_id
].
srs_ch_estimates
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
fp
->
ofdm_symbol_size
);
srs_vars
[
srs
_id
].
srs_ch_estimates_time
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
fp
->
ofdm_symbol_size
*
2
);
}
}
//UE_id
...
...
@@ -470,8 +470,8 @@ int phy_init_lte_eNB(PHY_VARS_eNB *eNB,
init_ulsch_power_LUT
();
// SRS
for
(
UE_id
=
0
;
UE_id
<
NUMBER_OF_UE_MAX
;
UE
_id
++
)
{
srs_vars
[
UE
_id
].
srs
=
(
int32_t
*
)
malloc16_clear
(
2
*
fp
->
ofdm_symbol_size
*
sizeof
(
int32_t
));
for
(
int
srs_id
=
0
;
srs_id
<
NUMBER_OF_SRS_MAX
;
srs
_id
++
)
{
srs_vars
[
srs
_id
].
srs
=
(
int32_t
*
)
malloc16_clear
(
2
*
fp
->
ofdm_symbol_size
*
sizeof
(
int32_t
));
}
// PRACH
...
...
@@ -504,34 +504,33 @@ int phy_init_lte_eNB(PHY_VARS_eNB *eNB,
LOG_D(PHY,"[INIT] prach_vars->rxsigF[%d] = %p\n",i,prach_vars->rxsigF[i]);
}*/
for
(
UE_id
=
0
;
UE_id
<
NUMBER_OF_UE_MAX
;
UE
_id
++
)
{
for
(
int
ULSCH_id
=
0
;
ULSCH_id
<
NUMBER_OF_ULSCH_MAX
;
ULSCH
_id
++
)
{
//FIXME
pusch_vars
[
U
E_id
]
=
(
LTE_eNB_PUSCH
*
)
malloc16_clear
(
NUMBER_OF_UE
_MAX
*
sizeof
(
LTE_eNB_PUSCH
));
pusch_vars
[
U
E
_id
]
->
rxdataF_ext
=
(
int32_t
**
)
malloc16
(
2
*
sizeof
(
int32_t
*
));
pusch_vars
[
U
E
_id
]
->
rxdataF_ext2
=
(
int32_t
**
)
malloc16
(
2
*
sizeof
(
int32_t
*
));
pusch_vars
[
U
E
_id
]
->
drs_ch_estimates
=
(
int32_t
**
)
malloc16
(
2
*
sizeof
(
int32_t
*
));
pusch_vars
[
U
E
_id
]
->
drs_ch_estimates_time
=
(
int32_t
**
)
malloc16
(
2
*
sizeof
(
int32_t
*
));
pusch_vars
[
U
E
_id
]
->
rxdataF_comp
=
(
int32_t
**
)
malloc16
(
2
*
sizeof
(
int32_t
*
));
pusch_vars
[
U
E
_id
]
->
ul_ch_mag
=
(
int32_t
**
)
malloc16
(
2
*
sizeof
(
int32_t
*
));
pusch_vars
[
U
E
_id
]
->
ul_ch_magb
=
(
int32_t
**
)
malloc16
(
2
*
sizeof
(
int32_t
*
));
pusch_vars
[
U
LSCH_id
]
=
(
LTE_eNB_PUSCH
*
)
malloc16_clear
(
NUMBER_OF_ULSCH
_MAX
*
sizeof
(
LTE_eNB_PUSCH
));
pusch_vars
[
U
LSCH
_id
]
->
rxdataF_ext
=
(
int32_t
**
)
malloc16
(
2
*
sizeof
(
int32_t
*
));
pusch_vars
[
U
LSCH
_id
]
->
rxdataF_ext2
=
(
int32_t
**
)
malloc16
(
2
*
sizeof
(
int32_t
*
));
pusch_vars
[
U
LSCH
_id
]
->
drs_ch_estimates
=
(
int32_t
**
)
malloc16
(
2
*
sizeof
(
int32_t
*
));
pusch_vars
[
U
LSCH
_id
]
->
drs_ch_estimates_time
=
(
int32_t
**
)
malloc16
(
2
*
sizeof
(
int32_t
*
));
pusch_vars
[
U
LSCH
_id
]
->
rxdataF_comp
=
(
int32_t
**
)
malloc16
(
2
*
sizeof
(
int32_t
*
));
pusch_vars
[
U
LSCH
_id
]
->
ul_ch_mag
=
(
int32_t
**
)
malloc16
(
2
*
sizeof
(
int32_t
*
));
pusch_vars
[
U
LSCH
_id
]
->
ul_ch_magb
=
(
int32_t
**
)
malloc16
(
2
*
sizeof
(
int32_t
*
));
AssertFatal
(
fp
->
ofdm_symbol_size
>
127
,
"fp->ofdm_symbol_size %d<128
\n
"
,
fp
->
ofdm_symbol_size
);
AssertFatal
(
fp
->
symbols_per_tti
>
11
,
"fp->symbols_per_tti %d < 12
\n
"
,
fp
->
symbols_per_tti
);
AssertFatal
(
fp
->
N_RB_UL
>
5
,
"fp->N_RB_UL %d < 6
\n
"
,
fp
->
N_RB_UL
);
for
(
i
=
0
;
i
<
2
;
i
++
)
{
// RK 2 times because of output format of FFT!
// FIXME We should get rid of this
pusch_vars
[
U
E
_id
]
->
rxdataF_ext
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
fp
->
N_RB_UL
*
12
*
fp
->
symbols_per_tti
);
pusch_vars
[
UE_id
]
->
rxdataF_ext2
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
fp
->
N_RB_UL
*
12
*
fp
->
symbols_per_tti
);
pusch_vars
[
U
E
_id
]
->
drs_ch_estimates
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
fp
->
N_RB_UL
*
12
*
fp
->
symbols_per_tti
);
pusch_vars
[
U
E
_id
]
->
drs_ch_estimates_time
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
2
*
sizeof
(
int32_t
)
*
fp
->
ofdm_symbol_size
);
pusch_vars
[
U
E
_id
]
->
rxdataF_comp
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
fp
->
N_RB_UL
*
12
*
fp
->
symbols_per_tti
);
pusch_vars
[
U
E
_id
]
->
ul_ch_mag
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
fp
->
symbols_per_tti
*
sizeof
(
int32_t
)
*
fp
->
N_RB_UL
*
12
);
pusch_vars
[
U
E
_id
]
->
ul_ch_magb
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
fp
->
symbols_per_tti
*
sizeof
(
int32_t
)
*
fp
->
N_RB_UL
*
12
);
pusch_vars
[
U
LSCH
_id
]
->
rxdataF_ext
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
fp
->
N_RB_UL
*
12
*
fp
->
symbols_per_tti
);
pusch_vars
[
U
LSCH
_id
]
->
drs_ch_estimates
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
fp
->
N_RB_UL
*
12
*
fp
->
symbols_per_tti
);
pusch_vars
[
U
LSCH
_id
]
->
drs_ch_estimates_time
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
2
*
sizeof
(
int32_t
)
*
fp
->
ofdm_symbol_size
);
pusch_vars
[
U
LSCH
_id
]
->
rxdataF_comp
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
fp
->
N_RB_UL
*
12
*
fp
->
symbols_per_tti
);
pusch_vars
[
U
LSCH
_id
]
->
ul_ch_mag
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
fp
->
symbols_per_tti
*
sizeof
(
int32_t
)
*
fp
->
N_RB_UL
*
12
);
pusch_vars
[
U
LSCH
_id
]
->
ul_ch_magb
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
fp
->
symbols_per_tti
*
sizeof
(
int32_t
)
*
fp
->
N_RB_UL
*
12
);
}
pusch_vars
[
U
E
_id
]
->
llr
=
(
int16_t
*
)
malloc16_clear
(
(
8
*
((
3
*
8
*
6144
)
+
12
))
*
sizeof
(
int16_t
)
);
}
//U
E
_id
pusch_vars
[
U
LSCH
_id
]
->
llr
=
(
int16_t
*
)
malloc16_clear
(
(
8
*
((
3
*
8
*
6144
)
+
12
))
*
sizeof
(
int16_t
)
);
}
//U
LSCH
_id
for
(
UE_id
=
0
;
UE_id
<
NUMBER_OF_UE_MAX
;
UE_id
++
)
eNB
->
UE_stats_ptr
[
UE_id
]
=
&
eNB
->
UE_stats
[
UE_id
];
...
...
@@ -561,19 +560,19 @@ void phy_free_lte_eNB(PHY_VARS_eNB *eNB) {
free_and_zero
(
common_vars
->
rxdataF
);
// Channel estimates for SRS
for
(
UE_id
=
0
;
UE_id
<
NUMBER_OF_UE_MAX
;
UE
_id
++
)
{
for
(
int
srs_id
=
0
;
srs_id
<
NUMBER_OF_SRS_MAX
;
srs
_id
++
)
{
for
(
i
=
0
;
i
<
64
;
i
++
)
{
free_and_zero
(
srs_vars
[
UE
_id
].
srs_ch_estimates
[
i
]);
free_and_zero
(
srs_vars
[
UE
_id
].
srs_ch_estimates_time
[
i
]);
free_and_zero
(
srs_vars
[
srs
_id
].
srs_ch_estimates
[
i
]);
free_and_zero
(
srs_vars
[
srs
_id
].
srs_ch_estimates_time
[
i
]);
}
free_and_zero
(
srs_vars
[
UE
_id
].
srs_ch_estimates
);
free_and_zero
(
srs_vars
[
UE
_id
].
srs_ch_estimates_time
);
free_and_zero
(
srs_vars
[
srs
_id
].
srs_ch_estimates
);
free_and_zero
(
srs_vars
[
srs
_id
].
srs_ch_estimates_time
);
}
//UE_id
free_ul_ref_sigs
();
for
(
UE_id
=
0
;
UE_id
<
NUMBER_OF_
UE
_MAX
;
UE_id
++
)
free_and_zero
(
srs_vars
[
UE_id
].
srs
);
for
(
UE_id
=
0
;
UE_id
<
NUMBER_OF_
SRS
_MAX
;
UE_id
++
)
free_and_zero
(
srs_vars
[
UE_id
].
srs
);
free_and_zero
(
prach_vars
->
prachF
);
...
...
@@ -591,26 +590,26 @@ void phy_free_lte_eNB(PHY_VARS_eNB *eNB) {
free_and_zero
(
prach_vars_br
->
prachF
);
free_and_zero
(
prach_vars
->
rxsigF
[
0
]);
for
(
UE_id
=
0
;
UE_id
<
NUMBER_OF_UE_MAX
;
UE
_id
++
)
{
for
(
int
ULSCH_id
=
0
;
ULSCH_id
<
NUMBER_OF_ULSCH_MAX
;
ULSCH
_id
++
)
{
for
(
i
=
0
;
i
<
2
;
i
++
)
{
free_and_zero
(
pusch_vars
[
U
E
_id
]
->
rxdataF_ext
[
i
]);
free_and_zero
(
pusch_vars
[
U
E
_id
]
->
rxdataF_ext2
[
i
]);
free_and_zero
(
pusch_vars
[
U
E
_id
]
->
drs_ch_estimates
[
i
]);
free_and_zero
(
pusch_vars
[
U
E
_id
]
->
drs_ch_estimates_time
[
i
]);
free_and_zero
(
pusch_vars
[
U
E
_id
]
->
rxdataF_comp
[
i
]);
free_and_zero
(
pusch_vars
[
U
E
_id
]
->
ul_ch_mag
[
i
]);
free_and_zero
(
pusch_vars
[
U
E
_id
]
->
ul_ch_magb
[
i
]);
free_and_zero
(
pusch_vars
[
U
LSCH
_id
]
->
rxdataF_ext
[
i
]);
free_and_zero
(
pusch_vars
[
U
LSCH
_id
]
->
rxdataF_ext2
[
i
]);
free_and_zero
(
pusch_vars
[
U
LSCH
_id
]
->
drs_ch_estimates
[
i
]);
free_and_zero
(
pusch_vars
[
U
LSCH
_id
]
->
drs_ch_estimates_time
[
i
]);
free_and_zero
(
pusch_vars
[
U
LSCH
_id
]
->
rxdataF_comp
[
i
]);
free_and_zero
(
pusch_vars
[
U
LSCH
_id
]
->
ul_ch_mag
[
i
]);
free_and_zero
(
pusch_vars
[
U
LSCH
_id
]
->
ul_ch_magb
[
i
]);
}
free_and_zero
(
pusch_vars
[
U
E
_id
]
->
rxdataF_ext
);
free_and_zero
(
pusch_vars
[
U
E
_id
]
->
rxdataF_ext2
);
free_and_zero
(
pusch_vars
[
U
E
_id
]
->
drs_ch_estimates
);
free_and_zero
(
pusch_vars
[
U
E
_id
]
->
drs_ch_estimates_time
);
free_and_zero
(
pusch_vars
[
U
E
_id
]
->
rxdataF_comp
);
free_and_zero
(
pusch_vars
[
U
E
_id
]
->
ul_ch_mag
);
free_and_zero
(
pusch_vars
[
U
E
_id
]
->
ul_ch_magb
);
free_and_zero
(
pusch_vars
[
U
E
_id
]
->
llr
);
free_and_zero
(
pusch_vars
[
U
E
_id
]);
free_and_zero
(
pusch_vars
[
U
LSCH
_id
]
->
rxdataF_ext
);
free_and_zero
(
pusch_vars
[
U
LSCH
_id
]
->
rxdataF_ext2
);
free_and_zero
(
pusch_vars
[
U
LSCH
_id
]
->
drs_ch_estimates
);
free_and_zero
(
pusch_vars
[
U
LSCH
_id
]
->
drs_ch_estimates_time
);
free_and_zero
(
pusch_vars
[
U
LSCH
_id
]
->
rxdataF_comp
);
free_and_zero
(
pusch_vars
[
U
LSCH
_id
]
->
ul_ch_mag
);
free_and_zero
(
pusch_vars
[
U
LSCH
_id
]
->
ul_ch_magb
);
free_and_zero
(
pusch_vars
[
U
LSCH
_id
]
->
llr
);
free_and_zero
(
pusch_vars
[
U
LSCH
_id
]);
}
//UE_id
for
(
UE_id
=
0
;
UE_id
<
NUMBER_OF_UE_MAX
;
UE_id
++
)
eNB
->
UE_stats_ptr
[
UE_id
]
=
NULL
;
...
...
openair1/PHY/LTE_ESTIMATION/lte_eNB_measurements.c
View file @
7cbf24d3
...
...
@@ -121,12 +121,12 @@ void lte_eNB_I0_measurements(PHY_VARS_eNB *eNB,
void
lte_eNB_srs_measurements
(
PHY_VARS_eNB
*
eNB
,
module_id_t
eNB_id
,
module_id_t
UE
_id
,
module_id_t
srs
_id
,
unsigned
char
init_averaging
)
{
LTE_DL_FRAME_PARMS
*
frame_parms
=
&
eNB
->
frame_parms
;
PHY_MEASUREMENTS_eNB
*
measurements
=
&
eNB
->
measurements
;
LTE_eNB_SRS
*
srs_vars
=
&
eNB
->
srs_vars
[
UE
_id
];
LTE_eNB_SRS
*
srs_vars
=
&
eNB
->
srs_vars
[
srs
_id
];
int32_t
aarx
,
rx_power_correction
;
int32_t
rx_power
;
...
...
@@ -136,7 +136,7 @@ void lte_eNB_srs_measurements(PHY_VARS_eNB *eNB,
//printf("Running eNB_srs_measurements for eNB_id %d\n",eNB_id);
if
(
init_averaging
==
1
)
rx_power_avg_eNB
[
UE
_id
]
=
0
;
rx_power_avg_eNB
[
srs
_id
]
=
0
;
rx_power
=
0
;
...
...
@@ -152,24 +152,24 @@ void lte_eNB_srs_measurements(PHY_VARS_eNB *eNB,
for
(
aarx
=
0
;
aarx
<
frame_parms
->
nb_antennas_rx
;
aarx
++
)
{
measurements
->
rx_spatial_power
[
UE
_id
][
0
][
aarx
]
=
measurements
->
rx_spatial_power
[
srs
_id
][
0
][
aarx
]
=
((
signal_energy_nodc
(
&
srs_vars
->
srs_ch_estimates
[
aarx
][
frame_parms
->
first_carrier_offset
],
(
frame_parms
->
N_RB_DL
*
6
))
+
signal_energy_nodc
(
&
srs_vars
->
srs_ch_estimates
[
aarx
][
1
],
(
frame_parms
->
N_RB_DL
*
6
)))
*
rx_power_correction
)
-
measurements
->
n0_power
[
aarx
];
measurements
->
rx_spatial_power
[
UE
_id
][
0
][
aarx
]
<<=
1
;
// because of noise only in odd samples
measurements
->
rx_spatial_power
[
srs
_id
][
0
][
aarx
]
<<=
1
;
// because of noise only in odd samples
measurements
->
rx_spatial_power_dB
[
UE_id
][
0
][
aarx
]
=
(
unsigned
short
)
dB_fixed
(
measurements
->
rx_spatial_power
[
UE
_id
][
0
][
aarx
]);
measurements
->
rx_spatial_power_dB
[
srs_id
][
0
][
aarx
]
=
(
unsigned
short
)
dB_fixed
(
measurements
->
rx_spatial_power
[
srs
_id
][
0
][
aarx
]);
measurements
->
wideband_cqi
[
UE_id
][
aarx
]
=
measurements
->
rx_spatial_power
[
UE
_id
][
0
][
aarx
];
measurements
->
wideband_cqi
[
srs_id
][
aarx
]
=
measurements
->
rx_spatial_power
[
srs
_id
][
0
][
aarx
];
// measurements->rx_power[UE_id][aarx]/=frame_parms->nb_antennas_tx;
measurements
->
wideband_cqi_dB
[
UE_id
][
aarx
]
=
(
unsigned
short
)
dB_fixed
(
measurements
->
wideband_cqi
[
UE
_id
][
aarx
]);
rx_power
+=
measurements
->
wideband_cqi
[
UE
_id
][
aarx
];
measurements
->
wideband_cqi_dB
[
srs_id
][
aarx
]
=
(
unsigned
short
)
dB_fixed
(
measurements
->
wideband_cqi
[
srs
_id
][
aarx
]);
rx_power
+=
measurements
->
wideband_cqi
[
srs
_id
][
aarx
];
// measurements->rx_avg_power_dB[UE_id] += measurements->rx_power_dB[UE_id][aarx];
}
...
...
@@ -177,14 +177,14 @@ void lte_eNB_srs_measurements(PHY_VARS_eNB *eNB,
// measurements->rx_avg_power_dB[UE_id]/=frame_parms->nb_antennas_rx;
if
(
init_averaging
==
0
)
rx_power_avg_eNB
[
UE_id
]
=
((
k1
*
rx_power_avg_eNB
[
UE
_id
])
+
(
k2
*
rx_power
))
>>
10
;
rx_power_avg_eNB
[
srs_id
]
=
((
k1
*
rx_power_avg_eNB
[
srs
_id
])
+
(
k2
*
rx_power
))
>>
10
;
else
rx_power_avg_eNB
[
UE
_id
]
=
rx_power
;
rx_power_avg_eNB
[
srs
_id
]
=
rx_power
;
measurements
->
wideband_cqi_tot
[
UE
_id
]
=
dB_fixed2
(
rx_power
,
2
*
measurements
->
n0_power_tot
);
measurements
->
wideband_cqi_tot
[
srs
_id
]
=
dB_fixed2
(
rx_power
,
2
*
measurements
->
n0_power_tot
);
// times 2 since we have noise only in the odd carriers of the srs comb
measurements
->
rx_rssi_dBm
[
UE_id
]
=
(
int32_t
)
dB_fixed
(
rx_power_avg_eNB
[
UE
_id
])
-
eNB
->
rx_total_gain_dB
;
measurements
->
rx_rssi_dBm
[
srs_id
]
=
(
int32_t
)
dB_fixed
(
rx_power_avg_eNB
[
srs
_id
])
-
eNB
->
rx_total_gain_dB
;
...
...
@@ -200,21 +200,21 @@ void lte_eNB_srs_measurements(PHY_VARS_eNB *eNB,
else
if
(
rb
>
12
)
ul_ch
=
&
srs_vars
->
srs_ch_estimates
[
aarx
][
6
+
(
rb
-
13
)
*
12
];
else
{
measurements
->
subband_cqi_dB
[
UE
_id
][
aarx
][
rb
]
=
0
;
measurements
->
subband_cqi_dB
[
srs
_id
][
aarx
][
rb
]
=
0
;
continue
;
}
// cqi
if
(
aarx
==
0
)
measurements
->
subband_cqi_tot
[
UE
_id
][
rb
]
=
0
;
measurements
->
subband_cqi_tot
[
srs
_id
][
rb
]
=
0
;
measurements
->
subband_cqi
[
UE
_id
][
aarx
][
rb
]
=
(
signal_energy_nodc
(
ul_ch
,
12
))
*
rx_power_correction
-
measurements
->
n0_power
[
aarx
];
measurements
->
subband_cqi
[
srs
_id
][
aarx
][
rb
]
=
(
signal_energy_nodc
(
ul_ch
,
12
))
*
rx_power_correction
-
measurements
->
n0_power
[
aarx
];
if
(
measurements
->
subband_cqi
[
UE
_id
][
aarx
][
rb
]
<
0
)
measurements
->
subband_cqi
[
UE
_id
][
aarx
][
rb
]
=
0
;
if
(
measurements
->
subband_cqi
[
srs
_id
][
aarx
][
rb
]
<
0
)
measurements
->
subband_cqi
[
srs
_id
][
aarx
][
rb
]
=
0
;
measurements
->
subband_cqi_tot
[
UE_id
][
rb
]
+=
measurements
->
subband_cqi
[
UE
_id
][
aarx
][
rb
];
measurements
->
subband_cqi_dB
[
UE_id
][
aarx
][
rb
]
=
dB_fixed2
(
measurements
->
subband_cqi
[
UE
_id
][
aarx
][
rb
],
measurements
->
subband_cqi_tot
[
srs_id
][
rb
]
+=
measurements
->
subband_cqi
[
srs
_id
][
aarx
][
rb
];
measurements
->
subband_cqi_dB
[
srs_id
][
aarx
][
rb
]
=
dB_fixed2
(
measurements
->
subband_cqi
[
srs
_id
][
aarx
][
rb
],
2
*
measurements
->
n0_power
[
aarx
]);
// 2*n0_power since we have noise from the odd carriers in the comb of the srs
...
...
@@ -225,7 +225,7 @@ void lte_eNB_srs_measurements(PHY_VARS_eNB *eNB,
for
(
rb
=
0
;
rb
<
frame_parms
->
N_RB_DL
;
rb
++
)
{
measurements
->
subband_cqi_tot_dB
[
UE_id
][
rb
]
=
dB_fixed2
(
measurements
->
subband_cqi_tot
[
UE
_id
][
rb
],
measurements
->
subband_cqi_tot_dB
[
srs_id
][
rb
]
=
dB_fixed2
(
measurements
->
subband_cqi_tot
[
srs
_id
][
rb
],
measurements
->
n0_power_tot
);
/*
if (measurements->subband_cqi_tot_dB[UE_id][rb] == 65)
...
...
openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
View file @
7cbf24d3
...
...
@@ -96,6 +96,7 @@ void free_eNB_dlsch(LTE_eNB_DLSCH_t *dlsch) {
}
LTE_eNB_DLSCH_t
*
new_eNB_dlsch
(
unsigned
char
Kmimo
,
unsigned
char
Mdlharq
,
uint32_t
Nsoft
,
...
...
@@ -160,7 +161,7 @@ LTE_eNB_DLSCH_t *new_eNB_dlsch(unsigned char Kmimo,
for
(
i
=
0
;
i
<
Mdlharq
;
i
++
)
{
dlsch
->
harq_processes
[
i
]
=
(
LTE_DL_eNB_HARQ_t
*
)
malloc16
(
sizeof
(
LTE_DL_eNB_HARQ_t
));
LOG_
T
(
PHY
,
"Required
mem size %d (bw scaling %d), dlsch->harq_processes[%d] %p
\n
"
,
LOG_
I
(
PHY
,
"Required DLSCH
mem size %d (bw scaling %d), dlsch->harq_processes[%d] %p
\n
"
,
MAX_DLSCH_PAYLOAD_BYTES
/
bw_scaling
,
bw_scaling
,
i
,
dlsch
->
harq_processes
[
i
]);
if
(
dlsch
->
harq_processes
[
i
])
{
...
...
@@ -169,9 +170,9 @@ LTE_eNB_DLSCH_t *new_eNB_dlsch(unsigned char Kmimo,
dlsch
->
harq_processes
[
i
]
->
b
=
(
unsigned
char
*
)
malloc16
(
MAX_DLSCH_PAYLOAD_BYTES
/
bw_scaling
);
if
(
dlsch
->
harq_processes
[
i
]
->
b
)
{
bzero
(
dlsch
->
harq_processes
[
i
]
->
b
,
MAX_DLSCH_PAYLOAD_BYTES
/
bw_scaling
);
memset
(
dlsch
->
harq_processes
[
i
]
->
b
,
0
,
MAX_DLSCH_PAYLOAD_BYTES
/
bw_scaling
);
}
else
{
printf
(
"Can't get b
\n
"
);
AssertFatal
(
1
==
0
,
"Can't get b
\n
"
);
exit_flag
=
1
;
}
...
...
@@ -181,15 +182,15 @@ LTE_eNB_DLSCH_t *new_eNB_dlsch(unsigned char Kmimo,
dlsch
->
harq_processes
[
i
]
->
c
[
r
]
=
(
uint8_t
*
)
malloc16
(((
r
==
0
)
?
8
:
0
)
+
3
+
768
);
if
(
dlsch
->
harq_processes
[
i
]
->
c
[
r
])
{
bzero
(
dlsch
->
harq_processes
[
i
]
->
c
[
r
]
,((
r
==
0
)
?
8
:
0
)
+
3
+
768
);
memset
(
dlsch
->
harq_processes
[
i
]
->
c
[
r
],
0
,((
r
==
0
)
?
8
:
0
)
+
3
+
768
);
}
else
{
printf
(
"Can't get c
\n
"
);
AssertFatal
(
1
==
0
,
"Can't get c
\n
"
);
exit_flag
=
2
;
}
}
}
}
else
{
printf
(
"Can't get harq_p %d
\n
"
,
i
);
AssertFatal
(
1
==
0
,
"Can't get harq_p %d
\n
"
,
i
);
exit_flag
=
3
;
}
}
...
...
@@ -203,7 +204,7 @@ LTE_eNB_DLSCH_t *new_eNB_dlsch(unsigned char Kmimo,
}
}
LOG_
D
(
PHY
,
"new_eNB_dlsch exit flag %d, size of %ld
\n
"
,
LOG_
I
(
PHY
,
"new_eNB_dlsch exit flag %d, size of %ld
\n
"
,
exit_flag
,
sizeof
(
LTE_eNB_DLSCH_t
));
free_eNB_dlsch
(
dlsch
);
return
(
NULL
);
...
...
openair1/PHY/LTE_TRANSPORT/pucch.c
View file @
7cbf24d3
...
...
@@ -79,11 +79,14 @@ void dump_uci_stats(PHY_VARS_eNB *eNB,int frame) {
dB_fixed
(
uci_stats
->
pucch1_high_stat
[
0
]),
dB_fixed
(
uci_stats
->
pucch1_high_stat
[
1
]));
LOG_I
(
PHY
,
"UCI RNTI %x: pucch1a_trials %d, pucch1a_stat (%d,%d) pucch1ab_DTX %d
\n
"
,
LOG_I
(
PHY
,
"UCI RNTI %x: pucch1a_trials %d, pucch1a_stat (%d,%d)
, pucch1b_trials %d, pucch1b_stat (%d,%d)
pucch1ab_DTX %d
\n
"
,
uci_stats
->
rnti
,
uci_stats
->
pucch1a_trials
,
uci_stats
->
current_pucch1a_stat_re
,
uci_stats
->
current_pucch1a_stat_im
,
uci_stats
->
pucch1b_trials
,
uci_stats
->
current_pucch1b_stat_re
,
uci_stats
->
current_pucch1b_stat_im
,
uci_stats
->
pucch1ab_DTX
);
}
...
...
openair1/PHY/LTE_TRANSPORT/transport_common.h
View file @
7cbf24d3
...
...
@@ -57,7 +57,7 @@
// maximum of 3 segments before each coding block if data length exceeds 6144 bits.
#define MAX_NUM_DLSCH_SEGMENTS 1
6
#define MAX_NUM_DLSCH_SEGMENTS 1
3
#define MAX_NUM_ULSCH_SEGMENTS MAX_NUM_DLSCH_SEGMENTS
#define MAX_DLSCH_PAYLOAD_BYTES (MAX_NUM_DLSCH_SEGMENTS*768)
#define MAX_ULSCH_PAYLOAD_BYTES (MAX_NUM_ULSCH_SEGMENTS*768)
...
...
openair1/PHY/defs_eNB.h
View file @
7cbf24d3
...
...
@@ -396,30 +396,30 @@ typedef struct {
short
n0_subband_power_avg_dB
;
// eNB measurements (per user)
//! estimated received spatial signal power (linear)
unsigned
int
rx_spatial_power
[
NUMBER_OF_
UE
_MAX
][
2
][
2
];
unsigned
int
rx_spatial_power
[
NUMBER_OF_
SRS
_MAX
][
2
][
2
];
//! estimated received spatial signal power (dB)
unsigned
short
rx_spatial_power_dB
[
NUMBER_OF_
UE
_MAX
][
2
][
2
];
unsigned
short
rx_spatial_power_dB
[
NUMBER_OF_
SRS
_MAX
][
2
][
2
];
//! estimated rssi (dBm)
short
rx_rssi_dBm
[
NUMBER_OF_
UE
_MAX
];
short
rx_rssi_dBm
[
NUMBER_OF_
SRS
_MAX
];
//! estimated correlation (wideband linear) between spatial channels (computed in dlsch_demodulation)
int
rx_correlation
[
NUMBER_OF_
UE
_MAX
][
2
];
int
rx_correlation
[
NUMBER_OF_
SRS
_MAX
][
2
];
//! estimated correlation (wideband dB) between spatial channels (computed in dlsch_demodulation)
int
rx_correlation_dB
[
NUMBER_OF_
UE
_MAX
][
2
];
int
rx_correlation_dB
[
NUMBER_OF_
SRS
_MAX
][
2
];
/// Wideband CQI (= SINR)
int
wideband_cqi
[
NUMBER_OF_
UE
_MAX
][
MAX_NUM_RU_PER_eNB
];
int
wideband_cqi
[
NUMBER_OF_
SRS
_MAX
][
MAX_NUM_RU_PER_eNB
];
/// Wideband CQI in dB (= SINR dB)
int
wideband_cqi_dB
[
NUMBER_OF_
UE
_MAX
][
MAX_NUM_RU_PER_eNB
];
int
wideband_cqi_dB
[
NUMBER_OF_
SRS
_MAX
][
MAX_NUM_RU_PER_eNB
];
/// Wideband CQI (sum of all RX antennas, in dB)
char
wideband_cqi_tot
[
NUMBER_OF_
UE
_MAX
];
char
wideband_cqi_tot
[
NUMBER_OF_
SRS
_MAX
];
/// Subband CQI per RX antenna and RB (= SINR)
int
subband_cqi
[
NUMBER_OF_
UE
_MAX
][
MAX_NUM_RU_PER_eNB
][
100
];
int
subband_cqi
[
NUMBER_OF_
SRS
_MAX
][
MAX_NUM_RU_PER_eNB
][
100
];
/// Total Subband CQI and RB (= SINR)
int
subband_cqi_tot
[
NUMBER_OF_UE_MAX
][
100
];
/// Subband CQI in dB and RB (= SINR dB)
int
subband_cqi_dB
[
NUMBER_OF_
UE
_MAX
][
MAX_NUM_RU_PER_eNB
][
100
];
int
subband_cqi_dB
[
NUMBER_OF_
SRS
_MAX
][
MAX_NUM_RU_PER_eNB
][
100
];
/// Total Subband CQI and RB
int
subband_cqi_tot_dB
[
NUMBER_OF_
UE
_MAX
][
100
];
int
subband_cqi_tot_dB
[
NUMBER_OF_
SRS
_MAX
][
100
];
/// PRACH background noise level
int
prach_I0
;
}
PHY_MEASUREMENTS_eNB
;
...
...
@@ -508,12 +508,12 @@ typedef struct PHY_VARS_eNB_s {
LTE_eNB_PRACH
prach_vars_br
;
LTE_eNB_COMMON
common_vars
;
LTE_eNB_UCI
uci_vars
[
NUMBER_OF_UCI_MAX
];
LTE_eNB_SRS
srs_vars
[
NUMBER_OF_
UE
_MAX
];
LTE_eNB_SRS
srs_vars
[
NUMBER_OF_
SRS
_MAX
];
LTE_eNB_PBCH
pbch
;
LTE_eNB_PUSCH
*
pusch_vars
[
NUMBER_OF_U
E
_MAX
];
LTE_eNB_PUSCH
*
pusch_vars
[
NUMBER_OF_U
LSCH
_MAX
];
LTE_eNB_PRACH
prach_vars
;
LTE_eNB_DLSCH_t
*
dlsch
[
NUMBER_OF_
UE_MAX
][
2
];
// Nuser
s times two spatial streams
LTE_eNB_ULSCH_t
*
ulsch
[
NUMBER_OF_U
E_MAX
+
1
];
// Nusers + number of RA
LTE_eNB_DLSCH_t
*
dlsch
[
NUMBER_OF_
DLSCH_MAX
][
2
];
// Num active DLSCH context
s times two spatial streams
LTE_eNB_ULSCH_t
*
ulsch
[
NUMBER_OF_U
LSCH_MAX
];
// Num active ULSCH contexts
LTE_eNB_DLSCH_t
*
dlsch_SI
,
*
dlsch_ra
,
*
dlsch_p
;
LTE_eNB_DLSCH_t
*
dlsch_MCH
;
LTE_eNB_DLSCH_t
*
dlsch_PCH
;
...
...
@@ -524,7 +524,7 @@ typedef struct PHY_VARS_eNB_s {
uint32_t
lte_gold_table
[
20
][
2
][
14
];
/// UE-specific reference symbols (p=5), TM 7
uint32_t
lte_gold_uespec_port5_table
[
NUMBER_OF_
UE
_MAX
][
20
][
38
];
uint32_t
lte_gold_uespec_port5_table
[
NUMBER_OF_
DLSCH
_MAX
][
20
][
38
];
/// UE-specific reference symbols (p=7...14), TM 8/9/10
uint32_t
lte_gold_uespec_table
[
2
][
20
][
2
][
21
];
...
...
openair1/SCHED/phy_procedures_lte_eNb.c
View file @
7cbf24d3
...
...
@@ -1472,6 +1472,7 @@ void pusch_procedures(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc) {
ulsch_harq
->
V_UL_DAI
,
ulsch_harq
->
nb_rb
>
20
?
1
:
0
);
stop_meas
(
&
eNB
->
ulsch_decoding_stats
);
/*
int ulsch_id=-1;
for (ulsch_id=0;ulsch_id<NUMBER_OF_ULSCH_MAX;ulsch_id++)
if (ulsch->rnti == eNB->ulsch_stats[ulsch_id].rnti) break;
...
...
@@ -1481,7 +1482,7 @@ void pusch_procedures(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc) {
dump_ulsch(eNB,frame,subframe,i,ulsch_harq->round);
AssertFatal(1==0,"exiting\n");
}
*/
}
else
if
((
ulsch
)
&&
(
ulsch
->
rnti
>
0
)
&&
...
...
@@ -1648,10 +1649,10 @@ void fill_rx_indication(PHY_VARS_eNB *eNB,
else
pdu
->
rx_indication_rel8
.
ul_cqi
=
(
640
+
SNRtimes10
)
/
5
;
LOG_
I
(
PHY
,
"[PUSCH %d] Frame %d Subframe %d Filling RX_indication with SNR %d (%d,%d,%d), timing_advance %d (update %d,sync_pos %d)
\n
"
,
LOG_
D
(
PHY
,
"[PUSCH %d] Frame %d Subframe %d Filling RX_indication with SNR %d (%d,%d,%d), timing_advance %d (update %d,sync_pos %d)
\n
"
,
harq_pid
,
frame
,
subframe
,
SNRtimes10
,
pdu
->
rx_indication_rel8
.
ul_cqi
,
dB_fixed_times10
(
total_power
),
dB_fixed_times10
(
avg_noise_power
),
pdu
->
rx_indication_rel8
.
timing_advance
,
timing_advance_update
,
sync_pos
);
for
(
int
i
=
0
;
i
<
eNB
->
frame_parms
.
nb_antennas_rx
;
i
++
)
LOG_
I
(
PHY
,
"antenna %d: ulsch_power %d, noise_power %d
\n
"
,
i
,
dB_fixed_times10
(
eNB
->
pusch_vars
[
ULSCH_id
]
->
ulsch_power
[
i
]),
dB_fixed_times10
(
eNB
->
pusch_vars
[
ULSCH_id
]
->
ulsch_noise_power
[
i
]));
LOG_
D
(
PHY
,
"antenna %d: ulsch_power %d, noise_power %d
\n
"
,
i
,
dB_fixed_times10
(
eNB
->
pusch_vars
[
ULSCH_id
]
->
ulsch_power
[
i
]),
dB_fixed_times10
(
eNB
->
pusch_vars
[
ULSCH_id
]
->
ulsch_noise_power
[
i
]));
eNB
->
UL_INFO
.
rx_ind
.
rx_indication_body
.
number_of_pdus
++
;
eNB
->
UL_INFO
.
rx_ind
.
sfn_sf
=
frame
<<
4
|
subframe
;
...
...
openair2/LAYER2/MAC/eNB_scheduler_fairRR.c
View file @
7cbf24d3
...
...
@@ -1968,10 +1968,10 @@ schedule_ue_spec_fairRR(module_id_t module_idP,
UE_info
->
UE_template
[
CC_id
][
UE_id
].
pucch_tpc_tx_frame
=
frameP
;
UE_info
->
UE_template
[
CC_id
][
UE_id
].
pucch_tpc_tx_subframe
=
subframeP
;
if
(
snr
>
target_snr
+
4
)
{
if
(
snr
>
target_snr
+
PUSCH_PCHYST
)
{
tpc
=
0
;
//-1
ue_sched_ctl
->
pucch_tpc_accumulated
[
CC_id
]
--
;
}
else
if
(
snr
<
target_snr
-
4
)
{
}
else
if
(
snr
<
target_snr
-
PUSCH_PCHYST
)
{
tpc
=
2
;
//+1
ue_sched_ctl
->
pucch_tpc_accumulated
[
CC_id
]
++
;
}
else
{
...
...
openair2/LAYER2/MAC/mac.h
View file @
7cbf24d3
...
...
@@ -143,7 +143,8 @@
#define MAX_SUPPORTED_BW 4
/*!\brief CQI values range from 1 to 15 (4 bits) */
#define CQI_VALUE_RANGE 16
/*!\brief Hysteresis of PUSCH power control loop */
#define PUSCH_PCHYST 1
/*!\brief value for indicating BSR Timer is not running */
#define MAC_UE_BSR_TIMER_NOT_RUNNING (0xFFFF)
...
...
openair2/RRC/LTE/rrc_eNB.c
View file @
7cbf24d3
...
...
@@ -8270,7 +8270,7 @@ rrc_eNB_decode_dcch(
ASN_STRUCT_FREE
(
asn_DEF_NR_UE_NR_Capability
,
ue_context_p
->
ue_context
.
UE_Capability_nr
);
ue_context_p
->
ue_context
.
UE_Capability_nr
=
0
;
}
LOG_I
(
RRC
,
"Received NR_UE_Capabilities
\n
"
);
dec_rval
=
uper_decode
(
NULL
,
&
asn_DEF_NR_UE_NR_Capability
,
(
void
**
)
&
ue_context_p
->
ue_context
.
UE_Capability_nr
,
...
...
@@ -8295,6 +8295,8 @@ rrc_eNB_decode_dcch(
if
(
ul_dcch_msg
->
message
.
choice
.
c1
.
choice
.
ueCapabilityInformation
.
criticalExtensions
.
choice
.
c1
.
choice
.
ueCapabilityInformation_r8
.
ue_CapabilityRAT_ContainerList
.
list
.
array
[
i
]
->
rat_Type
==
LTE_RAT_Type_eutra_nr
)
{
LOG_I
(
RRC
,
"Received UE_Capabilities_MRDC
\n
"
);
if
(
ue_context_p
->
ue_context
.
UE_Capability_MRDC
)
{
ASN_STRUCT_FREE
(
asn_DEF_NR_UE_MRDC_Capability
,
ue_context_p
->
ue_context
.
UE_Capability_MRDC
);
ue_context_p
->
ue_context
.
UE_Capability_MRDC
=
0
;
...
...
openair3/NAS/COMMON/IES/NasPagingIdentity.h
0 → 100644
View file @
7cbf24d3
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include "OctetString.h"
#ifndef PAGING_IDENTITY_H_
#define PAGING_IDENTITY_H_
#define PAGING_IDENTITY_MINIMUM_LENGTH 2
#define PAGING_IDENTITY_MAXIMUM_LENGTH 2
typedef
uint8_t
PagingIdentity
;
int
encode_paging_identity
(
PagingIdentity
*
pagingidentity
,
uint8_t
iei
,
uint8_t
*
buffer
,
uint32_t
len
);
void
dump_paging_identity_xml
(
PagingIdentity
*
pagingidentity
,
uint8_t
iei
);
int
decode_paging_identity
(
PagingIdentity
*
pagingidentity
,
uint8_t
iei
,
uint8_t
*
buffer
,
uint32_t
len
);
#endif
/* PAGING IDENTITY_H_ */
targets/COMMON/openairinterface5g_limits.h
View file @
7cbf24d3
...
...
@@ -7,15 +7,13 @@
# define NUMBER_OF_RU_MAX 2
# define NUMBER_OF_NR_RU_MAX 2
# define NUMBER_OF_UCI_MAX 16
# define NUMBER_OF_ULSCH_MAX
16
# define NUMBER_OF_DLSCH_MAX
16
# define NUMBER_OF_ULSCH_MAX
8
# define NUMBER_OF_DLSCH_MAX
8
# define NUMBER_OF_SRS_MAX 16
# define NUMBER_OF_NR_ULSCH_MAX 16
# define NUMBER_OF_NR_DLSCH_MAX 16
# define NUMBER_OF_NR_UCI_MAX 16
# define nUMBER_OF_NR_SRS_MAX 16
# define NUMBER_OF_DLSCH_MAX 16
# define NUMBER_OF_ULSCH_MAX 16
# define NUMBER_OF_SCH_STATS_MAX 16
# define NUMBER_OF_NR_SCH_STATS_MAX 16
...
...
targets/RT/USER/lte-enb.c
View file @
7cbf24d3
...
...
@@ -1067,60 +1067,47 @@ void print_opp_meas(void) {
void
free_transport
(
PHY_VARS_eNB
*
eNB
)
{
for
(
int
i
=
0
;
i
<
NUMBER_OF_
UE
_MAX
;
i
++
)
{
LOG_D
(
PHY
,
"Freeing Transport Channel Buffers for DLSCH
, UE
%d
\n
"
,
i
);
for
(
int
i
=
0
;
i
<
NUMBER_OF_
DLSCH
_MAX
;
i
++
)
{
LOG_D
(
PHY
,
"Freeing Transport Channel Buffers for DLSCH %d
\n
"
,
i
);
for
(
int
j
=
0
;
j
<
2
;
j
++
)
free_eNB_dlsch
(
eNB
->
dlsch
[
i
][
j
]);
LOG_D
(
PHY
,
"Freeing Transport Channel Buffer for ULSCH, UE %d
\n
"
,
i
);
free_eNB_ulsch
(
eNB
->
ulsch
[
1
+
i
]);
}
free_eNB_ulsch
(
eNB
->
ulsch
[
0
]);
for
(
int
i
=
0
;
i
<
NUMBER_OF_ULSCH_MAX
;
i
++
)
{
LOG_D
(
PHY
,
"Freeing Transport Channel Buffer for ULSCH %d
\n
"
,
i
);
free_eNB_ulsch
(
eNB
->
ulsch
[
i
]);
}
}
void
init_transport
(
PHY_VARS_eNB
*
eNB
)
{
int
i
;
int
j
;
LTE_DL_FRAME_PARMS
*
fp
=
&
eNB
->
frame_parms
;
LOG_I
(
PHY
,
"Initialise transport
\n
"
);
if
(
NFAPI_MODE
!=
NFAPI_MODE_VNF
)
{
for
(
i
=
0
;
i
<
NUMBER_OF_UE
_MAX
;
i
++
)
{
LOG_
D
(
PHY
,
"Allocating Transport Channel Buffers for DLSCH, UE %d
\n
"
,
i
);
for
(
i
nt
i
=
0
;
i
<
NUMBER_OF_DLSCH
_MAX
;
i
++
)
{
LOG_
I
(
PHY
,
"Allocating Transport Channel Buffers for DLSCH %d/%d/%d
\n
"
,
i
,
NUMBER_OF_DLSCH_MAX
,(
i
-
NUMBER_OF_DLSCH_MAX
)
<
0
);
for
(
j
=
0
;
j
<
2
;
j
++
)
{
for
(
int
j
=
0
;
j
<
2
;
j
++
)
{
eNB
->
dlsch
[
i
][
j
]
=
new_eNB_dlsch
(
1
,
8
,
NSOFT
,
fp
->
N_RB_DL
,
0
,
fp
);
LOG_I
(
PHY
,
"eNB->dlsch[%d][%d] %p
\n
"
,
i
,
j
,
eNB
->
dlsch
[
i
][
j
]);
if
(
!
eNB
->
dlsch
[
i
][
j
])
{
LOG_E
(
PHY
,
"Can't get eNB dlsch structures for
UE
%d
\n
"
,
i
);
LOG_E
(
PHY
,
"Can't get eNB dlsch structures for
DLSCH
%d
\n
"
,
i
);
exit
(
-
1
);
}
else
{
eNB
->
dlsch
[
i
][
j
]
->
rnti
=
0
;
LOG_D
(
PHY
,
"dlsch[%d][%d] => %p rnti:%d
\n
"
,
i
,
j
,
eNB
->
dlsch
[
i
][
j
],
eNB
->
dlsch
[
i
][
j
]
->
rnti
);
}
}
}
for
(
int
i
=
0
;
i
<
NUMBER_OF_ULSCH_MAX
;
i
++
)
{
LOG_
D
(
PHY
,
"Allocating Transport Channel Buffer for ULSCH, UE %d
\n
"
,
i
);
eNB
->
ulsch
[
1
+
i
]
=
new_eNB_ulsch
(
MAX_TURBO_ITERATIONS
,
fp
->
N_RB_UL
,
0
);
LOG_
I
(
PHY
,
"Allocating Transport Channel Buffer for ULSCH %d/%d
\n
"
,
i
,
NUMBER_OF_ULSCH_MAX
);
eNB
->
ulsch
[
i
]
=
new_eNB_ulsch
(
MAX_TURBO_ITERATIONS
,
fp
->
N_RB_UL
,
0
);
if
(
!
eNB
->
ulsch
[
1
+
i
])
{
if
(
!
eNB
->
ulsch
[
i
])
{
LOG_E
(
PHY
,
"Can't get eNB ulsch structures
\n
"
);
exit
(
-
1
);
}
// this is the transmission mode for the signalling channels
// this will be overwritten with the real transmission mode by the RRC once the UE is connected
eNB
->
transmission_mode
[
i
]
=
fp
->
nb_antenna_ports_eNB
==
1
?
1
:
2
;
}
// ULSCH for RA
eNB
->
ulsch
[
0
]
=
new_eNB_ulsch
(
MAX_TURBO_ITERATIONS
,
fp
->
N_RB_UL
,
0
);
if
(
!
eNB
->
ulsch
[
0
])
{
LOG_E
(
PHY
,
"Can't get eNB ulsch structures
\n
"
);
exit
(
-
1
);
}
eNB
->
dlsch_SI
=
new_eNB_dlsch
(
1
,
8
,
NSOFT
,
fp
->
N_RB_DL
,
0
,
fp
);
...
...
@@ -1133,7 +1120,7 @@ void init_transport(PHY_VARS_eNB *eNB) {
eNB
->
rx_total_gain_dB
=
130
;
for
(
i
=
0
;
i
<
NUMBER_OF_UE_MAX
;
i
++
)
for
(
i
nt
i
=
0
;
i
<
NUMBER_OF_UE_MAX
;
i
++
)
eNB
->
mu_mimo_mode
[
i
].
dl_pow_off
=
2
;
eNB
->
check_for_total_transmissions
=
0
;
...
...
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