summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorJoe Hershberger <joe.hershberger@ni.com>2015-04-03 20:09:46 -0500
committerSimon Glass <sjg@chromium.org>2015-04-18 11:11:18 -0600
commit63c9729a1306ee3fed54923f53b20ce769884a81 (patch)
tree3aaf0e23d5620892ed37593aca29d7a77fbf6699 /net
parent5bc48308960b8d28d9d7653efbb91c1be390c916 (diff)
downloadu-boot-63c9729a1306ee3fed54923f53b20ce769884a81.tar.gz
u-boot-63c9729a1306ee3fed54923f53b20ce769884a81.tar.bz2
u-boot-63c9729a1306ee3fed54923f53b20ce769884a81.zip
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 13b7723bb4..05411f1cec 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)