Commit 72107411 authored by Raymond Knopp's avatar Raymond Knopp

Merge branch 'RU-RAU-split' of...

Merge branch 'RU-RAU-split' of https://gitlab.eurecom.fr/oai/openairinterface5g into nfapi-ru-rau-split

Conflicts:
	openair2/RRC/LITE/L2_interface.c
	targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210.conf
parents 17e158f6 b421d467
...@@ -1830,13 +1830,12 @@ add_executable(lte-softmodem ...@@ -1830,13 +1830,12 @@ add_executable(lte-softmodem
${CONFIG_SOURCES} ${CONFIG_SOURCES}
) )
target_link_libraries (lte-softmodem -ldl target_link_libraries (lte-softmodem
-Wl,--start-group -Wl,--start-group
RRC_LIB S1AP_LIB S1AP_ENB GTPV1U SECU_CN SECU_OSA UTIL HASHTABLE SCTP_CLIENT UDP SCHED_LIB PHY LFDS L2 ${MSC_LIB} ${RAL_LIB} ${NAS_UE_LIB} ${ITTI_LIB} ${MIH_LIB} ${FLPT_MSG_LIB} ${ASYNC_IF_LIB} ${FLEXRAN_AGENT_LIB} LFDS7 RRC_LIB S1AP_LIB S1AP_ENB GTPV1U SECU_CN SECU_OSA UTIL HASHTABLE SCTP_CLIENT UDP SCHED_LIB PHY LFDS L2 ${MSC_LIB} ${RAL_LIB} ${NAS_UE_LIB} ${ITTI_LIB} ${MIH_LIB} ${FLPT_MSG_LIB} ${ASYNC_IF_LIB} ${FLEXRAN_AGENT_LIB} LFDS7
NFAPI_COMMON_LIB NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB NFAPI_COMMON_LIB NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB
NFAPI_USER_LIB NFAPI_USER_LIB
z -Wl,--end-group z dl)
-Wl,--end-group )
target_link_libraries (lte-softmodem ${LIBXML2_LIBRARIES}) target_link_libraries (lte-softmodem ${LIBXML2_LIBRARIES})
target_link_libraries (lte-softmodem pthread m ${CONFIG_LIBRARIES} rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} sctp ${XFORMS_LIBRARIES} ${PROTOBUF_LIB} ${CMAKE_DL_LIBS} ${LIBYAML_LIBRARIES}) target_link_libraries (lte-softmodem pthread m ${CONFIG_LIBRARIES} rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} sctp ${XFORMS_LIBRARIES} ${PROTOBUF_LIB} ${CMAKE_DL_LIBS} ${LIBYAML_LIBRARIES})
......
...@@ -111,7 +111,7 @@ mac_rrc_data_req( ...@@ -111,7 +111,7 @@ mac_rrc_data_req(
RC.rrc[Mod_idP]->carrier[CC_id].SIB1, RC.rrc[Mod_idP]->carrier[CC_id].SIB1,
RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB1); RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB1);
#if 0//defined(ENABLE_ITTI) #if 0 //defined(ENABLE_ITTI)
{ {
MessageDef *message_p; MessageDef *message_p;
int sib1_size = RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB1; int sib1_size = RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB1;
...@@ -220,7 +220,7 @@ mac_rrc_data_req( ...@@ -220,7 +220,7 @@ mac_rrc_data_req(
if(Srb_info->Tx_buffer.payload_size>0) { //Fill buffer if(Srb_info->Tx_buffer.payload_size>0) { //Fill buffer
LOG_D(RRC,"[eNB %d] CCCH (%p) has %d bytes (dest: %p, src %p)\n",Mod_idP,Srb_info,Srb_info->Tx_buffer.payload_size,buffer_pP,Srb_info->Tx_buffer.Payload); LOG_D(RRC,"[eNB %d] CCCH (%p) has %d bytes (dest: %p, src %p)\n",Mod_idP,Srb_info,Srb_info->Tx_buffer.payload_size,buffer_pP,Srb_info->Tx_buffer.Payload);
#if 0 //defined(ENABLE_ITTI) #if 0 // defined(ENABLE_ITTI)
{ {
MessageDef *message_p; MessageDef *message_p;
int ccch_size = Srb_info->Tx_buffer.payload_size; int ccch_size = Srb_info->Tx_buffer.payload_size;
...@@ -258,7 +258,7 @@ mac_rrc_data_req( ...@@ -258,7 +258,7 @@ mac_rrc_data_req(
} }
#if 0//defined(ENABLE_ITTI) #if 0 // defined(ENABLE_ITTI)
{ {
MessageDef *message_p; MessageDef *message_p;
int mcch_size = RC.rrc[Mod_idP]->carrier[CC_id].sizeof_MCCH_MESSAGE[mbsfn_sync_area]; int mcch_size = RC.rrc[Mod_idP]->carrier[CC_id].sizeof_MCCH_MESSAGE[mbsfn_sync_area];
......
...@@ -145,46 +145,75 @@ static void trx_usrp_end(openair0_device *device) { ...@@ -145,46 +145,75 @@ static void trx_usrp_end(openair0_device *device) {
@param flags flags must be set to TRUE if timestamp parameter needs to be applied @param flags flags must be set to TRUE if timestamp parameter needs to be applied
*/ */
static int trx_usrp_write(openair0_device *device, openair0_timestamp timestamp, void **buff, int nsamps, int cc, int flags) { static int trx_usrp_write(openair0_device *device, openair0_timestamp timestamp, void **buff, int nsamps, int cc, int flags) {
int ret=0; int ret=0;
usrp_state_t *s = (usrp_state_t*)device->priv; usrp_state_t *s = (usrp_state_t*)device->priv;
s->tx_md.time_spec = uhd::time_spec_t::from_ticks(timestamp, s->sample_rate); int nsamps2; // aligned to upper 32 or 16 byte boundary
s->tx_md.has_time_spec = flags; #if defined(__x86_64) || defined(__i386__)
#ifdef __AVX2__
nsamps2 = (nsamps+7)>>3;
if(flags>0) __m256i buff_tx[2][nsamps2];
s->tx_md.has_time_spec = true; #else
else nsamps2 = (nsamps+3)>>2;
s->tx_md.has_time_spec = false; __m128i buff_tx[2][nsamps2];
#endif
if (flags == 2) { // start of burst #elif defined(__arm__)
s->tx_md.start_of_burst = true; nsamps2 = (nsamps+3)>>2;
s->tx_md.end_of_burst = false; int16x8_t buff_tx[2][nsamps2];
} else if (flags == 3) { // end of burst #endif
s->tx_md.start_of_burst = false;
s->tx_md.end_of_burst = true; // bring RX data into 12 LSBs for softmodem RX
} else if (flags == 4) { // start and end for (int i=0; i<cc; i++) {
s->tx_md.start_of_burst = true; for (int j=0; j<nsamps2; j++) {
s->tx_md.end_of_burst = true; #if defined(__x86_64__) || defined(__i386__)
} else if (flags==1) { // middle of burst #ifdef __AVX2__
s->tx_md.start_of_burst = false; buff_tx[i][j] = _mm256_slli_epi16(((__m256i*)buff[i])[j],4);
s->tx_md.end_of_burst = false; #else
buff_tx[i][j] = _mm_slli_epi16(((__m128i*)buff128[i])[j],4);
#endif
#elif defined(__arm__)
buff_tx[i][j] = vshlq_n_s16(((int16x8_t*)buff128[i])[j],4);
#endif
} }
}
if (cc>1) { s->tx_md.time_spec = uhd::time_spec_t::from_ticks(timestamp, s->sample_rate);
std::vector<void *> buff_ptrs; s->tx_md.has_time_spec = flags;
for (int i=0; i<cc; i++)
buff_ptrs.push_back(buff[i]);
ret = (int)s->tx_stream->send(buff_ptrs, nsamps, s->tx_md,1e-3); if(flags>0)
} else s->tx_md.has_time_spec = true;
ret = (int)s->tx_stream->send(buff[0], nsamps, s->tx_md,1e-3); else
s->tx_md.has_time_spec = false;
if (flags == 2) { // start of burst
if (ret != nsamps) s->tx_md.start_of_burst = true;
LOG_E(PHY,"[xmit] tx samples %d != %d\n",ret,nsamps); s->tx_md.end_of_burst = false;
} else if (flags == 3) { // end of burst
return ret; s->tx_md.start_of_burst = false;
s->tx_md.end_of_burst = true;
} else if (flags == 4) { // start and end
s->tx_md.start_of_burst = true;
s->tx_md.end_of_burst = true;
} else if (flags==1) { // middle of burst
s->tx_md.start_of_burst = false;
s->tx_md.end_of_burst = false;
}
if (cc>1) {
std::vector<void *> buff_ptrs;
for (int i=0; i<cc; i++)
buff_ptrs.push_back(buff_tx[i]);
ret = (int)s->tx_stream->send(buff_ptrs, nsamps, s->tx_md,1e-3);
} else
ret = (int)s->tx_stream->send(buff_tx[0], nsamps, s->tx_md,1e-3);
if (ret != nsamps)
LOG_E(PHY,"[xmit] tx samples %d != %d\n",ret,nsamps);
return ret;
} }
/*! \brief Receive samples from hardware. /*! \brief Receive samples from hardware.
......
...@@ -141,7 +141,11 @@ eNBs = ...@@ -141,7 +141,11 @@ eNBs =
////////// MME parameters: ////////// MME parameters:
<<<<<<< HEAD
mme_ip_address = ( { ipv4 = "192.168.1.78"; mme_ip_address = ( { ipv4 = "192.168.1.78";
=======
mme_ip_address = ( { ipv4 = "192.168.12.26";
>>>>>>> b421d467ad96939fde41734f1e3b7bb793939063
ipv6 = "192:168:30::17"; ipv6 = "192:168:30::17";
active = "yes"; active = "yes";
preference = "ipv4"; preference = "ipv4";
...@@ -151,10 +155,17 @@ eNBs = ...@@ -151,10 +155,17 @@ eNBs =
NETWORK_INTERFACES : NETWORK_INTERFACES :
{ {
<<<<<<< HEAD
ENB_INTERFACE_NAME_FOR_S1_MME = "eno1"; ENB_INTERFACE_NAME_FOR_S1_MME = "eno1";
ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.1.74/24"; ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.1.74/24";
ENB_INTERFACE_NAME_FOR_S1U = "eno1"; ENB_INTERFACE_NAME_FOR_S1U = "eno1";
ENB_IPV4_ADDRESS_FOR_S1U = "192.168.1.74/24"; ENB_IPV4_ADDRESS_FOR_S1U = "192.168.1.74/24";
=======
ENB_INTERFACE_NAME_FOR_S1_MME = "eth0";
ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.19/24";
ENB_INTERFACE_NAME_FOR_S1U = "eth0";
ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.19/24";
>>>>>>> b421d467ad96939fde41734f1e3b7bb793939063
ENB_PORT_FOR_S1U = 2152; # Spec 2152 ENB_PORT_FOR_S1U = 2152; # Spec 2152
}; };
...@@ -195,6 +206,7 @@ L1s = ( ...@@ -195,6 +206,7 @@ L1s = (
RUs = ( RUs = (
{ {
<<<<<<< HEAD
local_rf = "yes" local_rf = "yes"
nb_tx = 1 nb_tx = 1
nb_rx = 1 nb_rx = 1
...@@ -204,5 +216,17 @@ RUs = ( ...@@ -204,5 +216,17 @@ RUs = (
max_pdschReferenceSignalPower = -27; max_pdschReferenceSignalPower = -27;
max_rxgain = 125; max_rxgain = 125;
eNB_instances = [0]; eNB_instances = [0];
=======
local_rf = "yes"
nb_tx = 1
nb_rx = 1
att_tx = 0
att_rx = 0;
bands = [7];
max_pdschReferenceSignalPower = -27;
max_rxgain = 125;
eNB_instances = [0];
>>>>>>> b421d467ad96939fde41734f1e3b7bb793939063
} }
); );
...@@ -1735,7 +1735,7 @@ int main( int argc, char **argv ) ...@@ -1735,7 +1735,7 @@ int main( int argc, char **argv )
// once all RUs are ready intiailize the rest of the eNBs ((dependence on final RU parameters after configuration) // once all RUs are ready intiailize the rest of the eNBs ((dependence on final RU parameters after configuration)
printf("ALL RUs ready - init eNBs\n"); printf("ALL RUs ready - init eNBs\n");
printf("DJP - commented out call to init_eNB_afterRU() will be called by nFAPI\n\n\n\n"); printf("DJP - commented out call to init_eNB_afterRU() will be called by nFAPI\n\n\n\n");
//init_eNB_afterRU(); init_eNB_afterRU();
printf("ALL RUs ready - ALL eNBs ready\n"); printf("ALL RUs ready - ALL eNBs ready\n");
} }
......
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