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
Michael Black
OpenXG-RAN
Commits
d6dedc1f
Commit
d6dedc1f
authored
3 years ago
by
francescomani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
handling multiple pdcch pdu at fapi and phy
parent
82dc3430
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
41 additions
and
50 deletions
+41
-50
nfapi/oai_integration/nfapi_pnf.c
nfapi/oai_integration/nfapi_pnf.c
+8
-8
nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface_scf.h
nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface_scf.h
+1
-4
openair1/PHY/NR_TRANSPORT/nr_dci.c
openair1/PHY/NR_TRANSPORT/nr_dci.c
+9
-13
openair1/PHY/NR_TRANSPORT/nr_dci.h
openair1/PHY/NR_TRANSPORT/nr_dci.h
+5
-6
openair1/PHY/defs_gNB.h
openair1/PHY/defs_gNB.h
+4
-2
openair1/SCHED_NR/fapi_nr_l1.c
openair1/SCHED_NR/fapi_nr_l1.c
+8
-9
openair1/SCHED_NR/phy_procedures_nr_gNB.c
openair1/SCHED_NR/phy_procedures_nr_gNB.c
+5
-7
openair1/SIMULATION/NR_PHY/dlsim.c
openair1/SIMULATION/NR_PHY/dlsim.c
+1
-1
No files found.
nfapi/oai_integration/nfapi_pnf.c
View file @
d6dedc1f
...
...
@@ -1132,8 +1132,8 @@ notifiedFIFO_elt_t *l1tx_message_extract(PHY_VARS_gNB *gNB, int frame, int slot)
if
(
freeRes
)
{
msgTx
=
(
processingData_L1tx_t
*
)
NotifiedFifoData
(
res
);
msgTx
->
num_pdsch_slot
=
0
;
msgTx
->
pdcch_pdu
.
pdcch_pdu_rel15
.
numDlDci
=
0
;
msgTx
->
ul_pdcch_pdu
.
pdcch_pdu
.
pdcch_pdu_rel15
.
numDlDci
=
0
;
msgTx
->
num_dl_pdcch
=
0
;
msgTx
->
num_ul_pdcch
=
0
;
msgTx
->
slot
=
slot
;
msgTx
->
frame
=
frame
;
return
freeRes
;
...
...
@@ -1158,10 +1158,10 @@ int pnf_phy_ul_dci_req(gNB_L1_rxtx_proc_t *proc, nfapi_pnf_p7_config_t *pnf_p7,
proc
=
&
gNB
->
proc
.
L1_proc
;
if
(
req
->
numPdus
>
0
)
{
if
(
req
->
ul_dci_pdu_list
[
req
->
numPdus
-
1
].
PDUType
==
0
)
{
// copy only the last PDU (PHY can have only one UL PDCCH pdu)
msgTx
->
ul_pdcch_pdu
=
req
->
ul_dci_pdu_list
[
req
->
numPdus
-
1
];
// copy the last pdu
}
else
{
for
(
int
i
=
0
;
i
<
req
->
numPdus
;
i
++
)
{
if
(
req
->
ul_dci_pdu_list
[
i
].
PDUType
==
0
)
// only possible value 0: PDCCH PDU
msgTx
->
ul_pdcch_pdu
[
i
]
=
req
->
ul_dci_pdu_list
[
i
];
else
LOG_E
(
PHY
,
"[PNF] UL_DCI_REQ sfn_slot:%d PDU[%d] - unknown pdu type:%d
\n
"
,
NFAPI_SFNSLOT2DEC
(
req
->
SFN
,
req
->
Slot
),
req
->
numPdus
-
1
,
req
->
ul_dci_pdu_list
[
req
->
numPdus
-
1
].
PDUType
);
}
}
...
...
@@ -1244,7 +1244,7 @@ int pnf_phy_dl_tti_req(gNB_L1_rxtx_proc_t *proc, nfapi_pnf_p7_config_t *pnf_p7,
if
(
dl_tti_pdu_list
[
i
].
PDUType
==
NFAPI_NR_DL_TTI_PDCCH_PDU_TYPE
)
{
// we trust the scheduler sends only one PDCCH PDU per slot
msgTx
->
pdcch_pdu
=
dl_tti_pdu_list
[
i
].
pdcch_pdu
;
// fills the last received PDCCH PDU
msgTx
->
pdcch_pdu
[
i
]
=
dl_tti_pdu_list
[
i
].
pdcch_pdu
;
// fills the last received PDCCH PDU
}
else
if
(
dl_tti_pdu_list
[
i
].
PDUType
==
NFAPI_NR_DL_TTI_SSB_PDU_TYPE
)
{
//NFAPI_TRACE(NFAPI_TRACE_INFO, "%s() PDU:%d BCH: pdu_index:%u pdu_length:%d sdu_length:%d BCH_SDU:%x,%x,%x\n", __FUNCTION__, i, pdu_index, bch_pdu->bch_pdu_rel8.length, tx_request_pdu[sfn][sf][pdu_index]->segments[0].segment_length, sdu[0], sdu[1], sdu[2]);
...
...
This diff is collapsed.
Click to expand it.
nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface_scf.h
View file @
d6dedc1f
...
...
@@ -1400,9 +1400,6 @@ typedef struct
} nfapi_nr_ul_dci_request_t;
*/
// normally one PDU per coreset per BWP
#define NFAPI_NR_MAX_UL_DCI_PDUS 4
typedef
struct
{
/// only possible value 0: PDCCH PDU
uint16_t
PDUType
;
...
...
@@ -1416,7 +1413,7 @@ typedef struct {
uint16_t
SFN
;
uint16_t
Slot
;
uint8_t
numPdus
;
nfapi_nr_ul_dci_request_pdus_t
ul_dci_pdu_list
[
NFAPI_NR_MAX_
UL_DCI_PDU
S
];
nfapi_nr_ul_dci_request_pdus_t
ul_dci_pdu_list
[
NFAPI_NR_MAX_
NB_CORESET
S
];
}
nfapi_nr_ul_dci_request_t
;
//3.4.5 slot_errors
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/NR_TRANSPORT/nr_dci.c
View file @
d6dedc1f
...
...
@@ -251,20 +251,16 @@ void nr_generate_dci(PHY_VARS_gNB *gNB,
}
void
nr_generate_dci_top
(
PHY_VARS_gNB
*
gNB
,
nfapi_nr_dl_tti_pdcch_pdu
*
pdcch_pdu
,
nfapi_nr_dl_tti_pdcch_pdu
*
ul_dci_pdu
,
processingData_L1tx_t
*
msgTx
,
uint32_t
**
gold_pdcch_dmrs
,
int32_t
*
txdataF
,
int16_t
amp
,
NR_DL_FRAME_PARMS
*
frame_parms
)
{
AssertFatal
(
pdcch_pdu
!=
NULL
||
ul_dci_pdu
!=
NULL
,
"At least one pointer has to be !NULL
\n
"
);
for
(
int
i
=
0
;
i
<
msgTx
->
num_ul_pdcch
;
i
++
)
nr_generate_dci
(
gNB
,
&
msgTx
->
ul_pdcch_pdu
[
i
].
pdcch_pdu
.
pdcch_pdu_rel15
,
gold_pdcch_dmrs
,
txdataF
,
amp
,
frame_parms
);
for
(
int
i
=
0
;
i
<
msgTx
->
num_dl_pdcch
;
i
++
)
nr_generate_dci
(
gNB
,
&
msgTx
->
pdcch_pdu
[
i
].
pdcch_pdu_rel15
,
gold_pdcch_dmrs
,
txdataF
,
amp
,
frame_parms
);
if
(
pdcch_pdu
)
{
nr_generate_dci
(
gNB
,
&
pdcch_pdu
->
pdcch_pdu_rel15
,
gold_pdcch_dmrs
,
txdataF
,
amp
,
frame_parms
);
}
if
(
ul_dci_pdu
)
{
nr_generate_dci
(
gNB
,
&
ul_dci_pdu
->
pdcch_pdu_rel15
,
gold_pdcch_dmrs
,
txdataF
,
amp
,
frame_parms
);
}
}
This diff is collapsed.
Click to expand it.
openair1/PHY/NR_TRANSPORT/nr_dci.h
View file @
d6dedc1f
...
...
@@ -30,8 +30,7 @@ uint16_t nr_get_dci_size(nfapi_nr_dci_format_e format,
uint16_t
N_RB
);
void
nr_generate_dci_top
(
PHY_VARS_gNB
*
gNB
,
nfapi_nr_dl_tti_pdcch_pdu
*
pdcch_pdu
,
nfapi_nr_dl_tti_pdcch_pdu
*
ul_pdcch_pdu
,
processingData_L1tx_t
*
msgTx
,
uint32_t
**
gold_pdcch_dmrs
,
int32_t
*
txdataF
,
int16_t
amp
,
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/defs_gNB.h
View file @
d6dedc1f
...
...
@@ -962,12 +962,14 @@ typedef struct processingData_L1tx {
int
slot
;
openair0_timestamp
timestamp_tx
;
PHY_VARS_gNB
*
gNB
;
nfapi_nr_dl_tti_pdcch_pdu
pdcch_pdu
;
nfapi_nr_ul_dci_request_pdus_t
ul_pdcch_pdu
;
nfapi_nr_dl_tti_pdcch_pdu
pdcch_pdu
[
NFAPI_NR_MAX_NB_CORESETS
]
;
nfapi_nr_ul_dci_request_pdus_t
ul_pdcch_pdu
[
NFAPI_NR_MAX_NB_CORESETS
]
;
NR_gNB_CSIRS_t
csirs_pdu
[
NUMBER_OF_NR_CSIRS_MAX
];
NR_gNB_DLSCH_t
*
dlsch
[
NUMBER_OF_NR_DLSCH_MAX
][
2
];
NR_gNB_SSB_t
ssb
[
64
];
uint16_t
num_pdsch_slot
;
int
num_dl_pdcch
;
int
num_ul_pdcch
;
time_stats_t
phy_proc_tx
;
}
processingData_L1tx_t
;
...
...
This diff is collapsed.
Click to expand it.
openair1/SCHED_NR/fapi_nr_l1.c
View file @
d6dedc1f
...
...
@@ -166,10 +166,9 @@ void nr_schedule_response(NR_Sched_Rsp_t *Sched_INFO){
TX_req
->
SFN
,
TX_req
->
Slot
,
TX_req
->
Number_of_PDUs
,
number_ul_dci_pdu
,
number_ul_tti_pdu
);
int
pdcch_received
=
0
;
msgTx
->
num_pdsch_slot
=
0
;
msgTx
->
pdcch_pdu
.
pdcch_pdu_rel15
.
numDlDci
=
0
;
msgTx
->
ul_pdcch_pdu
.
pdcch_pdu
.
pdcch_pdu_rel15
.
numDlDci
=
0
;
msgTx
->
num_dl_pdcch
=
0
;
msgTx
->
num_ul_pdcch
=
number_ul_dci_pdu
;
msgTx
->
slot
=
slot
;
msgTx
->
frame
=
frame
;
...
...
@@ -183,10 +182,9 @@ void nr_schedule_response(NR_Sched_Rsp_t *Sched_INFO){
break
;
case
NFAPI_NR_DL_TTI_PDCCH_PDU_TYPE
:
AssertFatal
(
pdcch_received
==
0
,
"pdcch_received is not 0, we can only handle one PDCCH PDU per slot
\n
"
);
msgTx
->
pdcch_pdu
=
dl_tti_pdu
->
pdcch_pdu
;
pdcch_received
=
1
;
LOG_D
(
PHY
,
"frame %d, slot %d, Got NFAPI_NR_DL_TTI_PDCCH_PDU_TYPE for %d.%d
\n
"
,
frame
,
slot
,
DL_req
->
SFN
,
DL_req
->
Slot
);
msgTx
->
pdcch_pdu
[
msgTx
->
num_dl_pdcch
]
=
dl_tti_pdu
->
pdcch_pdu
;
msgTx
->
num_dl_pdcch
++
;
break
;
case
NFAPI_NR_DL_TTI_CSI_RS_PDU_TYPE
:
...
...
@@ -208,8 +206,9 @@ void nr_schedule_response(NR_Sched_Rsp_t *Sched_INFO){
}
}
if
(
number_ul_dci_pdu
>
0
)
msgTx
->
ul_pdcch_pdu
=
UL_dci_req
->
ul_dci_pdu_list
[
number_ul_dci_pdu
-
1
];
// copy the last pdu
for
(
int
i
=
0
;
i
<
number_ul_dci_pdu
;
i
++
)
{
msgTx
->
ul_pdcch_pdu
[
i
]
=
UL_dci_req
->
ul_dci_pdu_list
[
i
];
}
pushNotifiedFIFO
(
gNB
->
resp_L1_tx
,
res
);
...
...
This diff is collapsed.
Click to expand it.
openair1/SCHED_NR/phy_procedures_nr_gNB.c
View file @
d6dedc1f
...
...
@@ -158,18 +158,16 @@ void phy_procedures_gNB_TX(processingData_L1tx_t *msgTx,
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_gNB_COMMON_TX
,
0
);
int
num_dl_dci
=
msgTx
->
pdcch_pdu
.
pdcch_pdu_rel15
.
numDlDci
;
int
num_ul_dci
=
msgTx
->
ul_pdcch_pdu
.
pdcch_pdu
.
pdcch_pdu_rel15
.
numDlDci
;
int
num_pdcch_pdus
=
msgTx
->
num_ul_pdcch
+
msgTx
->
num_dl_pdcch
;
if
(
num_
dl_dci
>
0
||
num_ul_dci
>
0
)
{
LOG_D
(
PHY
,
"[gNB %d] Frame %d slot %d Calling nr_generate_dci_top (number of UL/DL
DCI
%d/%d)
\n
"
,
gNB
->
Mod_id
,
frame
,
slot
,
num_ul_dci
,
num_dl_dci
);
if
(
num_
pdcch_pdus
>
0
)
{
LOG_D
(
PHY
,
"[gNB %d] Frame %d slot %d Calling nr_generate_dci_top (number of UL/DL
PDCCH PDUs
%d/%d)
\n
"
,
gNB
->
Mod_id
,
frame
,
slot
,
msgTx
->
num_ul_pdcch
,
msgTx
->
num_dl_pdcch
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_gNB_PDCCH_TX
,
1
);
nr_generate_dci_top
(
gNB
,
num_dl_dci
>
0
?
&
msgTx
->
pdcch_pdu
:
NULL
,
num_ul_dci
>
0
?
&
msgTx
->
ul_pdcch_pdu
.
pdcch_pdu
:
NULL
,
msgTx
,
gNB
->
nr_gold_pdcch_dmrs
[
slot
],
&
gNB
->
common_vars
.
txdataF
[
0
][
txdataF_offset
],
AMP
,
fp
);
...
...
This diff is collapsed.
Click to expand it.
openair1/SIMULATION/NR_PHY/dlsim.c
View file @
d6dedc1f
...
...
@@ -1045,7 +1045,7 @@ int main(int argc, char **argv)
UE_info
->
UE_sched_ctrl
[
0
].
harq_processes
[
harq_pid
].
round
=
round
;
for
(
int
i
=
0
;
i
<
MAX_NUM_CORESET
;
i
++
)
gNB_mac
->
UE_info
.
pdcch_cand
[
i
]
=
0
;
gNB_mac
->
pdcch_cand
[
i
]
=
0
;
if
(
css_flag
==
0
)
{
nr_schedule_ue_spec
(
0
,
frame
,
slot
);
...
...
This diff is collapsed.
Click to expand it.
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