api: net: fix length check in eth_receive()
authorMichael Walle <michael@walle.cc>
Fri, 22 Jun 2012 11:24:28 +0000 (11:24 +0000)
committerJoe Hershberger <joe.hershberger@ni.com>
Mon, 24 Sep 2012 18:17:24 +0000 (13:17 -0500)
commit46c07bcf12a7d6478b5e2f3e4b4c961d84428c6c
tree297f3479f5de9542d895485420c1818747a86928
parent7f51898c1b170e0036e6931a17ada46e2b4fd52e
api: net: fix length check in eth_receive()

If the requested length is too small to hold the received packet,
eth_receive() will return -1 and will leave the packet in the receive
buffers. Instead of returning an error in this case, we return the first
portion of the received packet and remove it from the receive buffers.

This fixes FreeBSD's ubldr. Without this patch it will just stop receiving
packets if the NIC receives more than PKTBUFSRX too large packets.

Signed-off-by: Michael Walle <michael@walle.cc>
Cc: Joe Hershberger <joe.hershberger@gmail.com>
Cc: Rafal Jaworowski <raj@semihalf.com>
Cc: Piotr Kruszynski <ppk@semihalf.com>
net/eth.c