summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorJoe Hershberger <joe.hershberger@ni.com>2015-04-04 01:09:46 (GMT)
committerSimon Glass <sjg@chromium.org>2015-04-18 17:11:18 (GMT)
commit63c9729a1306ee3fed54923f53b20ce769884a81 (patch)
tree3aaf0e23d5620892ed37593aca29d7a77fbf6699 /net
parent5bc48308960b8d28d9d7653efbb91c1be390c916 (diff)
downloadu-boot-63c9729a1306ee3fed54923f53b20ce769884a81.tar.xz
dm: eth: Provide a way for drivers to manage packet buffers
Some drivers need a chance to manage their receive buffers after the packet has been handled by the network stack. Add an operation that will allow the driver to be called in that case. Reported-by: Simon Glass <sjg@chromium.org> Signed-off-by: Joe Hershberger <joe.hershberger@ni.com> Acked-by: Simon Glass <sjg@chromium.org> Tested-by: Simon Glass <sjg@chromium.org> Tested-on: pcduino3
Diffstat (limited to 'net')
-rw-r--r--net/eth.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/net/eth.c b/net/eth.c
index 13b7723..05411f1 100644
--- a/net/eth.c
+++ b/net/eth.c
@@ -344,7 +344,9 @@ int eth_rx(void)
ret = eth_get_ops(current)->recv(current, &packet);
if (ret > 0)
net_process_received_packet(packet, ret);
- else
+ if (ret >= 0 && eth_get_ops(current)->free_pkt)
+ eth_get_ops(current)->free_pkt(current, packet, ret);
+ if (ret <= 0)
break;
}
if (ret == -EAGAIN)