Index: uspace/drv/nic/rtl8169/driver.c
===================================================================
--- uspace/drv/nic/rtl8169/driver.c	(revision 278fede82e02748de58e9e0c879922c1084b7257)
+++ uspace/drv/nic/rtl8169/driver.c	(revision 96e368a61482194923fef78ac804b0906e9668b9)
@@ -79,5 +79,5 @@
 static inline int rtl8169_register_int_handler(nic_t *nic_data);
 static inline void rtl8169_get_hwaddr(rtl8169_t *rtl8169, nic_address_t *addr);
-static inline void rtl8169_set_hwaddr(rtl8169_t *rtl8169, nic_address_t *addr);
+static inline void rtl8169_set_hwaddr(rtl8169_t *rtl8169, const nic_address_t *addr);
 
 static void rtl8169_reset(rtl8169_t *rtl8169);
@@ -469,4 +469,14 @@
 static int rtl8169_set_addr(ddf_fun_t *fun, const nic_address_t *addr)
 {
+	nic_t *nic_data = nic_get_from_ddf_fun(fun);
+	rtl8169_t *rtl8169 = nic_get_specific(nic_data);
+	int rc;
+
+	rtl8169_set_hwaddr(rtl8169, addr);
+
+	rc = nic_report_address(nic_data, addr);
+	if (rc != EOK)
+		return rc;
+
 	return EOK;
 }
@@ -476,4 +486,5 @@
 
 	str_cpy(info->vendor_name, NIC_VENDOR_MAX_LENGTH, "Realtek");
+	str_cpy(info->model_name, NIC_MODEL_MAX_LENGTH, "RTL8169");
 
 	return EOK;
@@ -967,5 +978,5 @@
 }
 
-static inline void rtl8169_set_hwaddr(rtl8169_t *rtl8169, nic_address_t *addr)
+static inline void rtl8169_set_hwaddr(rtl8169_t *rtl8169, const nic_address_t *addr)
 {
 	int i;
@@ -975,5 +986,5 @@
 
 	for (i = 0; i < 6; i++)
-		addr->address[i] = pio_read_8(rtl8169->regs + MAC0 + i);
+		pio_write_8(rtl8169->regs + MAC0 + i, addr->address[i]);
 }
 
