mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-16 01:44:34 +00:00
net: split cmd/net.c into cmd/net.c and cmd/net-common.c
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>
This commit is contained in:
parent
aedcfec9ed
commit
3135b9a916
3 changed files with 113 additions and 116 deletions
|
@ -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
|
||||
|
|
109
cmd/net-common.c
Normal file
109
cmd/net-common.c
Normal file
|
@ -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"
|
||||
);
|
115
cmd/net.c
115
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 */
|
||||
|
|
Loading…
Add table
Reference in a new issue