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
3b4df110
Commit
3b4df110
authored
Sep 27, 2024
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Remove aerial_phy_slot_indication(): this is a 4G callback
parent
fc0cbc31
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
1 addition
and
104 deletions
+1
-104
nfapi/oai_integration/aerial/fapi_vnf_p5.c
nfapi/oai_integration/aerial/fapi_vnf_p5.c
+1
-1
nfapi/oai_integration/aerial/fapi_vnf_p7.c
nfapi/oai_integration/aerial/fapi_vnf_p7.c
+0
-100
nfapi/oai_integration/aerial/fapi_vnf_p7.h
nfapi/oai_integration/aerial/fapi_vnf_p7.h
+0
-3
No files found.
nfapi/oai_integration/aerial/fapi_vnf_p5.c
View file @
3b4df110
...
...
@@ -54,7 +54,7 @@ void *aerial_vnf_nr_p7_config_init(void *ptr)
p7_vnf
->
config
->
port
=
p7_vnf
->
local_port
;
p7_vnf
->
config
->
sync_indication
=
&
aerial_phy_sync_indication
;
p7_vnf
->
config
->
slot_indication
=
&
aerial_phy_slot_indication
;
p7_vnf
->
config
->
slot_indication
=
NULL
;
p7_vnf
->
config
->
harq_indication
=
&
aerial_phy_harq_indication
;
p7_vnf
->
config
->
nr_crc_indication
=
&
aerial_phy_nr_crc_indication
;
p7_vnf
->
config
->
nr_rx_data_indication
=
&
aerial_phy_nr_rx_data_indication
;
...
...
nfapi/oai_integration/aerial/fapi_vnf_p7.c
View file @
3b4df110
...
...
@@ -37,82 +37,6 @@ extern RAN_CONTEXT_t RC;
extern
UL_RCC_IND_t
UL_RCC_INFO
;
extern
uint16_t
sf_ahead
;
int
aerial_wake_gNB_rxtx
(
PHY_VARS_gNB
*
gNB
,
uint16_t
sfn
,
uint16_t
slot
)
{
struct
timespec
curr_t
;
clock_gettime
(
CLOCK_MONOTONIC
,
&
curr_t
);
// NFAPI_TRACE(NFAPI_TRACE_INFO, "\n wake_gNB_rxtx before assignment sfn:%d slot:%d TIME
// %d.%d",sfn,slot,curr_t.tv_sec,curr_t.tv_nsec);
gNB_L1_proc_t
*
proc
=
&
gNB
->
proc
;
gNB_L1_rxtx_proc_t
*
L1_proc
=
(
slot
&
1
)
?
&
proc
->
L1_proc
:
&
proc
->
L1_proc_tx
;
NR_DL_FRAME_PARMS
*
fp
=
&
gNB
->
frame_parms
;
// NFAPI_TRACE(NFAPI_TRACE_INFO, "%s(eNB:%p, sfn:%d, sf:%d)\n", __FUNCTION__, eNB, sfn, sf);
// int i;
struct
timespec
wait
;
clock_gettime
(
CLOCK_REALTIME
,
&
wait
);
wait
.
tv_sec
=
0
;
wait
.
tv_nsec
+=
5000L
;
// wait.tv_nsec = 0;
// wake up TX for subframe n+sf_ahead
// lock the TX mutex and make sure the thread is ready
if
(
pthread_mutex_timedlock
(
&
L1_proc
->
mutex
,
&
wait
)
!=
0
)
{
LOG_E
(
PHY
,
"[gNB] ERROR pthread_mutex_lock for gNB RXTX thread %d (IC %d)
\n
"
,
L1_proc
->
slot_rx
&
1
,
L1_proc
->
instance_cnt
);
exit_fun
(
"error locking mutex_rxtx"
);
return
(
-
1
);
}
{
static
uint16_t
old_slot
=
0
;
static
uint16_t
old_sfn
=
0
;
proc
->
slot_rx
=
old_slot
;
proc
->
frame_rx
=
old_sfn
;
// Try to be 1 frame back
old_slot
=
slot
;
old_sfn
=
sfn
;
// NFAPI_TRACE(NFAPI_TRACE_INFO, "\n wake_gNB_rxtx after assignment sfn:%d slot:%d",proc->frame_rx,proc->slot_rx);
if
(
old_slot
==
0
&&
old_sfn
%
100
==
0
)
LOG_W
(
PHY
,
"[gNB] sfn/slot:%d%d old_sfn/slot:%d%d proc[rx:%d%d]
\n
"
,
sfn
,
slot
,
old_sfn
,
old_slot
,
proc
->
frame_rx
,
proc
->
slot_rx
);
}
++
L1_proc
->
instance_cnt
;
// LOG_D( PHY,"[VNF-subframe_ind] sfn/sf:%d:%d proc[frame_rx:%d subframe_rx:%d] L1_proc->instance_cnt_rxtx:%d \n", sfn, sf,
// proc->frame_rx, proc->subframe_rx, L1_proc->instance_cnt_rxtx);
// We have just received and processed the common part of a subframe, say n.
// TS_rx is the last received timestamp (start of 1st slot), TS_tx is the desired
// transmitted timestamp of the next TX slot (first).
// The last (TS_rx mod samples_per_frame) was n*samples_per_tti,
// we want to generate subframe (n+N), so TS_tx = TX_rx+N*samples_per_tti,
// and proc->subframe_tx = proc->subframe_rx+sf_ahead
L1_proc
->
timestamp_tx
=
proc
->
timestamp_rx
+
(
gNB
->
if_inst
->
sl_ahead
*
fp
->
samples_per_subframe
);
L1_proc
->
frame_rx
=
proc
->
frame_rx
;
L1_proc
->
slot_rx
=
proc
->
slot_rx
;
L1_proc
->
frame_tx
=
(
L1_proc
->
slot_rx
>
(
19
-
gNB
->
if_inst
->
sl_ahead
))
?
(
L1_proc
->
frame_rx
+
1
)
&
1023
:
L1_proc
->
frame_rx
;
L1_proc
->
slot_tx
=
(
L1_proc
->
slot_rx
+
gNB
->
if_inst
->
sl_ahead
)
%
20
;
// LOG_I(PHY, "sfn/sf:%d%d proc[rx:%d%d] rx:%d%d] About to wake rxtx thread\n\n", sfn, slot, proc->frame_rx, proc->slot_rx,
// L1_proc->frame_rx, L1_proc->slot_rx); NFAPI_TRACE(NFAPI_TRACE_INFO, "\nEntering wake_gNB_rxtx sfn %d slot
// %d\n",L1_proc->frame_rx,L1_proc->slot_rx);
// the thread can now be woken up
if
(
pthread_cond_signal
(
&
L1_proc
->
cond
)
!=
0
)
{
LOG_E
(
PHY
,
"[gNB] ERROR pthread_cond_signal for gNB RXn-TXnp4 thread
\n
"
);
exit_fun
(
"ERROR pthread_clond_signal"
);
return
(
-
1
);
}
// LOG_D(PHY,"%s() About to attempt pthread_mutex_unlock\n", __FUNCTION__);
pthread_mutex_unlock
(
&
L1_proc
->
mutex
);
// LOG_D(PHY,"%s() UNLOCKED pthread_mutex_unlock\n", __FUNCTION__);
return
(
0
);
}
int
aerialwake_eNB_rxtx
(
PHY_VARS_eNB
*
eNB
,
uint16_t
sfn
,
uint16_t
sf
)
{
L1_proc_t
*
proc
=
&
eNB
->
proc
;
...
...
@@ -227,30 +151,6 @@ int aerial_phy_sync_indication(struct nfapi_vnf_p7_config *config, uint8_t sync)
return
(
0
);
}
int
aerial_phy_slot_indication
(
struct
nfapi_vnf_p7_config
*
config
,
uint16_t
phy_id
,
uint16_t
sfn
,
uint16_t
slot
)
{
static
uint8_t
first_time
=
1
;
if
(
first_time
)
{
NFAPI_TRACE
(
NFAPI_TRACE_INFO
,
"[VNF] slot indication %d
\n
"
,
NFAPI_SFNSLOT2DEC
(
sfn
,
slot
));
first_time
=
0
;
}
if
(
RC
.
gNB
&&
RC
.
gNB
[
0
]
->
configured
)
{
// uint16_t sfn = NFAPI_SFNSF2SFN(sfn_sf);
// uint16_t sf = NFAPI_SFNSF2SF(sfn_sf);
LOG_D
(
PHY
,
"[VNF] slot indication sfn:%d slot:%d
\n
"
,
sfn
,
slot
);
aerial_wake_gNB_rxtx
(
RC
.
gNB
[
0
],
sfn
,
slot
);
// DONE: find NR equivalent
}
else
{
NFAPI_TRACE
(
NFAPI_TRACE_INFO
,
"[VNF] %s() RC.gNB:%p
\n
"
,
__FUNCTION__
,
RC
.
gNB
);
if
(
RC
.
gNB
)
NFAPI_TRACE
(
NFAPI_TRACE_INFO
,
"RC.gNB[0]->configured:%d
\n
"
,
RC
.
gNB
[
0
]
->
configured
);
}
return
0
;
}
int
aerial_phy_harq_indication
(
struct
nfapi_vnf_p7_config
*
config
,
nfapi_harq_indication_t
*
ind
)
{
struct
PHY_VARS_eNB_s
*
eNB
=
RC
.
eNB
[
0
][
0
];
...
...
nfapi/oai_integration/aerial/fapi_vnf_p7.h
View file @
3b4df110
...
...
@@ -180,10 +180,7 @@ typedef struct {
}
vnf_info
;
int
aerial_wake_gNB_rxtx
(
PHY_VARS_gNB
*
gNB
,
uint16_t
sfn
,
uint16_t
slot
);
int
aerial_wake_eNB_rxtx
(
PHY_VARS_eNB
*
eNB
,
uint16_t
sfn
,
uint16_t
sf
);
int
aerial_phy_sync_indication
(
struct
nfapi_vnf_p7_config
*
config
,
uint8_t
sync
);
int
aerial_phy_slot_indication
(
struct
nfapi_vnf_p7_config
*
config
,
uint16_t
phy_id
,
uint16_t
sfn
,
uint16_t
slot
);
int
aerial_phy_harq_indication
(
struct
nfapi_vnf_p7_config
*
config
,
nfapi_harq_indication_t
*
ind
);
int
aerial_phy_nr_crc_indication
(
nfapi_nr_crc_indication_t
*
ind
);
int
aerial_phy_nr_rx_data_indication
(
nfapi_nr_rx_data_indication_t
*
ind
);
...
...
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