]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
sandbox: add dummy driver ETH_SANDBOX_LWIP
authorJerome Forissier <jerome.forissier@linaro.org>
Wed, 16 Oct 2024 09:56:24 +0000 (11:56 +0200)
committerTom Rini <trini@konsulko.com>
Wed, 16 Oct 2024 17:11:56 +0000 (11:11 -0600)
Introduce ETH_SANDBOX_LWIP which enables a mock driver similar to
ETH_SANDOX but without the dependencies on the legacy network stack
(NET) so that it may be enabled when the lwIP stack (NET_LWIP) is
introduced. The driver does nothing at this stage but its presence
will allow dm_test_iommu_noiommu [1] to pass.

[1] ./u-boot -T -c "ut dm dm_test_iommu_noiommu"

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
drivers/net/Kconfig
drivers/net/Makefile
drivers/net/sandbox-lwip.c [new file with mode: 0644]

index 403d7e1c679d447bbf06deac82c3c41729e8ff0f..88ef674cd73e6e532c9bec9683bea4d16c0187b5 100644 (file)
@@ -350,6 +350,17 @@ config ETH_SANDBOX
 
          This driver is particularly useful in the test/dm/eth.c tests
 
+config ETH_SANDBOX_LWIP
+       depends on SANDBOX
+       depends on NET_LWIP
+       default y
+       bool "Sandbox: Mocked Ethernet driver (for NET_LWIP)"
+       help
+         This driver is meant as a replacement for ETH_SANDBOX when
+         the network stack is NET_LWIP rather than NET. It currently
+         does nothing, i.e. it drops the sent packets and never receives
+         data.
+
 config ETH_SANDBOX_RAW
        depends on SANDBOX
        default y
index 4946a63f80fbb9ecd9b90832d085f2ece26a1dd9..f5ab1f5dedf6b867583b841695dd43bb6fc4db6e 100644 (file)
@@ -39,6 +39,7 @@ obj-$(CONFIG_ETH_DESIGNWARE_SOCFPGA) += dwmac_socfpga.o
 obj-$(CONFIG_ETH_SANDBOX) += sandbox.o
 obj-$(CONFIG_ETH_SANDBOX_RAW) += sandbox-raw-bus.o
 obj-$(CONFIG_ETH_SANDBOX_RAW) += sandbox-raw.o
+obj-$(CONFIG_ETH_SANDBOX_LWIP) += sandbox-lwip.o
 obj-$(CONFIG_FEC_MXC) += fec_mxc.o
 obj-$(CONFIG_FMAN_ENET) += fm/
 obj-$(CONFIG_FMAN_ENET) += fsl_mdio.o
diff --git a/drivers/net/sandbox-lwip.c b/drivers/net/sandbox-lwip.c
new file mode 100644 (file)
index 0000000..3721033
--- /dev/null
@@ -0,0 +1,85 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) 2015 National Instruments
+ *
+ * (C) Copyright 2015
+ * Joe Hershberger <joe.hershberger@ni.com>
+ */
+
+#include <dm.h>
+#include <log.h>
+#include <malloc.h>
+#include <net.h>
+#include <asm/eth.h>
+#include <asm/global_data.h>
+#include <asm/test.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+static int sb_lwip_eth_start(struct udevice *dev)
+{
+       debug("eth_sandbox_lwip: Start\n");
+
+       return 0;
+}
+
+static int sb_lwip_eth_send(struct udevice *dev, void *packet, int length)
+{
+       debug("eth_sandbox_lwip: Send packet %d\n", length);
+
+       return -ENOTSUPP;
+}
+
+static int sb_lwip_eth_recv(struct udevice *dev, int flags, uchar **packetp)
+{
+       return -EAGAIN;
+}
+
+static int sb_lwip_eth_free_pkt(struct udevice *dev, uchar *packet, int length)
+{
+       return 0;
+}
+
+static void sb_lwip_eth_stop(struct udevice *dev)
+{
+}
+
+static int sb_lwip_eth_write_hwaddr(struct udevice *dev)
+{
+       return 0;
+}
+
+static const struct eth_ops sb_eth_ops = {
+       .start                  = sb_lwip_eth_start,
+       .send                   = sb_lwip_eth_send,
+       .recv                   = sb_lwip_eth_recv,
+       .free_pkt               = sb_lwip_eth_free_pkt,
+       .stop                   = sb_lwip_eth_stop,
+       .write_hwaddr           = sb_lwip_eth_write_hwaddr,
+};
+
+static int sb_lwip_eth_remove(struct udevice *dev)
+{
+       return 0;
+}
+
+static int sb_lwip_eth_of_to_plat(struct udevice *dev)
+{
+       return 0;
+}
+
+static const struct udevice_id sb_eth_ids[] = {
+       { .compatible = "sandbox,eth" },
+       { }
+};
+
+U_BOOT_DRIVER(eth_sandbox) = {
+       .name   = "eth_lwip_sandbox",
+       .id     = UCLASS_ETH,
+       .of_match = sb_eth_ids,
+       .of_to_plat = sb_lwip_eth_of_to_plat,
+       .remove = sb_lwip_eth_remove,
+       .ops    = &sb_eth_ops,
+       .priv_auto      = 0,
+       .plat_auto      = sizeof(struct eth_pdata),
+};