X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=drivers%2Fnet%2Fnetconsole.c;h=ce5a15ef57cea6ae378ef2dbd0ca3fbd2122a326;hb=ae485b540f3b5555f5e043eaf2c8e859052f3b14;hp=31042a6b6ba76566a0c74bd99918b710e8f516af;hpb=1733259d25015c28c47990ec11af99b3f62f811c;p=u-boot diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c index 31042a6b6b..ce5a15ef57 100644 --- a/drivers/net/netconsole.c +++ b/drivers/net/netconsole.c @@ -1,8 +1,7 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * (C) Copyright 2004 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. - * - * SPDX-License-Identifier: GPL-2.0+ */ #include @@ -10,8 +9,6 @@ #include #include -DECLARE_GLOBAL_DATA_PTR; - #ifndef CONFIG_NETCONSOLE_BUFFER_SIZE #define CONFIG_NETCONSOLE_BUFFER_SIZE 512 #endif @@ -62,8 +59,8 @@ static int is_broadcast(struct in_addr ip) /* update only when the environment has changed */ if (env_changed_id != env_id) { - netmask = getenv_ip("netmask"); - our_ip = getenv_ip("ipaddr"); + netmask = env_get_ip("netmask"); + our_ip = env_get_ip("ipaddr"); env_changed_id = env_id; } @@ -82,11 +79,11 @@ static int refresh_settings_from_env(void) /* update only when the environment has changed */ if (env_changed_id != env_id) { - if (getenv("ncip")) { - nc_ip = getenv_ip("ncip"); + if (env_get("ncip")) { + nc_ip = env_get_ip("ncip"); if (!nc_ip.s_addr) return -1; /* ncip is 0.0.0.0 */ - p = strchr(getenv("ncip"), ':'); + p = strchr(env_get("ncip"), ':'); if (p != NULL) { nc_out_port = simple_strtoul(p + 1, NULL, 10); nc_in_port = nc_out_port; @@ -95,10 +92,10 @@ static int refresh_settings_from_env(void) nc_ip.s_addr = ~0; /* ncip is not set, so broadcast */ } - p = getenv("ncoutport"); + p = env_get("ncoutport"); if (p != NULL) nc_out_port = simple_strtoul(p, NULL, 10); - p = getenv("ncinport"); + p = env_get("ncinport"); if (p != NULL) nc_in_port = simple_strtoul(p, NULL, 10); @@ -153,14 +150,17 @@ int nc_input_packet(uchar *pkt, struct in_addr src_ip, unsigned dest_port, len = sizeof(input_buffer) - input_size; end = input_offset + input_size; - if (end > sizeof(input_buffer)) + if (end >= sizeof(input_buffer)) end -= sizeof(input_buffer); chunk = len; - if (end + len > sizeof(input_buffer)) { + /* Check if packet will wrap in input_buffer */ + if (end + len >= sizeof(input_buffer)) { chunk = sizeof(input_buffer) - end; + /* Copy the second part of the pkt to start of input_buffer */ memcpy(input_buffer, pkt + chunk, len - chunk); } + /* Copy first (or only) part of pkt after end of current valid input*/ memcpy(input_buffer + end, pkt, chunk); input_size += len; @@ -170,7 +170,11 @@ int nc_input_packet(uchar *pkt, struct in_addr src_ip, unsigned dest_port, static void nc_send_packet(const char *buf, int len) { +#ifdef CONFIG_DM_ETH + struct udevice *eth; +#else struct eth_device *eth; +#endif int inited = 0; uchar *pkt; uchar *ether; @@ -183,7 +187,7 @@ static void nc_send_packet(const char *buf, int len) return; if (!memcmp(nc_ether, net_null_ethaddr, 6)) { - if (eth->state == ETH_STATE_ACTIVE) + if (eth_is_active(eth)) return; /* inside net loop */ output_packet = buf; output_packet_len = len; @@ -194,7 +198,7 @@ static void nc_send_packet(const char *buf, int len) return; } - if (eth->state != ETH_STATE_ACTIVE) { + if (!eth_is_active(eth)) { if (eth_is_on_demand_init()) { if (eth_init() < 0) return; @@ -292,7 +296,11 @@ static int nc_stdio_getc(struct stdio_dev *dev) static int nc_stdio_tstc(struct stdio_dev *dev) { +#ifdef CONFIG_DM_ETH + struct udevice *eth; +#else struct eth_device *eth; +#endif if (input_recursion) return 0; @@ -301,7 +309,7 @@ static int nc_stdio_tstc(struct stdio_dev *dev) return 1; eth = eth_get_dev(); - if (eth && eth->state == ETH_STATE_ACTIVE) + if (eth_is_active(eth)) return 0; /* inside net loop */ input_recursion = 1; @@ -322,7 +330,7 @@ int drv_nc_init(void) memset(&dev, 0, sizeof(dev)); strcpy(dev.name, "nc"); - dev.flags = DEV_FLAGS_OUTPUT | DEV_FLAGS_INPUT | DEV_FLAGS_SYSTEM; + dev.flags = DEV_FLAGS_OUTPUT | DEV_FLAGS_INPUT; dev.start = nc_stdio_start; dev.putc = nc_stdio_putc; dev.puts = nc_stdio_puts;