summaryrefslogtreecommitdiff
path: root/net/eth.c
AgeCommit message (Collapse)Author
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-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-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-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-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-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-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-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-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]>
2015-05-19net: Update hardware MAC address if it changes in envJoe Hershberger
When the ethaddr changes in the env, the hardware should also be updated so that MAC filtering will work properly without resetting U-Boot. Also remove the manual calls to set the hwaddr that was included in a few drivers as a result of the framework not doing it. Reported-by: Michal Simek <[email protected]> Signed-off-by: Joe Hershberger <[email protected]> Tested-by: Michal Simek <[email protected]>
2015-04-18dm: net: Use existing Ethernet init for driver modelSimon Glass
At present even with driver model is used there is still much manual init of related devices: PHY, environment and board init. Until these requirements are dealt with in another way we need to keep them around. Break out the init portion of the legacy eth_initialize() into a separate function and call it from both the legacy and driver model eth_initialize() functions. Signed-off-by: Simon Glass <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2015-04-18net: cosmetic: Fix checkpatch.pl failures in net.cJoe Hershberger
Finish eliminating CamelCase from net.c and other failures Signed-off-by: Joe Hershberger <[email protected]> Acked-by: Simon Glass <[email protected]>
2015-04-18net: cosmetic: Fix checkpatch.pl failures in eth.cJoe Hershberger
There were still a few failures in net/eth.c, especially in the legacy part of the code. Signed-off-by: Joe Hershberger <[email protected]> Acked-by: Simon Glass <[email protected]>
2015-04-18net: cosmetic: Name ethaddr variables consistentlyJoe Hershberger
Use "_ethaddr" at the end of variables and drop CamelCase. Make constant values actually 'const'. Signed-off-by: Joe Hershberger <[email protected]> Acked-by: Simon Glass <[email protected]>
2015-04-18net: cosmetic: Fixup var names related to boot fileJoe Hershberger
The variables around the bootfile were inconsistent and used CamelCase. Update them to make the code more readable. Signed-off-by: Joe Hershberger <[email protected]> Acked-by: Simon Glass <[email protected]>
2015-04-18net: cosmetic: Change IPaddr_t to struct in_addrJoe Hershberger
This patch is simply clean-up to make the IPv4 type that is used match what Linux uses. It also attempts to move all variables that are IP addresses use good naming instead of CamelCase. No functional change. Signed-off-by: Joe Hershberger <[email protected]> Acked-by: Simon Glass <[email protected]>
2015-04-18dm: eth: Provide a way for drivers to manage packet buffersJoe Hershberger
Some drivers need a chance to manage their receive buffers after the packet has been handled by the network stack. Add an operation that will allow the driver to be called in that case. Reported-by: Simon Glass <[email protected]> Signed-off-by: Joe Hershberger <[email protected]> Acked-by: Simon Glass <[email protected]> Tested-by: Simon Glass <[email protected]> Tested-on: pcduino3
2015-04-18net: Improve error handlingJoe Hershberger
Take a pass at plumbing errors through to the users of the network stack Currently only the start() function errors will be returned from NetLoop(). recv() tends not to have errors, so that is likely not worth adding. send() certainly can return errors, but this patch does not attempt to plumb them yet. halt() is not expected to error. Signed-off-by: Joe Hershberger <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2015-04-18dm: eth: Add support for ethprime env varJoe Hershberger
The ethprime env var is used to indicate the starting device if none is specified in ethact. Also support aliases specified in the ethprime var. Signed-off-by: Joe Hershberger <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2015-04-18dm: eth: Add support for aliasesJoe Hershberger
Allow network devices to be referred to as "eth0" instead of "eth@12345678" when specified in ethact. Add tests to verify this behavior. Signed-off-by: Joe Hershberger <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2015-04-18dm: eth: Pass the packet pointer as a parameter to recvJoe Hershberger
Stop forcing drivers to call net_process_received_packet() - formerly called NetReceive(). Now the uclass will handle calling the driver for each packet until the driver errors or has nothing to return. The uclass will then pass the good packets off to the network stack by calling net_process_received_packet(). Signed-off-by: Joe Hershberger <[email protected]>
2015-04-18dm: eth: Add basic driver model support to Ethernet stackJoe Hershberger
First just add support for MAC drivers. Signed-off-by: Joe Hershberger <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2015-04-18net: Remove the bd* parameter from net stack functionsJoe Hershberger
This value is not used by the network stack and is available in the global data, so stop passing it around. For the one legacy function that still expects it (init op on old Ethernet drivers) pass in the global pointer version directly to avoid changing that interface. Signed-off-by: Joe Hershberger <[email protected]> Reported-by: Simon Glass <[email protected]> Reviewed-by: Simon Glass <[email protected]> Signed-off-by: Simon Glass <[email protected]> (Trival fix to remove an unneeded variable declaration in 4xx_enet.c)
2015-04-18net: Use int instead of u8 for boolean flagJoe Hershberger
On some archs masking the parameter is inefficient, so don't use u8. Signed-off-by: Joe Hershberger <[email protected]> Reported-by: Simon Glass <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2015-04-18net: Change return codes from net/eth.c to use errorno constantsJoe Hershberger
Many functions returned -1 previously. Change them to return appropriate error codes. Signed-off-by: Joe Hershberger <[email protected]> Reported-by: Simon Glass <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2015-04-18net: Refactor in preparation for driver modelJoe Hershberger
Move some things around and organize things so that the driver model implementation will fit in more easily. Signed-off-by: Joe Hershberger <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2015-04-18net: Rename helper function to be more clearJoe Hershberger
Make it clear that the helper is checking the addr, not setting it. Signed-off-by: Joe Hershberger <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2014-10-25eth: make eth_address_set staticJeroen Hofstee
Signed-off-by: Jeroen Hofstee <[email protected]>
2014-07-22Ethernet: let user know if there is no valid ethernet addressPavel Machek
Improve error messages in case of invalid/unset ethernet addresses. Signed-off-by: Pavel Machek <[email protected]>
2014-05-12net: rename and refactor eth_rand_ethaddr() functionMasahiro Yamada
Some functions in include/net.h are ported from include/linux/etherdevice.h of Linux Kernel. For ex. is_zero_ether_addr() is_multicast_ether_addr() is_broadcast_ether_addr() is_valid_ether_addr(); So, we should use the same function name as that of Linux Kernel, eth_rand_addr(), for consistency. Besides, eth_rand_addr() has been implemented as an inline function. So it should not be surrounded by #ifdef CONFIG_RANDOM_MACADDR. Signed-off-by: Masahiro Yamada <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2014-02-07net: execute "miiphy_init" if CONFIG_PHYLIB definedAlexey Brodkin
In "common/Makefile" "miiphyutil.o" gets built if any of the following items enabled: * CONFIG_PHYLIB * CONFIG_MII * CONFIG_CMD_MII So it's possible to not define CONFIG_MII or CONFIG_CMD_MII and still use functions like "miiphy_get_dev_by_name". In its turn "miiphy_get_dev_by_name" traverses "mii_devs" list which is not initialized because "miiphy_init" never got called. Cc: Rob Herring <[email protected]> Cc: Simon Glass <[email protected]> Cc: Wolfgang Denk <[email protected]> Acked-by: Joe Hershberger <[email protected]> Signed-off-by: Alexey Brodkin <[email protected]>
2013-07-24Add GPL-2.0+ SPDX-License-Identifier to source filesWolfgang Denk
Signed-off-by: Wolfgang Denk <[email protected]> [trini: Fixup common/cmd_io.c] Signed-off-by: Tom Rini <[email protected]>
2012-09-27net: eth_write_hwaddr: Return error for invalid MACsBenoît Thébaudeau
If dev->enetaddr was supposed to be set with dev->write_hwaddr() but the MAC address was not valid, return an error. Signed-off-by: Benoît Thébaudeau <[email protected]> Cc: Joe Hershberger <[email protected]> Acked-by: Mike Frysinger <[email protected]>
2012-09-24net: Improve the speed of netconsoleJoe Hershberger
Previously u-boot would initialize the network interface for every network operation and then shut it down again. This makes sense for most operations where the network in not known to be needed soon after the operation is complete. In the case of netconsole, it will use the network for every interaction with the shell or every printf. This means that the network is being reinitialized very often. On many devices, this intialization is very slow. This patch checks for consecutive netconsole actions and leaves the ethernet hardware initialized between them. It will still behave the same old way for all other network operations and any time another network operation happens between netconsole operations. Signed-off-by: Joe Hershberger <[email protected]> Cc: Stefano Babic <[email protected]> Acked-by: Stefano Babic <[email protected]>
2012-09-24api: net: fix length check in eth_receive()Michael Walle
If the requested length is too small to hold the received packet, eth_receive() will return -1 and will leave the packet in the receive buffers. Instead of returning an error in this case, we return the first portion of the received packet and remove it from the receive buffers. This fixes FreeBSD's ubldr. Without this patch it will just stop receiving packets if the NIC receives more than PKTBUFSRX too large packets. Signed-off-by: Michael Walle <[email protected]> Cc: Joe Hershberger <[email protected]> Cc: Rafal Jaworowski <[email protected]> Cc: Piotr Kruszynski <[email protected]>
2012-07-11net: Inline the new eth_setenv_enetaddr_by_index functionJoe Hershberger
This function is currently only used in one case. Inline for now. Signed-off-by: Joe Hershberger <[email protected]>
2012-07-11net: allow setting env enetaddr from net device settingRob Herring
If the net driver has setup a valid ethernet address and an ethernet address is not set in the environment already, then set the environment variables from the net driver setting. This enables pxe booting on boards which don't set ethaddr env variable. Signed-off-by: Rob Herring <[email protected]>