Skip to content
Snippets Groups Projects
Commit 613bceea authored by Martine Lenders's avatar Martine Lenders
Browse files

netdev2_tap: return actual byte number on read request

parent c3faf49d
Branches
No related tags found
No related merge requests found
......@@ -55,11 +55,6 @@ 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
......
......@@ -215,6 +215,8 @@ 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");
......@@ -234,9 +236,9 @@ static int _recv(netdev2_t *netdev2, void *buf, size_t len, void *info)
_continue_reading(dev);
}
/* no way of figuring out packet size without racey buffering,
* so we return the maximum possible size */
return ETHERNET_FRAME_LEN;
/* get number of waiting bytes at dev->tap_fd */
real_ioctl(dev->tap_fd, FIONREAD, &waiting_bytes);
return waiting_bytes;
}
int nread = real_read(dev->tap_fd, buf, len);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment