Merge branch 'episys/master-nsa' into eurecom-episys-merge-nsa
This commit is contained in:
@@ -0,0 +1,52 @@
|
|||||||
|
log_config = {
|
||||||
|
global_log_level ="info";
|
||||||
|
global_log_verbosity ="medium";
|
||||||
|
hw_log_level ="info";
|
||||||
|
hw_log_verbosity ="medium";
|
||||||
|
phy_log_level ="info";
|
||||||
|
phy_log_verbosity ="medium";
|
||||||
|
mac_log_level ="info";
|
||||||
|
mac_log_verbosity ="medium";
|
||||||
|
rlc_log_level ="info";
|
||||||
|
rlc_log_verbosity ="medium";
|
||||||
|
pdcp_log_level ="info";
|
||||||
|
pdcp_log_verbosity ="medium";
|
||||||
|
rrc_log_level ="info";
|
||||||
|
rrc_log_verbosity ="full";
|
||||||
|
};
|
||||||
|
|
||||||
|
uicc0 = {
|
||||||
|
imsi = "208950000000031";
|
||||||
|
key = "0c0a34601d4f07677303652c0462535b";
|
||||||
|
opc= "63bfa50ee6523365ff14c1f45f88737d";
|
||||||
|
dnn= "oai";
|
||||||
|
nssai_sst=222;
|
||||||
|
nssai_sd=123;
|
||||||
|
}
|
||||||
|
|
||||||
|
L1s = (
|
||||||
|
{
|
||||||
|
num_cc = 1;
|
||||||
|
tr_n_preference = "nfapi";
|
||||||
|
local_n_if_name = "ens3";
|
||||||
|
remote_n_address = "127.0.0.1"; //Proxy IP
|
||||||
|
local_n_address = "127.0.0.1";
|
||||||
|
local_n_portc = 50600;
|
||||||
|
remote_n_portc = 50601;
|
||||||
|
local_n_portd = 50610;
|
||||||
|
remote_n_portd = 50611;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
RUs = (
|
||||||
|
{
|
||||||
|
local_rf = "yes"
|
||||||
|
nb_tx = 1
|
||||||
|
nb_rx = 1
|
||||||
|
att_tx = 90
|
||||||
|
att_rx = 0;
|
||||||
|
bands = [7,38,42,43];
|
||||||
|
max_pdschReferenceSignalPower = -27;
|
||||||
|
max_rxgain = 125;
|
||||||
|
}
|
||||||
|
);
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
log_config = {
|
||||||
|
global_log_level ="info";
|
||||||
|
global_log_verbosity ="medium";
|
||||||
|
hw_log_level ="info";
|
||||||
|
hw_log_verbosity ="medium";
|
||||||
|
phy_log_level ="info";
|
||||||
|
phy_log_verbosity ="medium";
|
||||||
|
mac_log_level ="info";
|
||||||
|
mac_log_verbosity ="medium";
|
||||||
|
rlc_log_level ="info";
|
||||||
|
rlc_log_verbosity ="medium";
|
||||||
|
pdcp_log_level ="info";
|
||||||
|
pdcp_log_verbosity ="medium";
|
||||||
|
rrc_log_level ="info";
|
||||||
|
rrc_log_verbosity ="full";
|
||||||
|
};
|
||||||
|
|
||||||
|
uicc0 = {
|
||||||
|
imsi = "208950000000032";
|
||||||
|
key = "0c0a34601d4f07677303652c0462535b";
|
||||||
|
opc= "63bfa50ee6523365ff14c1f45f88737d";
|
||||||
|
dnn= "oai";
|
||||||
|
nssai_sst=222;
|
||||||
|
nssai_sd=123;
|
||||||
|
}
|
||||||
|
|
||||||
|
L1s = (
|
||||||
|
{
|
||||||
|
num_cc = 1;
|
||||||
|
tr_n_preference = "nfapi";
|
||||||
|
local_n_if_name = "ens3";
|
||||||
|
remote_n_address = "127.0.0.1"; //Proxy IP
|
||||||
|
local_n_address = "127.0.0.1";
|
||||||
|
local_n_portc = 50600;
|
||||||
|
remote_n_portc = 50601;
|
||||||
|
local_n_portd = 50610;
|
||||||
|
remote_n_portd = 50611;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
RUs = (
|
||||||
|
{
|
||||||
|
local_rf = "yes"
|
||||||
|
nb_tx = 1
|
||||||
|
nb_rx = 1
|
||||||
|
att_tx = 90
|
||||||
|
att_rx = 0;
|
||||||
|
bands = [7,38,42,43];
|
||||||
|
max_pdschReferenceSignalPower = -27;
|
||||||
|
max_rxgain = 125;
|
||||||
|
}
|
||||||
|
);
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
log_config = {
|
||||||
|
global_log_level ="info";
|
||||||
|
global_log_verbosity ="medium";
|
||||||
|
hw_log_level ="info";
|
||||||
|
hw_log_verbosity ="medium";
|
||||||
|
phy_log_level ="info";
|
||||||
|
phy_log_verbosity ="medium";
|
||||||
|
mac_log_level ="info";
|
||||||
|
mac_log_verbosity ="medium";
|
||||||
|
rlc_log_level ="info";
|
||||||
|
rlc_log_verbosity ="medium";
|
||||||
|
pdcp_log_level ="info";
|
||||||
|
pdcp_log_verbosity ="medium";
|
||||||
|
rrc_log_level ="info";
|
||||||
|
rrc_log_verbosity ="full";
|
||||||
|
};
|
||||||
|
|
||||||
|
uicc0 = {
|
||||||
|
imsi = "208950000000033";
|
||||||
|
key = "0c0a34601d4f07677303652c0462535b";
|
||||||
|
opc= "63bfa50ee6523365ff14c1f45f88737d";
|
||||||
|
dnn= "oai";
|
||||||
|
nssai_sst=222;
|
||||||
|
nssai_sd=123;
|
||||||
|
}
|
||||||
|
|
||||||
|
L1s = (
|
||||||
|
{
|
||||||
|
num_cc = 1;
|
||||||
|
tr_n_preference = "nfapi";
|
||||||
|
local_n_if_name = "ens3";
|
||||||
|
remote_n_address = "127.0.0.1"; //Proxy IP
|
||||||
|
local_n_address = "127.0.0.1";
|
||||||
|
local_n_portc = 50600;
|
||||||
|
remote_n_portc = 50601;
|
||||||
|
local_n_portd = 50610;
|
||||||
|
remote_n_portd = 50611;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
RUs = (
|
||||||
|
{
|
||||||
|
local_rf = "yes"
|
||||||
|
nb_tx = 1
|
||||||
|
nb_rx = 1
|
||||||
|
att_tx = 90
|
||||||
|
att_rx = 0;
|
||||||
|
bands = [7,38,42,43];
|
||||||
|
max_pdschReferenceSignalPower = -27;
|
||||||
|
max_rxgain = 125;
|
||||||
|
}
|
||||||
|
);
|
||||||
@@ -458,7 +458,7 @@ int main( int argc, char **argv ) {
|
|||||||
|
|
||||||
init_NR_UE(1,rrc_config_path);
|
init_NR_UE(1,rrc_config_path);
|
||||||
|
|
||||||
int mode_offset = get_softmodem_params()->nsa ? NUMBER_OF_UE_MAX : 0;
|
int mode_offset = get_softmodem_params()->nsa ? NUMBER_OF_UE_MAX : 1;
|
||||||
uint16_t node_number = get_softmodem_params()->node_number;
|
uint16_t node_number = get_softmodem_params()->node_number;
|
||||||
ue_id_g = (node_number == 0) ? 0 : node_number - 2;
|
ue_id_g = (node_number == 0) ? 0 : node_number - 2;
|
||||||
AssertFatal(ue_id_g >= 0, "UE id is expected to be nonnegative.\n");
|
AssertFatal(ue_id_g >= 0, "UE id is expected to be nonnegative.\n");
|
||||||
|
|||||||
@@ -966,7 +966,7 @@ void nr_ra_succeeded(module_id_t mod_id, frame_t frame, int slot){
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
LOG_I(MAC, "[UE %d][%d.%d][RAPROC] RA procedure succeeded. CB-RA: Contention Resolution is successful.\n", mod_id, frame, slot);
|
LOG_A(MAC, "[UE %d][%d.%d][RAPROC] RA procedure succeeded. CB-RA: Contention Resolution is successful.\n", mod_id, frame, slot);
|
||||||
|
|
||||||
ra->RA_contention_resolution_timer_active = 0;
|
ra->RA_contention_resolution_timer_active = 0;
|
||||||
mac->crnti = ra->t_crnti;
|
mac->crnti = ra->t_crnti;
|
||||||
|
|||||||
@@ -1022,7 +1022,7 @@ NR_UE_L2_STATE_t nr_ue_scheduler(nr_downlink_indication_t *dl_info, nr_uplink_in
|
|||||||
nr_Msg3_transmitted(ul_info->module_id, ul_info->cc_id, ul_info->frame_tx, ul_info->slot_tx, ul_info->gNB_index);
|
nr_Msg3_transmitted(ul_info->module_id, ul_info->cc_id, ul_info->frame_tx, ul_info->slot_tx, ul_info->gNB_index);
|
||||||
}
|
}
|
||||||
if (ra->ra_state == WAIT_RAR && !ra->cfra){
|
if (ra->ra_state == WAIT_RAR && !ra->cfra){
|
||||||
LOG_I(NR_MAC,"[RAPROC][%d.%d] RA-Msg3 transmitted\n", frame_tx, slot_tx);
|
LOG_A(NR_MAC, "[RAPROC][%d.%d] RA-Msg3 transmitted\n", frame_tx, slot_tx);
|
||||||
nr_Msg3_transmitted(ul_info->module_id, ul_info->cc_id, ul_info->frame_tx, ul_info->slot_tx, ul_info->gNB_index);
|
nr_Msg3_transmitted(ul_info->module_id, ul_info->cc_id, ul_info->frame_tx, ul_info->slot_tx, ul_info->gNB_index);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1221,7 +1221,7 @@ void nr_generate_Msg2(module_id_t module_idP, int CC_id, frame_t frameP, sub_fra
|
|||||||
dl_req->nPDUs+=1;
|
dl_req->nPDUs+=1;
|
||||||
nfapi_nr_dl_tti_pdsch_pdu_rel15_t *pdsch_pdu_rel15 = &dl_tti_pdsch_pdu->pdsch_pdu.pdsch_pdu_rel15;
|
nfapi_nr_dl_tti_pdsch_pdu_rel15_t *pdsch_pdu_rel15 = &dl_tti_pdsch_pdu->pdsch_pdu.pdsch_pdu_rel15;
|
||||||
|
|
||||||
LOG_I(NR_MAC,"[gNB %d][RAPROC] CC_id %d Frame %d, slotP %d: Generating RA-Msg2 DCI, rnti 0x%x, state %d, CoreSetType %d\n",
|
LOG_A(NR_MAC,"[gNB %d][RAPROC] CC_id %d Frame %d, slotP %d: Generating RA-Msg2 DCI, rnti 0x%x, state %d, CoreSetType %d\n",
|
||||||
module_idP, CC_id, frameP, slotP, ra->RA_rnti, ra->state,pdcch_pdu_rel15->CoreSetType);
|
module_idP, CC_id, frameP, slotP, ra->RA_rnti, ra->state,pdcch_pdu_rel15->CoreSetType);
|
||||||
|
|
||||||
// SCF222: PDU index incremented for each PDSCH PDU sent in TX control message. This is used to associate control
|
// SCF222: PDU index incremented for each PDSCH PDU sent in TX control message. This is used to associate control
|
||||||
@@ -1597,7 +1597,7 @@ void nr_generate_Msg4(module_id_t module_idP, int CC_id, frame_t frameP, sub_fra
|
|||||||
dl_req->nPDUs+=1;
|
dl_req->nPDUs+=1;
|
||||||
nfapi_nr_dl_tti_pdsch_pdu_rel15_t *pdsch_pdu_rel15 = &dl_tti_pdsch_pdu->pdsch_pdu.pdsch_pdu_rel15;
|
nfapi_nr_dl_tti_pdsch_pdu_rel15_t *pdsch_pdu_rel15 = &dl_tti_pdsch_pdu->pdsch_pdu.pdsch_pdu_rel15;
|
||||||
|
|
||||||
LOG_I(NR_MAC,"[gNB %d] [RAPROC] CC_id %d Frame %d, slotP %d: Generating RA-Msg4 DCI, state %d\n", module_idP, CC_id, frameP, slotP, ra->state);
|
LOG_A(NR_MAC, "[gNB %d] [RAPROC] CC_id %d Frame %d, slotP %d: Generating RA-Msg4 DCI, state %d\n", module_idP, CC_id, frameP, slotP, ra->state);
|
||||||
|
|
||||||
// SCF222: PDU index incremented for each PDSCH PDU sent in TX control message. This is used to associate control
|
// SCF222: PDU index incremented for each PDSCH PDU sent in TX control message. This is used to associate control
|
||||||
// information to data and is reset every slot.
|
// information to data and is reset every slot.
|
||||||
@@ -1767,7 +1767,7 @@ void nr_check_Msg4_Ack(module_id_t module_id, int CC_id, frame_t frame, sub_fram
|
|||||||
if (harq->is_waiting == 0) {
|
if (harq->is_waiting == 0) {
|
||||||
if (harq->round == 0) {
|
if (harq->round == 0) {
|
||||||
if (stats->dlsch_errors == 0) {
|
if (stats->dlsch_errors == 0) {
|
||||||
LOG_I(NR_MAC, "(ue %i, rnti 0x%04x) Received Ack of RA-Msg4. CBRA procedure succeeded!\n", UE_id, ra->rnti);
|
LOG_A(NR_MAC, "(ue %i, rnti 0x%04x) Received Ack of RA-Msg4. CBRA procedure succeeded!\n", UE_id, ra->rnti);
|
||||||
nr_clear_ra_proc(module_id, CC_id, frame, ra);
|
nr_clear_ra_proc(module_id, CC_id, frame, ra);
|
||||||
UE_info->active[UE_id] = true;
|
UE_info->active[UE_id] = true;
|
||||||
UE_info->Msg4_ACKed[UE_id] = true;
|
UE_info->Msg4_ACKed[UE_id] = true;
|
||||||
|
|||||||
@@ -851,7 +851,7 @@ void nr_fr1_dlsch_preprocessor(module_id_t module_id, frame_t frame, sub_frame_t
|
|||||||
frame,
|
frame,
|
||||||
slot,
|
slot,
|
||||||
&UE_info->list,
|
&UE_info->list,
|
||||||
2,
|
MAX_MOBILES_PER_GNB,
|
||||||
n_rb_sched,
|
n_rb_sched,
|
||||||
rballoc_mask);
|
rballoc_mask);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -783,7 +783,7 @@ void nr_rx_sdu(const module_id_t gnb_mod_idP,
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
LOG_I(NR_MAC,"[RAPROC] RA-Msg3 received (sdu_lenP %d)\n",sdu_lenP);
|
LOG_A(NR_MAC,"[RAPROC] RA-Msg3 received (sdu_lenP %d)\n",sdu_lenP);
|
||||||
LOG_D(NR_MAC,"[RAPROC] Received Msg3:\n");
|
LOG_D(NR_MAC,"[RAPROC] Received Msg3:\n");
|
||||||
for (int k = 0; k < sdu_lenP; k++) {
|
for (int k = 0; k < sdu_lenP; k++) {
|
||||||
LOG_D(NR_MAC,"(%i): 0x%x\n",k,sduP[k]);
|
LOG_D(NR_MAC,"(%i): 0x%x\n",k,sduP[k]);
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ void handle_nr_rach(NR_UL_IND_t *UL_info)
|
|||||||
bool in_timewindow = frame_diff == 0 || (frame_diff == 1 && UL_info->slot < 7);
|
bool in_timewindow = frame_diff == 0 || (frame_diff == 1 && UL_info->slot < 7);
|
||||||
|
|
||||||
if (UL_INFO.rach_ind.number_of_pdus>0 && in_timewindow) {
|
if (UL_INFO.rach_ind.number_of_pdus>0 && in_timewindow) {
|
||||||
LOG_I(MAC,"UL_info[Frame %d, Slot %d] Calling initiate_ra_proc RACH:SFN/SLOT:%d/%d\n",
|
LOG_A(MAC,"UL_info[Frame %d, Slot %d] Calling initiate_ra_proc RACH:SFN/SLOT:%d/%d\n",
|
||||||
UL_info->frame, UL_info->slot, UL_INFO.rach_ind.sfn, UL_INFO.rach_ind.slot);
|
UL_info->frame, UL_info->slot, UL_INFO.rach_ind.sfn, UL_INFO.rach_ind.slot);
|
||||||
int npdus = UL_INFO.rach_ind.number_of_pdus;
|
int npdus = UL_INFO.rach_ind.number_of_pdus;
|
||||||
for(int i = 0; i < npdus; i++) {
|
for(int i = 0; i < npdus; i++) {
|
||||||
|
|||||||
@@ -278,6 +278,12 @@ static bool is_my_dci(NR_UE_MAC_INST_t *mac, nfapi_nr_dl_dci_pdu_t *received_pdu
|
|||||||
{
|
{
|
||||||
if (received_pdu->RNTI != mac->crnti && mac->ra.ra_state == RA_SUCCEEDED)
|
if (received_pdu->RNTI != mac->crnti && mac->ra.ra_state == RA_SUCCEEDED)
|
||||||
return false;
|
return false;
|
||||||
|
if (received_pdu->RNTI != mac->ra.t_crnti && mac->ra.ra_state == WAIT_CONTENTION_RESOLUTION)
|
||||||
|
return false;
|
||||||
|
if (received_pdu->RNTI != 0x10b && mac->ra.ra_state == WAIT_RAR)
|
||||||
|
return false;
|
||||||
|
if (received_pdu->RNTI != 0xFFFF && mac->ra.ra_state <= GENERATE_PREAMBLE)
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -294,11 +300,7 @@ static void copy_dl_tti_req_to_dl_info(nr_downlink_indication_t *dl_info, nfapi_
|
|||||||
int pdu_idx = 0;
|
int pdu_idx = 0;
|
||||||
|
|
||||||
int num_pdus = dl_tti_request->dl_tti_request_body.nPDUs;
|
int num_pdus = dl_tti_request->dl_tti_request_body.nPDUs;
|
||||||
if (num_pdus <= 0)
|
AssertFatal(num_pdus >= 0, "Invalid dl_tti_request number of PDUS\n");
|
||||||
{
|
|
||||||
LOG_E(NR_PHY, "%s: dl_tti_request number of PDUS <= 0\n", __FUNCTION__);
|
|
||||||
abort();
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < num_pdus; i++)
|
for (int i = 0; i < num_pdus; i++)
|
||||||
{
|
{
|
||||||
@@ -316,10 +318,13 @@ static void copy_dl_tti_req_to_dl_info(nr_downlink_indication_t *dl_info, nfapi_
|
|||||||
uint16_t num_dcis = pdu_list->pdcch_pdu.pdcch_pdu_rel15.numDlDci;
|
uint16_t num_dcis = pdu_list->pdcch_pdu.pdcch_pdu_rel15.numDlDci;
|
||||||
if (num_dcis > 0)
|
if (num_dcis > 0)
|
||||||
{
|
{
|
||||||
dl_info->dci_ind = CALLOC(1, sizeof(fapi_nr_dci_indication_t));
|
if (!dl_info->dci_ind)
|
||||||
|
{
|
||||||
|
dl_info->dci_ind = CALLOC(1, sizeof(fapi_nr_dci_indication_t));
|
||||||
|
}
|
||||||
dl_info->dci_ind->SFN = dl_tti_request->SFN;
|
dl_info->dci_ind->SFN = dl_tti_request->SFN;
|
||||||
dl_info->dci_ind->slot = dl_tti_request->Slot;
|
dl_info->dci_ind->slot = dl_tti_request->Slot;
|
||||||
AssertFatal(num_dcis < sizeof(dl_info->dci_ind->dci_list) / sizeof(dl_info->dci_ind->dci_list[0]),
|
AssertFatal(num_dcis <= sizeof(dl_info->dci_ind->dci_list) / sizeof(dl_info->dci_ind->dci_list[0]),
|
||||||
"The number of DCIs is greater than dci_list");
|
"The number of DCIs is greater than dci_list");
|
||||||
for (int j = 0; j < num_dcis; j++)
|
for (int j = 0; j < num_dcis; j++)
|
||||||
{
|
{
|
||||||
@@ -360,7 +365,10 @@ static void copy_dl_tti_req_to_dl_info(nr_downlink_indication_t *dl_info, nfapi_
|
|||||||
will be freed after handling. This is why the PDU index will
|
will be freed after handling. This is why the PDU index will
|
||||||
always be zero for the RX_IND becasue we should not have more than
|
always be zero for the RX_IND becasue we should not have more than
|
||||||
one MIB. */
|
one MIB. */
|
||||||
dl_info->rx_ind = CALLOC(1, sizeof(*dl_info->rx_ind));
|
if (!dl_info->rx_ind)
|
||||||
|
{
|
||||||
|
dl_info->rx_ind = CALLOC(1, sizeof(*dl_info->rx_ind));
|
||||||
|
}
|
||||||
fapi_nr_rx_indication_t *rx_ind = dl_info->rx_ind;
|
fapi_nr_rx_indication_t *rx_ind = dl_info->rx_ind;
|
||||||
rx_ind->sfn = dl_tti_request->SFN;
|
rx_ind->sfn = dl_tti_request->SFN;
|
||||||
rx_ind->slot = dl_tti_request->Slot;
|
rx_ind->slot = dl_tti_request->Slot;
|
||||||
@@ -408,13 +416,12 @@ static void copy_tx_data_req_to_dl_info(nr_downlink_indication_t *dl_info, nfapi
|
|||||||
{
|
{
|
||||||
NR_UE_MAC_INST_t *mac = get_mac_inst(dl_info->module_id);
|
NR_UE_MAC_INST_t *mac = get_mac_inst(dl_info->module_id);
|
||||||
int num_pdus = tx_data_request->Number_of_PDUs;
|
int num_pdus = tx_data_request->Number_of_PDUs;
|
||||||
if (num_pdus <= 0)
|
AssertFatal(num_pdus >= 0, "Invalid tx_data_request number of PDUS\n");
|
||||||
{
|
|
||||||
LOG_E(NR_PHY, "%s: tx_data_request number of PDUS <= 0\n", __FUNCTION__);
|
|
||||||
abort();
|
|
||||||
}
|
|
||||||
|
|
||||||
dl_info->rx_ind = CALLOC(1, sizeof(fapi_nr_rx_indication_t));
|
if (!dl_info->rx_ind)
|
||||||
|
{
|
||||||
|
dl_info->rx_ind = CALLOC(1, sizeof(fapi_nr_rx_indication_t));
|
||||||
|
}
|
||||||
AssertFatal(dl_info->rx_ind != NULL, "%s: Out of memory in calloc", __FUNCTION__);
|
AssertFatal(dl_info->rx_ind != NULL, "%s: Out of memory in calloc", __FUNCTION__);
|
||||||
fapi_nr_rx_indication_t *rx_ind = dl_info->rx_ind;
|
fapi_nr_rx_indication_t *rx_ind = dl_info->rx_ind;
|
||||||
rx_ind->sfn = tx_data_request->SFN;
|
rx_ind->sfn = tx_data_request->SFN;
|
||||||
@@ -459,11 +466,7 @@ static void copy_ul_dci_data_req_to_dl_info(nr_downlink_indication_t *dl_info, n
|
|||||||
int pdu_idx = 0;
|
int pdu_idx = 0;
|
||||||
|
|
||||||
int num_pdus = ul_dci_req->numPdus;
|
int num_pdus = ul_dci_req->numPdus;
|
||||||
if (num_pdus <= 0)
|
AssertFatal(num_pdus >= 0, "Invalid ul_dci_request number of PDUS\n");
|
||||||
{
|
|
||||||
LOG_E(NR_PHY, "%s: ul_dci_request number of PDUS <= 0\n", __FUNCTION__);
|
|
||||||
abort();
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < num_pdus; i++)
|
for (int i = 0; i < num_pdus; i++)
|
||||||
{
|
{
|
||||||
@@ -475,7 +478,10 @@ static void copy_ul_dci_data_req_to_dl_info(nr_downlink_indication_t *dl_info, n
|
|||||||
uint16_t num_dci = pdu_list->pdcch_pdu.pdcch_pdu_rel15.numDlDci;
|
uint16_t num_dci = pdu_list->pdcch_pdu.pdcch_pdu_rel15.numDlDci;
|
||||||
if (num_dci > 0)
|
if (num_dci > 0)
|
||||||
{
|
{
|
||||||
dl_info->dci_ind = CALLOC(1, sizeof(fapi_nr_dci_indication_t));
|
if (!dl_info->dci_ind)
|
||||||
|
{
|
||||||
|
dl_info->dci_ind = CALLOC(1, sizeof(fapi_nr_dci_indication_t));
|
||||||
|
}
|
||||||
AssertFatal(dl_info->dci_ind != NULL, "%s: Out of memory in calloc", __FUNCTION__);
|
AssertFatal(dl_info->dci_ind != NULL, "%s: Out of memory in calloc", __FUNCTION__);
|
||||||
dl_info->dci_ind->SFN = ul_dci_req->SFN;
|
dl_info->dci_ind->SFN = ul_dci_req->SFN;
|
||||||
dl_info->dci_ind->slot = ul_dci_req->Slot;
|
dl_info->dci_ind->slot = ul_dci_req->Slot;
|
||||||
@@ -550,11 +556,7 @@ static void copy_ul_tti_data_req_to_dl_info(nr_downlink_indication_t *dl_info, n
|
|||||||
{
|
{
|
||||||
NR_UE_MAC_INST_t *mac = get_mac_inst(dl_info->module_id);
|
NR_UE_MAC_INST_t *mac = get_mac_inst(dl_info->module_id);
|
||||||
int num_pdus = ul_tti_req->n_pdus;
|
int num_pdus = ul_tti_req->n_pdus;
|
||||||
if (num_pdus <= 0)
|
AssertFatal(num_pdus >= 0, "Invalid ul_tti_request number of PDUS\n");
|
||||||
{
|
|
||||||
LOG_E(NR_PHY, "%s: ul_tti_request number of PDUS <= 0\n", __FUNCTION__);
|
|
||||||
abort();
|
|
||||||
}
|
|
||||||
AssertFatal(num_pdus <= sizeof(ul_tti_req->pdus_list) / sizeof(ul_tti_req->pdus_list[0]),
|
AssertFatal(num_pdus <= sizeof(ul_tti_req->pdus_list) / sizeof(ul_tti_req->pdus_list[0]),
|
||||||
"Too many pdus %d in ul_tti_req\n", num_pdus);
|
"Too many pdus %d in ul_tti_req\n", num_pdus);
|
||||||
|
|
||||||
|
|||||||
@@ -1053,7 +1053,7 @@ rrc_gNB_process_NGAP_PDUSESSION_SETUP_REQ(
|
|||||||
uint8_t nb_pdusessions_tosetup = NGAP_PDUSESSION_SETUP_REQ(msg_p).nb_pdusessions_tosetup;
|
uint8_t nb_pdusessions_tosetup = NGAP_PDUSESSION_SETUP_REQ(msg_p).nb_pdusessions_tosetup;
|
||||||
pdu_sessions_done = 0;
|
pdu_sessions_done = 0;
|
||||||
|
|
||||||
PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, GNB_FLAG_YES, ue_context_p->ue_context.rnti, 0, 0);
|
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, 0, GNB_FLAG_YES, ue_context_p->ue_context.rnti, 0, 0, 0);
|
||||||
for (int i = 0; i < NR_NB_RB_MAX - 3; i++) {
|
for (int i = 0; i < NR_NB_RB_MAX - 3; i++) {
|
||||||
if(ue_context_p->ue_context.pduSession[i].status >= PDU_SESSION_STATUS_DONE)
|
if(ue_context_p->ue_context.pduSession[i].status >= PDU_SESSION_STATUS_DONE)
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
@@ -578,7 +578,8 @@ int8_t nr_rrc_ue_decode_NR_BCCH_BCH_Message(
|
|||||||
|
|
||||||
if (NR_UE_rrc_inst[module_id].mib != NULL)
|
if (NR_UE_rrc_inst[module_id].mib != NULL)
|
||||||
SEQUENCE_free( &asn_DEF_NR_BCCH_BCH_Message, (void *)bcch_message, 1 );
|
SEQUENCE_free( &asn_DEF_NR_BCCH_BCH_Message, (void *)bcch_message, 1 );
|
||||||
else LOG_I(NR_RRC,"Configuring MAC for first MIB reception\n");
|
else
|
||||||
|
LOG_A(NR_RRC, "Configuring MAC for first MIB reception\n");
|
||||||
|
|
||||||
asn_dec_rval_t dec_rval = uper_decode_complete(NULL,
|
asn_dec_rval_t dec_rval = uper_decode_complete(NULL,
|
||||||
&asn_DEF_NR_BCCH_BCH_Message,
|
&asn_DEF_NR_BCCH_BCH_Message,
|
||||||
@@ -1195,7 +1196,7 @@ int8_t nr_rrc_ue_decode_NR_BCCH_DL_SCH_Message(module_id_t module_id,
|
|||||||
if( g_log->log_component[NR_RRC].level >= OAILOG_DEBUG ) {
|
if( g_log->log_component[NR_RRC].level >= OAILOG_DEBUG ) {
|
||||||
xer_fprint(stdout, &asn_DEF_NR_SIB1, (const void *) NR_UE_rrc_inst[module_id].sib1[gNB_index]);
|
xer_fprint(stdout, &asn_DEF_NR_SIB1, (const void *) NR_UE_rrc_inst[module_id].sib1[gNB_index]);
|
||||||
}
|
}
|
||||||
LOG_I(NR_RRC, "SIB1 decoded\n");
|
LOG_A(NR_RRC, "SIB1 decoded\n");
|
||||||
|
|
||||||
/// dump_SIB1();
|
/// dump_SIB1();
|
||||||
// FIXME: improve condition for the RA trigger
|
// FIXME: improve condition for the RA trigger
|
||||||
|
|||||||
Reference in New Issue
Block a user