mirror of
https://gitlab.eurecom.fr/oai/openairinterface5g.git
synced 2026-07-13 04:30:28 +00:00
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
This commit is contained in:
@@ -1830,13 +1830,12 @@ add_executable(lte-softmodem
|
||||
${CONFIG_SOURCES}
|
||||
)
|
||||
|
||||
target_link_libraries (lte-softmodem -ldl
|
||||
target_link_libraries (lte-softmodem
|
||||
-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
|
||||
NFAPI_COMMON_LIB NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB
|
||||
NFAPI_USER_LIB
|
||||
z
|
||||
-Wl,--end-group )
|
||||
-Wl,--end-group z dl)
|
||||
|
||||
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})
|
||||
|
||||
@@ -111,7 +111,7 @@ mac_rrc_data_req(
|
||||
RC.rrc[Mod_idP]->carrier[CC_id].SIB1,
|
||||
RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB1);
|
||||
|
||||
#if 0//defined(ENABLE_ITTI)
|
||||
#if 0 //defined(ENABLE_ITTI)
|
||||
{
|
||||
MessageDef *message_p;
|
||||
int sib1_size = RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB1;
|
||||
@@ -220,7 +220,7 @@ mac_rrc_data_req(
|
||||
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);
|
||||
|
||||
#if 0 //defined(ENABLE_ITTI)
|
||||
#if 0 // defined(ENABLE_ITTI)
|
||||
{
|
||||
MessageDef *message_p;
|
||||
int ccch_size = Srb_info->Tx_buffer.payload_size;
|
||||
@@ -258,7 +258,7 @@ mac_rrc_data_req(
|
||||
}
|
||||
|
||||
|
||||
#if 0//defined(ENABLE_ITTI)
|
||||
#if 0 // defined(ENABLE_ITTI)
|
||||
{
|
||||
MessageDef *message_p;
|
||||
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) {
|
||||
@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) {
|
||||
int ret=0;
|
||||
usrp_state_t *s = (usrp_state_t*)device->priv;
|
||||
|
||||
s->tx_md.time_spec = uhd::time_spec_t::from_ticks(timestamp, s->sample_rate);
|
||||
s->tx_md.has_time_spec = flags;
|
||||
|
||||
|
||||
if(flags>0)
|
||||
s->tx_md.has_time_spec = true;
|
||||
else
|
||||
s->tx_md.has_time_spec = false;
|
||||
|
||||
if (flags == 2) { // start of burst
|
||||
s->tx_md.start_of_burst = true;
|
||||
s->tx_md.end_of_burst = false;
|
||||
} else if (flags == 3) { // end of burst
|
||||
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;
|
||||
int ret=0;
|
||||
usrp_state_t *s = (usrp_state_t*)device->priv;
|
||||
|
||||
int nsamps2; // aligned to upper 32 or 16 byte boundary
|
||||
#if defined(__x86_64) || defined(__i386__)
|
||||
#ifdef __AVX2__
|
||||
nsamps2 = (nsamps+7)>>3;
|
||||
__m256i buff_tx[2][nsamps2];
|
||||
#else
|
||||
nsamps2 = (nsamps+3)>>2;
|
||||
__m128i buff_tx[2][nsamps2];
|
||||
#endif
|
||||
#elif defined(__arm__)
|
||||
nsamps2 = (nsamps+3)>>2;
|
||||
int16x8_t buff_tx[2][nsamps2];
|
||||
#endif
|
||||
|
||||
// bring RX data into 12 LSBs for softmodem RX
|
||||
for (int i=0; i<cc; i++) {
|
||||
for (int j=0; j<nsamps2; j++) {
|
||||
#if defined(__x86_64__) || defined(__i386__)
|
||||
#ifdef __AVX2__
|
||||
buff_tx[i][j] = _mm256_slli_epi16(((__m256i*)buff[i])[j],4);
|
||||
#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) {
|
||||
std::vector<void *> buff_ptrs;
|
||||
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);
|
||||
} else
|
||||
ret = (int)s->tx_stream->send(buff[0], nsamps, s->tx_md,1e-3);
|
||||
s->tx_md.time_spec = uhd::time_spec_t::from_ticks(timestamp, s->sample_rate);
|
||||
s->tx_md.has_time_spec = flags;
|
||||
|
||||
|
||||
if(flags>0)
|
||||
s->tx_md.has_time_spec = true;
|
||||
else
|
||||
s->tx_md.has_time_spec = false;
|
||||
|
||||
if (flags == 2) { // start of burst
|
||||
s->tx_md.start_of_burst = true;
|
||||
s->tx_md.end_of_burst = false;
|
||||
} else if (flags == 3) { // end of burst
|
||||
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);
|
||||
|
||||
|
||||
|
||||
if (ret != nsamps)
|
||||
LOG_E(PHY,"[xmit] tx samples %d != %d\n",ret,nsamps);
|
||||
|
||||
return ret;
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*! \brief Receive samples from hardware.
|
||||
|
||||
@@ -141,7 +141,11 @@ eNBs =
|
||||
|
||||
|
||||
////////// MME parameters:
|
||||
<<<<<<< HEAD
|
||||
mme_ip_address = ( { ipv4 = "192.168.1.78";
|
||||
=======
|
||||
mme_ip_address = ( { ipv4 = "192.168.12.26";
|
||||
>>>>>>> b421d467ad96939fde41734f1e3b7bb793939063
|
||||
ipv6 = "192:168:30::17";
|
||||
active = "yes";
|
||||
preference = "ipv4";
|
||||
@@ -151,10 +155,17 @@ eNBs =
|
||||
NETWORK_INTERFACES :
|
||||
{
|
||||
|
||||
<<<<<<< HEAD
|
||||
ENB_INTERFACE_NAME_FOR_S1_MME = "eno1";
|
||||
ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.1.74/24";
|
||||
ENB_INTERFACE_NAME_FOR_S1U = "eno1";
|
||||
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
|
||||
};
|
||||
|
||||
@@ -195,6 +206,7 @@ L1s = (
|
||||
|
||||
RUs = (
|
||||
{
|
||||
<<<<<<< HEAD
|
||||
local_rf = "yes"
|
||||
nb_tx = 1
|
||||
nb_rx = 1
|
||||
@@ -204,5 +216,17 @@ RUs = (
|
||||
max_pdschReferenceSignalPower = -27;
|
||||
max_rxgain = 125;
|
||||
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 )
|
||||
// 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("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");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user