[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