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
zzha zzha
OpenXG-RAN
Commits
30065ef0
Commit
30065ef0
authored
Sep 20, 2021
by
Melissa Elkadi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Removing hacks to gNB code for NSA mode
parent
61e24219
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
25 additions
and
138 deletions
+25
-138
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c
+4
-11
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
+18
-27
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
+0
-2
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c
+2
-9
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
+1
-84
openair2/LAYER2/NR_MAC_gNB/main.c
openair2/LAYER2/NR_MAC_gNB/main.c
+0
-1
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
+0
-4
No files found.
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c
View file @
30065ef0
...
...
@@ -151,10 +151,6 @@ void clear_nr_nfapi_information(gNB_MAC_INST * gNB,
nfapi_nr_tx_data_request_t
*
TX_req
=
&
gNB
->
TX_req
[
0
];
gNB
->
pdu_index
[
CC_idP
]
=
0
;
if
(
NFAPI_MODE
==
NFAPI_MODE_VNF
)
{
memset
(
pdcch
,
0
,
sizeof
(
**
pdcch
)
*
MAX_NUM_BWP
*
MAX_NUM_CORESET
);
}
DL_req
[
CC_idP
].
SFN
=
frameP
;
DL_req
[
CC_idP
].
Slot
=
slotP
;
...
...
@@ -358,12 +354,8 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP,
PROTOCOL_CTXT_SET_BY_MODULE_ID
(
&
ctxt
,
module_idP
,
ENB_FLAG_YES
,
NOT_A_RNTI
,
frame
,
slot
,
module_idP
);
const
int
bwp_id
=
1
;
gNB_MAC_INST
*
gNB
=
RC
.
nrmac
[
module_idP
];
if
(
frame
==
gNB
->
handled_frame
&&
slot
==
gNB
->
handled_slot
)
{
LOG_E
(
NR_MAC
,
"Dropping becasue frame %d == gNB frame %d, slot %d == gNb slot %d
\n
"
,
frame
,
gNB
->
handled_frame
,
slot
,
gNB
->
handled_slot
);
return
;
}
NR_COMMON_channels_t
*
cc
=
gNB
->
common_channels
;
NR_ServingCellConfigCommon_t
*
scc
=
cc
->
ServingCellConfigCommon
;
...
...
@@ -408,6 +400,7 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP,
const
int
last_slot
=
(
slot
+
num_slots
-
1
)
%
num_slots
;
uint16_t
*
vrb_map_UL
=
cc
[
CC_id
].
vrb_map_UL
;
memset
(
&
vrb_map_UL
[
last_slot
*
MAX_BWP_SIZE
],
0
,
sizeof
(
uint16_t
)
*
MAX_BWP_SIZE
);
clear_nr_nfapi_information
(
RC
.
nrmac
[
module_idP
],
CC_id
,
frame
,
slot
);
/*VNF first entry into scheduler. Since frame numbers for future_ul_tti_req of some future slots
...
...
@@ -460,8 +453,8 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP,
nr_csirs_scheduling
(
module_idP
,
frame
,
slot
,
nr_slots_per_frame
[
*
scc
->
ssbSubcarrierSpacing
]);
// Schedule CSI measurement reporting: check in slot 0 for the whole frame
//
if (slot == 0)
// nr_csi_meas_reporting(module_idP, frame, slot); Melissa Elkadi, hack to keep from crashing
if
(
slot
==
0
)
nr_csi_meas_reporting
(
module_idP
,
frame
,
slot
);
// This schedule RA procedure if not in phy_test mode
// Otherwise already consider 5G already connected
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
View file @
30065ef0
...
...
@@ -56,7 +56,7 @@
#define HALFWORD 16
#define WORD 32
//#define SIZE_OF_POINTER sizeof (void *)
//
static int loop_dcch_dtch = DL_SCH_LCID_DTCH;
static
int
loop_dcch_dtch
=
DL_SCH_LCID_DTCH
;
void
calculate_preferred_dl_tda
(
module_id_t
module_id
,
const
NR_BWP_Downlink_t
*
bwp
)
{
...
...
@@ -135,8 +135,6 @@ void calculate_preferred_dl_tda(module_id_t module_id, const NR_BWP_Downlink_t *
}
}
int
harq_rounds
=
0
;
int
harq_pid
=
0
;
// Compute and write all MAC CEs and subheaders, and return number of written
// bytes
...
...
@@ -394,14 +392,14 @@ void nr_store_dlsch_buffer(module_id_t module_id,
NR_UE_sched_ctrl_t
*
sched_ctrl
=
&
UE_info
->
UE_sched_ctrl
[
UE_id
];
sched_ctrl
->
num_total_bytes
=
0
;
if
((
sched_ctrl
->
lcid_mask
&
(
1
<<
4
))
>
0
&&
UE_info
->
loop_dcch_dtch
[
UE_id
]
==
DL_SCH_LCID_DCCH1
)
UE_info
->
loop_dcch_dtch
[
UE_id
]
=
DL_SCH_LCID_DTCH
;
else
if
((
sched_ctrl
->
lcid_mask
&
(
1
<<
1
))
>
0
&&
UE_info
->
loop_dcch_dtch
[
UE_id
]
==
DL_SCH_LCID_DTCH
)
UE_info
->
loop_dcch_dtch
[
UE_id
]
=
DL_SCH_LCID_DCCH
;
else
if
((
sched_ctrl
->
lcid_mask
&
(
1
<<
2
))
>
0
&&
UE_info
->
loop_dcch_dtch
[
UE_id
]
==
DL_SCH_LCID_DCCH
)
UE_info
->
loop_dcch_dtch
[
UE_id
]
=
DL_SCH_LCID_DCCH1
;
const
int
lcid
=
UE_info
->
loop_dcch_dtch
[
UE_id
]
;
if
((
sched_ctrl
->
lcid_mask
&
(
1
<<
4
))
>
0
&&
loop_dcch_dtch
==
DL_SCH_LCID_DCCH1
)
loop_dcch_dtch
=
DL_SCH_LCID_DTCH
;
else
if
((
sched_ctrl
->
lcid_mask
&
(
1
<<
1
))
>
0
&&
loop_dcch_dtch
==
DL_SCH_LCID_DTCH
)
loop_dcch_dtch
=
DL_SCH_LCID_DCCH
;
else
if
((
sched_ctrl
->
lcid_mask
&
(
1
<<
2
))
>
0
&&
loop_dcch_dtch
==
DL_SCH_LCID_DCCH
)
loop_dcch_dtch
=
DL_SCH_LCID_DCCH1
;
const
int
lcid
=
loop_dcch_dtch
;
// const int lcid = DL_SCH_LCID_DTCH;
const
uint16_t
rnti
=
UE_info
->
rnti
[
UE_id
];
sched_ctrl
->
rlc_status
[
lcid
]
=
mac_rlc_status_ind
(
module_id
,
...
...
@@ -416,25 +414,25 @@ void nr_store_dlsch_buffer(module_id_t module_id,
0
);
sched_ctrl
->
num_total_bytes
+=
sched_ctrl
->
rlc_status
[
lcid
].
bytes_in_buffer
;
LOG_D
(
NR_MAC
,
"%d.%d, LCID%d:->DLSCH, RLC status %d bytes.
sched_ctrl %p RC %p module_id %d UE_info %p UE_id %d
\n
"
,
"%d.%d, LCID%d:->DLSCH, RLC status %d bytes.
\n
"
,
frame
,
slot
,
lcid
,
sched_ctrl
->
num_total_bytes
,
sched_ctrl
,
&
RC
,
module_id
,
UE_info
,
UE_id
);
sched_ctrl
->
num_total_bytes
);
if
(
sched_ctrl
->
num_total_bytes
==
0
&&
!
sched_ctrl
->
ta_apply
)
/* If TA should be applied, give at least one RB */
continue
;
return
;
LOG_D
(
NR_MAC
,
"[%s][%d.%d], %s%d->DLSCH, RLC status %d bytes TA %d
sched_ctrl %p UE_id %d
\n
"
,
"[%s][%d.%d], %s%d->DLSCH, RLC status %d bytes TA %d
\n
"
,
__func__
,
frame
,
slot
,
lcid
<
4
?
"DCCH"
:
"DTCH"
,
lcid
,
sched_ctrl
->
rlc_status
[
lcid
].
bytes_in_buffer
,
sched_ctrl
->
ta_apply
,
sched_ctrl
,
UE_id
);
sched_ctrl
->
ta_apply
);
}
}
...
...
@@ -884,15 +882,8 @@ void nr_schedule_ue_spec(module_id_t module_id,
const
int
bwpid
=
bwp
?
bwp
->
bwp_Id
:
0
;
const
int
coresetid
=
bwp
?
sched_ctrl
->
coreset
->
controlResourceSetId
:
gNB_mac
->
sched_ctrlCommon
->
coreset
->
controlResourceSetId
;
nfapi_nr_dl_tti_pdcch_pdu_rel15_t
*
pdcch_pdu
=
gNB_mac
->
pdcch_pdu_idx
[
CC_id
][
bwpid
][
coresetid
];
//nfapi_nr_dl_tti_pdcch_pdu_rel15_t temp;
// if(NFAPI_MODE == NFAPI_MODE_VNF){
// memcpy(temp,gNB_mac->pdcch_pdu_idx[CC_id][bwpid][coresetid],sizeof(nfapi_nr_dl_tti_pdcch_pdu_rel15_t));
// pdcch_pdu = temp;
// }
if
(
!
pdcch_pdu
)
{
printf
(
"creating pdcch pdu, pdcch_pdu = NULL.
\n
"
);
LOG_I
(
NR_MAC
,
"creating pdcch pdu, pdcch_pdu = NULL.
\n
"
);
nfapi_nr_dl_tti_request_pdu_t
*
dl_tti_pdcch_pdu
=
&
dl_req
->
dl_tti_pdu_list
[
dl_req
->
nPDUs
];
memset
(
dl_tti_pdcch_pdu
,
0
,
sizeof
(
nfapi_nr_dl_tti_request_pdu_t
));
dl_tti_pdcch_pdu
->
PDUType
=
NFAPI_NR_DL_TTI_PDCCH_PDU_TYPE
;
...
...
@@ -1106,7 +1097,7 @@ void nr_schedule_ue_spec(module_id_t module_id,
/* next, get RLC data */
// const int lcid = DL_SCH_LCID_DTCH;
const
int
lcid
=
UE_info
->
loop_dcch_dtch
[
UE_id
]
;
const
int
lcid
=
loop_dcch_dtch
;
int
dlsch_total_bytes
=
0
;
if
(
sched_ctrl
->
num_total_bytes
>
0
)
{
tbs_size_t
len
=
0
;
...
...
@@ -1133,8 +1124,8 @@ void nr_schedule_ue_spec(module_id_t module_id,
0
,
0
);
LOG_
I
(
NR_MAC
,
"
Melissa Elkadi
%4d.%2d RNTI %04x: %d bytes from %s %d (ndata %d, remaining size %d)
\n
"
,
LOG_
D
(
NR_MAC
,
"%4d.%2d RNTI %04x: %d bytes from %s %d (ndata %d, remaining size %d)
\n
"
,
frame
,
slot
,
rnti
,
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
View file @
30065ef0
...
...
@@ -62,7 +62,6 @@
#include "common/ran_context.h"
extern
RAN_CONTEXT_t
RC
;
uint8_t
count
=
0
;
uint8_t
harq_pid_ul
=
-
1
;
int
flag
=
0
;
// Note the 2 scs values in the table names represent resp. scs_common and pdcch_scs
/// LUT for the number of symbols in the coreset indexed by coreset index (4 MSB rmsi_pdcch_config)
...
...
@@ -1884,7 +1883,6 @@ int add_new_nr_ue(module_id_t mod_idP, rnti_t rntiP, NR_CellGroupConfig_t *CellG
int
UE_id
=
i
;
UE_info
->
num_UEs
++
;
UE_info
->
active
[
UE_id
]
=
true
;
UE_info
->
loop_dcch_dtch
[
UE_id
]
=
DL_SCH_LCID_DTCH
;
if
(
CellGroup
)
UE_info
->
Msg4_ACKed
[
UE_id
]
=
true
;
else
UE_info
->
Msg4_ACKed
[
UE_id
]
=
false
;
UE_info
->
rnti
[
UE_id
]
=
rntiP
;
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c
View file @
30065ef0
...
...
@@ -47,7 +47,6 @@ void nr_fill_nfapi_pucch(module_id_t mod_id,
nfapi_nr_ul_tti_request_t
*
future_ul_tti_req
=
&
RC
.
nrmac
[
mod_id
]
->
UL_tti_req_ahead
[
0
][
pucch
->
ul_slot
];
future_ul_tti_req
->
SFN
=
pucch
->
frame
;
// Melissa Elkadi, hack so gNB doesnt crash below
AssertFatal
(
future_ul_tti_req
->
SFN
==
pucch
->
frame
&&
future_ul_tti_req
->
Slot
==
pucch
->
ul_slot
,
"future UL_tti_req's frame.slot %d.%d does not match PUCCH %d.%d
\n
"
,
...
...
@@ -1113,9 +1112,6 @@ void handle_nr_uci_pucch_2_3_4(module_id_t mod_id,
sub_frame_t
slot
,
const
nfapi_nr_uci_pucch_pdu_format_2_3_4_t
*
uci_234
)
{
NR_UE_info_t
*
UE_info
=
&
RC
.
nrmac
[
mod_id
]
->
UE_info
;
UE_info
->
active
[
0
]
=
1
;
UE_info
->
rnti
[
0
]
=
uci_234
->
rnti
;
int
UE_id
=
find_nr_UE_id
(
mod_id
,
uci_234
->
rnti
);
if
(
UE_id
<
0
)
{
LOG_E
(
MAC
,
"%s(): unknown RNTI %04x in PUCCH UCI
\n
"
,
__func__
,
uci_234
->
rnti
);
...
...
@@ -1127,6 +1123,7 @@ void handle_nr_uci_pucch_2_3_4(module_id_t mod_id,
if
(
RC
.
nrmac
[
mod_id
]
->
UE_info
.
CellGroup
[
UE_id
]
->
spCellConfig
->
spCellConfigDedicated
->
csi_MeasConfig
==
NULL
)
return
;
NR_CSI_MeasConfig_t
*
csi_MeasConfig
=
RC
.
nrmac
[
mod_id
]
->
UE_info
.
CellGroup
[
UE_id
]
->
spCellConfig
->
spCellConfigDedicated
->
csi_MeasConfig
->
choice
.
setup
;
NR_UE_info_t
*
UE_info
=
&
RC
.
nrmac
[
mod_id
]
->
UE_info
;
NR_UE_sched_ctrl_t
*
sched_ctrl
=
&
UE_info
->
UE_sched_ctrl
[
UE_id
];
// tpc (power control)
...
...
@@ -1240,7 +1237,7 @@ int nr_acknack_scheduling(int mod_id,
get_pdsch_to_harq_feedback
(
mod_id
,
UE_id
,
ss_type
,
pdsch_to_harq_feedback
);
/* there is a HARQ. Check whether we can use it for this ACKNACK */
if
(
pucch
->
dai_c
>
0
&&
pucch
->
frame
==
frame
)
{
if
(
pucch
->
dai_c
>
0
)
{
/* this UE already has a PUCCH occasion */
DevAssert
(
pucch
->
frame
==
frame
);
...
...
@@ -1276,10 +1273,6 @@ int nr_acknack_scheduling(int mod_id,
* scheduled a lot and used all AckNacks, pucch->frame might have been
* wrapped around to next frame */
if
(
frame
!=
pucch
->
frame
||
pucch
->
ul_slot
<
first_ul_slot_tdd
)
{
if
(
pucch
->
dai_c
!=
0
)
//Melissa Elkadi, hacking this code to stop gNB from crashing
{
pucch
->
dai_c
=
0
;
}
AssertFatal
(
pucch
->
sr_flag
+
pucch
->
dai_c
==
0
,
"expected no SR/AckNack for UE %d in %4d.%2d, but has %d/%d for %4d.%2d
\n
"
,
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
View file @
30065ef0
...
...
@@ -826,7 +826,6 @@ void nr_rx_sdu(const module_id_t gnb_mod_idP,
}
}
long
get_K2
(
NR_ServingCellConfigCommon_t
*
scc
,
NR_BWP_Uplink_t
*
ubwp
,
int
time_domain_assignment
,
int
mu
)
{
DevAssert
(
scc
);
const
NR_PUSCH_TimeDomainResourceAllocation_t
*
tda_list
=
ubwp
?
...
...
@@ -1278,6 +1277,7 @@ bool nr_fr1_ulsch_preprocessor(module_id_t module_id, frame_t frame, sub_frame_t
int
startSymbolIndex
,
nrOfSymbols
;
SLIV2SL
(
startSymbolAndLength
,
&
startSymbolIndex
,
&
nrOfSymbols
);
const
uint16_t
symb
=
((
1
<<
nrOfSymbols
)
-
1
)
<<
startSymbolIndex
;
int
st
=
0
,
e
=
0
,
len
=
0
;
for
(
int
i
=
0
;
i
<
bwpSize
;
i
++
)
{
while
((
vrb_map_UL
[
i
]
&
symb
)
!=
0
&&
i
<
bwpSize
)
...
...
@@ -1292,7 +1292,6 @@ bool nr_fr1_ulsch_preprocessor(module_id_t module_id, frame_t frame, sub_frame_t
}
st
=
e
-
len
+
1
;
uint8_t
rballoc_mask
[
bwpSize
];
/* Calculate mask: if any RB in vrb_map_UL is blocked (1), the current RB will be 0 */
...
...
@@ -1310,23 +1309,6 @@ bool nr_fr1_ulsch_preprocessor(module_id_t module_id, frame_t frame, sub_frame_t
return
true
;
}
static
inline
int
timespec_diff_in_milliseconds
(
struct
timespec
*
a
,
struct
timespec
*
b
)
{
int
diff_in_ms
=
(
a
->
tv_sec
-
b
->
tv_sec
)
*
1000
+
a
->
tv_nsec
/
1000000
-
b
->
tv_nsec
/
1000000
;
return
diff_in_ms
;
}
typedef
struct
_sched_info
{
uint16_t
rnti
;
uint16_t
sfn
;
uint16_t
slot
;
int8_t
harq_id
;
struct
timespec
ts
;
}
sched_info
;
sched_info
prev_sched
[
MAX_MOBILES_PER_GNB
];
nr_pp_impl_ul
nr_init_fr1_ulsch_preprocessor
(
module_id_t
module_id
,
int
CC_id
)
{
/* in the PF algorithm, we have to use the TBsize to compute the coefficient.
...
...
@@ -1394,55 +1376,6 @@ void nr_schedule_ulsch(module_id_t module_id, frame_t frame, sub_frame_t slot)
if
(
sched_pusch
->
rbSize
<=
0
)
continue
;
struct
timespec
ts
;
if
(
clock_gettime
(
CLOCK_MONOTONIC
,
&
ts
)
==
-
1
)
abort
();
if
(
prev_sched
[
UE_id
].
rnti
!=
0
)
{
uint16_t
prev_frame
=
prev_sched
[
UE_id
].
sfn
;
uint16_t
prev_slot
=
prev_sched
[
UE_id
].
slot
;
int
sfnslot_delta
=
NFAPI_SFNSLOT2DEC
(
frame
,
slot
)
-
NFAPI_SFNSLOT2DEC
(
prev_frame
,
prev_slot
);
if
(
sfnslot_delta
<
0
)
{
sfnslot_delta
+=
NFAPI_SFNSLOT2DEC
(
1024
,
0
);
}
// If diff is more than half of maximum frame: we ignore it.
if
(
sfnslot_delta
>
NFAPI_SFNSLOT2DEC
(
512
,
0
))
{
LOG_D
(
NR_MAC
,
"%s() SFN/SLOT DELTA between Sched and Previous. UEID %d, rnti %x Delta %d. "
"Current:%d.%d Prev(%d):%d.%d --> Skip
\n\n\n\n\n\n\n\n\n
"
,
__func__
,
UE_id
,
UE_info
->
rnti
[
UE_id
],
sfnslot_delta
-
NFAPI_SFNSLOT2DEC
(
1024
,
0
),
frame
,
slot
,
prev_sched
[
UE_id
].
harq_id
,
prev_frame
,
prev_slot
);
continue
;
}
else
{
LOG_D
(
NR_MAC
,
"%s() SFN/SLOT DELTA between Sched and Previous. UEID %d, rnti %x Delta %d. "
"Current:%d.%d Prev(%d):%d.%d
\n\n\n\n\n\n\n\n\n
"
,
__func__
,
UE_id
,
UE_info
->
rnti
[
UE_id
],
sfnslot_delta
,
frame
,
slot
,
prev_sched
[
UE_id
].
harq_id
,
prev_frame
,
prev_slot
);
}
int
time_diff_in_ms
=
timespec_diff_in_milliseconds
(
&
ts
,
&
prev_sched
[
UE_id
].
ts
);
// The sched tx duration between ul dci req is assumed between 4 ms to 6 ms.
if
(
vnf_pnf_sfnslot_delta
<
0
||
time_diff_in_ms
<
4
*
(
sfnslot_delta
/
10
)
||
time_diff_in_ms
>
6
*
(
sfnslot_delta
/
10
))
{
continue
;
}
else
{
LOG_D
(
NR_MAC
,
"%s() SFN/SLOT DELTA between Proxy and gNB. UEID %d, rnti %x Delta %3d. "
"gNB:%4d.%-2d slot_diff %4d time_diff %d
\n\n\n\n\n\n\n\n\n
"
,
__func__
,
UE_id
,
UE_info
->
rnti
[
UE_id
],
vnf_pnf_sfnslot_delta
,
frame
,
slot
,
sfnslot_delta
,
time_diff_in_ms
);
}
}
uint16_t
rnti
=
UE_info
->
rnti
[
UE_id
];
sched_ctrl
->
SR
=
false
;
...
...
@@ -1525,24 +1458,8 @@ void nr_schedule_ulsch(module_id_t module_id, frame_t frame, sub_frame_t slot)
sched_ctrl
->
sched_ul_bytes
,
sched_ctrl
->
estimated_ul_buffer
-
sched_ctrl
->
sched_ul_bytes
);
gNB_MAC_INST
*
gNB
=
RC
.
nrmac
[
0
];
if
(
sched_pusch
->
frame
==
gNB
->
handled_frame
&&
sched_pusch
->
slot
==
gNB
->
handled_slot
)
{
LOG_E
(
NR_MAC
,
"Dropping because frame %d == gNB frame %d, slot %d == gNb slot %d
\n
"
,
sched_pusch
->
frame
,
gNB
->
handled_frame
,
sched_pusch
->
slot
,
gNB
->
handled_slot
);
return
;
}
gNB
->
handled_frame
=
frame
;
gNB
->
handled_slot
=
slot
;
prev_sched
[
UE_id
].
rnti
=
rnti
;
prev_sched
[
UE_id
].
sfn
=
frame
;
prev_sched
[
UE_id
].
slot
=
slot
;
prev_sched
[
UE_id
].
harq_id
=
harq_id
;
prev_sched
[
UE_id
].
ts
=
ts
;
/* PUSCH in a later slot, but corresponding DCI now! */
nfapi_nr_ul_tti_request_t
*
future_ul_tti_req
=
&
RC
.
nrmac
[
module_id
]
->
UL_tti_req_ahead
[
0
][
sched_pusch
->
slot
];
future_ul_tti_req
->
SFN
=
sched_pusch
->
frame
;
// Melissa Elkadi, we hacked this to keep gNB from crashing
AssertFatal
(
future_ul_tti_req
->
SFN
==
sched_pusch
->
frame
&&
future_ul_tti_req
->
Slot
==
sched_pusch
->
slot
,
"%d.%d future UL_tti_req's frame.slot %d.%d does not match PUSCH %d.%d
\n
"
,
...
...
openair2/LAYER2/NR_MAC_gNB/main.c
View file @
30065ef0
...
...
@@ -81,7 +81,6 @@ void mac_top_init_gNB(void)
RC
.
nrmac
[
i
]
->
ul_handle
=
0
;
RC
.
nrmac
[
i
]
->
handled_frame
=
1025
;
RC
.
nrmac
[
i
]
->
first_MIB
=
true
;
if
(
get_softmodem_params
()
->
phy_test
)
{
...
...
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
View file @
30065ef0
...
...
@@ -641,7 +641,6 @@ typedef struct {
// UE selected beam index
uint8_t
UE_beam_index
[
MAX_MOBILES_PER_GNB
];
bool
Msg4_ACKed
[
MAX_MOBILES_PER_GNB
];
int
loop_dcch_dtch
[
MAX_MOBILES_PER_GNB
];
}
NR_UE_info_t
;
typedef
void
(
*
nr_pp_impl_dl
)(
module_id_t
mod_id
,
...
...
@@ -754,9 +753,6 @@ typedef struct gNB_MAC_INST_s {
NR_UE_sched_ctrl_t
*
sched_ctrlCommon
;
NR_Type0_PDCCH_CSS_config_t
type0_PDCCH_CSS_config
[
64
];
frame_t
handled_frame
;
sub_frame_t
handled_slot
;
bool
first_MIB
;
}
gNB_MAC_INST
;
...
...
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