Commit 56d53dcd authored by frtabu's avatar frtabu

apply astyle, fix compilation warnings in raw aeth transport and kernel modules

parent 983d7518
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
extern PHY_VARS_eNB *eNB; extern PHY_VARS_eNB *eNB;
extern PHY_VARS_UE *UE; extern PHY_VARS_UE *UE;
extern RU_t *ru; extern RU_t *ru;
extern void phy_init_RU(RU_t*); extern void phy_init_RU(RU_t *);
void lte_param_init(PHY_VARS_eNB **eNBp, void lte_param_init(PHY_VARS_eNB **eNBp,
PHY_VARS_UE **UEp, PHY_VARS_UE **UEp,
...@@ -55,9 +55,7 @@ void lte_param_init(PHY_VARS_eNB **eNBp, ...@@ -55,9 +55,7 @@ void lte_param_init(PHY_VARS_eNB **eNBp,
uint8_t pa, uint8_t pa,
uint8_t threequarter_fs, uint8_t threequarter_fs,
uint8_t osf, uint8_t osf,
uint32_t perfect_ce) uint32_t perfect_ce) {
{
LTE_DL_FRAME_PARMS *frame_parms; LTE_DL_FRAME_PARMS *frame_parms;
int i; int i;
PHY_VARS_eNB *eNB; PHY_VARS_eNB *eNB;
...@@ -71,23 +69,16 @@ void lte_param_init(PHY_VARS_eNB **eNBp, ...@@ -71,23 +69,16 @@ void lte_param_init(PHY_VARS_eNB **eNBp,
UE = *UEp; UE = *UEp;
ru = *rup; ru = *rup;
printf("eNB %p, UE %p, ru %p\n",eNB,UE,ru); printf("eNB %p, UE %p, ru %p\n",eNB,UE,ru);
memset((void *)eNB,0,sizeof(PHY_VARS_eNB));
memset((void *)UE,0,sizeof(PHY_VARS_UE));
memset((void *)ru,0,sizeof(RU_t));
memset((void*)eNB,0,sizeof(PHY_VARS_eNB));
memset((void*)UE,0,sizeof(PHY_VARS_UE));
memset((void*)ru,0,sizeof(RU_t));
ru->eNB_list[0] = eNB; ru->eNB_list[0] = eNB;
eNB->RU_list[0] = ru; eNB->RU_list[0] = ru;
ru->num_eNB=1; ru->num_eNB=1;
srand(0); srand(0);
randominit(0); randominit(0);
set_taus_seed(0); set_taus_seed(0);
frame_parms = &(eNB->frame_parms); frame_parms = &(eNB->frame_parms);
frame_parms->N_RB_DL = N_RB_DL; //50 for 10MHz and 25 for 5 MHz frame_parms->N_RB_DL = N_RB_DL; //50 for 10MHz and 25 for 5 MHz
frame_parms->N_RB_UL = N_RB_DL; frame_parms->N_RB_UL = N_RB_DL;
frame_parms->threequarter_fs = threequarter_fs; frame_parms->threequarter_fs = threequarter_fs;
...@@ -106,13 +97,9 @@ void lte_param_init(PHY_VARS_eNB **eNBp, ...@@ -106,13 +97,9 @@ void lte_param_init(PHY_VARS_eNB **eNBp,
// frame_parms->Bsrs = 0; // frame_parms->Bsrs = 0;
// frame_parms->kTC = 0;44 // frame_parms->kTC = 0;44
// frame_parms->n_RRC = 0; // frame_parms->n_RRC = 0;
init_frame_parms(frame_parms,osf); init_frame_parms(frame_parms,osf);
//copy_lte_parms_to_phy_framing(frame_parms, &(PHY_config->PHY_framing)); //copy_lte_parms_to_phy_framing(frame_parms, &(PHY_config->PHY_framing));
// phy_init_top(frame_parms); //allocation // phy_init_top(frame_parms); //allocation
UE->is_secondary_ue = 0; UE->is_secondary_ue = 0;
UE->frame_parms = *frame_parms; UE->frame_parms = *frame_parms;
UE->frame_parms.nb_antennas_rx=N_rx_ue; UE->frame_parms.nb_antennas_rx=N_rx_ue;
...@@ -121,14 +108,10 @@ void lte_param_init(PHY_VARS_eNB **eNBp, ...@@ -121,14 +108,10 @@ void lte_param_init(PHY_VARS_eNB **eNBp,
ru->nb_tx = N_tx_phy; ru->nb_tx = N_tx_phy;
ru->nb_rx = N_rx_ru; ru->nb_rx = N_rx_ru;
ru->if_south = LOCAL_RF; ru->if_south = LOCAL_RF;
eNB->configured=1; eNB->configured=1;
eNB->transmission_mode[0] = transmission_mode; eNB->transmission_mode[0] = transmission_mode;
UE->transmission_mode[0] = transmission_mode; UE->transmission_mode[0] = transmission_mode;
dump_frame_parms(frame_parms); dump_frame_parms(frame_parms);
UE->measurements.n_adj_cells=0; UE->measurements.n_adj_cells=0;
UE->measurements.adj_cell_id[0] = Nid_cell+1; UE->measurements.adj_cell_id[0] = Nid_cell+1;
UE->measurements.adj_cell_id[1] = Nid_cell+2; UE->measurements.adj_cell_id[1] = Nid_cell+2;
...@@ -144,7 +127,6 @@ void lte_param_init(PHY_VARS_eNB **eNBp, ...@@ -144,7 +127,6 @@ void lte_param_init(PHY_VARS_eNB **eNBp,
phy_init_RU(ru); phy_init_RU(ru);
generate_pcfich_reg_mapping(&UE->frame_parms); generate_pcfich_reg_mapping(&UE->frame_parms);
generate_phich_reg_mapping(&UE->frame_parms); generate_phich_reg_mapping(&UE->frame_parms);
// DL power control init // DL power control init
//if (transmission_mode == 1) { //if (transmission_mode == 1) {
UE->pdsch_config_dedicated->p_a = pa; UE->pdsch_config_dedicated->p_a = pa;
...@@ -166,8 +148,7 @@ void lte_param_init(PHY_VARS_eNB **eNBp, ...@@ -166,8 +148,7 @@ void lte_param_init(PHY_VARS_eNB **eNBp,
if (eNB->frame_parms.N_RB_DL == 100) ru->N_TA_offset = 624; if (eNB->frame_parms.N_RB_DL == 100) ru->N_TA_offset = 624;
else if (eNB->frame_parms.N_RB_DL == 50) ru->N_TA_offset = 624/2; else if (eNB->frame_parms.N_RB_DL == 50) ru->N_TA_offset = 624/2;
else if (eNB->frame_parms.N_RB_DL == 25) ru->N_TA_offset = 624/4; else if (eNB->frame_parms.N_RB_DL == 25) ru->N_TA_offset = 624/4;
} } else ru->N_TA_offset=0;
else ru->N_TA_offset=0;
if (IS_SOFTMODEM_BASICSIM) if (IS_SOFTMODEM_BASICSIM)
/* this is required for the basic simulator in TDD mode /* this is required for the basic simulator in TDD mode
...@@ -175,8 +156,5 @@ void lte_param_init(PHY_VARS_eNB **eNBp, ...@@ -175,8 +156,5 @@ void lte_param_init(PHY_VARS_eNB **eNBp,
*/ */
UE->N_TA_offset = 0; UE->N_TA_offset = 0;
printf("Done lte_param_init\n"); printf("Done lte_param_init\n");
} }
This diff is collapsed.
...@@ -44,15 +44,11 @@ int generate_pss(int32_t **txdataF, ...@@ -44,15 +44,11 @@ int generate_pss(int32_t **txdataF,
short amp, short amp,
LTE_DL_FRAME_PARMS *frame_parms, LTE_DL_FRAME_PARMS *frame_parms,
unsigned short symbol, unsigned short symbol,
unsigned short slot_offset) unsigned short slot_offset) {
{
unsigned int Nsymb; unsigned int Nsymb;
unsigned short k,m,aa,a; unsigned short k,m,aa,a;
uint8_t Nid2; uint8_t Nid2;
short *primary_sync; short *primary_sync;
Nid2 = frame_parms->Nid_cell % 3; Nid2 = frame_parms->Nid_cell % 3;
switch (Nid2) { switch (Nid2) {
...@@ -84,26 +80,23 @@ int generate_pss(int32_t **txdataF, ...@@ -84,26 +80,23 @@ int generate_pss(int32_t **txdataF,
for (aa=0; aa<frame_parms->nb_antenna_ports_eNB; aa++) { for (aa=0; aa<frame_parms->nb_antenna_ports_eNB; aa++) {
// aa = 0; // aa = 0;
// The PSS occupies the inner 6 RBs, which start at // The PSS occupies the inner 6 RBs, which start at
k = frame_parms->ofdm_symbol_size-3*12+5; k = frame_parms->ofdm_symbol_size-3*12+5;
//printf("[PSS] k = %d\n",k); //printf("[PSS] k = %d\n",k);
for (m=5; m<67; m++) { for (m=5; m<67; m++) {
((short*)txdataF[aa])[2*(slot_offset*Nsymb/2*frame_parms->ofdm_symbol_size + ((short *)txdataF[aa])[2*(slot_offset*Nsymb/2*frame_parms->ofdm_symbol_size +
symbol*frame_parms->ofdm_symbol_size + k)] = symbol*frame_parms->ofdm_symbol_size + k)] =
(a * primary_sync[2*m]) >> 15; (a * primary_sync[2*m]) >> 15;
((short*)txdataF[aa])[2*(slot_offset*Nsymb/2*frame_parms->ofdm_symbol_size + ((short *)txdataF[aa])[2*(slot_offset*Nsymb/2*frame_parms->ofdm_symbol_size +
symbol*frame_parms->ofdm_symbol_size + k) + 1] = symbol*frame_parms->ofdm_symbol_size + k) + 1] =
(a * primary_sync[2*m+1]) >> 15; (a * primary_sync[2*m+1]) >> 15;
k+=1; k+=1;
if (k >= frame_parms->ofdm_symbol_size) { if (k >= frame_parms->ofdm_symbol_size) {
k++; //skip DC k++; //skip DC
k-=frame_parms->ofdm_symbol_size; k-=frame_parms->ofdm_symbol_size;
} }
} }
} }
......
...@@ -63,7 +63,6 @@ struct msghdr nas_msg_rx; ...@@ -63,7 +63,6 @@ struct msghdr nas_msg_rx;
#define GRAAL_NETLINK_ID 31 #define GRAAL_NETLINK_ID 31
static int tun_alloc(char *dev) { static int tun_alloc(char *dev) {
struct ifreq ifr; struct ifreq ifr;
int fd, err; int fd, err;
......
...@@ -783,12 +783,14 @@ int main(int argc, char **argv) { ...@@ -783,12 +783,14 @@ int main(int argc, char **argv) {
case 'u': case 'u':
dual_stream_UE=1; dual_stream_UE=1;
if (UE != NULL) if (UE != NULL)
UE->use_ia_receiver = 1; UE->use_ia_receiver = 1;
else { else {
printf("UE is NULL\n"); printf("UE is NULL\n");
exit(-1); exit(-1);
} }
if ((n_tx_port!=2) || (transmission_mode!=5)) { if ((n_tx_port!=2) || (transmission_mode!=5)) {
printf("IA receiver only supported for TM5!"); printf("IA receiver only supported for TM5!");
exit(-1); exit(-1);
......
...@@ -1211,9 +1211,7 @@ int main(int argc, char **argv) { ...@@ -1211,9 +1211,7 @@ int main(int argc, char **argv) {
} }
dump_ulsch(eNB,eNB->proc.frame_rx,subframe,0,round); dump_ulsch(eNB,eNB->proc.frame_rx,subframe,0,round);
round=5; round=5;
} }
if (n_frames==1) printf("round %d errors %u/%u\n",round,errs[round],trials); if (n_frames==1) printf("round %d errors %u/%u\n",round,errs[round],trials);
......
...@@ -440,7 +440,6 @@ pdcp_data_ind( ...@@ -440,7 +440,6 @@ pdcp_data_ind(
uint32_t rx_hfn_for_count; uint32_t rx_hfn_for_count;
int pdcp_sn_for_count; int pdcp_sn_for_count;
int security_ok; int security_ok;
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDCP_DATA_IND,VCD_FUNCTION_IN); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDCP_DATA_IND,VCD_FUNCTION_IN);
LOG_DUMPMSG(PDCP,DEBUG_PDCP,(char *)sdu_buffer_pP->data,sdu_buffer_sizeP, LOG_DUMPMSG(PDCP,DEBUG_PDCP,(char *)sdu_buffer_pP->data,sdu_buffer_sizeP,
"[MSG] PDCP UL %s PDU on rb_id %d\n", (srb_flagP)? "CONTROL" : "DATA", rb_idP); "[MSG] PDCP UL %s PDU on rb_id %d\n", (srb_flagP)? "CONTROL" : "DATA", rb_idP);
...@@ -567,6 +566,7 @@ pdcp_data_ind( ...@@ -567,6 +566,7 @@ pdcp_data_ind(
} }
#if 0 #if 0
/* Removed by Cedric */ /* Removed by Cedric */
if (pdcp_is_rx_seq_number_valid(sequence_number, pdcp_p, srb_flagP) == TRUE) { if (pdcp_is_rx_seq_number_valid(sequence_number, pdcp_p, srb_flagP) == TRUE) {
LOG_T(PDCP, "Incoming PDU has a sequence number (%d) in accordance with RX window\n", sequence_number); LOG_T(PDCP, "Incoming PDU has a sequence number (%d) in accordance with RX window\n", sequence_number);
...@@ -588,6 +588,7 @@ pdcp_data_ind( ...@@ -588,6 +588,7 @@ pdcp_data_ind(
free_mem_block(sdu_buffer_pP, __func__); free_mem_block(sdu_buffer_pP, __func__);
return FALSE; return FALSE;
} }
#endif #endif
// SRB1/2: control-plane data // SRB1/2: control-plane data
...@@ -698,26 +699,23 @@ pdcp_data_ind( ...@@ -698,26 +699,23 @@ pdcp_data_ind(
free_mem_block(sdu_buffer_pP, __func__); free_mem_block(sdu_buffer_pP, __func__);
/* TODO: indicate integrity verification failure to upper layer */ /* TODO: indicate integrity verification failure to upper layer */
return FALSE; return FALSE;
} else if (pdcp_p->next_pdcp_rx_sn - sequence_number > reordering_window) { } else if (pdcp_p->next_pdcp_rx_sn - sequence_number > reordering_window) {
pdcp_p->rx_hfn++; pdcp_p->rx_hfn++;
rx_hfn_for_count = pdcp_p->rx_hfn; rx_hfn_for_count = pdcp_p->rx_hfn;
pdcp_sn_for_count = sequence_number; pdcp_sn_for_count = sequence_number;
pdcp_p->next_pdcp_rx_sn = sequence_number + 1; pdcp_p->next_pdcp_rx_sn = sequence_number + 1;
} else if (sequence_number - pdcp_p->next_pdcp_rx_sn >= reordering_window) { } else if (sequence_number - pdcp_p->next_pdcp_rx_sn >= reordering_window) {
rx_hfn_for_count = pdcp_p->rx_hfn - 1; rx_hfn_for_count = pdcp_p->rx_hfn - 1;
pdcp_sn_for_count = sequence_number; pdcp_sn_for_count = sequence_number;
} else if (sequence_number >= pdcp_p->next_pdcp_rx_sn) { } else if (sequence_number >= pdcp_p->next_pdcp_rx_sn) {
rx_hfn_for_count = pdcp_p->rx_hfn; rx_hfn_for_count = pdcp_p->rx_hfn;
pdcp_sn_for_count = sequence_number; pdcp_sn_for_count = sequence_number;
pdcp_p->next_pdcp_rx_sn = sequence_number + 1; pdcp_p->next_pdcp_rx_sn = sequence_number + 1;
if (pdcp_p->next_pdcp_rx_sn > pdcp_p->maximum_pdcp_rx_sn) { if (pdcp_p->next_pdcp_rx_sn > pdcp_p->maximum_pdcp_rx_sn) {
pdcp_p->next_pdcp_rx_sn = 0; pdcp_p->next_pdcp_rx_sn = 0;
pdcp_p->rx_hfn++; pdcp_p->rx_hfn++;
} }
} else { /* sequence_number < pdcp_p->next_pdcp_rx_sn */ } else { /* sequence_number < pdcp_p->next_pdcp_rx_sn */
rx_hfn_for_count = pdcp_p->rx_hfn; rx_hfn_for_count = pdcp_p->rx_hfn;
pdcp_sn_for_count = sequence_number; pdcp_sn_for_count = sequence_number;
...@@ -770,20 +768,21 @@ pdcp_data_ind( ...@@ -770,20 +768,21 @@ pdcp_data_ind(
* TODO: we also have to deal with re-establishment PDU (control PDUs) * TODO: we also have to deal with re-establishment PDU (control PDUs)
* that contain no SDU. * that contain no SDU.
*/ */
pdcp_p->last_submitted_pdcp_rx_sn = sequence_number; pdcp_p->last_submitted_pdcp_rx_sn = sequence_number;
break; break;
} /* case RLC_MODE_AM */ } /* case RLC_MODE_AM */
case RLC_MODE_UM: case RLC_MODE_UM:
/* process as described in 36.323 5.1.2.1.3 */ /* process as described in 36.323 5.1.2.1.3 */
if (sequence_number < pdcp_p->next_pdcp_rx_sn) { if (sequence_number < pdcp_p->next_pdcp_rx_sn) {
pdcp_p->rx_hfn++; pdcp_p->rx_hfn++;
} }
rx_hfn_for_count = pdcp_p->rx_hfn; rx_hfn_for_count = pdcp_p->rx_hfn;
pdcp_sn_for_count = sequence_number; pdcp_sn_for_count = sequence_number;
pdcp_p->next_pdcp_rx_sn = sequence_number + 1; pdcp_p->next_pdcp_rx_sn = sequence_number + 1;
if (pdcp_p->next_pdcp_rx_sn > pdcp_p->maximum_pdcp_rx_sn) { if (pdcp_p->next_pdcp_rx_sn > pdcp_p->maximum_pdcp_rx_sn) {
pdcp_p->next_pdcp_rx_sn = 0; pdcp_p->next_pdcp_rx_sn = 0;
pdcp_p->rx_hfn++; pdcp_p->rx_hfn++;
...@@ -1145,7 +1144,7 @@ pdcp_run ( ...@@ -1145,7 +1144,7 @@ pdcp_run (
} while(msg_p != NULL); } while(msg_p != NULL);
// IP/NAS -> PDCP traffic : TX, read the pkt from the upper layer buffer // IP/NAS -> PDCP traffic : TX, read the pkt from the upper layer buffer
// if (LINK_ENB_PDCP_TO_GTPV1U && ctxt_pP->enb_flag == ENB_FLAG_NO) { // if (LINK_ENB_PDCP_TO_GTPV1U && ctxt_pP->enb_flag == ENB_FLAG_NO) {
if (!EPC_MODE_ENABLED || ctxt_pP->enb_flag == ENB_FLAG_NO ) { if (!EPC_MODE_ENABLED || ctxt_pP->enb_flag == ENB_FLAG_NO ) {
pdcp_fifo_read_input_sdus(ctxt_pP); pdcp_fifo_read_input_sdus(ctxt_pP);
} }
...@@ -2042,6 +2041,8 @@ uint64_t pdcp_module_init( uint64_t pdcp_optmask ) { ...@@ -2042,6 +2041,8 @@ uint64_t pdcp_module_init( uint64_t pdcp_optmask ) {
((PDCP_USE_NETLINK)?"usenetlink":"")); ((PDCP_USE_NETLINK)?"usenetlink":""));
if (PDCP_USE_NETLINK) { if (PDCP_USE_NETLINK) {
nas_getparams();
if(UE_NAS_USE_TUN) { if(UE_NAS_USE_TUN) {
netlink_init_tun("ue"); netlink_init_tun("ue");
LOG_I(PDCP, "UE pdcp will use tun interface\n"); LOG_I(PDCP, "UE pdcp will use tun interface\n");
......
...@@ -146,7 +146,6 @@ int pdcp_fifo_flush_sdus(const protocol_ctxt_t *const ctxt_pP) { ...@@ -146,7 +146,6 @@ int pdcp_fifo_flush_sdus(const protocol_ctxt_t *const ctxt_pP) {
int pdcp_fifo_read_input_sdus (const protocol_ctxt_t *const ctxt_pP) { int pdcp_fifo_read_input_sdus (const protocol_ctxt_t *const ctxt_pP) {
pdcp_data_req_header_t pdcp_read_header_g; pdcp_data_req_header_t pdcp_read_header_g;
if (UE_NAS_USE_TUN || ENB_NAS_USE_TUN) { if (UE_NAS_USE_TUN || ENB_NAS_USE_TUN) {
protocol_ctxt_t ctxt = *ctxt_pP; protocol_ctxt_t ctxt = *ctxt_pP;
hash_key_t key = HASHTABLE_NOT_A_KEY_VALUE; hash_key_t key = HASHTABLE_NOT_A_KEY_VALUE;
...@@ -163,7 +162,6 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t *const ctxt_pP) { ...@@ -163,7 +162,6 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t *const ctxt_pP) {
if (len<=0) continue; if (len<=0) continue;
if (UE_NAS_USE_TUN) { if (UE_NAS_USE_TUN) {
key = PDCP_COLL_KEY_DEFAULT_DRB_VALUE(ctxt.module_id, ctxt.rnti, ctxt.enb_flag); key = PDCP_COLL_KEY_DEFAULT_DRB_VALUE(ctxt.module_id, ctxt.rnti, ctxt.enb_flag);
h_rc = hashtable_get(pdcp_coll_p, key, (void **)&pdcp_p); h_rc = hashtable_get(pdcp_coll_p, key, (void **)&pdcp_p);
...@@ -174,11 +172,10 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t *const ctxt_pP) { ...@@ -174,11 +172,10 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t *const ctxt_pP) {
key = PDCP_COLL_KEY_VALUE(ctxt.module_id, ctxt.rnti, ctxt.enb_flag, rab_id, SRB_FLAG_YES); key = PDCP_COLL_KEY_VALUE(ctxt.module_id, ctxt.rnti, ctxt.enb_flag, rab_id, SRB_FLAG_YES);
h_rc = hashtable_get(pdcp_coll_p, key, (void **)&pdcp_p); h_rc = hashtable_get(pdcp_coll_p, key, (void **)&pdcp_p);
} }
LOG_D(PDCP, "PDCP_COLL_KEY_DEFAULT_DRB_VALUE(module_id=%d, rnti=%x, enb_flag=%d)\n", LOG_D(PDCP, "PDCP_COLL_KEY_DEFAULT_DRB_VALUE(module_id=%d, rnti=%x, enb_flag=%d)\n",
ctxt.module_id, ctxt.rnti, ctxt.enb_flag); ctxt.module_id, ctxt.rnti, ctxt.enb_flag);
if (h_rc == HASH_TABLE_OK) { if (h_rc == HASH_TABLE_OK) {
LOG_D(PDCP, "[FRAME %5u][UE][NETLINK][IP->PDCP] INST %d: Received socket with length %d on Rab %d \n", LOG_D(PDCP, "[FRAME %5u][UE][NETLINK][IP->PDCP] INST %d: Received socket with length %d on Rab %d \n",
ctxt.frame, ctxt.instance, len, rab_id); ctxt.frame, ctxt.instance, len, rab_id);
......
...@@ -584,14 +584,12 @@ void rlc_data_ind ( ...@@ -584,14 +584,12 @@ void rlc_data_ind (
const sdu_size_t sdu_sizeP, const sdu_size_t sdu_sizeP,
mem_block_t *sdu_pP) { mem_block_t *sdu_pP) {
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
LOG_D(RLC, PROTOCOL_CTXT_FMT"[%s %u] Display of rlc_data_ind: size %u\n", LOG_D(RLC, PROTOCOL_CTXT_FMT"[%s %u] Display of rlc_data_ind: size %u\n",
PROTOCOL_CTXT_ARGS(ctxt_pP), PROTOCOL_CTXT_ARGS(ctxt_pP),
(srb_flagP) ? "SRB" : "DRB", (srb_flagP) ? "SRB" : "DRB",
rb_idP, rb_idP,
sdu_sizeP); sdu_sizeP);
rlc_util_print_hex_octets(RLC, (unsigned char *)sdu_pP->data, sdu_sizeP); rlc_util_print_hex_octets(RLC, (unsigned char *)sdu_pP->data, sdu_sizeP);
#if T_TRACER #if T_TRACER
if (ctxt_pP->enb_flag) if (ctxt_pP->enb_flag)
......
...@@ -47,7 +47,8 @@ ...@@ -47,7 +47,8 @@
#define NAS_INET6_ADDRSTRLEN 46 #define NAS_INET6_ADDRSTRLEN 46
#define NAS_INET_ADDRSTRLEN 16 #define NAS_INET_ADDRSTRLEN 16
#define NAS_CX_MAX 128 // 32 //Identical to RRC constant #define NAS_CX_MAX 32 //128 //Identical to RRC constant: no you cannot
/* increase to 128 without risking stack problems: KEEP ATTENTION TO COMPILATION WARNINGS */
//#define NAS_CX_MULTICAST_ALLNODE 2 //#define NAS_CX_MULTICAST_ALLNODE 2
#define NAS_RETRY_LIMIT_DEFAULT 5 #define NAS_RETRY_LIMIT_DEFAULT 5
......
...@@ -64,7 +64,8 @@ ...@@ -64,7 +64,8 @@
// Max number of entry of a message list // Max number of entry of a message list
#define NAS_LIST_CX_MAX 32 #define NAS_LIST_CX_MAX 32
#define NAS_LIST_RB_MAX 32 #define NAS_LIST_RB_MAX 32
#define NAS_LIST_CLASS_MAX 32 #define NAS_LIST_CLASS_MAX 16 // 32 is too high!!:
/* risk of stack problems: KEEP ATTENTION TO COMPILATION WARNINGS */
typedef unsigned short nasMsgType_t; typedef unsigned short nasMsgType_t;
......
...@@ -801,7 +801,6 @@ rrc_ue_establish_drb( ...@@ -801,7 +801,6 @@ rrc_ue_establish_drb(
(void)ip_addr_offset4; (void)ip_addr_offset4;
LOG_I(RRC,"[UE %d] Frame %d: processing RRCConnectionReconfiguration: reconfiguring DRB %ld/LCID %d\n", LOG_I(RRC,"[UE %d] Frame %d: processing RRCConnectionReconfiguration: reconfiguring DRB %ld/LCID %d\n",
ue_mod_idP, frameP, DRB_config->drb_Identity, (int)*DRB_config->logicalChannelIdentity); ue_mod_idP, frameP, DRB_config->drb_Identity, (int)*DRB_config->logicalChannelIdentity);
/* /*
rrc_pdcp_config_req (ue_mod_idP+NB_eNB_INST, frameP, 0, CONFIG_ACTION_ADD, rrc_pdcp_config_req (ue_mod_idP+NB_eNB_INST, frameP, 0, CONFIG_ACTION_ADD,
(eNB_index * NB_RB_MAX) + *DRB_config->logicalChannelIdentity, UNDEF_SECURITY_MODE); (eNB_index * NB_RB_MAX) + *DRB_config->logicalChannelIdentity, UNDEF_SECURITY_MODE);
...@@ -810,8 +809,8 @@ rrc_ue_establish_drb( ...@@ -810,8 +809,8 @@ rrc_ue_establish_drb(
(eNB_index * NB_RB_MAX) + *DRB_config->logicalChannelIdentity, (eNB_index * NB_RB_MAX) + *DRB_config->logicalChannelIdentity,
RADIO_ACCESS_BEARER,Rlc_info_um); RADIO_ACCESS_BEARER,Rlc_info_um);
*/ */
// if(!EPC_MODE_ENABLED) { // if(!EPC_MODE_ENABLED) {
//# if !defined(OAI_NW_DRIVER_TYPE_ETHERNET) && !defined(EXMIMO) && !defined(OAI_USRP) && !defined(OAI_BLADERF) && !defined(ETHERNET) && !defined(LINK_ENB_PDCP_TO_GTPV1U) //# if !defined(OAI_NW_DRIVER_TYPE_ETHERNET) && !defined(EXMIMO) && !defined(OAI_USRP) && !defined(OAI_BLADERF) && !defined(ETHERNET) && !defined(LINK_ENB_PDCP_TO_GTPV1U)
ip_addr_offset3 = 0; ip_addr_offset3 = 0;
ip_addr_offset4 = 1; ip_addr_offset4 = 1;
LOG_I(OIP,"[UE %d] trying to bring up the OAI interface oip%d, IP 10.0.%d.%d\n", ue_mod_idP, ip_addr_offset3+ue_mod_idP, LOG_I(OIP,"[UE %d] trying to bring up the OAI interface oip%d, IP 10.0.%d.%d\n", ue_mod_idP, ip_addr_offset3+ue_mod_idP,
...@@ -836,9 +835,8 @@ rrc_ue_establish_drb( ...@@ -836,9 +835,8 @@ rrc_ue_establish_drb(
LOG_D(RRC,"[UE %d] State = Attached (eNB %d)\n",ue_mod_idP,eNB_index); LOG_D(RRC,"[UE %d] State = Attached (eNB %d)\n",ue_mod_idP,eNB_index);
} }
//# endif //# endif
// } // }
return(0); return(0);
} }
......
...@@ -6269,6 +6269,7 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete( ...@@ -6269,6 +6269,7 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete(
LOG_D(RRC, LOG_D(RRC,
"[eNB %d] Frame %d: Establish RLC UM Bidirectional, DRB %d Active\n", "[eNB %d] Frame %d: Establish RLC UM Bidirectional, DRB %d Active\n",
ctxt_pP->module_id, ctxt_pP->frame, (int)DRB_configList->list.array[i]->drb_Identity); ctxt_pP->module_id, ctxt_pP->frame, (int)DRB_configList->list.array[i]->drb_Identity);
if (!EPC_MODE_ENABLED && !ENB_NAS_USE_TUN) { if (!EPC_MODE_ENABLED && !ENB_NAS_USE_TUN) {
LOG_I(OIP, "[eNB %d] trying to bring up the OAI interface oai%d\n", LOG_I(OIP, "[eNB %d] trying to bring up the OAI interface oai%d\n",
ctxt_pP->module_id, ctxt_pP->module_id,
...@@ -6278,6 +6279,7 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete( ...@@ -6278,6 +6279,7 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete(
ctxt_pP->module_id + 1, // thrid octet ctxt_pP->module_id + 1, // thrid octet
ctxt_pP->module_id + 1, // fourth octet ctxt_pP->module_id + 1, // fourth octet
"oai"); "oai");
if (oip_ifup == 0) { // interface is up --> send a config the DRB if (oip_ifup == 0) { // interface is up --> send a config the DRB
module_id_t ue_module_id; module_id_t ue_module_id;
dest_ip_offset = 8; dest_ip_offset = 8;
......
...@@ -45,47 +45,55 @@ ...@@ -45,47 +45,55 @@
#include "nas_config.h" #include "nas_config.h"
#include "common/utils/LOG/log.h" #include "common/utils/LOG/log.h"
#include "targets/RT/USER/lte-softmodem.h" #include "targets/RT/USER/lte-softmodem.h"
#include "common/config/config_userapi.h"
//default values according to the examples, //default values according to the examples,
char *baseNetAddress = "10.0" ; char *baseNetAddress ;
char *netMask = "255.255.255.0" ; char *netMask ;
char *broadcastAddr = "10.0.255.255" ; char *broadcastAddr ;
#define NASHLP_NETPREFIX "<NAS network prefix, two first bytes of network addresses>\n"
#define NASHLP_NETMASK "<NAS network mask>\n"
#define NASHLP_BROADCASTADDR "<NAS network broadcast address>\n"
void nas_getparams(void) {
paramdef_t nasoptions[] = {
/*--------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
/* configuration parameters for netlink, includes network parameters when running in noS1 mode */
/* optname helpstr paramflags XXXptr defXXXval type numelt */
/*--------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
{"NetworkPrefix", NASHLP_NETPREFIX, 0, strptr:&baseNetAddress, defstrval:"10.0", TYPE_STRING, 0 },
{"NetworkMask", NASHLP_NETMASK, 0, strptr:&netMask, defstrval:"255.255.255.0", TYPE_STRING, 0 },
{"BroadcastAddr", NASHLP_BROADCASTADDR, 0, strptr:&broadcastAddr, defstrval:"10.0.255.255", TYPE_STRING, 0 },
};
config_get( nasoptions,sizeof(nasoptions)/sizeof(paramdef_t),"nas.noS1");
}
void setBaseNetAddress (char* baseAddr) void setBaseNetAddress (char *baseAddr) {
{
strcpy(baseNetAddress,baseAddr); strcpy(baseNetAddress,baseAddr);
} }
char* getBaseNetAddress (void) char *getBaseNetAddress (void) {
{
return baseNetAddress; return baseNetAddress;
} }
void setNetMask (char* baseAddr) void setNetMask (char *baseAddr) {
{
strcpy(netMask,baseAddr); strcpy(netMask,baseAddr);
} }
char* getNetMask (void) char *getNetMask (void) {
{
return netMask; return netMask;
} }
void setBroadcastAddress (char* baseAddr) void setBroadcastAddress (char *baseAddr) {
{
strcpy(broadcastAddr, baseAddr); strcpy(broadcastAddr, baseAddr);
} }
char* getBroadcastAddress (void) char *getBroadcastAddress (void) {
{
return broadcastAddr; return broadcastAddr;
} }
//Add Gateway to the interface //Add Gateway to the interface
int set_gateway(char *interfaceName, char *gateway) int set_gateway(char *interfaceName, char *gateway) {
{
int sock_fd; int sock_fd;
struct rtentry rt; struct rtentry rt;
struct sockaddr_in addr; struct sockaddr_in addr;
...@@ -96,20 +104,16 @@ int set_gateway(char *interfaceName, char *gateway) ...@@ -96,20 +104,16 @@ int set_gateway(char *interfaceName, char *gateway)
} }
memset (&rt, 0, sizeof (rt)); memset (&rt, 0, sizeof (rt));
addr.sin_family = AF_INET; addr.sin_family = AF_INET;
/*set Destination addr*/ /*set Destination addr*/
inet_aton("0.0.0.0",&addr.sin_addr); inet_aton("0.0.0.0",&addr.sin_addr);
memcpy(&rt.rt_dst, &addr, sizeof(struct sockaddr_in)); memcpy(&rt.rt_dst, &addr, sizeof(struct sockaddr_in));
/*set gateway addr*/ /*set gateway addr*/
inet_aton(gateway,&addr.sin_addr); inet_aton(gateway,&addr.sin_addr);
memcpy(&rt.rt_gateway, &addr, sizeof(struct sockaddr_in)); memcpy(&rt.rt_gateway, &addr, sizeof(struct sockaddr_in));
/*set genmask addr*/ /*set genmask addr*/
inet_aton("0.0.0.0",&addr.sin_addr); inet_aton("0.0.0.0",&addr.sin_addr);
memcpy(&rt.rt_genmask, &addr, sizeof(struct sockaddr_in)); memcpy(&rt.rt_genmask, &addr, sizeof(struct sockaddr_in));
rt.rt_dev = interfaceName; rt.rt_dev = interfaceName;
//rt.rt_flags = RTF_UP|RTF_GATEWAY|RTF_DEFAULT; //rt.rt_flags = RTF_UP|RTF_GATEWAY|RTF_DEFAULT;
/* SR: rt_flags on 16 bits but RTF_DEFAULT = 0x00010000 /* SR: rt_flags on 16 bits but RTF_DEFAULT = 0x00010000
...@@ -129,19 +133,16 @@ int set_gateway(char *interfaceName, char *gateway) ...@@ -129,19 +133,16 @@ int set_gateway(char *interfaceName, char *gateway)
LOG_I(OIP,"set_gateway OK!\n"); LOG_I(OIP,"set_gateway OK!\n");
return 0; return 0;
} }
} }
close(sock_fd); close(sock_fd);
LOG_D(OIP,"Set Gateway OK!\n"); LOG_D(OIP,"Set Gateway OK!\n");
return 0; return 0;
} }
// sets a genneric interface parameter // sets a genneric interface parameter
// (SIOCSIFADDR, SIOCSIFNETMASK, SIOCSIFBRDADDR, SIOCSIFFLAGS) // (SIOCSIFADDR, SIOCSIFNETMASK, SIOCSIFBRDADDR, SIOCSIFFLAGS)
int setInterfaceParameter(char *interfaceName, char *settingAddress, int operation) int setInterfaceParameter(char *interfaceName, char *settingAddress, int operation) {
{
int sock_fd; int sock_fd;
struct ifreq ifr; struct ifreq ifr;
struct sockaddr_in addr; struct sockaddr_in addr;
...@@ -154,10 +155,8 @@ int setInterfaceParameter(char *interfaceName, char *settingAddress, int operati ...@@ -154,10 +155,8 @@ int setInterfaceParameter(char *interfaceName, char *settingAddress, int operati
memset(&ifr, 0, sizeof(ifr)); memset(&ifr, 0, sizeof(ifr));
strncpy(ifr.ifr_name, interfaceName, sizeof(ifr.ifr_name)-1); strncpy(ifr.ifr_name, interfaceName, sizeof(ifr.ifr_name)-1);
memset(&addr, 0, sizeof(struct sockaddr_in)); memset(&addr, 0, sizeof(struct sockaddr_in));
addr.sin_family = AF_INET; addr.sin_family = AF_INET;
inet_aton(settingAddress,&addr.sin_addr); inet_aton(settingAddress,&addr.sin_addr);
memcpy(&ifr.ifr_ifru.ifru_addr,&addr,sizeof(struct sockaddr_in)); memcpy(&ifr.ifr_ifru.ifru_addr,&addr,sizeof(struct sockaddr_in));
...@@ -169,15 +168,13 @@ int setInterfaceParameter(char *interfaceName, char *settingAddress, int operati ...@@ -169,15 +168,13 @@ int setInterfaceParameter(char *interfaceName, char *settingAddress, int operati
} }
close(sock_fd); close(sock_fd);
// printf("Set OK!\n"); // printf("Set OK!\n");
return 0; return 0;
} }
// sets a genneric interface parameter // sets a genneric interface parameter
// (SIOCSIFADDR, SIOCSIFNETMASK, SIOCSIFBRDADDR, SIOCSIFFLAGS) // (SIOCSIFADDR, SIOCSIFNETMASK, SIOCSIFBRDADDR, SIOCSIFFLAGS)
int bringInterfaceUp(char *interfaceName, int up) int bringInterfaceUp(char *interfaceName, int up) {
{
int sock_fd; int sock_fd;
struct ifreq ifr; struct ifreq ifr;
...@@ -213,8 +210,7 @@ int bringInterfaceUp(char *interfaceName, int up) ...@@ -213,8 +210,7 @@ int bringInterfaceUp(char *interfaceName, int up)
return 0; return 0;
} }
// non blocking full configuration of the interface (address, net mask, and broadcast mask) // non blocking full configuration of the interface (address, net mask, and broadcast mask)
int NAS_config(char *interfaceName, char *ipAddress, char *networkMask, char *broadcastAddress) int NAS_config(char *interfaceName, char *ipAddress, char *networkMask, char *broadcastAddress) {
{
bringInterfaceUp(interfaceName, 0); bringInterfaceUp(interfaceName, 0);
// sets the machine address // sets the machine address
int returnValue= setInterfaceParameter(interfaceName, ipAddress,SIOCSIFADDR); int returnValue= setInterfaceParameter(interfaceName, ipAddress,SIOCSIFADDR);
...@@ -229,28 +225,21 @@ int NAS_config(char *interfaceName, char *ipAddress, char *networkMask, char *br ...@@ -229,28 +225,21 @@ int NAS_config(char *interfaceName, char *ipAddress, char *networkMask, char *br
// if(!returnValue) // if(!returnValue)
// returnValue=set_gateway(interfaceName, broadcastAddress); // returnValue=set_gateway(interfaceName, broadcastAddress);
bringInterfaceUp(interfaceName, 1); bringInterfaceUp(interfaceName, 1);
return returnValue; return returnValue;
} }
// non blocking full configuration of the interface (address, and the two lest octets of the address) // non blocking full configuration of the interface (address, and the two lest octets of the address)
int nas_config(int interface_id, int thirdOctet, int fourthOctet, char *ifname) int nas_config(int interface_id, int thirdOctet, int fourthOctet, char *ifname) {
{
//char buf[5]; //char buf[5];
char ipAddress[20]; char ipAddress[20];
char broadcastAddress[20]; char broadcastAddress[20];
char interfaceName[20]; char interfaceName[20];
int returnValue; int returnValue;
sprintf(ipAddress, "10.0.%d.%d", thirdOctet,fourthOctet); sprintf(ipAddress, "10.0.%d.%d", thirdOctet,fourthOctet);
sprintf(broadcastAddress, "10.0.%d.255", thirdOctet); sprintf(broadcastAddress, "10.0.%d.255", thirdOctet);
sprintf(interfaceName, "%s%s%d", (UE_NAS_USE_TUN || ENB_NAS_USE_TUN)?"oaitun_":ifname, sprintf(interfaceName, "%s%s%d", (UE_NAS_USE_TUN || ENB_NAS_USE_TUN)?"oaitun_":ifname,
UE_NAS_USE_TUN?"ue": (ENB_NAS_USE_TUN?"enb":""),interface_id); UE_NAS_USE_TUN?"ue": (ENB_NAS_USE_TUN?"enb":""),interface_id);
bringInterfaceUp(interfaceName, 0); bringInterfaceUp(interfaceName, 0);
// sets the machine address // sets the machine address
returnValue= setInterfaceParameter(interfaceName, ipAddress,SIOCSIFADDR); returnValue= setInterfaceParameter(interfaceName, ipAddress,SIOCSIFADDR);
...@@ -264,18 +253,13 @@ int nas_config(int interface_id, int thirdOctet, int fourthOctet, char *ifname) ...@@ -264,18 +253,13 @@ int nas_config(int interface_id, int thirdOctet, int fourthOctet, char *ifname)
returnValue= setInterfaceParameter(interfaceName, broadcastAddress,SIOCSIFBRDADDR); returnValue= setInterfaceParameter(interfaceName, broadcastAddress,SIOCSIFBRDADDR);
bringInterfaceUp(interfaceName, 1); bringInterfaceUp(interfaceName, 1);
return returnValue; return returnValue;
} }
// Blocking full configuration of the interface (address, net mask, and broadcast mask) // Blocking full configuration of the interface (address, net mask, and broadcast mask)
int blocking_NAS_config(char *interfaceName, char *ipAddress, char *networkMask, char *broadcastAddress) int blocking_NAS_config(char *interfaceName, char *ipAddress, char *networkMask, char *broadcastAddress) {
{
char command[200]; char command[200];
command[0]='\0'; command[0]='\0';
strcat(command, "ifconfig "); strcat(command, "ifconfig ");
strncat(command, interfaceName, sizeof(command) - strlen(command) - 1); strncat(command, interfaceName, sizeof(command) - strlen(command) - 1);
strncat(command, " ", sizeof(command) - strlen(command) - 1); strncat(command, " ", sizeof(command) - strlen(command) - 1);
...@@ -284,16 +268,13 @@ int blocking_NAS_config(char *interfaceName, char *ipAddress, char *networkMask, ...@@ -284,16 +268,13 @@ int blocking_NAS_config(char *interfaceName, char *ipAddress, char *networkMask,
strncat(command, networkMask, sizeof(command) - strlen(command) - 1); strncat(command, networkMask, sizeof(command) - strlen(command) - 1);
strncat(command, " broadcast ", sizeof(command) - strlen(command) - 1); strncat(command, " broadcast ", sizeof(command) - strlen(command) - 1);
strncat(command, broadcastAddress, sizeof(command) - strlen(command) - 1); strncat(command, broadcastAddress, sizeof(command) - strlen(command) - 1);
// ifconfig nasmesh0 10.0.1.1 networkMask 255.255.255.0 broadcast 10.0.1.255 // ifconfig nasmesh0 10.0.1.1 networkMask 255.255.255.0 broadcast 10.0.1.255
int i = system (command); int i = system (command);
return i; return i;
} }
// program help // program help
void helpOptions(char **argv) void helpOptions(char **argv) {
{
printf("Help for %s\n", argv[0]); printf("Help for %s\n", argv[0]);
printf(" -i <interfaceName>\n"); printf(" -i <interfaceName>\n");
printf(" -a <IP address>\n"); printf(" -a <IP address>\n");
...@@ -305,13 +286,11 @@ void helpOptions(char **argv) ...@@ -305,13 +286,11 @@ void helpOptions(char **argv)
printf(" IP Address: 10.0.1.1\n"); printf(" IP Address: 10.0.1.1\n");
printf(" Net mask: 255.255.255.0\n"); printf(" Net mask: 255.255.255.0\n");
printf(" Broadcast address: [Beginning of the IP address].255\n"); printf(" Broadcast address: [Beginning of the IP address].255\n");
exit(1); exit(1);
} }
// creates the broadcast address if it wasn't set before // creates the broadcast address if it wasn't set before
void createBroadcast(char *broadcastAddress) void createBroadcast(char *broadcastAddress) {
{
int pos=strlen(broadcastAddress)-1; int pos=strlen(broadcastAddress)-1;
while(broadcastAddress[pos]!='.') while(broadcastAddress[pos]!='.')
...@@ -333,7 +312,6 @@ int main(int argc,char **argv) ...@@ -333,7 +312,6 @@ int main(int argc,char **argv)
char ipAddress[100]; char ipAddress[100];
char networkMask[100]; char networkMask[100];
char broadcastAddress[100]; char broadcastAddress[100];
strcpy(interfaceName, "oai0"); strcpy(interfaceName, "oai0");
strcpy(ipAddress, "10.0.1.1"); strcpy(ipAddress, "10.0.1.1");
strcpy(networkMask, "255.255.255.0"); strcpy(networkMask, "255.255.255.0");
...@@ -385,7 +363,6 @@ int main(int argc,char **argv) ...@@ -385,7 +363,6 @@ int main(int argc,char **argv)
//test //test
// setBaseNetAddress("11.11"); // setBaseNetAddress("11.11");
// nas_config(interfaceName, 33, 44); // nas_config(interfaceName, 33, 44);
} }
#endif #endif
...@@ -31,6 +31,13 @@ ...@@ -31,6 +31,13 @@
#include <netinet/in.h> #include <netinet/in.h>
/*! \fn void void nas_getparams(void)(void)
* \brief This function get parameters used to configure network interface when running in noS1 mode
* \note
* @ingroup ?????
*/
void nas_getparams(void);
/*! \fn int NAS_config(char*, char*, char*, char*) /*! \fn int NAS_config(char*, char*, char*, char*)
* \brief This function initializes the nasmesh interface * \brief This function initializes the nasmesh interface
* \param[in] interfaceName, the name of the interface, e.g. nasmesh0 or nasmesh1 * \param[in] interfaceName, the name of the interface, e.g. nasmesh0 or nasmesh1
...@@ -98,7 +105,7 @@ int set_gateway(char *interfaceName, char *gateway); ...@@ -98,7 +105,7 @@ int set_gateway(char *interfaceName, char *gateway);
* \note * \note
* @ingroup ????? * @ingroup ?????
*/ */
void setBaseNetAddress(char* baseAddr); void setBaseNetAddress(char *baseAddr);
/*! \fn char* getBaseNetAddress() /*! \fn char* getBaseNetAddress()
* \brief This function returns the basic network address used * \brief This function returns the basic network address used
...@@ -106,7 +113,7 @@ void setBaseNetAddress(char* baseAddr); ...@@ -106,7 +113,7 @@ void setBaseNetAddress(char* baseAddr);
* \note * \note
* @ingroup ????? * @ingroup ?????
*/ */
char* getBaseNetAddress(void); char *getBaseNetAddress(void);
/*! \fn void setNetMask(char*) /*! \fn void setNetMask(char*)
* \brief This function sets the new default network mask used * \brief This function sets the new default network mask used
...@@ -114,7 +121,7 @@ char* getBaseNetAddress(void); ...@@ -114,7 +121,7 @@ char* getBaseNetAddress(void);
* \note * \note
* @ingroup ????? * @ingroup ?????
*/ */
void setNetMask(char* baseAddr); void setNetMask(char *baseAddr);
/*! \fn char* getNetMask() /*! \fn char* getNetMask()
* \brief This function returns the network mask address in use * \brief This function returns the network mask address in use
...@@ -122,7 +129,7 @@ void setNetMask(char* baseAddr); ...@@ -122,7 +129,7 @@ void setNetMask(char* baseAddr);
* \note * \note
* @ingroup ????? * @ingroup ?????
*/ */
char* getNetMask(void); char *getNetMask(void);
/*! \fn coid setBroadcastAddress(char*) /*! \fn coid setBroadcastAddress(char*)
* \brief This function sets the new broadcast address used * \brief This function sets the new broadcast address used
...@@ -130,7 +137,7 @@ char* getNetMask(void); ...@@ -130,7 +137,7 @@ char* getNetMask(void);
* \note * \note
* @ingroup ????? * @ingroup ?????
*/ */
void setBroadcastAddress(char* baseAddr); void setBroadcastAddress(char *baseAddr);
/*! \fn char* getBroadcastAddress() /*! \fn char* getBroadcastAddress()
* \brief This function returns the broadcast address in use * \brief This function returns the broadcast address in use
...@@ -138,7 +145,7 @@ void setBroadcastAddress(char* baseAddr); ...@@ -138,7 +145,7 @@ void setBroadcastAddress(char* baseAddr);
* \note * \note
* @ingroup ????? * @ingroup ?????
*/ */
char* getBroadcastAddress(void); char *getBroadcastAddress(void);
int bringInterfaceUp(char *interfaceName, int up); int bringInterfaceUp(char *interfaceName, int up);
......
...@@ -40,68 +40,72 @@ ...@@ -40,68 +40,72 @@
#include "targets/RT/USER/lte-softmodem.h" #include "targets/RT/USER/lte-softmodem.h"
int set_device(openair0_device *device) { int set_device(openair0_device *device) {
switch (device->type) { switch (device->type) {
case EXMIMO_DEV: case EXMIMO_DEV:
printf("[%s] has loaded EXPRESS MIMO device.\n",((device->host_type == RAU_HOST) ? "RAU": "RRU")); printf("[%s] has loaded EXPRESS MIMO device.\n",((device->host_type == RAU_HOST) ? "RAU": "RRU"));
break; break;
case USRP_B200_DEV: case USRP_B200_DEV:
printf("[%s] has loaded USRP B200 device.\n",((device->host_type == RAU_HOST) ? "RAU": "RRU")); printf("[%s] has loaded USRP B200 device.\n",((device->host_type == RAU_HOST) ? "RAU": "RRU"));
break; break;
case USRP_X300_DEV: case USRP_X300_DEV:
printf("[%s] has loaded USRP X300 device.\n",((device->host_type == RAU_HOST) ? "RAU": "RRU")); printf("[%s] has loaded USRP X300 device.\n",((device->host_type == RAU_HOST) ? "RAU": "RRU"));
break; break;
case BLADERF_DEV: case BLADERF_DEV:
printf("[%s] has loaded BLADERF device.\n",((device->host_type == RAU_HOST) ? "RAU": "RRU")); printf("[%s] has loaded BLADERF device.\n",((device->host_type == RAU_HOST) ? "RAU": "RRU"));
break; break;
case LMSSDR_DEV: case LMSSDR_DEV:
printf("[%s] has loaded LMSSDR device.\n",((device->host_type == RAU_HOST) ? "RAU": "RRU")); printf("[%s] has loaded LMSSDR device.\n",((device->host_type == RAU_HOST) ? "RAU": "RRU"));
break; break;
case IRIS_DEV: case IRIS_DEV:
printf("[%s] has loaded Iris device.\n",((device->host_type == RAU_HOST) ? "RAU": "RRU")); printf("[%s] has loaded Iris device.\n",((device->host_type == RAU_HOST) ? "RAU": "RRU"));
break; break;
case NONE_DEV: case NONE_DEV:
printf("[%s] has not loaded a HW device.\n",((device->host_type == RAU_HOST) ? "RAU": "RRU")); printf("[%s] has not loaded a HW device.\n",((device->host_type == RAU_HOST) ? "RAU": "RRU"));
break; break;
default: default:
printf("[%s] invalid HW device.\n",((device->host_type == RAU_HOST) ? "RAU": "RRU")); printf("[%s] invalid HW device.\n",((device->host_type == RAU_HOST) ? "RAU": "RRU"));
return -1; return -1;
} }
return 0; return 0;
} }
int set_transport(openair0_device *device) { int set_transport(openair0_device *device) {
switch (device->transp_type) { switch (device->transp_type) {
case ETHERNET_TP: case ETHERNET_TP:
printf("[%s] has loaded ETHERNET trasport protocol.\n",((device->host_type == RAU_HOST) ? "RAU": "RRU")); printf("[%s] has loaded ETHERNET trasport protocol.\n",((device->host_type == RAU_HOST) ? "RAU": "RRU"));
return 0; return 0;
break; break;
case NONE_TP: case NONE_TP:
printf("[%s] has not loaded a transport protocol.\n",((device->host_type == RAU_HOST) ? "RAU": "RRU")); printf("[%s] has not loaded a transport protocol.\n",((device->host_type == RAU_HOST) ? "RAU": "RRU"));
return 0; return 0;
break; break;
default: default:
printf("[%s] invalid transport protocol.\n",((device->host_type == RAU_HOST) ? "RAU": "RRU")); printf("[%s] invalid transport protocol.\n",((device->host_type == RAU_HOST) ? "RAU": "RRU"));
return -1; return -1;
break; break;
} }
} }
typedef int(*devfunc_t)(openair0_device *, openair0_config_t *, eth_params_t *); typedef int(*devfunc_t)(openair0_device *, openair0_config_t *, eth_params_t *);
/* look for the interface library and load it */ /* look for the interface library and load it */
int load_lib(openair0_device *device, openair0_config_t *openair0_cfg, eth_params_t * cfg, uint8_t flag) { int load_lib(openair0_device *device, openair0_config_t *openair0_cfg, eth_params_t *cfg, uint8_t flag) {
loader_shlibfunc_t shlib_fdesc[1]; loader_shlibfunc_t shlib_fdesc[1];
int ret=0; int ret=0;
char *libname; char *libname;
if ( IS_SOFTMODEM_BASICSIM ) { if ( IS_SOFTMODEM_BASICSIM ) {
libname=OAI_BASICSIM_LIBNAME; libname=OAI_BASICSIM_LIBNAME;
shlib_fdesc[0].fname="device_init"; shlib_fdesc[0].fname="device_init";
} else } else if ( IS_SOFTMODEM_RFSIM ) {
if ( IS_SOFTMODEM_RFSIM ) {
libname=OAI_RFSIM_LIBNAME; libname=OAI_RFSIM_LIBNAME;
shlib_fdesc[0].fname="device_init"; shlib_fdesc[0].fname="device_init";
} else if (flag == RAU_LOCAL_RADIO_HEAD) { } else if (flag == RAU_LOCAL_RADIO_HEAD) {
...@@ -111,19 +115,21 @@ int load_lib(openair0_device *device, openair0_config_t *openair0_cfg, eth_param ...@@ -111,19 +115,21 @@ int load_lib(openair0_device *device, openair0_config_t *openair0_cfg, eth_param
libname=OAI_TP_LIBNAME; libname=OAI_TP_LIBNAME;
shlib_fdesc[0].fname="transport_init"; shlib_fdesc[0].fname="transport_init";
} }
ret=load_module_shlib(libname,shlib_fdesc,1,NULL); ret=load_module_shlib(libname,shlib_fdesc,1,NULL);
if (ret < 0) { if (ret < 0) {
fprintf(stderr,"Library %s couldn't be loaded\n",libname); fprintf(stderr,"Library %s couldn't be loaded\n",libname);
} else { } else {
ret=((devfunc_t)shlib_fdesc[0].fptr)(device,openair0_cfg,cfg); ret=((devfunc_t)shlib_fdesc[0].fptr)(device,openair0_cfg,cfg);
} }
return ret; return ret;
} }
int openair0_device_load(openair0_device *device, openair0_config_t *openair0_cfg) { int openair0_device_load(openair0_device *device, openair0_config_t *openair0_cfg) {
int rc=0; int rc=0;
rc=load_lib(device, openair0_cfg, NULL,RAU_LOCAL_RADIO_HEAD ); rc=load_lib(device, openair0_cfg, NULL,RAU_LOCAL_RADIO_HEAD );
...@@ -133,20 +139,22 @@ int openair0_device_load(openair0_device *device, openair0_config_t *openair0_cf ...@@ -133,20 +139,22 @@ int openair0_device_load(openair0_device *device, openair0_config_t *openair0_cf
return -1; return -1;
} }
} }
return rc; return rc;
} }
int openair0_transport_load(openair0_device *device, openair0_config_t *openair0_cfg, eth_params_t * eth_params) { int openair0_transport_load(openair0_device *device, openair0_config_t *openair0_cfg, eth_params_t *eth_params) {
int rc; int rc;
rc=load_lib(device, openair0_cfg, eth_params, RAU_REMOTE_RADIO_HEAD); rc=load_lib(device, openair0_cfg, eth_params, RAU_REMOTE_RADIO_HEAD);
if ( rc >= 0) { if ( rc >= 0) {
if ( set_transport(device) < 0) { if ( set_transport(device) < 0) {
fprintf(stderr, "%s %d:Unsupported transport protocol\n",__FILE__, __LINE__); fprintf(stderr, "%s %d:Unsupported transport protocol\n",__FILE__, __LINE__);
return -1; return -1;
} }
} }
return rc;
return rc;
} }
......
...@@ -48,7 +48,7 @@ ...@@ -48,7 +48,7 @@
#define RAU_REMOTE_RADIO_HEAD 1 #define RAU_REMOTE_RADIO_HEAD 1
#ifndef MAX_CARDS #ifndef MAX_CARDS
#define MAX_CARDS 8 #define MAX_CARDS 8
#endif #endif
typedef int64_t openair0_timestamp; typedef int64_t openair0_timestamp;
...@@ -129,7 +129,7 @@ typedef enum { ...@@ -129,7 +129,7 @@ typedef enum {
RRU_HOST, RRU_HOST,
MAX_HOST_TYPE MAX_HOST_TYPE
}host_type_t; } host_type_t;
/*! \brief RF Gain clibration */ /*! \brief RF Gain clibration */
...@@ -175,9 +175,9 @@ typedef struct { ...@@ -175,9 +175,9 @@ typedef struct {
//! number of TX channels (=TX antennas) //! number of TX channels (=TX antennas)
int tx_num_channels; int tx_num_channels;
//! \brief RX base addresses for mmapped_dma //! \brief RX base addresses for mmapped_dma
int32_t* rxbase[4]; int32_t *rxbase[4];
//! \brief TX base addresses for mmapped_dma //! \brief TX base addresses for mmapped_dma
int32_t* txbase[4]; int32_t *txbase[4];
//! \brief Center frequency in Hz for RX. //! \brief Center frequency in Hz for RX.
//! index: [0..rx_num_channels[ //! index: [0..rx_num_channels[
double rx_freq[4]; double rx_freq[4];
...@@ -364,26 +364,26 @@ struct openair0_device_t { ...@@ -364,26 +364,26 @@ struct openair0_device_t {
* \param exmimo_dump_config dump EXMIMO configuration * \param exmimo_dump_config dump EXMIMO configuration
* \returns 0 in success * \returns 0 in success
*/ */
int (*trx_set_freq_func)(openair0_device* device, openair0_config_t *openair0_cfg,int exmimo_dump_config); int (*trx_set_freq_func)(openair0_device *device, openair0_config_t *openair0_cfg,int exmimo_dump_config);
/*! \brief Set gains /*! \brief Set gains
* \param device the hardware to use * \param device the hardware to use
* \param openair0_cfg RF frontend parameters set by application * \param openair0_cfg RF frontend parameters set by application
* \returns 0 in success * \returns 0 in success
*/ */
int (*trx_set_gains_func)(openair0_device* device, openair0_config_t *openair0_cfg); int (*trx_set_gains_func)(openair0_device *device, openair0_config_t *openair0_cfg);
/*! \brief RRU Configuration callback /*! \brief RRU Configuration callback
* \param idx RU index * \param idx RU index
* \param arg pointer to capabilities or configuration * \param arg pointer to capabilities or configuration
*/ */
void (*configure_rru)(int idx, void* arg); void (*configure_rru)(int idx, void *arg);
}; };
/* type of device init function, implemented in shared lib */ /* type of device init function, implemented in shared lib */
typedef int(*oai_device_initfunc_t)(openair0_device *device, openair0_config_t *openair0_cfg); typedef int(*oai_device_initfunc_t)(openair0_device *device, openair0_config_t *openair0_cfg);
/* type of transport init function, implemented in shared lib */ /* type of transport init function, implemented in shared lib */
typedef int(*oai_transport_initfunc_t)(openair0_device *device, openair0_config_t *openair0_cfg, eth_params_t * eth_params); typedef int(*oai_transport_initfunc_t)(openair0_device *device, openair0_config_t *openair0_cfg, eth_params_t *eth_params);
#ifdef __cplusplus #ifdef __cplusplus
extern "C" extern "C"
...@@ -391,23 +391,23 @@ extern "C" ...@@ -391,23 +391,23 @@ extern "C"
#endif #endif
/*! \brief Initialize openair RF target. It returns 0 if OK */ /*! \brief Initialize openair RF target. It returns 0 if OK */
int openair0_device_load(openair0_device *device, openair0_config_t *openair0_cfg); int openair0_device_load(openair0_device *device, openair0_config_t *openair0_cfg);
/*! \brief Initialize transport protocol . It returns 0 if OK */ /*! \brief Initialize transport protocol . It returns 0 if OK */
int openair0_transport_load(openair0_device *device, openair0_config_t *openair0_cfg, eth_params_t * eth_params); int openair0_transport_load(openair0_device *device, openair0_config_t *openair0_cfg, eth_params_t *eth_params);
/*! \brief Get current timestamp of USRP /*! \brief Get current timestamp of USRP
* \param device the hardware to use * \param device the hardware to use
*/ */
openair0_timestamp get_usrp_time(openair0_device *device); openair0_timestamp get_usrp_time(openair0_device *device);
/*! \brief Set RX frequencies /*! \brief Set RX frequencies
* \param device the hardware to use * \param device the hardware to use
* \param openair0_cfg RF frontend parameters set by application * \param openair0_cfg RF frontend parameters set by application
* \returns 0 in success * \returns 0 in success
*/ */
int openair0_set_rx_frequencies(openair0_device* device, openair0_config_t *openair0_cfg); int openair0_set_rx_frequencies(openair0_device *device, openair0_config_t *openair0_cfg);
/*@}*/ /*@}*/
......
...@@ -138,7 +138,7 @@ int eth_socket_init_raw(openair0_device *device) { ...@@ -138,7 +138,7 @@ int eth_socket_init_raw(openair0_device *device) {
return 0; return 0;
} }
/* 09/03/2019: fix obvious inconsistencies, but this code hasn't be tested for sure */
int trx_eth_write_raw(openair0_device *device, openair0_timestamp timestamp, void **buff, int nsamps,int cc, int flags) { int trx_eth_write_raw(openair0_device *device, openair0_timestamp timestamp, void **buff, int nsamps,int cc, int flags) {
int bytes_sent=0; int bytes_sent=0;
...@@ -148,7 +148,12 @@ int trx_eth_write_raw(openair0_device *device, openair0_timestamp timestamp, voi ...@@ -148,7 +148,12 @@ int trx_eth_write_raw(openair0_device *device, openair0_timestamp timestamp, voi
//sendto_flag|=flags; //sendto_flag|=flags;
eth->tx_nsamps=nsamps; eth->tx_nsamps=nsamps;
int pktsize;
if (eth->compression == ALAW_COMPRESS) {
pktsize = RAW_PACKET_SIZE_BYTES_ALAW(nsamps);
} else {
pktsize = RAW_PACKET_SIZE_BYTES(nsamps);
}
for (i=0;i<cc;i++) { for (i=0;i<cc;i++) {
/* buff[i] points to the position in tx buffer where the payload to be sent is /* buff[i] points to the position in tx buffer where the payload to be sent is
buff2 points to the position in tx buffer where the packet header will be placed */ buff2 points to the position in tx buffer where the packet header will be placed */
...@@ -164,40 +169,23 @@ int trx_eth_write_raw(openair0_device *device, openair0_timestamp timestamp, voi ...@@ -164,40 +169,23 @@ int trx_eth_write_raw(openair0_device *device, openair0_timestamp timestamp, voi
*(int16_t *)(buff2 + MAC_HEADER_SIZE_BYTES + sizeof(int16_t))=1+(i<<1); *(int16_t *)(buff2 + MAC_HEADER_SIZE_BYTES + sizeof(int16_t))=1+(i<<1);
*(openair0_timestamp *)(buff2 + MAC_HEADER_SIZE_BYTES + sizeof(int32_t)) = timestamp; *(openair0_timestamp *)(buff2 + MAC_HEADER_SIZE_BYTES + sizeof(int32_t)) = timestamp;
int sent_byte;
/*printf("[RRU]write mod_%d %d , len %d, buff %p \n", /*printf("[RRU]write mod_%d %d , len %d, buff %p \n",
Mod_id,eth->sockfd[Mod_id],RAW_PACKET_SIZE_BYTES(nsamps), buff2);*/ Mod_id,eth->sockfd[Mod_id],RAW_PACKET_SIZE_BYTES(nsamps), buff2);*/
while(bytes_sent < sent_byte) { while(bytes_sent < pktsize) {
#if DEBUG
printf("------- TX ------: buff2 current position=%d remaining_bytes=%d bytes_sent=%d \n",
(void *)(buff2+bytes_sent),
sent_byte - bytes_sent,
bytes_sent);
#endif
/* Send packet */ /* Send packet */
bytes_sent += send(eth->sockfdd, bytes_sent += send(eth->sockfdd,
buff2, buff2,
sent_byte, pktsize,
sendto_flag); sendto_flag);
if ( bytes_sent == -1) { if ( bytes_sent == -1) {
eth->num_tx_errors++; eth->num_tx_errors++;
perror("ETHERNET WRITE: "); perror("ETHERNET WRITE: ");
exit(-1); exit(-1);
} else { } else {
#if DEBUG
printf("------- TX ------: nu=%x an_id=%d ts%d bytes_sent=%d\n",
*(uint8_t *)(buff2+ETH_ALEN),
*(int16_t *)(buff2 + MAC_HEADER_SIZE_BYTES + sizeof(int16_t)),
*(openair0_timestamp *)(buff2 + MAC_HEADER_SIZE_BYTES + sizeof(int32_t)),
bytes_sent);
dump_packet((device->host_type == RAU_HOST)? "RAU":"RRU", buff2, sent_byte, TX_FLAG);
#endif
eth->tx_actual_nsamps=bytes_sent>>2; eth->tx_actual_nsamps=bytes_sent>>2;
eth->tx_count++; eth->tx_count++;
} }
......
...@@ -1386,7 +1386,6 @@ int setup_RU_buffers(RU_t *ru) { ...@@ -1386,7 +1386,6 @@ int setup_RU_buffers(RU_t *ru) {
* TODO: find a proper cleaner solution * TODO: find a proper cleaner solution
*/ */
ru->N_TA_offset = 0; ru->N_TA_offset = 0;
} }
if (ru->openair0_cfg.mmapped_dma == 1) { if (ru->openair0_cfg.mmapped_dma == 1) {
......
...@@ -99,9 +99,11 @@ void get_common_options(void) { ...@@ -99,9 +99,11 @@ void get_common_options(void) {
if (basicsim) { if (basicsim) {
set_softmodem_optmask(SOFTMODEM_BASICSIM_BIT); set_softmodem_optmask(SOFTMODEM_BASICSIM_BIT);
} }
#if BASIC_SIMULATOR #if BASIC_SIMULATOR
set_softmodem_optmask(SOFTMODEM_BASICSIM_BIT); set_softmodem_optmask(SOFTMODEM_BASICSIM_BIT);
#endif #endif
if(parallel_config != NULL) set_parallel_conf(parallel_config); if(parallel_config != NULL) set_parallel_conf(parallel_config);
if(worker_config != NULL) set_worker_conf(worker_config); if(worker_config != NULL) set_worker_conf(worker_config);
......
...@@ -655,8 +655,10 @@ int main( int argc, char **argv ) { ...@@ -655,8 +655,10 @@ int main( int argc, char **argv ) {
fill_modeled_runtime_table(runtime_phy_rx,runtime_phy_tx); fill_modeled_runtime_table(runtime_phy_rx,runtime_phy_tx);
uint32_t pdcp_initmask = ( IS_SOFTMODEM_NOS1 )? ( PDCP_USE_NETLINK_BIT | LINK_ENB_PDCP_TO_IP_DRIVER_BIT) : LINK_ENB_PDCP_TO_GTPV1U_BIT; uint32_t pdcp_initmask = ( IS_SOFTMODEM_NOS1 )? ( PDCP_USE_NETLINK_BIT | LINK_ENB_PDCP_TO_IP_DRIVER_BIT) : LINK_ENB_PDCP_TO_GTPV1U_BIT;
# #
if ( IS_SOFTMODEM_NOS1) if ( IS_SOFTMODEM_NOS1)
pdcp_initmask = pdcp_initmask | ENB_NAS_USE_TUN_BIT | SOFTMODEM_NOKRNMOD_BIT ; pdcp_initmask = pdcp_initmask | ENB_NAS_USE_TUN_BIT | SOFTMODEM_NOKRNMOD_BIT ;
pdcp_module_init(pdcp_initmask); pdcp_module_init(pdcp_initmask);
if (RC.nb_inst > 0) { if (RC.nb_inst > 0) {
......
This diff is collapsed.
...@@ -760,22 +760,22 @@ int main( int argc, char **argv ) { ...@@ -760,22 +760,22 @@ int main( int argc, char **argv ) {
} }
MSC_INIT(MSC_E_UTRAN, THREAD_MAX+TASK_MAX); MSC_INIT(MSC_E_UTRAN, THREAD_MAX+TASK_MAX);
init_opt(); init_opt();
uint32_t pdcp_initmask = (!IS_SOFTMODEM_NOS1 )? LINK_ENB_PDCP_TO_GTPV1U_BIT : (LINK_ENB_PDCP_TO_GTPV1U_BIT | PDCP_USE_NETLINK_BIT | LINK_ENB_PDCP_TO_IP_DRIVER_BIT); uint32_t pdcp_initmask = (!IS_SOFTMODEM_NOS1 )? LINK_ENB_PDCP_TO_GTPV1U_BIT : (LINK_ENB_PDCP_TO_GTPV1U_BIT | PDCP_USE_NETLINK_BIT | LINK_ENB_PDCP_TO_IP_DRIVER_BIT);
if ( IS_SOFTMODEM_BASICSIM || IS_SOFTMODEM_RFSIM || (nfapi_mode == 3) ) { if ( IS_SOFTMODEM_BASICSIM || IS_SOFTMODEM_RFSIM || (nfapi_mode == 3) ) {
pdcp_initmask = pdcp_initmask | UE_NAS_USE_TUN_BIT; pdcp_initmask = pdcp_initmask | UE_NAS_USE_TUN_BIT;
} }
if ( IS_SOFTMODEM_NOKRNMOD) if ( IS_SOFTMODEM_NOKRNMOD)
pdcp_initmask = pdcp_initmask | UE_NAS_USE_TUN_BIT; pdcp_initmask = pdcp_initmask | UE_NAS_USE_TUN_BIT;
pdcp_module_init( pdcp_initmask ); pdcp_module_init( pdcp_initmask );
//TTN for D2D //TTN for D2D
printf ("RRC control socket\n"); printf ("RRC control socket\n");
rrc_control_socket_init(); rrc_control_socket_init();
printf ("PDCP PC5S socket\n"); printf ("PDCP PC5S socket\n");
pdcp_pc5_socket_init(); pdcp_pc5_socket_init();
// to make a graceful exit when ctrl-c is pressed // to make a graceful exit when ctrl-c is pressed
signal(SIGSEGV, signal_handler); signal(SIGSEGV, signal_handler);
signal(SIGINT, signal_handler); signal(SIGINT, signal_handler);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment