]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
net: split cmd/net.c into cmd/net.c and cmd/net-common.c
authorJerome Forissier <jerome.forissier@linaro.org>
Wed, 16 Oct 2024 10:04:08 +0000 (12:04 +0200)
committerTom Rini <trini@konsulko.com>
Wed, 16 Oct 2024 17:11:56 +0000 (11:11 -0600)
Extract some code from cmd/net.c that will be useful in a subsequent
commit to implement wget with NET_LWIP.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
cmd/Makefile
cmd/net-common.c [new file with mode: 0644]
cmd/net.c

index 94a3df41c6fc375a276436237f09bf8f42dc8503..f30914053721d7e8ac17c828aef4d379cf3ecdb5 100644 (file)
@@ -130,7 +130,10 @@ obj-$(CONFIG_CMD_NAND) += nand.o
 ifdef CONFIG_CMD_NET
 obj-$(CONFIG_NET) += net.o
 obj-$(CONFIG_NET_LWIP) += net-lwip.o
-CFLAGS_net-lwip.o := -I$(srctree)/lib/lwip/lwip/src/include -I$(srctree)/lib/lwip/u-boot
+obj-$(filter y,$(CONFIG_CMD_NET) $(CONFIG_CMD_NET_LWIP)) += net-common.o
+lwip-includes := -I$(srctree)/lib/lwip/lwip/src/include -I$(srctree)/lib/lwip/u-boot
+CFLAGS_net-lwip.o := $(lwip-includes)
+CFLAGS_net-common.o := $(lwip-includes)
 endif
 obj-$(CONFIG_ENV_SUPPORT) += nvedit.o
 obj-$(CONFIG_CMD_NVEDIT_EFI) += nvedit_efi.o
