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
canghaiwuhen
OpenXG-RAN
Commits
47abf562
Commit
47abf562
authored
5 years ago
by
laurent
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add FS6 transport time measurement
parent
08ea6180
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
80 additions
and
34 deletions
+80
-34
common/config/config_userapi.c
common/config/config_userapi.c
+1
-1
executables/main-fs6.c
executables/main-fs6.c
+50
-10
executables/main-ocp.c
executables/main-ocp.c
+1
-1
executables/split_headers.h
executables/split_headers.h
+3
-0
executables/transport_split.c
executables/transport_split.c
+1
-0
nfapi/oai_integration/nfapi.c
nfapi/oai_integration/nfapi.c
+1
-1
openair2/UTIL/OPT/probe.c
openair2/UTIL/OPT/probe.c
+3
-3
targets/ARCH/rfsimulator/simulator.c
targets/ARCH/rfsimulator/simulator.c
+6
-4
targets/RT/USER/lte-softmodem-common.c
targets/RT/USER/lte-softmodem-common.c
+9
-9
targets/RT/USER/lte-uesoftmodem.c
targets/RT/USER/lte-uesoftmodem.c
+5
-5
No files found.
common/config/config_userapi.c
View file @
47abf562
...
...
@@ -81,7 +81,7 @@ char *config_check_valptr(paramdef_t *cfgoptions, char **ptr, int length) {
}
if
(
*
ptr
==
NULL
)
{
*
ptr
=
malloc
(
length
);
*
ptr
=
malloc
(
length
>
40
?
length
:
40
);
// LTS: dummy fix, waiting Francois full fix in 4G branch
if
(
*
ptr
!=
NULL
)
{
memset
(
*
ptr
,
0
,
length
);
...
...
This diff is collapsed.
Click to expand it.
executables/main-fs6.c
View file @
47abf562
...
...
@@ -82,7 +82,34 @@ static inline void updateTimesReset(uint64_t start, Meas *M, int period, bool Ma
}
}
static
inline
void
measTransportTime
(
uint64_t
DuSend
,
uint64_t
CuMicroSec
,
Meas
*
M
,
int
period
,
bool
MaxMin
,
char
*
txt
)
{
if
(
DuSend
!=
0
)
{
uint64_t
end
=
rdtsc
();
long
long
diff
=
(
end
-
DuSend
)
/
(
cpuf
*
1000
)
-
CuMicroSec
;
LOG_E
(
HW
,
"total: %f, cu time %lu
\n
"
,
(
end
-
DuSend
)
/
(
cpuf
*
1000
),
CuMicroSec
);
M
->
maxArray
[
0
]
=
diff
;
M
->
sum
+=
diff
;
M
->
iterations
++
;
if
(
MaxMin
)
qsort
(
M
->
maxArray
,
11
,
sizeof
(
uint64_t
),
cmpint
);
else
qsort
(
M
->
maxArray
,
11
,
sizeof
(
uint64_t
),
cmpintRev
);
printMeas2
(
txt
,
M
,
period
,
MaxMin
);
if
(
M
->
iterations
%
period
==
0
)
{
bzero
(
M
,
sizeof
(
*
M
));
if
(
!
MaxMin
)
for
(
int
i
=
0
;
i
<
11
;
i
++
)
M
->
maxArray
[
i
]
=
INT_MAX
;
}
}
}
#define ceil16_bytes(a) ((((a+15)/16)*16)/8)
static
void
fs6Dlunpack
(
void
*
out
,
void
*
in
,
int
szUnpacked
)
{
static
uint64_t
*
lut
=
NULL
;
...
...
@@ -1297,12 +1324,16 @@ void *DL_du_fs6(void *arg) {
RU_t
*
ru
=
(
RU_t
*
)
arg
;
static
uint64_t
lastTS
;
L1_rxtx_proc_t
L1_proc
=
{
0
};
initStaticTime
(
begingWait
);
initStaticTime
(
begingProcessing
);
initRefTimes
(
fullLoop
);
initRefTimes
(
DuHigh
);
initRefTimes
(
DuLow
);
initRefTimes
(
transportTime
);
while
(
1
)
{
for
(
int
i
=
0
;
i
<
ru
->
num_eNB
;
i
++
)
{
initBufferZone
(
bufferZone
);
initStaticTime
(
begingWait
);
initRefTimes
(
fullLoop
);
pickStaticTime
(
begingWait
);
int
nb_blocks
=
receiveSubFrame
(
&
sockFS6
,
bufferZone
,
sizeof
(
bufferZone
),
CTsentCUv0
);
updateTimesReset
(
begingWait
,
&
fullLoop
,
1000
,
false
,
"DU wait CU"
);
...
...
@@ -1313,18 +1344,22 @@ void *DL_du_fs6(void *arg) {
lastTS
+
ru
->
eNB_list
[
i
]
->
frame_parms
.
samples_per_tti
,
hUDP
(
bufferZone
)
->
timestamp
);
}
pickStaticTime
(
begingProcessing
);
lastTS
=
hUDP
(
bufferZone
)
->
timestamp
;
setAllfromTS
(
hUDP
(
bufferZone
)
->
timestamp
-
sf_ahead
*
ru
->
eNB_list
[
i
]
->
frame_parms
.
samples_per_tti
,
&
L1_proc
);
measTransportTime
(
hDL
(
bufferZone
)
->
DuClock
,
hDL
(
bufferZone
)
->
CuSpentMicroSec
,
&
transportTime
,
1000
,
false
,
"Transport time, to CU + from CU for one subframe"
);
phy_procedures_eNB_TX_fromsplit
(
bufferZone
,
nb_blocks
,
ru
->
eNB_list
[
i
],
&
L1_proc
,
1
);
updateTimesReset
(
begingProcessing
,
&
DuHigh
,
1000
,
false
,
"DU high layer1 processing for DL"
);
}
else
LOG_E
(
PHY
,
"DL not received for subframe
\n
"
);
}
pickStaticTime
(
begingProcessing
);
feptx_prec
(
ru
,
&
L1_proc
);
feptx_ofdm
(
ru
,
&
L1_proc
);
tx_rf
(
ru
,
&
L1_proc
);
updateTimesReset
(
begingProcessing
,
&
DuLow
,
1000
,
false
,
"DU low layer1 processing for DL"
);
if
(
IS_SOFTMODEM_RFSIM
)
return
NULL
;
}
...
...
@@ -1371,7 +1406,7 @@ void UL_du_fs6(RU_t *ru, L1_rxtx_proc_t *proc) {
}
}
void
DL_cu_fs6
(
RU_t
*
ru
,
L1_rxtx_proc_t
*
proc
)
{
void
DL_cu_fs6
(
RU_t
*
ru
,
L1_rxtx_proc_t
*
proc
,
uint64_t
DuClock
,
uint64_t
startCycle
)
{
// Fixme: datamodel issue
PHY_VARS_eNB
*
eNB
=
RC
.
eNB
[
0
][
0
];
pthread_mutex_lock
(
&
eNB
->
UL_INFO_mutex
);
...
...
@@ -1390,17 +1425,21 @@ void DL_cu_fs6(RU_t *ru, L1_rxtx_proc_t *proc) {
hUDP
(
bufferZone
)
->
blockID
=
0
;
hUDP
(
bufferZone
)
->
contentBytes
=
sizeof
(
fs6_dl_t
);
}
hDL
(
bufferZone
)
->
DuClock
=
DuClock
;
hDL
(
bufferZone
)
->
CuSpentMicroSec
=
(
rdtsc
()
-
startCycle
)
/
(
cpuf
*
1000
);
sendSubFrame
(
&
sockFS6
,
bufferZone
,
sizeof
(
fs6_dl_t
),
CTsentCUv0
);
return
;
}
void
UL_cu_fs6
(
RU_t
*
ru
,
L1_rxtx_proc_t
*
proc
,
uint64_t
*
TS
)
{
void
UL_cu_fs6
(
RU_t
*
ru
,
L1_rxtx_proc_t
*
proc
,
uint64_t
*
TS
,
uint64_t
*
DuClock
,
uint64_t
*
startProcessing
)
{
initBufferZone
(
bufferZone
);
initStaticTime
(
begingWait
);
initRefTimes
(
fullLoop
);
pickStaticTime
(
begingWait
);
int
nb_blocks
=
receiveSubFrame
(
&
sockFS6
,
bufferZone
,
sizeof
(
bufferZone
),
CTsentDUv0
);
*
DuClock
=
hUDP
(
bufferZone
)
->
senderClock
;
*
startProcessing
=
rdtsc
();
updateTimesReset
(
begingWait
,
&
fullLoop
,
1000
,
false
,
"CU wait DU"
);
if
(
nb_blocks
==
0
)
{
...
...
@@ -1462,15 +1501,16 @@ void *cu_fs6(void *arg) {
initRefTimes
(
waitDUAndProcessingUL
);
initRefTimes
(
makeSendDL
);
initRefTimes
(
fullLoop
);
uint64_t
DuClock
=
0
,
startProcessing
=
0
;
while
(
1
)
{
timeStamp
+=
ru
->
frame_parms
.
samples_per_tti
;
updateTimesReset
(
begingWait
,
&
fullLoop
,
1000
,
true
,
"CU for full SubFrame (must be less 1ms)"
);
pickStaticTime
(
begingWait
);
UL_cu_fs6
(
ru
,
&
L1proc
,
&
timeStamp
,
&
DuClock
,
&
startProcessing
);
updateTimesReset
(
begingWait
,
&
waitDUAndProcessingUL
,
1000
,
true
,
"CU Time in wait Rx + Ul processing"
);
UL_cu_fs6
(
ru
,
&
L1proc
,
&
timeStamp
);
pickStaticTime
(
begingWait2
);
DL_cu_fs6
(
ru
,
&
L1proc
);
DL_cu_fs6
(
ru
,
&
L1proc
,
DuClock
,
startProcessing
);
updateTimesReset
(
begingWait2
,
&
makeSendDL
,
1000
,
true
,
"CU Time in DL build+send"
);
}
...
...
This diff is collapsed.
Click to expand it.
executables/main-ocp.c
View file @
47abf562
...
...
@@ -613,7 +613,7 @@ void rx_rf(RU_t *ru, L1_rxtx_proc_t *proc) {
#endif
}
if
(
timestamp_rx
-
old_ts
!=
fp
->
samples_per_tti
)
{
if
(
old_ts
!=
0
&&
timestamp_rx
-
old_ts
!=
fp
->
samples_per_tti
)
{
LOG_E
(
HW
,
"impossible shift in rx stream, rx: %ld, previous rx distance: %ld, should be %d
\n
"
,
timestamp_rx
,
proc
->
timestamp_rx
-
old_ts
,
fp
->
samples_per_tti
);
//ru->ts_offset += (proc->timestamp_rx - old_ts - fp->samples_per_tti);
//proc->timestamp_rx = ts-ru->ts_offset;
...
...
This diff is collapsed.
Click to expand it.
executables/split_headers.h
View file @
47abf562
...
...
@@ -36,6 +36,7 @@ typedef struct commonUDP_s {
uint16_t
blockID
;
// id: 0..nbBocks-1
uint16_t
contentType
;
// defines the content format
uint16_t
contentBytes
;
// will be sent in a UDP packet, so must be < 2^16 bytes
uint64_t
senderClock
;
}
commonUDP_t
;
// FS6 UL common header (DU to CU)
...
...
@@ -57,6 +58,8 @@ typedef struct {
int
num_mdci
;
int
amp
;
LTE_eNB_PHICH
phich_vars
;
uint64_t
DuClock
;
uint64_t
CuSpentMicroSec
;
}
fs6_dl_t
;
// a value to type all sub packets,
...
...
This diff is collapsed.
Click to expand it.
executables/transport_split.c
View file @
47abf562
...
...
@@ -129,6 +129,7 @@ int receiveSubFrame(UDPsock_t *sock, void *bufferZone, int bufferSize, uint16_t
int
sendSubFrame
(
UDPsock_t
*
sock
,
void
*
bufferZone
,
ssize_t
secondHeaderSize
,
uint16_t
contentType
)
{
commonUDP_t
*
UDPheader
=
(
commonUDP_t
*
)
bufferZone
;
UDPheader
->
contentType
=
contentType
;
UDPheader
->
senderClock
=
rdtsc
();
int
nbBlocks
=
UDPheader
->
nbBlocks
;
int
blockId
=
0
;
...
...
This diff is collapsed.
Click to expand it.
nfapi/oai_integration/nfapi.c
View file @
47abf562
...
...
@@ -29,7 +29,7 @@ typedef struct {
nfapi_mode_t
nfapi_mode
;
}
nfapi_params_t
;
static
nfapi_params_t
nfapi_params
;
static
nfapi_params_t
nfapi_params
=
{
0
}
;
void
set_thread_priority
(
int
priority
)
{
//printf("%s(priority:%d)\n", __FUNCTION__, priority);
...
...
This diff is collapsed.
Click to expand it.
openair2/UTIL/OPT/probe.c
View file @
47abf562
...
...
@@ -98,8 +98,8 @@ int opt_enabled=0;
//static unsigned char g_PDUBuffer[1600];
//static unsigned int g_PDUOffset;
static
char
*
in_ip
;
static
char
*
in_path
;
static
char
in_ip
[
128
]
=
{
0
}
;
static
char
in_path
[
128
]
=
{
0
}
;
FILE
*
file_fd
=
NULL
;
pcap_hdr_t
file_header
=
{
0xa1b2c3d4
,
/* magic number */
...
...
@@ -450,7 +450,7 @@ int init_opt(void) {
char
*
in_type
=
NULL
;
paramdef_t
opt_params
[]
=
OPT_PARAMS_DESC
;
checkedparam_t
opt_checkParams
[]
=
OPTPARAMS_CHECK_DESC
;
uint16_t
in_port
;
uint16_t
in_port
=
0
;
config_set_checkfunctions
(
opt_params
,
opt_checkParams
,
sizeof
(
opt_params
)
/
sizeof
(
paramdef_t
));
config_get
(
opt_params
,
sizeof
(
opt_params
)
/
sizeof
(
paramdef_t
),
OPT_CONFIGPREFIX
);
...
...
This diff is collapsed.
Click to expand it.
targets/ARCH/rfsimulator/simulator.c
View file @
47abf562
...
...
@@ -346,7 +346,8 @@ static int rfsimulator_write_internal(rfsimulator_state_t *t, openair0_timestamp
if
(
t
->
lastWroteTS
!=
0
&&
abs
((
double
)
t
->
lastWroteTS
-
timestamp
)
>
(
double
)
CirSize
)
LOG_E
(
HW
,
"Discontinuous TX gap too large Tx:%lu, %lu
\n
"
,
t
->
lastWroteTS
,
timestamp
);
AssertFatal
(
t
->
lastWroteTS
<=
timestamp
+
1
,
" Not supported to send Tx out of order (same in USRP) %lu, %lu
\n
"
,
if
(
t
->
lastWroteTS
>=
timestamp
+
1
)
LOG_E
(
HW
,
"Not supported to send Tx out of order (same in USRP) %lu, %lu
\n
"
,
t
->
lastWroteTS
,
timestamp
);
t
->
lastWroteTS
=
timestamp
+
nsamps
;
...
...
@@ -420,7 +421,7 @@ static bool flushInput(rfsimulator_state_t *t, int timeout, int nsamps_for_initi
if
(
sz
<
0
)
{
if
(
errno
!=
EAGAIN
)
{
LOG_E
(
HW
,
"socket failed %s
\n
"
,
strerror
(
errno
));
abort
();
//
abort();
}
}
else
if
(
sz
==
0
)
continue
;
...
...
@@ -466,8 +467,9 @@ static bool flushInput(rfsimulator_state_t *t, int timeout, int nsamps_for_initi
}
else
if
(
b
->
lastReceivedTS
==
b
->
th
.
timestamp
)
{
// normal case
}
else
{
abort
();
AssertFatal
(
false
,
"received data in past: current is %lu, new reception: %lu!
\n
"
,
b
->
lastReceivedTS
,
b
->
th
.
timestamp
);
}
LOG_E
(
HW
,
"received data in past: current is %lu, new reception: %lu!
\n
"
,
b
->
lastReceivedTS
,
b
->
th
.
timestamp
);
b
->
trashingPacket
=
true
;
}
pthread_mutex_lock
(
&
Sockmutex
);
...
...
This diff is collapsed.
Click to expand it.
targets/RT/USER/lte-softmodem-common.c
View file @
47abf562
...
...
@@ -54,16 +54,16 @@ softmodem_params_t *get_softmodem_params(void) {
}
void
get_common_options
(
void
)
{
uint32_t
online_log_messages
;
uint32_t
glog_level
;
uint32_t
start_telnetsrv
;
uint32_t
noS1
;
uint32_t
nokrnmod
;
uint32_t
nonbiot
;
uint32_t
rfsim
;
uint32_t
basicsim
;
uint32_t
online_log_messages
=
0
;
uint32_t
glog_level
=
0
;
uint32_t
start_telnetsrv
=
0
;
uint32_t
noS1
=
0
;
uint32_t
nokrnmod
=
0
;
uint32_t
nonbiot
=
0
;
uint32_t
rfsim
=
0
;
uint32_t
basicsim
=
0
;
char
*
logmem_filename
=
NULL
;
uint32_t
do_forms
;
uint32_t
do_forms
=
0
;
paramdef_t
cmdline_params
[]
=
CMDLINE_PARAMS_DESC
;
paramdef_t
cmdline_logparams
[]
=
CMDLINE_LOGPARAMS_DESC
;
checkedparam_t
cmdline_log_CheckParams
[]
=
CMDLINE_LOGPARAMS_CHECK_DESC
;
...
...
This diff is collapsed.
Click to expand it.
targets/RT/USER/lte-uesoftmodem.c
View file @
47abf562
...
...
@@ -320,13 +320,13 @@ void exit_function(const char *file, const char *function, const int line, const
extern
int16_t
dlsch_demod_shift
;
static
void
get_options
(
void
)
{
int
CC_id
;
int
tddflag
;
int
CC_id
=
0
;
int
tddflag
=
0
;
char
*
loopfile
=
NULL
;
int
dumpframe
=
0
;
int
timingadv
;
uint8_t
nfapi_mode
;
int
simL1flag
;
int
timingadv
=
0
;
uint8_t
nfapi_mode
=
0
;
int
simL1flag
=
0
;
set_default_frame_parms
(
frame_parms
);
CONFIG_SETRTFLAG
(
CONFIG_NOEXITONHELP
);
/* unknown parameters on command line will be checked in main
...
...
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