|
@@ -14,6 +14,7 @@
|
|
|
#include <fdtdec.h>
|
|
|
#include <malloc.h>
|
|
|
#include <net.h>
|
|
|
+#include <asm/eth.h>
|
|
|
|
|
|
DECLARE_GLOBAL_DATA_PTR;
|
|
|
|
|
@@ -122,3 +123,34 @@ static int dm_test_eth_rotate(struct dm_test_state *dms)
|
|
|
return 0;
|
|
|
}
|
|
|
DM_TEST(dm_test_eth_rotate, DM_TESTF_SCAN_FDT);
|
|
|
+
|
|
|
+static int dm_test_net_retry(struct dm_test_state *dms)
|
|
|
+{
|
|
|
+ NetPingIP = string_to_ip("1.1.2.2");
|
|
|
+
|
|
|
+ /*
|
|
|
+ * eth1 is disabled and netretry is yes, so the ping should succeed and
|
|
|
+ * the active device should be eth0
|
|
|
+ */
|
|
|
+ sandbox_eth_disable_response(1, true);
|
|
|
+ setenv("ethact", "eth@10004000");
|
|
|
+ setenv("netretry", "yes");
|
|
|
+ ut_assertok(NetLoop(PING));
|
|
|
+ ut_asserteq_str("eth@10002000", getenv("ethact"));
|
|
|
+
|
|
|
+ /*
|
|
|
+ * eth1 is disabled and netretry is no, so the ping should fail and the
|
|
|
+ * active device should be eth1
|
|
|
+ */
|
|
|
+ setenv("ethact", "eth@10004000");
|
|
|
+ setenv("netretry", "no");
|
|
|
+ ut_asserteq(-1, NetLoop(PING));
|
|
|
+ ut_asserteq_str("eth@10004000", getenv("ethact"));
|
|
|
+
|
|
|
+ /* Restore the env */
|
|
|
+ setenv("netretry", NULL);
|
|
|
+ sandbox_eth_disable_response(1, false);
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+DM_TEST(dm_test_net_retry, DM_TESTF_SCAN_FDT);
|