Index: uspace/lib/c/generic/ddi.c
===================================================================
--- uspace/lib/c/generic/ddi.c	(revision b402dadd5fae0ee4e7a6a597a29ef28bf29e8130)
+++ uspace/lib/c/generic/ddi.c	(revision 54cbda26f5093778aab11aba73f89ee4dd3a05c1)
@@ -75,25 +75,51 @@
 }
 
+int dmamem_map(dmamem_t *dmamem, size_t pages, unsigned int map_flags,
+    unsigned int dma_flags)
+{
+	// FIXME TODO
+	return -1;
+}
+
+int dmamem_unmap(dmamem_t *dmamem)
+{
+	// FIXME TODO
+	return -1;
+}
+
+int dmamem_lock(void *virt, void **phys, size_t pages)
+{
+	// FIXME TODO
+	return -1;
+}
+
+int dmamem_unlock(void *virt, size_t pages)
+{
+	// FIXME TODO
+	return -1;
+}
+
 /** Enable I/O space range to task.
  *
  * Caller of this function must have the IO_MEM_MANAGER capability.
  *
- * @param id		Task ID.
- * @param ioaddr	Starting address of the I/O range.
- * @param size		Size of the range.
+ * @param id     Task ID.
+ * @param ioaddr Starting address of the I/O range.
+ * @param size   Size of the range.
  *
- * @return		0 on success, EPERM if the caller lacks the
- *			CAP_IO_MANAGER capability, ENOENT if there is no task
- *			with specified ID and ENOMEM if there was some problem
- *			in allocating memory.
+ * @return EOK on success
+ * @return EPERM if the caller lacks the CAP_IO_MANAGER capability
+ * @return ENOENT if there is no task with specified ID
+ * @return ENOMEM if there was some problem in allocating memory.
+ *
  */
 int iospace_enable(task_id_t id, void *ioaddr, unsigned long size)
 {
 	ddi_ioarg_t arg;
-
+	
 	arg.task_id = id;
 	arg.ioaddr = ioaddr;
 	arg.size = size;
-
+	
 	return __SYSCALL1(SYS_IOSPACE_ENABLE, (sysarg_t) &arg);
 }
@@ -101,10 +127,11 @@
 /** Enable PIO for specified I/O range.
  *
- * @param pio_addr	I/O start address.
- * @param size		Size of the I/O region.
- * @param use_addr	Address where the final address for application's PIO
- * 			will be stored.
+ * @param pio_addr I/O start address.
+ * @param size     Size of the I/O region.
+ * @param use_addr Address where the final address for
+ *                 application's PIO will be stored.
  *
- * @return		Zero on success or negative error code.
+ * @return Zero on success or negative error code.
+ *
  */
 int pio_enable(void *pio_addr, size_t size, void **use_addr)
@@ -114,5 +141,5 @@
 	size_t offset;
 	unsigned int pages;
-
+	
 #ifdef IO_SPACE_BOUNDARY
 	if (pio_addr < IO_SPACE_BOUNDARY) {
@@ -121,5 +148,5 @@
 	}
 #endif
-
+	
 	phys = (void *) ALIGN_DOWN((uintptr_t) pio_addr, PAGE_SIZE);
 	offset = pio_addr - phys;
Index: uspace/lib/c/generic/device/nic.c
===================================================================
--- uspace/lib/c/generic/device/nic.c	(revision b402dadd5fae0ee4e7a6a597a29ef28bf29e8130)
+++ uspace/lib/c/generic/device/nic.c	(revision 54cbda26f5093778aab11aba73f89ee4dd3a05c1)
@@ -895,5 +895,5 @@
  *
  */
-int nic_vlan_set_tag(async_sess_t *dev_sess, uint16_t tag, int add, int strip)
+int nic_vlan_set_tag(async_sess_t *dev_sess, uint16_t tag, bool add, bool strip)
 {
 	async_exch_t *exch = async_exchange_begin(dev_sess);
Index: uspace/lib/c/include/ddi.h
===================================================================
--- uspace/lib/c/include/ddi.h	(revision b402dadd5fae0ee4e7a6a597a29ef28bf29e8130)
+++ uspace/lib/c/include/ddi.h	(revision 54cbda26f5093778aab11aba73f89ee4dd3a05c1)
@@ -40,6 +40,24 @@
 #include <task.h>
 
+typedef struct {
+	/** Physical memory */
+	void *phys;
+	
+	/** Virtual memory */
+	void *virt;
+	
+	/** Size in pages */
+	size_t size;
+	
+	/** Mapping flags */
+	unsigned int flags;
+} dmamem_t;
+
 extern int device_assign_devno(void);
 extern int physmem_map(void *, void *, size_t, unsigned int);
+extern int dmamem_map(dmamem_t *, size_t, unsigned int, unsigned int);
+extern int dmamem_unmap(dmamem_t *);
+extern int dmamem_lock(void *, void **, size_t);
+extern int dmamem_unlock(void *, size_t);
 extern int iospace_enable(task_id_t, void *, unsigned long);
 extern int pio_enable(void *, size_t, void **);
Index: uspace/lib/c/include/device/nic.h
===================================================================
--- uspace/lib/c/include/device/nic.h	(revision b402dadd5fae0ee4e7a6a597a29ef28bf29e8130)
+++ uspace/lib/c/include/device/nic.h	(revision 54cbda26f5093778aab11aba73f89ee4dd3a05c1)
@@ -127,5 +127,5 @@
 extern int nic_vlan_get_mask(async_sess_t *, nic_vlan_mask_t *);
 extern int nic_vlan_set_mask(async_sess_t *, const nic_vlan_mask_t *);
-extern int nic_vlan_set_tag(async_sess_t *, uint16_t, int, int);
+extern int nic_vlan_set_tag(async_sess_t *, uint16_t, bool, bool);
 
 extern int nic_wol_virtue_add(async_sess_t *, nic_wv_type_t, const void *,
Index: uspace/lib/c/include/net/device.h
===================================================================
--- uspace/lib/c/include/net/device.h	(revision b402dadd5fae0ee4e7a6a597a29ef28bf29e8130)
+++ uspace/lib/c/include/net/device.h	(revision 54cbda26f5093778aab11aba73f89ee4dd3a05c1)
@@ -77,4 +77,12 @@
 #define NIC_PART_NUMBER_MAX_LENGTH    64
 #define NIC_SERIAL_NUMBER_MAX_LENGTH  64
+
+#define NIC_DEFECTIVE_LONG               0x0001
+#define NIC_DEFECTIVE_SHORT              0x0002
+#define NIC_DEFECTIVE_BAD_CRC            0x0010
+#define NIC_DEFECTIVE_BAD_IPV4_CHECKSUM  0x0020
+#define NIC_DEFECTIVE_BAD_IPV6_CHECKSUM  0x0040
+#define NIC_DEFECTIVE_BAD_TCP_CHECKSUM   0x0080
+#define NIC_DEFECTIVE_BAD_UDP_CHECKSUM   0x0100
 
 /**
