]> git.sur5r.net Git - u-boot/blobdiff - drivers/net/sandbox.c
net: phy: broadcom: Add BCM Cygnus PHY
[u-boot] / drivers / net / sandbox.c
index e239ff44479d07cbd04d3906c46646bae2f3c9c1..6763a248f28d0b327c8b14ff757206cf10a26432 100644 (file)
@@ -11,6 +11,7 @@
 #include <dm.h>
 #include <malloc.h>
 #include <net.h>
+#include <asm/test.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -30,6 +31,7 @@ struct eth_sandbox_priv {
 };
 
 static bool disabled[8] = {false};
+static bool skip_timeout;
 
 /*
  * sandbox_eth_disable_response()
@@ -42,6 +44,16 @@ void sandbox_eth_disable_response(int index, bool disable)
        disabled[index] = disable;
 }
 
+/*
+ * sandbox_eth_skip_timeout()
+ *
+ * When the first packet read is attempted, fast-forward time
+ */
+void sandbox_eth_skip_timeout(void)
+{
+       skip_timeout = true;
+}
+
 static int sb_eth_start(struct udevice *dev)
 {
        struct eth_sandbox_priv *priv = dev_get_priv(dev);
@@ -140,10 +152,15 @@ static int sb_eth_send(struct udevice *dev, void *packet, int length)
        return 0;
 }
 
-static int sb_eth_recv(struct udevice *dev, uchar **packetp)
+static int sb_eth_recv(struct udevice *dev, int flags, uchar **packetp)
 {
        struct eth_sandbox_priv *priv = dev_get_priv(dev);
 
+       if (skip_timeout) {
+               sandbox_timer_add_offset(10000UL);
+               skip_timeout = false;
+       }
+
        if (priv->recv_packet_length) {
                int lcl_recv_packet_length = priv->recv_packet_length;