Index: uspace/srv/net/nil/eth/eth.c
===================================================================
--- uspace/srv/net/nil/eth/eth.c	(revision ae481e05ea93d63c659ddb05381083f080020e79)
+++ uspace/srv/net/nil/eth/eth.c	(revision d50db30b9e7bcf4dc2e2d61484abd5c23529cc1f)
@@ -802,11 +802,11 @@
 			next = tmp;
 		} else {
+			nic_send_frame(device->sess, packet_get_data(next),
+			    packet_get_data_length(next));
 			next = pq_next(next);
 		}
 	} while (next);
 	
-	/* Send packet queue */
-	if (packet)
-		nic_send_message(device->sess, packet_get_id(packet));
+	pq_release_remote(eth_globals.net_sess, packet_get_id(packet));
 	
 	fibril_rwlock_read_unlock(&eth_globals.devices_lock);
Index: uspace/srv/net/nil/nildummy/nildummy.c
===================================================================
--- uspace/srv/net/nil/nildummy/nildummy.c	(revision ae481e05ea93d63c659ddb05381083f080020e79)
+++ uspace/srv/net/nil/nildummy/nildummy.c	(revision d50db30b9e7bcf4dc2e2d61484abd5c23529cc1f)
@@ -345,4 +345,6 @@
     services_t sender)
 {
+	packet_t *p;
+	
 	fibril_rwlock_read_lock(&nildummy_globals.devices_lock);
 	
@@ -354,7 +356,12 @@
 	}
 	
-	/* Send packet queue */
-	if (packet)
-		nic_send_message(device->sess, packet_get_id(packet));
+	p = packet;
+	do {
+		nic_send_frame(device->sess, packet_get_data(p),
+		    packet_get_data_length(p));
+		p = pq_next(p);
+	} while (p != NULL);
+	
+	pq_release_remote(nildummy_globals.net_sess, packet_get_id(packet));
 	
 	fibril_rwlock_read_unlock(&nildummy_globals.devices_lock);
