[PATCH v3 3/6] test: dm: add a simple unit test for DSA class
Priyanka Jain
priyanka.jain at nxp.com
Wed Dec 4 05:14:50 CET 2019
>-----Original Message-----
>From: U-Boot <u-boot-bounces at lists.denx.de> On Behalf Of Alex Marginean
>Sent: Tuesday, December 3, 2019 8:27 PM
>To: u-boot at lists.denx.de
>Cc: Joe Hershberger <joe.hershberger at ni.com>; Claudiu Manoil
><claudiu.manoil at nxp.com>; Vladimir Oltean <vladimir.oltean at nxp.com>
>Subject: [PATCH v3 3/6] test: dm: add a simple unit test for DSA class
>
>The test pings the local IP address though different ports of a sandbox DSA
>device. Port traffic is filtered and the test verifies that ping works only on
>enabled ports.
>The additional interfaces require MAC addresses, these have been added to
>sandbox default environment.
>
>Signed-off-by: Alex Marginean <alexandru.marginean at nxp.com>
>---
> arch/Kconfig | 1 +
> arch/sandbox/dts/test.dts | 49 +++++++++++++++++++++++++++++++++
>include/configs/sandbox.h | 4 +++
> test/dm/Makefile | 1 +
> test/dm/dsa.c | 58 +++++++++++++++++++++++++++++++++++++++
> test/dm/test-fdt.c | 2 +-
> 6 files changed, 114 insertions(+), 1 deletion(-) create mode 100644
>test/dm/dsa.c
>
>diff --git a/arch/Kconfig b/arch/Kconfig index 141e48bc43..70907d69a1 100644
>--- a/arch/Kconfig
>+++ b/arch/Kconfig
>@@ -133,6 +133,7 @@ config SANDBOX
> imply PHYLIB
> imply DM_MDIO
> imply DM_MDIO_MUX
>+ imply DM_DSA
>
> config SH
> bool "SuperH architecture"
>diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts index
>fdb08f2111..0f565f066a 100644
>--- a/arch/sandbox/dts/test.dts
>+++ b/arch/sandbox/dts/test.dts
>@@ -40,6 +40,10 @@
> usb2 = &usb_2;
> axi0 = &axi;
> osd0 = "/osd";
>+ eth8 = &swp_0;
>+ eth9 = &swp_1;
>+ eth10 = &swp_2;
>+ eth11 = &dsa_eth0;
> };
>
> audio: audio-codec {
>@@ -889,6 +893,51 @@
> mdio: mdio-test {
> compatible = "sandbox,mdio";
> };
>+
>+ dsa_eth0: dsa-test-eth {
>+ compatible = "sandbox,dsa-eth";
>+ };
>+
>+ dsa-test {
>+ compatible = "sandbox,dsa";
>+
>+ ports {
>+ #address-cells = <1>;
>+ #size-cells = <0>;
>+ swp_0: port at 0 {
>+ reg = <0>;
>+ label = "lan0";
>+ };
>+
>+ swp_1: port at 1 {
>+ reg = <1>;
>+ label = "lan1";
>+ phy-mode = "rgmii-txid";
>+ fixed-link {
>+ speed = <1000>;
>+ full-duplex;
>+ };
>+ };
>+
>+ swp_2: port at 2 {
>+ reg = <2>;
>+ label = "lan2";
>+ fixed-link {
>+ speed = <100>;
>+ full-duplex;
>+ };
>+ };
>+
>+ port at 3 {
>+ reg = <3>;
>+ ethernet = <&dsa_eth0>;
>+ fixed-link {
>+ speed = <100>;
>+ full-duplex;
>+ };
>+ };
>+ };
>+ };
> };
>
> #include "sandbox_pmic.dtsi"
>diff --git a/include/configs/sandbox.h b/include/configs/sandbox.h index
>1c13055cdc..35a5676eb9 100644
>--- a/include/configs/sandbox.h
>+++ b/include/configs/sandbox.h
>@@ -100,6 +100,10 @@
> "eth1addr=00:00:11:22:33:45\0" \
> "eth3addr=00:00:11:22:33:46\0" \
> "eth5addr=00:00:11:22:33:47\0" \
>+ "eth8addr=00:00:11:22:33:48\0" \
>+ "eth9addr=00:00:11:22:33:49\0" \
>+ "eth10addr=00:00:11:22:33:4a\0" \
>+ "eth11addr=00:00:11:22:33:4b\0" \
> "ipaddr=1.2.3.4\0"
>
> #define MEM_LAYOUT_ENV_SETTINGS \
>diff --git a/test/dm/Makefile b/test/dm/Makefile index 0c2fd5cb5e..69e9feed91
>100644
>--- a/test/dm/Makefile
>+++ b/test/dm/Makefile
>@@ -65,4 +65,5 @@ obj-$(CONFIG_VIRTIO_SANDBOX) += virtio.o
> obj-$(CONFIG_DMA) += dma.o
> obj-$(CONFIG_DM_MDIO) += mdio.o
> obj-$(CONFIG_DM_MDIO_MUX) += mdio_mux.o
>+obj-$(CONFIG_DM_DSA) += dsa.o
> endif
>diff --git a/test/dm/dsa.c b/test/dm/dsa.c new file mode 100644 index
>0000000000..5aa3847fe5
>--- /dev/null
>+++ b/test/dm/dsa.c
>@@ -0,0 +1,58 @@
>+// SPDX-License-Identifier: GPL-2.0
>+/*
>+ * Copyright (c) 2019 NXP
Please use Copyright 2019 NXP
>+ */
>+
>+#include <net/dsa.h>
>+#include <dm/test.h>
>+#include <test/ut.h>
>+
>+extern int dsa_sandbox_port_mask;
>+
>+/* this test sends ping requests with the local address through each
>+DSA port
>+ * via the dummy DSA master Eth.
>+ * The dummy Eth filters traffic based on DSA port used to Tx and the
>+port
>+ * mask set here, so we can check that port information gets trough correctly.
>+ */
>+static int dm_test_dsa(struct unit_test_state *uts) {
>+ dsa_sandbox_port_mask = 0x5;
>+
>+ env_set("ethrotate", "no");
>+ net_ping_ip = string_to_ip("1.2.3.4");
>+
>+ env_set("ethact", "dsa-test-eth");
>+ ut_assertok(net_loop(PING));
>+
>+ dsa_sandbox_port_mask = 0x7;
>+ env_set("ethact", "lan0");
>+ ut_assertok(net_loop(PING));
>+ env_set("ethact", "lan1");
>+ ut_assertok(net_loop(PING));
>+ env_set("ethact", "lan2");
>+ ut_assertok(net_loop(PING));
>+
>+ dsa_sandbox_port_mask = 0x1;
>+ env_set("ethact", "lan0");
>+ ut_assertok(net_loop(PING));
>+ env_set("ethact", "lan1");
>+ ut_assert(net_loop(PING) != 0);
>+ env_set("ethact", "lan2");
>+ ut_assert(net_loop(PING) != 0);
>+
>+ dsa_sandbox_port_mask = 0x6;
>+ env_set("ethact", "lan0");
>+ ut_assert(net_loop(PING) != 0);
>+ env_set("ethact", "lan1");
>+ ut_assertok(net_loop(PING));
>+ env_set("ethact", "lan2");
>+ ut_assertok(net_loop(PING));
>+
>+ dsa_sandbox_port_mask = 0;
>+ env_set("ethact", "");
>+ env_set("ethrotate", "yes");
>+
>+ return 0;
>+}
>+
>+DM_TEST(dm_test_dsa, DM_TESTF_SCAN_FDT);
>diff --git a/test/dm/test-fdt.c b/test/dm/test-fdt.c index 1fb8b5c248..0d7dd053e2
>100644
>--- a/test/dm/test-fdt.c
>+++ b/test/dm/test-fdt.c
>@@ -224,7 +224,7 @@ static int dm_test_alias_highest_id(struct unit_test_state
>*uts)
> int ret;
>
> ret = dev_read_alias_highest_id("eth");
>- ut_asserteq(5, ret);
>+ ut_asserteq(11, ret);
>
> ret = dev_read_alias_highest_id("gpio");
> ut_asserteq(2, ret);
>--
>2.17.1
Priyanka
More information about the U-Boot
mailing list