diff --git a/openair1/PHY/LTE_TRANSPORT/if4_tools.c b/openair1/PHY/LTE_TRANSPORT/if4_tools.c
index a712ae0674d3d2150aa024cdc7aebe53cd64f272..10b6ee66b72543399b2be0568023b6a6422cd886 100644
--- a/openair1/PHY/LTE_TRANSPORT/if4_tools.c
+++ b/openair1/PHY/LTE_TRANSPORT/if4_tools.c
@@ -67,9 +67,9 @@ void send_IF4(PHY_VARS_eNB *eNB, int frame, int subframe, uint16_t packet_type,
     slotoffsetF = (subframe)*(fp->ofdm_symbol_size)*((fp->Ncp==1) ? 12 : 14) + 1;
     blockoffsetF = slotoffsetF + fp->ofdm_symbol_size - db_halflength; 
 
-    tx_buffer = malloc(MAC_HEADER_SIZE_BYTES + sizeof_IF4_dl_header_t + db_fulllength*sizeof(int16_t));
-    IF4_dl_header_t *dl_header = (IF4_dl_header_t *)(tx_buffer + MAC_HEADER_SIZE_BYTES);
-    data_block = (int16_t*)(tx_buffer + MAC_HEADER_SIZE_BYTES + sizeof_IF4_dl_header_t);
+    tx_buffer = malloc(MAC_HEADER_SIZE_BYTES + sizeof_IF4_header_t + db_fulllength*sizeof(int16_t));
+    IF4_header_t *dl_header = (IF4_header_t *)(tx_buffer + MAC_HEADER_SIZE_BYTES);
+    data_block = (int16_t*)(tx_buffer + MAC_HEADER_SIZE_BYTES + sizeof_IF4_header_t);
 
     gen_IF4_dl_header(dl_header, frame, subframe);
 		    
@@ -106,9 +106,9 @@ void send_IF4(PHY_VARS_eNB *eNB, int frame, int subframe, uint16_t packet_type,
     slotoffsetF = (subframe)*(fp->ofdm_symbol_size)*((fp->Ncp==1) ? 12 : 14) + 1;
     blockoffsetF = slotoffsetF + fp->ofdm_symbol_size - db_halflength; 
 
-    tx_buffer = malloc(MAC_HEADER_SIZE_BYTES + sizeof_IF4_ul_header_t + db_fulllength*sizeof(int16_t));
-    IF4_ul_header_t *ul_header = (IF4_ul_header_t *)(tx_buffer + MAC_HEADER_SIZE_BYTES);
-    data_block = (int16_t*)(tx_buffer + MAC_HEADER_SIZE_BYTES + sizeof_IF4_ul_header_t);
+    tx_buffer = malloc(MAC_HEADER_SIZE_BYTES + sizeof_IF4_header_t + db_fulllength*sizeof(int16_t));
+    IF4_header_t *ul_header = (IF4_header_t *)(tx_buffer + MAC_HEADER_SIZE_BYTES);
+    data_block = (int16_t*)(tx_buffer + MAC_HEADER_SIZE_BYTES + sizeof_IF4_header_t);
 
     gen_IF4_ul_header(ul_header, frame, subframe);
 
@@ -143,9 +143,9 @@ void send_IF4(PHY_VARS_eNB *eNB, int frame, int subframe, uint16_t packet_type,
     // FIX: hard coded prach samples length
     db_fulllength = 839*2;
 
-    tx_buffer = malloc(MAC_HEADER_SIZE_BYTES + sizeof_IF4_prach_header_t + db_fulllength*sizeof(int16_t));
-    IF4_prach_header_t *prach_header = (IF4_prach_header_t *)(tx_buffer + MAC_HEADER_SIZE_BYTES);
-    data_block = (int16_t*)(tx_buffer + MAC_HEADER_SIZE_BYTES + sizeof_IF4_prach_header_t);
+    tx_buffer = malloc(MAC_HEADER_SIZE_BYTES + sizeof_IF4_header_t + db_fulllength*sizeof(int16_t));
+    IF4_header_t *prach_header = (IF4_header_t *)(tx_buffer + MAC_HEADER_SIZE_BYTES);
+    data_block = (int16_t*)(tx_buffer + MAC_HEADER_SIZE_BYTES + sizeof_IF4_header_t);
 
     gen_IF4_prach_header(prach_header, frame, subframe);
 		    
@@ -208,10 +208,9 @@ void recv_IF4(PHY_VARS_eNB *eNB, int frame, int subframe, uint16_t *packet_type,
   }
   
   *packet_type = (uint16_t) *ret_type;
+  data_block = (int16_t*) (rx_buffer+sizeof_IF4_header_t);
   
-  if (*packet_type == IF4_PDLFFT) {
-    data_block = (int16_t*) (rx_buffer+sizeof_IF4_dl_header_t);
-          
+  if (*packet_type == IF4_PDLFFT) {          
     // Calculate from received packet
     slotoffsetF = (subframe)*(fp->ofdm_symbol_size)*((fp->Ncp==1) ? 12 : 14) + 1;
     blockoffsetF = slotoffsetF + fp->ofdm_symbol_size - db_halflength; 
@@ -226,11 +225,9 @@ void recv_IF4(PHY_VARS_eNB *eNB, int frame, int subframe, uint16_t *packet_type,
     }
 		
     // Find and return symbol_number		 		
-    *symbol_number = ((((IF4_dl_header_t*)(rx_buffer))->frame_status)>>26)&0x000f;         
+    *symbol_number = ((((IF4_header_t*)(rx_buffer))->frame_status)>>26)&0x000f;         
         
-  } else if (*packet_type == IF4_PULFFT) {
-    data_block = (int16_t*) (rx_buffer+sizeof_IF4_ul_header_t);
-          
+  } else if (*packet_type == IF4_PULFFT) {         
     // Calculate from received packet
     slotoffsetF = (subframe)*(fp->ofdm_symbol_size)*((fp->Ncp==1) ? 12 : 14) + 1;
     blockoffsetF = slotoffsetF + fp->ofdm_symbol_size - db_halflength; 
@@ -245,11 +242,9 @@ void recv_IF4(PHY_VARS_eNB *eNB, int frame, int subframe, uint16_t *packet_type,
     }
 		
     // Find and return symbol_number		 		
-    *symbol_number = ((((IF4_ul_header_t*)(rx_buffer))->frame_status)>>26)&0x000f;         
-    
-  } else if (*packet_type == IF4_PRACH) {
-    data_block = (int16_t*) (rx_buffer+sizeof_IF4_prach_header_t);
+    *symbol_number = ((((IF4_header_t*)(rx_buffer))->frame_status)>>26)&0x000f;         
     
+  } else if (*packet_type == IF4_PRACH) {    
     // FIX: hard coded prach samples length
     db_fulllength = 839*2;
 		    
@@ -265,7 +260,7 @@ void recv_IF4(PHY_VARS_eNB *eNB, int frame, int subframe, uint16_t *packet_type,
 }
 
 
-void gen_IF4_dl_header(IF4_dl_header_t *dl_packet, int frame, int subframe) {      
+void gen_IF4_dl_header(IF4_header_t *dl_packet, int frame, int subframe) {      
   // Set Type and Sub-Type
   dl_packet->type = IF4_PACKET_TYPE; 
   dl_packet->sub_type = IF4_PDLFFT;
@@ -281,7 +276,7 @@ void gen_IF4_dl_header(IF4_dl_header_t *dl_packet, int frame, int subframe) {
 }
 
 
-void gen_IF4_ul_header(IF4_ul_header_t *ul_packet, int frame, int subframe) {  
+void gen_IF4_ul_header(IF4_header_t *ul_packet, int frame, int subframe) {  
   // Set Type and Sub-Type
   ul_packet->type = IF4_PACKET_TYPE; 
   ul_packet->sub_type = IF4_PULFFT;
@@ -294,20 +289,10 @@ void gen_IF4_ul_header(IF4_ul_header_t *ul_packet, int frame, int subframe) {
   ul_packet->frame_status |= (frame&0xffff)<<6;
   ul_packet->frame_status |= (subframe&0x000f)<<22;
     
-  // Set antenna specific gain *** set other antenna gain ***
-  ul_packet->gain0 = 0;
-  ul_packet->gain1 = 0;
-  ul_packet->gain2 = 0;
-  ul_packet->gain3 = 0;
-  ul_packet->gain4 = 0;
-  ul_packet->gain5 = 0;
-  ul_packet->gain6 = 0;
-  ul_packet->gain7 = 0;
-      
 }
 
 
-void gen_IF4_prach_header(IF4_prach_header_t *prach_packet, int frame, int subframe) {
+void gen_IF4_prach_header(IF4_header_t *prach_packet, int frame, int subframe) {
   // Set Type and Sub-Type
   prach_packet->type = IF4_PACKET_TYPE; 
   prach_packet->sub_type = IF4_PRACH;
@@ -316,8 +301,8 @@ void gen_IF4_prach_header(IF4_prach_header_t *prach_packet, int frame, int subfr
   prach_packet->rsvd = 0;
   
   // Set LTE Prach configuration
-  prach_packet->prach_conf = 0;
-  prach_packet->prach_conf |= (frame&0xffff)<<6;
-  prach_packet->prach_conf |= (subframe&0x000f)<<22;
+  prach_packet->frame_status = 0;
+  prach_packet->frame_status |= (frame&0xffff)<<6;
+  prach_packet->frame_status |= (subframe&0x000f)<<22;
         
 } 
diff --git a/openair1/PHY/LTE_TRANSPORT/if4_tools.h b/openair1/PHY/LTE_TRANSPORT/if4_tools.h
index 5d7b5e0f79a5d8e223ef59d19a0d9a9b41d1b0a8..f06072b73e66be9feceddfda86359cb0928366ed 100644
--- a/openair1/PHY/LTE_TRANSPORT/if4_tools.h
+++ b/openair1/PHY/LTE_TRANSPORT/if4_tools.h
@@ -47,55 +47,7 @@
 #define IF4_PDLFFT 0x0020
 #define IF4_PRACH 0x0021
 
-/* 
-
-Bit-field reference
-
-/// IF4 Frame Status (32 bits)
-struct IF4_frame_status {
-  /// Antenna Numbers
-  uint32_t ant_num:3;
-  /// Antenna Start
-  uint32_t ant_start:3;
-  /// Radio Frame Number
-  uint32_t rf_num:16;
-  /// Sub-frame Number
-  uint32_t sf_num:4;
-  /// Symbol Number
-  uint32_t sym_num:4;
-  /// Reserved
-  uint32_t rsvd:2;    
-};
-
-/// IF4 Antenna Gain (16 bits)
-struct IF4_gain {
-  /// Reserved 
-  uint16_t rsvd:10;
-  /// FFT Exponent Output
-  uint16_t exponent:6;  
-};  
-
-/// IF4 LTE PRACH Configuration (32 bits)
-struct IF4_lte_prach_conf {
-  /// Reserved
-  uint32_t rsvd:3;
-  /// Antenna Indication
-  uint32_t ant:3;
-  /// Radio Frame Number
-  uint32_t rf_num:16;
-  /// Sub-frame Number
-  uint32_t sf_num:4;
-  /// FFT Exponent Output
-  uint32_t exponent:6;  
-};
-
-*/
-
-struct IF4_dl_header {
-  /// Destination Address
-  
-  /// Source Address
-  
+struct IF4_header {  
   /// Type
   uint16_t type; 
   /// Sub-Type
@@ -104,80 +56,17 @@ struct IF4_dl_header {
   uint32_t rsvd;
   /// Frame Status
   uint32_t frame_status;
-  /// Data Blocks
-
-  /// Frame Check Sequence
-
-};
-
-typedef struct IF4_dl_header IF4_dl_header_t;
-#define sizeof_IF4_dl_header_t 12 
-
-struct IF4_ul_header {
-  /// Destination Address
-  
-  /// Source Address
-  
-  /// Type
-  uint16_t type;
-  /// Sub-Type
-  uint16_t sub_type;
-  /// Reserved
-  uint32_t rsvd;
-  /// Frame Status
-  uint32_t frame_status;
-  /// Gain 0
-  uint16_t gain0;
-  /// Gain 1
-  uint16_t gain1;
-  /// Gain 2
-  uint16_t gain2;
-  /// Gain 3
-  uint16_t gain3;
-  /// Gain 4
-  uint16_t gain4;
-  /// Gain 5
-  uint16_t gain5;
-  /// Gain 6
-  uint16_t gain6;
-  /// Gain 7
-  uint16_t gain7;
-  /// Data Blocks
-
-  /// Frame Check Sequence
-
-};
-
-typedef struct IF4_ul_header IF4_ul_header_t;
-#define sizeof_IF4_ul_header_t 28 
-
-struct IF4_prach_header {
-  /// Destination Address 
-  
-  /// Source Address
-  
-  /// Type
-  uint16_t type;
-  /// Sub-Type
-  uint16_t sub_type;
-  /// Reserved
-  uint32_t rsvd;
-  /// LTE Prach Configuration
-  uint32_t prach_conf;
-  /// Prach Data Block (one antenna)
-
-  /// Frame Check Sequence
 
 };
 
-typedef struct IF4_prach_header IF4_prach_header_t;
-#define sizeof_IF4_prach_header_t 12
+typedef struct IF4_header IF4_header_t;
+#define sizeof_IF4_header_t 12 
 
-void gen_IF4_dl_header(IF4_dl_header_t*, int, int);
+void gen_IF4_dl_header(IF4_header_t*, int, int);
 
-void gen_IF4_ul_header(IF4_ul_header_t*, int, int);
+void gen_IF4_ul_header(IF4_header_t*, int, int);
 
-void gen_IF4_prach_header(IF4_prach_header_t*, int, int);
+void gen_IF4_prach_header(IF4_header_t*, int, int);
 
 void send_IF4(PHY_VARS_eNB*, int, int, uint16_t, int);
 
diff --git a/openair1/SCHED/phy_procedures_lte_eNb.c b/openair1/SCHED/phy_procedures_lte_eNb.c
index 46364e82befb242048c09bf3f700fe0a371b5934..ef7b70d179bd3adbe9231a59a76a7d24d7396fa5 100755
--- a/openair1/SCHED/phy_procedures_lte_eNb.c
+++ b/openair1/SCHED/phy_procedures_lte_eNb.c
@@ -2522,7 +2522,7 @@ void phy_procedures_eNB_common_RX(PHY_VARS_eNB *eNB,const uint8_t abstraction_fl
   int prach_rx;
 
   uint16_t packet_type;
-  uint32_t symbol_number;
+  uint32_t symbol_number=0;
   uint32_t symbol_mask, symbol_mask_full;
   
   struct timespec time_req, time_rem;  
@@ -2649,21 +2649,22 @@ void phy_procedures_eNB_common_RX(PHY_VARS_eNB *eNB,const uint8_t abstraction_fl
     
     } else if (eNB->node_function == NGFI_RCC_IF4) {
       /// **** recv_IF4 of rxdataF from RRU **** ///
-      /// **** recv_IF4 of prachF from RRU **** ///
+      /// **** recv_IF4 of rxsigF from RRU **** ///
       // get frame/subframe information from IF4 interface
       // timed loop (200 us)
-
+       
+      symbol_number = 0;
       symbol_mask = 0;
       symbol_mask_full = (1<<fp->symbols_per_tti)-1;
       prach_rx = 0;
 
       // Block from loop while testing
-      symbol_mask = symbol_mask_full;
-      nanosleep(&time_req, &time_rem);
+      //symbol_mask = symbol_mask_full;
+      //nanosleep(&time_req, &time_rem);
          
       do {
         VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF4, 1 );   
-        //recv_IF4(eNB, frame, subframe, &packet_type, &symbol_number);
+        recv_IF4(eNB, proc->frame_rx, proc->subframe_rx, &packet_type, &symbol_number);
         VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF4, 0 );   
 
         if (packet_type == IF4_PULFFT) {
diff --git a/targets/ARCH/ETHERNET/USERSPACE/LIB/eth_raw.c b/targets/ARCH/ETHERNET/USERSPACE/LIB/eth_raw.c
index 0cb4fdfabbd490e675545a07cb01055fd91c866e..f6e7db4c6e7844477ab2a83b127f195fbf7ae5b7 100644
--- a/targets/ARCH/ETHERNET/USERSPACE/LIB/eth_raw.c
+++ b/targets/ARCH/ETHERNET/USERSPACE/LIB/eth_raw.c
@@ -309,11 +309,11 @@ int trx_eth_read_raw_IF4(openair0_device *device, openair0_timestamp *timestamp,
   eth_state_t *eth = (eth_state_t*)device->priv;
   int Mod_id = device->Mod_id;
   
-  ssize_t packet_size = MAC_HEADER_SIZE_BYTES + sizeof_IF4_dl_header_t;    
+  ssize_t packet_size = MAC_HEADER_SIZE_BYTES + sizeof_IF4_header_t;    
   void *test_buffer = (void*)malloc(packet_size);
   
   void *rx_buffer=NULL;
-  IF4_dl_header_t *test_header = (IF4_dl_header_t*)(test_buffer + MAC_HEADER_SIZE_BYTES);
+  IF4_header_t *test_header = (IF4_header_t*)(test_buffer + MAC_HEADER_SIZE_BYTES);
   
   bytes_received = recv(eth->sockfd[Mod_id],
                         test_buffer,
@@ -324,7 +324,7 @@ int trx_eth_read_raw_IF4(openair0_device *device, openair0_timestamp *timestamp,
 	  perror("ETHERNET READ: ");
 	  exit(-1);	
   }
-  
+ 
   *timestamp = test_header->sub_type; 
   
   if (test_header->sub_type == IF4_PDLFFT) {
@@ -337,11 +337,12 @@ int trx_eth_read_raw_IF4(openair0_device *device, openair0_timestamp *timestamp,
         
   } else {
     buff[0] = (void*)malloc(RAW_IF4_PRACH_SIZE_BYTES - MAC_HEADER_SIZE_BYTES);
-    packet_size = RAW_IF4_PRACH_SIZE_BYTES - packet_size;                 
+    packet_size = RAW_IF4_PRACH_SIZE_BYTES - packet_size;
+    printf(" Came for prach\n");                 
   }
 
-  memcpy(buff[0], test_header, sizeof_IF4_dl_header_t);
-  rx_buffer = (void*)(buff[0]+sizeof_IF4_dl_header_t);
+  memcpy(buff[0], test_header, sizeof_IF4_header_t);
+  rx_buffer = (void*)(buff[0]+sizeof_IF4_header_t);
   
   bytes_received = 0;
   
diff --git a/targets/ARCH/ETHERNET/USERSPACE/LIB/if_defs.h b/targets/ARCH/ETHERNET/USERSPACE/LIB/if_defs.h
index 12878badd1bc93b9cb20063d84b0b7f1f5548d09..030bfda147e3b2fc6e990d9f1b25ae9a1e371837 100644
--- a/targets/ARCH/ETHERNET/USERSPACE/LIB/if_defs.h
+++ b/targets/ARCH/ETHERNET/USERSPACE/LIB/if_defs.h
@@ -58,6 +58,6 @@
 #define DATA_BLOCK_SIZE_BYTES(scaled_nblocks) (sizeof(int16_t)*scaled_nblocks)
 #define PRACH_BLOCK_SIZE_BYTES (sizeof(int16_t)*839*2)  // FIX hard coded prach size (uncompressed)
  
-#define RAW_IF4_PDLFFT_SIZE_BYTES(nblocks) (MAC_HEADER_SIZE_BYTES + sizeof_IF4_dl_header_t + DATA_BLOCK_SIZE_BYTES(nblocks))  
-#define RAW_IF4_PULFFT_SIZE_BYTES(nblocks) (MAC_HEADER_SIZE_BYTES + sizeof_IF4_ul_header_t + DATA_BLOCK_SIZE_BYTES(nblocks))  
-#define RAW_IF4_PRACH_SIZE_BYTES (MAC_HEADER_SIZE_BYTES + sizeof_IF4_prach_header_t + PRACH_BLOCK_SIZE_BYTES)
+#define RAW_IF4_PDLFFT_SIZE_BYTES(nblocks) (MAC_HEADER_SIZE_BYTES + sizeof_IF4_header_t + DATA_BLOCK_SIZE_BYTES(nblocks))  
+#define RAW_IF4_PULFFT_SIZE_BYTES(nblocks) (MAC_HEADER_SIZE_BYTES + sizeof_IF4_header_t + DATA_BLOCK_SIZE_BYTES(nblocks))  
+#define RAW_IF4_PRACH_SIZE_BYTES (MAC_HEADER_SIZE_BYTES + sizeof_IF4_header_t + PRACH_BLOCK_SIZE_BYTES)