summaryrefslogtreecommitdiff
path: root/net
AgeCommit message (Collapse)Author
2016-03-27bootp: Prevent u-boot from using others responses.Anton Persson
In rare circumstances two dhcp clients may generate the same bootp ID. If this happens it is vital that the client also checks the hw address in the received response to prevent IP address conflicts. Signed-off-by: Anton Persson <[email protected]>
2016-02-26net: bootp: Add environment variable for timeout periodAlexandre Messier
There is currently one config option (CONFIG_NET_RETRY_COUNT) that is available to tune the retries of the network stack. Unfortunately, it is global to all protocols, and the value is interpreted differently in all of them. Add a new environment variable that directly sets the retry period for BOOTP timeouts. If this new value is not set, the period is still derived from the default number of retries, or from CONFIG_NET_RETRY_COUNT if defined. When both the new variable is set and CONFIG_NET_RETRY_COUNT is defined, the variable has precedence. Signed-off-by: Alexandre Messier <[email protected]>
2016-02-06microblaze: Correct build error in eth-uclass.cSimon Glass
This fixes the following error when building microblaze-generic: net/eth-uclass.c: In function 'eth_post_probe': net/eth-uclass.c:466:18: error: 'gd' undeclared (first use in this function) ops->start += gd->reloc_off; Fixes: db9391e1 ("net: Move driver-model code into its own file") Signed-off-by: Simon Glass <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2016-01-28net: Add bootfile in DHCP RequestAlexandre Messier
Add the bootfile name in the DHCP Request packet, in addition to it already being sent in the DHCP Discover. This is needed by some DHCP servers so that the bootfile name is properly returned by the server to the client in the DHCP Ack, as expected by U-Boot. Signed-off-by: Alexandre Messier <[email protected]>
2016-01-28net: Rename eth.c to eth_lecacy.cSimon Glass
Rename this file to make it clear it is for the old networking drivers and not for use with driver model. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Bin Meng <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2016-01-28net: Move driver-model code into its own fileSimon Glass
Every other uclass is in its own file. Create a new eth-uclass.c file and move the driver-model code into it, so that networking is consistent. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Bin Meng <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2016-01-28net: Move remaining common functions to eth_common.cSimon Glass
Move eth_current_changed(), eth_set_current(), eth_mac_skip() and eth_get_name() into the common file. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Bin Meng <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2016-01-28net: Move environment functions to the common fileSimon Glass
Move the functions which set ethernet environment variables to the common file. Signed-off-by: Simon Glass <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2016-01-28net: Move common init into a new eth_common.c fileSimon Glass
Only half of the init is actually common. Move that part into a new common file and call it from driver-model and legacy code. More common functions will be added in future patches. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Bin Meng <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2016-01-28net: Don't call board/cpu_eth_init() with driver modelSimon Glass
We should avoid weak functions with driver model. Existing boards that use driver model don't need them, so let's kill them off. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Bin Meng <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2016-01-28net: bootp: Ignore packets whose yiaddr is 0Peng Fan
When doing `dhcp`, there is a bad dhcp server in my network which always reply dhcp request with yiaddr 0, which cause uboot can not successfully get ipaddr from the good dhcp server. But the Linux PC can get the ip address even if there is a bad dhcp server. This patch is to fix that even if there is a bad dhcp server, uboot can still get ipaddr and tftp work ok. The way is to ignore the packets from the bad dhcp server by filtering out the yiaddr whose value is 0. Signed-off-by: Peng Fan <[email protected]> Cc: Joe Hershberger <[email protected]> Reviewed-by: Wolfgang Denk <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2016-01-08net: remove scary warning about EEPROM provided MAC addressAndre Przywara
In many parts of the computing world having a unique MAC address sitting in some on-NIC storage is considered the normal case. Remove the warning to not scare the user unnecessarily. This applies to Highbank/Midway and ARM's Juno, for instance. Besides that this fixes the formatting on Midway, for instance, which currently looks like: ... Net: xgmac0 Warning: xgmac0 using MAC address from net device , xgmac1 Warning: xgmac1 using MAC address from net device ... Signed-off-by: Andre Przywara <[email protected]>
2016-01-07net: Fix delay in net_retry testJoe Hershberger
Introduced in 45b4773 (net/arp: account for ARP delay, avoid duplicate packets on timeout) Check the arp timeout and adjust the timeout start time before the call to eth_recv() so that the sandbox driver has the opportunity to adjust the sandbox timer after the new start time has been recorded. Also, change the adjustment amount by 11 seconds instead of exactly the 10 seconds that the ping timout is expecting since the timeout check is looking for the time elapsed to be greater than but not equal to the specified delay. Signed-off-by: Joe Hershberger <[email protected]> Reviewed-by: Stefan Brüns <[email protected]> Acked-by: Simon Glass <[email protected]>
2016-01-07dm: eth: Stick to 'ethact' when 'ethrotate' is 'no' in eth_init()Bin Meng
When 'ethrotate' variable is set to 'no' and 'ethact' variable is already set to an ethernet device, we should stick to 'ethact'. Signed-off-by: Bin Meng <[email protected]> Acked-by: Joe Hershberger <[email protected]> Acked-by: Simon Glass <[email protected]> Tested-by: Simon Glass <[email protected]>
2016-01-07dm: eth: Test 'ethrotate' before changing current ethernet deviceBin Meng
In eth_current_changed(), the call to eth_get_dev() below has a side effect of rotating ethernet device if uc_priv->current == NULL. This is not what we want when 'ethrotate' variable is 'no'. Signed-off-by: Bin Meng <[email protected]> Acked-by: Joe Hershberger <[email protected]> Acked-by: Simon Glass <[email protected]> Tested-by: Simon Glass <[email protected]>
2015-12-18dm: net: Fix DM for targets which use MANUAL_RELOCMichal Simek
All ethernet operation needs to be updated for architectures which requires MANUAL_RELOC. Signed-off-by: Michal Simek <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2015-11-19Move console definitions into a new console.h fileSimon Glass
The console includes a global variable and several functions that are only used by a small subset of U-Boot files. Before adding more functions, move the definitions into their own header file. Signed-off-by: Simon Glass <[email protected]>
2015-10-29net: eth: Check return value in various placesBin Meng
eth_get_dev() can return NULL which means device_probe() fails for that ethernet device. Add return value check in various places or U-Boot will crash due to NULL pointer access. With this commit, 'dm_test_eth_act' test case passes. Signed-off-by: Bin Meng <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2015-10-29net: eth: Clear MAC address in eth_pre_remove()Bin Meng
platdata->enetaddr was assigned to a value in dev_probe() last time. If we don't clear it, for dev_probe() at the second time, dm eth will end up treating it as a MAC address from ROM no matter where it came from originally (maybe env, ROM, or even random). Fix this by clearing platdata->enetaddr when removing an Ethernet device. Signed-off-by: Bin Meng <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2015-10-29net: Increase the size of the net_boot_file_name bufferJacob Stiffler
The net_boot_file_name buffer is used as storage for the bootfilename command line argument to network boot commands such as tftp and nfs. Increase the size of this buffer to 1024 bytes as the current size of 128 bytes is restrictive for arbitrary paths on the server. Signed-off-by: Jacob Stiffler <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2015-10-29net: parse DHCP options from overloaded file/sname fieldsStefan Brüns
If Option 52 in the vendor option field signals overloading of the file and/or sname fields, these field may contain additional options. Formatting of file/sname contained options is the same as in the vendor options field, but without the leading magic. Signed-off-by: Stefan Brüns <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2015-10-29net: Do not overwrite options found in overloaded 'file' fieldStefan Brüns
If 'file' is overloaded, it is wrong to get or put the bootfile name from it/to it. Signed-off-by: Stefan Brüns <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2015-10-28net: change the env name to use constJosh Wu
As we don't modify the 'name' parameter, so change it to const. Signed-off-by: Josh Wu <[email protected]> Reviewed-by: Simon Glass <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2015-10-28net/eth: fix a bug in on_ethaddr()Gong Qianyu
The loop should check all ethenet devices, not only the first device, to set each specified ethaddr, or it'll cause failure when we use other devices. Signed-off-by: Gong Qianyu <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2015-10-28net: cancel timeout handler after DHCPACKStefan Brüns
Timeout handler should be stopped after reception of DHCPACK. If "autoload" is not set, the handler is immediately replaced by the TFTP handler, otherwise it may trigger before the next boot stage begins. Signed-off-by: Stefan Brüns <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2015-10-28net/arp: account for ARP delay, avoid duplicate packets on timeoutStefan Brüns
eth_rx() in the main reception loop may trigger sending a packet which is already timed out (or will immediately) upon reception of an ARP reply. As long as the ARP reply is pending, the timeout handler of a packet should be postponed. Happens on TFTP with bad network (e.g. WLAN). Signed-off-by: Stefan Brüns <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2015-10-28net/arp: Do not run net_start_again() on timeoutStefan Brüns
net_start_again() will be called from net_loop() if state is NETLOOP_FAIL. Signed-off-by: Stefan Brüns <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2015-10-28net: Fix parsing of Bootp/DHCP option 0 (Pad)Stefan Brüns
Pad has no len byte, so the normal parsing code fails. Signed-off-by: Stefan Brüns <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2015-10-28net: send RFC1542 compliant value for bootp requestsStefan Brüns
RFC1542, 3.2: "The 'secs' field of a BOOTREQUEST message SHOULD represent the elapsed time, in seconds, since the client sent its first BOOTREQUEST message. Note that this implies that the 'secs' field of the first BOOTREQUEST message SHOULD be set to zero." Signed-off-by: Stefan Brüns <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2015-10-28net: reject Bootp/DHCP packets with bad OP valueStefan Brüns
Rename check_packet to check_reply_packet to make its function more obvious. The check for DHCP_* values is completely off, as it should compare against DHCP option 53 (Message Type). Only valid value for any Bootp/DHCP reply is BOOTREPLY. Signed-off-by: Stefan Brüns <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2015-10-28net: protect status led access in bootpThomas Chou
This fixes the error when STATUS_LED_BOOT is not defined. Signed-off-by: Thomas Chou <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2015-10-28net: bootp fix vci string on SPL-BootHannes Petermaier
If CONFIG_CMD_DHCP is enabled, the vci (vendor-class-identifier) string isn't inserted into the bootp-packet during SPL stage because the CONFIG_BOOTP_VCI_STRING instead CONFIG_SPL_NET_VCI_STRING We fix this with testing for CONFIG_SPL_BUILD and testing for existing CONFIG_SPL_NET_VCI_STRING. Signed-off-by: Hannes Schmelzer <[email protected]> Acked-by: Joe Hershberger <[email protected]> Reviewed-by: Tom Rini <[email protected]>
2015-10-28net: TFTP: variables cleanup and additionAlbert ARIBAUD \(3ADEV\)
TFTP source and destination port variable names are 'tftpsrcp' and 'tftpdstp' in the code, but 'tftpsrcport' and 'tftpdstport' in the README file. Fix the README. Add environment variable 'tftptimeoutcountmax'. As per the comments about the global variable tftp_timeout_count_max, make sure tftptimeoutcountmax is nonnegative. Introduce configuration option CONFIG_NET_TFTP_VARS, which controls whether environment variables tftpblocksize, tftptimeout, and tftptimoueoutcountmax are read by the TFTP client code. CONFIG_NET_TFTP_VARS defaults to y but can be set to n by targets with to tight size contraints. Make bf527-ezkit set CONFIG_NET_TFTP_VARS to n to keep the target size below limit.
2015-09-29net: support NETCONSOLE option via KconfigBernhard Nortmann
This patch introduces CONFIG_NETCONSOLE as an option to the Kconfig system. Joe Hershberger pointed out that it may not be entirely free of problems, as many boards predating the driver model define this symbol directly via include files. In case they're not properly migrated, their NetConsole might 'vanish' if they start to use CONFIG_NET or CONFIG_NETDEVICES. Signed-off-by: Bernhard Nortmann <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2015-09-29net: expose eth_is_active() function to test network device stateBernhard Nortmann
The previous eth_device struct returned by eth_get_dev() allowed code to directly query the state member field. However, with CONFIG_DM_ETH this data gets encapsulated (i.e. private), and eth_get_dev() returns a udevice struct 'abstraction' instead. This breaks legacy code relying on the former behaviour - e.g. netconsole. (see http://lists.denx.de/pipermail/u-boot/2015-June/216528.html) The patch introduces a method to retrieve the ethernet device state in a 'clean' and uniform way, supporting both legacy code and driver model. The new function eth_is_active() accepts a device struct pointer and tests it for ETH_STATE_ACTIVE. Signed-off-by: Bernhard Nortmann <[email protected]> Reviewed-by: Simon Glass <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2015-09-09dm: eth: Correctly detect alias in eth_get_dev_by_name()Bin Meng
When given a device name string, we should test to see if it is really an alias like "eth#". Signed-off-by: Bin Meng <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2015-09-09dm: eth: Do not print misleading "Net Initialization Skipped"Bin Meng
With driver model, board_eth_init() or cpu_eth_init() is not a must. Thus we don't need print a misleading "Net Initialization Skipped". Signed-off-by: Bin Meng <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2015-09-09net: Revert "tftp: adjust settings to be suitable for 100Mbit ethernet"Bin Meng
Commit 620776d "tftp: adjust settings to be suitable for 100Mbit ethernet" causes the following error message when trying to load a file using 'tftp' command via a tftp server. TFTP error: 'Unsupported option(s) requested' (8) This is due to with commit 620776d changes, the tftp option 'timeout' value is now set to zero which is an invalid value as per RFC2349 [1]. Valid values range between "1" and "255" seconds, inclusive. With some tftp servers that strictly implement the RFC requirement, it reports such an error message. Revert commit 620776d for RFC compliance. [1] https://www.ietf.org/rfc/rfc2349.txt Signed-off-by: Bin Meng <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2015-09-07net: tftp: Move tftp.h file from ./net to ./include/netLukasz Majewski
This change gives the ability to reuse the <tftp.h> header file by other subsystems (like e.g. dfu). Without this change compilation error emerges for the legacy update.c file. Signed-off-by: Lukasz Majewski <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2015-08-21net: Return -EINTR when ctrl+c is pressedMichal Simek
Current behavior is that if CTRL+C is pressed command returns 0 that was successful which is not correct behavior. The easiest test case is "tftpboot 80000 uImage && echo yes" and press CTRL+C. Then the second command is called which is incorrect. Error log: zynq-uboot> tftpb 80000 uImage && echo yes Gem.e000b000:7 is connected to Gem.e000b000. Reconnecting to Gem.e000b000 Gem.e000b000 Waiting for PHY auto negotiation to complete....... done Using Gem.e000b000 device TFTP from server 192.168.0.102; our IP address is 192.168.0.101 Filename 'uImage'. Load address: 0x80000 Loading: ################ Abort yes zynq-uboot> This patch adds -EINTR return value when CTRL+C is pressed. Signed-off-by: Michal Simek <[email protected]> Reviewed-by: Tom Rini <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2015-08-21tftp: adjust settings to be suitable for 100Mbit ethernetPavel Machek
Adjust timouts and retry counts to be suitable for loaded ethernet network. With 5 seconds timeout, 10 retries maximum, tftp is impossible even on local network with single full-speed TCP connection. 100msec timeout should be suitable for most networks tftp is used on, that is local ethernets. Timeout count really needs to be way higher, as lost packets are normal when TCP is running over the same network. Enforce 10msec minimum. Signed-off-by: Pavel Machek <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2015-08-12tftp.c: fix CONFIG_TFTP_TSIZE for small filesMax Krummenacher
CONFIG_TFTP_TSIZE should limit a tftp downloads progress to 50 '#' chars. Make this work also for small files. If the file size is small, i.e. smaller than 2 tftp block sizes the number of '#' can get much larger. i.e. with a 1 byte file 65000 characters are printed, with a 512 byte file around 500. When using CONFIG TFTP BLOCKSIZE together with CONFIG_IP_DEFRAG the issue is more notable. Signed-off-by: Max Krummenacher <[email protected]> Signed-off-by: Marcel Ziswiler <[email protected]> Reviewed-by: Marek Vasut <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2015-07-21net: Allow drivers to return -ENOSYS with the write_hwaddr() methodSimon Glass
Some drivers may want to implement this method for some of their devices but not for others. So it is not possible to just leave the operation out of the table. Drivers could get around this by masquerading as two separate drivers but that seems unpleasant. Allow the driver to return an error when it does not want to process the write_hwaddr() method. Signed-off-by: Simon Glass <[email protected]>
2015-07-21dm: eth: Avoid blocking on packet receptionSimon Glass
Some devices can take a long time to work out whether they have a new packet or now. For example the ASIX USB Ethernet dongle can take 5 seconds to do this, since it waits until it gets a new packet on the wire before allowing the USB bulk read packet to be submitted. At present with driver mode the Ethernet receive code reads 32 packets. This can take a very long time if we must wait for all 32 packets. The old code (before driver model) worked by reading a single set of packets from the USB device, then processing all the packets with in. It would be nice to use the same behaviour with driver model. Add a flag to the receive method which indicates that the driver should try to find a packet if available, by consulting the hardware. When the flag is not set, it should just return any packet data it has already received. If there is none, it should return -EAGAIN so that the loop will terminate. Signed-off-by: Simon Glass <[email protected]>
2015-07-08Allow CONFIG_REGEX to be disabled when CONFIG_NETJoe Hershberger
Instead of selecting REGEX when NET is enabled, make it the default, but allow boards that are tiny to disable it and lose functionality on all but the first Ethernet adapter. cm-bf548, bf538f-ezkit, and bf533-stamp need this. None appear to have more than one Ethernet interface. Signed-off-by: Joe Hershberger <[email protected]>
2015-06-01net: Fix NET_RANDOM_ETHADDR dependenciesMichal Simek
NET_RANDOM_ETHADDR depends on lib/rand.c. This patch adds dependency to Kconfig to ensure that library is also compiled. Remove the definitions from Blackfin boards' include/configs. Signed-off-by: Michal Simek <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2015-05-21net: Handle ethaddr changes as an env callbackJoe Hershberger
When the ethaddr is changed in the env, update the device pdata at the same time (only if it is probed for the DM case; only if registered for the non-DM case). Again this gets us closer to completely non-polled env needed to simplify the net_loop. This requires that the NET feature select the REGEX feature. Signed-off-by: Joe Hershberger <[email protected]>
2015-05-21net: Remove duplicate bootfile syncing functionalityJoe Hershberger
The bootfile env var is already kept up to date by the callback in net.c so there is no need to poll it too. Signed-off-by: Joe Hershberger <[email protected]>
2015-05-21net: Use env callbacks for net variablesJoe Hershberger
Instead of checking for changes to the env each time we enter the net_loop, use the env callbacks to update the values of the variables. Don't update the variables when the source was programmatic, since the variables were the source of the new value. Signed-off-by: Joe Hershberger <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2015-05-19net: Implement random ethaddr fallback in eth.cJoe Hershberger
Implement the random ethaddr fallback in eth.c so it is in a common place and not reimplemented in each board or driver that wants this behavior. Signed-off-by: Joe Hershberger <[email protected]> Reviewed-by: Simon Glass <[email protected]>