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
lizhongxiao
OpenXG-RAN
Commits
3e79d701
Commit
3e79d701
authored
Apr 27, 2023
by
Vaibhav Shrivastava
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
nfapi & enb_config.c rebased changes
parent
01b2c455
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
171 additions
and
51 deletions
+171
-51
executables/create_tasks.c
executables/create_tasks.c
+3
-0
nfapi/oai_integration/nfapi_vnf.c
nfapi/oai_integration/nfapi_vnf.c
+32
-34
nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface.h
nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface.h
+1
-1
nfapi/open-nFAPI/nfapi/src/nfapi_p7.c
nfapi/open-nFAPI/nfapi/src/nfapi_p7.c
+103
-6
nfapi/open-nFAPI/sim_common/inc/vendor_ext.h
nfapi/open-nFAPI/sim_common/inc/vendor_ext.h
+1
-2
nfapi/open-nFAPI/vnf/public_inc/nfapi_vnf_interface.h
nfapi/open-nFAPI/vnf/public_inc/nfapi_vnf_interface.h
+10
-0
nfapi/open-nFAPI/vnf/src/vnf_p7.c
nfapi/open-nFAPI/vnf/src/vnf_p7.c
+6
-5
nfapi/open-nFAPI/vnf/src/vnf_p7_interface.c
nfapi/open-nFAPI/vnf/src/vnf_p7_interface.c
+10
-0
openair2/ENB_APP/enb_config.c
openair2/ENB_APP/enb_config.c
+1
-1
openair3/SS/ss_eNB_port_man_task.c
openair3/SS/ss_eNB_port_man_task.c
+4
-2
No files found.
executables/create_tasks.c
View file @
3e79d701
...
...
@@ -96,6 +96,9 @@ int create_tasks(uint32_t enb_nb) {
LOG_I
(
MAC
,
"Creating MAC eNB Task
\n
"
);
rc
=
itti_create_task
(
TASK_MAC_ENB
,
mac_enb_task
,
NULL
);
AssertFatal
(
rc
>=
0
,
"Create task for MAC eNB failed
\n
"
);
rc
=
itti_create_task
(
TASK_UDP
,
udp_eNB_task
,
NULL
);
AssertFatal
(
rc
>=
0
,
"Create task for UDP failed
\n
"
);
}
LOG_I
(
ENB_APP
,
"Creating ENB_APP eNB Task
\n
"
);
...
...
nfapi/oai_integration/nfapi_vnf.c
View file @
3e79d701
...
...
@@ -202,7 +202,6 @@ void install_nr_schedule_handlers(NR_IF_Module_t *if_inst);
void
install_schedule_handlers
(
IF_Module_t
*
if_inst
);
extern
int
single_thread_flag
;
extern
uint16_t
sf_ahead
;
extern
uint16_t
slot_ahead
;
void
oai_create_enb
(
void
)
{
int
bodge_counter
=
0
;
...
...
@@ -241,9 +240,6 @@ void oai_create_enb(void) {
FAPI_configured_for_a_CC
=
1
;
NFAPI_TRACE
(
NFAPI_TRACE_INFO
,
"%s() eNB Cell %d is now configured
\n
"
,
__FUNCTION__
,
CC_id
);
}
NFAPI_TRACE
(
NFAPI_TRACE_INFO
,
"%s() eNB is now configured
\n
"
,
__FUNCTION__
);
}
void
oai_enb_init
(
void
)
{
...
...
@@ -349,8 +345,8 @@ int pnf_nr_param_resp_cb(nfapi_vnf_config_t *config, int p5_idx, nfapi_nr_pnf_pa
memset
(
&
req
,
0
,
sizeof
(
req
));
req
.
header
.
message_id
=
NFAPI_PNF_CONFIG_REQUEST
;
req
.
pnf_phy_rf_config
.
tl
.
tag
=
NFAPI_PNF_PHY_RF_TAG
;
req
.
pnf_phy_rf_config
.
number_phy_rf_config_info
=
2
;
//
DJP
pnf.phys.size();
NFAPI_TRACE
(
NFAPI_TRACE_INFO
,
"
DJP:
Hard coded num phy rf to 2
\n
"
);
req
.
pnf_phy_rf_config
.
number_phy_rf_config_info
=
2
;
// pnf.phys.size();
NFAPI_TRACE
(
NFAPI_TRACE_INFO
,
"Hard coded num phy rf to 2
\n
"
);
for
(
unsigned
i
=
0
;
i
<
2
;
++
i
)
{
req
.
pnf_phy_rf_config
.
phy_rf_config
[
i
].
phy_id
=
pnf
->
phys
[
i
].
id
;
...
...
@@ -382,7 +378,6 @@ int pnf_param_resp_cb(nfapi_vnf_config_t *config, int p5_idx, nfapi_pnf_param_re
pnf
->
phys
[
i
]
=
phy
;
pnf
->
num_phys
=
i
+
1
;
}
for
(
int
i
=
0
;
i
<
resp
->
pnf_rf
.
number_of_rfs
;
++
i
)
{
rf_info
rf
;
memset
(
&
rf
,
0
,
sizeof
(
rf
));
...
...
@@ -394,8 +389,8 @@ int pnf_param_resp_cb(nfapi_vnf_config_t *config, int p5_idx, nfapi_pnf_param_re
memset
(
&
req
,
0
,
sizeof
(
req
));
req
.
header
.
message_id
=
NFAPI_PNF_CONFIG_REQUEST
;
req
.
pnf_phy_rf_config
.
tl
.
tag
=
NFAPI_PNF_PHY_RF_TAG
;
req
.
pnf_phy_rf_config
.
number_phy_rf_config_info
=
2
;
//
DJP
pnf.phys.size();
NFAPI_TRACE
(
NFAPI_TRACE_INFO
,
"
DJP:
Hard coded num phy rf to 2
\n
"
);
req
.
pnf_phy_rf_config
.
number_phy_rf_config_info
=
2
;
// pnf.phys.size();
NFAPI_TRACE
(
NFAPI_TRACE_INFO
,
"Hard coded num phy rf to 2
\n
"
);
for
(
unsigned
i
=
0
;
i
<
2
;
++
i
)
{
req
.
pnf_phy_rf_config
.
phy_rf_config
[
i
].
phy_id
=
pnf
->
phys
[
i
].
id
;
...
...
@@ -655,7 +650,7 @@ int phy_subframe_indication(struct nfapi_vnf_p7_config *config, uint16_t phy_id,
static
uint8_t
first_time
=
1
;
int
CC_id
=
0
;
/* MultiCell: Function modify for Multiple CC */
/*for (int CC_id=0; CC_id<MAX_NUM_CCs; CC_id++)
{*/
/*for (int CC_id=0; CC_id<MAX_NUM_CCs; CC_id++)
*/
{
if
(
first_time
)
{
NFAPI_TRACE
(
NFAPI_TRACE_INFO
,
"[VNF] subframe indication %d
\n
"
,
NFAPI_SFNSF2DEC
(
sfn_sf
));
first_time
=
0
;
...
...
@@ -669,9 +664,9 @@ int phy_subframe_indication(struct nfapi_vnf_p7_config *config, uint16_t phy_id,
}
else
{
NFAPI_TRACE
(
NFAPI_TRACE_INFO
,
"[VNF] %s() RC.eNB:%p
\n
"
,
__FUNCTION__
,
RC
.
eNB
);
if
(
RC
.
eNB
)
NFAPI_TRACE
(
NFAPI_TRACE_INFO
,
"RC.eNB[0][0]->configured:%d
\n
"
,
RC
.
eNB
[
0
][
0
]
->
configured
);
if
(
RC
.
eNB
)
NFAPI_TRACE
(
NFAPI_TRACE_INFO
,
"RC.eNB[0][CC_id]->configured:%d
\n
"
,
RC
.
eNB
[
0
][
CC_id
]
->
configured
);
}
}
return
0
;
}
...
...
@@ -1726,24 +1721,13 @@ int config_resp_cb(nfapi_vnf_config_t *config, int p5_idx, nfapi_config_response
}
int
start_resp_cb
(
nfapi_vnf_config_t
*
config
,
int
p5_idx
,
nfapi_start_response_t
*
resp
)
{
NFAPI_TRACE
(
NFAPI_TRACE_INFO
,
"[VNF] Received NFAPI_START_RESP idx:%d phy_id:%d
\n
"
,
p5_idx
,
resp
->
header
.
phy_id
);
vnf_info
*
vnf
=
(
vnf_info
*
)(
config
->
user_data
);
pnf_info
*
pnf
=
vnf
->
pnfs
;
phy_info
*
phy
=
pnf
->
phys
;
vnf_p7_info
*
p7_vnf
=
vnf
->
p7_vnfs
;
uint16_t
port
=
htons
(
phy
->
remote_port
);
char
*
remote_addr
=
(
char
*
)
malloc
(
strlen
(
phy
->
remote_addr
)
+
1
);
memset
(
remote_addr
,
0
,
strlen
(
phy
->
remote_addr
)
+
1
);
strncpy
(
remote_addr
,
phy
->
remote_addr
,
strlen
(
phy
->
remote_addr
));
for
(
int
i
=
0
;
i
<
pnf
->
num_phys
;
i
++
)
{
nfapi_vnf_p7_add_pnf
((
p7_vnf
->
config
),
remote_addr
,
(
int
)
port
,
phy
->
id
);
LOG_D
(
NFAPI_VNF
,
"MultiCell: fxn:%d phy_id added:%d
\n
"
,
p5_idx
,
resp
->
header
.
phy_id
);
phy
+=
1
;
}
free
(
remote_addr
);
remote_addr
=
NULL
;
return
0
;
NFAPI_TRACE
(
NFAPI_TRACE_INFO
,
"[VNF] Received NFAPI_START_RESP idx:%d phy_id:%d
\n
"
,
p5_idx
,
resp
->
header
.
phy_id
);
vnf_info
*
vnf
=
(
vnf_info
*
)(
config
->
user_data
);
pnf_info
*
pnf
=
vnf
->
pnfs
;
phy_info
*
phy
=
pnf
->
phys
;
vnf_p7_info
*
p7_vnf
=
vnf
->
p7_vnfs
;
nfapi_vnf_p7_add_pnf
((
p7_vnf
->
config
),
phy
->
remote_addr
,
htons
(
phy
->
remote_port
),
phy
->
id
);
return
0
;
}
int
nr_start_resp_cb
(
nfapi_vnf_config_t
*
config
,
int
p5_idx
,
nfapi_nr_start_response_scf_t
*
resp
)
{
...
...
@@ -1859,7 +1843,7 @@ void configure_nr_nfapi_vnf(char *vnf_addr, int vnf_p5_port, char *pnf_ip_addr,
config
->
deallocate_p4_p5_vendor_ext
=
&
vnf_deallocate_p4_p5_vendor_ext
;
config
->
codec_config
.
allocate
=
&
vnf_allocate
;
config
->
codec_config
.
deallocate
=
&
vnf_deallocate
;
memset
(
&
UL_RCC_INFO
,
0
,
sizeof
(
UL_RCC_IN
D_t
));
memset
(
&
UL_RCC_INFO
,
0
,
sizeof
(
UL_RCC_IN
FO
));
NFAPI_TRACE
(
NFAPI_TRACE_INFO
,
"[VNF] Creating VNF NFAPI start thread %s
\n
"
,
__FUNCTION__
);
pthread_create
(
&
vnf_start_pthread
,
NULL
,
(
void
*
)
&
vnf_nr_start_thread
,
config
);
NFAPI_TRACE
(
NFAPI_TRACE_INFO
,
"[VNF] Created VNF NFAPI start thread %s
\n
"
,
__FUNCTION__
);
...
...
@@ -1908,7 +1892,7 @@ void configure_nfapi_vnf(char *vnf_addr, int vnf_p5_port, char *pnf_ip_addr, int
config
->
deallocate_p4_p5_vendor_ext
=
&
vnf_deallocate_p4_p5_vendor_ext
;
config
->
codec_config
.
allocate
=
&
vnf_allocate
;
config
->
codec_config
.
deallocate
=
&
vnf_deallocate
;
memset
(
&
UL_RCC_INFO
,
0
,
sizeof
(
UL_RCC_IN
D_t
));
memset
(
&
UL_RCC_INFO
,
0
,
sizeof
(
UL_RCC_IN
FO
));
NFAPI_TRACE
(
NFAPI_TRACE_INFO
,
"[VNF] Creating VNF NFAPI start thread %s
\n
"
,
__FUNCTION__
);
pthread_create
(
&
vnf_start_pthread
,
NULL
,
(
void
*
)
&
vnf_start_thread
,
config
);
NFAPI_TRACE
(
NFAPI_TRACE_INFO
,
"[VNF] Created VNF NFAPI start thread %s
\n
"
,
__FUNCTION__
);
...
...
@@ -1958,7 +1942,7 @@ int oai_nfapi_dl_tti_req(nfapi_nr_dl_tti_request_t *dl_config_req)
LOG_D
(
NR_PHY
,
"Entering oai_nfapi_nr_dl_config_req sfn:%d,slot:%d
\n
"
,
dl_config_req
->
SFN
,
dl_config_req
->
Slot
);
nfapi_vnf_p7_config_t
*
p7_config
=
vnf
.
p7_vnfs
[
0
].
config
;
dl_config_req
->
header
.
message_id
=
NFAPI_NR_PHY_MSG_TYPE_DL_TTI_REQUEST
;
//dl_config_req->header.phy_id = 1; //
DJP
HACK TODO FIXME - need to pass this around!!!!
//dl_config_req->header.phy_id = 1; // HACK TODO FIXME - need to pass this around!!!!
int
retval
=
nfapi_vnf_p7_nr_dl_config_req
(
p7_config
,
dl_config_req
);
...
...
@@ -1976,7 +1960,7 @@ int oai_nfapi_tx_data_req(nfapi_nr_tx_data_request_t *tx_data_req)
{
LOG_D
(
NR_PHY
,
"Entering oai_nfapi_nr_tx_data_req sfn:%d,slot:%d
\n
"
,
tx_data_req
->
SFN
,
tx_data_req
->
Slot
);
nfapi_vnf_p7_config_t
*
p7_config
=
vnf
.
p7_vnfs
[
0
].
config
;
//tx_data_req->header.phy_id = 1; //
DJP
HACK TODO FIXME - need to pass this around!!!!
//tx_data_req->header.phy_id = 1; // HACK TODO FIXME - need to pass this around!!!!
tx_data_req
->
header
.
message_id
=
NFAPI_NR_PHY_MSG_TYPE_TX_DATA_REQUEST
;
//LOG_D(PHY, "[VNF] %s() TX_REQ sfn_sf:%d number_of_pdus:%d\n", __FUNCTION__, NFAPI_SFNSF2DEC(tx_req->sfn_sf), tx_req->tx_request_body.number_of_pdus);
int
retval
=
nfapi_vnf_p7_tx_data_req
(
p7_config
,
tx_data_req
);
...
...
@@ -2158,3 +2142,17 @@ int oai_nfapi_ue_release_req(nfapi_ue_release_request_t *release_req){
}
return
retval
;
}
int
oai_nfapi_slot_ind
(
nfapi_nr_slot_indication_scf_t
*
slot_ind
)
{
LOG_D
(
NR_PHY
,
"Entering oai_nfapi_slot_ind sfn:%d,slot:%d
\n
"
,
slot_ind
->
sfn
,
slot_ind
->
slot
);
nfapi_vnf_p7_config_t
*
p7_config
=
vnf
.
p7_vnfs
[
0
].
config
;
slot_ind
->
header
.
message_id
=
NFAPI_NR_PHY_MSG_TYPE_SLOT_INDICATION
;
int
retval
=
nfapi_vnf_p7_nr_slot_ind
(
p7_config
,
slot_ind
);
if
(
retval
!=
0
)
{
LOG_E
(
PHY
,
"%s() Problem sending retval:%d
\n
"
,
__FUNCTION__
,
retval
);
}
return
retval
;
}
nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface.h
View file @
3e79d701
...
...
@@ -10,7 +10,7 @@
#define _NFAPI_NR_INTERFACE_H_
#include "nfapi_interface.h"
#include "nfapi
/open-nFAPI/nfapi/public_inc/nfapi
_nr_interface_scf.h"
#include "nfapi_nr_interface_scf.h"
#define NFAPI_NR_MAX_NB_CCE_AGGREGATION_LEVELS 5
#define NFAPI_NR_MAX_NB_TCI_STATES_PDCCH 64
...
...
nfapi/open-nFAPI/nfapi/src/nfapi_p7.c
View file @
3e79d701
...
...
@@ -37,6 +37,7 @@
#include <nfapi.h>
#include <debug.h>
#include "nfapi_nr_interface_scf.h"
#include "vendor_ext.h"
extern
int
nfapi_unpack_p7_vendor_extension
(
nfapi_p7_message_header_t
*
header
,
uint8_t
**
ppReadPackedMsg
,
void
*
user_data
);
extern
int
nfapi_pack_p7_vendor_extension
(
nfapi_p7_message_header_t
*
header
,
uint8_t
**
ppWritePackedMsg
,
void
*
user_data
);
...
...
@@ -3384,6 +3385,13 @@ static uint8_t pack_nr_uci_pucch_2_3_4(void* tlv, uint8_t **ppWritePackedMsg, ui
return
1
;
}
static
uint8_t
pack_subframe_indication
(
void
*
msg
,
uint8_t
**
ppWritePackedMsg
,
uint8_t
*
end
,
nfapi_p7_codec_config_t
*
config
)
{
nfapi_subframe_indication_t
*
pNfapiMsg
=
(
nfapi_subframe_indication_t
*
)
msg
;
return
(
push16
(
pNfapiMsg
->
sfn_sf
,
ppWritePackedMsg
,
end
));
}
static
uint8_t
pack_nr_uci_indication_body
(
nfapi_nr_uci_t
*
value
,
uint8_t
**
ppWritePackedMsg
,
uint8_t
*
end
)
{
if
(
!
push16
(
value
->
pdu_type
,
ppWritePackedMsg
,
end
))
...
...
@@ -3489,6 +3497,7 @@ int nfapi_nr_p7_message_pack(void *pMessageBuf, void *pPackedBuf, uint32_t packe
case
NFAPI_NR_PHY_MSG_TYPE_SLOT_INDICATION
:
result
=
pack_nr_slot_indication
(
pMessageHeader
,
&
pWritePackedMessage
,
end
,
config
);
break
;
case
NFAPI_NR_PHY_MSG_TYPE_RX_DATA_INDICATION
:
result
=
pack_nr_rx_data_indication
(
pMessageHeader
,
&
pWritePackedMessage
,
end
,
config
);
...
...
@@ -3696,6 +3705,10 @@ int nfapi_p7_message_pack(void *pMessageBuf, void *pPackedBuf, uint32_t packedBu
result
=
pack_timing_info
(
pMessageHeader
,
&
pWritePackedMessage
,
end
,
config
);
break
;
case
NFAPI_SUBFRAME_INDICATION
:
result
=
pack_subframe_indication
(
pMessageHeader
,
&
pWritePackedMessage
,
end
,
config
);
break
;
default:
{
if
(
pMessageHeader
->
message_id
>=
NFAPI_VENDOR_EXT_MSG_MIN
&&
pMessageHeader
->
message_id
<=
NFAPI_VENDOR_EXT_MSG_MAX
)
{
...
...
@@ -5335,6 +5348,16 @@ static uint8_t unpack_ul_config_request(uint8_t **ppReadPackedMsg, uint8_t *end,
unpack_p7_tlv_list
(
unpack_fns
,
sizeof
(
unpack_fns
)
/
sizeof
(
unpack_tlv_t
),
ppReadPackedMsg
,
end
,
config
,
&
pNfapiMsg
->
vendor_extension
));
}
static
uint8_t
unpack_subframe_indication
(
uint8_t
**
ppReadPackedMsg
,
uint8_t
*
end
,
void
*
msg
,
nfapi_p7_codec_config_t
*
config
)
{
nfapi_subframe_indication_t
*
pNfapiMsg
=
(
nfapi_subframe_indication_t
*
)
msg
;
if
(
!
(
pull16
(
ppReadPackedMsg
,
&
pNfapiMsg
->
sfn_sf
,
end
)
))
return
0
;
return
1
;
}
static
uint8_t
unpack_hi_dci0_hi_pdu_rel8_value
(
void
*
tlv
,
uint8_t
**
ppReadPackedMsg
,
uint8_t
*
end
)
{
nfapi_hi_dci0_hi_pdu_rel8_t
*
hi_pdu_rel8
=
(
nfapi_hi_dci0_hi_pdu_rel8_t
*
)
tlv
;
return
(
pull8
(
ppReadPackedMsg
,
&
hi_pdu_rel8
->
resource_block_start
,
end
)
&&
...
...
@@ -7579,6 +7602,53 @@ static uint8_t unpack_nr_timing_info(uint8_t **ppReadPackedMsg, uint8_t *end, vo
unpack_p7_tlv_list
(
NULL
,
0
,
ppReadPackedMsg
,
end
,
config
,
&
pNfapiMsg
->
vendor_extension
));
}
static
uint8_t
unpack_p7_lte_cell_search_indication_value
(
void
*
tlv
,
uint8_t
**
ppReadPackedMsg
,
uint8_t
*
end
,
nfapi_p7_codec_config_t
*
config
)
{
nfapi_lte_cell_search_indication_t
*
value
=
(
nfapi_lte_cell_search_indication_t
*
)
tlv
;
uint16_t
idx
=
0
;
if
(
pull16
(
ppReadPackedMsg
,
&
value
->
number_of_lte_cells_found
,
end
)
==
0
)
return
0
;
if
(
value
->
number_of_lte_cells_found
<=
NFAPI_MAX_LTE_CELLS_FOUND
)
{
for
(
idx
=
0
;
idx
<
value
->
number_of_lte_cells_found
;
++
idx
)
{
if
(
!
(
pull16
(
ppReadPackedMsg
,
&
value
->
lte_found_cells
[
idx
].
pci
,
end
)
&&
pull8
(
ppReadPackedMsg
,
&
value
->
lte_found_cells
[
idx
].
rsrp
,
end
)
&&
pull8
(
ppReadPackedMsg
,
&
value
->
lte_found_cells
[
idx
].
rsrq
,
end
)
&&
pulls16
(
ppReadPackedMsg
,
&
value
->
lte_found_cells
[
idx
].
frequency_offset
,
end
)))
return
0
;
}
}
else
{
NFAPI_TRACE
(
NFAPI_TRACE_ERROR
,
"More found LTE cells than we can decode %d
\n
"
,
value
->
number_of_lte_cells_found
);
return
0
;
}
return
1
;
}
static
uint8_t
unpack_p7_cell_search_indication
(
uint8_t
**
ppReadPackedMsg
,
uint8_t
*
end
,
void
*
msg
,
nfapi_p7_codec_config_t
*
config
)
{
vendor_nfapi_cell_search_indication_t
*
pNfapiMsg
=
(
vendor_nfapi_cell_search_indication_t
*
)
msg
;
unpack_p7_tlv_t
unpack_fns
[]
=
{
{
NFAPI_LTE_CELL_SEARCH_INDICATION_TAG
,
&
pNfapiMsg
->
lte_cell_search_indication
,
&
unpack_p7_lte_cell_search_indication_value
},
#if 0 /** FC: Lets do LTE for now */
{ NFAPI_UTRAN_CELL_SEARCH_INDICATION_TAG, &pNfapiMsg->utran_cell_search_indication, &unpack_utran_cell_search_indication_value},
{ NFAPI_GERAN_CELL_SEARCH_INDICATION_TAG, &pNfapiMsg->geran_cell_search_indication, &unpack_geran_cell_search_indication_value},
{ NFAPI_PNF_CELL_SEARCH_STATE_TAG, &pNfapiMsg->pnf_cell_search_state, &unpack_opaque_data_value},
{ NFAPI_NB_IOT_CELL_SEARCH_INDICATION_TAG, &pNfapiMsg->nb_iot_cell_search_indication, &unpack_nb_iot_cell_search_indication_value},
#endif
};
return
(
pull32
(
ppReadPackedMsg
,
&
pNfapiMsg
->
error_code
,
end
)
&&
unpack_p7_tlv_list
(
unpack_fns
,
sizeof
(
unpack_fns
)
/
sizeof
(
unpack_tlv_t
),
ppReadPackedMsg
,
end
,
config
,
&
pNfapiMsg
->
vendor_extension
));
}
// unpack length check
...
...
@@ -7875,6 +7945,14 @@ int nfapi_p7_message_unpack(void *pMessageBuf, uint32_t messageBufLen, void *pUn
// look for the specific message
switch
(
pMessageHeader
->
message_id
)
{
case
NFAPI_SUBFRAME_INDICATION
:
if
(
check_unpack_length
(
NFAPI_SUBFRAME_INDICATION
,
unpackedBufLen
)){
nfapi_subframe_indication_t
*
msg
=
(
nfapi_subframe_indication_t
*
)
pMessageHeader
;
result
=
unpack_subframe_indication
(
&
pReadPackedMessage
,
end
,
msg
,
config
);
}
else
return
-
1
;
break
;
case
NFAPI_DL_CONFIG_REQUEST
:
if
(
check_unpack_length
(
NFAPI_DL_CONFIG_REQUEST
,
unpackedBufLen
))
result
=
unpack_dl_config_request
(
&
pReadPackedMessage
,
end
,
pMessageHeader
,
config
);
...
...
@@ -8038,13 +8116,26 @@ int nfapi_p7_message_unpack(void *pMessageBuf, uint32_t messageBufLen, void *pUn
default:
if
(
pMessageHeader
->
message_id
>=
NFAPI_VENDOR_EXT_MSG_MIN
&&
pMessageHeader
->
message_id
<=
NFAPI_VENDOR_EXT_MSG_MAX
)
{
if
(
config
&&
config
->
unpack_p7_vendor_extension
)
{
result
=
(
config
->
unpack_p7_vendor_extension
)(
pMessageHeader
,
&
pReadPackedMessage
,
end
,
config
);
}
else
{
NFAPI_TRACE
(
NFAPI_TRACE_ERROR
,
"%s VE NFAPI message ID %d. No ve decoder provided
\n
"
,
__FUNCTION__
,
pMessageHeader
->
message_id
)
;
if
(
pMessageHeader
->
message_id
==
P7_CELL_SEARCH_IND
)
{
result
=
unpack_p7_cell_search_indication
(
&
pReadPackedMessage
,
end
,
pMessageHeader
,
config
);
break
;
}
}
else
{
NFAPI_TRACE
(
NFAPI_TRACE_ERROR
,
"%s NFAPI Unknown message ID %d
\n
"
,
__FUNCTION__
,
pMessageHeader
->
message_id
);
else
{
if
(
config
&&
config
->
unpack_p7_vendor_extension
)
{
result
=
(
config
->
unpack_p7_vendor_extension
)(
pMessageHeader
,
&
pReadPackedMessage
,
end
,
config
);
}
else
{
NFAPI_TRACE
(
NFAPI_TRACE_ERROR
,
"%s VE NFAPI message ID %d. No ve decoder provided
\n
"
,
__FUNCTION__
,
pMessageHeader
->
message_id
);
}
}
}
else
{
NFAPI_TRACE
(
NFAPI_TRACE_ERROR
,
"%s NFAPI Unknown message ID %d
\n
"
,
__FUNCTION__
,
pMessageHeader
->
message_id
);
}
break
;
...
...
@@ -8231,6 +8322,11 @@ int nfapi_nr_p7_message_unpack(void *pMessageBuf, uint32_t messageBufLen, void *
if
(
pMessageHeader
->
message_id
>=
NFAPI_VENDOR_EXT_MSG_MIN
&&
pMessageHeader
->
message_id
<=
NFAPI_VENDOR_EXT_MSG_MAX
)
{
if
(
pMessageHeader
->
message_id
==
P7_CELL_SEARCH_IND
)
{
result
=
unpack_p7_cell_search_indication
(
&
pReadPackedMessage
,
end
,
pMessageHeader
,
config
);
break
;
}
else
{
if
(
config
&&
config
->
unpack_p7_vendor_extension
)
{
result
=
(
config
->
unpack_p7_vendor_extension
)(
pMessageHeader
,
&
pReadPackedMessage
,
end
,
config
);
...
...
@@ -8239,6 +8335,7 @@ int nfapi_nr_p7_message_unpack(void *pMessageBuf, uint32_t messageBufLen, void *
{
NFAPI_TRACE
(
NFAPI_TRACE_ERROR
,
"%s VE NFAPI message ID %d. No ve decoder provided
\n
"
,
__FUNCTION__
,
pMessageHeader
->
message_id
);
}
}
}
else
{
...
...
nfapi/open-nFAPI/sim_common/inc/vendor_ext.h
View file @
3e79d701
...
...
@@ -27,9 +27,8 @@ typedef enum
P7_VENDOR_EXT_REQ
,
P7_VENDOR_EXT_IND
,
#if 1
/** TODO: FC Need clean up for OAI */
P7_CELL_SEARCH_IND
P7_CELL_SEARCH_IND
#endif
}
vendor_ext_message_id_e
;
typedef
struct
{
...
...
nfapi/open-nFAPI/vnf/public_inc/nfapi_vnf_interface.h
View file @
3e79d701
...
...
@@ -950,6 +950,16 @@ int nfapi_vnf_p7_add_pnf(nfapi_vnf_p7_config_t* config, const char* pnf_p7_addr,
*/
int
nfapi_vnf_p7_del_pnf
(
nfapi_vnf_p7_config_t
*
config
,
int
phy_id
);
/*! Send the SLOT_IND.request
* \param config A pointer to the vnf p7 configuration
* \param req A data structure for the decoded SLOT_IND.request.
* \return A status value. 0 equal success, -1 indicates failure
*
* The caller is responsiable for memory management of any pointers set in the req, which
* may be released after this function call has returned or at a later pointer
*/
int
nfapi_vnf_p7_nr_slot_ind
(
nfapi_vnf_p7_config_t
*
config
,
nfapi_nr_slot_indication_scf_t
*
req
);
/*! Send the DL_CONFIG.request
* \param config A pointer to the vnf p7 configuration
* \param req A data structure for the decoded DL_CONFIG.request.
...
...
nfapi/open-nFAPI/vnf/src/vnf_p7.c
View file @
3e79d701
...
...
@@ -1511,7 +1511,7 @@ void vnf_handle_nr_slot_indication(void *pRecvMsg, int recvMsgLen, vnf_p7_t* vnf
}
else
{
NFAPI_TRACE
(
NFAPI_TRACE_DEBUG
,
"%s: Handling NR SLOT Indication
\n
"
,
__FUNCTION__
);
NFAPI_TRACE
(
NFAPI_TRACE_DEBUG
,
"%s: Handling NR SLOT Indication
sfn:%d slot:%d
\n
"
,
__FUNCTION__
,
ind
.
sfn
,
ind
.
slot
);
if
(
vnf_p7
->
_public
.
nr_slot_indication
)
{
(
vnf_p7
->
_public
.
nr_slot_indication
)(
&
ind
);
...
...
@@ -1537,7 +1537,7 @@ void vnf_handle_nr_rx_data_indication(void *pRecvMsg, int recvMsgLen, vnf_p7_t*
}
else
{
NFAPI_TRACE
(
NFAPI_TRACE_INFO
,
"%s: Handling RX Indication
\n
"
,
__FUNCTION__
);
NFAPI_TRACE
(
NFAPI_TRACE_INFO
,
"%s: Handling RX Indication
sfn:%d slot:%d
\n
"
,
__FUNCTION__
,
ind
.
sfn
,
ind
.
slot
);
if
(
vnf_p7
->
_public
.
nr_rx_data_indication
)
{
(
vnf_p7
->
_public
.
nr_rx_data_indication
)(
&
ind
);
...
...
@@ -1563,7 +1563,7 @@ void vnf_handle_nr_crc_indication(void *pRecvMsg, int recvMsgLen, vnf_p7_t* vnf_
}
else
{
NFAPI_TRACE
(
NFAPI_TRACE_INFO
,
"%s: Handling CRC Indication
\n
"
,
__FUNCTION__
);
NFAPI_TRACE
(
NFAPI_TRACE_INFO
,
"%s: Handling CRC Indication
sfn:%d slot:%d
\n
"
,
__FUNCTION__
,
ind
.
sfn
,
ind
.
slot
);
if
(
vnf_p7
->
_public
.
nr_crc_indication
)
{
(
vnf_p7
->
_public
.
nr_crc_indication
)(
&
ind
);
...
...
@@ -1589,6 +1589,7 @@ void vnf_handle_nr_srs_indication(void *pRecvMsg, int recvMsgLen, vnf_p7_t* vnf_
}
else
{
NFAPI_TRACE
(
NFAPI_TRACE_INFO
,
"%s: Handling SRS Indication sfn:%d slot:%d
\n
"
,
__FUNCTION__
,
ind
.
sfn
,
ind
.
slot
);
if
(
vnf_p7
->
_public
.
nr_srs_indication
)
{
(
vnf_p7
->
_public
.
nr_srs_indication
)(
&
ind
);
...
...
@@ -1614,7 +1615,7 @@ void vnf_handle_nr_uci_indication(void *pRecvMsg, int recvMsgLen, vnf_p7_t* vnf_
}
else
{
NFAPI_TRACE
(
NFAPI_TRACE_INFO
,
"%s: Handling UCI Indication
\n
"
,
__FUNCTION__
);
NFAPI_TRACE
(
NFAPI_TRACE_INFO
,
"%s: Handling UCI Indication
sfn:%d slot:%d
\n
"
,
__FUNCTION__
,
ind
.
sfn
,
ind
.
slot
);
if
(
vnf_p7
->
_public
.
nr_uci_indication
)
{
(
vnf_p7
->
_public
.
nr_uci_indication
)(
&
ind
);
...
...
@@ -1640,7 +1641,7 @@ void vnf_handle_nr_rach_indication(void *pRecvMsg, int recvMsgLen, vnf_p7_t* vnf
}
else
{
NFAPI_TRACE
(
NFAPI_TRACE_INFO
,
"%s: Handling RACH Indication
\n
"
,
__FUNCTION__
);
NFAPI_TRACE
(
NFAPI_TRACE_INFO
,
"%s: Handling RACH Indication
sfn:%d slot:%d
\n
"
,
__FUNCTION__
,
ind
.
sfn
,
ind
.
slot
);
if
(
vnf_p7
->
_public
.
nr_rach_indication
)
{
(
vnf_p7
->
_public
.
nr_rach_indication
)(
&
ind
);
...
...
nfapi/open-nFAPI/vnf/src/vnf_p7_interface.c
View file @
3e79d701
...
...
@@ -668,6 +668,16 @@ int nfapi_vnf_p7_del_pnf(nfapi_vnf_p7_config_t* config, int phy_id)
return
0
;
}
int
nfapi_vnf_p7_nr_slot_ind
(
nfapi_vnf_p7_config_t
*
config
,
nfapi_nr_slot_indication_scf_t
*
req
)
{
if
(
config
==
0
||
req
==
0
)
return
-
1
;
vnf_p7_t
*
vnf_p7
=
(
vnf_p7_t
*
)
config
;
return
vnf_nr_p7_pack_and_send_p7_msg
(
vnf_p7
,
&
req
->
header
);
}
int
nfapi_vnf_p7_dl_config_req
(
nfapi_vnf_p7_config_t
*
config
,
nfapi_dl_config_request_t
*
req
)
{
//NFAPI_TRACE(NFAPI_TRACE_INFO, "%s(config:%p req:%p)\n", __FUNCTION__, config, req);
...
...
openair2/ENB_APP/enb_config.c
View file @
3e79d701
...
...
@@ -145,7 +145,7 @@ void RCconfig_L1(void) {
// need to create some structures for VNF
j
=
0
;
RC
.
nb_L1_CC
=
malloc
((
1
+
RC
.
nb_L1_inst
)
*
sizeof
(
int
));
RC
.
nb_L1_CC
[
j
]
=
MAX_NUM_CCs
;
RC
.
nb_L1_CC
[
j
]
=
MAX_NUM_CCs
;
//MultiCell: Initialization of nb_L1_CC with maximum number of CC
if
(
RC
.
eNB
[
j
]
==
NULL
)
{
RC
.
eNB
[
j
]
=
(
PHY_VARS_eNB
**
)
malloc
((
1
+
MAX_NUM_CCs
)
*
sizeof
(
PHY_VARS_eNB
**
));
...
...
openair3/SS/ss_eNB_port_man_task.c
View file @
3e79d701
...
...
@@ -334,6 +334,7 @@ static inline void ss_eNB_read_from_socket(acpCtx_t ctx)
unsigned
char
*
buffer
=
(
unsigned
char
*
)
acpMalloc
(
size
);
assert
(
buffer
);
LOG_I
(
ENB_SS
,
"[SS-PORTMAN] Entry in fxn:%s
\n
"
,
__FUNCTION__
);
int
userId
=
acpRecvMsg
(
ctx
,
&
msgSize
,
buffer
);
// Error handling
...
...
@@ -408,6 +409,7 @@ static inline void ss_eNB_read_from_socket(acpCtx_t ctx)
}
}
}
LOG_I
(
ENB_SS
,
"[SS-PORTMAN] Exit from fxn:%s
\n
"
,
__FUNCTION__
);
acpSysProcessFreeSrv
(
req
);
return
;
}
...
...
@@ -425,7 +427,7 @@ void *ss_port_man_process_itti_msg(void *notUsed)
{
MessageDef
*
received_msg
=
NULL
;
int
result
;
LOG_I
(
ENB_SS
,
"[SS-PORTMAN] Entry in fxn:%s
\n
"
,
__FUNCTION__
);
itti_poll_msg
(
TASK_SS_PORTMAN
,
&
received_msg
);
/* Check if there is a packet to handle */
...
...
@@ -468,7 +470,7 @@ void *ss_port_man_process_itti_msg(void *notUsed)
}
ss_eNB_read_from_socket
(
ctx_g
);
LOG_I
(
ENB_SS
,
"[SS-PORTMAN] Exit from fxn:%s
\n
"
,
__FUNCTION__
);
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