From b4635ac44f79465637c744c6e66c55a63f64b031 Mon Sep 17 00:00:00 2001
From: Raymond Knopp <raymond.knopp@eurecom.fr>
Date: Thu, 22 Jan 2015 07:24:06 +0000
Subject: [PATCH] Clean-up and bug-fixes from S. Held (IMST)
git-svn-id: http://svn.eurecom.fr/openair4G/trunk@6420 818b1a75-f10b-46b9-bf7c-635c3b92a50f
---
openair1/DOCS/DOXYGEN/Doxyfile | 1 +
openair1/PHY/CODING/3gpplte_sse.c | 2 +-
openair1/PHY/CODING/3gpplte_turbo_decoder.c | 2 +-
.../PHY/CODING/3gpplte_turbo_decoder_sse.c | 5 +-
.../CODING/3gpplte_turbo_decoder_sse_16bit.c | 3 +-
.../CODING/3gpplte_turbo_decoder_sse_8bit.c | 3 +-
openair1/PHY/CODING/TESTBENCH/ltetest.c | 2 +-
openair1/PHY/CODING/viterbi.c | 8 +-
openair1/PHY/CODING/viterbi_lte.c | 10 +-
.../PHY/LTE_ESTIMATION/freq_equalization.c | 3 +-
.../PHY/LTE_ESTIMATION/lte_eNB_measurements.c | 7 +-
.../PHY/LTE_ESTIMATION/lte_est_freq_offset.c | 2 +-
.../PHY/LTE_ESTIMATION/lte_ue_measurements.c | 20 +-
.../lte_ul_channel_estimation.c | 13 +-
openair1/PHY/LTE_TRANSPORT/dci.c | 18 +-
.../PHY/LTE_TRANSPORT/dlsch_demodulation.c | 43 +---
.../PHY/LTE_TRANSPORT/dlsch_llr_computation.c | 36 +--
openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c | 2 +-
openair1/PHY/LTE_TRANSPORT/drs_modulation.c | 3 +-
openair1/PHY/LTE_TRANSPORT/pbch.c | 14 +-
openair1/PHY/LTE_TRANSPORT/pmch.c | 11 +-
openair1/PHY/LTE_TRANSPORT/prach.c | 19 +-
openair1/PHY/LTE_TRANSPORT/sss.c | 2 +-
.../PHY/LTE_TRANSPORT/ulsch_demodulation.c | 27 +--
openair1/PHY/MODULATION/ul_7_5_kHz.c | 15 +-
openair1/PHY/TOOLS/cdot_prod.c | 11 +-
openair1/PHY/TOOLS/cmult_sv.c | 3 +-
openair1/PHY/TOOLS/defs.h | 9 +-
openair1/PHY/TOOLS/fft.c | 3 +-
openair1/PHY/TOOLS/lte_dfts.c | 12 +-
openair1/PHY/TOOLS/memory_routines.c | 2 +-
openair1/PHY/TOOLS/phase_comp.c | 2 +-
openair1/PHY/TOOLS/signal_energy.c | 2 +-
openair1/PHY/defs.h | 3 +
openair1/SCHED/phy_procedures_lte_eNb.c | 229 +++++++++---------
openair1/SIMULATION/LTE_PHY/Makefile | 5 +-
targets/RT/USER/lte-softmodem.c | 21 +-
targets/SIMU/USER/Makefile | 3 +
38 files changed, 220 insertions(+), 356 deletions(-)
diff --git a/openair1/DOCS/DOXYGEN/Doxyfile b/openair1/DOCS/DOXYGEN/Doxyfile
index 88a033df21..8cda3df01b 100755
--- a/openair1/DOCS/DOXYGEN/Doxyfile
+++ b/openair1/DOCS/DOXYGEN/Doxyfile
@@ -567,6 +567,7 @@ WARN_LOGFILE =
INPUT = ../../PHY/impl_defs_top.h \
../../PHY/impl_defs_lte.h \
../../PHY/defs.h \
+ ../../PHY/sse_intrin.h \
../../PHY/CODING/defs.h \
../../PHY/TOOLS/defs.h \
../../PHY/LTE_TRANSPORT/defs.h \
diff --git a/openair1/PHY/CODING/3gpplte_sse.c b/openair1/PHY/CODING/3gpplte_sse.c
index a27f2bb2ba..32cc0ddbb9 100755
--- a/openair1/PHY/CODING/3gpplte_sse.c
+++ b/openair1/PHY/CODING/3gpplte_sse.c
@@ -36,7 +36,7 @@
#include "extern_3GPPinterleaver.h"
#include <stdlib.h>
-#include "smmintrin.h"
+#include "PHY/sse_intrin.h"
//#define DEBUG_TURBO_ENCODER 1
#define CALLGRIND 1
diff --git a/openair1/PHY/CODING/3gpplte_turbo_decoder.c b/openair1/PHY/CODING/3gpplte_turbo_decoder.c
index 22fe5c58e0..4a098f84a6 100644
--- a/openair1/PHY/CODING/3gpplte_turbo_decoder.c
+++ b/openair1/PHY/CODING/3gpplte_turbo_decoder.c
@@ -34,10 +34,10 @@
*/
-#include "emmintrin.h"
#include "PHY/defs.h"
#include "PHY/CODING/defs.h"
#include "PHY/CODING/lte_interleaver_inline.h"
+#include "PHY/sse_intrin.h"
/*
// 3gpp2 polynomials
diff --git a/openair1/PHY/CODING/3gpplte_turbo_decoder_sse.c b/openair1/PHY/CODING/3gpplte_turbo_decoder_sse.c
index d1f8219743..febd82644f 100644
--- a/openair1/PHY/CODING/3gpplte_turbo_decoder_sse.c
+++ b/openair1/PHY/CODING/3gpplte_turbo_decoder_sse.c
@@ -42,10 +42,9 @@
///
///
-#include "emmintrin.h"
-#include "smmintrin.h"
+#include "PHY/sse_intrin.h"
-#ifndef TEST_DEBUG
+#ifndef TEST_DEBUG
#include "PHY/defs.h"
#include "PHY/CODING/defs.h"
#include "PHY/CODING/lte_interleaver_inline.h"
diff --git a/openair1/PHY/CODING/3gpplte_turbo_decoder_sse_16bit.c b/openair1/PHY/CODING/3gpplte_turbo_decoder_sse_16bit.c
index 12df10e5c6..29f2de0c74 100644
--- a/openair1/PHY/CODING/3gpplte_turbo_decoder_sse_16bit.c
+++ b/openair1/PHY/CODING/3gpplte_turbo_decoder_sse_16bit.c
@@ -44,8 +44,7 @@
///
///
-#include "emmintrin.h"
-#include "smmintrin.h"
+#include "PHY/sse_intrin.h"
#ifndef TEST_DEBUG
#include "PHY/defs.h"
diff --git a/openair1/PHY/CODING/3gpplte_turbo_decoder_sse_8bit.c b/openair1/PHY/CODING/3gpplte_turbo_decoder_sse_8bit.c
index ac06734368..5c61a8ed80 100644
--- a/openair1/PHY/CODING/3gpplte_turbo_decoder_sse_8bit.c
+++ b/openair1/PHY/CODING/3gpplte_turbo_decoder_sse_8bit.c
@@ -43,8 +43,7 @@
///
///
-#include "emmintrin.h"
-#include "smmintrin.h"
+#include "PHY/sse_intrin.h"
#ifndef TEST_DEBUG
#include "PHY/defs.h"
diff --git a/openair1/PHY/CODING/TESTBENCH/ltetest.c b/openair1/PHY/CODING/TESTBENCH/ltetest.c
index 4a168a3175..0a25d5bcb4 100644
--- a/openair1/PHY/CODING/TESTBENCH/ltetest.c
+++ b/openair1/PHY/CODING/TESTBENCH/ltetest.c
@@ -55,7 +55,7 @@
#define F1 3
#define F2 10
-#include "emmintrin.h"
+#include "PHY/sse_intrin.h"
#define sgn(a) (((a)<0) ? 0 : 1)
diff --git a/openair1/PHY/CODING/viterbi.c b/openair1/PHY/CODING/viterbi.c
index a6e1ffa2bf..0315749fe2 100755
--- a/openair1/PHY/CODING/viterbi.c
+++ b/openair1/PHY/CODING/viterbi.c
@@ -34,7 +34,7 @@
#ifndef EXPRESSMIMO_TARGET
-#include "emmintrin.h"
+#include "PHY/sse_intrin.h"
#endif //EXPRESSMIMO_TARGET
extern unsigned char ccodedot11_table[128],ccodedot11_table_rev[128];
@@ -212,9 +212,9 @@ void phy_viterbi_dot11_sse2(char *y,unsigned char *decoded_bytes,unsigned short
// set initial metrics
metrics0_15 = _mm_cvtsi32_si128(INIT0);
- metrics16_31 = _mm_xor_si128(metrics16_31,metrics16_31);
- metrics32_47 = _mm_xor_si128(metrics32_47,metrics32_47);
- metrics48_63 = _mm_xor_si128(metrics32_47,metrics32_47);
+ metrics16_31 = _mm_setzero_si128();
+ metrics32_47 = _mm_setzero_si128();
+ metrics48_63 = _mm_setzero_si128();
}
rescale = _mm_cvtsi32_si128(RESCALE);
diff --git a/openair1/PHY/CODING/viterbi_lte.c b/openair1/PHY/CODING/viterbi_lte.c
index 8d44d0de84..270763cc6c 100644
--- a/openair1/PHY/CODING/viterbi_lte.c
+++ b/openair1/PHY/CODING/viterbi_lte.c
@@ -50,7 +50,7 @@
#endif
#ifndef EXPRESSMIMO_TARGET
-#include "emmintrin.h"
+#include "PHY/sse_intrin.h"
#endif //EXPRESSMIMO_TARGET
extern uint8_t ccodelte_table[128],ccodelte_table_rev[128];
@@ -163,10 +163,10 @@ void phy_viterbi_lte_sse2(int8_t *y,uint8_t *decoded_bytes,uint16_t n) {
// set initial metrics
//debug_msg("Doing viterbi\n");
- metrics0_15 = _mm_xor_si128(metrics0_15,metrics0_15);
- metrics16_31 = _mm_xor_si128(metrics16_31,metrics16_31);
- metrics32_47 = _mm_xor_si128(metrics32_47,metrics32_47);
- metrics48_63 = _mm_xor_si128(metrics32_47,metrics32_47);
+ metrics0_15 = _mm_setzero_si128();
+ metrics16_31 = _mm_setzero_si128();
+ metrics32_47 = _mm_setzero_si128();
+ metrics48_63 = _mm_setzero_si128();
#ifndef USER_MODE
//debug_msg("Doing viterbi 2\n");
#endif
diff --git a/openair1/PHY/LTE_ESTIMATION/freq_equalization.c b/openair1/PHY/LTE_ESTIMATION/freq_equalization.c
index 74bea94245..dfe77dabb6 100755
--- a/openair1/PHY/LTE_ESTIMATION/freq_equalization.c
+++ b/openair1/PHY/LTE_ESTIMATION/freq_equalization.c
@@ -28,8 +28,7 @@
*******************************************************************************/
#include "PHY/defs.h"
#include "PHY/extern.h"
-#include <emmintrin.h>
-#include <xmmintrin.h>
+#include "PHY/sse_intrin.h"
// This is 512/(1:256) in __m128i format
int16_t inv_ch[256*8] = {512,512,512,512,512,512,512,512,
diff --git a/openair1/PHY/LTE_ESTIMATION/lte_eNB_measurements.c b/openair1/PHY/LTE_ESTIMATION/lte_eNB_measurements.c
index 5d17d35bfd..9d4fabc782 100644
--- a/openair1/PHY/LTE_ESTIMATION/lte_eNB_measurements.c
+++ b/openair1/PHY/LTE_ESTIMATION/lte_eNB_measurements.c
@@ -29,13 +29,8 @@
#include "PHY/defs.h"
#include "PHY/extern.h"
-#include "emmintrin.h"
+#include "PHY/sse_intrin.h"
-#ifdef __SSE3__
-#include "pmmintrin.h"
-#include "tmmintrin.h"
-#else
-#endif
//#define k1 1000
#define k1 1024
diff --git a/openair1/PHY/LTE_ESTIMATION/lte_est_freq_offset.c b/openair1/PHY/LTE_ESTIMATION/lte_est_freq_offset.c
index e29d2d644d..54d39fa8cb 100644
--- a/openair1/PHY/LTE_ESTIMATION/lte_est_freq_offset.c
+++ b/openair1/PHY/LTE_ESTIMATION/lte_est_freq_offset.c
@@ -46,7 +46,7 @@ int dl_channel_level(int16_t *dl_ch,
int avg;
//clear average level
- avg128F = _mm_xor_si128(avg128F,avg128F);
+ avg128F = _mm_setzero_si128();
dl_ch128=(__m128i *)dl_ch;
for (rb=0;rb<frame_parms->N_RB_DL;rb++) {
diff --git a/openair1/PHY/LTE_ESTIMATION/lte_ue_measurements.c b/openair1/PHY/LTE_ESTIMATION/lte_ue_measurements.c
index 2241bad9c1..6582e1d5fc 100644
--- a/openair1/PHY/LTE_ESTIMATION/lte_ue_measurements.c
+++ b/openair1/PHY/LTE_ESTIMATION/lte_ue_measurements.c
@@ -33,17 +33,7 @@
#include "SCHED/defs.h"
#include "SCHED/extern.h"
#include "log.h"
-
-#include "emmintrin.h"
-
-#ifdef __SSE3__
-#include "pmmintrin.h"
-#include "tmmintrin.h"
-#else
-__m128i zeroPMI;
-#define _mm_abs_epi16(xmmx) _mm_xor_si128((xmmx),_mm_cmpgt_epi16(zeroPMI,(xmmx)))
-#define _mm_sign_epi16(xmmx,xmmy) _mm_xor_si128((xmmx),_mm_cmpgt_epi16(zeroPMI,(xmmy)))
-#endif
+#include "PHY/sse_intrin.h"
//#define k1 1000
#define k1 ((long long int) 1000)
@@ -489,8 +479,8 @@ void lte_ue_measurements(PHY_VARS_UE *phy_vars_ue,
// pmi
- pmi128_re = _mm_xor_si128(pmi128_re,pmi128_re);
- pmi128_im = _mm_xor_si128(pmi128_im,pmi128_im);
+ pmi128_re = _mm_setzero_si128();
+ pmi128_im = _mm_setzero_si128();
// limit is the number of groups of 4 REs in a subband (12 = 4 RBs, 3 = 1 RB)
// for 5 MHz channelization, there are 7 subbands, 6 of size 4 RBs and 1 of size 1 RB
if ((N_RB_DL==6) || (subband<(nb_subbands-1)))
@@ -507,8 +497,8 @@ void lte_ue_measurements(PHY_VARS_UE *phy_vars_ue,
//print_shorts("ch1",dl_ch1_128);
// }
// if(i==0){
- mmtmpPMI0 = _mm_xor_si128(mmtmpPMI0,mmtmpPMI0);
- mmtmpPMI1 = _mm_xor_si128(mmtmpPMI1,mmtmpPMI1);
+ mmtmpPMI0 = _mm_setzero_si128();
+ mmtmpPMI1 = _mm_setzero_si128();
// }
// if(eNB_id==0)
// print_ints("Pre_re",&mmtmpPMI0);
diff --git a/openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c b/openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
index 21a5e14ccb..24b275bdb5 100644
--- a/openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
+++ b/openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
@@ -28,16 +28,9 @@
*******************************************************************************/
#include "PHY/defs.h"
#include "PHY/extern.h"
-#include <emmintrin.h>
-#include <xmmintrin.h>
+#include "PHY/sse_intrin.h"
//#define DEBUG_CH
-#ifndef __SSE3__
-__m128i zeroE;//,tmp_over_sqrt_10,tmp_sum_4_over_sqrt_10,tmp_sign,tmp_sign_3_over_sqrt_10;
-//#define _mm_abs_epi16(xmmx) _mm_xor_si128((xmmx),_mm_cmpgt_epi16(zero,(xmmx)))
-#define _mm_abs_epi16(xmmx) _mm_add_epi16(_mm_xor_si128((xmmx),_mm_cmpgt_epi16(zeroE,(xmmx))),_mm_srli_epi16(_mm_cmpgt_epi16(zeroE,(xmmx)),15))
-#define _mm_sign_epi16(xmmx,xmmy) _mm_xor_si128((xmmx),_mm_cmpgt_epi16(zeroE,(xmmy)))
-#endif
// For Channel Estimation in Distributed Alamouti Scheme
//static int16_t temp_out_ifft[2048*4] __attribute__((aligned(16)));
@@ -696,8 +689,8 @@ int16_t lte_ul_freq_offset_estimation(LTE_DL_FRAME_PARMS *frame_parms,
int16_t alpha[128] = {201, 402, 603, 804, 1006, 1207, 1408, 1610, 1811, 2013, 2215, 2417, 2619, 2822, 3024, 3227, 3431, 3634, 3838, 4042, 4246, 4450, 4655, 4861, 5066, 5272, 5479, 5686, 5893, 6101, 6309, 6518, 6727, 6937, 7147, 7358, 7570, 7782, 7995, 8208, 8422, 8637, 8852, 9068, 9285, 9503, 9721, 9940, 10160, 10381, 10603, 10825, 11049, 11273, 11498, 11725, 11952, 12180, 12410, 12640, 12872, 13104, 13338, 13573, 13809, 14046, 14285, 14525, 14766, 15009, 15253, 15498, 15745, 15993, 16243, 16494, 16747, 17001, 17257, 17515, 17774, 18035, 18298, 18563, 18829, 19098, 19368, 19640, 19915, 20191, 20470, 20750, 21033, 21318, 21605, 21895, 22187, 22481, 22778, 23078, 23380, 23685, 23992, 24302, 24615, 24931, 25250, 25572, 25897, 26226, 26557, 26892, 27230, 27572, 27917, 28266, 28618, 28975, 29335, 29699, 30067, 30440, 30817, 31198, 31583, 31973, 32368, 32767};
// compute log2_maxh (output_shift)
- avg128U1 = _mm_xor_si128(avg128U1,avg128U1);
- avg128U2 = _mm_xor_si128(avg128U2,avg128U2);
+ avg128U1 = _mm_setzero_si128();
+ avg128U2 = _mm_setzero_si128();
for (rb=0;rb<nb_rb;rb++) {
avg128U1 = _mm_add_epi32(avg128U1,_mm_madd_epi16(ul_ch1[0],ul_ch1[0]));
diff --git a/openair1/PHY/LTE_TRANSPORT/dci.c b/openair1/PHY/LTE_TRANSPORT/dci.c
index 6b0bbcbe73..767a683c80 100644
--- a/openair1/PHY/LTE_TRANSPORT/dci.c
+++ b/openair1/PHY/LTE_TRANSPORT/dci.c
@@ -46,12 +46,7 @@
#include "PHY/extern.h"
#include "SCHED/defs.h"
#include "SIMULATION/TOOLS/defs.h" // for taus
-#include <emmintrin.h>
-#include <xmmintrin.h>
-#ifdef __SSE3__
-#include <pmmintrin.h>
-#include <tmmintrin.h>
-#endif
+#include "PHY/sse_intrin.h"
#include "assertions.h"
@@ -61,12 +56,6 @@
//#undef ALL_AGGREGATION
-#ifndef __SSE3__
-__m128i zero2;
-#define _mm_abs_epi16(xmmx) _mm_xor_si128((xmmx),_mm_cmpgt_epi16(zero2,(xmmx)))
-#define _mm_sign_epi16(xmmx,xmmy) _mm_xor_si128((xmmx),_mm_cmpgt_epi16(zero2,(xmmy)))
-#endif
-
//extern uint16_t phich_reg[MAX_NUM_PHICH_GROUPS][3];
//extern uint16_t pcfich_reg[4];
@@ -636,7 +625,7 @@ void pdcch_channel_level(int32_t **dl_ch_estimates_ext,
for (aatx=0;aatx<frame_parms->nb_antennas_tx_eNB;aatx++)
for (aarx=0;aarx<frame_parms->nb_antennas_rx;aarx++) {
//clear average level
- avg128P = _mm_xor_si128(avg128P,avg128P);
+ avg128P = _mm_setzero_si128();
dl_ch128=(__m128i *)&dl_ch_estimates_ext[(aatx<<1)+aarx][frame_parms->N_RB_DL*12];
for (rb=0;rb<nb_rb;rb++) {
@@ -1272,9 +1261,6 @@ void pdcch_channel_compensation(int32_t **rxdataF_ext,
-#ifndef __SSE3__
- zero2 = _mm_xor_si128(zero2,zero2);
-#endif
#ifdef DEBUG_DCI_DECODING
msg("[PHY] PDCCH comp: symbol %d\n",symbol);
diff --git a/openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c b/openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
index a081cf5caf..3d642e55b0 100644
--- a/openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
+++ b/openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
@@ -38,26 +38,13 @@
* \warning
*/
-#ifdef __SSE2__
-#include <emmintrin.h>
-#include <xmmintrin.h>
-#endif
-#ifdef __SSE3__
-#include <pmmintrin.h>
-#include <tmmintrin.h>
-#endif
#include "PHY/defs.h"
#include "PHY/extern.h"
#include "defs.h"
#include "extern.h"
+#include "PHY/sse_intrin.h"
-#ifndef __SSE3__
-__m128i zero;//,tmp_over_sqrt_10,tmp_sum_4_over_sqrt_10,tmp_sign,tmp_sign_3_over_sqrt_10;
-//#define _mm_abs_epi16(xmmx) _mm_xor_si128((xmmx),_mm_cmpgt_epi16(zero,(xmmx)))
-#define _mm_abs_epi16(xmmx) _mm_add_epi16(_mm_xor_si128((xmmx),_mm_cmpgt_epi16(zero,(xmmx))),_mm_srli_epi16(_mm_cmpgt_epi16(zero,(xmmx)),15))
-#define _mm_sign_epi16(xmmx,xmmy) _mm_xor_si128((xmmx),_mm_cmpgt_epi16(zero,(xmmy)))
-#endif
#ifndef USER_MODE
#define NOCYGWIN_STATIC static
@@ -110,7 +97,7 @@ int rx_pdsch(PHY_VARS_UE *phy_vars_ue,
unsigned char aatx,aarx;
unsigned short nb_rb;
int avgs, rb;
- LTE_DL_UE_HARQ_t *dlsch0_harq,*dlsch1_harq;
+ LTE_DL_UE_HARQ_t *dlsch0_harq,*dlsch1_harq = 0;
switch (type) {
case SI_PDSCH:
@@ -800,10 +787,6 @@ void dlsch_channel_compensation(int **rxdataF_ext,
symbol_mod = (symbol>=(7-frame_parms->Ncp)) ? symbol-(7-frame_parms->Ncp) : symbol;
-#ifndef __SSE3__
- zero = _mm_xor_si128(zero,zero);
-#endif
-
if ((symbol_mod == 0) || (symbol_mod == (4-frame_parms->Ncp))) {
if (frame_parms->mode1_flag==1) // 10 out of 12 so don't reduce size
@@ -815,7 +798,7 @@ void dlsch_channel_compensation(int **rxdataF_ext,
for (aatx=0;aatx<frame_parms->nb_antennas_tx_eNB;aatx++) {
if (mod_order == 4) {
QAM_amp128 = _mm_set1_epi16(QAM16_n1); // 2/sqrt(10)
- QAM_amp128b = _mm_xor_si128(QAM_amp128b,QAM_amp128b);
+ QAM_amp128b = _mm_setzero_si128();
}
else if (mod_order == 6) {
QAM_amp128 = _mm_set1_epi16(QAM64_n1); //
@@ -1180,15 +1163,11 @@ void dlsch_channel_compensation_TM56(int **rxdataF_ext,
rx_power_correction = 1;
-#ifndef __SSE3__
- zero = _mm_xor_si128(zero,zero);
-#endif
-
//printf("comp prec: symbol %d, pilots %d\n",symbol, pilots);
if (mod_order == 4) {
QAM_amp128 = _mm_set1_epi16(QAM16_n1);
- QAM_amp128b = _mm_xor_si128(QAM_amp128b,QAM_amp128b);
+ QAM_amp128b = _mm_setzero_si128();
}
else if (mod_order == 6) {
QAM_amp128 = _mm_set1_epi16(QAM64_n1);
@@ -1396,15 +1375,11 @@ void dlsch_channel_compensation_TM3(LTE_DL_FRAME_PARMS *frame_parms,
rx_power_correction = 1;
-#ifndef __SSE3__
- zero = _mm_xor_si128(zero,zero);
-#endif
-
//printf("comp prec: symbol %d, pilots %d\n",symbol, pilots);
if (mod_order0 == 4) {
QAM_amp0_128 = _mm_set1_epi16(QAM16_n1);
- QAM_amp0_128b = _mm_xor_si128(QAM_amp0_128b,QAM_amp0_128b);
+ QAM_amp0_128b = _mm_setzero_si128();
}
else if (mod_order0 == 6) {
QAM_amp0_128 = _mm_set1_epi16(QAM64_n1);
@@ -1412,7 +1387,7 @@ void dlsch_channel_compensation_TM3(LTE_DL_FRAME_PARMS *frame_parms,
}
if (mod_order1 == 4) {
QAM_amp1_128 = _mm_set1_epi16(QAM16_n1);
- QAM_amp1_128b = _mm_xor_si128(QAM_amp1_128b,QAM_amp1_128b);
+ QAM_amp1_128b = _mm_setzero_si128();
}
else if (mod_order1 == 6) {
QAM_amp1_128 = _mm_set1_epi16(QAM64_n1);
@@ -1949,7 +1924,7 @@ void dlsch_channel_level(int **dl_ch_estimates_ext,
for (aatx=0;aatx<frame_parms->nb_antennas_tx_eNB;aatx++)
for (aarx=0;aarx<frame_parms->nb_antennas_rx;aarx++) {
//clear average level
- avg128D = _mm_xor_si128(avg128D,avg128D);
+ avg128D = _mm_setzero_si128();
// 5 is always a symbol with no pilots for both normal and extended prefix
dl_ch128=(__m128i *)&dl_ch_estimates_ext[(aatx<<1)+aarx][symbol*frame_parms->N_RB_DL*12];
@@ -2008,7 +1983,7 @@ void dlsch_channel_level_TM3(int **dl_ch_estimates_ext,
symbol_mod = (symbol>=(7-frame_parms->Ncp)) ? symbol-(7-frame_parms->Ncp) : symbol;
//clear average level
- avg128D = _mm_xor_si128(avg128D,avg128D);
+ avg128D = _mm_setzero_si128();
avg[0] = 0;
avg[1] = 0;
// 5 is always a symbol with no pilots for both normal and extended prefix
@@ -2083,7 +2058,7 @@ void dlsch_channel_level_TM56(int **dl_ch_estimates_ext,
symbol_mod = (symbol>=(7-frame_parms->Ncp)) ? symbol-(7-frame_parms->Ncp) : symbol;
//clear average level
- avg128D = _mm_xor_si128(avg128D,avg128D);
+ avg128D = _mm_setzero_si128();
avg[0] = 0;
avg[1] = 0;
// 5 is always a symbol with no pilots for both normal and extended prefix
diff --git a/openair1/PHY/LTE_TRANSPORT/dlsch_llr_computation.c b/openair1/PHY/LTE_TRANSPORT/dlsch_llr_computation.c
index ba83156742..8ffb030fdd 100644
--- a/openair1/PHY/LTE_TRANSPORT/dlsch_llr_computation.c
+++ b/openair1/PHY/LTE_TRANSPORT/dlsch_llr_computation.c
@@ -38,27 +38,11 @@
* \warning
*/
-#ifdef __SSE2__
-#include <emmintrin.h>
-#include <xmmintrin.h>
-#endif
-#ifdef __SSE3__
-#include <pmmintrin.h>
-#include <tmmintrin.h>
-#endif
-#ifdef __SSE4_1__
-#include <smmintrin.h>
-#endif
#include "PHY/defs.h"
#include "PHY/extern.h"
#include "defs.h"
#include "extern.h"
-
-#ifndef __SSE3__
-//#define _mm_abs_epi16(xmmx) _mm_xor_si128((xmmx),_mm_cmpgt_epi16(zero,(xmmx)))
-//abs_#define _mm_abs_epi16(xmmx) _mm_add_epi16(_mm_xor_si128((xmmx),_mm_cmpgt_epi16((*(__m128i*)&zero[0]),(xmmx))),_mm_srli_epi16(_mm_cmpgt_epi16((*(__m128i*)&zero[0]),(xmmx)),15))
-//#define _mm_sign_epi16(xmmx,xmmy) _mm_xor_si128((xmmx),_mm_cmpgt_epi16(zero,(xmmy)))
-#endif
+#include "PHY/sse_intrin.h"
#ifndef USER_MODE
#define NOCYGWIN_STATIC static
@@ -1061,7 +1045,7 @@ length = number of resource elements
// Compute the terms for the LLR of first bit
- xmm0 = _mm_xor_si128(xmm0,xmm0); // ZERO
+ xmm0 = _mm_setzero_si128(); // ZERO
// 1 term for numerator of LLR
xmm3 = _mm_subs_epi16(y1r_over2,rho_rpi);
@@ -1305,7 +1289,7 @@ length = number of resource elements
y1r = _mm_unpacklo_epi64(xmm0,xmm1); //[y1r(1),y1r(2),y1r(3),y1r(4)]
y1i = _mm_unpackhi_epi64(xmm0,xmm1); //[y1i(1),y1i(2),y1i(3),y1i(4)]
- xmm0 = _mm_xor_si128(xmm0,xmm0); // ZERO
+ xmm0 = _mm_setzero_si128(); // ZERO
// compute psi
xmm3 = _mm_subs_epi16(y1r,rho_rpi);
@@ -1569,7 +1553,7 @@ length = number of resource elements
y1r = _mm_unpacklo_epi64(xmm0,xmm1); //[y1r(1),y1r(2),y1r(3),y1r(4)]
y1i = _mm_unpackhi_epi64(xmm0,xmm1); //[y1i(1),y1i(2),y1i(3),y1i(4)]
- xmm0 = _mm_xor_si128(xmm0,xmm0); // ZERO
+ xmm0 = _mm_setzero_si128(); // ZERO
// compute psi
xmm3 = _mm_subs_epi16(y1r,rho_rpi);
@@ -1780,7 +1764,7 @@ void qam16_qpsk(short *stream0_in,
y1r = _mm_unpacklo_epi64(xmm0,xmm1); //[y1r(1),y1r(2),y1r(3),y1r(4)]
y1i = _mm_unpackhi_epi64(xmm0,xmm1); //[y1i(1),y1i(2),y1i(3),y1i(4)]
- xmm0 = _mm_xor_si128(xmm0,xmm0); // ZERO
+ xmm0 = _mm_setzero_si128(); // ZERO
xmm2 = _mm_subs_epi16(rho_rpi_1_1,y1r); // = [Re(rho)+ Im(rho)]/sqrt(10) - y1r
psi_r_p1_p1 = _mm_abs_epi16(xmm2); // = |[Re(rho)+ Im(rho)]/sqrt(10) - y1r|
@@ -2237,7 +2221,7 @@ void qam16_qam16(short *stream0_in,
y1r = _mm_unpacklo_epi64(xmm0,xmm1); //[y1r(1),y1r(2),y1r(3),y1r(4)]
y1i = _mm_unpackhi_epi64(xmm0,xmm1); //[y1i(1),y1i(2),y1i(3),y1i(4)]
- xmm0 = _mm_xor_si128(xmm0,xmm0); // ZERO
+ xmm0 = _mm_setzero_si128(); // ZERO
xmm2 = _mm_subs_epi16(rho_rpi_1_1,y1r); // = [Re(rho)+ Im(rho)]/sqrt(10) - y1r
psi_r_p1_p1 = _mm_abs_epi16(xmm2); // = |[Re(rho)+ Im(rho)]/sqrt(10) - y1r|
@@ -2748,7 +2732,7 @@ void qam16_qam64(short *stream0_in,
y1r = _mm_unpacklo_epi64(xmm0,xmm1); //[y1r(1),y1r(2),y1r(3),y1r(4)]
y1i = _mm_unpackhi_epi64(xmm0,xmm1); //[y1i(1),y1i(2),y1i(3),y1i(4)]
- xmm0 = _mm_xor_si128(xmm0,xmm0); // ZERO
+ xmm0 = _mm_setzero_si128(); // ZERO
xmm2 = _mm_subs_epi16(rho_rpi_1_1,y1r); // = [Re(rho)+ Im(rho)]/sqrt(10) - y1r
psi_r_p1_p1 = _mm_abs_epi16(xmm2); // = |[Re(rho)+ Im(rho)]/sqrt(10) - y1r|
@@ -3357,7 +3341,7 @@ void qam64_qpsk(short *stream0_in,
y1i = _mm_unpackhi_epi64(xmm0,xmm1); //[y1i(1),y1i(2),y1i(3),y1i(4)]
// Psi_r calculation from rho_rpi or rho_rmi
- xmm0 = _mm_xor_si128(xmm0, xmm0); // ZERO for abs_pi16
+ xmm0 = _mm_setzero_si128(); // ZERO for abs_pi16
xmm2 = _mm_subs_epi16(rho_rpi_7_7, y1r); psi_r_p7_p7 = _mm_abs_epi16(xmm2);
xmm2 = _mm_subs_epi16(rho_rpi_7_5, y1r); psi_r_p7_p5 = _mm_abs_epi16(xmm2);
xmm2 = _mm_subs_epi16(rho_rpi_7_3, y1r); psi_r_p7_p3 = _mm_abs_epi16(xmm2);
@@ -4669,7 +4653,7 @@ void qam64_qam16(short *stream0_in,
y1i = _mm_unpackhi_epi64(xmm0,xmm1); //[y1i(1),y1i(2),y1i(3),y1i(4)]
// Psi_r calculation from rho_rpi or rho_rmi
- xmm0 = _mm_xor_si128(xmm0, xmm0); // ZERO for abs_pi16
+ xmm0 = _mm_setzero_si128(); // ZERO for abs_pi16
xmm2 = _mm_subs_epi16(rho_rpi_7_7, y1r); psi_r_p7_p7 = _mm_abs_epi16(xmm2);
xmm2 = _mm_subs_epi16(rho_rpi_7_5, y1r); psi_r_p7_p5 = _mm_abs_epi16(xmm2);
xmm2 = _mm_subs_epi16(rho_rpi_7_3, y1r); psi_r_p7_p3 = _mm_abs_epi16(xmm2);
@@ -5924,7 +5908,7 @@ void qam64_qam64(short *stream0_in,
y1i = _mm_unpackhi_epi64(xmm0,xmm1); //[y1i(1),y1i(2),y1i(3),y1i(4)]
// Psi_r calculation from rho_rpi or rho_rmi
- xmm0 = _mm_xor_si128(xmm0, xmm0); // ZERO for abs_pi16
+ xmm0 = _mm_setzero_si128(); // ZERO for abs_pi16
xmm2 = _mm_subs_epi16(rho_rpi_7_7, y1r); psi_r_p7_p7 = _mm_abs_epi16(xmm2);
xmm2 = _mm_subs_epi16(rho_rpi_7_5, y1r); psi_r_p7_p5 = _mm_abs_epi16(xmm2);
xmm2 = _mm_subs_epi16(rho_rpi_7_3, y1r); psi_r_p7_p3 = _mm_abs_epi16(xmm2);
diff --git a/openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c b/openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c
index 276180fd76..731d1ef7cb 100644
--- a/openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c
+++ b/openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c
@@ -1016,7 +1016,7 @@ int dlsch_modulation(mod_sym_t **txdataF,
uint8_t pilots=0;
uint8_t skip_dc,skip_half;
uint8_t mod_order0 = get_Qm(dlsch0_harq->mcs);
- uint8_t mod_order1;
+ uint8_t mod_order1 = 0;
int16_t amp_rho_a, amp_rho_b;
int16_t qam16_table_a0[4],qam64_table_a0[8],qam16_table_b0[4],qam64_table_b0[8];
int16_t qam16_table_a1[4],qam64_table_a1[8],qam16_table_b1[4],qam64_table_b1[8];
diff --git a/openair1/PHY/LTE_TRANSPORT/drs_modulation.c b/openair1/PHY/LTE_TRANSPORT/drs_modulation.c
index fa73a9ec75..7b11f7ae6d 100644
--- a/openair1/PHY/LTE_TRANSPORT/drs_modulation.c
+++ b/openair1/PHY/LTE_TRANSPORT/drs_modulation.c
@@ -39,8 +39,7 @@
*/
#include "PHY/defs.h"
#include "PHY/extern.h"
-#include <emmintrin.h>
-#include <xmmintrin.h>
+#include "PHY/sse_intrin.h"
//#define DEBUG_DRS
int generate_drs_pusch(PHY_VARS_UE *phy_vars_ue,
diff --git a/openair1/PHY/LTE_TRANSPORT/pbch.c b/openair1/PHY/LTE_TRANSPORT/pbch.c
index 920ab5b90c..5ce741ae0c 100755
--- a/openair1/PHY/LTE_TRANSPORT/pbch.c
+++ b/openair1/PHY/LTE_TRANSPORT/pbch.c
@@ -37,28 +37,18 @@
* \note
* \warning
*/
-#include <emmintrin.h>
-#include <xmmintrin.h>
-#ifdef __SSE3__
-#include <pmmintrin.h>
-#include <tmmintrin.h>
-#endif
#include "PHY/defs.h"
#include "PHY/CODING/extern.h"
#include "PHY/CODING/lte_interleaver_inline.h"
#include "defs.h"
#include "extern.h"
#include "PHY/extern.h"
+#include "PHY/sse_intrin.h"
#ifdef PHY_ABSTRACTION
#include "SIMULATION/TOOLS/defs.h"
#endif
-#ifndef __SSE3__
-extern __m128i zero;
-#define _mm_abs_epi16(xmmx) _mm_xor_si128((xmmx),_mm_cmpgt_epi16(zero,(xmmx)))
-#define _mm_sign_epi16(xmmx,xmmy) _mm_xor_si128((xmmx),_mm_cmpgt_epi16(zero,(xmmy)))
-#endif
//#define DEBUG_PBCH 1
//#define DEBUG_PBCH_ENCODING
@@ -524,7 +514,7 @@ int pbch_channel_level(int **dl_ch_estimates_ext,
for (aatx=0;aatx<4;aatx++) //frame_parms->nb_antennas_tx_eNB;aatx++)
for (aarx=0;aarx<frame_parms->nb_antennas_rx;aarx++) {
//clear average level
- avg128 = _mm_xor_si128(avg128,avg128);
+ avg128 = _mm_setzero_si128();
dl_ch128=(__m128i *)&dl_ch_estimates_ext[(aatx<<1)+aarx][symbol_mod*6*12];
for (rb=0;rb<nb_rb;rb++) {
diff --git a/openair1/PHY/LTE_TRANSPORT/pmch.c b/openair1/PHY/LTE_TRANSPORT/pmch.c
index f1a79190f9..1d0e3491a8 100644
--- a/openair1/PHY/LTE_TRANSPORT/pmch.c
+++ b/openair1/PHY/LTE_TRANSPORT/pmch.c
@@ -28,6 +28,7 @@
*******************************************************************************/
#include "PHY/defs.h"
#include "PHY/extern.h"
+#include "PHY/sse_intrin.h"
// Mask for identifying subframe for MBMS
#define MBSFN_TDD_SF3 0x80// for TDD
@@ -46,14 +47,6 @@
#define MBSFN_FDD_SF8 0x04
-#ifndef __SSE3__
-#warning SSE3 instruction set not preset
-__m128i zeroM;//,tmp_over_sqrt_10,tmp_sum_4_over_sqrt_10,tmp_sign,tmp_sign_3_over_sqrt_10;
-//#define _mm_abs_epi16(xmmx) _mm_xor_si128((xmmx),_mm_cmpgt_epi16(zero,(xmmx)))
-#define _mm_abs_epi16(xmmx) _mm_add_epi16(_mm_xor_si128((xmmx),_mm_cmpgt_epi16(zeroM,(xmmx))),_mm_srli_epi16(_mm_cmpgt_epi16(zeroM,(xmmx)),15))
-#define _mm_sign_epi16(xmmx,xmmy) _mm_xor_si128((xmmx),_mm_cmpgt_epi16(zeroM,(xmmy)))
-#endif
-
void dump_mch(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint16_t coded_bits_per_codeword,int subframe) {
@@ -375,7 +368,7 @@ void mch_channel_level(int **dl_ch_estimates_ext,
for (aarx=0;aarx<frame_parms->nb_antennas_rx;aarx++) {
//clear average level
- avg128 = _mm_xor_si128(avg128,avg128);
+ avg128 = _mm_setzero_si128();
// 5 is always a symbol with no pilots for both normal and extended prefix
dl_ch128=(__m128i *)&dl_ch_estimates_ext[aarx][symbol*frame_parms->N_RB_DL*12];
diff --git a/openair1/PHY/LTE_TRANSPORT/prach.c b/openair1/PHY/LTE_TRANSPORT/prach.c
index f714c0b9e4..e4689fb2f9 100644
--- a/openair1/PHY/LTE_TRANSPORT/prach.c
+++ b/openair1/PHY/LTE_TRANSPORT/prach.c
@@ -37,14 +37,7 @@
* \note
* \warning
*/
-#ifdef __SSE2__
-#include <emmintrin.h>
-#include <xmmintrin.h>
-#endif
-#ifdef __SSE3__
-#include <pmmintrin.h>
-#include <tmmintrin.h>
-#endif
+#include "PHY/sse_intrin.h"
#include "PHY/defs.h"
#include "PHY/extern.h"
//#include "prach.h"
@@ -960,8 +953,14 @@ void rx_prach(PHY_VARS_eNB *phy_vars_eNB,uint8_t subframe,uint16_t *preamble_ene
(numshift>0) ? (not_found = 0) : (preamble_offset++);
}
}
- preamble_shift = -((d_start * (preamble_index0/n_shift_ra)) + ((preamble_index0%n_shift_ra)*NCS)); // minus because the channel is h(t -\tau + Cv)
- (preamble_shift < 0) ? (preamble_shift+=N_ZC) : preamble_shift;
+ if (n_shift_ra>0)
+ preamble_shift = -((d_start * (preamble_index0/n_shift_ra)) + ((preamble_index0%n_shift_ra)*NCS)); // minus because the channel is h(t -\tau + Cv)
+ else
+ preamble_shift = 0;
+
+ if (preamble_shift < 0)
+ preamble_shift+=N_ZC;
+
preamble_index0++;
if (preamble_index == 0)
first_nonzero_root_idx = preamble_offset;
diff --git a/openair1/PHY/LTE_TRANSPORT/sss.c b/openair1/PHY/LTE_TRANSPORT/sss.c
index c0a577edaa..efe6784cd3 100644
--- a/openair1/PHY/LTE_TRANSPORT/sss.c
+++ b/openair1/PHY/LTE_TRANSPORT/sss.c
@@ -354,7 +354,7 @@ int rx_sss(PHY_VARS_UE *phy_vars_ue,int32_t *tot_metric,uint8_t *flip_max,uint8_
sss0 = (int16_t*)&sss0_ext[0][5];
sss5 = (int16_t*)&sss5_ext[0][5];
for (flip=0;flip<2;flip++) { // d0/d5 flip in RX frame
- for (phase=0;phase<=7;phase++) { // phase offset between PSS and SSS
+ for (phase=0;phase<7;phase++) { // phase offset between PSS and SSS
for (Nid1 = 0 ; Nid1 <= 167; Nid1++) { // 168 possible Nid1 values
metric = 0;
if (flip==0) {
diff --git a/openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c b/openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c
index 112b1ee494..9c1b3c7409 100644
--- a/openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c
+++ b/openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c
@@ -38,15 +38,6 @@
* \warning
*/
-#include <emmintrin.h>
-#include <xmmintrin.h>
-#ifdef __SSE4_1__
-#include <smmintrin.h>
-#endif
-#ifdef __SSE3__
-#include <pmmintrin.h>
-#include <tmmintrin.h>
-#endif
#include "PHY/defs.h"
#include "PHY/extern.h"
#include "MAC_INTERFACE/defs.h"
@@ -54,16 +45,12 @@
#include "defs.h"
#include "extern.h"
//#define DEBUG_ULSCH
+#include "PHY/sse_intrin.h"
//extern char* namepointer_chMag ;
//eren
//extern int **ulchmag_eren;
//eren
-#ifndef __SSE3__
-__m128i zeroU;
-#define _mm_abs_epi16(xmmx) _mm_xor_si128((xmmx),_mm_cmpgt_epi16(zeroU,(xmmx)))
-#define _mm_sign_epi16(xmmx,xmmy) _mm_xor_si128((xmmx),_mm_cmpgt_epi16(zeroU,(xmmy)))
-#endif
static short jitter[8] __attribute__ ((aligned(16))) = {1,0,0,1,0,1,1,0};
@@ -502,7 +489,6 @@ void ulsch_64qam_llr(LTE_DL_FRAME_PARMS *frame_parms,
mmtmpU2 = _mm_abs_epi16(mmtmpU1);
mmtmpU2 = _mm_subs_epi16(ch_magb[i],mmtmpU2);
-#ifdef __SSE4_1__
(*llrp32)[0] = _mm_extract_epi32(rxF[i],0);
(*llrp32)[1] = _mm_extract_epi32(mmtmpU1,0);
(*llrp32)[2] = _mm_extract_epi32(mmtmpU2,0);
@@ -515,7 +501,6 @@ void ulsch_64qam_llr(LTE_DL_FRAME_PARMS *frame_parms,
(*llrp32)[9] = _mm_extract_epi32(rxF[i],3);
(*llrp32)[10] = _mm_extract_epi32(mmtmpU1,3);
(*llrp32)[11] = _mm_extract_epi32(mmtmpU2,3);
-#endif
(*llrp32)+=12;
}
@@ -661,10 +646,6 @@ void ulsch_channel_compensation(int32_t **rxdataF_ext,
#endif
// symbol_mod = (symbol>=(7-frame_parms->Ncp)) ? symbol-(7-frame_parms->Ncp) : symbol;
-#ifndef __SSE3__
- zeroU = _mm_xor_si128(zeroU,zeroU);
-#endif
-
// printf("comp: symbol %d\n",symbol);
#ifdef ULSCH_OFDMA
@@ -862,10 +843,6 @@ void ulsch_channel_compensation_alamouti(int32_t **rxdataF_ext,
// symbol_mod = (symbol>=(7-frame_parms->Ncp)) ? symbol-(7-frame_parms->Ncp) : symbol;
-#ifndef __SSE3__
- zeroU = _mm_xor_si128(zeroU,zeroU);
-#endif
-
// printf("comp: symbol %d\n",symbol);
@@ -1219,7 +1196,7 @@ void ulsch_channel_level(int32_t **drs_ch_estimates_ext,
for (aarx=0;aarx<frame_parms->nb_antennas_rx;aarx++) {
//clear average level
- avg128U = _mm_xor_si128(avg128U,avg128U);
+ avg128U = _mm_setzero_si128();
ul_ch128=(__m128i *)drs_ch_estimates_ext[aarx];
for (rb=0;rb<nb_rb;rb++) {
diff --git a/openair1/PHY/MODULATION/ul_7_5_kHz.c b/openair1/PHY/MODULATION/ul_7_5_kHz.c
index 6c0d890a7d..4366bc609d 100755
--- a/openair1/PHY/MODULATION/ul_7_5_kHz.c
+++ b/openair1/PHY/MODULATION/ul_7_5_kHz.c
@@ -26,14 +26,6 @@
Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
*******************************************************************************/
-#ifdef __SSE2__
-#include <emmintrin.h>
-#include <xmmintrin.h>
-#endif
-#ifdef __SSE3__
-#include <pmmintrin.h>
-#include <tmmintrin.h>
-#endif
#include "PHY/defs.h"
#include "PHY/extern.h"
#include "extern.h"
@@ -44,11 +36,8 @@
#else
#include "rtai_math.h"
#endif
-#ifndef __SSE3__
-__m128i zero;
-#define _mm_abs_epi16(xmmx) _mm_xor_si128((xmmx),_mm_cmpgt_epi16(zero,(xmmx)))
-#define _mm_sign_epi16(xmmx,xmmy) _mm_xor_si128((xmmx),_mm_cmpgt_epi16(zero,(xmmy)))
-#endif
+#include "PHY/sse_intrin.h"
+
short conjugate75[8]__attribute__((aligned(16))) = {-1,1,-1,1,-1,1,-1,1} ;
short conjugate75_2[8]__attribute__((aligned(16))) = {1,-1,1,-1,1,-1,1,-1} ;
short negate[8]__attribute__((aligned(16))) = {-1,-1,-1,-1,-1,-1,-1,-1};
diff --git a/openair1/PHY/TOOLS/cdot_prod.c b/openair1/PHY/TOOLS/cdot_prod.c
index a83c5a44d5..293c8bd06e 100644
--- a/openair1/PHY/TOOLS/cdot_prod.c
+++ b/openair1/PHY/TOOLS/cdot_prod.c
@@ -27,16 +27,7 @@
*******************************************************************************/
#include "defs.h"
-#include <xmmintrin.h>
-#ifdef __SSE3__
-#include <pmmintrin.h>
-#include <tmmintrin.h>
-#else
-static short zero[8]={0,0,0,0,0,0,0,0};
-#define _mm_abs_epi16(xmmx) xmmx=_mm_xor_si128((xmmx),_mm_cmpgt_epi16(*(__m128i *)&zero[0],(xmmx)))
-#define _mm_sign_epi16(xmmx,xmmy) _mm_xor_si128((xmmx),_mm_cmpgt_epi16(*(__m128i *)&zero[0],(xmmy)))
-#define _mm_hadd_epi32(xmmx,xmmy) _mm_unpacklo_epi64(_mm_add_epi32(_mm_shuffle_epi32((xmmx),_MM_SHUFFLE(0,2,0,2)),_mm_shuffle_epi32((xmmx),_MM_SHUFFLE(1,3,1,3))),_mm_add_epi32(_mm_shuffle_epi32((xmmy),_MM_SHUFFLE(0,2,0,2)),_mm_shuffle_epi32((xmmy),_MM_SHUFFLE(1,3,1,3))))
-#endif
+#include "PHY/sse_intrin.h"
// returns the complex dot product of x and y
diff --git a/openair1/PHY/TOOLS/cmult_sv.c b/openair1/PHY/TOOLS/cmult_sv.c
index 261cbb4a38..7d5658e6da 100644
--- a/openair1/PHY/TOOLS/cmult_sv.c
+++ b/openair1/PHY/TOOLS/cmult_sv.c
@@ -26,8 +26,7 @@
Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
*******************************************************************************/
-#include "emmintrin.h"
-#include "smmintrin.h"
+#include "PHY/sse_intrin.h"
#include "defs.h"
#ifndef EXPRESSMIMO_TARGET
diff --git a/openair1/PHY/TOOLS/defs.h b/openair1/PHY/TOOLS/defs.h
index 3e0bf404a0..2755a92755 100644
--- a/openair1/PHY/TOOLS/defs.h
+++ b/openair1/PHY/TOOLS/defs.h
@@ -38,14 +38,7 @@
#include <stdint.h>
-#ifdef __SSE2__
-#include <emmintrin.h>
-#include <xmmintrin.h>
-#endif
-#ifdef __SSE3__
-#include <pmmintrin.h>
-#include <tmmintrin.h>
-#endif
+#include "PHY/sse_intrin.h"
//defined in rtai_math.h
diff --git a/openair1/PHY/TOOLS/fft.c b/openair1/PHY/TOOLS/fft.c
index ff1b9ded22..9657ead210 100755
--- a/openair1/PHY/TOOLS/fft.c
+++ b/openair1/PHY/TOOLS/fft.c
@@ -76,8 +76,7 @@
// ** WARNING log2size>=2 **
//
-#include "emmintrin.h"
-#include "mmintrin.h"
+#include "PHY/sse_intrin.h"
/// Function ReverseBits()
/// computes bit reversed permutation vector
diff --git a/openair1/PHY/TOOLS/lte_dfts.c b/openair1/PHY/TOOLS/lte_dfts.c
index 23a06eb0e3..b2ce76d9a9 100644
--- a/openair1/PHY/TOOLS/lte_dfts.c
+++ b/openair1/PHY/TOOLS/lte_dfts.c
@@ -52,22 +52,12 @@ int rev2048[2048],rev512[512],rev4096[4096],rev8192[8192];
#endif
-#include "emmintrin.h"
-#include "xmmintrin.h"
+#include "PHY/sse_intrin.h"
static int16_t conjugatedft[8] __attribute__((aligned(16))) = {-1,1,-1,1,-1,1,-1,1} ;
-#ifndef __SSE3__
-__m128i zerodft;
-#define _mm_abs_epi16(xmmx) _mm_xor_si128((xmmx),_mm_cmpgt_epi16(zerodft,(xmmx)))
-#define _mm_sign_epi16(xmmx,xmmy) _mm_xor_si128((xmmx),_mm_cmpgt_epi16(zerodft,(xmmy)))
-#else
-#include <pmmintrin.h>
-#include <tmmintrin.h>
-#endif
-
static short reflip[8] __attribute__((aligned(16))) = {1,-1,1,-1,1,-1,1,-1};
static inline void cmac(__m128i a,__m128i b, __m128i *re32, __m128i *im32) __attribute__((always_inline));
diff --git a/openair1/PHY/TOOLS/memory_routines.c b/openair1/PHY/TOOLS/memory_routines.c
index 969a6629c6..fda70d0392 100755
--- a/openair1/PHY/TOOLS/memory_routines.c
+++ b/openair1/PHY/TOOLS/memory_routines.c
@@ -27,7 +27,7 @@
*******************************************************************************/
#ifndef EXPRESSMIMO_TARGET
-#include <mmintrin.h>
+#include "PHY/sse_intrin.h"
void Zero_Buffer(void *buf,unsigned int length)
{
diff --git a/openair1/PHY/TOOLS/phase_comp.c b/openair1/PHY/TOOLS/phase_comp.c
index c4d89729c7..1672536153 100644
--- a/openair1/PHY/TOOLS/phase_comp.c
+++ b/openair1/PHY/TOOLS/phase_comp.c
@@ -49,7 +49,7 @@
#include "defs.h"
#include "extern.h"
-#include "mmintrin.h"
+#include "PHY/sse_intrin.h"
#ifndef USER_MODE
diff --git a/openair1/PHY/TOOLS/signal_energy.c b/openair1/PHY/TOOLS/signal_energy.c
index 79dd0ee1f9..7402c61a83 100755
--- a/openair1/PHY/TOOLS/signal_energy.c
+++ b/openair1/PHY/TOOLS/signal_energy.c
@@ -29,7 +29,7 @@
#include "defs.h"
#ifndef EXPRESSMIMO_TARGET
-#include "mmintrin.h"
+#include "PHY/sse_intrin.h"
#endif //EXPRESSMIMO_TARGET
// Compute Energy of a complex signal vector, removing the DC component!
diff --git a/openair1/PHY/defs.h b/openair1/PHY/defs.h
index 2bf159e9a8..993417e0fc 100755
--- a/openair1/PHY/defs.h
+++ b/openair1/PHY/defs.h
@@ -92,6 +92,9 @@
#define cmax3(a,b,c) ((cmax(a,b)>c) ? (cmax(a,b)) : (c))
+/// suppress compiler warning for unused arguments
+#define UNUSED(x) (void)x;
+
#ifdef EXPRESSMIMO_TARGET
#define Zero_Buffer(x,y) Zero_Buffer_nommx(x,y)
#endif //EXPRESSMiMO_TARGET
diff --git a/openair1/SCHED/phy_procedures_lte_eNb.c b/openair1/SCHED/phy_procedures_lte_eNb.c
index ed9fe90b25..d9ce11c466 100755
--- a/openair1/SCHED/phy_procedures_lte_eNb.c
+++ b/openair1/SCHED/phy_procedures_lte_eNb.c
@@ -425,7 +425,9 @@ void phy_procedures_emos_eNB_TX(unsigned char next_slot, PHY_VARS_eNB *phy_vars_
}
*/
-void phy_procedures_eNB_S_RX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_eNB,uint8_t abstraction_flag,relaying_type_t r_type) {
+void phy_procedures_eNB_S_RX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_eNB,uint8_t abstraction_flag,relaying_type_t r_type)
+{
+ UNUSED(r_type);
// unsigned char sect_id=0;
int subframe = phy_vars_eNB->proc[sched_subframe].subframe_rx;
@@ -1021,9 +1023,9 @@ void phy_eNB_lte_check_measurement_thresholds(instance_t instanceP, ral_threshol
void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_eNB,uint8_t abstraction_flag,
- relaying_type_t r_type,PHY_VARS_RN *phy_vars_rn) {
+ relaying_type_t r_type,PHY_VARS_RN *phy_vars_rn) {
+ UNUSED(phy_vars_rn);
uint8_t *pbch_pdu=&phy_vars_eNB->pbch_pdu[0];
- // unsigned int nb_dci_ue_spec = 0, nb_dci_common = 0;
uint16_t input_buffer_length, re_allocated=0;
uint32_t i,aa;
uint8_t harq_pid;
@@ -1032,13 +1034,9 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
#ifndef OPENAIR2
DCI_PDU DCI_pdu_tmp;
uint8_t DLSCH_pdu_tmp[768*8];
- uint8_t rar;
#endif
int8_t UE_id;
uint8_t num_pdcch_symbols=0;
- int16_t crnti;
- uint16_t frame_tx;
- // int16_t amp;
uint8_t ul_subframe;
uint32_t ul_frame;
#ifdef Rel10
@@ -1057,7 +1055,7 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
start_meas(&phy_vars_eNB->phy_proc_tx);
#ifdef DEBUG_PHY_PROC
- LOG_D(PHY,"[%s %d] Frame %d subframe %d : Doing phy_procedures_eNB_TX(%d)\n",
+ LOG_D(PHY,"[%s %"PRIu8"] Frame %d subframe %d : Doing phy_procedures_eNB_TX(%d)\n",
(r_type == multicast_relay) ? "RN/eNB" : "eNB",
phy_vars_eNB->Mod_id,phy_vars_eNB->proc[sched_subframe].frame_tx, subframe, subframe);
#endif
@@ -1067,10 +1065,8 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
mac_xface->eNB_dlsch_ulsch_scheduler(phy_vars_eNB->Mod_id,0,phy_vars_eNB->proc[sched_subframe].frame_tx,subframe);//,1);
#endif
- // for (sect_id = 0 ; sect_id < number_of_cards; sect_id++) {
-
-
if (abstraction_flag==0) {
+ // clear the transmit data array for the current subframe
for (aa=0; aa<phy_vars_eNB->lte_frame_parms.nb_antennas_tx_eNB;aa++) {
memset(&phy_vars_eNB->lte_eNB_common_vars.txdataF[0][aa][subframe*phy_vars_eNB->lte_frame_parms.ofdm_symbol_size*(phy_vars_eNB->lte_frame_parms.symbols_per_tti)],
@@ -1099,12 +1095,11 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
switch (r_type){
case no_relay:
if ((mch_pduP->Pdu_size > 0) && (mch_pduP->sync_area == 0)) // TEST: only transmit mcch for sync area 0
- //if ((mch_pduP->sync_area == 0)) // TEST: only transmit mcch for sync area 0
- LOG_I(PHY,"[eNB%d] Frame %d subframe %d : Got MCH pdu for MBSFN (MCS %d, TBS %d) \n",
+ LOG_I(PHY,"[eNB%"PRIu8"] Frame %d subframe %d : Got MCH pdu for MBSFN (MCS %"PRIu8", TBS %d) \n",
phy_vars_eNB->Mod_id,phy_vars_eNB->proc[sched_subframe].frame_tx,subframe,mch_pduP->mcs,
phy_vars_eNB->dlsch_eNB_MCH->harq_processes[0]->TBS>>3);
else {
- LOG_D(PHY,"[DeNB %d] Frame %d subframe %d : Do not transmit MCH pdu for MBSFN sync area %d (%s)\n",
+ LOG_D(PHY,"[DeNB %"PRIu8"] Frame %d subframe %d : Do not transmit MCH pdu for MBSFN sync area %"PRIu8" (%s)\n",
phy_vars_eNB->Mod_id,phy_vars_eNB->proc[sched_subframe].frame_tx,subframe,mch_pduP->sync_area,
(mch_pduP->Pdu_size == 0)? "Empty MCH PDU":"Let RN transmit for the moment");
mch_pduP = NULL;
@@ -1112,8 +1107,7 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
break;
case multicast_relay:
if ((mch_pduP->Pdu_size > 0) && ((mch_pduP->mcch_active == 1) || mch_pduP->msi_active==1)){
- //if (((mch_pduP->mcch_active == 1) || mch_pduP->msi_active==1)){
- LOG_I(PHY,"[RN %d] Frame %d subframe %d: Got the MCH PDU for MBSFN sync area %d (MCS %d, TBS %d)\n",
+ LOG_I(PHY,"[RN %"PRIu8"] Frame %d subframe %d: Got the MCH PDU for MBSFN sync area %"PRIu8" (MCS %"PRIu8", TBS %"PRIu16")\n",
phy_vars_rn->Mod_id,phy_vars_rn->frame, subframe,
mch_pduP->sync_area,mch_pduP->mcs,mch_pduP->Pdu_size);
} else if (phy_vars_rn->mch_avtive[subframe%5] == 1){ // SF2 -> SF7, SF3 -> SF8
@@ -1123,7 +1117,7 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
phy_vars_rn->dlsch_rn_MCH[subframe%5]->harq_processes[0]->TBS>>3);
mch_pduP->Pdu_size = (uint16_t) (phy_vars_rn->dlsch_rn_MCH[subframe%5]->harq_processes[0]->TBS>>3);
mch_pduP->mcs = phy_vars_rn->dlsch_rn_MCH[subframe%5]->harq_processes[0]->mcs;
- LOG_I(PHY,"[RN %d] Frame %d subframe %d: Forward the MCH PDU for MBSFN received on SF %d sync area %d (MCS %d, TBS %d)\n",
+ LOG_I(PHY,"[RN %"PRIu8"] Frame %d subframe %d: Forward the MCH PDU for MBSFN received on SF %d sync area %"PRIu8" (MCS %"PRIu8", TBS %"PRIu16")\n",
phy_vars_rn->Mod_id,phy_vars_rn->frame, subframe,subframe%5,
phy_vars_rn->sync_area[subframe%5],mch_pduP->mcs,mch_pduP->Pdu_size);
} else {
@@ -1135,7 +1129,7 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
phy_vars_rn->mch_avtive[subframe]=0;
break;
default:
- LOG_W(PHY,"[eNB %d] Frame %d subframe %d: unknown relaying type %d \n",
+ LOG_W(PHY,"[eNB %"PRIu8"] Frame %d subframe %d: unknown relaying type %d \n",
phy_vars_eNB->Mod_id,phy_vars_eNB->proc[sched_subframe].frame_tx,subframe,r_type);
mch_pduP=NULL;
break;
@@ -1147,7 +1141,7 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
generate_mch(phy_vars_eNB,sched_subframe,(uint8_t*)mch_pduP->payload,abstraction_flag);
#ifdef DEBUG_PHY
for (i=0;i<mch_pduP->Pdu_size;i++)
- msg("%2x.",(uint8_t)mch_pduP->payload[i]);
+ msg("%2"PRIx8".",(uint8_t)mch_pduP->payload[i]);
msg("\n");
#endif
} else {
@@ -1157,7 +1151,7 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
}
else {
-
+ // this is not a pmch subframe
if (abstraction_flag==0){
vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_RS_TX,1);
@@ -1177,12 +1171,12 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
generate_pss(phy_vars_eNB->lte_eNB_common_vars.txdataF[0],
AMP,
&phy_vars_eNB->lte_frame_parms,
- (phy_vars_eNB->lte_frame_parms.Ncp==0) ? 6 : 5,
+ (phy_vars_eNB->lte_frame_parms.Ncp==NORMAL) ? 6 : 5,
0);
generate_sss(phy_vars_eNB->lte_eNB_common_vars.txdataF[0],
AMP,
&phy_vars_eNB->lte_frame_parms,
- (phy_vars_eNB->lte_frame_parms.Ncp==0) ? 5 : 4,
+ (phy_vars_eNB->lte_frame_parms.Ncp==NORMAL) ? 5 : 4,
0);
}
@@ -1191,54 +1185,58 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
}
if (subframe == 0) {
+ // generate PBCH (Physical Broadcast CHannel) info
if ((phy_vars_eNB->proc[sched_subframe].frame_tx&3) == 0) {
- ((uint8_t*) pbch_pdu)[2] = 0;
+ pbch_pdu[2] = 0;
+ // FIXME setting pbch_pdu[2] to zero makes the switch statement easier: remove all the or-operators
switch (phy_vars_eNB->lte_frame_parms.N_RB_DL) {
case 6:
- ((uint8_t*) pbch_pdu)[2] = (((uint8_t*) pbch_pdu)[2]&0x1f) | (0<<5);
+ pbch_pdu[2] = (pbch_pdu[2]&0x1f) | (0<<5);
break;
case 15:
- ((uint8_t*) pbch_pdu)[2] = (((uint8_t*) pbch_pdu)[2]&0x1f) | (1<<5);
+ pbch_pdu[2] = (pbch_pdu[2]&0x1f) | (1<<5);
break;
case 25:
- ((uint8_t*) pbch_pdu)[2] = (((uint8_t*) pbch_pdu)[2]&0x1f) | (2<<5);
+ pbch_pdu[2] = (pbch_pdu[2]&0x1f) | (2<<5);
break;
case 50:
- ((uint8_t*) pbch_pdu)[2] = (((uint8_t*) pbch_pdu)[2]&0x1f) | (3<<5);
+ pbch_pdu[2] = (pbch_pdu[2]&0x1f) | (3<<5);
break;
case 75:
- ((uint8_t*) pbch_pdu)[2] = (((uint8_t*) pbch_pdu)[2]&0x1f) | (4<<5);
+ pbch_pdu[2] = (pbch_pdu[2]&0x1f) | (4<<5);
break;
case 100:
- ((uint8_t*) pbch_pdu)[2] = (((uint8_t*) pbch_pdu)[2]&0x1f) | (5<<5);
+ pbch_pdu[2] = (pbch_pdu[2]&0x1f) | (5<<5);
break;
default:
- ((uint8_t*) pbch_pdu)[2] = (((uint8_t*) pbch_pdu)[2]&0x1f) | (2<<5);
+ // FIXME if we get here, this should be flagged as an error, right?
+ pbch_pdu[2] = (pbch_pdu[2]&0x1f) | (2<<5);
break;
}
- ((uint8_t*) pbch_pdu)[2] = (((uint8_t*) pbch_pdu)[2]&0xef) |
+ pbch_pdu[2] = (pbch_pdu[2]&0xef) |
((phy_vars_eNB->lte_frame_parms.phich_config_common.phich_duration << 4)&0x10);
switch (phy_vars_eNB->lte_frame_parms.phich_config_common.phich_resource) {
case oneSixth:
- ((uint8_t*) pbch_pdu)[2] = (((uint8_t*) pbch_pdu)[2]&0xf3) | (0<<2);
+ pbch_pdu[2] = (pbch_pdu[2]&0xf3) | (0<<2);
break;
case half:
- ((uint8_t*) pbch_pdu)[2] = (((uint8_t*) pbch_pdu)[2]&0xf3) | (1<<2);
+ pbch_pdu[2] = (pbch_pdu[2]&0xf3) | (1<<2);
break;
case one:
- ((uint8_t*) pbch_pdu)[2] = (((uint8_t*) pbch_pdu)[2]&0xf3) | (2<<2);
+ pbch_pdu[2] = (pbch_pdu[2]&0xf3) | (2<<2);
break;
case two:
- ((uint8_t*) pbch_pdu)[2] = (((uint8_t*) pbch_pdu)[2]&0xf3) | (3<<2);
+ pbch_pdu[2] = (pbch_pdu[2]&0xf3) | (3<<2);
break;
default:
+ // unreachable
break;
}
- ((uint8_t*) pbch_pdu)[2] = (((uint8_t*) pbch_pdu)[2]&0xfc) | ((phy_vars_eNB->proc[sched_subframe].frame_tx>>8)&0x3);
- ((uint8_t*) pbch_pdu)[1] = phy_vars_eNB->proc[sched_subframe].frame_tx&0xfc;
- ((uint8_t*) pbch_pdu)[0] = 0;
+ pbch_pdu[2] = (pbch_pdu[2]&0xfc) | ((phy_vars_eNB->proc[sched_subframe].frame_tx>>8)&0x3);
+ pbch_pdu[1] = phy_vars_eNB->proc[sched_subframe].frame_tx&0xfc;
+ pbch_pdu[0] = 0;
}
/// First half of SSS (TDD)
if (abstraction_flag==0) {
@@ -1247,25 +1245,26 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
generate_sss(phy_vars_eNB->lte_eNB_common_vars.txdataF[0],
AMP,
&phy_vars_eNB->lte_frame_parms,
- (phy_vars_eNB->lte_frame_parms.Ncp==0) ? 6 : 5,
+ (phy_vars_eNB->lte_frame_parms.Ncp==NORMAL) ? 6 : 5,
1);
}
}
-
- frame_tx = (((int) (pbch_pdu[2]&0x3))<<8) + ((int) (pbch_pdu[1]&0xfc)) + phy_vars_eNB->proc[sched_subframe].frame_tx%4;
-
+
+
#ifdef DEBUG_PHY_PROC
- LOG_D(PHY,"[eNB %d] Frame %d, subframe %d: Generating PBCH, mode1_flag=%d, frame_tx=%d, pdu=%02x%02x%02x\n",
+ uint16_t frame_tx = (((int) (pbch_pdu[2]&0x3))<<8) + ((int) (pbch_pdu[1]&0xfc)) + phy_vars_eNB->proc[sched_subframe].frame_tx%4;
+
+ LOG_D(PHY,"[eNB %"PRIu8"] Frame %d, subframe %d: Generating PBCH, mode1_flag=%"PRIu8", frame_tx=%"PRIu16", pdu=%02"PRIx8"%02"PRIx8"%02"PRIx8"\n",
phy_vars_eNB->Mod_id,
phy_vars_eNB->proc[sched_subframe].frame_tx,
subframe,
phy_vars_eNB->lte_frame_parms.mode1_flag,
frame_tx,
- ((uint8_t*) pbch_pdu)[2],
- ((uint8_t*) pbch_pdu)[1],
- ((uint8_t*) pbch_pdu)[0]);
+ pbch_pdu[2],
+ pbch_pdu[1],
+ pbch_pdu[0]);
#endif
if (abstraction_flag==0) {
@@ -1311,12 +1310,12 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
generate_pss(phy_vars_eNB->lte_eNB_common_vars.txdataF[0],
AMP,
&phy_vars_eNB->lte_frame_parms,
- (phy_vars_eNB->lte_frame_parms.Ncp==0) ? 6 : 5,
+ (phy_vars_eNB->lte_frame_parms.Ncp==NORMAL) ? 6 : 5,
10);
generate_sss(phy_vars_eNB->lte_eNB_common_vars.txdataF[0],
AMP,
&phy_vars_eNB->lte_frame_parms,
- (phy_vars_eNB->lte_frame_parms.Ncp==0) ? 5 : 4,
+ (phy_vars_eNB->lte_frame_parms.Ncp==NORMAL) ? 5 : 4,
10);
}
@@ -1330,7 +1329,7 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
generate_sss(phy_vars_eNB->lte_eNB_common_vars.txdataF[0],
AMP,
&phy_vars_eNB->lte_frame_parms,
- (phy_vars_eNB->lte_frame_parms.Ncp==0) ? 6 : 5,
+ (phy_vars_eNB->lte_frame_parms.Ncp==NORMAL) ? 6 : 5,
11);
}
}
@@ -1425,7 +1424,7 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
DCI_pdu->nCCE = get_nCCE(num_pdcch_symbols,
&phy_vars_eNB->lte_frame_parms,
get_mi(&phy_vars_eNB->lte_frame_parms,subframe));
- LOG_D(PHY,"num_pdcch_symbols %d, nCCE %d (dci commond %d, dci uespec %d\n",num_pdcch_symbols,DCI_pdu->nCCE,
+ LOG_D(PHY,"num_pdcch_symbols %"PRIu8", nCCE %u (dci commond %"PRIu8", dci uespec %"PRIu8"\n",num_pdcch_symbols,DCI_pdu->nCCE,
DCI_pdu->Num_common_dci,DCI_pdu->Num_ue_spec_dci);
#if defined(SMBV) && !defined(EXMIMO)
@@ -1440,14 +1439,14 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
for (i=0;i<DCI_pdu->Num_common_dci + DCI_pdu->Num_ue_spec_dci ; i++) {
#ifdef DEBUG_PHY_PROC
if (DCI_pdu->dci_alloc[i].rnti != SI_RNTI) {
- LOG_D(PHY,"[eNB] Subframe %d : Doing DCI index %d/%d\n",subframe,i,DCI_pdu->Num_common_dci + DCI_pdu->Num_ue_spec_dci);
+ LOG_D(PHY,"[eNB] Subframe %d : Doing DCI index %"PRIu32"/%d\n",subframe,i,DCI_pdu->Num_common_dci + DCI_pdu->Num_ue_spec_dci);
dump_dci(&phy_vars_eNB->lte_frame_parms,&DCI_pdu->dci_alloc[i]);
}
#endif
if (DCI_pdu->dci_alloc[i].rnti == SI_RNTI) {
#ifdef DEBUG_PHY_PROC
- LOG_D(PHY,"[eNB %d] SI generate_eNB_dlsch_params_from_dci\n", phy_vars_eNB->Mod_id);
+ LOG_D(PHY,"[eNB %"PRIu8"] SI generate_eNB_dlsch_params_from_dci\n", phy_vars_eNB->Mod_id);
#endif
generate_eNB_dlsch_params_from_dci(subframe,
&DCI_pdu->dci_alloc[i].dci_pdu[0],
@@ -1461,21 +1460,21 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
P_RNTI,
phy_vars_eNB->eNB_UE_stats[0].DL_pmi_single);
- if ((phy_vars_eNB->dlsch_eNB_SI->nCCE[subframe] = get_nCCE_offset(1<<DCI_pdu->dci_alloc[i].L,
- DCI_pdu->nCCE,
- 1,
- SI_RNTI,
- subframe)) == -1) {
- LOG_E(PHY,"[eNB %d] Frame %d subframe %d : No available CCE resources for common DCI (SI)!!!\n",phy_vars_eNB->Mod_id,phy_vars_eNB->proc[sched_subframe].frame_tx,subframe);
+
+ int result = get_nCCE_offset(1<<DCI_pdu->dci_alloc[i].L, DCI_pdu->nCCE, 1, SI_RNTI, subframe);
+ phy_vars_eNB->dlsch_eNB_SI->nCCE[subframe] = result;
+ if (result == -1) {
+ // FIXME what happens to phy_vars_eNB->dlsch_eNB_SI->nCCE[subframe]?
+ LOG_E(PHY,"[eNB %"PRIu8"] Frame %d subframe %d : No available CCE resources for common DCI (SI)!!!\n",phy_vars_eNB->Mod_id,phy_vars_eNB->proc[sched_subframe].frame_tx,subframe);
}
else {
- LOG_T(PHY,"[eNB %d] Frame %d subframe %d : CCE resource for common DCI (SI) => %d/%d\n",phy_vars_eNB->Mod_id,phy_vars_eNB->proc[sched_subframe].frame_tx,subframe,
+ LOG_T(PHY,"[eNB %"PRIu8"] Frame %d subframe %d : CCE resource for common DCI (SI) => %"PRIu8"/%u\n",phy_vars_eNB->Mod_id,phy_vars_eNB->proc[sched_subframe].frame_tx,subframe,
phy_vars_eNB->dlsch_eNB_SI->nCCE[subframe],DCI_pdu->nCCE);
#if defined(SMBV) && !defined(EXMIMO)
// configure SI DCI
if (smbv_is_config_frame(phy_vars_eNB->proc[sched_subframe].frame_tx) && (smbv_frame_cnt < 4)) {
- msg("[SMBV] Frame %3d, SI in SF %d DCI %d\n",phy_vars_eNB->proc[sched_subframe].frame_tx,subframe,i);
+ msg("[SMBV] Frame %3d, SI in SF %d DCI %"PRIu32"\n",phy_vars_eNB->proc[sched_subframe].frame_tx,subframe,i);
smbv_configure_common_dci(smbv_fname,(smbv_frame_cnt*10) + (subframe), "SI", &DCI_pdu->dci_alloc[i], i);
}
#endif
@@ -1485,7 +1484,7 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
}
else if (DCI_pdu->dci_alloc[i].ra_flag == 1) {
#ifdef DEBUG_PHY_PROC
- LOG_D(PHY,"[eNB %d] RA generate_eNB_dlsch_params_from_dci\n", phy_vars_eNB->Mod_id);
+ LOG_D(PHY,"[eNB %"PRIu8"] RA generate_eNB_dlsch_params_from_dci\n", phy_vars_eNB->Mod_id);
#endif
generate_eNB_dlsch_params_from_dci(subframe,
&DCI_pdu->dci_alloc[i].dci_pdu[0],
@@ -1501,20 +1500,19 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
// mac_xface->macphy_exit("Transmitted RAR, exiting\n");
- if ((phy_vars_eNB->dlsch_eNB_ra->nCCE[subframe] = get_nCCE_offset(1<<DCI_pdu->dci_alloc[i].L,
- DCI_pdu->nCCE,
- 1,
- DCI_pdu->dci_alloc[i].rnti,
- subframe)) == -1) {
- LOG_E(PHY,"[eNB %d] Frame %d subframe %d : No available CCE resources for common DCI (RA) !!!\n",phy_vars_eNB->Mod_id,phy_vars_eNB->proc[sched_subframe].frame_tx,subframe);
+ int result = get_nCCE_offset(1<<DCI_pdu->dci_alloc[i].L, DCI_pdu->nCCE, 1, DCI_pdu->dci_alloc[i].rnti, subframe);
+ phy_vars_eNB->dlsch_eNB_ra->nCCE[subframe] = result;
+ if (result == -1) {
+ // FIXME what happens to phy_vars_eNB->dlsch_eNB_ra->nCCE[subframe]?
+ LOG_E(PHY,"[eNB %"PRIu8"] Frame %d subframe %d : No available CCE resources for common DCI (RA) !!!\n",phy_vars_eNB->Mod_id,phy_vars_eNB->proc[sched_subframe].frame_tx,subframe);
}
else {
- LOG_D(PHY,"[eNB %d] Frame %d subframe %d : CCE resource for common DCI (RA) => %d/%d\n",phy_vars_eNB->Mod_id,phy_vars_eNB->proc[sched_subframe].frame_tx,subframe,
+ LOG_D(PHY,"[eNB %"PRIu8"] Frame %d subframe %d : CCE resource for common DCI (RA) => %"PRIu8"/%u\n",phy_vars_eNB->Mod_id,phy_vars_eNB->proc[sched_subframe].frame_tx,subframe,
phy_vars_eNB->dlsch_eNB_ra->nCCE[subframe],DCI_pdu->nCCE);
#if defined(SMBV) && !defined(EXMIMO)
// configure RA DCI
if (smbv_is_config_frame(phy_vars_eNB->proc[sched_subframe].frame_tx) && (smbv_frame_cnt < 4)) {
- msg("[SMBV] Frame %3d, RA in SF %d DCI %d\n",phy_vars_eNB->proc[sched_subframe].frame_tx,subframe,i);
+ msg("[SMBV] Frame %3d, RA in SF %d DCI %"PRIu32"\n",phy_vars_eNB->proc[sched_subframe].frame_tx,subframe,i);
smbv_configure_common_dci(smbv_fname,(smbv_frame_cnt*10) + (subframe), "RA", &DCI_pdu->dci_alloc[i], i);
}
#endif
@@ -1528,7 +1526,7 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
#ifdef OPENAIR2
#ifdef DEBUG_PHY_PROC
- LOG_D(PHY,"[eNB] Searching for RNTI %x\n",DCI_pdu->dci_alloc[i].rnti);
+ LOG_D(PHY,"[eNB] Searching for RNTI %"PRIx16"\n",DCI_pdu->dci_alloc[i].rnti);
#endif
UE_id = find_ue((int16_t)DCI_pdu->dci_alloc[i].rnti,phy_vars_eNB);
#else
@@ -1539,7 +1537,7 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
#if defined(SMBV) && !defined(EXMIMO)
// Configure this user
if (smbv_is_config_frame(phy_vars_eNB->proc[sched_subframe].frame_tx) && (smbv_frame_cnt < 4)) {
- msg("[SMBV] Frame %3d, SF %d (SMBV SF %d) Configuring user %d with RNTI %d in TM%d\n",phy_vars_eNB->proc[sched_subframe].frame_tx,subframe,(smbv_frame_cnt*10) + (subframe),UE_id+1,DCI_pdu->dci_alloc[i].rnti,phy_vars_eNB->transmission_mode[(uint8_t)UE_id]);
+ msg("[SMBV] Frame %3d, SF %d (SMBV SF %d) Configuring user %d with RNTI %"PRIu16" in TM%"PRIu8"\n",phy_vars_eNB->proc[sched_subframe].frame_tx,subframe,(smbv_frame_cnt*10) + (subframe),UE_id+1,DCI_pdu->dci_alloc[i].rnti,phy_vars_eNB->transmission_mode[(uint8_t)UE_id]);
smbv_configure_user(smbv_fname,UE_id+1,phy_vars_eNB->transmission_mode[(uint8_t)UE_id],DCI_pdu->dci_alloc[i].rnti);
}
#endif
@@ -1554,25 +1552,25 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
0,
P_RNTI,
phy_vars_eNB->eNB_UE_stats[(uint8_t)UE_id].DL_pmi_single);
- LOG_D(PHY,"[eNB %d][PDSCH %x/%d] Frame %d subframe %d: Generated dlsch params\n",
- phy_vars_eNB->Mod_id,DCI_pdu->dci_alloc[i].rnti,phy_vars_eNB->dlsch_eNB[(uint8_t)UE_id][0]->current_harq_pid,phy_vars_eNB->proc[sched_subframe].frame_tx,subframe);
- if ((phy_vars_eNB->dlsch_eNB[(uint8_t)UE_id][0]->nCCE[subframe] = get_nCCE_offset(1<<DCI_pdu->dci_alloc[i].L,
- DCI_pdu->nCCE,
- 0,
- DCI_pdu->dci_alloc[i].rnti,
- subframe)) == -1) {
- LOG_E(PHY,"[eNB %d] Frame %d subframe %d : No available CCE resources for UE spec DCI (PDSCH %x) !!!\n",
+ LOG_D(PHY,"[eNB %"PRIu8"][PDSCH %"PRIx16"/%"PRIu8"] Frame %d subframe %d: Generated dlsch params\n",
+ phy_vars_eNB->Mod_id,DCI_pdu->dci_alloc[i].rnti,phy_vars_eNB->dlsch_eNB[(uint8_t)UE_id][0]->current_harq_pid,phy_vars_eNB->proc[sched_subframe].frame_tx,subframe);
+
+ int result = get_nCCE_offset(1<<DCI_pdu->dci_alloc[i].L, DCI_pdu->nCCE, 0, DCI_pdu->dci_alloc[i].rnti, subframe);
+ phy_vars_eNB->dlsch_eNB[(uint8_t)UE_id][0]->nCCE[subframe] = result;
+ if (result == -1) {
+ // FIXME what happens to phy_vars_eNB->dlsch_eNB[(uint8_t)UE_id][0]->nCCE[subframe]?
+ LOG_E(PHY,"[eNB %"PRIu8"] Frame %d subframe %d : No available CCE resources for UE spec DCI (PDSCH %"PRIx16") !!!\n",
phy_vars_eNB->Mod_id,phy_vars_eNB->proc[sched_subframe].frame_tx,subframe,DCI_pdu->dci_alloc[i].rnti);
}
else {
- LOG_D(PHY,"[eNB %d] Frame %d subframe %d : CCE resource for ue DCI (PDSCH %x) => %d/%d\n",phy_vars_eNB->Mod_id,phy_vars_eNB->proc[sched_subframe].frame_tx,subframe,
+ LOG_D(PHY,"[eNB %"PRIu8"] Frame %d subframe %d : CCE resource for ue DCI (PDSCH %"PRIx16") => %"PRIu8"/%u\n",phy_vars_eNB->Mod_id,phy_vars_eNB->proc[sched_subframe].frame_tx,subframe,
DCI_pdu->dci_alloc[i].rnti,phy_vars_eNB->dlsch_eNB[(uint8_t)UE_id][0]->nCCE[subframe],DCI_pdu->nCCE);
#if defined(SMBV) && !defined(EXMIMO)
DCI_pdu->dci_alloc[i].nCCE = phy_vars_eNB->dlsch_eNB[(uint8_t)UE_id][0]->nCCE[subframe];
// configure UE-spec DCI
if (smbv_is_config_frame(phy_vars_eNB->proc[sched_subframe].frame_tx) && (smbv_frame_cnt < 4)) {
- msg("[SMBV] Frame %3d, PDSCH in SF %d DCI %d\n",phy_vars_eNB->proc[sched_subframe].frame_tx,subframe,i);
+ msg("[SMBV] Frame %3d, PDSCH in SF %d DCI %"PRIu32"\n",phy_vars_eNB->proc[sched_subframe].frame_tx,subframe,i);
smbv_configure_ue_spec_dci(smbv_fname,(smbv_frame_cnt*10) + (subframe), UE_id+1, &DCI_pdu->dci_alloc[i], i);
}
#endif
@@ -1580,7 +1578,7 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
DCI_pdu->dci_alloc[i].nCCE = phy_vars_eNB->dlsch_eNB[(uint8_t)UE_id][0]->nCCE[subframe];
#ifdef DEBUG_PHY_PROC
//if (phy_vars_eNB->proc[sched_subframe].frame_tx%100 == 0)
- LOG_D(PHY,"[eNB %d][DCI][PDSCH %x] Frame %d subframe %d UE_id %d Generated DCI format %d, aggregation %d\n",
+ LOG_D(PHY,"[eNB %"PRIu8"][DCI][PDSCH %"PRIx16"] Frame %d subframe %d UE_id %"PRId8" Generated DCI format %d, aggregation %d\n",
phy_vars_eNB->Mod_id, DCI_pdu->dci_alloc[i].rnti,
phy_vars_eNB->proc[sched_subframe].frame_tx, subframe,UE_id,
DCI_pdu->dci_alloc[i].format,
@@ -1588,8 +1586,8 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
#endif
}
else {
- LOG_D(PHY,"[eNB %d][PDSCH] Frame %d : No UE_id with corresponding rnti %x, dropping DLSCH\n",
- phy_vars_eNB->Mod_id,phy_vars_eNB->proc[sched_subframe].frame_tx,(int16_t)DCI_pdu->dci_alloc[i].rnti);
+ LOG_D(PHY,"[eNB %"PRIu8"][PDSCH] Frame %d : No UE_id with corresponding rnti %"PRIx16", dropping DLSCH\n",
+ phy_vars_eNB->Mod_id,phy_vars_eNB->proc[sched_subframe].frame_tx,DCI_pdu->dci_alloc[i].rnti);
}
}
@@ -1605,7 +1603,7 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
pdcch_alloc2ul_frame(&phy_vars_eNB->lte_frame_parms,phy_vars_eNB->proc[sched_subframe].frame_tx,subframe),
pdcch_alloc2ul_subframe(&phy_vars_eNB->lte_frame_parms,subframe));
if (harq_pid==255) {
- LOG_E(PHY,"[eNB %d] Frame %d: Bad harq_pid for ULSCH allocation\n",phy_vars_eNB->Mod_id,phy_vars_eNB->proc[sched_subframe].frame_tx);
+ LOG_E(PHY,"[eNB %"PRIu8"] Frame %d: Bad harq_pid for ULSCH allocation\n",phy_vars_eNB->Mod_id,phy_vars_eNB->proc[sched_subframe].frame_tx);
mac_exit_wrapper("Invalid harq_pid (255) detected");
}
#ifdef OPENAIR2
@@ -1614,12 +1612,12 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
UE_id = i;
#endif
if (UE_id<0) {
- LOG_E(PHY,"[eNB %d] Frame %d: Unknown UE_id for rnti %x\n",phy_vars_eNB->Mod_id,phy_vars_eNB->proc[sched_subframe].frame_tx,(int16_t)DCI_pdu->dci_alloc[i].rnti);
+ LOG_E(PHY,"[eNB %"PRIu8"] Frame %d: Unknown UE_id for rnti %"PRIx16"\n",phy_vars_eNB->Mod_id,phy_vars_eNB->proc[sched_subframe].frame_tx,DCI_pdu->dci_alloc[i].rnti);
mac_exit_wrapper("Invalid UE id (< 0) detected");
}
#ifdef DEBUG_PHY_PROC
//if (phy_vars_eNB->proc[sched_subframe].frame_tx%100 == 0)
- LOG_D(PHY,"[eNB %d][PUSCH %d] Frame %d subframe %d UL Frame %d, UL Subframe %d, Generated ULSCH (format0) DCI (rnti %x, dci %x) (DCI pos %d/%d), aggregation %d\n",
+ LOG_D(PHY,"[eNB %"PRIu8"][PUSCH %"PRIu8"] Frame %d subframe %d UL Frame %"PRIu32", UL Subframe %"PRIu8", Generated ULSCH (format0) DCI (rnti %"PRIx16", dci %"PRIx8") (DCI pos %"PRIu32"/%d), aggregation %d\n",
phy_vars_eNB->Mod_id,
subframe2harq_pid(&phy_vars_eNB->lte_frame_parms,
pdcch_alloc2ul_frame(&phy_vars_eNB->lte_frame_parms,phy_vars_eNB->proc[sched_subframe].frame_tx,subframe),
@@ -1629,8 +1627,9 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
pdcch_alloc2ul_frame(&phy_vars_eNB->lte_frame_parms,phy_vars_eNB->proc[sched_subframe].frame_tx,subframe),
pdcch_alloc2ul_subframe(&phy_vars_eNB->lte_frame_parms,subframe),
DCI_pdu->dci_alloc[i].rnti,
- *(unsigned int *)&DCI_pdu->dci_alloc[i].dci_pdu[0],
- i,DCI_pdu->Num_common_dci + DCI_pdu->Num_ue_spec_dci,
+ DCI_pdu->dci_alloc[i].dci_pdu[0],
+ i,
+ DCI_pdu->Num_common_dci + DCI_pdu->Num_ue_spec_dci,
1<<DCI_pdu->dci_alloc[i].L);
#endif
@@ -1653,18 +1652,18 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
0,
DCI_pdu->dci_alloc[i].rnti,
subframe)) == -1) {
- LOG_E(PHY,"[eNB %d] Frame %d subframe %d : No available CCE resources (%d) for UE spec DCI (PUSCH %x) !!!\n",
+ LOG_E(PHY,"[eNB %"PRIu8"] Frame %d subframe %d : No available CCE resources (%u) for UE spec DCI (PUSCH %"PRIx16") !!!\n",
phy_vars_eNB->Mod_id,phy_vars_eNB->proc[sched_subframe].frame_tx,subframe,DCI_pdu->nCCE,DCI_pdu->dci_alloc[i].rnti);
}
else {
- LOG_T(PHY,"[eNB %d] Frame %d subframe %d : CCE resources for UE spec DCI (PUSCH %x) => %d/%d\n",
+ LOG_T(PHY,"[eNB %"PRIu8"] Frame %d subframe %d : CCE resources for UE spec DCI (PUSCH %"PRIx16") => %d/%u\n",
phy_vars_eNB->Mod_id,phy_vars_eNB->proc[sched_subframe].frame_tx,subframe,DCI_pdu->dci_alloc[i].rnti,
DCI_pdu->dci_alloc[i].nCCE,DCI_pdu->nCCE);
#if defined(SMBV) && !defined(EXMIMO)
// configure UE-spec DCI for UL Grant
if (smbv_is_config_frame(phy_vars_eNB->proc[sched_subframe].frame_tx) && (smbv_frame_cnt < 4)) {
- msg("[SMBV] Frame %3d, SF %d UL DCI %d\n",phy_vars_eNB->proc[sched_subframe].frame_tx,subframe,i);
+ msg("[SMBV] Frame %3d, SF %d UL DCI %"PRIu32"\n",phy_vars_eNB->proc[sched_subframe].frame_tx,subframe,i);
smbv_configure_ue_spec_dci(smbv_fname,(smbv_frame_cnt*10) + (subframe), UE_id+1, &DCI_pdu->dci_alloc[i], i);
}
#endif
@@ -1672,7 +1671,7 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
}
#ifdef DEBUG_PHY_PROC
- LOG_D(PHY,"[eNB %d][PUSCH %d] frame %d subframe %d Setting subframe_scheduling_flag for UE %d harq_pid %d (ul subframe %d)\n",
+ LOG_D(PHY,"[eNB %"PRIu8"][PUSCH %"PRIu8"] frame %d subframe %d Setting subframe_scheduling_flag for UE %"PRIu32" harq_pid %"PRIu8" (ul subframe %"PRIu8")\n",
phy_vars_eNB->Mod_id,harq_pid,
phy_vars_eNB->proc[sched_subframe].frame_tx,subframe,i,harq_pid,
pdcch_alloc2ul_subframe(&phy_vars_eNB->lte_frame_parms,subframe));
@@ -1703,7 +1702,7 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
if (abstraction_flag == 0) {
#ifdef DEBUG_PHY_PROC
if (DCI_pdu->Num_ue_spec_dci+DCI_pdu->Num_common_dci > 0)
- LOG_D(PHY,"[eNB %d] Frame %d, subframe %d: Calling generate_dci_top (pdcch) (common %d,ue_spec %d)\n",phy_vars_eNB->Mod_id,phy_vars_eNB->proc[sched_subframe].frame_tx, subframe,DCI_pdu->Num_common_dci,DCI_pdu->Num_ue_spec_dci);
+ LOG_D(PHY,"[eNB %"PRIu8"] Frame %d, subframe %d: Calling generate_dci_top (pdcch) (common %"PRIu8",ue_spec %"PRIu8")\n",phy_vars_eNB->Mod_id,phy_vars_eNB->proc[sched_subframe].frame_tx, subframe,DCI_pdu->Num_common_dci,DCI_pdu->Num_ue_spec_dci);
#endif
// for (sect_id=0;sect_id<number_of_cards;sect_id++)
@@ -1722,9 +1721,9 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
#endif
}
-#ifdef PHY_ABSTRACTION
+#ifdef PHY_ABSTRACTION // FIXME this ifdef seems suspicious
else {
- LOG_D(PHY,"[eNB %d] Frame %d, subframe %d: Calling generate_dci_top_emul\n",phy_vars_eNB->Mod_id,phy_vars_eNB->proc[sched_subframe].frame_tx, subframe);
+ LOG_D(PHY,"[eNB %"PRIu8"] Frame %d, subframe %d: Calling generate_dci_top_emul\n",phy_vars_eNB->Mod_id,phy_vars_eNB->proc[sched_subframe].frame_tx, subframe);
num_pdcch_symbols = generate_dci_top_emul(phy_vars_eNB,DCI_pdu->Num_ue_spec_dci,DCI_pdu->Num_common_dci,DCI_pdu->dci_alloc,subframe);
}
#endif
@@ -1756,17 +1755,17 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
#if defined(SMBV) && !defined(EXMIMO)
// Configures the data source of allocation (allocation is configured by DCI)
if (smbv_is_config_frame(phy_vars_eNB->proc[sched_subframe].frame_tx) && (smbv_frame_cnt < 4)) {
- msg("[SMBV] Frame %3d, Configuring SI payload in SF %d alloc %d\n",phy_vars_eNB->proc[sched_subframe].frame_tx,(smbv_frame_cnt*10) + (subframe),smbv_alloc_cnt);
+ msg("[SMBV] Frame %3d, Configuring SI payload in SF %d alloc %"PRIu8"\n",phy_vars_eNB->proc[sched_subframe].frame_tx,(smbv_frame_cnt*10) + (subframe),smbv_alloc_cnt);
smbv_configure_datalist_for_alloc(smbv_fname, smbv_alloc_cnt++, (smbv_frame_cnt*10) + (subframe), DLSCH_pdu, input_buffer_length);
}
#endif
#ifdef DEBUG_PHY_PROC
#ifdef DEBUG_DLSCH
- LOG_D(PHY,"[eNB %d][SI] Frame %d, slot %d: Calling generate_dlsch (SI) with input size = %d, num_pdcch_symbols %d\n",
- phy_vars_eNB->Mod_id,phy_vars_eNB->proc[sched_subframe].frame_tx, next_slot, input_buffer_length,num_pdcch_symbols);
+ LOG_D(PHY,"[eNB %"PRIu8"][SI] Frame %d, slot %d: Calling generate_dlsch (SI) with input size = %"PRIu16", num_pdcch_symbols %"PRIu8"\n",
+ phy_vars_eNB->Mod_id,phy_vars_eNB->proc[sched_subframe].frame_tx, next_slot, input_buffer_length,num_pdcch_symbols); // FIXME this code is broken (next_slot?)
for (i=0;i<input_buffer_length;i++)
- LOG_T(PHY,"%x.",i,DLSCH_pdu[i]);
+ LOG_T(PHY,"%x.",i,DLSCH_pdu[i]);// FIXME this code is broken (number of arguments)
LOG_T(PHY,"\n");
#endif
#endif
@@ -1825,14 +1824,14 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
// Check for RA activity
if (phy_vars_eNB->dlsch_eNB_ra->active == 1) {
#ifdef DEBUG_PHY_PROC
- LOG_D(PHY,"[eNB %d][RAPROC] Frame %d, subframe %d, RA active, filling RAR:\n",
+ LOG_D(PHY,"[eNB %"PRIu8"][RAPROC] Frame %d, subframe %d, RA active, filling RAR:\n",
phy_vars_eNB->Mod_id,phy_vars_eNB->proc[sched_subframe].frame_tx, subframe);
#endif
input_buffer_length = phy_vars_eNB->dlsch_eNB_ra->harq_processes[0]->TBS/8;
#ifdef OPENAIR2
- crnti = mac_xface->fill_rar(phy_vars_eNB->Mod_id,
+ int16_t crnti = mac_xface->fill_rar(phy_vars_eNB->Mod_id,
phy_vars_eNB->CC_id,
phy_vars_eNB->proc[sched_subframe].frame_tx,
dlsch_input_buffer,
@@ -1870,7 +1869,7 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
phy_vars_eNB->proc[sched_subframe].frame_tx,
&phy_vars_eNB->ulsch_eNB[(uint32_t)UE_id]->Msg3_frame,
&phy_vars_eNB->ulsch_eNB[(uint32_t)UE_id]->Msg3_subframe);
- LOG_I(PHY,"[eNB][RAPROC] Frame %d subframe %d, Activated Msg3 demodulation for UE %d in frame %d, subframe %d\n",
+ LOG_I(PHY,"[eNB][RAPROC] Frame %d subframe %d, Activated Msg3 demodulation for UE %"PRId8" in frame %"PRIu32", subframe %"PRIu8"\n",
phy_vars_eNB->proc[sched_subframe].frame_tx,
subframe,
UE_id,
@@ -1889,13 +1888,13 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
#if defined(SMBV) && !defined(EXMIMO)
// Configures the data source of allocation (allocation is configured by DCI)
if (smbv_is_config_frame(phy_vars_eNB->proc[sched_subframe].frame_tx) && (smbv_frame_cnt < 4)) {
- msg("[SMBV] Frame %3d, Configuring RA payload in SF %d alloc %d\n",phy_vars_eNB->proc[sched_subframe].frame_tx,(smbv_frame_cnt*10) + (subframe),smbv_alloc_cnt);
+ msg("[SMBV] Frame %3d, Configuring RA payload in SF %d alloc %"PRIu8"\n",phy_vars_eNB->proc[sched_subframe].frame_tx,(smbv_frame_cnt*10) + (subframe),smbv_alloc_cnt);
smbv_configure_datalist_for_alloc(smbv_fname, smbv_alloc_cnt++, (smbv_frame_cnt*10) + (subframe), dlsch_input_buffer, input_buffer_length);
}
#endif
#ifdef DEBUG_PHY_PROC
- LOG_D(PHY,"[eNB %d][RAPROC] Frame %d, subframe %d: Calling generate_dlsch (RA) with input size = %d,Msg3 frame %d, Msg3 subframe %d\n",
+ LOG_D(PHY,"[eNB %"PRIu8"][RAPROC] Frame %d, subframe %d: Calling generate_dlsch (RA) with input size = %"PRIu16",Msg3 frame %"PRIu32", Msg3 subframe %"PRIu8"\n",
phy_vars_eNB->Mod_id,
phy_vars_eNB->proc[sched_subframe].frame_tx, subframe,input_buffer_length,
phy_vars_eNB->ulsch_eNB[(uint32_t)UE_id]->Msg3_frame,
@@ -1941,11 +1940,11 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
phy_vars_eNB->dlsch_eNB_ra);
}
#endif
- LOG_D(PHY,"[eNB %d][RAPROC] Frame %d subframe %d Deactivating DLSCH RA\n",phy_vars_eNB->Mod_id,
+ LOG_D(PHY,"[eNB %"PRIu8"][RAPROC] Frame %d subframe %d Deactivating DLSCH RA\n",phy_vars_eNB->Mod_id,
phy_vars_eNB->proc[sched_subframe].frame_tx,subframe);
#ifdef DEBUG_PHY_PROC
- LOG_D(PHY,"[eNB %d] Frame %d, subframe %d, DLSCH (RA) re_allocated = %d\n",phy_vars_eNB->Mod_id,
+ LOG_D(PHY,"[eNB %"PRIu8"] Frame %d, subframe %d, DLSCH (RA) re_allocated = %"PRIu16"\n",phy_vars_eNB->Mod_id,
phy_vars_eNB->proc[sched_subframe].frame_tx, subframe, re_allocated);
#endif
@@ -1965,7 +1964,7 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
#ifdef DEBUG_PHY_PROC
- LOG_D(PHY,"[eNB %d][PDSCH %x/%d] Frame %d, subframe %d: Generating PDSCH/DLSCH with input size = %d, G %d, nb_rb %d, mcs %d, pmi_alloc %x, rv %d (round %d)\n",
+ LOG_D(PHY,"[eNB %"PRIu8"][PDSCH %"PRIx16"/%"PRIu8"] Frame %d, subframe %d: Generating PDSCH/DLSCH with input size = %"PRIu16", G %d, nb_rb %"PRIu16", mcs %"PRIu8", pmi_alloc %"PRIx16", rv %"PRIu8" (round %"PRIu8")\n",
phy_vars_eNB->Mod_id, phy_vars_eNB->dlsch_eNB[(uint8_t)UE_id][0]->rnti,harq_pid,
phy_vars_eNB->proc[sched_subframe].frame_tx, subframe, input_buffer_length,
get_G(&phy_vars_eNB->lte_frame_parms,
@@ -2002,7 +2001,7 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
#if defined(SMBV) && !defined(EXMIMO)
// Configures the data source of allocation (allocation is configured by DCI)
if (smbv_is_config_frame(phy_vars_eNB->proc[sched_subframe].frame_tx) && (smbv_frame_cnt < 4)) {
- msg("[SMBV] Frame %3d, Configuring PDSCH payload in SF %d alloc %d\n",phy_vars_eNB->proc[sched_subframe].frame_tx,(smbv_frame_cnt*10) + (subframe),smbv_alloc_cnt);
+ msg("[SMBV] Frame %3d, Configuring PDSCH payload in SF %d alloc %"PRIu8"\n",phy_vars_eNB->proc[sched_subframe].frame_tx,(smbv_frame_cnt*10) + (subframe),smbv_alloc_cnt);
smbv_configure_datalist_for_user(smbv_fname, UE_id+1, DLSCH_pdu, input_buffer_length);
}
#endif
@@ -2012,7 +2011,7 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
#ifdef DEBUG_DLSCH
LOG_T(PHY,"eNB DLSCH SDU: \n");
for (i=0;i<phy_vars_eNB->dlsch_eNB[(uint8_t)UE_id][0]->harq_processes[harq_pid]->TBS>>3;i++)
- LOG_T(PHY,"%x.",(uint8_t)DLSCH_pdu[i]);
+ LOG_T(PHY,"%"PRIx8".",DLSCH_pdu[i]);
LOG_T(PHY,"\n");
#endif
#endif
@@ -2160,7 +2159,7 @@ void process_Msg3(PHY_VARS_eNB *phy_vars_eNB,uint8_t sched_subframe,uint8_t UE_i
if ((phy_vars_eNB->ulsch_eNB[(uint32_t)UE_id]->Msg3_active == 1) &&
(phy_vars_eNB->ulsch_eNB[(uint32_t)UE_id]->Msg3_subframe == subframe) &&
- (phy_vars_eNB->ulsch_eNB[(uint32_t)UE_id]->Msg3_frame == frame)) {
+ (phy_vars_eNB->ulsch_eNB[(uint32_t)UE_id]->Msg3_frame == (uint32_t)frame)) {
// harq_pid = 0;
@@ -2667,13 +2666,19 @@ void prach_procedures(PHY_VARS_eNB *phy_vars_eNB,uint8_t sched_subframe,uint8_t
void ulsch_decoding_procedures(unsigned char subframe, unsigned int i, PHY_VARS_eNB *phy_vars_eNB, unsigned char abstraction_flag)
{
+ UNUSED(subframe);
+ UNUSED(i);
+ UNUSED(phy_vars_eNB);
+ UNUSED(abstraction_flag);
LOG_D(PHY,"ulsch_decoding_procedures not yet implemented. should not be called");
}
-void phy_procedures_eNB_RX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_eNB,uint8_t abstraction_flag,relaying_type_t r_type) {
+void phy_procedures_eNB_RX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_eNB,uint8_t abstraction_flag,relaying_type_t r_type)
+{
//RX processing
+ UNUSED(r_type);
uint32_t l, ret=0,i,j,k;
uint32_t sect_id=0;
uint32_t harq_pid, harq_idx, round;
diff --git a/openair1/SIMULATION/LTE_PHY/Makefile b/openair1/SIMULATION/LTE_PHY/Makefile
index f662c1172a..99c6c8cb56 100644
--- a/openair1/SIMULATION/LTE_PHY/Makefile
+++ b/openair1/SIMULATION/LTE_PHY/Makefile
@@ -192,5 +192,6 @@ showflags :
showobj:
@echo $(SCHED_OBJS)
-run: syncsim
- rtai-load --verbose
+cppcheck:
+ @echo "cppcheck ..."
+ cppcheck $(INCLUDES) ${OBJ:.o=.c} ${OAISIM_OBJS,.o=.c} ${ASN1_RRC_MSG_OBJS1,.o=.c}
diff --git a/targets/RT/USER/lte-softmodem.c b/targets/RT/USER/lte-softmodem.c
index 3689c8d8b7..cde6df34a4 100644
--- a/targets/RT/USER/lte-softmodem.c
+++ b/targets/RT/USER/lte-softmodem.c
@@ -1839,6 +1839,8 @@ static void *UE_thread_synch(void *arg) {
sync_mode_t sync_mode = rssi;
int rssi_lin,rssi_min,rssi_max,rssi_avg;
double rssi_dBm,rssi_min_dBm,rssi_max_dBm;
+ int16_t spectrum[1024*2];
+ int16_t power_avg[600];
printf("UE_thread_sync in with PHY_vars_UE %p\n",arg);
#ifdef USRP
@@ -1901,11 +1903,22 @@ static void *UE_thread_synch(void *arg) {
rssi_min = 1<<31;
rssi_max = 0;
rssi_avg = 0;
- for (i=0;i<76800;i+=7680) {
-
+ memset(power_dBm_max,0,1024);
+ for (i=0;i<76800*4;i+=1024) {
+ //compute frequency-domain representation of 1024-sample chunk
+ dft1024(&PHY_vars_UE_g[0][0]->lte_ue_common_vars.rxdata[0][i],
+ spectrum,
+ 1);
+ compute_spectrum_stats(spectrum,
+ power_avg,
+ power_max,
+ power_min,
+ PHY_vars_UE_g[0][0]->rx_total_gain_dB);
+ }
+ /*
rssi_lin = signal_energy(&PHY_vars_UE_g[0][0]->lte_ue_common_vars.rxdata[0][i],7680);
if (PHY_vars_UE_g[0][0]->lte_frame_parms.nb_antennas_rx>1)
- rssi_lin += signal_energy(&PHY_vars_UE_g[0][0]->lte_ue_common_vars.rxdata[0][i],7680);
+ rssi_lin += signal_energy(&PHY_vars_UE_g[0][0]->lte_ue_common_vars.rxdata[1][i],7680);
rssi_avg += rssi;
rssi_min = (rssi < rssi_min) ? rssi : rssi_min;
rssi_max = (rssi > rssi_max) ? rssi : rssi_max;
@@ -1945,7 +1958,7 @@ static void *UE_thread_synch(void *arg) {
#endif
}
}
-
+ */
break;
case pbch:
diff --git a/targets/SIMU/USER/Makefile b/targets/SIMU/USER/Makefile
index ebc6cd84f5..1a9b65634a 100644
--- a/targets/SIMU/USER/Makefile
+++ b/targets/SIMU/USER/Makefile
@@ -438,6 +438,9 @@ cleancell:
cleanlfds:
$(MAKE) -C $(LFDS_DIR) -f makefile.linux clean
+cppcheck:
+ @echo "cppcheck oaisim ..."
+ cppcheck $(INCLUDES) ${OBJ:.o=.c} ${OAISIM_OBJS,.o=.c} ${ASN1_RRC_MSG_OBJS1,.o=.c}
print:
@echo "OBJ " $(OBJ)
@echo "OAISIM_OBJS " $(OAISIM_OBJS)
--
GitLab