From c1364f0117d457ce4cbdbbc6e27aff9af1b529ba Mon Sep 17 00:00:00 2001 From: matzakos Date: Wed, 20 Feb 2019 16:45:39 +0100 Subject: [PATCH 1/5] changes to make oai work with UHD 3.13.1 --- targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp b/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp index c591cc6c0f..341058e1db 100644 --- a/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp +++ b/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp @@ -28,7 +28,12 @@ #include #include #include +#include +#if UHD_VERSION < 3110000 #include +#else +#include +#endif #include #include #include @@ -183,7 +188,7 @@ static int sync_to_gps(openair0_device *device) { num_gps_locked++; std::cout << boost::format("GPS Locked\n"); } else { - std::cerr << "WARNING: GPS not locked - time will not be accurate until locked" << std::endl; + LOG_W(HW,"WARNING: GPS not locked - time will not be accurate until locked\n"); } //Set to GPS time @@ -720,6 +725,7 @@ void *freq_thread(void *arg) { usrp_state_t *s = (usrp_state_t *)device->priv; s->usrp->set_tx_freq(device->openair0_cfg[0].tx_freq[0]); s->usrp->set_rx_freq(device->openair0_cfg[0].rx_freq[0]); + return NULL; } /*! \brief Set frequencies (TX/RX). Spawns a thread to handle the frequency change to not block the calling thread * \param device the hardware to use @@ -1069,16 +1075,16 @@ extern "C" { uhd::device_addrs_t device_adds = uhd::device::find(args); if (device_adds.size() == 0) { - std::cerr<<"No USRP Device Found. " << std::endl; + LOG_E(HW,"No USRP Device Found.\n "); free(s); return -1; } else if (device_adds.size() > 1) { - std::cerr<<"More than one USRP Device Found. Please specify device more precisely in config file." << std::endl; + LOG_E(HW,"More than one USRP Device Found. Please specify device more precisely in config file.\n"); free(s); return -1; } - std::cerr << "Found USRP " << device_adds[0].get("type") << "\n"; + LOG_I(HW,"Found USRP %s\n", device_adds[0].get("type").c_str()); double usrp_master_clock; if (device_adds[0].get("type") == "b200") { @@ -1086,7 +1092,6 @@ extern "C" { device->type = USRP_B200_DEV; usrp_master_clock = 30.72e6; args += boost::str(boost::format(",master_clock_rate=%f") % usrp_master_clock); - args += ",num_send_frames=256,num_recv_frames=256, send_frame_size=15360, recv_frame_size=15360" ; } if (device_adds[0].get("type") == "n3xx") { @@ -1283,8 +1288,9 @@ extern "C" { samples/=10000; LOG_I(PHY,"RF board max packet size %u, size for 100µs jitter %d \n", max, samples); - if ( samples < max ) + if ( samples < max ) { stream_args_rx.args["spp"] = str(boost::format("%d") % samples ); + } LOG_I(PHY,"rx_max_num_samps %zu\n", s->usrp->get_rx_stream(stream_args_rx)->get_max_num_samps()); From 92076ea8a8c262b1fffd539ac324a5e7c5d8f6c7 Mon Sep 17 00:00:00 2001 From: Raphael Defosseux Date: Wed, 20 Feb 2019 18:13:43 +0100 Subject: [PATCH 2/5] CI: adding much needed lock mechanism when creating VM. -- should prevent VM-creation crashes during test stages Signed-off-by: Raphael Defosseux (cherry picked from commit eeffdfa200fe834e53f13b8692632baac6ee2dfb) --- ci-scripts/buildOnVM.sh | 19 +++++++++++++------ ci-scripts/createVM.sh | 31 +++++++++++++++++++++++++++++++ ci-scripts/runTestOnVM.sh | 9 ++++++++- 3 files changed, 52 insertions(+), 7 deletions(-) diff --git a/ci-scripts/buildOnVM.sh b/ci-scripts/buildOnVM.sh index f9fb3b776f..ad77d39eb7 100755 --- a/ci-scripts/buildOnVM.sh +++ b/ci-scripts/buildOnVM.sh @@ -94,15 +94,22 @@ function build_on_vm { echo "############################################################" echo "Creating VM ($VM_NAME) on Ubuntu Cloud Image base" echo "############################################################" + acquire_vm_create_lock uvt-kvm create $VM_NAME release=xenial --memory $VM_MEMORY --cpu $VM_CPU --unsafe-caching --template ci-scripts/template-host.xml + echo "Waiting for VM to be started" + uvt-kvm wait $VM_NAME --insecure + + VM_IP_ADDR=`uvt-kvm ip $VM_NAME` + echo "$VM_NAME has for IP addr = $VM_IP_ADDR" + release_vm_create_lock + else + echo "Waiting for VM to be started" + uvt-kvm wait $VM_NAME --insecure + + VM_IP_ADDR=`uvt-kvm ip $VM_NAME` + echo "$VM_NAME has for IP addr = $VM_IP_ADDR" fi - echo "Waiting for VM to be started" - uvt-kvm wait $VM_NAME --insecure - - VM_IP_ADDR=`uvt-kvm ip $VM_NAME` - echo "$VM_NAME has for IP addr = $VM_IP_ADDR" - echo "############################################################" echo "Copying GIT repo into VM ($VM_NAME)" echo "############################################################" diff --git a/ci-scripts/createVM.sh b/ci-scripts/createVM.sh index 192008d867..e693b07b91 100755 --- a/ci-scripts/createVM.sh +++ b/ci-scripts/createVM.sh @@ -49,6 +49,35 @@ function create_usage { echo "" } +function acquire_vm_create_lock { + local FlockFile="/tmp/vmclone.lck" + local unlocked="0" + touch ${FlockFile} 2>/dev/null + if [[ $? -ne 0 ]] + then + echo "Cannot access lock file ${FlockFile}" + exit 2 + fi + while [ $unlocked -eq 0 ] + do + exec 5>${FlockFile} + flock -nx 5 + if [[ $? -ne 0 ]] + then + echo "Another instance of VM creation is running" + sleep 10 + else + unlocked="1" + fi + done + chmod 666 ${FlockFile} 2>/dev/null +} + +function release_vm_create_lock { + local FlockFile="/tmp/vmclone.lck" + rm -Rf ${FlockFile} +} + function create_vm { echo "############################################################" echo "OAI CI VM script" @@ -60,10 +89,12 @@ function create_vm { echo "############################################################" echo "Creating VM ($VM_NAME) on Ubuntu Cloud Image base" echo "############################################################" + acquire_vm_create_lock uvt-kvm create $VM_NAME release=xenial --memory $VM_MEMORY --cpu $VM_CPU --unsafe-caching --template ci-scripts/template-host.xml echo "Waiting for VM to be started" uvt-kvm wait $VM_NAME --insecure VM_IP_ADDR=`uvt-kvm ip $VM_NAME` echo "$VM_NAME has for IP addr = $VM_IP_ADDR" + release_vm_create_lock } diff --git a/ci-scripts/runTestOnVM.sh b/ci-scripts/runTestOnVM.sh index 208381a944..8de59c6f08 100755 --- a/ci-scripts/runTestOnVM.sh +++ b/ci-scripts/runTestOnVM.sh @@ -317,11 +317,18 @@ function install_epc_on_vm { echo "############################################################" echo "Creating test EPC VM ($LOC_EPC_VM_NAME) on Ubuntu Cloud Image base" echo "############################################################" + acquire_vm_create_lock uvt-kvm create $LOC_EPC_VM_NAME release=xenial --unsafe-caching + echo "Waiting for VM to be started" + uvt-kvm wait $LOC_EPC_VM_NAME --insecure + release_vm_create_lock + else + echo "Waiting for VM to be started" + uvt-kvm wait $LOC_EPC_VM_NAME --insecure fi - uvt-kvm wait $LOC_EPC_VM_NAME --insecure local LOC_EPC_VM_IP_ADDR=`uvt-kvm ip $LOC_EPC_VM_NAME` + echo "$LOC_EPC_VM_NAME has for IP addr = $LOC_EPC_VM_IP_ADDR" scp -o StrictHostKeyChecking=no /etc/apt/apt.conf.d/01proxy ubuntu@$LOC_EPC_VM_IP_ADDR:/home/ubuntu From 7fd089fe3f7bf2d5fe0fc40a6f302225c2689738 Mon Sep 17 00:00:00 2001 From: Florian Kaltenberger Date: Thu, 21 Feb 2019 13:36:38 +0100 Subject: [PATCH 3/5] putting back uhd transport args for b200 with a reduced frame size. This is still compatible with uhd 3.13.1 and above. --- targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp b/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp index 341058e1db..dd3566df9f 100644 --- a/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp +++ b/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp @@ -1092,6 +1092,7 @@ extern "C" { device->type = USRP_B200_DEV; usrp_master_clock = 30.72e6; args += boost::str(boost::format(",master_clock_rate=%f") % usrp_master_clock); + args += ",num_send_frames=256,num_recv_frames=256, send_frame_size=7680, recv_frame_size=7680" ; } if (device_adds[0].get("type") == "n3xx") { From fd5238e478c7fe03d31bd93e6b43ea32a344f0fd Mon Sep 17 00:00:00 2001 From: Raphael Defosseux Date: Fri, 22 Feb 2019 11:44:42 +0100 Subject: [PATCH 4/5] Updated release notes Signed-off-by: Raphael Defosseux --- README.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/README.txt b/README.txt index 33c0df9d8d..b0cad5f011 100644 --- a/README.txt +++ b/README.txt @@ -62,3 +62,4 @@ v1.0.0 -> January 2019. This version first implements the architectural split de New tools: config library, telnet server, ... A lot of bugfixes and a proper automated Continuous Integration process validates contributions. v1.0.1 -> February 2019: Bug fix for the UE L1 simulator. +v1.0.2 -> February 2019: Full OAI support for 3.13.1 UHD From 8fc1a61e6a8f9948bc44192ab33c6dbea6f9a7f8 Mon Sep 17 00:00:00 2001 From: Raphael Defosseux Date: Fri, 22 Feb 2019 12:10:15 +0100 Subject: [PATCH 5/5] Putting correct license banner on file Signed-off-by: Raphael Defosseux --- targets/RT/USER/lte-ru.c | 48 +++++++++++++++++----------------------- 1 file changed, 20 insertions(+), 28 deletions(-) diff --git a/targets/RT/USER/lte-ru.c b/targets/RT/USER/lte-ru.c index ddc7fdf94b..d4e88eb279 100644 --- a/targets/RT/USER/lte-ru.c +++ b/targets/RT/USER/lte-ru.c @@ -1,31 +1,23 @@ -/******************************************************************************* - OpenAirInterface - Copyright(c) 1999 - 2014 Eurecom - - OpenAirInterface is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - - OpenAirInterface is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with OpenAirInterface.The full GNU General Public License is - included in this distribution in the file called "COPYING". If not, - see . - - Contact Information - OpenAirInterface Admin: openair_admin@eurecom.fr - OpenAirInterface Tech : openair_tech@eurecom.fr - OpenAirInterface Dev : openair4g-devel@lists.eurecom.fr - - Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE - -*******************************************************************************/ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ /*! \file lte-enb.c * \brief Top-level threads for eNodeB