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
eb0cb9b0
Commit
eb0cb9b0
authored
Feb 17, 2024
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Separate dlsch_fill into DL_tti_req and TX_req part
parent
7fa69c51
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
26 additions
and
59 deletions
+26
-59
nfapi/oai_integration/nfapi_pnf.c
nfapi/oai_integration/nfapi_pnf.c
+3
-2
openair1/PHY/NR_TRANSPORT/nr_dlsch.h
openair1/PHY/NR_TRANSPORT/nr_dlsch.h
+2
-3
openair1/PHY/NR_TRANSPORT/nr_dlsch_tools.c
openair1/PHY/NR_TRANSPORT/nr_dlsch_tools.c
+17
-1
openair1/SCHED_NR/fapi_nr_l1.c
openair1/SCHED_NR/fapi_nr_l1.c
+4
-53
No files found.
nfapi/oai_integration/nfapi_pnf.c
View file @
eb0cb9b0
...
...
@@ -1226,13 +1226,14 @@ int pnf_phy_dl_tti_req(gNB_L1_rxtx_proc_t *proc, nfapi_pnf_p7_config_t *pnf_p7,
nfapi_nr_pdu_t
*
tx_data
=
tx_data_request
[
sfn
][
slot
][
rel15_pdu
->
pduIndex
];
if
(
tx_data
!=
NULL
)
{
uint8_t
*
dlsch_sdu
=
(
uint8_t
*
)
tx_data
->
TLVs
[
0
].
value
.
direct
;
//
uint8_t *dlsch_sdu = (uint8_t *)tx_data->TLVs[0].value.direct;
//NFAPI_TRACE(NFAPI_TRACE_INFO, "%s() DLSCH:pdu_index:%d handle_nfapi_dlsch_pdu(eNB, proc_rxtx, dlsch_pdu, transport_blocks:%d sdu:%p) eNB->pdcch_vars[proc->subframe_tx & 1].num_pdcch_symbols:%d\n", __FUNCTION__, rel8_pdu->pdu_index, rel8_pdu->transport_blocks, dlsch_sdu, eNB->pdcch_vars[proc->subframe_tx & 1].num_pdcch_symbols);
AssertFatal
(
msgTx
->
num_pdsch_slot
<
gNB
->
max_nb_pdsch
,
"Number of PDSCH PDUs %d exceeded the limit %d
\n
"
,
msgTx
->
num_pdsch_slot
,
gNB
->
max_nb_pdsch
);
handle_nr_nfapi_pdsch_pdu
(
msgTx
,
pdsch_pdu
,
dlsch_sdu
);
AssertFatal
(
false
,
"not implemented
\n
"
);
//handle_nr_nfapi_pdsch_pdu(msgTx, pdsch_pdu, dlsch_sdu);
}
else
{
NFAPI_TRACE
(
NFAPI_TRACE_ERROR
,
"%s() DLSCH NULL TX PDU SFN/SF:%d PDU_INDEX:%d
\n
"
,
__FUNCTION__
,
NFAPI_SFNSLOT2DEC
(
sfn
,
slot
),
rel15_pdu
->
pduIndex
);
...
...
openair1/PHY/NR_TRANSPORT/nr_dlsch.h
View file @
eb0cb9b0
...
...
@@ -42,9 +42,8 @@ void nr_pdsch_codeword_scrambling(uint8_t *in,
uint32_t
n_RNTI
,
uint32_t
*
out
);
void
nr_fill_dlsch
(
processingData_L1tx_t
*
msgTx
,
nfapi_nr_dl_tti_pdsch_pdu
*
pdsch_pdu
,
unsigned
char
*
sdu
);
void
nr_fill_dlsch_dl_tti_req
(
processingData_L1tx_t
*
msgTx
,
nfapi_nr_dl_tti_pdsch_pdu
*
pdsch_pdu
);
void
nr_fill_dlsch_tx_req
(
processingData_L1tx_t
*
msgTx
,
int
idx
,
uint8_t
*
sdu
);
void
nr_generate_pdsch
(
processingData_L1tx_t
*
msgTx
,
int
frame
,
...
...
openair1/PHY/NR_TRANSPORT/nr_dlsch_tools.c
View file @
eb0cb9b0
...
...
@@ -44,13 +44,29 @@ void nr_emulate_dlsch_payload(uint8_t* pdu, uint16_t size) {
*
(
pdu
+
i
)
=
(
uint8_t
)
rand
();
}
void
nr_fill_dlsch
(
processingData_L1tx_t
*
msgTx
,
nfapi_nr_dl_tti_pdsch_pdu
*
pdsch_pdu
,
uint8_t
*
s
du
)
void
nr_fill_dlsch
_dl_tti_req
(
processingData_L1tx_t
*
msgTx
,
nfapi_nr_dl_tti_pdsch_pdu
*
pdsch_p
du
)
{
NR_gNB_DLSCH_t
*
dlsch
=
&
msgTx
->
dlsch
[
msgTx
->
num_pdsch_slot
][
0
];
NR_DL_gNB_HARQ_t
*
harq
=
&
dlsch
->
harq_process
;
/// DLSCH struct
memcpy
((
void
*
)
&
harq
->
pdsch_pdu
,
(
void
*
)
pdsch_pdu
,
sizeof
(
nfapi_nr_dl_tti_pdsch_pdu
));
AssertFatal
(
msgTx
->
num_pdsch_slot
==
pdsch_pdu
->
pdsch_pdu_rel15
.
pduIndex
,
"PDSCH PDU index %d does not match msgTx index %d
\n
"
,
pdsch_pdu
->
pdsch_pdu_rel15
.
pduIndex
,
msgTx
->
num_pdsch_slot
);
msgTx
->
num_pdsch_slot
++
;
harq
->
pdu
=
NULL
;
}
void
nr_fill_dlsch_tx_req
(
processingData_L1tx_t
*
msgTx
,
int
idx
,
uint8_t
*
sdu
)
{
AssertFatal
(
sdu
!=
NULL
,
"sdu is null
\n
"
);
/* not sure if FAPI could transmit DL_TTI_req and TX_req in different orders.
* for the moment, assume they are in the same order (and check!) */
NR_gNB_DLSCH_t
*
dlsch
=
&
msgTx
->
dlsch
[
idx
][
0
];
NR_DL_gNB_HARQ_t
*
harq
=
&
dlsch
->
harq_process
;
nfapi_nr_dl_tti_pdsch_pdu
*
pdsch
=
&
harq
->
pdsch_pdu
;
AssertFatal
(
pdsch
->
pdsch_pdu_rel15
.
pduIndex
==
idx
,
"PDSCH PDU index %d does not match %d
\n
"
,
pdsch
->
pdsch_pdu_rel15
.
pduIndex
,
idx
);
harq
->
pdu
=
sdu
;
}
openair1/SCHED_NR/fapi_nr_l1.c
View file @
eb0cb9b0
...
...
@@ -64,44 +64,6 @@ void handle_nr_nfapi_ssb_pdu(processingData_L1tx_t *msgTx,int frame,int slot,
}
}
/*void handle_nr_nfapi_pdsch_pdu(PHY_VARS_gNB *gNB,int frame,int subframe,gNB_L1_rxtx_proc_t *proc,
uint8_t codeword_index,
uint8_t *sdu)
{
int UE_id = 0; //Hardcode UE_id for now
int harq_pid;
NR_gNB_DLSCH_t *dlsch0=NULL, *dlsch1=NULL;
NR_DL_gNB_HARQ_t *dlsch0_harq=NULL,*dlsch1_harq=NULL;
// Based on nr_fill_dci_and_dlsch only gNB->dlsch[0][0] gets filled now. So maybe we do not need dlsch1.
dlsch0 = gNB->dlsch[UE_id][0];
dlsch1 = gNB->dlsch[UE_id][1];
harq_pid = dlsch0->harq_ids[subframe];
dlsch0_harq = dlsch0->harq_processes[harq_pid];
dlsch1_harq = dlsch1->harq_processes[harq_pid];
//if (dlsch0_harq->round==0) { //get pointer to SDU if this a new SDU
if(sdu == NULL) {
LOG_E(PHY,"NFAPI: SFN/SF:%04d%d proc:TX:[frame %d subframe %d]: programming dlsch for round 0 \n",
frame,subframe,
proc->frame_tx,proc->slot_tx);
return;
}
//AssertFatal(sdu!=NULL,"NFAPI: SFN/SF:%04d%d proc:TX:[frame %d subframe %d]: programming dlsch for round 0, rnti %x, UE_id %d, harq_pid %d : sdu is null for pdu_index %d dlsch0_harq[round:%d SFN/SF:%d%d pdu:%p mcs:%d ndi:%d pdschstart:%d]\n",
// frame,subframe,
// proc->frame_tx,proc->subframe_tx,rel8->rnti,UE_id,harq_pid,
// dl_tti_pdu->pdsch_pdu.pdsch_pdu_rel8.pdu_index,dlsch0_harq->round,dlsch0_harq->frame,dlsch0_harq->subframe,dlsch0_harq->pdu,dlsch0_harq->mcs,dlsch0_harq->ndi,dlsch0_harq->pdsch_start);
if (codeword_index == 0) dlsch0_harq->pdu = sdu;
else dlsch1_harq->pdu = sdu;
LOG_I(PHY, "SFN/SF: %d/%d DLSCH PDU filled \n",frame, subframe);
// }
}*/
void
handle_nfapi_nr_csirs_pdu
(
processingData_L1tx_t
*
msgTx
,
int
frame
,
int
slot
,
nfapi_nr_dl_tti_csi_rs_pdu
*
csirs_pdu
)
{
int
found
=
0
;
...
...
@@ -120,15 +82,6 @@ void handle_nfapi_nr_csirs_pdu(processingData_L1tx_t *msgTx, int frame, int slot
LOG_E
(
MAC
,
"CSI-RS list is full
\n
"
);
}
void
handle_nr_nfapi_pdsch_pdu
(
processingData_L1tx_t
*
msgTx
,
nfapi_nr_dl_tti_pdsch_pdu
*
pdsch_pdu
,
uint8_t
*
sdu
)
{
nr_fill_dlsch
(
msgTx
,
pdsch_pdu
,
sdu
);
}
void
nr_schedule_response
(
NR_Sched_Rsp_t
*
Sched_INFO
)
{
// copy data from L2 interface into L1 structures
...
...
@@ -153,7 +106,6 @@ void nr_schedule_response(NR_Sched_Rsp_t *Sched_INFO)
uint8_t
number_dl_pdu
=
(
DL_req
==
NULL
)
?
0
:
DL_req
->
dl_tti_request_body
.
nPDUs
;
uint8_t
number_ul_dci_pdu
=
(
UL_dci_req
==
NULL
)
?
0
:
UL_dci_req
->
numPdus
;
uint8_t
number_ul_tti_pdu
=
(
UL_tti_req
==
NULL
)
?
0
:
UL_tti_req
->
n_pdus
;
uint8_t
number_tx_data_pdu
=
(
TX_req
==
NULL
)
?
0
:
TX_req
->
Number_of_PDUs
;
DevAssert
(
NFAPI_MODE
==
NFAPI_MONOLITHIC
);
...
...
@@ -204,6 +156,8 @@ void nr_schedule_response(NR_Sched_Rsp_t *Sched_INFO)
slot
,
DL_req
->
SFN
,
DL_req
->
Slot
);
nr_fill_dlsch_dl_tti_req
(
msgTx
,
&
dl_tti_pdu
->
pdsch_pdu
);
nfapi_nr_dl_tti_pdsch_pdu_rel15_t
*
pdsch_pdu_rel15
=
&
dl_tti_pdu
->
pdsch_pdu
.
pdsch_pdu_rel15
;
uint16_t
pduIndex
=
pdsch_pdu_rel15
->
pduIndex
;
AssertFatal
(
TX_req
->
pdu_list
[
pduIndex
].
num_TLV
==
1
,
...
...
@@ -211,11 +165,8 @@ void nr_schedule_response(NR_Sched_Rsp_t *Sched_INFO)
pduIndex
,
TX_req
->
pdu_list
[
pduIndex
].
num_TLV
);
uint8_t
*
sdu
=
(
uint8_t
*
)
TX_req
->
pdu_list
[
pduIndex
].
TLVs
[
0
].
value
.
direct
;
AssertFatal
(
msgTx
->
num_pdsch_slot
<
gNB
->
max_nb_pdsch
,
"Number of PDSCH PDUs %d exceeded the limit %d
\n
"
,
msgTx
->
num_pdsch_slot
,
gNB
->
max_nb_pdsch
);
handle_nr_nfapi_pdsch_pdu
(
msgTx
,
&
dl_tti_pdu
->
pdsch_pdu
,
sdu
);
nr_fill_dlsch_tx_req
(
msgTx
,
pduIndex
,
sdu
);
}
}
...
...
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