diff --git a/cpu/native/include/cpu_conf.h b/cpu/native/include/cpu_conf.h index 043a4e7df4df..88c71d9c1e1f 100644 --- a/cpu/native/include/cpu_conf.h +++ b/cpu/native/include/cpu_conf.h @@ -55,6 +55,11 @@ extern "C" { */ #define NATIVE_ETH_PROTO 0x1234 +#if (defined(GNRC_PKTBUF_SIZE)) && (GNRC_PKTBUF_SIZE < 2048) +# undef GNRC_PKTBUF_SIZE +# define GNRC_PKTBUF_SIZE (2048) +#endif + #ifdef __cplusplus } #endif diff --git a/cpu/native/netdev2_tap/netdev2_tap.c b/cpu/native/netdev2_tap/netdev2_tap.c index 2c9e3a343b4f..c1fa605110a9 100644 --- a/cpu/native/netdev2_tap/netdev2_tap.c +++ b/cpu/native/netdev2_tap/netdev2_tap.c @@ -215,8 +215,6 @@ static int _recv(netdev2_t *netdev2, void *buf, size_t len, void *info) (void)info; if (!buf) { - int waiting_bytes; - if (len > 0) { /* no memory available in pktbuf, discarding the frame */ DEBUG("netdev2_tap: discarding the frame\n"); @@ -236,9 +234,9 @@ static int _recv(netdev2_t *netdev2, void *buf, size_t len, void *info) _continue_reading(dev); } - /* get number of waiting bytes at dev->tap_fd */ - real_ioctl(dev->tap_fd, FIONREAD, &waiting_bytes); - return waiting_bytes; + /* no way of figuring out packet size without racey buffering, + * so we return the maximum possible size */ + return ETHERNET_FRAME_LEN; } int nread = real_read(dev->tap_fd, buf, len);