From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joe Hershberger Date: Wed, 11 Mar 2015 18:44:19 -0500 Subject: [U-Boot] [PATCH v6 21/27] test: dm: eth: Add testing for ethrotate env var In-Reply-To: <1426117465-16072-1-git-send-email-joe.hershberger@ni.com> References: <1425436881-10323-1-git-send-email-joe.hershberger@ni.com> <1426117465-16072-1-git-send-email-joe.hershberger@ni.com> Message-ID: <1426117465-16072-22-git-send-email-joe.hershberger@ni.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Make sure that the ethrotate behavior occurs as expected. Signed-off-by: Joe Hershberger Reviewed-by: Simon Glass --- Changes in v6: None Changes in v5: -Added a test for skipping un-probe-able devices Changes in v4: -Added testing for ethrotate Changes in v3: None Changes in v2: None test/dm/eth.c | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/test/dm/eth.c b/test/dm/eth.c index 96e3c46..9b55013 100644 --- a/test/dm/eth.c +++ b/test/dm/eth.c @@ -80,3 +80,45 @@ static int dm_test_eth_prime(struct dm_test_state *dms) return 0; } DM_TEST(dm_test_eth_prime, DM_TESTF_SCAN_FDT); + +static int dm_test_eth_rotate(struct dm_test_state *dms) +{ + char ethaddr[18]; + + /* Invalidate eth1's MAC address */ + NetPingIP = string_to_ip("1.1.2.2"); + strcpy(ethaddr, getenv("eth1addr")); + setenv("eth1addr", NULL); + + /* Make sure that the default is to rotate to the next interface */ + setenv("ethact", "eth at 10004000"); + ut_assertok(NetLoop(PING)); + ut_asserteq_str("eth at 10002000", getenv("ethact")); + + /* If ethrotate is no, then we should fail on a bad MAC */ + setenv("ethact", "eth at 10004000"); + setenv("ethrotate", "no"); + ut_asserteq(-1, NetLoop(PING)); + ut_asserteq_str("eth at 10004000", getenv("ethact")); + + /* Restore the env */ + setenv("eth1addr", ethaddr); + setenv("ethrotate", NULL); + + /* Invalidate eth0's MAC address */ + strcpy(ethaddr, getenv("ethaddr")); + setenv(".flags", "ethaddr"); + setenv("ethaddr", NULL); + + /* Make sure we can skip invalid devices */ + setenv("ethact", "eth at 10004000"); + ut_assertok(NetLoop(PING)); + ut_asserteq_str("eth at 10004000", getenv("ethact")); + + /* Restore the env */ + setenv("ethaddr", ethaddr); + setenv(".flags", NULL); + + return 0; +} +DM_TEST(dm_test_eth_rotate, DM_TESTF_SCAN_FDT); -- 1.7.11.5