X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;ds=sidebyside;f=net%2Fnet.c;h=b4563a4cab1fbfbccf595ee40a5e865514d79884;hb=e3ec0d03bb1df69e8c9aba3eebba0690dc8e538b;hp=0b876913e35fe89a74d02e76348fe515cec1a2d9;hpb=bfebc8c965e41d62dc6355d09bdd63ca57011b99;p=u-boot diff --git a/net/net.c b/net/net.c index 0b876913e3..b4563a4cab 100644 --- a/net/net.c +++ b/net/net.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copied from Linux Monitor (LiMon) - Networking. * @@ -6,7 +7,6 @@ * Copyright 2000 Roland Borde * Copyright 2000 Paolo Scaffardi * Copyright 2000-2002 Wolfgang Denk, wd@denx.de - * SPDX-License-Identifier: GPL-2.0 */ /* @@ -87,6 +87,7 @@ #include #include #include +#include #include #if defined(CONFIG_LED_STATUS) #include @@ -108,8 +109,6 @@ #include "sntp.h" #endif -DECLARE_GLOBAL_DATA_PTR; - /** BOOTP EXTENTIONS **/ /* Our subnet mask (0=unknown) */ @@ -394,6 +393,7 @@ void net_init(void) int net_loop(enum proto_t protocol) { int ret = -EINVAL; + enum net_loop_state prev_net_state = net_state; net_restarted = 0; net_dev_exists = 0; @@ -431,6 +431,7 @@ restart: case 1: /* network not configured */ eth_halt(); + net_set_state(prev_net_state); return -ENODEV; case 2: @@ -453,6 +454,11 @@ restart: tftp_start_server(); break; #endif +#ifdef CONFIG_UDP_FUNCTION_FASTBOOT + case FASTBOOT: + fastboot_start_server(); + break; +#endif #if defined(CONFIG_CMD_DHCP) case DHCP: bootp_reset(); @@ -651,6 +657,7 @@ done: net_set_udp_handler(NULL); net_set_icmp_handler(NULL); #endif + net_set_state(prev_net_state); return ret; } @@ -683,7 +690,7 @@ int net_start_again(void) retry_forever = 0; } - if ((!retry_forever) && (net_try_count >= retrycnt)) { + if ((!retry_forever) && (net_try_count > retrycnt)) { eth_halt(); net_set_state(NETLOOP_FAIL); /* @@ -1324,6 +1331,7 @@ common: /* Fall through */ case NETCONS: + case FASTBOOT: case TFTPSRV: if (net_ip.s_addr == 0) { puts("*** ERROR: `ipaddr' not set\n"); @@ -1536,7 +1544,7 @@ ushort string_to_vlan(const char *s) return htons(id); } -ushort getenv_vlan(char *var) +ushort env_get_vlan(char *var) { return string_to_vlan(env_get(var)); }