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
9a4a1f60
Commit
9a4a1f60
authored
Aug 04, 2020
by
Aniq
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added UL_DCI packing and unpacking fns
parent
2ccabd54
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
113 additions
and
10 deletions
+113
-10
nfapi/README.md
nfapi/README.md
+14
-9
nfapi/open-nFAPI/pnf/src/pnf_p7.c
nfapi/open-nFAPI/pnf/src/pnf_p7.c
+99
-1
No files found.
nfapi/README.md
View file @
9a4a1f60
...
...
@@ -28,14 +28,14 @@ sudo <oai_codebase>/cmake_targets/ran_build/build/nr-softmodem -O <oai_codebase>
*
In the switch case, change the labels as well as the pack functions:
*
`pack_dl_config_request`
becomes
`pack_dl_tti_request`
[x]
*
`pack_ul_config_request`
becomes
`pack_ul_tti_request`
[x]
*
`pack_hi_dci0_request`
becomes
`pack_ul_dci_request`
*
`pack_hi_dci0_request`
becomes
`pack_ul_dci_request`
[x]
*
`pack_tx_request`
becomes
`pack_tx_data_request`
[x]
### Task-B [unpacking]
*
Modify
`nfapi_p7_message_unpack()`
in
`nfapi_p7.c`
*
`unpack_dl_tti_request`
[x]
*
`unpack_ul_tti_request`
[x]
*
`unpack_ul_dci_request`
*
`unpack_ul_dci_request`
[x]
*
`unpack_tx_data_request`
[x]
*
Similarly change all the
`unpack`
functions within the switch-case block.
...
...
@@ -44,22 +44,27 @@ sudo <oai_codebase>/cmake_targets/ran_build/build/nr-softmodem -O <oai_codebase>
*
this is where the unpack functions are called
*
`dl_tti_request`
[x]
*
`ul_tti_request`
[x]
*
`ul_dci_request`
*
`ul_dci_request`
[x]
*
`tx_data_request`
[x]
*
`nfapi_p7_message_unpack()`
is called in
`pnf_handle_dl_config_request()`
in pnf_p7.c, so we need to add
*
`pnf_handle_dl_tti_request`
*
`pnf_handle_ul_tti_request`
*
`pnf_handle_ul_dci_request`
*
`pnf_handle_tx_data_request`
to handle DL P7 messages at pnf
### Task-C
*
Write the
`ul_tti`
alternative for
`nfapi_vnf_p7_ul_config_req()`
in
`vnf_p7_interface.c`
and other such functions.
*
`dl_tti`
is present as
`nr_dl_config`
[x]
*
`ul_tti`
[x]
*
`ul_dci`
*
`ul_tti`
[x]
*
`ul_dci`
[x]
*
`tx_data`
[x]
*
Resolve the hard-coded areas in source code. [
`HIGH-PRIORITY`
] [x]
*
Write the
`ul_tti`
equivalent for
`oai_nfapi_dl_config_req`
in
`nfapi_vnf.c`
and other such functions.
*
`dl_tti`
is present as
`nr_dl_config`
[x]
*
`ul_tti`
is present as
`oai_nfapi_ul_tti_req()`
[x]
*
`ul_dci`
*
`dl_tti`
is present as
`nr_dl_config`
[x]
*
`ul_tti`
is present as
`oai_nfapi_ul_tti_req()`
[x]
*
`ul_dci`
is present as
`oai_nfapi_ul_dci_req()`
[x]
*
`tx_data`
is present as
`oai_nfapi_tx_data_req()`
[x]
*
Check if
`nr_schedule_response()`
needs to be upgraded [x]
...
...
nfapi/open-nFAPI/pnf/src/pnf_p7.c
View file @
9a4a1f60
...
...
@@ -141,6 +141,12 @@ void pnf_p7_free(pnf_p7_t* pnf_p7, void* ptr)
}
// todo : for now these just malloc/free need to move to a memory cache
nfapi_nr_dl_tti_request_t
*
allocate_nfapi_dl_tti_request
(
pnf_p7_t
*
pnf_p7
)
{
void
*
ptr
=
pnf_p7_malloc
(
pnf_p7
,
sizeof
(
nfapi_nr_dl_tti_request_t
));
//printf("%s() ptr:%p\n", __FUNCTION__, ptr);
return
ptr
;
}
nfapi_dl_config_request_t
*
allocate_nfapi_dl_config_request
(
pnf_p7_t
*
pnf_p7
)
{
void
*
ptr
=
pnf_p7_malloc
(
pnf_p7
,
sizeof
(
nfapi_dl_config_request_t
));
...
...
@@ -1350,7 +1356,99 @@ uint8_t is_p7_request_in_window(uint16_t sfnsf, const char* name, pnf_p7_t* phy)
// P7 messages
//
#if 0
void pnf_handle_dl_tti_request(void* pRecvMsg, int recvMsgLen, pnf_p7_t* pnf_p7)
{
//NFAPI_TRACE(NFAPI_TRACE_INFO, "DL_CONFIG.req Received\n");
nfapi_nr_dl_tti_request_t* req = allocate_nfapi_dl_tti_request(pnf_p7);
if(req == NULL)
{
NFAPI_TRACE(NFAPI_TRACE_INFO, "%s failed to alloced nfapi_dl_tti_request structure\n");
return;
}
int unpack_result = nfapi_p7_message_unpack(pRecvMsg, recvMsgLen, req, sizeof(nfapi_nr_dl_tti_request_t), &(pnf_p7->_public.codec_config));
if(unpack_result == 0)
{
if(pthread_mutex_lock(&(pnf_p7->mutex)) != 0)
{
NFAPI_TRACE(NFAPI_TRACE_INFO, "failed to lock mutex\n");
return;
}
#if 0
if (
0 &&
(NFAPI_SFNSF2DEC(req->sfn_sf) % 100 ==0 ||
NFAPI_SFNSF2DEC(req->sfn_sf) % 105 ==0
)
)
NFAPI_TRACE(NFAPI_TRACE_INFO, "DL_CONFIG.req sfn_sf:%d pdcch:%u dci:%u pdu:%u pdsch_rnti:%u pcfich:%u\n",
NFAPI_SFNSF2DEC(req->sfn_sf),
req->dl_config_request_body.number_pdcch_ofdm_symbols,
req->dl_config_request_body.number_dci,
req->dl_config_request_body.number_pdu,
req->dl_config_request_body.number_pdsch_rnti,
req->dl_config_request_body.transmission_power_pcfich
);
#endif
if(is_p7_request_in_window(req->sfn_sf, "dl_config_request", pnf_p7))
{
uint32_t sfn_sf_dec = NFAPI_SFNSF2DEC(req->sfn_sf);
uint8_t buffer_index = sfn_sf_dec % pnf_p7->_public.subframe_buffer_size;
struct timespec t;
clock_gettime(CLOCK_MONOTONIC, &t);
NFAPI_TRACE(NFAPI_TRACE_INFO,"%s() %ld.%09ld POPULATE DL_CONFIG_REQ sfn_sf:%d buffer_index:%d\n", __FUNCTION__, t.tv_sec, t.tv_nsec, sfn_sf_dec, buffer_index);
// if there is already an dl_config_req make sure we free it.
if(pnf_p7->subframe_buffer[buffer_index].dl_config_req != 0)
{
NFAPI_TRACE(NFAPI_TRACE_NOTE, "%s() is_p7_request_in_window()=TRUE buffer_index occupied - free it first sfn_sf:%d buffer_index:%d\n", __FUNCTION__, NFAPI_SFNSF2DEC(req->sfn_sf), buffer_index);
//NFAPI_TRACE(NFAPI_TRACE_NOTE, "[%d] Freeing dl_config_req at index %d (%d/%d)",
// pMyPhyInfo->sfnSf, bufferIdx,
// SFNSF2SFN(dreq->sfn_sf), SFNSF2SF(dreq->sfn_sf));
deallocate_nfapi_dl_config_request(pnf_p7->subframe_buffer[buffer_index].dl_config_req, pnf_p7);
}
// saving dl_config_request in subframe buffer
pnf_p7->subframe_buffer[buffer_index].sfn_sf = req->sfn_sf;
pnf_p7->subframe_buffer[buffer_index].dl_config_req = req;
pnf_p7->stats.dl_conf_ontime++;
}
else
{
//NFAPI_TRACE(NFAPI_TRACE_NOTE, "NOT storing dl_config_req SFN/SF %d\n", req->sfn_sf);
deallocate_nfapi_dl_config_request(req, pnf_p7);
if(pnf_p7->_public.timing_info_mode_aperiodic)
{
pnf_p7->timing_info_aperiodic_send = 1;
}
pnf_p7->stats.dl_conf_late++;
}
if(pthread_mutex_unlock(&(pnf_p7->mutex)) != 0)
{
NFAPI_TRACE(NFAPI_TRACE_INFO, "failed to unlock mutex\n");
return;
}
}
else
{
NFAPI_TRACE(NFAPI_TRACE_ERROR, "Failed to unpack dl_config_req");
deallocate_nfapi_dl_config_request(req, pnf_p7);
}
}
#endif
void
pnf_handle_dl_config_request
(
void
*
pRecvMsg
,
int
recvMsgLen
,
pnf_p7_t
*
pnf_p7
)
{
//NFAPI_TRACE(NFAPI_TRACE_INFO, "DL_CONFIG.req Received\n");
...
...
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