>-----Original Message-----
>From: U-Boot <u-boot-boun...@lists.denx.de> On Behalf Of Alex Marginean
>Sent: Tuesday, December 3, 2019 8:27 PM
>To: u-boot@lists.denx.de
>Cc: Joe Hershberger <joe.hershber...@ni.com>; Claudiu Manoil
><claudiu.man...@nxp.com>; Vladimir Oltean <vladimir.olt...@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.margin...@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@0 {
>+                              reg = <0>;
>+                              label = "lan0";
>+                      };
>+
>+                      swp_1: port@1 {
>+                              reg = <1>;
>+                              label = "lan1";
>+                              phy-mode = "rgmii-txid";
>+                              fixed-link {
>+                                      speed = <1000>;
>+                                      full-duplex;
>+                              };
>+                      };
>+
>+                      swp_2: port@2 {
>+                              reg = <2>;
>+                              label = "lan2";
>+                              fixed-link {
>+                                      speed = <100>;
>+                                      full-duplex;
>+                              };
>+                      };
>+
>+                      port@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

Reply via email to