#
# Network configuration
#

menuconfig NET
	bool "Networking support"
	default y
	imply NETDEVICES

if NET

config ARP_TIMEOUT
	int "Milliseconds before trying ARP again"
	default 5000

config NET_RETRY_COUNT
	int "Number of timeouts before giving up"
	default 5
	help
	  This variable defines the number of retries for network operations
	  like ARP, RARP, TFTP, or BOOTP before giving up the operation.

config PROT_UDP
	bool "Enable generic udp framework"
	help
	  Enable a generic udp framework that allows defining a custom
	  handler for udp protocol.

config BOOTDEV_ETH
	bool "Enable bootdev for ethernet"
	depends on BOOTSTD
	default y
	help
	  Provide a bootdev for ethernet so that is it possible to boot
	  an operationg system over the network, using the PXE (Preboot
	  Execution Environment) protocol.

config BOOTP_SEND_HOSTNAME
	bool "Send hostname to DNS server"
	help
	  Some DHCP servers are capable to do a dynamic update of a
	  DNS server. To do this, they need the hostname of the DHCP
	  requester.
	  If CONFIG_BOOTP_SEND_HOSTNAME is defined, the content
          of the "hostname" environment variable is passed as
          option 12 to the DHCP server.

config NET_RANDOM_ETHADDR
	bool "Random ethaddr if unset"
	help
	  Selecting this will allow the Ethernet interface to function even
	  when the ethaddr variable for that interface is unset.  In this case,
	  a random MAC address in the locally administered address space is
	  generated. It will be saved to the appropriate environment variable,
	  too.

config NETCONSOLE
	bool "NetConsole support"
	help
	  Support the 'nc' input/output device for networked console.
	  See doc/usage/netconsole.rst for details.

config IP_DEFRAG
	bool "Support IP datagram reassembly"
	help
	  Selecting this will enable IP datagram reassembly according
	  to the algorithm in RFC815.

config NET_MAXDEFRAG
	int "Size of buffer used for IP datagram reassembly"
	depends on IP_DEFRAG
	default 16384
	range 1024 65536
	help
	  This defines the size of the statically allocated buffer
	  used for reassembly, and thus an upper bound for the size of
	  IP datagrams that can be received.

config SYS_FAULT_ECHO_LINK_DOWN
	bool "Echo the inverted Ethernet link state to the fault LED"
	help
	  Echo the inverted Ethernet link state to the fault LED.  Note, if
	  this option is active, then CONFIG_SYS_FAULT_MII_ADDR also needs to
	  be configured.

config TFTP_BLOCKSIZE
	int "TFTP block size"
	default 1468
	help
	  Default TFTP block size.
	  The MTU is typically 1500 for ethernet, so a TFTP block of
	  1468 (MTU minus eth.hdrs) provides a good throughput with
	  almost-MTU block sizes.
	  You can also activate CONFIG_IP_DEFRAG to set a larger block.

config TFTP_PORT
	bool "Set TFTP UDP source/destination ports via the environment"
	help
	  If this is defined, the environment variable tftpsrcp is used to
	  supply the TFTP UDP source port value.  If tftpsrcp isn't defined,
	  the normal pseudo-random port number generator is used.

	  Also, the environment variable tftpdstp is used to supply the TFTP
	  UDP destination port value.  If tftpdstp isn't defined, the normal
	  port 69 is used.

	  The purpose for tftpsrcp is to allow a TFTP server to blindly start
	  the TFTP transfer using the pre-configured target IP address and UDP
	  port. This has the effect of "punching through" the (Windows XP)
	  firewall, allowing the remainder of the TFTP transfer to proceed
	  normally.  A better solution is to properly configure the firewall,
	  but sometimes that is not allowed.

config TFTP_WINDOWSIZE
	int "TFTP window size"
	default 1
	help
	  Default TFTP window size.
	  RFC7440 defines an optional window size of transmits,
	  before an ack response is required.
	  The default TFTP implementation implies a window size of 1.

config TFTP_TSIZE
	bool "Track TFTP transfers based on file size option"
	depends on CMD_TFTPBOOT
	default y if (ARCH_OMAP2PLUS || ARCH_K3)
	help
	  By default, TFTP progress bar is increased for each received UDP
	  frame, which can lead into long time being spent for sending
	  data over the UART. Enabling this option, TFTP queries the file
	  size from server, and if supported, limits the progress bar to
	  50 characters total which fits on single line.

