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
Michael Black
OpenXG-RAN
Commits
7cbf24d3
Commit
7cbf24d3
authored
4 years ago
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
;
...
...
This diff is collapsed.
Click to expand it.
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)
...
...
This diff is collapsed.
Click to expand it.
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
);
...
...
This diff is collapsed.
Click to expand it.
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
);
}
...
...
This diff is collapsed.
Click to expand it.
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)
...
...
This diff is collapsed.
Click to expand it.
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
];
...
...
This diff is collapsed.
Click to expand it.
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
;
...
...
This diff is collapsed.
Click to expand it.
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
{
...
...
This diff is collapsed.
Click to expand it.
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)
...
...
This diff is collapsed.
Click to expand it.
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;
...
...
This diff is collapsed.
Click to expand it.
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_ */
This diff is collapsed.
Click to expand it.
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
...
...
This diff is collapsed.
Click to expand it.
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
;
...
...
This diff is collapsed.
Click to expand it.
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