Index: uspace/srv/hw/netif/dp8390/dp8390.c
===================================================================
--- uspace/srv/hw/netif/dp8390/dp8390.c	(revision e3fe7df3d8d6a257d0d1a8e691ce09668f70dbc8)
+++ uspace/srv/hw/netif/dp8390/dp8390.c	(revision 66b628a6df0d4f3fdc730ff526a36b8c6b781fd3)
@@ -102,9 +102,9 @@
 	/* This is the default, try to (re)locate the device. */
 	conf_hw(dep);
-	if (dep->de_mode == DEM_DISABLED)
+	if (!dep->up)
 		/* Probe failed, or the device is configured off. */
 		return EXDEV;
 	
-	if (dep->de_mode == DEM_ENABLED)
+	if (dep->up)
 		dp_init(dep);
 	
@@ -112,23 +112,20 @@
 }
 
-int do_init(dpeth_t *dep, int mode)
-{
-	if (dep->de_mode == DEM_DISABLED)
+/** Initialize and/or start the network interface.
+ *
+ *  @param[in,out] dep The network interface structure.
+ *
+ *  @return EOK on success.
+ *  @return EXDEV if the network interface is disabled.
+ *
+ */
+int do_init(dpeth_t *dep)
+{
+	if (!dep->up)
 		/* FIXME: Perhaps call do_probe()? */
 		return EXDEV;
 	
-	assert(dep->de_mode == DEM_ENABLED);
-	assert(dep->de_flags & DEF_ENABLED);
-	
-	dep->de_flags &= ~(DEF_PROMISC | DEF_MULTI | DEF_BROAD);
-	
-	if (mode &DL_PROMISC_REQ)
-		dep->de_flags |= DEF_PROMISC | DEF_MULTI | DEF_BROAD;
-	
-	if (mode &DL_MULTI_REQ)
-		dep->de_flags |= DEF_MULTI;
-	
-	if (mode &DL_BROAD_REQ)
-		dep->de_flags |= DEF_BROAD;
+	assert(dep->up);
+	assert(dep->enabled);
 	
 	dp_reinit(dep);
@@ -138,8 +135,9 @@
 void do_stop(dpeth_t *dep)
 {
-	if ((dep->de_mode == DEM_ENABLED)
-	    && (dep->de_flags & DEF_ENABLED)) {
+	if ((dep->up) && (dep->enabled)) {
 		outb_reg0(dep, DP_CR, CR_STP | CR_DM_ABORT);
 		(dep->de_stopf)(dep);
+		dep->enabled = false;
+		dep->stopped = false;
 		dep->sending = false;
 		dep->send_avail = false;
@@ -152,6 +150,6 @@
 	int sendq_head;
 	
-	assert(dep->de_mode == DEM_ENABLED);
-	assert(dep->de_flags & DEF_ENABLED);
+	assert(dep->up);
+	assert(dep->enabled);
 	
 	if (dep->send_avail) {
@@ -213,9 +211,11 @@
 	
 	/* General initialization */
+	dep->enabled = false;
+	dep->stopped = false;
 	dep->sending = false;
 	dep->send_avail = false;
 	(*dep->de_initf)(dep);
 	
-	printf("%s: Ethernet address ", dep->de_name);
+	printf("Ethernet address ");
 	for (i = 0; i < 6; i++)
 		printf("%x%c", dep->de_address.ea_addr[i], i < 5 ? ':' : '\n');
@@ -241,14 +241,5 @@
 	
 	/* Step 4: */
-	dp_rcr_reg = 0;
-	
-	if (dep->de_flags & DEF_PROMISC)
-		dp_rcr_reg |= RCR_AB | RCR_PRO | RCR_AM;
-	
-	if (dep->de_flags & DEF_BROAD)
-		dp_rcr_reg |= RCR_AB;
-	
-	if (dep->de_flags & DEF_MULTI)
-		dp_rcr_reg |= RCR_AM;
+	dp_rcr_reg = RCR_AB;  /* Enable broadcasts */
 	
 	outb_reg0(dep, DP_RCR, dp_rcr_reg);
@@ -301,5 +292,5 @@
 	
 	/* Finish the initialization. */
-	dep->de_flags |= DEF_ENABLED;
+	dep->enabled = true;
 	for (i = 0; i < dep->de_sendq_nr; i++)
 		dep->de_sendq[i].sq_filled= 0;
@@ -325,14 +316,6 @@
 	outb_reg0(dep, DP_CR, CR_PS_P0 | CR_EXTRA);
 	
-	dp_rcr_reg = 0;
-	
-	if (dep->de_flags & DEF_PROMISC)
-		dp_rcr_reg |= RCR_AB | RCR_PRO | RCR_AM;
-	
-	if (dep->de_flags & DEF_BROAD)
-		dp_rcr_reg |= RCR_AB;
-	
-	if (dep->de_flags & DEF_MULTI)
-		dp_rcr_reg |= RCR_AM;
+	/* Enable broadcasts */
+	dp_rcr_reg = RCR_AB;
 	
 	outb_reg0(dep, DP_RCR, dp_rcr_reg);
@@ -373,5 +356,5 @@
 	
 	dep->send_avail = false;
-	dep->de_flags &= ~DEF_STOPPED;
+	dep->stopped = false;
 }
 
@@ -389,7 +372,4 @@
 	int tsr;
 	int size, sendq_tail;
-	
-	if (!(dep->de_flags & DEF_ENABLED))
-		fprintf(stderr, "dp8390: got premature interrupt\n");
 	
 	for (; (isr & 0x7f) != 0; isr = isr_acknowledge(dep)) {
@@ -413,8 +393,8 @@
 				
 				if ((tsr & TSR_FU) && (++dep->de_stat.ets_fifoUnder <= 10))
-					printf("%s: fifo underrun\n", dep->de_name);
+					printf("FIFO underrun\n");
 				
 				if ((tsr & TSR_CDH) && (++dep->de_stat.ets_CDheartbeat <= 10))
-					printf("%s: CD heart beat failure\n", dep->de_name);
+					printf("CD heart beat failure\n");
 				
 				if (tsr & TSR_OWC)
@@ -425,6 +405,5 @@
 			
 			if (!(dep->de_sendq[sendq_tail].sq_filled)) {
-				/* Or hardware bug? */
-				printf("%s: transmit interrupt, but not sending\n", dep->de_name);
+				printf("PTX interrupt, but no frame to send\n");
 				continue;
 			}
@@ -470,18 +449,18 @@
 		if (isr & ISR_RST) {
 			/*
-			 * This means we got an interrupt but the ethernet 
-			 * chip is shutdown. We set the flag DEF_STOPPED,
+			 * This means we got an interrupt but the ethernet
+			 * chip is shutdown. We set the flag 'stopped'
 			 * and continue processing arrived packets. When the
 			 * receive buffer is empty, we reset the dp8390.
 			 */
-			dep->de_flags |= DEF_STOPPED;
+			dep->stopped = true;
 			break;
 		}
 	}
 	
-	if ((dep->de_flags & DEF_STOPPED) == DEF_STOPPED) {
+	if (dep->stopped) {
 		/*
-		 * The chip is stopped, and all arrived packets
-		 * are delivered.
+		 * The chip is stopped, and all arrived
+		 * frames are delivered.
 		 */
 		dp_reset(dep);
@@ -518,8 +497,8 @@
 		next = header.dr_next;
 		if ((length < ETH_MIN_PACK_SIZE) || (length > ETH_MAX_PACK_SIZE_TAGGED)) {
-			printf("%s: packet with strange length arrived: %d\n", dep->de_name, (int) length);
+			printf("Packet with strange length arrived: %zu\n", length);
 			next= curr;
 		} else if ((next < dep->de_startpage) || (next >= dep->de_stoppage)) {
-			printf("%s: strange next page\n", dep->de_name);
+			printf("Strange next page\n");
 			next= curr;
 		} else if (header.dr_status & RSR_FO) {
@@ -528,8 +507,8 @@
 			 * reset the buffers
 			 */
-			printf("%s: fifo overrun, resetting receive buffer\n", dep->de_name);
+			printf("FIFO overrun, resetting receive buffer\n");
 			dep->de_stat.ets_fifoOver++;
 			next = curr;
-		} else if ((header.dr_status & RSR_PRX) && (dep->de_flags & DEF_ENABLED)) {
+		} else if ((header.dr_status & RSR_PRX) && (dep->enabled)) {
 			r = dp_pkt2user(nil_phone, device_id, dep, pageno, length);
 			if (r != EOK)
@@ -710,11 +689,12 @@
 {
 	if (!ne_probe(dep)) {
-		printf("%s: No ethernet card found at %#lx\n",
-		    dep->de_name, dep->de_base_port);
-		dep->de_mode= DEM_DISABLED;
+		printf("No ethernet card found at %#lx\n", dep->de_base_port);
+		dep->up = false;
 		return;
 	}
 	
-	dep->de_mode = DEM_ENABLED;
+	dep->up = true;
+	dep->enabled = false;
+	dep->stopped = false;
 	dep->sending = false;
 	dep->send_avail = false;
Index: uspace/srv/hw/netif/dp8390/dp8390.h
===================================================================
--- uspace/srv/hw/netif/dp8390/dp8390.h	(revision e3fe7df3d8d6a257d0d1a8e691ce09668f70dbc8)
+++ uspace/srv/hw/netif/dp8390/dp8390.h	(revision 66b628a6df0d4f3fdc730ff526a36b8c6b781fd3)
@@ -89,19 +89,19 @@
 
 /** Page 1, read/write */
-#define	DP_PAR0		0x1	/* Physical Address Register 0       */
-#define	DP_PAR1		0x2	/* Physical Address Register 1       */
-#define	DP_PAR2		0x3	/* Physical Address Register 2       */
-#define	DP_PAR3		0x4	/* Physical Address Register 3       */
-#define	DP_PAR4		0x5	/* Physical Address Register 4       */
-#define	DP_PAR5		0x6	/* Physical Address Register 5       */
-#define	DP_CURR		0x7	/* Current Page Register             */
-#define	DP_MAR0		0x8	/* Multicast Address Register 0      */
-#define	DP_MAR1		0x9	/* Multicast Address Register 1      */
-#define	DP_MAR2		0xA	/* Multicast Address Register 2      */
-#define	DP_MAR3		0xB	/* Multicast Address Register 3      */
-#define	DP_MAR4		0xC	/* Multicast Address Register 4      */
-#define	DP_MAR5		0xD	/* Multicast Address Register 5      */
-#define	DP_MAR6		0xE	/* Multicast Address Register 6      */
-#define	DP_MAR7		0xF	/* Multicast Address Register 7      */
+#define DP_PAR0  0x01  /**< Physical Address Register 0 */
+#define DP_PAR1  0x02  /**< Physical Address Register 1 */
+#define DP_PAR2  0x03  /**< Physical Address Register 2 */
+#define DP_PAR3  0x04  /**< Physical Address Register 3 */
+#define DP_PAR4  0x05  /**< Physical Address Register 4 */
+#define DP_PAR5  0x06  /**< Physical Address Register 5 */
+#define DP_CURR  0x07  /**< Current Page Register */
+#define DP_MAR0  0x08  /**< Multicast Address Register 0 */
+#define DP_MAR1  0x09  /**< Multicast Address Register 1 */
+#define DP_MAR2  0x0a  /**< Multicast Address Register 2 */
+#define DP_MAR3  0x0b  /**< Multicast Address Register 3 */
+#define DP_MAR4  0x0c  /**< Multicast Address Register 4 */
+#define DP_MAR5  0x0d  /**< Multicast Address Register 5 */
+#define DP_MAR6  0x0e  /**< Multicast Address Register 6 */
+#define DP_MAR7  0x0f  /**< Multicast Address Register 7 */
 
 /* Bits in dp_cr */
@@ -271,5 +271,4 @@
 	dp_initf_t de_initf;
 	dp_stopf_t de_stopf;
-	char de_name[sizeof("dp8390#n")];
 	
 	/*
@@ -300,6 +299,4 @@
 	
 	/* Fields for internal use by the dp8390 driver. */
-	int de_flags;
-	int de_mode;
 	eth_stat_t de_stat;
 	dp_user2nicf_t de_user2nicf;
@@ -308,17 +305,11 @@
 	
 	/* Driver flags */
+	bool up;
+	bool enabled;
+	bool stopped;
 	bool sending;
 	bool send_avail;
 } dpeth_t;
 
-#define DEF_PROMISC     0x040
-#define DEF_MULTI       0x080
-#define DEF_BROAD       0x100
-#define DEF_ENABLED     0x200
-#define DEF_STOPPED     0x400
-
-#define DEM_DISABLED  0x0
-#define DEM_ENABLED   0x2
-
 #endif
 
Index: uspace/srv/hw/netif/dp8390/dp8390_drv.h
===================================================================
--- uspace/srv/hw/netif/dp8390/dp8390_drv.h	(revision e3fe7df3d8d6a257d0d1a8e691ce09668f70dbc8)
+++ uspace/srv/hw/netif/dp8390/dp8390_drv.h	(revision 66b628a6df0d4f3fdc730ff526a36b8c6b781fd3)
@@ -40,11 +40,5 @@
 #include "dp8390.h"
 
-/** Initializes and/or starts the network interface.
- *  @param[in,out] dep The network interface structure.
- *  @param[in] mode The state mode.
- *  @returns EOK on success.
- *  @returns EXDEV if the network interface is disabled.
- */
-int do_init(dpeth_t *dep, int mode);
+int do_init(dpeth_t *dep);
 
 /** Stops the network interface.
Index: uspace/srv/hw/netif/dp8390/dp8390_module.c
===================================================================
--- uspace/srv/hw/netif/dp8390/dp8390_module.c	(revision e3fe7df3d8d6a257d0d1a8e691ce09668f70dbc8)
+++ uspace/srv/hw/netif/dp8390/dp8390_module.c	(revision 66b628a6df0d4f3fdc730ff526a36b8c6b781fd3)
@@ -130,6 +130,6 @@
 	fibril_rwlock_write_unlock(&netif_globals.lock);
 	
-	if ((dep != NULL) && (dep->de_mode == DEM_ENABLED)) {
-		assert(dep->de_flags & DEF_ENABLED);
+	if ((dep != NULL) && (dep->up)) {
+		assert(dep->enabled);
 		dp_check_ints(nil_phone, device_id, dep, IRQ_GET_ISR(*call));
 	}
@@ -233,5 +233,5 @@
 	device->state = NETIF_STOPPED;
 	dep->de_irq = irq;
-	dep->de_mode = DEM_DISABLED;
+	dep->up = false;
 	
 	//TODO address?
@@ -306,5 +306,5 @@
 			return rc;
 		
-		rc = do_init(dep, DL_BROAD_REQ);
+		rc = do_init(dep);
 		if (rc != EOK) {
 			ipc_unregister_irq(dep->de_irq, device->device_id);
Index: uspace/srv/hw/netif/dp8390/dp8390_port.h
===================================================================
--- uspace/srv/hw/netif/dp8390/dp8390_port.h	(revision e3fe7df3d8d6a257d0d1a8e691ce09668f70dbc8)
+++ uspace/srv/hw/netif/dp8390/dp8390_port.h	(revision 66b628a6df0d4f3fdc730ff526a36b8c6b781fd3)
@@ -78,10 +78,4 @@
 #define outw(port, value)  pio_write_16((ioport16_t *) (port), (value))
 
-/* Bits in 'DL_MODE' field of DL requests. */
-#define DL_NOMODE       0x0
-#define DL_PROMISC_REQ  0x2
-#define DL_MULTI_REQ    0x4
-#define DL_BROAD_REQ    0x8
-
 /** Type definition of a port.
  */
Index: uspace/srv/hw/netif/dp8390/ne2000.c
===================================================================
--- uspace/srv/hw/netif/dp8390/ne2000.c	(revision e3fe7df3d8d6a257d0d1a8e691ce09668f70dbc8)
+++ uspace/srv/hw/netif/dp8390/ne2000.c	(revision 66b628a6df0d4f3fdc730ff526a36b8c6b781fd3)
@@ -206,8 +206,8 @@
 	dep->de_stoppage = dep->de_offset_page + dep->de_ramsize / DP_PAGESIZE;
 	
-	printf("%s: Novell NE%d000 ethernet card at I/O address "
+	printf("Novell NE%d000 ethernet card at I/O address "
 	    "%#lx, memory size %#lx, irq %d\n",
-	    dep->de_name, dep->de_16bit ? 2 : 1,
-	    dep->de_base_port, dep->de_ramsize, dep->de_irq);
+	    dep->de_16bit ? 2 : 1, dep->de_base_port, dep->de_ramsize,
+	    dep->de_irq);
 }
 
@@ -235,5 +235,5 @@
 	
 	if (i == N) {
-		printf("%s: NE1000 remote DMA test failed\n", dep->de_name);
+		printf("NE1000 remote DMA test failed\n");
 		return 0;
 	}
@@ -274,5 +274,5 @@
 	
 	if (i == N) {
-		printf("%s: NE2000 remote DMA test failed\n", dep->de_name);
+		printf("NE2000 remote DMA test failed\n");
 		return 0;
 	}
