diff --git a/targets/ARCH/ETHERNET/USERSPACE/LIB/eth_raw.c b/targets/ARCH/ETHERNET/USERSPACE/LIB/eth_raw.c
index 91b2b7f03eef250e9f9d8078c951bb804e470541..64085c051b66c632f9525f2e4820ef82f587a69c 100644
--- a/targets/ARCH/ETHERNET/USERSPACE/LIB/eth_raw.c
+++ b/targets/ARCH/ETHERNET/USERSPACE/LIB/eth_raw.c
@@ -70,12 +70,12 @@ int eth_socket_init_raw(openair0_device *device) {
   int sock_dom=0;
   int sock_type=0;
   int sock_proto=0;  
-
-  if (device->host_type == RRH_HOST ) {
+ 
+  if (device->host_type == RRH_HOST ) {  /* RRH doesn't know remote MAC(will be retrieved from first packet send from BBU) and remote port(don't care) */
     local_mac = device->openair0_cfg.my_addr; 
     local_port = device->openair0_cfg.my_port;    
-    remote_mac = "0:0:0:0:0:0";
-    remote_port = device->openair0_cfg.my_port;    
+    remote_mac = malloc(ETH_ALEN);
+    remote_port = 0;    
     printf("[%s] local MAC addr %s remote MAC addr %s\n","RRH", local_mac,remote_mac);    
   } else {
     local_mac = device->openair0_cfg.my_addr;
diff --git a/targets/ARCH/ETHERNET/USERSPACE/LIB/ethernet_lib.c b/targets/ARCH/ETHERNET/USERSPACE/LIB/ethernet_lib.c
index 634018f6e174c568421afa292285be5c19b841a8..9a87858e34180dae82a8cce2c877c2b4f1a87e66 100644
--- a/targets/ARCH/ETHERNET/USERSPACE/LIB/ethernet_lib.c
+++ b/targets/ARCH/ETHERNET/USERSPACE/LIB/ethernet_lib.c
@@ -174,39 +174,38 @@ int ethernet_tune(openair0_device *device, unsigned int option, int value) {
   int ret=0;
   int i=0;
   
-  
-  /***************** get working interface name ***************************/
-  /* /\* convert ascii ip address from config file to network binary format *\/ */
-  /* inet_aton(device->openair0_cfg.my_addr, &ia); */
-  /* /\* look for the interface used, we have its ip address *\/ */
-  /* /\* get info on all our network interfaces *\/ */
-  /* ids = if_nameindex(); */
-  /* /\* loop on these network interfaces *\/ */
-  /* for (i=0; ids[i].if_index != 0 ; i++) { */
-  /*   /\* skip unamed interfaces *\/ */
-  /*   if (ids[i].if_name == NULL) */
-  /*     continue; */
-  /*   /\* get ip address of current network interface *\/  */
-  /*   strcpy(ifr.ifr_name,ids[i].if_name);     */
-  /*   if (-1 == ioctl(eth->sockfd[Mod_id], SIOCGIFADDR, &ifr)) { */
-  /*     printf( " Interface %i: %s isn't configured (no ip addr), skipped\n",ids[i].if_index, ifr.ifr_name) ; */
-  /*     continue;           */
-  /*   } */
-  /*   /\* test if this is the interface to be used *\/ */
-  /*   if ( ((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr.s_addr !=  ia.s_addr) */
-  /*     continue; */
-  /*   /\* store interface name *\/ */
-  /*   if_name = ids[i].if_name;     */
-  /*   break; */
-    
-  /* } */
-  /* if_freenameindex(ids);        */
-  /* if( if_name == NULL) { */
-  /*   printf("Unable to find interface name for %s\n",device->openair0_cfg.my_addr); */
-  /*   return -1; */
-  /*   } */
-  /* eth->if_name[Mod_id]=if_name; */
-
+  if (1==0) {
+    /***************** get working interface name ***************************/
+    /* convert ascii ip address from config file to network binary format */
+    inet_aton(device->openair0_cfg.my_addr, &ia); */
+      /* look for the interface used, we have its ip address get info on all our network interfaces*/ 
+      ids = if_nameindex(); 
+      /* loop on these network interfaces */
+      for (i=0; ids[i].if_index != 0 ; i++) {
+	/* skip unamed interfaces  */
+	if (ids[i].if_name == NULL)
+	  continue; 
+	/* get ip address of current network interface */
+	strcpy(ifr.ifr_name,ids[i].if_name);     
+	if (-1 == ioctl(eth->sockfd[Mod_id], SIOCGIFADDR, &ifr)) { 
+	  printf( " Interface %i: %s isn't configured (no ip addr), skipped\n",ids[i].if_index, ifr.ifr_name);
+	  continue;           
+	} 
+	/* test if this is the interface to be used */
+	if ( ((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr.s_addr !=  ia.s_addr) 
+	  continue; 
+    /* store interface name */
+	if_name = ids[i].if_name;
+     break;
+     
+      } 
+      if_freenameindex(ids); 
+      if( if_name == NULL) { 
+	printf("Unable to find interface name for %s\n",device->openair0_cfg.my_addr); 
+	return -1; 
+      } 
+      eth->if_name[Mod_id]=if_name; 
+  }
   /****************** socket level options ************************/  
   switch(option) {
   case SND_BUF_SIZE:  /* transmit socket buffer size */   
@@ -342,9 +341,9 @@ int transport_init(openair0_device *device, openair0_config_t *openair0_cfg, cha
   memset(eth, 0, sizeof(eth_state_t));
   int card = 0;
 
-  /*hoedcoded!!!!*/
+  /*hardcoded!!!!*/
   eth->flags = ETH_RAW_MODE;
-  eth->buffer_size = (unsigned int)openair0_cfg[card].samples_per_packet*sizeof(int32_t); // buffer size = 4096 for sample_len of 1024
+  eth->buffer_size = (unsigned int)openair0_cfg[card].samples_per_packet*sizeof(int32_t); 
   
   printf("[ETHERNET]: Initializing openair0_device for %s ...\n", ((device->host_type == BBU_HOST) ? "BBU": "RRH"));
   device->Mod_id           = num_devices_eth++;
@@ -366,16 +365,13 @@ int transport_init(openair0_device *device, openair0_config_t *openair0_cfg, cha
     device->trx_write_func   = trx_eth_write_udp;
     device->trx_read_func    = trx_eth_read_udp;     
   }
-  /*hoedcoded!!!!*/
+  /*hardcoded!!!!*/
   eth->if_name[device->Mod_id] = "eth0";
   device->priv = eth; 	
   openair0_cfg->iq_txshift = 5;
   openair0_cfg->iq_rxrescale = 15;
   memcpy((void*)&device->openair0_cfg,(void*)openair0_cfg,sizeof(openair0_config_t));
-
-  /*iqoffset*/
-  /*keep conf*/
-  /*usrsignal */ 
+ 
   return 0;
 }