Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
zzha zzha
OpenXG-RAN
Commits
025f56d2
Commit
025f56d2
authored
Jul 31, 2016
by
Raymond Knopp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
node function interfaces via function pointers. Suggestions from L. Thomas, B. Mongazon, C. Roux.
parent
f33e9a70
Changes
18
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
787 additions
and
723 deletions
+787
-723
openair1/PHY/INIT/lte_init.c
openair1/PHY/INIT/lte_init.c
+10
-10
openair1/PHY/LTE_TRANSPORT/if4_tools.c
openair1/PHY/LTE_TRANSPORT/if4_tools.c
+52
-46
openair1/PHY/LTE_TRANSPORT/if4_tools.h
openair1/PHY/LTE_TRANSPORT/if4_tools.h
+13
-13
openair1/PHY/LTE_TRANSPORT/if5_tools.c
openair1/PHY/LTE_TRANSPORT/if5_tools.c
+9
-1
openair1/PHY/LTE_TRANSPORT/phich.c
openair1/PHY/LTE_TRANSPORT/phich.c
+2
-3
openair1/PHY/LTE_TRANSPORT/pmch.c
openair1/PHY/LTE_TRANSPORT/pmch.c
+4
-4
openair1/PHY/LTE_TRANSPORT/prach.c
openair1/PHY/LTE_TRANSPORT/prach.c
+5
-7
openair1/PHY/LTE_TRANSPORT/proto.h
openair1/PHY/LTE_TRANSPORT/proto.h
+3
-6
openair1/PHY/defs.h
openair1/PHY/defs.h
+26
-14
openair1/SCHED/defs.h
openair1/SCHED/defs.h
+6
-11
openair1/SCHED/phy_procedures_lte_eNb.c
openair1/SCHED/phy_procedures_lte_eNb.c
+137
-151
openair2/ENB_APP/enb_config.c
openair2/ENB_APP/enb_config.c
+6
-4
targets/ARCH/ETHERNET/USERSPACE/LIB/eth_raw.c
targets/ARCH/ETHERNET/USERSPACE/LIB/eth_raw.c
+16
-16
targets/ARCH/ETHERNET/USERSPACE/LIB/ethernet_lib.c
targets/ARCH/ETHERNET/USERSPACE/LIB/ethernet_lib.c
+16
-16
targets/ARCH/ETHERNET/USERSPACE/LIB/ethernet_lib.h
targets/ARCH/ETHERNET/USERSPACE/LIB/ethernet_lib.h
+4
-4
targets/ARCH/ETHERNET/USERSPACE/LIB/if_defs.h
targets/ARCH/ETHERNET/USERSPACE/LIB/if_defs.h
+6
-6
targets/RT/USER/lte-enb.c
targets/RT/USER/lte-enb.c
+468
-407
targets/RT/USER/lte-softmodem.c
targets/RT/USER/lte-softmodem.c
+4
-4
No files found.
openair1/PHY/INIT/lte_init.c
View file @
025f56d2
...
...
@@ -1167,7 +1167,7 @@ int phy_init_lte_eNB(PHY_VARS_eNB *eNB,
frame_parms
->
phich_config_common
.
phich_duration
);
LOG_D
(
PHY
,
"[MSC_NEW][FRAME 00000][PHY_eNB][MOD %02"
PRIu8
"][]
\n
"
,
eNB
->
Mod_id
);
if
(
eNB
->
node_function
!=
NGFI_RRU_IF4
)
{
if
(
eNB
->
node_function
!=
NGFI_RRU_IF4
p5
)
{
lte_gold
(
frame_parms
,
eNB
->
lte_gold_table
,
frame_parms
->
Nid_cell
);
generate_pcfich_reg_mapping
(
frame_parms
);
generate_phich_reg_mapping
(
frame_parms
);
...
...
@@ -1191,12 +1191,12 @@ int phy_init_lte_eNB(PHY_VARS_eNB *eNB,
if
(
abstraction_flag
==
0
)
{
// TX vars
if
(
eNB
->
node_function
!=
NGFI_RCC_IF4
)
if
(
eNB
->
node_function
!=
NGFI_RCC_IF4
p5
)
common_vars
->
txdata
[
eNB_id
]
=
(
int32_t
**
)
malloc16
(
frame_parms
->
nb_antennas_tx
*
sizeof
(
int32_t
*
)
);
common_vars
->
txdataF
[
eNB_id
]
=
(
int32_t
**
)
malloc16
(
frame_parms
->
nb_antennas_tx
*
sizeof
(
int32_t
*
)
);
for
(
i
=
0
;
i
<
frame_parms
->
nb_antennas_tx
;
i
++
)
{
if
(
eNB
->
node_function
!=
NGFI_RCC_IF4
)
if
(
eNB
->
node_function
!=
NGFI_RCC_IF4
p5
)
common_vars
->
txdata
[
eNB_id
][
i
]
=
(
int32_t
*
)
malloc16_clear
(
FRAME_LENGTH_COMPLEX_SAMPLES
*
sizeof
(
int32_t
)
);
common_vars
->
txdataF
[
eNB_id
][
i
]
=
(
int32_t
*
)
malloc16_clear
(
FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX
*
sizeof
(
int32_t
)
);
#ifdef DEBUG_PHY
...
...
@@ -1208,14 +1208,14 @@ int phy_init_lte_eNB(PHY_VARS_eNB *eNB,
}
// RX vars
if
(
eNB
->
node_function
!=
NGFI_RCC_IF4
)
{
if
(
eNB
->
node_function
!=
NGFI_RCC_IF4
p5
)
{
common_vars
->
rxdata
[
eNB_id
]
=
(
int32_t
**
)
malloc16
(
frame_parms
->
nb_antennas_rx
*
sizeof
(
int32_t
*
)
);
common_vars
->
rxdata_7_5kHz
[
eNB_id
]
=
(
int32_t
**
)
malloc16
(
frame_parms
->
nb_antennas_rx
*
sizeof
(
int32_t
*
)
);
}
common_vars
->
rxdataF
[
eNB_id
]
=
(
int32_t
**
)
malloc16
(
frame_parms
->
nb_antennas_rx
*
sizeof
(
int32_t
*
)
);
for
(
i
=
0
;
i
<
frame_parms
->
nb_antennas_rx
;
i
++
)
{
if
(
eNB
->
node_function
!=
NGFI_RCC_IF4
)
{
if
(
eNB
->
node_function
!=
NGFI_RCC_IF4
p5
)
{
common_vars
->
rxdata
[
eNB_id
][
i
]
=
(
int32_t
*
)
malloc16_clear
(
FRAME_LENGTH_COMPLEX_SAMPLES
*
sizeof
(
int32_t
)
);
common_vars
->
rxdata_7_5kHz
[
eNB_id
][
i
]
=
(
int32_t
*
)
malloc16_clear
(
frame_parms
->
samples_per_tti
*
sizeof
(
int32_t
)
);
}
...
...
@@ -1227,7 +1227,7 @@ int phy_init_lte_eNB(PHY_VARS_eNB *eNB,
#endif
}
if
(
eNB
->
node_function
!=
NGFI_RRU_IF4
)
{
if
(
eNB
->
node_function
!=
NGFI_RRU_IF4
p5
)
{
// Channel estimates for SRS
for
(
UE_id
=
0
;
UE_id
<
NUMBER_OF_UE_MAX
;
UE_id
++
)
{
...
...
@@ -1250,7 +1250,7 @@ int phy_init_lte_eNB(PHY_VARS_eNB *eNB,
if
(
abstraction_flag
==
0
)
{
if
(
eNB
->
node_function
!=
NGFI_RRU_IF4
)
{
if
(
eNB
->
node_function
!=
NGFI_RRU_IF4
p5
)
{
generate_ul_ref_sigs_rx
();
// SRS
...
...
@@ -1264,7 +1264,7 @@ int phy_init_lte_eNB(PHY_VARS_eNB *eNB,
// ULSCH VARS, skip if NFGI_RRU_IF4
if
(
eNB
->
node_function
!=
NGFI_RRU_IF4
)
if
(
eNB
->
node_function
!=
NGFI_RRU_IF4
p5
)
prach_vars
->
prachF
=
(
int16_t
*
)
malloc16_clear
(
1024
*
2
*
sizeof
(
int16_t
)
);
/* number of elements of an array X is computed as sizeof(X) / sizeof(X[0]) */
...
...
@@ -1277,7 +1277,7 @@ int phy_init_lte_eNB(PHY_VARS_eNB *eNB,
#endif
}
if
(
eNB
->
node_function
!=
NGFI_RRU_IF4
)
{
if
(
eNB
->
node_function
!=
NGFI_RRU_IF4
p5
)
{
AssertFatal
(
frame_parms
->
nb_antennas_rx
<=
sizeof
(
prach_vars
->
prach_ifft
)
/
sizeof
(
prach_vars
->
prach_ifft
[
0
]),
"nb_antennas_rx too large"
);
for
(
i
=
0
;
i
<
frame_parms
->
nb_antennas_rx
;
i
++
)
{
...
...
@@ -1399,7 +1399,7 @@ int phy_init_lte_eNB(PHY_VARS_eNB *eNB,
eNB
->
pdsch_config_dedicated
->
p_a
=
dB0
;
//defaul value until overwritten by RRCConnectionReconfiguration
init_prach_tables
(
839
);
}
// node_function != NGFI_RRU_IF4
}
// node_function != NGFI_RRU_IF4
p5
return
(
0
);
}
...
...
openair1/PHY/LTE_TRANSPORT/if4_tools.c
View file @
025f56d2
This diff is collapsed.
Click to expand it.
openair1/PHY/LTE_TRANSPORT/if4_tools.h
View file @
025f56d2
...
...
@@ -41,12 +41,12 @@
#include "PHY/defs.h"
/// Macro for IF4 packet type
#define IF4_PACKET_TYPE 0x080A
#define IF4_PULFFT 0x0019
#define IF4_PDLFFT 0x0020
#define IF4_PRACH 0x0021
#define IF4
p5
_PACKET_TYPE 0x080A
#define IF4
p5
_PULFFT 0x0019
#define IF4
p5
_PDLFFT 0x0020
#define IF4
p5
_PRACH 0x0021
struct
IF4_header
{
struct
IF4
p5
_header
{
/// Type
uint16_t
type
;
/// Sub-Type
...
...
@@ -58,17 +58,17 @@ struct IF4_header {
}
__attribute__
((
__packed__
));
typedef
struct
IF4
_header
IF4
_header_t
;
#define sizeof_IF4_header_t 12
typedef
struct
IF4
p5_header
IF4p5
_header_t
;
#define sizeof_IF4
p5
_header_t 12
void
gen_IF4
_dl_header
(
IF4
_header_t
*
,
int
,
int
);
void
gen_IF4
p5_dl_header
(
IF4p5
_header_t
*
,
int
,
int
);
void
gen_IF4
_ul_header
(
IF4
_header_t
*
,
int
,
int
);
void
gen_IF4
p5_ul_header
(
IF4p5
_header_t
*
,
int
,
int
);
void
gen_IF4
_prach_header
(
IF4
_header_t
*
,
int
,
int
);
void
gen_IF4
p5_prach_header
(
IF4p5
_header_t
*
,
int
,
int
);
void
send_IF4
(
PHY_VARS_eNB
*
,
int
,
int
,
uint16_t
,
int
);
void
send_IF4
p5
(
PHY_VARS_eNB
*
,
int
,
int
,
uint16_t
,
int
);
void
recv_IF4
(
PHY_VARS_eNB
*
,
int
*
,
int
*
,
uint16_t
*
,
uint32_t
*
);
void
recv_IF4
p5
(
PHY_VARS_eNB
*
,
int
*
,
int
*
,
uint16_t
*
,
uint32_t
*
);
void
malloc_IF4_buffer
(
PHY_VARS_eNB
*
);
void
malloc_IF4
p5
_buffer
(
PHY_VARS_eNB
*
);
openair1/PHY/LTE_TRANSPORT/if5_tools.c
View file @
025f56d2
...
...
@@ -41,7 +41,7 @@
#include "PHY/defs.h"
#include "targets/ARCH/ETHERNET/USERSPACE/LIB/if_defs.h"
#include "UTIL/LOG/vcd_signal_dumper.h"
void
send_IF5
(
PHY_VARS_eNB
*
eNB
,
openair0_timestamp
proc_timestamp
,
int
subframe
,
uint8_t
*
seqno
,
uint16_t
packet_type
)
{
...
...
@@ -54,6 +54,8 @@ void send_IF5(PHY_VARS_eNB *eNB, openair0_timestamp proc_timestamp, int subframe
uint32_t
spp_eth
=
(
uint32_t
)
eNB
->
ifdevice
.
openair0_cfg
->
samples_per_packet
;
uint32_t
spsf
=
(
uint32_t
)
eNB
->
ifdevice
.
openair0_cfg
->
samples_per_frame
/
10
;
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_SEND_IF5
,
1
);
if
(
packet_type
==
IF5_RRH_GW_DL
)
{
for
(
i
=
0
;
i
<
fp
->
nb_antennas_tx
;
i
++
)
...
...
@@ -143,6 +145,8 @@ void send_IF5(PHY_VARS_eNB *eNB, openair0_timestamp proc_timestamp, int subframe
}
free
(
tx_buffer
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_SEND_IF5
,
0
);
return
;
}
...
...
@@ -158,6 +162,8 @@ void recv_IF5(PHY_VARS_eNB *eNB, openair0_timestamp *proc_timestamp, int subfram
int32_t
spsf
=
(
int32_t
)
eNB
->
ifdevice
.
openair0_cfg
->
samples_per_frame
/
10
;
openair0_timestamp
timestamp
[
spsf
/
spp_eth
];
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF5
,
1
);
if
(
packet_type
==
IF5_RRH_GW_DL
)
{
...
...
@@ -205,6 +211,8 @@ void recv_IF5(PHY_VARS_eNB *eNB, openair0_timestamp *proc_timestamp, int subfram
}
else
{
AssertFatal
(
1
==
0
,
"recv_IF5 - Unknown packet_type %x"
,
packet_type
);
}
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF5
,
0
);
return
;
}
openair1/PHY/LTE_TRANSPORT/phich.c
View file @
025f56d2
...
...
@@ -1424,8 +1424,7 @@ void rx_phich(PHY_VARS_UE *ue,
void
generate_phich_top
(
PHY_VARS_eNB
*
eNB
,
eNB_rxtx_proc_t
*
proc
,
int16_t
amp
,
uint8_t
sect_id
,
uint8_t
abstraction_flag
)
uint8_t
sect_id
)
{
...
...
@@ -1486,7 +1485,7 @@ void generate_phich_top(PHY_VARS_eNB *eNB,
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
first_rb
);
}
if
(
abstraction_flag
==
0
)
{
if
(
eNB
->
abstraction_flag
==
0
)
{
generate_phich
(
frame_parms
,
amp
,
//amp*2,
nseq_PHICH
,
...
...
openair1/PHY/LTE_TRANSPORT/pmch.c
View file @
025f56d2
...
...
@@ -190,7 +190,7 @@ int is_pmch_subframe(uint32_t frame, int subframe, LTE_DL_FRAME_PARMS *frame_par
return
(
0
);
}
void
fill_eNB_dlsch_MCH
(
PHY_VARS_eNB
*
eNB
,
int
mcs
,
int
ndi
,
int
rvidx
,
int
abstraction_flag
)
void
fill_eNB_dlsch_MCH
(
PHY_VARS_eNB
*
eNB
,
int
mcs
,
int
ndi
,
int
rvidx
)
{
LTE_eNB_DLSCH_t
*
dlsch
=
eNB
->
dlsch_MCH
;
...
...
@@ -227,7 +227,7 @@ void fill_eNB_dlsch_MCH(PHY_VARS_eNB *eNB,int mcs,int ndi,int rvidx, int abstrac
break
;
}
if
(
abstraction_flag
)
{
if
(
eNB
->
abstraction_flag
)
{
eNB_transport_info
[
eNB
->
Mod_id
][
eNB
->
CC_id
].
cntl
.
pmch_flag
=
1
;
eNB_transport_info
[
eNB
->
Mod_id
][
eNB
->
CC_id
].
num_pmch
=
1
;
// assumption: there is always one pmch in each SF
eNB_transport_info
[
eNB
->
Mod_id
][
eNB
->
CC_id
].
num_common_dci
=
0
;
...
...
@@ -286,13 +286,13 @@ void fill_UE_dlsch_MCH(PHY_VARS_UE *ue,int mcs,int ndi,int rvidx,int eNB_id)
}
}
void
generate_mch
(
PHY_VARS_eNB
*
eNB
,
eNB_rxtx_proc_t
*
proc
,
uint8_t
*
a
,
int
abstraction_flag
)
void
generate_mch
(
PHY_VARS_eNB
*
eNB
,
eNB_rxtx_proc_t
*
proc
,
uint8_t
*
a
)
{
int
G
;
int
subframe
=
proc
->
subframe_tx
;
if
(
abstraction_flag
!=
0
)
{
if
(
eNB
->
abstraction_flag
!=
0
)
{
if
(
eNB_transport_info_TB_index
[
eNB
->
Mod_id
][
eNB
->
CC_id
]
!=
0
)
printf
(
"[PHY][EMU] PMCH transport block position is different than zero %d
\n
"
,
eNB_transport_info_TB_index
[
eNB
->
Mod_id
][
eNB
->
CC_id
]);
...
...
openair1/PHY/LTE_TRANSPORT/prach.c
View file @
025f56d2
...
...
@@ -1183,7 +1183,7 @@ void rx_prach(PHY_VARS_eNB *eNB,
if
((
eNB
->
node_function
==
eNodeB_3GPP
)
||
(
eNB
->
node_function
==
NGFI_RRU_IF4
))
{
// compute the DFTs of the PRACH temporal resources
(
eNB
->
node_function
==
NGFI_RRU_IF4
p5
))
{
// compute the DFTs of the PRACH temporal resources
// Do forward transform
for
(
aa
=
0
;
aa
<
nb_ant_rx
;
aa
++
)
{
prach2
=
prach
[
aa
]
+
(
Ncp
<<
1
);
...
...
@@ -1269,7 +1269,7 @@ void rx_prach(PHY_VARS_eNB *eNB,
}
}
if
(
eNB
->
node_function
==
NGFI_RRU_IF4
)
{
if
(
eNB
->
node_function
==
NGFI_RRU_IF4
p5
)
{
k
=
(
12
*
n_ra_prb
)
-
6
*
eNB
->
frame_parms
.
N_RB_UL
;
if
(
k
<
0
)
{
...
...
@@ -1281,12 +1281,10 @@ void rx_prach(PHY_VARS_eNB *eNB,
k
*=
2
;
/// **** send_IF4 of rxsigF to RCC **** ///
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_SEND_IF4
,
1
);
send_IF4
(
eNB
,
eNB
->
proc
.
frame_rx
,
eNB
->
proc
.
subframe_rx
,
IF4_PRACH
,
k
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_SEND_IF4
,
0
);
send_IF4p5
(
eNB
,
eNB
->
proc
.
frame_rx
,
eNB
->
proc
.
subframe_rx
,
IF4p5_PRACH
,
k
);
return
;
}
else
if
(
eNB
->
node_function
==
NGFI_RCC_IF4
)
{
}
else
if
(
eNB
->
node_function
==
NGFI_RCC_IF4
p5
)
{
k
=
(
12
*
n_ra_prb
)
-
6
*
eNB
->
frame_parms
.
N_RB_UL
;
if
(
k
<
0
)
{
...
...
@@ -1305,7 +1303,7 @@ void rx_prach(PHY_VARS_eNB *eNB,
// in case of RCC and prach received rx_thread wakes up prach
// here onwards is for eNodeB_3GPP or NGFI_RCC_IF4
// here onwards is for eNodeB_3GPP or NGFI_RCC_IF4
p5
preamble_offset_old
=
99
;
...
...
openair1/PHY/LTE_TRANSPORT/proto.h
View file @
025f56d2
...
...
@@ -232,7 +232,7 @@ int mch_modulation(int32_t **txdataF,
@param abstraction_flag
*/
void
generate_mch
(
PHY_VARS_eNB
*
phy_vars_eNB
,
eNB_rxtx_proc_t
*
proc
,
uint8_t
*
a
,
int
abstraction_flag
);
void
generate_mch
(
PHY_VARS_eNB
*
phy_vars_eNB
,
eNB_rxtx_proc_t
*
proc
,
uint8_t
*
a
);
/** \brief This function generates the frequency-domain pilots (cell-specific downlink reference signals)
@param phy_vars_eNB Pointer to eNB variables
...
...
@@ -240,10 +240,8 @@ void generate_mch(PHY_VARS_eNB *phy_vars_eNB,eNB_rxtx_proc_t *proc,uint8_t *a,in
@param mcs MCS for MBSFN
@param ndi new data indicator
@param rdvix
@param abstraction_flag
*/
void
fill_eNB_dlsch_MCH
(
PHY_VARS_eNB
*
phy_vars_eNB
,
int
mcs
,
int
ndi
,
int
rvidx
,
int
abstraction_flag
);
void
fill_eNB_dlsch_MCH
(
PHY_VARS_eNB
*
phy_vars_eNB
,
int
mcs
,
int
ndi
,
int
rvidx
);
/** \brief This function generates the frequency-domain pilots (cell-specific downlink reference signals)
@param phy_vars_ue Pointer to UE variables
...
...
@@ -1546,8 +1544,7 @@ uint32_t ulsch_decoding_emul(PHY_VARS_eNB *phy_vars_eNB,
void
generate_phich_top
(
PHY_VARS_eNB
*
phy_vars_eNB
,
eNB_rxtx_proc_t
*
proc
,
int16_t
amp
,
uint8_t
sect_id
,
uint8_t
abstraction_flag
);
uint8_t
sect_id
);
/* \brief This routine demodulates the PHICH and updates PUSCH/ULSCH parameters.
@param phy_vars_ue Pointer to UE variables
...
...
openair1/PHY/defs.h
View file @
025f56d2
...
...
@@ -161,8 +161,9 @@ typedef enum {
eNodeB_3GPP
=
0
,
// classical eNodeB function
eNodeB_3GPP_BBU
,
// eNodeB with NGFI IF5
NGFI_RRU_IF5
,
// NGFI_RRU with IF5
NGFI_RRU_IF4
,
// NGFI_RRU (NGFI remote radio-unit, currently split at common - ue_specific interface, IF4)
NGFI_RCC_IF4
// NGFI_RCC (NGFI radio cloud center, currently split at common - ue_specific interface, IF4)
NGFI_RRU_IF4p5
,
// NGFI_RRU (NGFI remote radio-unit, currently split at common - ue_specific interface, IF4p5)
NGFI_RCC_IF4p5
,
// NGFI_RCC (NGFI radio cloud center, currently split at common - ue_specific interface, IF4p5)
NGFI_RAU_IF4p5
}
eNB_func_t
;
typedef
enum
{
...
...
@@ -187,6 +188,20 @@ typedef struct ral_threshold_phy_s {
}
ral_threshold_phy_t
;
#endif
/// Top-level PHY Data Structure for RN
typedef
struct
{
/// Module ID indicator for this instance
uint8_t
Mod_id
;
uint32_t
frame
;
// phy_vars_eNB
// phy_vars ue
// cuurently only used to store and forward the PMCH
uint8_t
mch_avtive
[
10
];
uint8_t
sync_area
[
10
];
// num SF
LTE_UE_DLSCH_t
*
dlsch_rn_MCH
[
10
];
}
PHY_VARS_RN
;
/// Context data structure for RX/TX portion of subframe processing
typedef
struct
{
/// Component Carrier index
...
...
@@ -340,6 +355,15 @@ typedef struct PHY_VARS_eNB_s {
eNB_proc_t
proc
;
eNB_func_t
node_function
;
eNB_timing_t
node_timing
;
int
abstraction_flag
;
void
(
*
do_prach
)(
struct
PHY_VARS_eNB_s
*
eNB
,
eNB_proc_t
*
proc
);
void
(
*
fep
)(
struct
PHY_VARS_eNB_s
*
eNB
,
eNB_proc_t
*
proc
);
void
(
*
proc_uespec_rx
)(
struct
PHY_VARS_eNB_s
*
eNB
,
eNB_rxtx_proc_t
*
proc
,
const
relaying_type_t
r_type
);
void
(
*
proc_tx
)(
struct
PHY_VARS_eNB_s
*
eNB
,
eNB_rxtx_proc_t
*
proc
,
relaying_type_t
r_type
,
PHY_VARS_RN
*
rn
);
void
(
*
tx_fh
)(
struct
PHY_VARS_eNB_s
*
eNB
,
eNB_rxtx_proc_t
*
proc
);
void
(
*
rx_fh
)(
struct
PHY_VARS_eNB_s
*
eNB
,
eNB_proc_t
*
proc
,
int
*
frame
,
int
*
subframe
);
int
(
*
start_rf
)(
struct
PHY_VARS_eNB_s
*
eNB
);
int
(
*
start_if
)(
struct
PHY_VARS_eNB_s
*
eNB
);
uint8_t
local_flag
;
uint32_t
rx_total_gain_dB
;
LTE_DL_FRAME_PARMS
frame_parms
;
...
...
@@ -785,19 +809,7 @@ typedef struct {
#endif
}
PHY_VARS_UE
;
/// Top-level PHY Data Structure for RN
typedef
struct
{
/// Module ID indicator for this instance
uint8_t
Mod_id
;
uint32_t
frame
;
// phy_vars_eNB
// phy_vars ue
// cuurently only used to store and forward the PMCH
uint8_t
mch_avtive
[
10
];
uint8_t
sync_area
[
10
];
// num SF
LTE_UE_DLSCH_t
*
dlsch_rn_MCH
[
10
];
}
PHY_VARS_RN
;
#include "PHY/INIT/defs.h"
#include "PHY/LTE_REFSIG/defs.h"
...
...
openair1/SCHED/defs.h
View file @
025f56d2
...
...
@@ -164,20 +164,18 @@ void phy_procedures_UE_S_RX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abst
@param r_type indicates the relaying operation: 0: no_relaying, 1: unicast relaying type 1, 2: unicast relaying type 2, 3: multicast relaying
@param phy_vars_rn pointer to the RN variables
*/
void
phy_procedures_eNB_TX
(
PHY_VARS_eNB
*
phy_vars_eNB
,
eNB_rxtx_proc_t
*
proc
,
uint8_t
abstraction_flag
,
relaying_type_t
r_type
,
PHY_VARS_RN
*
phy_vars_rn
);
void
phy_procedures_eNB_TX
(
PHY_VARS_eNB
*
phy_vars_eNB
,
eNB_rxtx_proc_t
*
proc
,
relaying_type_t
r_type
,
PHY_VARS_RN
*
phy_vars_rn
);
/*! \brief Scheduling for eNB RX UE-specific procedures in normal subframes.
@param phy_vars_eNB Pointer to eNB variables on which to act
@param proc Pointer to RXn-TXnp4 proc information
@param abstraction_flag Indicator of PHY abstraction
@param r_type indicates the relaying operation: 0: no_relaying, 1: unicast relaying type 1, 2: unicast relaying type 2, 3: multicast relaying
*/
void
phy_procedures_eNB_uespec_RX
(
PHY_VARS_eNB
*
phy_vars_eNB
,
eNB_rxtx_proc_t
*
proc
,
uint8_t
abstraction_flag
,
relaying_type_t
r_type
);
void
phy_procedures_eNB_uespec_RX
(
PHY_VARS_eNB
*
phy_vars_eNB
,
eNB_rxtx_proc_t
*
proc
,
relaying_type_t
r_type
);
/*! \brief Scheduling for eNB TX procedures in TDD S-subframes.
@param phy_vars_eNB Pointer to eNB variables on which to act
@param proc Pointer to RXn-TXnp4 proc information
@param abstraction_flag Indicator of PHY abstraction
@param r_type indicates the relaying operation: 0: no_relaying, 1: unicast relaying type 1, 2: unicast relaying type 2, 3: multicast relaying
*/
...
...
@@ -185,29 +183,26 @@ void phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *phy_vars_eNB,eNB_rxtx_proc_t *pr
@param phy_vars_eNB Pointer to eNB variables on which to act
@param abstraction_flag Indicator of PHY abstraction
*/
void
phy_procedures_eNB_common_RX
(
PHY_VARS_eNB
*
phy_vars_eNB
,
uint8_t
abstraction_flag
);
void
phy_procedures_eNB_common_RX
(
PHY_VARS_eNB
*
phy_vars_eNB
);
/*! \brief Scheduling for eNB TX procedures in TDD S-subframes.
@param phy_vars_eNB Pointer to eNB variables on which to act
@param abstraction_flag Indicator of PHY abstraction
@param r_type indicates the relaying operation: 0: no_relaying, 1: unicast relaying type 1, 2: unicast relaying type 2, 3: multicast relaying
*/
void
phy_procedures_eNB_S_TX
(
PHY_VARS_eNB
*
phy_vars_eNB
,
uint8_t
abstraction_flag
,
relaying_type_t
r_type
);
void
phy_procedures_eNB_S_TX
(
PHY_VARS_eNB
*
phy_vars_eNB
,
relaying_type_t
r_type
);
/*! \brief Scheduling for eNB RX procedures in TDD S-subframes.
@param phy_vars_eNB Pointer to eNB variables on which to act
@param abstraction_flag Indicator of PHY abstraction
@param r_type indicates the relaying operation: 0: no_relaying, 1: unicast relaying type 1, 2: unicast relaying type 2, 3: multicast relaying
*/
void
phy_procedures_eNB_S_RX
(
PHY_VARS_eNB
*
phy_vars_eNB
,
eNB_rxtx_proc_t
*
proc
,
uint8_t
abstraction_flag
,
relaying_type_t
r_type
);
void
phy_procedures_eNB_S_RX
(
PHY_VARS_eNB
*
phy_vars_eNB
,
eNB_rxtx_proc_t
*
proc
,
relaying_type_t
r_type
);
/*! \brief Scheduling for eNB PRACH RX procedures
@param phy_vars_eNB Pointer to eNB variables on which to act
@param proc Pointer to RXn-TXnp4 proc information
@param abstraction_flag Indicator of PHY abstraction
*/
void
prach_procedures
(
PHY_VARS_eNB
*
eNB
,
uint8_t
abstraction_flag
);
void
prach_procedures
(
PHY_VARS_eNB
*
eNB
);
/*! \brief Function to compute subframe type as a function of Frame type and TDD Configuration (implements Table 4.2.2 from 36.211, p.11 from version 8.6) and subframe index.
@param frame_parms Pointer to DL frame parameter descriptor
...
...
openair1/SCHED/phy_procedures_lte_eNb.c
View file @
025f56d2
This diff is collapsed.
Click to expand it.
openair2/ENB_APP/enb_config.c
View file @
025f56d2
...
...
@@ -887,10 +887,12 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
enb_properties
.
properties
[
enb_properties_index
]
->
cc_node_function
[
j
]
=
eNodeB_3GPP
;
}
else
if
(
strcmp
(
cc_node_function
,
"eNodeB_3GPP_BBU"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
cc_node_function
[
j
]
=
eNodeB_3GPP_BBU
;
}
else
if
(
strcmp
(
cc_node_function
,
"NGFI_RCC_IF4"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
cc_node_function
[
j
]
=
NGFI_RCC_IF4
;
}
else
if
(
strcmp
(
cc_node_function
,
"NGFI_RRU_IF4"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
cc_node_function
[
j
]
=
NGFI_RRU_IF4
;
}
else
if
(
strcmp
(
cc_node_function
,
"NGFI_RCC_IF4p5"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
cc_node_function
[
j
]
=
NGFI_RCC_IF4p5
;
}
else
if
(
strcmp
(
cc_node_function
,
"NGFI_RAU_IF4p5"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
cc_node_function
[
j
]
=
NGFI_RAU_IF4p5
;
}
else
if
(
strcmp
(
cc_node_function
,
"NGFI_RRU_IF4p5"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
cc_node_function
[
j
]
=
NGFI_RRU_IF4p5
;
}
else
if
(
strcmp
(
cc_node_function
,
"NGFI_RRU_IF5"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
cc_node_function
[
j
]
=
NGFI_RRU_IF5
;
}
else
{
...
...
targets/ARCH/ETHERNET/USERSPACE/LIB/eth_raw.c
View file @
025f56d2
...
...
@@ -201,7 +201,7 @@ int trx_eth_write_raw(openair0_device *device, openair0_timestamp timestamp, voi
int
trx_eth_write_raw_IF4
(
openair0_device
*
device
,
openair0_timestamp
timestamp
,
void
**
buff
,
int
nsamps
,
int
cc
,
int
flags
)
{
int
trx_eth_write_raw_IF4
p5
(
openair0_device
*
device
,
openair0_timestamp
timestamp
,
void
**
buff
,
int
nsamps
,
int
cc
,
int
flags
)
{
int
nblocks
=
nsamps
;
int
bytes_sent
=
0
;
...
...
@@ -211,14 +211,14 @@ int trx_eth_write_raw_IF4(openair0_device *device, openair0_timestamp timestamp,
ssize_t
packet_size
;
if
(
flags
==
IF4_PDLFFT
)
{
packet_size
=
RAW_IF4_PDLFFT_SIZE_BYTES
(
nblocks
);
}
else
if
(
flags
==
IF4_PULFFT
)
{
packet_size
=
RAW_IF4_PULFFT_SIZE_BYTES
(
nblocks
);
if
(
flags
==
IF4
p5
_PDLFFT
)
{
packet_size
=
RAW_IF4
p5
_PDLFFT_SIZE_BYTES
(
nblocks
);
}
else
if
(
flags
==
IF4
p5
_PULFFT
)
{
packet_size
=
RAW_IF4
p5
_PULFFT_SIZE_BYTES
(
nblocks
);
}
else
if
(
flags
==
IF5_MOBIPASS
)
{
packet_size
=
RAW_IF5_MOBIPASS_SIZE_BYTES
;
}
else
{
packet_size
=
RAW_IF4_PRACH_SIZE_BYTES
;
packet_size
=
RAW_IF4
p5
_PRACH_SIZE_BYTES
;
}
eth
->
tx_nsamps
=
nblocks
;
...
...
@@ -304,7 +304,7 @@ int trx_eth_read_raw(openair0_device *device, openair0_timestamp *timestamp, voi
int
trx_eth_read_raw_IF4
(
openair0_device
*
device
,
openair0_timestamp
*
timestamp
,
void
**
buff
,
int
nsamps
,
int
cc
)
{
int
trx_eth_read_raw_IF4
p5
(
openair0_device
*
device
,
openair0_timestamp
*
timestamp
,
void
**
buff
,
int
nsamps
,
int
cc
)
{
// Read nblocks info from packet itself
int
nblocks
=
nsamps
;
...
...
@@ -312,8 +312,8 @@ int trx_eth_read_raw_IF4(openair0_device *device, openair0_timestamp *timestamp,
eth_state_t
*
eth
=
(
eth_state_t
*
)
device
->
priv
;
int
Mod_id
=
device
->
Mod_id
;
ssize_t
packet_size
=
MAC_HEADER_SIZE_BYTES
+
sizeof_IF4_header_t
;
IF4
_header_t
*
test_header
=
(
IF4
_header_t
*
)(
buff
[
0
]
+
MAC_HEADER_SIZE_BYTES
);
ssize_t
packet_size
=
MAC_HEADER_SIZE_BYTES
+
sizeof_IF4
p5
_header_t
;
IF4
p5_header_t
*
test_header
=
(
IF4p5
_header_t
*
)(
buff
[
0
]
+
MAC_HEADER_SIZE_BYTES
);
bytes_received
=
recv
(
eth
->
sockfd
[
Mod_id
],
buff
[
0
],
...
...
@@ -327,12 +327,12 @@ int trx_eth_read_raw_IF4(openair0_device *device, openair0_timestamp *timestamp,
*
timestamp
=
test_header
->
sub_type
;
if
(
test_header
->
sub_type
==
IF4_PDLFFT
)
{
packet_size
=
RAW_IF4_PDLFFT_SIZE_BYTES
(
nblocks
);
}
else
if
(
test_header
->
sub_type
==
IF4_PULFFT
)
{
packet_size
=
RAW_IF4_PULFFT_SIZE_BYTES
(
nblocks
);
if
(
test_header
->
sub_type
==
IF4
p5
_PDLFFT
)
{
packet_size
=
RAW_IF4
p5
_PDLFFT_SIZE_BYTES
(
nblocks
);
}
else
if
(
test_header
->
sub_type
==
IF4
p5
_PULFFT
)
{
packet_size
=
RAW_IF4
p5
_PULFFT_SIZE_BYTES
(
nblocks
);
}
else
{
packet_size
=
RAW_IF4_PRACH_SIZE_BYTES
;
packet_size
=
RAW_IF4
p5
_PRACH_SIZE_BYTES
;
}
while
(
bytes_received
<
packet_size
)
{
...
...
@@ -387,7 +387,7 @@ int eth_set_dev_conf_raw(openair0_device *device) {
int
eth_set_dev_conf_raw_IF4
(
openair0_device
*
device
)
{
int
eth_set_dev_conf_raw_IF4
p5
(
openair0_device
*
device
)
{
// use for cc_id info
int
Mod_id
=
device
->
Mod_id
;
...
...
@@ -448,7 +448,7 @@ int eth_get_dev_conf_raw(openair0_device *device) {
}
int
eth_get_dev_conf_raw_IF4
(
openair0_device
*
device
)
{
int
eth_get_dev_conf_raw_IF4
p5
(
openair0_device
*
device
)
{
// use for cc_id info
eth_state_t
*
eth
=
(
eth_state_t
*
)
device
->
priv
;
...
...
targets/ARCH/ETHERNET/USERSPACE/LIB/ethernet_lib.c
View file @
025f56d2
...
...
@@ -73,27 +73,27 @@ int trx_eth_start(openair0_device *device) {
/* adjust MTU wrt number of samples per packet */
if
(
ethernet_tune
(
device
,
MTU_SIZE
,
RAW_PACKET_SIZE_BYTES
(
device
->
openair0_cfg
->
samples_per_packet
))
!=
0
)
return
-
1
;
}
else
if
(
eth
->
flags
==
ETH_RAW_IF4_MODE
)
{
}
else
if
(
eth
->
flags
==
ETH_RAW_IF4
p5
_MODE
)
{
if
(
eth_socket_init_raw
(
device
)
!=
0
)
return
-
1
;
/* RRH gets openair0 device configuration - BBU sets openair0 device configuration*/
if
(
device
->
host_type
==
BBU_HOST
)
{
if
(
eth_set_dev_conf_raw_IF4
(
device
)
!=
0
)
return
-
1
;
if
(
eth_set_dev_conf_raw_IF4
p5
(
device
)
!=
0
)
return
-
1
;
}
else
{
if
(
eth_get_dev_conf_raw_IF4
(
device
)
!=
0
)
return
-
1
;
if
(
eth_get_dev_conf_raw_IF4
p5
(
device
)
!=
0
)
return
-
1
;
}
/* adjust MTU wrt number of samples per packet */
if
(
ethernet_tune
(
device
,
MTU_SIZE
,
RAW_IF4_PRACH_SIZE_BYTES
)
!=
0
)
return
-
1
;
if
(
ethernet_tune
(
device
,
MTU_SIZE
,
RAW_IF4
p5
_PRACH_SIZE_BYTES
)
!=
0
)
return
-
1
;
}
else
if
(
eth
->
flags
==
ETH_UDP_IF4_MODE
)
{
}
else
if
(
eth
->
flags
==
ETH_UDP_IF4
p5
_MODE
)
{
}
else
if
(
eth
->
flags
==
ETH_RAW_IF5_MOBIPASS
)
{
if
(
eth_socket_init_raw
(
device
)
!=
0
)
return
-
1
;
/* RRH gets openair0 device configuration - BBU sets openair0 device configuration*/
//if (device->host_type == BBU_HOST) {
//if(eth_set_dev_conf_raw_IF4(device)!=0) return -1;
//if(eth_set_dev_conf_raw_IF4
p5
(device)!=0) return -1;
//} else {
//if(eth_get_dev_conf_raw_IF4(device)!=0) return -1;
//if(eth_get_dev_conf_raw_IF4
p5
(device)!=0) return -1;
//
/* adjust MTU wrt number of samples per packet */
// if(ethernet_tune (device,MTU_SIZE,RAW_PACKET_SIZE_BYTES(device->openair0_cfg->samples_per_packet))!=0) return -1;
...
...
@@ -339,9 +339,9 @@ int transport_init(openair0_device *device, openair0_config_t *openair0_cfg, eth
}
else
if
(
eth_params
->
transp_preference
==
0
)
{
eth
->
flags
=
ETH_UDP_MODE
;
}
else
if
(
eth_params
->
transp_preference
==
3
)
{
eth
->
flags
=
ETH_RAW_IF4_MODE
;
eth
->
flags
=
ETH_RAW_IF4
p5
_MODE
;
}
else
if
(
eth_params
->
transp_preference
==
2
)
{
eth
->
flags
=
ETH_UDP_IF4_MODE
;
eth
->
flags
=
ETH_UDP_IF4
p5
_MODE
;
}
else
if
(
eth_params
->
transp_preference
==
4
)
{
eth
->
flags
=
ETH_RAW_IF5_MOBIPASS
;
}
else
{
...
...
@@ -368,15 +368,15 @@ int transport_init(openair0_device *device, openair0_config_t *openair0_cfg, eth
}
else
if
(
eth
->
flags
==
ETH_UDP_MODE
)
{
device
->
trx_write_func
=
trx_eth_write_udp
;
device
->
trx_read_func
=
trx_eth_read_udp
;
}
else
if
(
eth
->
flags
==
ETH_RAW_IF4_MODE
)
{
device
->
trx_write_func
=
trx_eth_write_raw_IF4
;
device
->
trx_read_func
=
trx_eth_read_raw_IF4
;
}
else
if
(
eth
->
flags
==
ETH_RAW_IF4
p5
_MODE
)
{
device
->
trx_write_func
=
trx_eth_write_raw_IF4
p5
;
device
->
trx_read_func
=
trx_eth_read_raw_IF4
p5
;
}
else
if
(
eth
->
flags
==
ETH_RAW_IF5_MOBIPASS
)
{
device
->
trx_write_func
=
trx_eth_write_raw_IF4
;
device
->
trx_read_func
=
trx_eth_read_raw_IF4
;
device
->
trx_write_func
=
trx_eth_write_raw_IF4
p5
;
device
->
trx_read_func
=
trx_eth_read_raw_IF4
p5
;
}
else
{
//device->trx_write_func = trx_eth_write_udp_IF4;
//device->trx_read_func = trx_eth_read_udp_IF4;
//device->trx_write_func = trx_eth_write_udp_IF4
p5
;
//device->trx_read_func = trx_eth_read_udp_IF4
p5
;
}
eth
->
if_name
[
device
->
Mod_id
]
=
eth_params
->
local_if_name
;
...
...
targets/ARCH/ETHERNET/USERSPACE/LIB/ethernet_lib.h
View file @
025f56d2
...
...
@@ -222,11 +222,11 @@ int eth_set_dev_conf_udp(openair0_device *device);
int
eth_socket_init_raw
(
openair0_device
*
device
);
int
trx_eth_write_raw
(
openair0_device
*
device
,
openair0_timestamp
timestamp
,
void
**
buff
,
int
nsamps
,
int
cc
,
int
flags
);
int
trx_eth_read_raw
(
openair0_device
*
device
,
openair0_timestamp
*
timestamp
,
void
**
buff
,
int
nsamps
,
int
cc
);
int
trx_eth_write_raw_IF4
(
openair0_device
*
device
,
openair0_timestamp
timestamp
,
void
**
buff
,
int
nsamps
,
int
cc
,
int
flags
);
int
trx_eth_read_raw_IF4
(
openair0_device
*
device
,
openair0_timestamp
*
timestamp
,
void
**
buff
,
int
nsamps
,
int
cc
);
int
trx_eth_write_raw_IF4
p5
(
openair0_device
*
device
,
openair0_timestamp
timestamp
,
void
**
buff
,
int
nsamps
,
int
cc
,
int
flags
);
int
trx_eth_read_raw_IF4
p5
(
openair0_device
*
device
,
openair0_timestamp
*
timestamp
,
void
**
buff
,
int
nsamps
,
int
cc
);
int
eth_get_dev_conf_raw
(
openair0_device
*
device
);
int
eth_set_dev_conf_raw
(
openair0_device
*
device
);
int
eth_get_dev_conf_raw_IF4
(
openair0_device
*
device
);
int
eth_set_dev_conf_raw_IF4
(
openair0_device
*
device
);
int
eth_get_dev_conf_raw_IF4
p5
(
openair0_device
*
device
);
int
eth_set_dev_conf_raw_IF4
p5
(
openair0_device
*
device
);
#endif
targets/ARCH/ETHERNET/USERSPACE/LIB/if_defs.h
View file @
025f56d2
...
...
@@ -47,8 +47,8 @@
// ETH transport preference modes
#define ETH_UDP_MODE 0
#define ETH_RAW_MODE 1
#define ETH_UDP_IF4_MODE 2
#define ETH_RAW_IF4_MODE 3
#define ETH_UDP_IF4
p5
_MODE 2
#define ETH_RAW_IF4
p5
_MODE 3
#define ETH_RAW_IF5_MOBIPASS 4
// Time domain RRH packet sizes
...
...
@@ -58,13 +58,13 @@
#define UDP_PACKET_SIZE_BYTES(nsamps) (APP_HEADER_SIZE_BYTES + PAYLOAD_SIZE_BYTES(nsamps))
#define RAW_PACKET_SIZE_BYTES(nsamps) (APP_HEADER_SIZE_BYTES + MAC_HEADER_SIZE_BYTES + PAYLOAD_SIZE_BYTES(nsamps))
// Packet sizes for IF4 interface format
// Packet sizes for IF4
p5
interface format
#define DATA_BLOCK_SIZE_BYTES(scaled_nblocks) (sizeof(uint16_t)*scaled_nblocks)
#define PRACH_BLOCK_SIZE_BYTES (sizeof(int16_t)*839*2) // FIX hard coded prach size (uncompressed)
#define RAW_IF4
_PDLFFT_SIZE_BYTES(nblocks) (MAC_HEADER_SIZE_BYTES + sizeof_IF4
_header_t + DATA_BLOCK_SIZE_BYTES(nblocks))
#define RAW_IF4
_PULFFT_SIZE_BYTES(nblocks) (MAC_HEADER_SIZE_BYTES + sizeof_IF4
_header_t + DATA_BLOCK_SIZE_BYTES(nblocks))
#define RAW_IF4
_PRACH_SIZE_BYTES (MAC_HEADER_SIZE_BYTES + sizeof_IF4
_header_t + PRACH_BLOCK_SIZE_BYTES)
#define RAW_IF4
p5_PDLFFT_SIZE_BYTES(nblocks) (MAC_HEADER_SIZE_BYTES + sizeof_IF4p5
_header_t + DATA_BLOCK_SIZE_BYTES(nblocks))
#define RAW_IF4
p5_PULFFT_SIZE_BYTES(nblocks) (MAC_HEADER_SIZE_BYTES + sizeof_IF4p5
_header_t + DATA_BLOCK_SIZE_BYTES(nblocks))
#define RAW_IF4
p5_PRACH_SIZE_BYTES (MAC_HEADER_SIZE_BYTES + sizeof_IF4p5
_header_t + PRACH_BLOCK_SIZE_BYTES)
// Mobipass packet sizes
#define RAW_IF5_MOBIPASS_BLOCK_SIZE_BYTES 1280
...
...
targets/RT/USER/lte-enb.c
View file @
025f56d2
This diff is collapsed.
Click to expand it.
targets/RT/USER/lte-softmodem.c
View file @
025f56d2
...
...
@@ -1056,9 +1056,9 @@ static void get_options (int argc, char **argv)
if
(
enb_properties
->
properties
[
i
]
->
rrh_gw_config
[
j
].
raw
==
1
)
{
(
eth_params
+
j
)
->
transp_preference
=
ETH_RAW_MODE
;
}
else
if
(
enb_properties
->
properties
[
i
]
->
rrh_gw_config
[
j
].
rawif4
==
1
)
{
(
eth_params
+
j
)
->
transp_preference
=
ETH_RAW_IF4_MODE
;
(
eth_params
+
j
)
->
transp_preference
=
ETH_RAW_IF4
p5
_MODE
;
}
else
if
(
enb_properties
->
properties
[
i
]
->
rrh_gw_config
[
j
].
udpif4
==
1
)
{
(
eth_params
+
j
)
->
transp_preference
=
ETH_UDP_IF4_MODE
;
(
eth_params
+
j
)
->
transp_preference
=
ETH_UDP_IF4
p5
_MODE
;
}
else
if
(
enb_properties
->
properties
[
i
]
->
rrh_gw_config
[
j
].
rawif5_mobipass
==
1
)
{
(
eth_params
+
j
)
->
transp_preference
=
ETH_RAW_IF5_MOBIPASS
;
}
else
{
...
...
@@ -1645,7 +1645,7 @@ int main( int argc, char **argv )
if
(
UE_flag
==
0
)
{
for
(
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
{
if
(
node_function
[
CC_id
]
==
NGFI_RRU_IF4
||
node_function
[
CC_id
]
==
NGFI_RRU_IF5
)
{
if
(
node_function
[
CC_id
]
==
NGFI_RRU_IF4
p5
||
node_function
[
CC_id
]
==
NGFI_RRU_IF5
)
{
PHY_vars_eNB_g
[
0
][
CC_id
]
->
rfdevice
.
host_type
=
RRH_HOST
;
PHY_vars_eNB_g
[
0
][
CC_id
]
->
ifdevice
.
host_type
=
RRH_HOST
;
}
else
{
...
...
@@ -1667,7 +1667,7 @@ int main( int argc, char **argv )
// Load RF device and initialize
for
(
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
{
if
(
node_function
[
CC_id
]
==
NGFI_RRU_IF5
||
node_function
[
CC_id
]
==
NGFI_RRU_IF4
||
node_function
[
CC_id
]
==
eNodeB_3GPP
)
{
if
(
node_function
[
CC_id
]
==
NGFI_RRU_IF5
||
node_function
[
CC_id
]
==
NGFI_RRU_IF4
p5
||
node_function
[
CC_id
]
==
eNodeB_3GPP
)
{
if
(
mode
!=
loop_through_memory
)
{
returns
=
(
UE_flag
==
0
)
?
openair0_device_load
(
&
(
PHY_vars_eNB_g
[
0
][
CC_id
]
->
rfdevice
),
&
openair0_cfg
[
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