diff --git a/cpu/native/include/nativenet_internal.h b/cpu/native/include/nativenet_internal.h
index 80879203a87b83e2c25bf14d30105524c62971e2..58a2f2d7c16b945fecbe527f5238e51e8fcfe110 100644
--- a/cpu/native/include/nativenet_internal.h
+++ b/cpu/native/include/nativenet_internal.h
@@ -40,4 +40,5 @@ struct rx_buffer_s {
 extern struct rx_buffer_s _nativenet_rx_buffer[RX_BUF_SIZE];
 
 void _nativenet_handle_packet(radio_packet_t *packet);
+int8_t send_buf(radio_packet_t *packet);
 #endif /* NATIVENET_INTERNAL_H */
diff --git a/cpu/native/include/tap.h b/cpu/native/include/tap.h
index 719c0b351b750b6d315315fdc81917627fabd105..9a20295caf96b68316f322b4e0c3c10ef89eb493 100644
--- a/cpu/native/include/tap.h
+++ b/cpu/native/include/tap.h
@@ -31,7 +31,6 @@
  * On OSX a name has to be provided.
  */
 int tap_init(char *name);
-int send_buf(radio_packet_t *packet);
 
 extern int _native_tap_fd;
 extern unsigned char _native_tap_mac[ETHER_ADDR_LEN];
diff --git a/cpu/native/net/tap.c b/cpu/native/net/tap.c
index d4be66bd0a05f43801ba0740c39ef62492ab088f..df6fd94ed7066f052859ebbc784848bb17b4e359 100644
--- a/cpu/native/net/tap.c
+++ b/cpu/native/net/tap.c
@@ -162,7 +162,7 @@ int _native_marshall_ethernet(uint8_t *framebuf, radio_packet_t *packet)
     return data_len + ETHER_HDR_LEN;
 }
 
-int send_buf(radio_packet_t *packet)
+int8_t send_buf(radio_packet_t *packet)
 {
     uint8_t buf[TAP_BUFFER_LENGTH];
     int nsent, to_send;
@@ -178,7 +178,7 @@ int send_buf(radio_packet_t *packet)
         warn("write");
         return -1;
     }
-    return 0;
+    return (nsent > INT8_MAX ? INT8_MAX : nsent);
 }
 
 int tap_init(char *name)