Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
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 UE
Commits
4461dc57
Commit
4461dc57
authored
Aug 09, 2021
by
Rahul Gottipati
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
CSI-RS handling in nFAPI
parent
d397b838
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 @
4461dc57
...
...
@@ -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 @
4461dc57
...
...
@@ -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 @
d397b838
File deleted
nfapi/open-nFAPI/nfapi/src/nfapi_p7.c
View file @
4461dc57
...
...
@@ -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 @
4461dc57
...
...
@@ -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 @
4461dc57
...
...
@@ -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 @
4461dc57
...
...
@@ -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 @
4461dc57
...
...
@@ -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 @
4461dc57
...
...
@@ -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