Commit dd124b72 authored by mir's avatar mir

Bug and compilation flag added

parent 1327efee
...@@ -1583,6 +1583,8 @@ add_library(L2_NR ...@@ -1583,6 +1583,8 @@ add_library(L2_NR
${GNB_APP_SRC} ${GNB_APP_SRC}
) )
target_link_libraries(L2_NR PRIVATE f1ap x2ap s1ap ngap nr_rrc e1ap)
add_library(e1_if add_library(e1_if
${NR_RRC_DIR}/cucp_cuup_direct.c ${NR_RRC_DIR}/cucp_cuup_direct.c
${NR_RRC_DIR}/cucp_cuup_e1ap.c ${NR_RRC_DIR}/cucp_cuup_e1ap.c
...@@ -1596,7 +1598,6 @@ add_library(e1_pdcp_if ...@@ -1596,7 +1598,6 @@ add_library(e1_pdcp_if
target_link_libraries(e1_pdcp_if PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs) target_link_libraries(e1_pdcp_if PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
target_link_libraries(L2_NR PRIVATE f1ap x2ap s1ap ngap nr_rrc e1ap)
add_library(L2_LTE_NR add_library(L2_LTE_NR
${L2_RRC_SRC} ${L2_RRC_SRC}
...@@ -2262,6 +2263,10 @@ add_executable(nr-softmodem ...@@ -2262,6 +2263,10 @@ add_executable(nr-softmodem
${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c ${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c
${T_SOURCE} ${T_SOURCE}
${SHLIB_LOADER_SOURCES} ${SHLIB_LOADER_SOURCES}
#L2_NR
${L2_NR_SRC}
${MAC_NR_SRC}
${GNB_APP_SRC}
) )
target_link_libraries(nr-softmodem PRIVATE target_link_libraries(nr-softmodem PRIVATE
...@@ -2270,7 +2275,7 @@ target_link_libraries(nr-softmodem PRIVATE ...@@ -2270,7 +2275,7 @@ target_link_libraries(nr-softmodem PRIVATE
ITTI ${NAS_UE_LIB} lte_rrc nr_rrc ITTI ${NAS_UE_LIB} lte_rrc nr_rrc
ngap s1ap L2_LTE_NR L2_NR MAC_NR_COMMON NFAPI_COMMON_LIB NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB NFAPI_USER_LIB SIMU SIMU_ETH ngap s1ap L2_LTE_NR L2_NR MAC_NR_COMMON NFAPI_COMMON_LIB NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB NFAPI_USER_LIB SIMU SIMU_ETH
x2ap f1ap m2ap m3ap e1ap x2ap f1ap m2ap m3ap e1ap
-Wl,--end-group z dl) -Wl,--end-group z dl f1ap x2ap s1ap ngap nr_rrc )
target_link_libraries(nr-softmodem PRIVATE pthread m CONFIG_LIB rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} sctp ${ATLAS_LIBRARIES}) target_link_libraries(nr-softmodem PRIVATE pthread m CONFIG_LIB rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} sctp ${ATLAS_LIBRARIES})
target_link_libraries(nr-softmodem PRIVATE ${T_LIB}) target_link_libraries(nr-softmodem PRIVATE ${T_LIB})
...@@ -2286,6 +2291,10 @@ endif() ...@@ -2286,6 +2291,10 @@ endif()
target_link_libraries(nr-softmodem PRIVATE target_link_libraries(nr-softmodem PRIVATE
asn1_lte_rrc asn1_nr_rrc asn1_s1ap asn1_ngap asn1_m2ap asn1_m3ap asn1_x2ap asn1_f1ap asn1_lpp) asn1_lte_rrc asn1_nr_rrc asn1_s1ap asn1_ngap asn1_m2ap asn1_m3ap asn1_x2ap asn1_f1ap asn1_lpp)
target_compile_definitions(nr-softmodem PRIVATE MIR_FLAG)
add_executable(nr-cuup add_executable(nr-cuup
executables/nr-cuup.c executables/nr-cuup.c
executables/softmodem-common.c executables/softmodem-common.c
......
...@@ -124,14 +124,14 @@ int drb_config_gtpu_create(const protocol_ctxt_t *const ctxt_p, ...@@ -124,14 +124,14 @@ int drb_config_gtpu_create(const protocol_ctxt_t *const ctxt_p,
create_tunnel_req.num_tunnels = UE->nb_of_pdusessions; create_tunnel_req.num_tunnels = UE->nb_of_pdusessions;
create_tunnel_req.ue_id = UE->rnti; create_tunnel_req.ue_id = UE->rnti;
int ret = gtpv1u_create_ngu_tunnel(getCxtE1(instance)->gtpInstN3, int ret = gtpv1u_create_ngu_tunnel(getCxtE1(instance)->gtpInstN3,
&create_tunnel_req, &create_tunnel_req,
&create_tunnel_resp, &create_tunnel_resp,
nr_pdcp_data_req_drb, nr_pdcp_data_req_drb,
sdap_data_req); sdap_data_req);
if (ret != 0) { if (ret != 0) {
LOG_E(NR_RRC,"rrc_gNB_process_NGAP_PDUSESSION_SETUP_REQ : gtpv1u_create_ngu_tunnel failed,start to release UE rnti %ld\n", LOG_E(NR_RRC,"rrc_gNB_process_NGAP_PDUSESSION_SETUP_REQ : gtpv1u_create_ngu_tunnel failed,start to release UE rnti %ld\n",
create_tunnel_req.ue_id); create_tunnel_req.ue_id);
return ret; return ret;
} }
...@@ -154,17 +154,18 @@ int drb_config_gtpu_create(const protocol_ctxt_t *const ctxt_p, ...@@ -154,17 +154,18 @@ int drb_config_gtpu_create(const protocol_ctxt_t *const ctxt_p,
LOG_D(NR_RRC, "Configuring PDCP DRBs for UE %x\n", UE->rnti); LOG_D(NR_RRC, "Configuring PDCP DRBs for UE %x\n", UE->rnti);
nr_pdcp_add_drbs(ctxt_p->enb_flag, nr_pdcp_add_drbs(ctxt_p->enb_flag,
ctxt_p->rntiMaybeUEid, ctxt_p->rntiMaybeUEid,
0, 0,
DRB_configList, DRB_configList,
(UE->integrity_algorithm << 4) | UE->ciphering_algorithm, (UE->integrity_algorithm << 4) | UE->ciphering_algorithm,
kUPenc, kUPenc,
kUPint, kUPint,
rlc_bearer2add_list); get_softmodem_params()->sa ? UE->masterCellGroup->rlc_BearerToAddModList : NULL);
return ret; return ret;
} }
/*
static NR_SRB_ToAddModList_t **generateSRB2_confList(gNB_RRC_UE_t *ue, NR_SRB_ToAddModList_t *SRB_configList, uint8_t xid) static NR_SRB_ToAddModList_t **generateSRB2_confList(gNB_RRC_UE_t *ue, NR_SRB_ToAddModList_t *SRB_configList, uint8_t xid)
{ {
NR_SRB_ToAddModList_t **SRB_configList2 = NULL; NR_SRB_ToAddModList_t **SRB_configList2 = NULL;
...@@ -180,10 +181,12 @@ static NR_SRB_ToAddModList_t **generateSRB2_confList(gNB_RRC_UE_t *ue, NR_SRB_To ...@@ -180,10 +181,12 @@ static NR_SRB_ToAddModList_t **generateSRB2_confList(gNB_RRC_UE_t *ue, NR_SRB_To
return SRB_configList2; return SRB_configList2;
} }
*/
static static
void cucp_cuup_bearer_context_setup_direct(e1ap_bearer_setup_req_t *const req, instance_t instance, uint8_t xid) void cucp_cuup_bearer_context_setup_direct(e1ap_bearer_setup_req_t *const req, instance_t instance, uint8_t xid)
{ {
/*
rrc_gNB_ue_context_t *ue_context_p = rrc_gNB_get_ue_context_by_rnti(RC.nrrrc[instance], req->rnti); rrc_gNB_ue_context_t *ue_context_p = rrc_gNB_get_ue_context_by_rnti(RC.nrrrc[instance], req->rnti);
gNB_RRC_UE_t *UE = &ue_context_p->ue_context; gNB_RRC_UE_t *UE = &ue_context_p->ue_context;
...@@ -202,6 +205,31 @@ void cucp_cuup_bearer_context_setup_direct(e1ap_bearer_setup_req_t *const req, i ...@@ -202,6 +205,31 @@ void cucp_cuup_bearer_context_setup_direct(e1ap_bearer_setup_req_t *const req, i
assert(UE->DRB_configList->list.count == UE->masterCellGroup->rlc_BearerToAddModList->list.count); assert(UE->DRB_configList->list.count == UE->masterCellGroup->rlc_BearerToAddModList->list.count);
} }
*/
rrc_gNB_ue_context_t *ue_context_p = rrc_gNB_get_ue_context_by_rnti(RC.nrrrc[instance], req->rnti);
gNB_RRC_UE_t *UE = &ue_context_p->ue_context;
protocol_ctxt_t ctxt = {0};
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, 0, GNB_FLAG_YES, UE->rnti, 0, 0, 0);
fill_DRB_configList(&ctxt, ue_context_p, xid);
e1ap_bearer_setup_resp_t resp = {0};
resp.numPDUSessions = req->numPDUSessions;
for (int i = 0; i < resp.numPDUSessions; ++i) {
resp.pduSession[i].numDRBSetup = req->pduSession[i].numDRB2Setup;
for (int j = 0; j < req->pduSession[i].numDRB2Setup; j++) {
DRB_nGRAN_to_setup_t *req_drb = req->pduSession[i].DRBnGRanList + j;
DRB_nGRAN_setup_t *resp_drb = resp.pduSession[i].DRBnGRanList + j;
resp_drb->id = req_drb->id;
resp_drb->numQosFlowSetup = req_drb->numQosFlow2Setup;
for (int k = 0; k < resp_drb->numQosFlowSetup; k++)
resp_drb->qosFlows[k].id = req_drb->qosFlows[k].id;
}
}
gNB_RRC_INST *rrc = RC.nrrrc[ctxt.module_id]; gNB_RRC_INST *rrc = RC.nrrrc[ctxt.module_id];
// GTP tunnel for UL // GTP tunnel for UL
int ret = drb_config_gtpu_create(&ctxt, ue_context_p, req, UE->DRB_configList, rrc->e1_inst); int ret = drb_config_gtpu_create(&ctxt, ue_context_p, req, UE->DRB_configList, rrc->e1_inst);
......
...@@ -86,6 +86,11 @@ static int get_single_ue_rnti(void) ...@@ -86,6 +86,11 @@ static int get_single_ue_rnti(void)
return ue->rnti; return ue->rnti;
} }
#ifdef MIR_FLAG
//static_assert(0!=0, "Compiled");
static static
pthread_once_t once_bearer = PTHREAD_ONCE_INIT; pthread_once_t once_bearer = PTHREAD_ONCE_INIT;
// Forward declaration. Forget my sins. // Forward declaration. Forget my sins.
...@@ -108,6 +113,7 @@ void create_bearer(void) ...@@ -108,6 +113,7 @@ void create_bearer(void)
rrc_gNB_trigger_new_bearer(rnti); rrc_gNB_trigger_new_bearer(rnti);
} }
#endif
static bool nr_sdap_tx_entity(nr_sdap_entity_t *entity, static bool nr_sdap_tx_entity(nr_sdap_entity_t *entity,
protocol_ctxt_t *ctxt_p, protocol_ctxt_t *ctxt_p,
...@@ -146,6 +152,7 @@ static bool nr_sdap_tx_entity(nr_sdap_entity_t *entity, ...@@ -146,6 +152,7 @@ static bool nr_sdap_tx_entity(nr_sdap_entity_t *entity,
if(!pdcp_ent_has_sdap){ if(!pdcp_ent_has_sdap){
LOG_D(SDAP, "TX - DRB ID: %ld does not have SDAP\n", entity->qfi2drb_table[qfi].drb_id); LOG_D(SDAP, "TX - DRB ID: %ld does not have SDAP\n", entity->qfi2drb_table[qfi].drb_id);
#ifdef MIR_FLAG
// mir // mir
// Naive L4/L3 packet classifier // Naive L4/L3 packet classifier
struct iphdr* hdr = (struct iphdr*)sdu_buffer; struct iphdr* hdr = (struct iphdr*)sdu_buffer;
...@@ -160,6 +167,7 @@ static bool nr_sdap_tx_entity(nr_sdap_entity_t *entity, ...@@ -160,6 +167,7 @@ static bool nr_sdap_tx_entity(nr_sdap_entity_t *entity,
sdap_drb_id += 1; //cnt%2; sdap_drb_id += 1; //cnt%2;
//cnt++; //cnt++;
} }
#endif
ret = nr_pdcp_data_req_drb(ctxt_p, ret = nr_pdcp_data_req_drb(ctxt_p,
srb_flag, srb_flag,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment