Index: uspace/drv/nic/e1k/e1k.c
===================================================================
--- uspace/drv/nic/e1k/e1k.c	(revision 869d936cb8b287d8cabb51f763c83d6a439adba8)
+++ uspace/drv/nic/e1k/e1k.c	(revision e5424e9c9ff4b025227b44586f4b079542090d74)
@@ -1756,5 +1756,12 @@
 	e1000_enable_interrupts(e1000);
 	
-	irc_enable_interrupt(e1000->irq);
+	int rc = irc_enable_interrupt(e1000->irq);
+	if (rc != EOK) {
+		e1000_disable_interrupts(e1000);
+		fibril_mutex_unlock(&e1000->ctrl_lock);
+		fibril_mutex_unlock(&e1000->tx_lock);
+		fibril_mutex_unlock(&e1000->rx_lock);
+		return rc;
+	}
 	
 	e1000_clear_rx_ring(e1000);
@@ -2375,9 +2382,4 @@
 	printf("%s: HelenOS E1000 network adapter driver\n", NAME);
 	
-	if (irc_init() != EOK) {
-		printf("%s: Failed connecting IRC service\n", NAME);
-		return 1;
-	}
-	
 	if (nic_driver_init(NAME) != EOK)
 		return 1;
Index: uspace/drv/nic/ne2k/ne2k.c
===================================================================
--- uspace/drv/nic/ne2k/ne2k.c	(revision 869d936cb8b287d8cabb51f763c83d6a439adba8)
+++ uspace/drv/nic/ne2k/ne2k.c	(revision e5424e9c9ff4b025227b44586f4b079542090d74)
@@ -257,9 +257,12 @@
 	if (!ne2k->up) {
 		int rc = ne2k_up(ne2k);
+		if (rc != EOK)
+			return rc;
+
+		rc = irc_enable_interrupt(ne2k->irq);
 		if (rc != EOK) {
+			ne2k_down(ne2k);
 			return rc;
 		}
-
-		irc_enable_interrupt(ne2k->irq);
 	}
 	return EOK;
@@ -270,5 +273,5 @@
 	ne2k_t *ne2k = (ne2k_t *) nic_get_specific(nic_data);
 
-	irc_disable_interrupt(ne2k->irq);
+	(void) irc_disable_interrupt(ne2k->irq);
 	ne2k->receive_configuration = RCR_AB | RCR_AM;
 	ne2k_down(ne2k);
@@ -440,9 +443,4 @@
 	printf("%s: HelenOS NE 2000 network adapter driver\n", NAME);
 	
-	if (irc_init() != EOK) {
-		printf("%s: Failed connecting IRC service\n", NAME);
-		return 1;
-	}
-	
 	nic_driver_init(NAME);
 	nic_driver_implement(&ne2k_driver_ops, &ne2k_dev_ops, &ne2k_nic_iface);
Index: uspace/drv/nic/rtl8139/driver.c
===================================================================
--- uspace/drv/nic/rtl8139/driver.c	(revision 869d936cb8b287d8cabb51f763c83d6a439adba8)
+++ uspace/drv/nic/rtl8139/driver.c	(revision e5424e9c9ff4b025227b44586f4b079542090d74)
@@ -956,5 +956,10 @@
 	rtl8139->int_mask = RTL_DEFAULT_INTERRUPTS;
 	rtl8139_hw_int_enable(rtl8139);
-	irc_enable_interrupt(rtl8139->irq);
+
+	int rc = irc_enable_interrupt(rtl8139->irq);
+	if (rc != EOK) {
+		rtl8139_on_stopped(nic_data);
+		return rc;
+	}
 
 	ddf_msg(LVL_DEBUG, "Device activated, interrupt %d registered", rtl8139->irq);
@@ -2170,9 +2175,4 @@
 	printf("%s: HelenOS RTL8139 network adapter driver\n", NAME);
 
-	if (irc_init() != EOK) {
-		printf("%s: Failed connecting IRC service\n", NAME);
-		return 1;
-	}
-
 	int rc = nic_driver_init(NAME);
 	if (rc != EOK)