config SERVERIP_FROM_PROXYDHCP
	bool "Get serverip value from Proxy DHCP response"
	help
	  Allows bootfile config to be fetched from Proxy DHCP server
		while IP is obtained from main DHCP server.

config SERVERIP_FROM_PROXYDHCP_DELAY_MS
	int "# of additional milliseconds to wait for ProxyDHCP response"
	default 100
	help
	  Amount of additional time to wait for ProxyDHCP response after
		receiving response from main DHCP server. Has no effect if
		SERVERIP_FROM_PROXYDHCP is false.

config KEEP_SERVERADDR
	bool "Write the server's MAC address to 'serveraddr'"
	default y if SANDBOX
	help
	  Keeps the server's MAC address, in the env 'serveraddr'
	  for passing to bootargs (like Linux's netconsole option). If this is
	  enabled, when an ARP reply is received, the server's IP address is
	  written there.

config UDP_CHECKSUM
	bool "Check the UDP checksum"
	default y if SANDBOX
	help
	  Enable this to verify the checksum on UDP packets. If the checksum
	  is wrong then the packet is discarded and an error is shown, like
	  "UDP wrong checksum 29374a23 30ff3826"

config BOOTP_SERVERIP
	bool "Use the 'serverip' env var for tftp, not bootp"
	help
	  Enable this if the TFTP server will be the 'serverip' environment
	  variable, not the BOOTP server. This affects the operation of both
	  bootp and tftp.

config BOOTP_MAX_ROOT_PATH_LEN
	int "Option 17 root path length"
	default 64
	help
	  Select maximal length of option 17 root path.

config USE_GATEWAYIP
	bool "Set a default 'gateway' value in the environment"
	help
	  Defines a default value for the IP address of the default router
	  where packets to other networks are sent to.  (Environment variable
	  "gatewayip")

config GATEWAYIP
	string "Value of the default 'gateway' value in the environment"
	depends on USE_GATEWAYIP

config USE_IPADDR
	bool "Set a default 'ipaddr' value in the environment"
	help
	  Define a default value for the IP address to use for the default
	  Ethernet interface, in case this is not determined through e.g.
	  bootp.  (Environment variable "ipaddr")

config IPADDR
	string "Value of the default 'ipaddr' value in the environment"
	depends on USE_IPADDR

config USE_NETMASK
	bool "Set a default 'netmask' value in the environment"
	help
	  Defines a default value for the subnet mask (or routing prefix) which
	  is used to determine if an IP address belongs to the local subnet or
	  needs to be forwarded through a router.  (Environment variable "netmask")

config NETMASK
	string "Value of the default 'netmask' value in the environment"
	depends on USE_NETMASK

config USE_ROOTPATH
	bool "Set a default 'rootpath' value in the environment"

config ROOTPATH
	string "Value of the default 'rootpath' value in the environment"
	depends on USE_ROOTPATH
	default "/opt/nfsroot"

config USE_SERVERIP
	bool "Set a default 'serverip' value in the environment"
	help
	  Defines a default value for the IP address of a TFTP server to
	  contact when using the "tftboot" command.  (Environment variable
	  "serverip")

config SERVERIP
	string "Value of the default 'serverip' value in the environment"
	depends on USE_SERVERIP

config PROT_TCP
	bool "TCP stack"
	help
	  Enable a generic tcp framework that allows defining a custom
	  handler for tcp protocol.

config PROT_TCP_SACK
	bool "TCP SACK support"
	depends on PROT_TCP
	help
	  TCP protocol with SACK. SACK means selective acknowledgements.
	  By turning this option on TCP will learn what segments are already
	  received. So that it improves TCP's retransmission efficiency.
	  This option should be turn on if you want to achieve the fastest
	  file transfer possible.

config IPV6
	bool "IPv6 support"
	help
	  Enable IPv6 support. It includes Neighbour Discovery protocol, ICMPv6
	  and auxiliary stuff to make it work. Since it is enabled u-boot
	  network subsystem can get and handle incoming packets and send packets
	  through IPv6 network. It allows to use environment variables such as
	  ip6addr, serverip6. If a u-boot command is capable to parse an IPv6
	  address and find it, it will force using IPv6 in the network stack.

endif   # if NET

config SYS_RX_ETH_BUFFER
	int "Number of receive packet buffers"
	default 4
	help
	  Defines the number of Ethernet receive buffers. On some Ethernet
	  controllers it is recommended to set this value to 8 or even higher,
	  since all buffers can be full shortly after enabling the interface on
	  high Ethernet traffic.
