Merge remote-tracking branch 'origin/NR_SA_F1AP_5GRECORDS' into develop-NR_SA_F1AP_5GRECORDS
# Conflicts: # executables/nr-uesoftmodem.h # openair1/SCHED_NR_UE/pucch_uci_ue_nr.c # openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c # openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c # openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c # openair2/RRC/NR/rrc_gNB_reconfig.c # openair2/RRC/NR_UE/L2_interface_ue.c
This commit is contained in:
@@ -336,8 +336,8 @@ else (CUDA_FOUND)
|
||||
endif ()
|
||||
|
||||
if (SANITIZE_ADDRESS)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fno-common")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-common")
|
||||
endif ()
|
||||
|
||||
add_definitions("-DASN_DISABLE_OER_SUPPORT")
|
||||
|
||||
@@ -98,7 +98,6 @@ pthread_cond_t sync_cond;
|
||||
pthread_mutex_t sync_mutex;
|
||||
int sync_var=-1; //!< protected by mutex \ref sync_mutex.
|
||||
int config_sync_var=-1;
|
||||
msc_interface_t msc_interface;
|
||||
|
||||
volatile int start_gNB = 0;
|
||||
volatile int oai_exit = 0;
|
||||
|
||||
@@ -92,7 +92,6 @@ unsigned short config_frames[4] = {2,9,11,13};
|
||||
#endif
|
||||
|
||||
extern const char *duplex_mode[];
|
||||
msc_interface_t msc_interface;
|
||||
THREAD_STRUCT thread_struct;
|
||||
|
||||
// Thread variables
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
{"ue-scan-carrier", CONFIG_HLP_UESCAN, PARAMFLAG_BOOL, iptr:&(UE->UE_scan_carrier), defintval:0, TYPE_INT, 0}, \
|
||||
{"ue-fo-compensation", CONFIG_HLP_UEFO, PARAMFLAG_BOOL, iptr:&(UE->UE_fo_compensation), defintval:0, TYPE_INT, 0}, \
|
||||
{"ue-max-power", NULL, 0, iptr:&(tx_max_power[0]), defintval:90, TYPE_INT, 0}, \
|
||||
{"r" , CONFIG_HLP_PRB, 0, iptr:&(fp->N_RB_DL), defintval:160, TYPE_UINT, 0}, \
|
||||
{"r" , CONFIG_HLP_PRB, 0, uptr:&(fp->N_RB_DL), defintval:160, TYPE_UINT, 0}, \
|
||||
{"A" , CONFIG_HLP_TADV, 0, iptr:&(UE->timing_advance), defintval:0, TYPE_INT, 0}, \
|
||||
{"E" , CONFIG_HLP_TQFS, PARAMFLAG_BOOL, u8ptr:&(fp->threequarter_fs), defintval:0, TYPE_UINT8, 0}, \
|
||||
{"T" , CONFIG_HLP_TDD, PARAMFLAG_BOOL, iptr:&tddflag, defintval:0, TYPE_INT, 0}, \
|
||||
|
||||
@@ -211,16 +211,19 @@ int nr_slot_fep_init_sync(PHY_VARS_NR_UE *ue,
|
||||
memset(&common_vars->common_vars_rx_data_per_thread[proc->thread_id].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol],0,frame_parms->ofdm_symbol_size*sizeof(int32_t));
|
||||
|
||||
int16_t *rxdata_ptr;
|
||||
rx_offset%=frame_length_samples*2;
|
||||
|
||||
if (frame_length_samples - rx_offset < frame_parms->ofdm_symbol_size) {
|
||||
if (rx_offset+frame_parms->ofdm_symbol_size > frame_length_samples*2 ) {
|
||||
// rxdata is 2 frames len
|
||||
// we have to wrap on the end
|
||||
|
||||
memcpy((void *)&tmp_dft_in[0],
|
||||
(void *)&common_vars->rxdata[aa][rx_offset],
|
||||
(frame_length_samples - rx_offset) * sizeof(int32_t));
|
||||
memcpy((void *)&tmp_dft_in[frame_length_samples - rx_offset],
|
||||
(frame_length_samples*2 - rx_offset) * sizeof(int32_t));
|
||||
memcpy((void *)&tmp_dft_in[frame_length_samples*2 - rx_offset],
|
||||
(void *)&common_vars->rxdata[aa][0],
|
||||
(frame_parms->ofdm_symbol_size - (frame_length_samples - rx_offset)) * sizeof(int32_t));
|
||||
rxdata_ptr = (int16_t *)&tmp_dft_in[0];
|
||||
(frame_parms->ofdm_symbol_size - (frame_length_samples*2 - rx_offset)) * sizeof(int32_t));
|
||||
rxdata_ptr = (int16_t *)tmp_dft_in;
|
||||
|
||||
} else if ((rx_offset & 7) != 0) {
|
||||
|
||||
@@ -228,7 +231,7 @@ int nr_slot_fep_init_sync(PHY_VARS_NR_UE *ue,
|
||||
memcpy((void *)&tmp_dft_in[0],
|
||||
(void *)&common_vars->rxdata[aa][rx_offset],
|
||||
frame_parms->ofdm_symbol_size * sizeof(int32_t));
|
||||
rxdata_ptr = (int16_t *)&tmp_dft_in[0];
|
||||
rxdata_ptr = (int16_t *)tmp_dft_in;
|
||||
|
||||
} else {
|
||||
|
||||
@@ -308,7 +311,7 @@ int nr_slot_fep_ul(NR_DL_FRAME_PARMS *frame_parms,
|
||||
memcpy((void *)&tmp_dft_in[sample_offset - rxdata_offset],
|
||||
(void *)&rxdata[0],
|
||||
(frame_parms->ofdm_symbol_size - sample_offset + rxdata_offset) * sizeof(int32_t));
|
||||
rxdata_ptr = (int16_t *)&tmp_dft_in[0];
|
||||
rxdata_ptr = (int16_t *)tmp_dft_in;
|
||||
|
||||
} else if (((rxdata_offset - sample_offset) & 7) != 0) {
|
||||
|
||||
@@ -316,7 +319,7 @@ int nr_slot_fep_ul(NR_DL_FRAME_PARMS *frame_parms,
|
||||
memcpy((void *)&tmp_dft_in[0],
|
||||
(void *)&rxdata[rxdata_offset - sample_offset],
|
||||
(frame_parms->ofdm_symbol_size) * sizeof(int32_t));
|
||||
rxdata_ptr = (int16_t *)&tmp_dft_in[0];
|
||||
rxdata_ptr = (int16_t *)tmp_dft_in;
|
||||
|
||||
} else {
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
#include "openair2/LAYER2/NR_MAC_UE/mac_proto.h"
|
||||
#include "openair1/PHY/NR_UE_ESTIMATION/nr_estimation.h"
|
||||
#include <openair1/PHY/impl_defs_nr.h>
|
||||
#include <nr/nr_common.h>
|
||||
#include <common/utils/nr/nr_common.h>
|
||||
|
||||
#ifndef NO_RAT_NR
|
||||
|
||||
@@ -1275,7 +1275,7 @@ boolean_t select_pucch_resource(PHY_VARS_NR_UE *ue, NR_UE_MAC_INST_t *mac, uint8
|
||||
if (pucch_resource_indicator < MAX_PUCCH_RESOURCE_INDICATOR) {
|
||||
// Verify that the value of pucch_resource_indicator is valid
|
||||
struct NR_PUCCH_Config__resourceSetToAddModList *resourceSetToAddModList = NULL;
|
||||
struct NR_PUCCH_Config__resourceToAddModList *resourceToAddModList = NULL;
|
||||
struct NR_PUCCH_Config__resourceToAddModList *resourceToAddModList = NULL;
|
||||
if (bwp_id > 0 && mac->ULbwp[bwp_id-1]) {
|
||||
AssertFatal(mac->ULbwp[bwp_id-1]->bwp_Dedicated->pucch_Config->choice.setup->resourceSetToAddModList!=NULL,"mac->ULbwp[bwp_id-1]->bwp_Dedicated->pucch_Config->choice.setup->resourceSetToAddModList is null\n");
|
||||
resourceSetToAddModList = mac->ULbwp[bwp_id-1]->bwp_Dedicated->pucch_Config->choice.setup->resourceSetToAddModList;
|
||||
|
||||
@@ -183,6 +183,8 @@ typedef struct {
|
||||
typedef struct {
|
||||
in_addr_t gnb_ip_address_for_NGu_up;
|
||||
tcp_udp_port_t gnb_port_for_NGu_up;
|
||||
char addrStr[256];
|
||||
char portStr[256];
|
||||
} Gtpv1uNGReq;
|
||||
typedef struct gtpv1u_gnb_create_tunnel_req_s {
|
||||
rnti_t rnti;
|
||||
|
||||
@@ -1117,6 +1117,8 @@ int RCconfig_nr_gtpu(void ) {
|
||||
IPV4_STR_ADDR_TO_INT_NWBO (address, GTPV1U_GNB_NG_REQ(message).gnb_ip_address_for_NGu_up, "BAD IP ADDRESS FORMAT FOR gNB NG_U !\n" );
|
||||
LOG_I(GTPU,"Configuring GTPu address : %s -> %x\n",address,GTPV1U_GNB_NG_REQ(message).gnb_ip_address_for_NGu_up);
|
||||
GTPV1U_GNB_NG_REQ(message).gnb_port_for_NGu_up = gnb_port_for_NGU;
|
||||
strcpy(GTPV1U_GNB_NG_REQ(message).addrStr,address);
|
||||
sprintf(GTPV1U_GNB_NG_REQ(message).portStr,"%d", gnb_port_for_NGU);
|
||||
}
|
||||
itti_send_msg_to_task (TASK_VARIABLE, 0, message); // data model is wrong: gtpu doesn't have enb_id (or module_id)
|
||||
} else
|
||||
|
||||
@@ -506,5 +506,8 @@ typedef struct ssb_list_info {
|
||||
uint8_t nb_tx_ssb;
|
||||
} ssb_list_info_t;
|
||||
|
||||
void config_dci_pdu(NR_UE_MAC_INST_t *mac, fapi_nr_dl_config_dci_dl_pdu_rel15_t *rel15, fapi_nr_dl_config_request_t *dl_config, int rnti_type, int ss_id);
|
||||
void fill_dci_search_candidates(NR_SearchSpace_t *ss,fapi_nr_dl_config_dci_dl_pdu_rel15_t *rel15);
|
||||
|
||||
/*@}*/
|
||||
#endif /*__LAYER2_MAC_DEFS_H__ */
|
||||
|
||||
@@ -969,7 +969,7 @@ NR_UE_L2_STATE_t nr_ue_scheduler(nr_downlink_indication_t *dl_info, nr_uplink_in
|
||||
mac->UL_ndi[ulcfg_pdu->pusch_config_pdu.pusch_data.harq_process_id],
|
||||
ulcfg_pdu->pusch_config_pdu.pusch_data.new_data_indicator,
|
||||
TBS_bytes,
|
||||
ra->ra_state);
|
||||
ra->ra_state );
|
||||
if (ra->ra_state == WAIT_RAR && !ra->cfra){
|
||||
memcpy(ulsch_input_buffer, mac->ulsch_pdu.payload, TBS_bytes);
|
||||
LOG_D(NR_MAC,"[RAPROC] Msg3 to be transmitted:\n");
|
||||
@@ -1694,7 +1694,7 @@ static int get_nr_prach_info_from_ssb_index(uint8_t ssb_idx,
|
||||
ssb_info_p = &ssb_list.tx_ssb[ssb_idx];
|
||||
LOG_D(NR_MAC,"checking for prach : ssb_info_p->nb_mapped_ro %d\n",ssb_info_p->nb_mapped_ro);
|
||||
for (uint8_t n_mapped_ro=0; n_mapped_ro<ssb_info_p->nb_mapped_ro; n_mapped_ro++) {
|
||||
LOG_D(NR_MAC,"%d.%d: mapped_ro[%d]->frame.slot %d.%d, prach_assoc_pattern.nb_of_frame %d\n",slot,frame,n_mapped_ro,ssb_info_p->mapped_ro[n_mapped_ro]->frame,ssb_info_p->mapped_ro[n_mapped_ro]->slot,prach_assoc_pattern.nb_of_frame);
|
||||
LOG_D(NR_MAC,"%d.%d: mapped_ro[%d]->frame.slot %d.%d, prach_assoc_pattern.nb_of_frame %d\n",frame,slot,n_mapped_ro,ssb_info_p->mapped_ro[n_mapped_ro]->frame,ssb_info_p->mapped_ro[n_mapped_ro]->slot,prach_assoc_pattern.nb_of_frame);
|
||||
if ((slot == ssb_info_p->mapped_ro[n_mapped_ro]->slot) &&
|
||||
(ssb_info_p->mapped_ro[n_mapped_ro]->frame == (frame % prach_assoc_pattern.nb_of_frame))) {
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
void fill_default_initialDownlinkBWP(NR_BWP_Downlink_t *bwp, NR_ServingCellConfigCommon_t *servingcellconfigcommon) {
|
||||
bwp->bwp_Id = 0;
|
||||
bwp->bwp_Common=calloc(1,sizeof(*bwp->bwp_Common));
|
||||
memcpy((void*)&bwp->bwp_Common, &servingcellconfigcommon->downlinkConfigCommon->initialDownlinkBWP, sizeof(*bwp->bwp_Common));
|
||||
*bwp->bwp_Common = *servingcellconfigcommon->downlinkConfigCommon->initialDownlinkBWP;
|
||||
}
|
||||
|
||||
void fill_default_coresetZero(NR_ControlResourceSet_t *coreset0, NR_ServingCellConfigCommon_t *servingcellconfigcommon) {
|
||||
@@ -1024,7 +1024,7 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
|
||||
long *delay[8];
|
||||
for (int i=0;i<8;i++) {
|
||||
delay[i] = calloc(1,sizeof(*delay[i]));
|
||||
*delay[i] = i+2;
|
||||
*delay[i] = (i<6) ? (i+2) : 0;
|
||||
ASN_SEQUENCE_ADD(&pucch_Config->dl_DataToUL_ACK->list,delay[i]);
|
||||
}
|
||||
pucch_Config->spatialRelationInfoToAddModList = calloc(1,sizeof(*pucch_Config->spatialRelationInfoToAddModList));
|
||||
|
||||
@@ -459,6 +459,20 @@ int ocp_gtpv1u_update_s1u_tunnel(
|
||||
return 0;
|
||||
}
|
||||
|
||||
int gtpv1u_create_ngu_tunnel( const instance_t instanceP,
|
||||
const gtpv1u_gnb_create_tunnel_req_t * const create_tunnel_req_pP,
|
||||
gtpv1u_gnb_create_tunnel_resp_t * const create_tunnel_resp_pP) {
|
||||
return !GTPNOK;
|
||||
}
|
||||
|
||||
int gtpv1u_update_ngu_tunnel(
|
||||
const instance_t instanceP,
|
||||
const gtpv1u_gnb_create_tunnel_req_t *const create_tunnel_req_pP,
|
||||
const rnti_t prior_rnti
|
||||
) {
|
||||
return GTPNOK;
|
||||
}
|
||||
|
||||
int ocp_gtpv1u_create_x2u_tunnel(
|
||||
const instance_t instanceP,
|
||||
const gtpv1u_enb_create_x2u_tunnel_req_t *const create_tunnel_req_pP,
|
||||
@@ -496,6 +510,12 @@ int ocp_gtpv1u_delete_s1u_tunnel( const instance_t instance,
|
||||
return newGtpuDeleteTunnel(instance, req_pP->rnti);
|
||||
}
|
||||
|
||||
int gtpv1u_delete_x2u_tunnel( const instance_t instanceP,
|
||||
const gtpv1u_enb_delete_tunnel_req_t * const req_pP,
|
||||
int enbflag) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int Gtpv1uHandleEchoReq(int h,
|
||||
uint8_t *msgBuf,
|
||||
uint32_t msgBufLen,
|
||||
@@ -757,6 +777,13 @@ void *ocp_gtpv1uTask(void *args) {
|
||||
AssertFatal((legacyInstanceMapping=ocp_gtpv1Init(addr))!=0,"Instance 0 reserved for legacy\n");
|
||||
break;
|
||||
|
||||
case GTPV1U_GNB_NG_REQ:
|
||||
// to be dev: should be removed, to use API
|
||||
strcpy(addr.originHost, GTPV1U_ENB_S1_REQ(message_p).addrStr);
|
||||
strcpy(addr.originService, GTPV1U_ENB_S1_REQ(message_p).portStr);
|
||||
AssertFatal((legacyInstanceMapping=ocp_gtpv1Init(addr))!=0,"Instance 0 reserved for legacy\n");
|
||||
break;
|
||||
|
||||
default:
|
||||
LOG_E(GTPU, "Received unexpected message %s\n", ITTI_MSG_NAME(message_p));
|
||||
abort();
|
||||
|
||||
@@ -14,7 +14,7 @@ extern "C" {
|
||||
#define gtpv1u_delete_s1u_tunnel ocp_gtpv1u_delete_s1u_tunnel
|
||||
#define gtpv1u_create_x2u_tunnel ocp_gtpv1u_create_x2u_tunnel
|
||||
#define gtpv1u_eNB_task ocp_gtpv1uTask
|
||||
#define gtpv1u_gNB_task ocp_gtpv1uTask
|
||||
#define nr_gtpv1u_gNB_task ocp_gtpv1uTask
|
||||
#define TASK_VARIABLE OCP_GTPV1_U
|
||||
#else
|
||||
#define TASK_VARIABLE TASK_GTPV1_U
|
||||
|
||||
Reference in New Issue
Block a user