Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
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 UE
Commits
bf353775
Commit
bf353775
authored
Oct 21, 2019
by
laurent
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
du RX/Tx in parallel, controled by the thread pool
parent
548d2856
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
18 additions
and
19 deletions
+18
-19
cmake_targets/CMakeLists.txt
cmake_targets/CMakeLists.txt
+1
-0
executables/main-fs6.c
executables/main-fs6.c
+17
-19
No files found.
cmake_targets/CMakeLists.txt
View file @
bf353775
...
...
@@ -2105,6 +2105,7 @@ target_link_libraries (lte-softmodem
add_executable
(
ocp-softmodem
${
OPENAIR_TARGETS
}
/RT/USER/rt_wrapper.c
${
OPENAIR_DIR
}
/executables/main-ocp.c
${
OPENAIR_DIR
}
/common/utils/threadPool/thread-pool.c
${
OPENAIR_DIR
}
/executables/main-fs6.c
${
OPENAIR_DIR
}
/executables/transport_split.c
${
OPENAIR_TARGETS
}
/RT/USER/lte-softmodem.c
...
...
executables/main-fs6.c
View file @
bf353775
...
...
@@ -17,6 +17,7 @@
#include <openair1/PHY/LTE_ESTIMATION/lte_estimation.h>
#include <executables/split_headers.h>
#include <openair1/PHY/CODING/coding_extern.h>
#include <threadPool/thread-pool.h>
#include <emmintrin.h>
#define FS6_BUF_SIZE 1000*1000
...
...
@@ -1383,9 +1384,10 @@ void phy_procedures_eNB_TX_tosplit(uint8_t *bufferZone, PHY_VARS_eNB *eNB, L1_rx
return
;
}
void
DL_du_fs6
(
RU_t
*
ru
)
{
void
DL_du_fs6
(
void
*
arg
)
{
RU_t
*
ru
=
*
(
RU_t
**
)
arg
;
static
uint64_t
lastTS
;
L1_rxtx_proc_t
L1_proc
=
{
0
};
L1_rxtx_proc_t
L1_proc
=
{
0
};
for
(
int
i
=
0
;
i
<
ru
->
num_eNB
;
i
++
)
{
initBufferZone
(
bufferZone
);
...
...
@@ -1474,6 +1476,7 @@ void DL_cu_fs6(RU_t *ru, L1_rxtx_proc_t *proc) {
}
sendSubFrame
(
&
sockFS6
,
bufferZone
,
sizeof
(
fs6_dl_t
),
CTsentCUv0
);
return
;
}
void
UL_cu_fs6
(
RU_t
*
ru
,
L1_rxtx_proc_t
*
proc
,
uint64_t
*
TS
)
{
...
...
@@ -1533,7 +1536,7 @@ void *cu_fs6(void *arg) {
initRefTimes
(
waitDUAndProcessingUL
);
initRefTimes
(
makeSendDL
);
initRefTimes
(
fullLoop
);
L1_rxtx_proc_t
L1proc
=
{
0
};
L1_rxtx_proc_t
L1proc
=
{
0
};
while
(
1
)
{
timeStamp
+=
ru
->
frame_parms
.
samples_per_tti
;
...
...
@@ -1549,19 +1552,6 @@ void *cu_fs6(void *arg) {
return
NULL
;
}
void
*
dutxfs6
(
void
*
arg
)
{
RU_t
*
ru
=
(
RU_t
*
)
arg
;
initStaticTime
(
begingWait2
);
initRefTimes
(
makeSendDL
);
usleep
(
100
);
while
(
1
)
{
pickStaticTime
(
begingWait2
);
DL_du_fs6
(
ru
);
updateTimesReset
(
begingWait2
,
&
makeSendDL
,
1000
,
true
,
"DU Time in build and send Tx"
);
}
return
NULL
;
}
void
*
du_fs6
(
void
*
arg
)
{
setbuf
(
stdout
,
NULL
);
setbuf
(
stderr
,
NULL
);
...
...
@@ -1580,26 +1570,34 @@ void *du_fs6(void *arg) {
remoteIP
=
CU_IP
;
AssertFatal
(
createUDPsock
(
NULL
,
DU_PORT
,
remoteIP
,
CU_PORT
,
&
sockFS6
),
""
);
tpool_t
pool
;
tpool_t
*
Tpool
=
&
pool
;
char
params
[]
=
"-1,-1"
;
initTpool
(
params
,
Tpool
,
false
);
if
(
ru
->
start_rf
)
{
if
(
ru
->
start_rf
(
ru
)
!=
0
)
LOG_E
(
HW
,
"Could not start the RF device
\n
"
);
else
LOG_I
(
PHY
,
"RU %d rf device ready
\n
"
,
ru
->
idx
);
}
else
LOG_I
(
PHY
,
"RU %d no rf device
\n
"
,
ru
->
idx
);
pthread_t
t
;
threadCreate
(
&
t
,
dutxfs6
,
(
void
*
)
ru
,
"DlDu"
,
-
1
,
OAI_PRIORITY_RT_MAX
);
initStaticTime
(
begingWait
);
initRefTimes
(
waitRxAndProcessingUL
);
initRefTimes
(
fullLoop
);
L1_rxtx_proc_t
L1proc
;
notifiedFIFO_t
nf
;
initNotifiedFIFO
(
&
nf
);
while
(
1
)
{
L1_rxtx_proc_t
*
proc
=
&
L1proc
;
updateTimesReset
(
begingWait
,
&
fullLoop
,
1000
,
true
,
"DU for full SubFrame (must be less 1ms)"
);
pickStaticTime
(
begingWait
);
notifiedFIFO_elt_t
*
Msg
=
newNotifiedFIFO_elt
(
sizeof
(
ru
),
0
,
&
nf
,
DL_du_fs6
);
*
(
RU_t
**
)
NotifiedFifoData
(
Msg
)
=
ru
;
pushTpool
(
Tpool
,
Msg
);
UL_du_fs6
(
ru
,
proc
,
proc
->
frame_rx
,
proc
->
subframe_rx
);
notifiedFIFO_elt_t
*
res
=
pullTpool
(
&
nf
,
Tpool
);
updateTimesReset
(
begingWait
,
&
waitRxAndProcessingUL
,
1000
,
true
,
"DU Time in wait Rx + Ul processing"
);
}
return
NULL
;
...
...
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