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
78f3bca1
Commit
78f3bca1
authored
Aug 09, 2021
by
Rahul Gottipati
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
CSI-RS handling in nFAPI
parent
557b5445
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
99 additions
and
114 deletions
+99
-114
executables/nr-gnb.c
executables/nr-gnb.c
+3
-4
nfapi/oai_integration/nfapi_pnf.c
nfapi/oai_integration/nfapi_pnf.c
+21
-22
nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface_scf
nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface_scf
+0
-0
nfapi/open-nFAPI/nfapi/src/nfapi_p7.c
nfapi/open-nFAPI/nfapi/src/nfapi_p7.c
+3
-5
nfapi/open-nFAPI/pnf/src/pnf_p7.c
nfapi/open-nFAPI/pnf/src/pnf_p7.c
+1
-1
openair1/SCHED_NR/fapi_nr_l1.c
openair1/SCHED_NR/fapi_nr_l1.c
+60
-72
openair1/SCHED_NR/phy_procedures_nr_gNB.c
openair1/SCHED_NR/phy_procedures_nr_gNB.c
+1
-1
openair2/NR_PHY_INTERFACE/NR_IF_Module.c
openair2/NR_PHY_INTERFACE/NR_IF_Module.c
+8
-9
targets/PROJECTS/GENERIC-LTE-EPC/CONF/oaiL1.nfapi.usrpx300.conf
...s/PROJECTS/GENERIC-LTE-EPC/CONF/oaiL1.nfapi.usrpx300.conf
+2
-0
No files found.
executables/nr-gnb.c
View file @
78f3bca1
...
...
@@ -142,7 +142,7 @@ void rx_func(void *param) {
int
slot_tx
=
info
->
slot_tx
;
sl_ahead
=
sf_ahead
*
gNB
->
frame_parms
.
slots_per_subframe
;
nfapi_nr_config_request_scf_t
*
cfg
=
&
gNB
->
gNB_config
;
LOG_
I
(
PHY
,
"slot rx %d
\n
"
,
slot_rx
);
LOG_
D
(
PHY
,
"slot rx %d
\n
"
,
slot_rx
);
start_meas
(
&
softmodem_stats_rxtx_sf
);
// *******************************************************************
...
...
@@ -253,7 +253,7 @@ void rx_func(void *param) {
stop_meas
(
&
softmodem_stats_rxtx_sf
);
LOG_D
(
PHY
,
"%s() Exit proc[rx:%d%d tx:%d%d]
\n
"
,
__FUNCTION__
,
frame_rx
,
slot_rx
,
frame_tx
,
slot_tx
);
// Call the scheduler
start_meas
(
&
gNB
->
ul_indication_stats
);
...
...
@@ -265,8 +265,7 @@ void rx_func(void *param) {
gNB
->
if_inst
->
NR_UL_indication
(
&
gNB
->
UL_INFO
);
pthread_mutex_unlock
(
&
gNB
->
UL_INFO_mutex
);
stop_meas
(
&
gNB
->
ul_indication_stats
);
notifiedFIFO_elt_t
*
res
;
if
(
tx_slot_type
==
NR_DOWNLINK_SLOT
||
tx_slot_type
==
NR_MIXED_SLOT
)
{
...
...
nfapi/oai_integration/nfapi_pnf.c
View file @
78f3bca1
...
...
@@ -1216,13 +1216,12 @@ int pnf_phy_dl_tti_req(gNB_L1_rxtx_proc_t *proc, nfapi_pnf_p7_config_t *pnf_p7,
int
sfn
=
req
->
SFN
;
int
slot
=
req
->
Slot
;
//int slot_tx = slot + 6; // ref for PNF is slot_rx, so increment by slot ahead
struct
PHY_VARS_gNB_s
*
gNB
=
RC
.
gNB
[
0
];
if
(
proc
==
NULL
)
proc
=
&
gNB
->
proc
.
L1_proc
;
nfapi_nr_dl_tti_request_pdu_t
*
dl_tti_pdu_list
=
req
->
dl_tti_request_body
.
dl_tti_pdu_list
;
if
(
req
->
dl_tti_request_body
.
nPDUs
)
//
if (req->dl_tti_request_body.nPDUs)
// NFAPI_TRACE(NFAPI_TRACE_INFO, "%s() TX:%d/%d RX:%d/%d; sfn:%d, slot:%d, nGroup:%u, nPDUs: %u, nUE: %u, PduIdx: %u,\n",
// __FUNCTION__, proc->frame_tx, proc->slot_tx, proc->frame_rx, proc->slot_rx, // TODO: change subframes to slot
// req->SFN,
...
...
@@ -1233,27 +1232,20 @@ int pnf_phy_dl_tti_req(gNB_L1_rxtx_proc_t *proc, nfapi_pnf_p7_config_t *pnf_p7,
// req->dl_tti_request_body.PduIdx);
for
(
int
i
=
0
;
i
<
req
->
dl_tti_request_body
.
nPDUs
;
i
++
)
{
// TODO: enable after adding gNB PDCCH:
// NFAPI_TRACE(NFAPI_TRACE_INFO, "%s() sfn/sf:%d PDU[%d] size:%d pdcch_vars->num_dci:%d\n", __FUNCTION__, NFAPI_SFNSF2DEC(req->sfn_sf), i, dl_config_pdu_list[i].pdu_size,pdcch_vars->num_dci);
if
(
dl_tti_pdu_list
[
i
].
PDUType
==
NFAPI_NR_DL_TTI_PDCCH_PDU_TYPE
)
{
nfapi_nr_dl_tti_request_pdu_t
*
dl_tti_pdu
=&
dl_tti_pdu_list
[
i
];
memcpy
(
dl_tti_pdu
,
&
dl_tti_pdu_list
[
i
],
sizeof
(
nfapi_nr_dl_tti_request_pdu_t
));
//if(!&dl_tti_pdu->pdcch_pdu)
handle_nfapi_nr_pdcch_pdu
(
gNB
,
sfn
,
slot
,
&
dl_tti_pdu
->
pdcch_pdu
);
//dl_tti_pdu_list[i].pdcch_pdu.pdcch_pdu_rel15.numDlDci++; // ?
// NFAPI_TRACE(NFAPI_TRACE_INFO, "%s() pdcch_vars->num_dci:%d\n", __FUNCTION__, pdcch_vars->num_dci);
}
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]);
handle_nr_nfapi_ssb_pdu
(
gNB
,
sfn
,
slot
,
&
dl_tti_pdu_list
[
i
]);
gNB
->
pbch_configured
=
1
;
//} else {
// NFAPI_TRACE(NFAPI_TRACE_ERROR, "%s() BCH NULL TX PDU SFN/SF:%d PDU_INDEX:%d\n", __FUNCTION__, NFAPI_SFNSF2DEC(req->sfn_sf), pdu_index);
//}
}
else
if
(
dl_tti_pdu_list
[
i
].
PDUType
==
NFAPI_NR_DL_TTI_PDSCH_PDU_TYPE
)
{
}
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]);
handle_nr_nfapi_ssb_pdu
(
gNB
,
sfn
,
slot
,
&
dl_tti_pdu_list
[
i
]);
gNB
->
pbch_configured
=
1
;
}
else
if
(
dl_tti_pdu_list
[
i
].
PDUType
==
NFAPI_NR_DL_TTI_PDSCH_PDU_TYPE
)
{
nfapi_nr_dl_tti_pdsch_pdu
*
pdsch_pdu
=
&
dl_tti_pdu_list
[
i
].
pdsch_pdu
;
nfapi_nr_dl_tti_pdsch_pdu_rel15_t
*
rel15_pdu
=
&
pdsch_pdu
->
pdsch_pdu_rel15
;
//nfapi_nr_tx_data_request_t *tx_data = tx_data_request[sfn][slot][rel15_pdu->pduIndex];
nfapi_nr_dl_tti_pdsch_pdu_rel15_t
*
rel15_pdu
=
&
pdsch_pdu
->
pdsch_pdu_rel15
;
nfapi_nr_pdu_t
*
tx_data
=
tx_data_request
[
sfn
][
slot
][
rel15_pdu
->
pduIndex
];
if
(
tx_data
!=
NULL
)
{
...
...
@@ -1267,14 +1259,21 @@ int pnf_phy_dl_tti_req(gNB_L1_rxtx_proc_t *proc, nfapi_pnf_p7_config_t *pnf_p7,
LOG_E
(
PHY
,
"pnf_phy_dl_config_req illegal harq_pid %d
\n
"
,
harq_pid
);
return
(
-
1
);
}
//uint8_t *dlsch_sdu = (uint8_t *)tx_data->TLVs[0].value.direct;
uint8_t
*
dlsch_sdu
=
nr_tx_pdus
[
UE_id
][
harq_pid
];
memcpy
(
dlsch_sdu
,
tx_data
->
TLVs
[
0
].
value
.
direct
,
tx_data
->
PDU_length
);
//TODO: Check if required
memcpy
(
dlsch_sdu
,
tx_data
->
TLVs
[
0
].
value
.
direct
,
tx_data
->
PDU_length
);
//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);
handle_nr_nfapi_pdsch_pdu
(
gNB
,
sfn
,
slot
,
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
);
}
}
else
{
}
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
);
}
}
else
if
(
dl_tti_pdu_list
[
i
].
PDUType
==
NFAPI_NR_DL_TTI_CSI_RS_PDU_TYPE
)
{
nfapi_nr_dl_tti_csi_rs_pdu
*
csi_rs_pdu
=
&
dl_tti_pdu_list
[
i
].
csi_rs_pdu
;
handle_nfapi_nr_csirs_pdu
(
gNB
,
sfn
,
slot
,
csi_rs_pdu
);
}
else
{
NFAPI_TRACE
(
NFAPI_TRACE_ERROR
,
"%s() UNKNOWN:%d
\n
"
,
__FUNCTION__
,
dl_tti_pdu_list
[
i
].
PDUType
);
}
}
...
...
nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface_scf
deleted
100644 → 0
View file @
557b5445
File deleted
nfapi/open-nFAPI/nfapi/src/nfapi_p7.c
View file @
78f3bca1
...
...
@@ -3815,10 +3815,10 @@ int nfapi_nr_p7_message_pack(void *pMessageBuf, void *pPackedBuf, uint32_t packe
// Update the message length in the header
pMessageHeader
->
message_length
=
packedMsgLen16
;
if
(
!
push16
(
packedMsgLen16
,
&
pPackedLengthField
,
end
))
return
-
1
;
if
(
1
)
{
//quick test
...
...
@@ -6370,11 +6370,10 @@ static uint8_t unpack_tx_request(uint8_t **ppReadPackedMsg, uint8_t *end, void *
//SLOT INDICATION
static
uint8_t
unpack_nr_slot_indication
(
uint8_t
**
ppReadPackedMsg
,
uint8_t
*
end
,
nfapi_nr_
rx_data_indication
_t
*
msg
,
nfapi_p7_codec_config_t
*
config
)
static
uint8_t
unpack_nr_slot_indication
(
uint8_t
**
ppReadPackedMsg
,
uint8_t
*
end
,
nfapi_nr_
slot_indication_scf
_t
*
msg
,
nfapi_p7_codec_config_t
*
config
)
{
nfapi_nr_slot_indication_scf_t
*
pNfapiMsg
=
(
nfapi_nr_slot_indication_scf_t
*
)
msg
;
printf
(
"
\n
"
);
if
(
!
(
pull16
(
ppReadPackedMsg
,
&
pNfapiMsg
->
sfn
,
end
)
&&
pull16
(
ppReadPackedMsg
,
&
pNfapiMsg
->
slot
,
end
)
))
...
...
@@ -6406,7 +6405,6 @@ static uint8_t unpack_nr_rx_data_indication(uint8_t **ppReadPackedMsg, uint8_t *
{
nfapi_nr_rx_data_indication_t
*
pNfapiMsg
=
(
nfapi_nr_rx_data_indication_t
*
)
msg
;
printf
(
"
\n
"
);
if
(
!
(
pull16
(
ppReadPackedMsg
,
&
pNfapiMsg
->
sfn
,
end
)
&&
pull16
(
ppReadPackedMsg
,
&
pNfapiMsg
->
slot
,
end
)
&&
pull16
(
ppReadPackedMsg
,
&
pNfapiMsg
->
number_of_pdus
,
end
)
...
...
nfapi/open-nFAPI/pnf/src/pnf_p7.c
View file @
78f3bca1
...
...
@@ -1772,7 +1772,7 @@ void pnf_handle_ul_tti_request(void* pRecvMsg, int recvMsgLen, pnf_p7_t* pnf_p7)
struct
timespec
t
;
clock_gettime
(
CLOCK_MONOTONIC
,
&
t
);
NFAPI_TRACE
(
NFAPI_TRACE_INFO
,
"%s() %ld.%09ld POPULATE UL_TTI_REQ current tx sfn/slot:%d.%d p7 msg sfn/slot: %d.%d buffer_index:%d
\n
"
,
__FUNCTION__
,
t
.
tv_sec
,
t
.
tv_nsec
,
pnf_p7
->
sfn
,
pnf_p7
->
slot
,
req
->
SFN
,
req
->
Slot
,
buffer_index
);
//
NFAPI_TRACE(NFAPI_TRACE_INFO,"%s() %ld.%09ld POPULATE UL_TTI_REQ current tx sfn/slot:%d.%d p7 msg sfn/slot: %d.%d buffer_index:%d\n", __FUNCTION__, t.tv_sec, t.tv_nsec, pnf_p7->sfn,pnf_p7->slot, req->SFN, req->Slot, buffer_index);
if
(
pnf_p7
->
slot_buffer
[
buffer_index
].
ul_tti_req
!=
0
)
{
...
...
openair1/SCHED_NR/fapi_nr_l1.c
View file @
78f3bca1
...
...
@@ -172,7 +172,7 @@ void nr_schedule_response(NR_Sched_Rsp_t *Sched_INFO){
nfapi_nr_ul_dci_request_t
*
UL_dci_req
=
Sched_INFO
->
UL_dci_req
;
frame_t
frame
=
Sched_INFO
->
frame
;
sub_frame_t
slot
=
Sched_INFO
->
slot
;
//printf("Inside nr_schedule_resp SFN:%d, slot:%d \n",Sched_INFO->frame, Sched_INFO->slot);
AssertFatal
(
RC
.
gNB
!=
NULL
,
"RC.gNB is null
\n
"
);
AssertFatal
(
RC
.
gNB
[
Mod_id
]
!=
NULL
,
"RC.gNB[%d] is null
\n
"
,
Mod_id
);
...
...
@@ -181,71 +181,69 @@ 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
;
if
(
NFAPI_MODE
==
NFAPI_MONOLITHIC
){
if
(
DL_req
!=
NULL
&&
TX_req
!=
NULL
)
LOG_D
(
PHY
,
"NFAPI: Sched_INFO:SFN/SLOT:%04d/%d DL_req:SFN/SLO:%04d/%d:dl_pdu:%d tx_req:SFN/SLOT:%04d/%d:pdus:%d;ul_dci %d ul_tti %d
\n
"
,
frame
,
slot
,
DL_req
->
SFN
,
DL_req
->
Slot
,
number_dl_pdu
,
TX_req
->
SFN
,
TX_req
->
Slot
,
TX_req
->
Number_of_PDUs
,
number_ul_dci_pdu
,
number_ul_tti_pdu
);
int
pdcch_received
=
0
;
gNB
->
num_pdsch_rnti
[
slot
]
=
0
;
for
(
int
i
=
0
;
i
<
gNB
->
number_of_nr_dlsch_max
;
i
++
)
{
gNB
->
dlsch
[
i
][
0
]
->
rnti
=
0
;
gNB
->
dlsch
[
i
][
0
]
->
harq_mask
=
0
;
}
if
(
DL_req
!=
NULL
&&
TX_req
!=
NULL
)
LOG_D
(
PHY
,
"NFAPI: Sched_INFO:SFN/SLOT:%04d/%d DL_req:SFN/SLO:%04d/%d:dl_pdu:%d tx_req:SFN/SLOT:%04d/%d:pdus:%d;ul_dci %d ul_tti %d
\n
"
,
frame
,
slot
,
DL_req
->
SFN
,
DL_req
->
Slot
,
number_dl_pdu
,
TX_req
->
SFN
,
TX_req
->
Slot
,
TX_req
->
Number_of_PDUs
,
number_ul_dci_pdu
,
number_ul_tti_pdu
);
int
pdcch_received
=
0
;
gNB
->
num_pdsch_rnti
[
slot
]
=
0
;
for
(
int
i
=
0
;
i
<
gNB
->
number_of_nr_dlsch_max
;
i
++
)
{
gNB
->
dlsch
[
i
][
0
]
->
rnti
=
0
;
gNB
->
dlsch
[
i
][
0
]
->
harq_mask
=
0
;
}
for
(
int
i
=
0
;
i
<
number_dl_pdu
;
i
++
)
{
nfapi_nr_dl_tti_request_pdu_t
*
dl_tti_pdu
=
&
DL_req
->
dl_tti_request_body
.
dl_tti_pdu_list
[
i
];
LOG_D
(
PHY
,
"NFAPI: dl_pdu %d : type %d
\n
"
,
i
,
dl_tti_pdu
->
PDUType
);
switch
(
dl_tti_pdu
->
PDUType
)
{
case
NFAPI_NR_DL_TTI_SSB_PDU_TYPE
:
for
(
int
i
=
0
;
i
<
number_dl_pdu
;
i
++
)
{
nfapi_nr_dl_tti_request_pdu_t
*
dl_tti_pdu
=
&
DL_req
->
dl_tti_request_body
.
dl_tti_pdu_list
[
i
];
LOG_D
(
PHY
,
"NFAPI: dl_pdu %d : type %d
\n
"
,
i
,
dl_tti_pdu
->
PDUType
);
switch
(
dl_tti_pdu
->
PDUType
)
{
case
NFAPI_NR_DL_TTI_SSB_PDU_TYPE
:
if
(
NFAPI_MODE
!=
NFAPI_MODE_VNF
)
handle_nr_nfapi_ssb_pdu
(
gNB
,
frame
,
slot
,
dl_tti_pdu
);
dl_tti_pdu
);
break
;
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
"
);
if
(
NFAPI_MODE
!=
NFAPI_MODE_VNF
)
handle_nfapi_nr_pdcch_pdu
(
gNB
,
frame
,
slot
,
&
dl_tti_pdu
->
pdcch_pdu
);
pdcch_received
=
1
;
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
"
);
break
;
case
NFAPI_NR_DL_TTI_CSI_RS_PDU_TYPE
:
LOG_D
(
PHY
,
"frame %d, slot %d, Got NFAPI_NR_DL_TTI_CSI_RS_PDU_TYPE for %d.%d
\n
"
,
frame
,
slot
,
DL_req
->
SFN
,
DL_req
->
Slot
);
handle_nfapi_nr_csirs_pdu
(
gNB
,
frame
,
slot
,
&
dl_tti_pdu
->
csi_rs_pdu
);
break
;
case
NFAPI_NR_DL_TTI_PDSCH_PDU_TYPE
:
handle_nfapi_nr_pdcch_pdu
(
gNB
,
frame
,
slot
,
&
dl_tti_pdu
->
pdcch_pdu
);
pdcch_received
=
1
;
{
break
;
case
NFAPI_NR_DL_TTI_CSI_RS_PDU_TYPE
:
LOG_D
(
PHY
,
"frame %d, slot %d, Got NFAPI_NR_DL_TTI_CSI_RS_PDU_TYPE for %d.%d
\n
"
,
frame
,
slot
,
DL_req
->
SFN
,
DL_req
->
Slot
);
handle_nfapi_nr_csirs_pdu
(
gNB
,
frame
,
slot
,
&
dl_tti_pdu
->
csi_rs_pdu
);
break
;
case
NFAPI_NR_DL_TTI_PDSCH_PDU_TYPE
:
LOG_D
(
PHY
,
"frame %d, slot %d, Got NFAPI_NR_DL_TTI_PDSCH_PDU_TYPE for %d.%d
\n
"
,
frame
,
slot
,
DL_req
->
SFN
,
DL_req
->
Slot
);
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
,
"TX_req->pdu_list[%d].num_TLV %d != 1
\n
"
,
pduIndex
,
TX_req
->
pdu_list
[
pduIndex
].
num_TLV
);
AssertFatal
(
TX_req
->
pdu_list
[
pduIndex
].
num_TLV
==
1
,
"TX_req->pdu_list[%d].num_TLV %d != 1
\n
"
,
pduIndex
,
TX_req
->
pdu_list
[
pduIndex
].
num_TLV
);
uint8_t
*
sdu
=
(
uint8_t
*
)
TX_req
->
pdu_list
[
pduIndex
].
TLVs
[
0
].
value
.
direct
;
if
(
NFAPI_MODE
!=
NFAPI_MODE_VNF
)
handle_nr_nfapi_pdsch_pdu
(
gNB
,
frame
,
slot
,
&
dl_tti_pdu
->
pdsch_pdu
,
sdu
);
}
}
}
// if (UL_tti_req!=NULL) memcpy(&gNB->UL_tti_req,UL_tti_req,sizeof(nfapi_nr_ul_tti_request_t));
if
(
NFAPI_MODE
!=
NFAPI_MODE_VNF
)
for
(
int
i
=
0
;
i
<
number_ul_dci_pdu
;
i
++
)
{
handle_nfapi_nr_ul_dci_pdu
(
gNB
,
frame
,
slot
,
&
UL_dci_req
->
ul_dci_pdu_list
[
i
]);
}
if
(
NFAPI_MODE
!=
NFAPI_MODE_VNF
)
for
(
int
i
=
0
;
i
<
number_ul_tti_pdu
;
i
++
)
{
switch
(
UL_tti_req
->
pdus_list
[
i
].
pdu_type
)
{
case
NFAPI_NR_UL_CONFIG_PUSCH_PDU_TYPE
:
...
...
@@ -264,32 +262,22 @@ void nr_schedule_response(NR_Sched_Rsp_t *Sched_INFO){
break
;
}
}
//printf("Inside NR schedule response SFN/slot %d.%d. \n",frame,slot);
if
(
NFAPI_MODE
!=
NFAPI_MONOLITHIC
&&
number_ul_tti_pdu
>
0
)
{
LOG_I
(
MAC
,
"SFN/slot %d.%d Sending ul tti req
\n
"
,
frame
,
slot
);
oai_nfapi_ul_tti_req
(
UL_tti_req
);
}
if
(
NFAPI_MODE
!=
NFAPI_MONOLITHIC
&&
Sched_INFO
->
UL_dci_req
->
numPdus
!=
0
)
{
oai_nfapi_ul_dci_req
(
Sched_INFO
->
UL_dci_req
);
}
if
(
NFAPI_MODE
!=
NFAPI_MONOLITHIC
)
{
if
(
Sched_INFO
->
DL_req
->
dl_tti_request_body
.
nPDUs
>
0
)
{
Sched_INFO
->
DL_req
->
SFN
=
frame
;
Sched_INFO
->
DL_req
->
Slot
=
slot
;
oai_nfapi_dl_tti_req
(
Sched_INFO
->
DL_req
);
}
if
(
Sched_INFO
->
TX_req
->
Number_of_PDUs
>
0
)
{
oai_nfapi_tx_data_req
(
Sched_INFO
->
TX_req
);
}
if
(
NFAPI_MODE
==
NFAPI_MODE_VNF
)
{
//If VNF, oai_nfapi functions send respective p7 msgs to PNF for which nPDUs is greater than 0
if
(
number_ul_tti_pdu
>
0
)
oai_nfapi_ul_tti_req
(
UL_tti_req
);
if
(
number_ul_dci_pdu
>
0
)
oai_nfapi_ul_dci_req
(
UL_dci_req
);
}
if
(
number_dl_pdu
>
0
)
oai_nfapi_dl_tti_req
(
DL_req
);
if
(
number_tx_data_pdu
>
0
)
oai_nfapi_tx_data_req
(
TX_req
);
}
}
openair1/SCHED_NR/phy_procedures_nr_gNB.c
View file @
78f3bca1
...
...
@@ -164,7 +164,7 @@ void phy_procedures_gNB_TX(PHY_VARS_gNB *gNB,
gNB
->
Mod_id
,
frame
,
slot
,
pdcch_pdu_id
,
ul_pdcch_pdu_id
);
if
(
pdcch_pdu_id
>=
0
||
ul_pdcch_pdu_id
>=
0
)
{
LOG_
I
(
PHY
,
"[gNB %d] Frame %d slot %d Calling nr_generate_dci_top (number of UL/DL DCI %d/%d)
\n
"
,
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
,
gNB
->
ul_pdcch_pdu
[
ul_pdcch_pdu_id
].
pdcch_pdu
.
pdcch_pdu
.
pdcch_pdu_rel15
.
numDlDci
,
gNB
->
pdcch_pdu
[
pdcch_pdu_id
].
pdcch_pdu
.
pdcch_pdu_rel15
.
numDlDci
);
...
...
openair2/NR_PHY_INTERFACE/NR_IF_Module.c
View file @
78f3bca1
...
...
@@ -216,7 +216,15 @@ void NR_UL_indication(NR_UL_IND_t *UL_info) {
module_id
,
CC_id
,
UL_info
->
rach_ind
.
number_of_pdus
,
UL_info
->
rx_ind
.
number_of_pdus
,
UL_info
->
crc_ind
.
number_crcs
);
handle_nr_rach
(
UL_info
);
handle_nr_uci
(
UL_info
);
// clear UL DCI prior to handling ULSCH
mac
->
UL_dci_req
[
CC_id
].
numPdus
=
0
;
handle_nr_ulsch
(
UL_info
);
if
(
NFAPI_MODE
!=
NFAPI_MODE_PNF
)
{
if
(
ifi
->
CC_mask
==
0
)
{
ifi
->
current_frame
=
UL_info
->
frame
;
ifi
->
current_slot
=
UL_info
->
slot
;
...
...
@@ -226,16 +234,7 @@ void NR_UL_indication(NR_UL_IND_t *UL_info) {
}
ifi
->
CC_mask
|=
(
1
<<
CC_id
);
}
handle_nr_rach
(
UL_info
);
handle_nr_uci
(
UL_info
);
// clear HI prior to handling ULSCH
mac
->
UL_dci_req
[
CC_id
].
numPdus
=
0
;
handle_nr_ulsch
(
UL_info
);
if
(
NFAPI_MODE
!=
NFAPI_MODE_PNF
)
{
if
(
ifi
->
CC_mask
==
((
1
<<
MAX_NUM_CCs
)
-
1
))
{
/*
eNB_dlsch_ulsch_scheduler(module_id,
...
...
targets/PROJECTS/GENERIC-LTE-EPC/CONF/oaiL1.nfapi.usrpx300.conf
View file @
78f3bca1
...
...
@@ -43,5 +43,7 @@ RUs = (
max_pdschReferenceSignalPower
= -
27
;
max_rxgain
=
114
;
sdr_addrs
=
"type=x300"
; //
USRP
type
clock_src
=
"external"
;
time_src
=
"external"
;
}
);
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