diff --git a/cmd/net-common.c b/cmd/net-common.c
new file mode 100644 (file)
index 0000000..1c9fb83
--- /dev/null
@@ -0,0 +1,109 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * (C) Copyright 2000
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ */
+
+#include <command.h>
+#include <dm/device.h>
+#include <dm/uclass.h>
+#include <net.h>
+#include <linux/compat.h>
+#include <linux/ethtool.h>
+
+static int do_net_list(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
+{
+       const struct udevice *current = eth_get_dev();
+       unsigned char env_enetaddr[ARP_HLEN];
+       const struct udevice *dev;
+       struct uclass *uc;
+
+       uclass_id_foreach_dev(UCLASS_ETH, dev, uc) {
+               eth_env_get_enetaddr_by_index("eth", dev_seq(dev), env_enetaddr);
+               printf("eth%d : %s %pM %s\n", dev_seq(dev), dev->name, env_enetaddr,
+                      current == dev ? "active" : "");
+       }
+       return CMD_RET_SUCCESS;
+}
+
+static int do_net_stats(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
+{
+       int nstats, err, i, off;
+       struct udevice *dev;
+       u64 *values;
+       u8 *strings;
+
+       if (argc < 2)
+               return CMD_RET_USAGE;
+
+       err = uclass_get_device_by_name(UCLASS_ETH, argv[1], &dev);
+       if (err) {
+               printf("Could not find device %s\n", argv[1]);
+               return CMD_RET_FAILURE;
+       }
+
+       if (!eth_get_ops(dev)->get_sset_count ||
+           !eth_get_ops(dev)->get_strings ||
+           !eth_get_ops(dev)->get_stats) {
+               printf("Driver does not implement stats dump!\n");
+               return CMD_RET_FAILURE;
+       }
+
+       nstats = eth_get_ops(dev)->get_sset_count(dev);
+       strings = kcalloc(nstats, ETH_GSTRING_LEN, GFP_KERNEL);
+       if (!strings)
+               return CMD_RET_FAILURE;
+
+       values = kcalloc(nstats, sizeof(u64), GFP_KERNEL);
+       if (!values)
+               goto err_free_strings;
+
+       eth_get_ops(dev)->get_strings(dev, strings);
+       eth_get_ops(dev)->get_stats(dev, values);
+
+       off = 0;
+       for (i = 0; i < nstats; i++) {
+               printf("  %s: %llu\n", &strings[off], values[i]);
+               off += ETH_GSTRING_LEN;
+       };
+
+       kfree(strings);
+       kfree(values);
+
+       return CMD_RET_SUCCESS;
+
+err_free_strings:
+       kfree(strings);
+
+       return CMD_RET_FAILURE;
+}
+
+static struct cmd_tbl cmd_net[] = {
+       U_BOOT_CMD_MKENT(list, 1, 0, do_net_list, "", ""),
+       U_BOOT_CMD_MKENT(stats, 2, 0, do_net_stats, "", ""),
+};
+
+static int do_net(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
+{
+       struct cmd_tbl *cp;
+
+       cp = find_cmd_tbl(argv[1], cmd_net, ARRAY_SIZE(cmd_net));
+
+       /* Drop the net command */
+       argc--;
+       argv++;
+
+       if (!cp || argc > cp->maxargs)
+               return CMD_RET_USAGE;
+       if (flag == CMD_FLAG_REPEAT && !cmd_is_repeatable(cp))
+               return CMD_RET_SUCCESS;
+
+       return cp->cmd(cmdtp, flag, argc, argv);
+}
+
+U_BOOT_CMD(
+       net, 3, 1, do_net,
+       "NET sub-system",
+       "list - list available devices\n"
+       "stats <device> - dump statistics for specified device\n"
+);
index 53ce2bc5d0ce32bc47801c5617a975bd98f3e985..c90578e1b9fc252d298e3394b7ea8425f79641b3 100644 (file)
--- a/cmd/net.c
+++ b/cmd/net.c
@@ -674,118 +674,3 @@ U_BOOT_CMD(
 );
 
 #endif  /* CONFIG_CMD_LINK_LOCAL */
-
-static int do_net_list(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
-{
-       const struct udevice *current = eth_get_dev();
-       unsigned char env_enetaddr[ARP_HLEN];
-       const struct udevice *dev;
-       struct uclass *uc;
-
-       uclass_id_foreach_dev(UCLASS_ETH, dev, uc) {
-               eth_env_get_enetaddr_by_index("eth", dev_seq(dev), env_enetaddr);
-               printf("eth%d : %s %pM %s\n", dev_seq(dev), dev->name, env_enetaddr,
-                      current == dev ? "active" : "");
-       }
-       return CMD_RET_SUCCESS;
-}
-
-static int do_net_stats(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
-{
-       int nstats, err, i, off;
-       struct udevice *dev;
-       u64 *values;
-       u8 *strings;
-
-       if (argc < 2)
-               return CMD_RET_USAGE;
-
-       err = uclass_get_device_by_name(UCLASS_ETH, argv[1], &dev);
-       if (err) {
-               printf("Could not find device %s\n", argv[1]);
-               return CMD_RET_FAILURE;
-       }
-
-       if (!eth_get_ops(dev)->get_sset_count ||
-           !eth_get_ops(dev)->get_strings ||
-           !eth_get_ops(dev)->get_stats) {
-               printf("Driver does not implement stats dump!\n");
-               return CMD_RET_FAILURE;
-       }
-
-       nstats = eth_get_ops(dev)->get_sset_count(dev);
-       strings = kcalloc(nstats, ETH_GSTRING_LEN, GFP_KERNEL);
-       if (!strings)
-               return CMD_RET_FAILURE;
-
-       values = kcalloc(nstats, sizeof(u64), GFP_KERNEL);
-       if (!values)
-               goto err_free_strings;
-
-       eth_get_ops(dev)->get_strings(dev, strings);
-       eth_get_ops(dev)->get_stats(dev, values);
-
-       off = 0;
-       for (i = 0; i < nstats; i++) {
-               printf("  %s: %llu\n", &strings[off], values[i]);
-               off += ETH_GSTRING_LEN;
-       };
-
-       return CMD_RET_SUCCESS;
-
-err_free_strings:
-       kfree(strings);
-
-       return CMD_RET_FAILURE;
-}
-
-static struct cmd_tbl cmd_net[] = {
-       U_BOOT_CMD_MKENT(list, 1, 0, do_net_list, "", ""),
-       U_BOOT_CMD_MKENT(stats, 2, 0, do_net_stats, "", ""),
-};
-
-static int do_net(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
-{
-       struct cmd_tbl *cp;
-
-       cp = find_cmd_tbl(argv[1], cmd_net, ARRAY_SIZE(cmd_net));
-
-       /* Drop the net command */
-       argc--;
-       argv++;
-
-       if (!cp || argc > cp->maxargs)
-               return CMD_RET_USAGE;
-       if (flag == CMD_FLAG_REPEAT && !cmd_is_repeatable(cp))
-               return CMD_RET_SUCCESS;
-
-       return cp->cmd(cmdtp, flag, argc, argv);
-}
-
-U_BOOT_CMD(
-       net, 3, 1, do_net,
-       "NET sub-system",
-       "list - list available devices\n"
-       "stats <device> - dump statistics for specified device\n"
-);
-
-#if defined(CONFIG_CMD_NCSI)
-static int do_ncsi(struct cmd_tbl *cmdtp, int flag, int argc, char * const argv[])
-{
-       if (!phy_interface_is_ncsi() || !ncsi_active()) {
-               printf("Device not configured for NC-SI\n");
-               return CMD_RET_FAILURE;
-       }
-
-       if (net_loop(NCSI) < 0)
-               return CMD_RET_FAILURE;
-
-       return CMD_RET_SUCCESS;
-}
-
-U_BOOT_CMD(
-       ncsi,   1,      1,      do_ncsi,
-       "Configure attached NIC via NC-SI",
-       ""
-);
-#endif  /* CONFIG_CMD_NCSI */