Merge remote-tracking branch 'origin/various-fixes-w12' into develop_integration_w12
This commit is contained in:
@@ -9,13 +9,6 @@ RRC_Rel10=(
|
||||
|
||||
X2AP_Rel11_2=(
|
||||
"X2ap-CriticalityDiagnostics-IE-List.h" ae96308b37fcbcbf39da5012e42968135fc5f27b "fix_asn1.data/X2AP.rel11.2/X2ap-CriticalityDiagnostics-IE-List.h.diff"
|
||||
"NativeInteger.c" 1a55f5402fd363318cf5444ffe1f67530dcf66ff "fix_asn1.data/X2AP.rel11.2/NativeInteger.c.diff"
|
||||
"constr_SET_OF.c" 808cbbdf19b118c0bdb04e3acf2cbe6e4133be2b "fix_asn1.data/X2AP.rel11.2/constr_SET_OF.c.diff"
|
||||
)
|
||||
|
||||
S1AP_Rel10_5=(
|
||||
"NativeInteger.c" 1a55f5402fd363318cf5444ffe1f67530dcf66ff "fix_asn1.data/S1AP.rel10.5/NativeInteger.c.diff"
|
||||
"constr_SET_OF.c" 808cbbdf19b118c0bdb04e3acf2cbe6e4133be2b "fix_asn1.data/S1AP.rel10.5/constr_SET_OF.c.diff"
|
||||
)
|
||||
|
||||
red_color="$(tput setaf 1)"
|
||||
@@ -130,8 +123,7 @@ function patch_s1ap()
|
||||
|
||||
case "$version" in
|
||||
R10 )
|
||||
echo "patching S1AP files release 10.5"
|
||||
apply_patches "$directory" S1AP_Rel10_5 ${#S1AP_Rel10_5[*]}
|
||||
#nothing to do anymore (fixes went to asn1c)
|
||||
;;
|
||||
* )
|
||||
error unknwon/unhandled S1AP version \'"$version"\'
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
283c283
|
||||
< int dynamic = 0;
|
||||
---
|
||||
> //int dynamic = 0;
|
||||
290c290
|
||||
< dynamic = 1;
|
||||
---
|
||||
> //dynamic = 1;
|
||||
@@ -1,4 +0,0 @@
|
||||
1007c1007
|
||||
< (int)nelems, (int)ct ? ct->effective_bits : -1);
|
||||
---
|
||||
> (int)nelems, ct ? ct->effective_bits : -1);
|
||||
@@ -1,8 +0,0 @@
|
||||
283c283
|
||||
< int dynamic = 0;
|
||||
---
|
||||
> //int dynamic = 0;
|
||||
290c290
|
||||
< dynamic = 1;
|
||||
---
|
||||
> //dynamic = 1;
|
||||
@@ -1,4 +0,0 @@
|
||||
1007c1007
|
||||
< (int)nelems, (int)ct ? ct->effective_bits : -1);
|
||||
---
|
||||
> (int)nelems, ct ? ct->effective_bits : -1);
|
||||
@@ -1214,7 +1214,7 @@ int phy_init_lte_ue(PHY_VARS_UE *ue,
|
||||
}
|
||||
|
||||
|
||||
const size_t num = 7*2*fp->N_RB_DL*12+4;
|
||||
//const size_t num = 7*2*fp->N_RB_DL*12+4;
|
||||
for (k=0;k<8;k++) { //harq_pid
|
||||
for (l=0;l<8;l++) { //round
|
||||
pdsch_vars_th0[eNB_id]->rxdataF_comp1[k][l] = (int32_t**)malloc16_clear( 8*sizeof(int32_t*) );
|
||||
|
||||
@@ -123,8 +123,8 @@ int rx_pdsch(PHY_VARS_UE *ue,
|
||||
|
||||
int32_t **rxdataF_comp_ptr;
|
||||
int32_t **dl_ch_mag_ptr;
|
||||
int32_t codeword_TB0;
|
||||
int32_t codeword_TB1;
|
||||
int32_t codeword_TB0 = -1;
|
||||
int32_t codeword_TB1 = -1;
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -578,13 +578,13 @@ int allocate_REs_in_RB(PHY_VARS_eNB* phy_vars_eNB,
|
||||
{
|
||||
|
||||
uint8_t *x0 = NULL;
|
||||
MIMO_mode_t mimo_mode;
|
||||
MIMO_mode_t mimo_mode = -1;
|
||||
|
||||
LTE_DL_FRAME_PARMS *frame_parms = &phy_vars_eNB->frame_parms;
|
||||
|
||||
|
||||
int first_layer0; //= dlsch0_harq->first_layer;
|
||||
int Nlayers0; // = dlsch0_harq->Nlayers;
|
||||
int Nlayers0 = -1; // = dlsch0_harq->Nlayers;
|
||||
uint8_t mod_order0=0; // = get_Qm(dlsch0_harq->mcs);
|
||||
uint8_t mod_order1=0; //=2;
|
||||
uint8_t precoder_index0,precoder_index1;
|
||||
@@ -1998,13 +1998,13 @@ int dlsch_modulation(PHY_VARS_eNB* phy_vars_eNB,
|
||||
LTE_DL_FRAME_PARMS *frame_parms = &phy_vars_eNB->frame_parms;
|
||||
|
||||
uint8_t nsymb;
|
||||
uint8_t harq_pid; //= dlsch0->current_harq_pid;
|
||||
LTE_DL_eNB_HARQ_t *dlsch0_harq;
|
||||
LTE_DL_eNB_HARQ_t *dlsch1_harq; //= dlsch1->harq_processes[harq_pid];
|
||||
uint8_t harq_pid = -1; //= dlsch0->current_harq_pid;
|
||||
LTE_DL_eNB_HARQ_t *dlsch0_harq = NULL;
|
||||
LTE_DL_eNB_HARQ_t *dlsch1_harq = NULL; //= dlsch1->harq_processes[harq_pid];
|
||||
uint32_t i,i2,jj,jj2,re_allocated,symbol_offset;
|
||||
uint16_t l,rb,re_offset;
|
||||
uint32_t rb_alloc_ind;
|
||||
uint32_t *rb_alloc; //=dlsch0_harq->rb_alloc;
|
||||
uint32_t *rb_alloc = NULL; //=dlsch0_harq->rb_alloc;
|
||||
|
||||
uint8_t pilots=0;
|
||||
uint8_t skip_dc,skip_half;
|
||||
@@ -2015,6 +2015,8 @@ int dlsch_modulation(PHY_VARS_eNB* phy_vars_eNB,
|
||||
int16_t qam16_table_a1[4],qam64_table_a1[8],qam16_table_b1[4],qam64_table_b1[8];
|
||||
|
||||
int16_t *qam_table_s0=NULL,*qam_table_s1=NULL;
|
||||
#if 0
|
||||
/* TODO: variable to be removed? */
|
||||
int (*allocate_REs)(PHY_VARS_eNB*,
|
||||
int **,
|
||||
uint32_t*,
|
||||
@@ -2036,13 +2038,14 @@ int dlsch_modulation(PHY_VARS_eNB* phy_vars_eNB,
|
||||
uint8_t,
|
||||
int *,
|
||||
int *);
|
||||
#endif
|
||||
|
||||
int P1_SHIFT[13],P2_SHIFT[13];
|
||||
int offset,nushiftmod3;
|
||||
|
||||
uint8_t get_pmi_temp;
|
||||
|
||||
MIMO_mode_t mimo_mode;
|
||||
MIMO_mode_t mimo_mode = -1;
|
||||
uint8_t mprime=0,Ns;
|
||||
int8_t lprime=-1;
|
||||
int aa=0;
|
||||
@@ -2242,7 +2245,10 @@ int dlsch_modulation(PHY_VARS_eNB* phy_vars_eNB,
|
||||
re_offset = frame_parms->first_carrier_offset;
|
||||
symbol_offset = (uint32_t)frame_parms->ofdm_symbol_size*(l+(subframe_offset*nsymb));
|
||||
|
||||
#if 0
|
||||
/* TODO: remove this code? */
|
||||
allocate_REs = allocate_REs_in_RB;
|
||||
#endif
|
||||
|
||||
switch (mod_order0) {
|
||||
case 2:
|
||||
@@ -2251,15 +2257,21 @@ int dlsch_modulation(PHY_VARS_eNB* phy_vars_eNB,
|
||||
case 4:
|
||||
if (pilots) {
|
||||
qam_table_s0 = qam16_table_b0;
|
||||
#if 0
|
||||
/* TODO: remove this code? */
|
||||
allocate_REs = (dlsch0->harq_processes[harq_pid]->mimo_mode == SISO) ?
|
||||
allocate_REs_in_RB_pilots_16QAM_siso :
|
||||
allocate_REs_in_RB;
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
qam_table_s0 = qam16_table_a0;
|
||||
#if 0
|
||||
/* TODO: remove this code? */
|
||||
allocate_REs = (dlsch0->harq_processes[harq_pid]->mimo_mode == SISO) ?
|
||||
allocate_REs_in_RB_no_pilots_16QAM_siso :
|
||||
allocate_REs_in_RB;
|
||||
#endif
|
||||
|
||||
}
|
||||
break;
|
||||
@@ -2267,15 +2279,21 @@ int dlsch_modulation(PHY_VARS_eNB* phy_vars_eNB,
|
||||
case 6:
|
||||
if (pilots) {
|
||||
qam_table_s0 = qam64_table_b0;
|
||||
#if 0
|
||||
/* TODO: remove this code? */
|
||||
allocate_REs = (dlsch0->harq_processes[harq_pid]->mimo_mode == SISO) ?
|
||||
allocate_REs_in_RB_pilots_64QAM_siso :
|
||||
allocate_REs_in_RB;
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
qam_table_s0 = qam64_table_a0;
|
||||
#if 0
|
||||
/* TODO: remove this code? */
|
||||
allocate_REs = (dlsch0->harq_processes[harq_pid]->mimo_mode == SISO) ?
|
||||
allocate_REs_in_RB_no_pilots_64QAM_siso :
|
||||
allocate_REs_in_RB;
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -2284,7 +2302,10 @@ int dlsch_modulation(PHY_VARS_eNB* phy_vars_eNB,
|
||||
switch (mod_order1) {
|
||||
case 2:
|
||||
qam_table_s1 = NULL;
|
||||
#if 0
|
||||
/* TODO: remove this code? */
|
||||
allocate_REs = allocate_REs_in_RB;
|
||||
#endif
|
||||
break;
|
||||
case 4:
|
||||
if (pilots) {
|
||||
|
||||
@@ -56,7 +56,9 @@ void send_IF5(PHY_VARS_eNB *eNB, openair0_timestamp proc_timestamp, int subframe
|
||||
LTE_DL_FRAME_PARMS *fp=&eNB->frame_parms;
|
||||
int32_t *txp[fp->nb_antennas_tx], *rxp[fp->nb_antennas_rx];
|
||||
int32_t *tx_buffer=NULL;
|
||||
#ifdef DEBUG_DL_MOBIPASS
|
||||
int8_t dummy_buffer[fp->samples_per_tti*2];
|
||||
#endif
|
||||
void *alaw_buffer = eNB->ifbuffer.tx[subframe&1];
|
||||
uint16_t *data_block = NULL;
|
||||
uint16_t *j = NULL;
|
||||
@@ -262,8 +264,10 @@ void recv_IF5(PHY_VARS_eNB *eNB, openair0_timestamp *proc_timestamp, int subfram
|
||||
int32_t *txp[fp->nb_antennas_tx], *rxp[fp->nb_antennas_rx];
|
||||
|
||||
uint16_t packet_id=0, i=0, element_id=0;
|
||||
int8_t dummy_buffer_rx[fp->samples_per_tti*2];
|
||||
#ifdef DEBUG_UL_MOBIPASS
|
||||
//int8_t dummy_buffer_rx[fp->samples_per_tti*2];
|
||||
uint8_t rxe;
|
||||
#endif
|
||||
|
||||
int32_t spp_eth = (int32_t) eNB->ifdevice.openair0_cfg->samples_per_packet;
|
||||
int32_t spsf = (int32_t) eNB->ifdevice.openair0_cfg->samples_per_frame/10;
|
||||
@@ -390,14 +394,16 @@ void recv_IF5(PHY_VARS_eNB *eNB, openair0_timestamp *proc_timestamp, int subfram
|
||||
|
||||
uint16_t db_fulllength = PAYLOAD_MOBIPASS_NUM_SAMPLES;
|
||||
openair0_timestamp timestamp_mobipass[fp->samples_per_tti/db_fulllength];
|
||||
#ifdef DEBUG_UL_MOBIPASS
|
||||
int lower_offset = 0;
|
||||
int upper_offset = 70000;
|
||||
#endif
|
||||
int subframe_skip = 0;
|
||||
int reset_flag = 0;
|
||||
int32_t *rx_buffer=NULL;
|
||||
__m128i *data_block=NULL, *data_block_head=NULL;
|
||||
__m128i *rxp128;
|
||||
__m128i r0, r1;
|
||||
__m128i r0;
|
||||
|
||||
//rx_buffer = memalign(16, MAC_HEADER_SIZE_BYTES + sizeof_IF5_mobipass_header_t + db_fulllength*sizeof(int16_t));
|
||||
rx_buffer = malloc(MAC_HEADER_SIZE_BYTES + sizeof_IF5_mobipass_header_t + db_fulllength*sizeof(int16_t));
|
||||
|
||||
@@ -1901,7 +1901,7 @@ uint16_t quantize_subband_pmi(PHY_MEASUREMENTS *meas,uint8_t eNB_id,int nb_subba
|
||||
|
||||
int32_t pmi_convert_rank1_from_rank2(uint16_t pmi_alloc, int tpmi, int nb_rb);
|
||||
|
||||
//uint16_t quantize_subband_pmi2(PHY_MEASUREMENTS *meas,uint8_t eNB_id,uint8_t a_id,int nb_subbands);
|
||||
uint16_t quantize_subband_pmi2(PHY_MEASUREMENTS *meas,uint8_t eNB_id,uint8_t a_id,int nb_subbands);
|
||||
|
||||
uint64_t pmi2hex_2Ar1(uint32_t pmi);
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@ int beam_precoding(int32_t **txdataF,
|
||||
int aa)
|
||||
{
|
||||
uint8_t p;
|
||||
uint16_t re=0;
|
||||
//uint16_t re=0;
|
||||
int slot_offset_F;
|
||||
|
||||
slot_offset_F = slot*(frame_parms->ofdm_symbol_size)*((frame_parms->Ncp==1) ? 6 : 7);
|
||||
|
||||
@@ -531,7 +531,7 @@ void fill_dci(DCI_PDU *DCI_pdu,PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc)
|
||||
}
|
||||
}
|
||||
else {
|
||||
switch (eNB->frame_parms.N_RB_DL==6) {
|
||||
switch (eNB->frame_parms.N_RB_DL) {
|
||||
case 6:
|
||||
((DCI0_1_5MHz_TDD_1_6_t*)&DCI_pdu->dci_alloc[1].dci_pdu[0])->type = 0;
|
||||
((DCI0_1_5MHz_TDD_1_6_t*)&DCI_pdu->dci_alloc[1].dci_pdu[0])->hopping = 0;
|
||||
|
||||
@@ -1695,7 +1695,7 @@ void ue_pucch_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
|
||||
|
||||
|
||||
uint8_t pucch_ack_payload[2];
|
||||
uint8_t n2_pucch;
|
||||
uint8_t n2_pucch = -1;
|
||||
uint16_t pucch_resource;
|
||||
ANFBmode_t bundling_flag;
|
||||
PUCCH_FMT_t format;
|
||||
@@ -2997,7 +2997,9 @@ void ue_pmch_procedures(PHY_VARS_UE *ue, UE_rxtx_proc_t *proc,int eNB_id,int abs
|
||||
int subframe_rx = proc->subframe_rx;
|
||||
int frame_rx = proc->frame_rx;
|
||||
int pmch_mcs=-1;
|
||||
#ifdef Rel10
|
||||
int CC_id = ue->CC_id;
|
||||
#endif
|
||||
uint8_t sync_area=255;
|
||||
uint8_t mcch_active;
|
||||
int l;
|
||||
|
||||
@@ -270,7 +270,7 @@ void fill_DCI(PHY_VARS_eNB *eNB,
|
||||
int *num_dci) {
|
||||
|
||||
int k;
|
||||
int dci_length,dci_length_bytes;
|
||||
int dci_length = -1,dci_length_bytes = -1;
|
||||
|
||||
// printf("Generating DCIs for %d users, TM %d, mcs1 %d\n",n_users,transmission_mode,mcs1);
|
||||
for(k=0; k<n_users; k++) {
|
||||
@@ -1227,12 +1227,13 @@ DCI_PDU *get_dci_sdu(module_id_t module_idP,int CC_id,frame_t frameP,sub_frame_t
|
||||
DCI_pdu.Num_ue_spec_dci = num_ue_spec_dci;
|
||||
DCI_pdu.Num_common_dci = num_common_dci;
|
||||
DCI_pdu.num_pdcch_symbols = num_pdcch_symbols;
|
||||
return(&DCI_pdu);
|
||||
} else {
|
||||
DCI_pdu.Num_ue_spec_dci = 0;
|
||||
DCI_pdu.Num_common_dci = 0;
|
||||
DCI_pdu.num_pdcch_symbols = num_pdcch_symbols;
|
||||
}
|
||||
|
||||
return &DCI_pdu;
|
||||
}
|
||||
|
||||
void eNB_dlsch_ulsch_scheduler(module_id_t module_idP, uint8_t cooperation_flag, frame_t frameP, sub_frame_t subframeP) {
|
||||
@@ -1268,7 +1269,7 @@ int main(int argc, char **argv)
|
||||
|
||||
int s,Kr,Kr_bytes;
|
||||
|
||||
double SNR,snr0=-2.0,snr1,rate;
|
||||
double SNR,snr0=-2.0,snr1,rate = 0;
|
||||
double snr_step=1,input_snr_step=1, snr_int=30;
|
||||
|
||||
LTE_DL_FRAME_PARMS *frame_parms;
|
||||
@@ -1298,10 +1299,10 @@ int main(int argc, char **argv)
|
||||
DCI_ALLOC_t *dci_alloc = &DCI_pdu.dci_alloc[0];
|
||||
|
||||
unsigned int ret;
|
||||
unsigned int coded_bits_per_codeword=0,nsymb,tbs=0;
|
||||
unsigned int coded_bits_per_codeword=0,nsymb; //,tbs=0;
|
||||
|
||||
unsigned int tx_lev=0,tx_lev_dB=0,trials,errs[4]= {0,0,0,0},errs2[4]= {0,0,0,0},round_trials[4]= {0,0,0,0},dci_errors=0;//,num_layers;
|
||||
int re_allocated;
|
||||
//int re_allocated;
|
||||
char fname[32],vname[32];
|
||||
FILE *bler_fd;
|
||||
char bler_fname[256];
|
||||
@@ -1328,16 +1329,16 @@ int main(int argc, char **argv)
|
||||
int n_frames;
|
||||
int n_ch_rlz = 1;
|
||||
channel_desc_t *eNB2UE[4];
|
||||
uint8_t num_pdcch_symbols_2=0;
|
||||
//uint8_t num_pdcch_symbols_2=0;
|
||||
uint8_t rx_sample_offset = 0;
|
||||
//char stats_buffer[4096];
|
||||
//int len;
|
||||
uint8_t num_rounds = 4;//,fix_rounds=0;
|
||||
|
||||
int u;
|
||||
//int u;
|
||||
int n=0;
|
||||
int abstx=0;
|
||||
int iii;
|
||||
//int iii;
|
||||
|
||||
int ch_realization;
|
||||
int pmi_feedback=0;
|
||||
@@ -1346,7 +1347,7 @@ int main(int argc, char **argv)
|
||||
// void *data;
|
||||
// int ii;
|
||||
// int bler;
|
||||
double blerr[4],uncoded_ber,avg_ber;
|
||||
double blerr[4],uncoded_ber; //,avg_ber;
|
||||
short *uncoded_ber_bit=NULL;
|
||||
uint8_t N_RB_DL=25,osf=1;
|
||||
frame_t frame_type = FDD;
|
||||
@@ -1355,7 +1356,7 @@ int main(int argc, char **argv)
|
||||
char title[255];
|
||||
|
||||
int numCCE=0;
|
||||
int dci_length_bytes=0,dci_length=0;
|
||||
//int dci_length_bytes=0,dci_length=0;
|
||||
//double channel_bandwidth = 5.0, sampling_rate=7.68;
|
||||
int common_flag=0,TPC=0;
|
||||
|
||||
@@ -1391,7 +1392,7 @@ int main(int argc, char **argv)
|
||||
char csv_fname[32];
|
||||
int dci_flag=1;
|
||||
int two_thread_flag=0;
|
||||
int DLSCH_RB_ALLOC;
|
||||
int DLSCH_RB_ALLOC = 0;
|
||||
|
||||
#if defined(__arm__)
|
||||
FILE *proc_fd = NULL;
|
||||
@@ -1828,6 +1829,8 @@ int main(int argc, char **argv)
|
||||
}
|
||||
else {
|
||||
eNB->te = dlsch_encoding_2threads;
|
||||
extern void init_td_thread(PHY_VARS_eNB *, pthread_attr_t *);
|
||||
extern void init_te_thread(PHY_VARS_eNB *, pthread_attr_t *);
|
||||
init_td_thread(eNB,NULL);
|
||||
init_te_thread(eNB,NULL);
|
||||
}
|
||||
@@ -2186,6 +2189,7 @@ int main(int argc, char **argv)
|
||||
|
||||
while ((!feof(input_trch_fd)) && (i<input_buffer_length0<<3)) {
|
||||
ret=fscanf(input_trch_fd,"%s",input_trch_val);
|
||||
if (ret != 1) printf("ERROR: error reading file\n");
|
||||
|
||||
if (input_trch_val[0] == '1')
|
||||
input_buffer0[k][i>>3]+=(1<<(7-(i&7)));
|
||||
|
||||
@@ -164,8 +164,8 @@ void fill_ulsch_dci(PHY_VARS_eNB *eNB,void *UL_dci,int first_rb,int nb_rb,int mc
|
||||
|
||||
}
|
||||
|
||||
extern void eNB_fep_full(PHY_VARS_eNB *eNB);
|
||||
extern void eNB_fep_full_2thread(PHY_VARS_eNB *eNB);
|
||||
extern void eNB_fep_full(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc);
|
||||
extern void eNB_fep_full_2thread(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc);
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
@@ -197,7 +197,7 @@ int main(int argc, char **argv)
|
||||
int chMod = 0 ;
|
||||
int UE_id = 0;
|
||||
unsigned char nb_rb=25,first_rb=0,mcs=0,round=0,bundling_flag=1;
|
||||
unsigned char l;
|
||||
//unsigned char l;
|
||||
|
||||
unsigned char awgn_flag = 0 ;
|
||||
SCM_t channel_model=Rice1;
|
||||
@@ -246,7 +246,7 @@ int main(int argc, char **argv)
|
||||
int hold_channel=0;
|
||||
channel_desc_t *UE2eNB;
|
||||
|
||||
uint8_t control_only_flag = 0;
|
||||
//uint8_t control_only_flag = 0;
|
||||
int delay = 0;
|
||||
double maxDoppler = 0.0;
|
||||
uint8_t srs_flag = 0;
|
||||
@@ -701,6 +701,8 @@ int main(int argc, char **argv)
|
||||
UE->ulsch[0] = new_ue_ulsch(N_RB_DL,0);
|
||||
|
||||
if (parallel_flag == 1) {
|
||||
extern void init_fep_thread(PHY_VARS_eNB *, pthread_attr_t *);
|
||||
extern void init_td_thread(PHY_VARS_eNB *, pthread_attr_t *);
|
||||
init_fep_thread(eNB,NULL);
|
||||
init_td_thread(eNB,NULL);
|
||||
}
|
||||
@@ -867,6 +869,7 @@ int main(int argc, char **argv)
|
||||
|
||||
while (!feof(input_fdUL)) {
|
||||
ret=fscanf(input_fdUL,"%s %s",input_val_str,input_val_str2);//&input_val1,&input_val2);
|
||||
if (ret != 2) printf("ERROR: error reading file\n");
|
||||
|
||||
if ((i%4)==0) {
|
||||
((short*)txdata[0])[i/2] = (short)((1<<15)*strtod(input_val_str,NULL));
|
||||
|
||||
@@ -36,7 +36,8 @@
|
||||
#include <sys/socket.h>
|
||||
#include <sys/un.h>
|
||||
#include <sys/time.h>
|
||||
|
||||
#include <sys/ioctl.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#include <netinet/in.h>
|
||||
#include <arpa/inet.h>
|
||||
@@ -109,7 +110,7 @@ void IAL_NAS_ioctl_init(int inst)
|
||||
{
|
||||
|
||||
struct nas_msg_statistic_reply *msgrep;
|
||||
int err,rc;
|
||||
int err;
|
||||
|
||||
sprintf(gifr.name, "oai%d",inst);
|
||||
|
||||
@@ -132,7 +133,6 @@ void IAL_NAS_ioctl_init(int inst)
|
||||
|
||||
if (err<0) {
|
||||
printf("IOCTL error, err=%d\n",err);
|
||||
rc = -1;
|
||||
}
|
||||
|
||||
printf("tx_packets = %u, rx_packets = %u\n", msgrep->tx_packets, msgrep->rx_packets);
|
||||
@@ -151,19 +151,13 @@ void IAL_NAS_ioctl_init(int inst)
|
||||
int main(int argc,char **argv)
|
||||
//---------------------------------------------------------------------------
|
||||
{
|
||||
int done = 0, rc = 0, meas_polling_counter = 0;
|
||||
fd_set readfds;
|
||||
struct timeval tv;
|
||||
int i = 0;
|
||||
int err = 0;
|
||||
char * buffer;
|
||||
int c = 0;
|
||||
int action=0,rbset=0,cxset=0,instset=0,saddr_ipv4set=0,saddr_ipv6set=0,daddr_ipv4set=0,daddr_ipv6set=0,dscpset=0,mpls_outlabelset=0,mpls_inlabelset=0;
|
||||
char rb[100],cx[100],dscp[100],inst[100],mpls_outgoinglabel[100],mpls_incominglabel[100];
|
||||
int index = 0;
|
||||
struct nas_msg_rb_establishment_request *msgreq = NULL;
|
||||
struct nas_msg_class_add_request *msgreq_class = NULL;
|
||||
in_addr_t saddr_ipv4,daddr_ipv4;
|
||||
in_addr_t saddr_ipv4 = 0,daddr_ipv4 = 0;
|
||||
struct in6_addr saddr_ipv6,daddr_ipv6;
|
||||
unsigned int mpls_outlabel=0,mpls_inlabel=0;
|
||||
|
||||
@@ -213,15 +207,21 @@ int main(int argc,char **argv)
|
||||
mpls_inlabelset=1;
|
||||
break;
|
||||
|
||||
case 's':
|
||||
inet_aton(optarg,&saddr_ipv4);
|
||||
case 's': {
|
||||
struct in_addr a;
|
||||
inet_aton(optarg,&a);
|
||||
saddr_ipv4 = a.s_addr;
|
||||
saddr_ipv4set = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
case 't':
|
||||
inet_aton(optarg,&daddr_ipv4);
|
||||
case 't': {
|
||||
struct in_addr a;
|
||||
inet_aton(optarg,&a);
|
||||
daddr_ipv4 = a.s_addr;
|
||||
daddr_ipv4set = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
case 'x':
|
||||
printf("IPv6: %s\n",optarg);
|
||||
@@ -303,7 +303,7 @@ int main(int argc,char **argv)
|
||||
if (action == ADD_RB) {
|
||||
gifr.type = NAS_MSG_RB_ESTABLISHMENT_REQUEST;
|
||||
err=ioctl(fd, NAS_IOCTL_RRM, &gifr);
|
||||
|
||||
if (err == -1) perror("ioctl");
|
||||
|
||||
|
||||
if (saddr_ipv4set == 1) {
|
||||
@@ -329,6 +329,7 @@ int main(int argc,char **argv)
|
||||
|
||||
gifr.type = NAS_MSG_CLASS_ADD_REQUEST;
|
||||
err=ioctl(fd, NAS_IOCTL_RRM, &gifr);
|
||||
if (err == -1) perror("ioctl");
|
||||
msgreq_class->rab_id = atoi(rb);
|
||||
msgreq_class->lcr = atoi(cx);
|
||||
|
||||
@@ -340,6 +341,7 @@ int main(int argc,char **argv)
|
||||
msgreq_class->saddr.ipv4 = daddr_ipv4;
|
||||
gifr.type = NAS_MSG_CLASS_ADD_REQUEST;
|
||||
err=ioctl(fd, NAS_IOCTL_RRM, &gifr);
|
||||
if (err == -1) perror("ioctl");
|
||||
}
|
||||
|
||||
if (saddr_ipv6set == 1) {
|
||||
@@ -370,6 +372,7 @@ int main(int argc,char **argv)
|
||||
|
||||
gifr.type = NAS_MSG_CLASS_ADD_REQUEST;
|
||||
err=ioctl(fd, NAS_IOCTL_RRM, &gifr);
|
||||
if (err == -1) perror("ioctl");
|
||||
|
||||
msgreq_class->rab_id = atoi(rb);
|
||||
msgreq_class->lcr = atoi(cx);
|
||||
@@ -380,6 +383,7 @@ int main(int argc,char **argv)
|
||||
memcpy(&msgreq_class->saddr.ipv6,&daddr_ipv6,16);
|
||||
gifr.type = NAS_MSG_CLASS_ADD_REQUEST;
|
||||
err=ioctl(fd, NAS_IOCTL_RRM, &gifr);
|
||||
if (err == -1) perror("ioctl");
|
||||
|
||||
|
||||
}
|
||||
@@ -411,6 +415,7 @@ int main(int argc,char **argv)
|
||||
|
||||
gifr.type = NAS_MSG_CLASS_ADD_REQUEST;
|
||||
err=ioctl(fd, NAS_IOCTL_RRM, &gifr);
|
||||
if (err == -1) perror("ioctl");
|
||||
|
||||
msgreq_class->rab_id = atoi(rb);
|
||||
msgreq_class->lcr = atoi(cx);
|
||||
@@ -430,12 +435,14 @@ int main(int argc,char **argv)
|
||||
|
||||
gifr.type = NAS_MSG_CLASS_ADD_REQUEST;
|
||||
err=ioctl(fd, NAS_IOCTL_RRM, &gifr);
|
||||
if (err == -1) perror("ioctl");
|
||||
|
||||
|
||||
}
|
||||
} else if (action == DEL_RB) {
|
||||
gifr.type = NAS_MSG_RB_RELEASE_REQUEST;
|
||||
err=ioctl(fd, NAS_IOCTL_RRM, &gifr);
|
||||
if (err == -1) perror("ioctl");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -605,12 +605,12 @@ void nas_CLASS_send(struct sk_buff *skb,int inst)
|
||||
//---------------------------------------------------------------------------
|
||||
struct classifier_entity *p, *sp;
|
||||
uint8_t *protocolh,version;
|
||||
uint8_t protocol, dscp, exp,label;
|
||||
uint8_t protocol, dscp /*, exp,label*/ ;
|
||||
uint16_t classref;
|
||||
struct cx_entity *cx;
|
||||
unsigned int i;
|
||||
//unsigned int i;
|
||||
|
||||
unsigned int router_adv = 0;
|
||||
//unsigned int router_adv = 0;
|
||||
struct net_device *dev=nasdev[inst];
|
||||
|
||||
struct nas_priv *gpriv=netdev_priv(dev);
|
||||
|
||||
@@ -59,14 +59,14 @@ void nas_COMMON_receive(uint16_t dlen,
|
||||
struct nas_priv *gpriv=netdev_priv(nasdev[inst]);
|
||||
uint32_t odaddr,osaddr;
|
||||
|
||||
int i;
|
||||
//int i;
|
||||
|
||||
unsigned char protocol;
|
||||
|
||||
unsigned char *addr,*daddr,*saddr,*ifaddr,sn;
|
||||
unsigned char /**addr,*/ *daddr,*saddr,*ifaddr /*,sn*/;
|
||||
|
||||
struct udphdr *uh;
|
||||
struct tcphdr *th;
|
||||
//struct udphdr *uh;
|
||||
//struct tcphdr *th;
|
||||
uint16_t *cksum,check;
|
||||
|
||||
struct iphdr *network_header;
|
||||
@@ -340,7 +340,7 @@ void nas_COMMON_QOS_send(struct sk_buff *skb, struct cx_entity *cx, struct class
|
||||
int i;
|
||||
#endif
|
||||
unsigned int bytes_wrote;
|
||||
unsigned char j;
|
||||
//unsigned char j;
|
||||
// Start debug information
|
||||
#ifdef NAS_DEBUG_SEND
|
||||
printk("NAS_COMMON_QOS_SEND - inst %d begin \n",inst);
|
||||
@@ -595,7 +595,7 @@ struct rb_entity *nas_COMMON_search_rb(struct cx_entity *cx, nasRadioBearerId_t
|
||||
struct classifier_entity *nas_COMMON_search_class_for_rb(nasRadioBearerId_t rab_id,struct nas_priv *priv)
|
||||
{
|
||||
|
||||
struct rb_entity *rb;
|
||||
//struct rb_entity *rb;
|
||||
int dscp;
|
||||
struct classifier_entity *rclass;
|
||||
|
||||
|
||||
@@ -739,7 +739,6 @@ void nas_set_msg_imei_reply(struct nas_msg_l2id_reply *msgrep,
|
||||
//---------------------------------------------------------------------------
|
||||
struct cx_entity *cx;
|
||||
int lcr=0; // Temp lcr->mt =0
|
||||
int i;
|
||||
|
||||
cx=nas_COMMON_search_cx(lcr,priv);
|
||||
|
||||
|
||||
@@ -387,7 +387,7 @@ void nas_mesh_DC_send_sig_data_request(struct sk_buff *skb,
|
||||
{
|
||||
//---------------------------------------------------------------------------
|
||||
struct nas_ue_dc_element *p;
|
||||
char data_type = 'A';
|
||||
//char data_type = 'A';
|
||||
int bytes_wrote=0;
|
||||
|
||||
// Start debug information
|
||||
@@ -466,7 +466,7 @@ void nas_mesh_DC_send_peer_sig_data_request(struct cx_entity *cx, uint8_t sig_ca
|
||||
struct nas_ue_dc_element *p;
|
||||
uint8_t nas_data[10];
|
||||
unsigned int nas_length;
|
||||
char data_type = 'Z';
|
||||
//char data_type = 'Z';
|
||||
int bytes_wrote=0;
|
||||
|
||||
// Start debug information
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
|
||||
static struct sock *nas_nl_sk = NULL;
|
||||
static int exit_netlink_thread=0;
|
||||
static int nas_netlink_rx_thread(void *);
|
||||
//static int nas_netlink_rx_thread(void *);
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0)
|
||||
struct netlink_kernel_cfg oai_netlink_cfg;
|
||||
#endif
|
||||
@@ -76,7 +76,7 @@ static void nas_nl_data_ready (struct sk_buff *skb)
|
||||
//nasmesh_unlock();
|
||||
|
||||
struct nlmsghdr *nlh = NULL;
|
||||
int j;
|
||||
//int j;
|
||||
|
||||
if (skb) {
|
||||
|
||||
|
||||
@@ -86,14 +86,14 @@ UE0:
|
||||
};
|
||||
|
||||
SIM: {
|
||||
MSIN="000001234";
|
||||
USIM_API_K="000102030405060708090A0B0C0D0E0F";
|
||||
MSIN="0100001111";
|
||||
USIM_API_K="fec86ba6eb707ed08905757b1bb44b8f";
|
||||
OPC="C42449363BBAD02B66D16BC975D77CC1";
|
||||
MSISDN="000000000000";//"33611123456";
|
||||
MSISDN="33611123456";
|
||||
};
|
||||
|
||||
# Home PLMN Selector with Access Technology
|
||||
HPLMN= "00101";
|
||||
HPLMN= "20893";
|
||||
|
||||
# User controlled PLMN Selector with Access Technology
|
||||
UCPLMN_LIST = ();
|
||||
|
||||
@@ -418,7 +418,6 @@ int trx_eth_read_raw_IF4p5(openair0_device *device, openair0_timestamp *timestam
|
||||
int trx_eth_read_raw_IF5_mobipass(openair0_device *device, openair0_timestamp *timestamp, void **buff, int nsamps, int cc) {
|
||||
// Read nblocks info from packet itself
|
||||
|
||||
int nblocks = nsamps;
|
||||
int bytes_received=0;
|
||||
eth_state_t *eth = (eth_state_t*)device->priv;
|
||||
|
||||
|
||||
@@ -139,7 +139,7 @@ int trx_eth_read_udp_IF4p5(openair0_device *device, openair0_timestamp *timestam
|
||||
IF4p5_header_t *test_header = (IF4p5_header_t*)(buff[0]);
|
||||
|
||||
int block_cnt=0;
|
||||
int again_cnt=0;
|
||||
//int again_cnt=0;
|
||||
packet_size = max(UDP_IF4p5_PRACH_SIZE_BYTES, max(UDP_IF4p5_PULFFT_SIZE_BYTES(nblocks), UDP_IF4p5_PDLFFT_SIZE_BYTES(nblocks)));
|
||||
|
||||
while(bytes_received == -1) {
|
||||
@@ -410,7 +410,7 @@ int trx_eth_read_udp(openair0_device *device, openair0_timestamp *timestamp, voi
|
||||
eth->pck_seq_num_cur = *(uint16_t *)buff2;
|
||||
if ( ( eth->pck_seq_num_cur != (eth->pck_seq_num_prev + 1) ) && !((eth->pck_seq_num_prev==MAX_PACKET_SEQ_NUM(nsamps,device->openair0_cfg->samples_per_frame)) && (eth->pck_seq_num_cur==1 )) && !((eth->pck_seq_num_prev==1) && (eth->pck_seq_num_cur==1))) {
|
||||
//#if DEBUG
|
||||
printf("Out of order packet received: current_packet=%d previous_packet=%d timestamp=%llu\n",eth->pck_seq_num_cur,eth->pck_seq_num_prev,*timestamp);
|
||||
printf("Out of order packet received: current_packet=%d previous_packet=%d timestamp=%"PRId64"\n",eth->pck_seq_num_cur,eth->pck_seq_num_prev,*timestamp);
|
||||
//#endif
|
||||
}
|
||||
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_RX_SEQ_NUM,eth->pck_seq_num_cur);
|
||||
@@ -448,7 +448,7 @@ int eth_set_dev_conf_udp(openair0_device *device) {
|
||||
|
||||
if (sendto(eth->sockfd,msg,msg_len,0,(struct sockaddr *)ð->dest_addr,eth->addr_len)==-1) {
|
||||
perror("ETHERNET: sendto conf_udp");
|
||||
printf("addr_len : %d, msg_len %d\n",eth->addr_len,msg_len);
|
||||
printf("addr_len : %d, msg_len %zd\n",eth->addr_len,msg_len);
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
@@ -193,7 +193,7 @@ int exmimo_assign_shm_vars(int card_id)
|
||||
int exmimo_allocate_rx_tx_buffers(int card_id)
|
||||
{
|
||||
size_t size;
|
||||
int j,i;
|
||||
int j;
|
||||
dma_addr_t dma_addr_dummy;
|
||||
// Round up to the next PAGE_SIZE (typ. 4096 bytes)
|
||||
size = (ADAC_BUFFERSZ_PERCHAN_B >> PAGE_SHIFT) + 1;
|
||||
@@ -243,8 +243,6 @@ int exmimo_allocate_rx_tx_buffers(int card_id)
|
||||
*/
|
||||
int exmimo_memory_alloc(int card)
|
||||
{
|
||||
int i;
|
||||
|
||||
if ( bigshm_init( card ) ) {
|
||||
printk("exmimo_memory_alloc(): bigshm_init failed for card %d.\n", card);
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -1,25 +1,30 @@
|
||||
#ifndef OPENAIRINTERFACE5G_LIMITS_H_
|
||||
#define OPENAIRINTERFACE5G_LIMITS_H_
|
||||
|
||||
#if defined(CBMIMO1) || defined(EXMIMO) || defined(OAI_USRP)
|
||||
#define NUMBER_OF_eNB_MAX 1
|
||||
#define NUMBER_OF_UE_MAX 16
|
||||
#define NUMBER_OF_CONNECTED_eNB_MAX 3
|
||||
#if defined(CBMIMO1) || defined(EXMIMO) || defined(OAI_USRP) || defined(OAI_LMSSDR)
|
||||
# define NUMBER_OF_eNB_MAX 1
|
||||
# define NUMBER_OF_UE_MAX 16
|
||||
# define NUMBER_OF_CONNECTED_eNB_MAX 3
|
||||
#else
|
||||
#define NUMBER_OF_eNB_MAX 7
|
||||
#define NUMBER_OF_UE_MAX 20
|
||||
#define NUMBER_OF_CONNECTED_eNB_MAX 3
|
||||
# define NUMBER_OF_eNB_MAX 7
|
||||
# define NUMBER_OF_UE_MAX 20
|
||||
# define NUMBER_OF_CONNECTED_eNB_MAX 3
|
||||
|
||||
#if STANDALONE==1
|
||||
#define NUMBER_OF_eNB_MAX 3
|
||||
#define NUMBER_OF_UE_MAX 3
|
||||
#endif
|
||||
# if defined(STANDALONE) && STANDALONE==1
|
||||
# undef NUMBER_OF_eNB_MAX
|
||||
# undef NUMBER_OF_UE_MAX
|
||||
# define NUMBER_OF_eNB_MAX 3
|
||||
# define NUMBER_OF_UE_MAX 3
|
||||
# endif
|
||||
|
||||
#if LARGE_SCALE
|
||||
#define NUMBER_OF_eNB_MAX 2
|
||||
#define NUMBER_OF_UE_MAX 120
|
||||
#define NUMBER_OF_CONNECTED_eNB_MAX 1 // to save some memory
|
||||
#endif
|
||||
# if defined(LARGE_SCALE) && LARGE_SCALE
|
||||
# undef NUMBER_OF_eNB_MAX
|
||||
# undef NUMBER_OF_UE_MAX
|
||||
# undef NUMBER_OF_CONNECTED_eNB_MAX
|
||||
# define NUMBER_OF_eNB_MAX 2
|
||||
# define NUMBER_OF_UE_MAX 120
|
||||
# define NUMBER_OF_CONNECTED_eNB_MAX 1 // to save some memory
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#endif
|
||||
#endif /* OPENAIRINTERFACE5G_LIMITS_H_ */
|
||||
|
||||
@@ -87,7 +87,6 @@ void config_UE_mod( rrh_module_t *dev_ue, uint8_t RT_flag,uint8_t NRT_flag) {
|
||||
|
||||
int i;
|
||||
int error_code_UE, error_code_proc_UE;
|
||||
void *tmp;
|
||||
|
||||
RT_flag_UE=RT_flag;
|
||||
NRT_flag_UE=NRT_flag;
|
||||
@@ -245,8 +244,7 @@ void *rrh_UE_thread(void *arg) {
|
||||
|
||||
struct sched_param sched_param_UE_rx, sched_param_UE_tx;
|
||||
int16_t i,cmd; //,nsamps,antenna_index;
|
||||
ssize_t bytes_received;
|
||||
struct timespec time_req_1us, time_rem_1us;
|
||||
//struct timespec time_req_1us;
|
||||
pthread_t UE_rx_thread, UE_tx_thread;
|
||||
pthread_attr_t attr_UE_rx, attr_UE_tx;
|
||||
int error_code_UE_rx, error_code_UE_tx;
|
||||
@@ -254,8 +252,8 @@ void *rrh_UE_thread(void *arg) {
|
||||
unsigned int samples_per_frame=0;
|
||||
|
||||
samples_per_frame= dev->eth_dev.openair0_cfg->samples_per_frame;
|
||||
time_req_1us.tv_sec = 0;
|
||||
time_req_1us.tv_nsec = 1000;
|
||||
//time_req_1us.tv_sec = 0;
|
||||
//time_req_1us.tv_nsec = 1000;
|
||||
|
||||
while (rrh_exit==0) {
|
||||
|
||||
@@ -338,12 +336,15 @@ void *rrh_UE_rx_thread(void *arg) {
|
||||
int trace_cnt=0;
|
||||
unsigned long long max_rx_time=0, min_rx_time=133333, total_rx_time=0, average_rx_time=133333, s_period=0, trial=0;
|
||||
unsigned int samples_per_frame=0;
|
||||
openair0_timestamp temp, last_hw_counter=0;
|
||||
openair0_timestamp last_hw_counter=0;
|
||||
|
||||
antenna_index = 0;
|
||||
nsamps = dev->eth_dev.openair0_cfg->samples_per_packet;
|
||||
samples_per_frame = dev->eth_dev.openair0_cfg->samples_per_frame;
|
||||
|
||||
/* TODO: check if setting time0 has to be done here */
|
||||
clock_gettime(CLOCK_MONOTONIC,&time0);
|
||||
|
||||
while (rrh_exit == 0) {
|
||||
if (!UE_rx_started) {
|
||||
UE_rx_started=1; //Set this flag to 1 to indicate that a UE started retrieving data
|
||||
@@ -446,7 +447,7 @@ void *rrh_UE_rx_thread(void *arg) {
|
||||
|
||||
if (s_period++ == PRINTF_PERIOD) {
|
||||
s_period=0;
|
||||
printf("Average UE RX time : %lu\tMax RX time : %lu\tMin RX time : %lu\n",average_rx_time,max_rx_time,min_rx_time);
|
||||
printf("Average UE RX time : %llu\tMax RX time : %llu\tMin RX time : %llu\n",average_rx_time,max_rx_time,min_rx_time);
|
||||
|
||||
}
|
||||
|
||||
@@ -481,7 +482,6 @@ void *rrh_UE_tx_thread(void *arg) {
|
||||
rrh_module_t *dev = (rrh_module_t *)arg;
|
||||
ssize_t bytes_received;
|
||||
int antenna_index, nsamps;
|
||||
int trace_cnt=0;
|
||||
unsigned int samples_per_frame=0;
|
||||
|
||||
antenna_index = 0;
|
||||
@@ -504,7 +504,7 @@ void *rrh_UE_tx_thread(void *arg) {
|
||||
if (NRT_flag_UE==1) {
|
||||
nrt_UE_counter[antenna_index]++;
|
||||
}
|
||||
printf(" first part size: %d second part size: %d idx=%d \n",
|
||||
printf(" first part size: %d second part size: %"PRId64" idx=%"PRId64"\n",
|
||||
(int32_t)(((samples_per_frame)<<2)-((timestamp_UE_tx[antenna_index]%(samples_per_frame))<<2)),
|
||||
(nsamps<<2)-((samples_per_frame)<<2)+((timestamp_UE_tx[antenna_index]%(samples_per_frame))<<2),
|
||||
timestamp_UE_tx[antenna_index]%(samples_per_frame));
|
||||
|
||||
@@ -539,13 +539,13 @@ void *rrh_eNB_rx_thread(void *arg) {
|
||||
|
||||
void *rrh_eNB_tx_thread(void *arg) {
|
||||
|
||||
struct timespec time0a,time0,time1,time2;
|
||||
struct timespec time0,time1,time2;
|
||||
|
||||
rrh_module_t *dev = (rrh_module_t *)arg;
|
||||
struct timespec time_req_1us, time_rem_1us;
|
||||
ssize_t bytes_received;
|
||||
int i;
|
||||
openair0_timestamp last_hw_counter=0;
|
||||
//openair0_timestamp last_hw_counter=0;
|
||||
unsigned int samples_per_frame=0,samples_per_subframe=0;
|
||||
unsigned int spp_rf=0, spp_eth=0;
|
||||
uint8_t loopback=0,measurements=0;
|
||||
@@ -634,7 +634,7 @@ void *rrh_eNB_tx_thread(void *arg) {
|
||||
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_TX_TS, timestamp_tx&0xffffffff );
|
||||
|
||||
|
||||
if (dev->devs->type == NONE_DEV) last_hw_counter=hw_counter;
|
||||
//if (dev->devs->type == NONE_DEV) last_hw_counter=hw_counter;
|
||||
|
||||
|
||||
if (loopback ==1 ) {
|
||||
|
||||
@@ -319,8 +319,8 @@ void help (void) {
|
||||
printf(" --ue-rxgain set UE RX gain\n");
|
||||
printf(" --ue-rxgain-off external UE amplifier offset\n");
|
||||
printf(" --ue-txgain set UE TX gain\n");
|
||||
printf(" --ue-nb-ant-rx set UE number of rx antennas ");
|
||||
printf(" --ue-scan_carrier set UE to scan around carrier\n");
|
||||
printf(" --ue-nb-ant-rx set UE number of rx antennas\n");
|
||||
printf(" --ue-scan-carrier set UE to scan around carrier\n");
|
||||
printf(" --dlsch-demod-shift dynamic shift for LLR compuation for TM3/4 (default 0)\n");
|
||||
printf(" --loop-memory get softmodem (UE) to loop through memory instead of acquiring from HW\n");
|
||||
printf(" --mmapped-dma sets flag for improved EXMIMO UE performance\n");
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
|
||||
/* local IP/MAC address is detected*/
|
||||
char rrh_ip[20] = "0.0.0.0";
|
||||
unsigned char rrh_mac[6] = "0:0:0:0:0:0";
|
||||
unsigned char rrh_mac[20] = "0:0:0:0:0:0";
|
||||
int rrh_port = 50000; // has to be an option
|
||||
|
||||
/* log */
|
||||
@@ -197,7 +197,7 @@ static rrh_module_t new_module (unsigned int id) {
|
||||
openair0_cfg.my_port = rrh_port;
|
||||
LOG_I(RRH,"UDP mode selected for ethernet.\n");
|
||||
} else if (eth_mode==ETH_RAW_MODE) {
|
||||
openair0_cfg.my_addr = &rrh_mac[0];
|
||||
openair0_cfg.my_addr = (char*)&rrh_mac[0];
|
||||
openair0_cfg.my_port = rrh_port;
|
||||
LOG_I(RRH,"RAW mode selected for ethernet.\n");
|
||||
}
|
||||
@@ -342,7 +342,7 @@ static int get_address(char* if_name, uint8_t flag) {
|
||||
perror("IOCTL:");
|
||||
exit(-1);
|
||||
}
|
||||
ether_ntoa_r ((unsigned char *)ifr.ifr_hwaddr.sa_data, rrh_mac);
|
||||
ether_ntoa_r ((struct ether_addr *)ifr.ifr_hwaddr.sa_data, (char*)rrh_mac);
|
||||
LOG_I(RRH,"%s: MAC address: %s\n",if_name,rrh_mac);
|
||||
}
|
||||
|
||||
@@ -376,7 +376,7 @@ void *timer_proc(void *arg) {
|
||||
|
||||
timer_t timerid;
|
||||
struct itimerspec *timer= (struct itimerspec *)arg ; // the timer data structure
|
||||
struct itimerspec *old_value;
|
||||
struct itimerspec old_value;
|
||||
|
||||
|
||||
#ifdef DEADLINE_SCHEDULER
|
||||
@@ -407,7 +407,7 @@ void *timer_proc(void *arg) {
|
||||
|
||||
signal(SIGALRM, timer_signal_handler);
|
||||
LOG_I(RRH,"Timer has started!\n");
|
||||
timer_settime (timerid, 0, timer, old_value);
|
||||
timer_settime (timerid, 0, timer, &old_value);
|
||||
|
||||
while (!rrh_exit) {
|
||||
sleep(1);
|
||||
|
||||
@@ -472,7 +472,7 @@ l2l1_task (void *args_p)
|
||||
// Framing variables
|
||||
int32_t sf;
|
||||
|
||||
char fname[64], vname[64];
|
||||
//char fname[64], vname[64];
|
||||
|
||||
//#ifdef XFORMS
|
||||
// current status is that every UE has a DL scope for a SINGLE eNB (eNB_id=0)
|
||||
@@ -1216,7 +1216,10 @@ main (int argc, char **argv)
|
||||
for(int i =0; i<NUMBER_OF_UE_MAX; i++){
|
||||
char command_line[100];
|
||||
sprintf(command_line, "while ip rule del table %d; do true; done",i+201);
|
||||
system(command_line);
|
||||
/* we don't care about return value from system(), but let's the
|
||||
* compiler be silent, so let's do "if (XX);"
|
||||
*/
|
||||
if (system(command_line)) /* nothing */;
|
||||
}
|
||||
// start thread for log gen
|
||||
log_thread_init ();
|
||||
@@ -1286,6 +1289,7 @@ main (int argc, char **argv)
|
||||
|
||||
init_openair2 ();
|
||||
|
||||
void init_openair0(void);
|
||||
init_openair0();
|
||||
|
||||
init_ocm ();
|
||||
@@ -1383,14 +1387,16 @@ reset_opp_meas_oaisim (void)
|
||||
|
||||
for (UE_id = 0; UE_id < NB_UE_INST; UE_id++) {
|
||||
reset_meas (&PHY_vars_UE_g[UE_id][0]->phy_proc);
|
||||
reset_meas (&PHY_vars_UE_g[UE_id][0]->phy_proc_rx);
|
||||
reset_meas (&PHY_vars_UE_g[UE_id][0]->phy_proc_rx[0]);
|
||||
reset_meas (&PHY_vars_UE_g[UE_id][0]->phy_proc_rx[1]);
|
||||
reset_meas (&PHY_vars_UE_g[UE_id][0]->phy_proc_tx);
|
||||
|
||||
reset_meas (&PHY_vars_UE_g[UE_id][0]->ofdm_demod_stats);
|
||||
reset_meas (&PHY_vars_UE_g[UE_id][0]->rx_dft_stats);
|
||||
reset_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_channel_estimation_stats);
|
||||
reset_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_freq_offset_estimation_stats);
|
||||
reset_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_decoding_stats);
|
||||
reset_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_decoding_stats[0]);
|
||||
reset_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_decoding_stats[1]);
|
||||
reset_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_rate_unmatching_stats);
|
||||
reset_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_turbo_decoding_stats);
|
||||
reset_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_deinterleaving_stats);
|
||||
@@ -1552,8 +1558,10 @@ print_opp_meas_oaisim (void)
|
||||
print_meas (&PHY_vars_UE_g[UE_id][0]->phy_proc, "[UE][total_phy_proc]",
|
||||
&oaisim_stats, &oaisim_stats_f);
|
||||
|
||||
print_meas (&PHY_vars_UE_g[UE_id][0]->phy_proc_rx,
|
||||
"[UE][total_phy_proc_rx]", &oaisim_stats, &oaisim_stats_f);
|
||||
print_meas (&PHY_vars_UE_g[UE_id][0]->phy_proc_rx[0],
|
||||
"[UE][total_phy_proc_rx[0]]", &oaisim_stats, &oaisim_stats_f);
|
||||
print_meas (&PHY_vars_UE_g[UE_id][0]->phy_proc_rx[1],
|
||||
"[UE][total_phy_proc_rx[1]]", &oaisim_stats, &oaisim_stats_f);
|
||||
print_meas (&PHY_vars_UE_g[UE_id][0]->ofdm_demod_stats,
|
||||
"[UE][ofdm_demod]", &oaisim_stats, &oaisim_stats_f);
|
||||
print_meas (&PHY_vars_UE_g[UE_id][0]->rx_dft_stats, "[UE][rx_dft]",
|
||||
@@ -1566,8 +1574,10 @@ print_opp_meas_oaisim (void)
|
||||
&oaisim_stats, &oaisim_stats_f);
|
||||
print_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_unscrambling_stats,
|
||||
"[UE][unscrambling]", &oaisim_stats, &oaisim_stats_f);
|
||||
print_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_decoding_stats,
|
||||
"[UE][decoding]", &oaisim_stats, &oaisim_stats_f);
|
||||
print_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_decoding_stats[0],
|
||||
"[UE][decoding[0]]", &oaisim_stats, &oaisim_stats_f);
|
||||
print_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_decoding_stats[1],
|
||||
"[UE][decoding[1]]", &oaisim_stats, &oaisim_stats_f);
|
||||
print_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_rate_unmatching_stats,
|
||||
"[UE][rate_unmatching]", &oaisim_stats, &oaisim_stats_f);
|
||||
print_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_deinterleaving_stats,
|
||||
|
||||
@@ -91,7 +91,9 @@ extern char smbv_ip[16];
|
||||
#define K 2 // averaging coefficient
|
||||
#define TARGET_SF_TIME_NS 1000000 // 1ms = 1000000 ns
|
||||
|
||||
#ifndef min
|
||||
#define min(a,b) ((a)<(b)?(a):(b))
|
||||
#endif
|
||||
|
||||
int otg_times = 0;
|
||||
int if_times = 0;
|
||||
@@ -1014,8 +1016,8 @@ int eNB_trx_stop(openair0_device *device) {
|
||||
int UE_trx_start(openair0_device *device) {
|
||||
return(0);
|
||||
}
|
||||
int UE_trx_end(openair0_device *device) {
|
||||
return(0);
|
||||
void UE_trx_end(openair0_device *device) {
|
||||
return;
|
||||
}
|
||||
int UE_trx_stop(openair0_device *device) {
|
||||
return(0);
|
||||
@@ -1293,7 +1295,7 @@ void init_devices(void){
|
||||
|
||||
void init_openair1(void)
|
||||
{
|
||||
module_id_t UE_id, eNB_id;
|
||||
module_id_t UE_id, eNB_id = 0;
|
||||
uint8_t CC_id;
|
||||
#if ENABLE_RAL
|
||||
int list_index;
|
||||
@@ -1447,6 +1449,7 @@ void init_openair1(void)
|
||||
|
||||
} // CC_id
|
||||
} // UE_id
|
||||
extern void init_UE(int);
|
||||
init_UE(NB_UE_INST);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user