If CONFIG_CMD_TFTPPUT is not enabled, we want minimal code size impact
on the tftp code. This introduces a few more #ifdefs.
Signed-off-by: Simon Glass <sjg@chromium.org>
This commit reduces code size a little by making the ICMP handler only
available to tftpput. This is reasonable since it is the only user at
present (ping just uses the normal handler).
Signed-off-by: Simon Glass <sjg@chromium.org>
We want to show block markers on completion of get and put, so
move this common code into separate functions.
Signed-off-by: Simon Glass <sjg@chromium.org>
This is a better name for this protocol. Also remove the typedef to keep
checkpatch happy, and move zeroing of NetBootFileXferSize a little
earlier since TFTPPUT will need to change this.
Signed-off-by: Simon Glass <sjg@chromium.org>
ICMP packets can tell you when there is no server at the other end. It
is useful for tftp to figure this out, so that a quick error can be
displayed, rather than pointlessly retrying.
This adds an ICMP packet handler to the net interface.
Signed-off-by: Simon Glass <sjg@chromium.org>
NetReceive() is a very long function with a lot of indent. Before adding
code to the ICMP bit, split it out.
Signed-off-by: Simon Glass <sjg@chromium.org>
net/dns.c used endian conversion macros wrongly (shorts in reply
were put swapped into CPU, and then ntohs() was used to swap it
back, which broke on big-endian).
Fix this by using the correct linux conversion macro for reading
a unaligned short in network byte order: get_unaligned_be16()
Thanks to Mike Frysinger pointing at the best macro to use.
Tested on big and little endian qemu boards (mips and versatile)
Signed-off-by: Bernhard Kaindl <bernhard.kaindl@thalesgroup.com>
Cc: Pieter Voorthuijsen <pieter.voorthuijsen@prodrive.nl>
Cc: Robin Getz <rgetz@blackfin.uclinux.org>
Acked-by: Mike Frysinger <vapier@gentoo.org>
These options are required to be present in RFC 4578 compliant DHCP
requests. They give more information to DHCP servers to allow serving
different DHCP responses to different systems based on client
architecture, client capabilities, UUID, or vendor.
Signed-off-by: Jason Hobbs <jason.hobbs@calxeda.com>
This is long over due. All but two net drivers have been converted, but
those have now been dropped.
The only thing left to do is actually delete all references to NET_MULTI
and code that is compiled when that is not defined. So here we scrub the
core code.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
The new sanity check introduces a printf warning for some systems:
eth.c:233: warning: format '%zu' expects type 'size_t', but argument 3 has type 'int'
Rather than tweak the format string, use the new assert() helper instead.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Commit 093498669 (Put common autoload code into auto_load() function)
broke handling of autoload environment variable not being set.
The bootp/dhcp code will just keep on requesting IP address forever
and never start TFTP download.
Fix it by moving TftpStart() outside the conditional like it was before.
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
Tested-by: Fabio Estevam <fabio.estevam@freescale.com>
Acked-by: Simon Glass <sjg@chromium.org>
eth_get_dev_by_name() is not safe to use for devname being NULL
as it uses strcmp. This patch makes it fail with a BUG().
Signed-off-by: Helmut Raiger <helmut.raiger@hale.at>
Acked-by: Mike Frysinger <vapier@gentoo.org>
This fixes "Warning: failed to set MAC address" on platforms which rely on
an 'ethaddr' environment variable to set the MAC address.
This bug was introduced by this commit:
7616e785 Add Ethernet hardware MAC address framework to usbnet
Signed-off-by: Simon Glass <sjg@chromium.org>
Tested-by: Kumar Gala <galak@kernel.crashing.org>
Tested-by: Michal Simek <monstr@monstr.eu>
Tested-by: Heiko Schocher <hs@denx.de>
If name is longer than allocated space NAMESIZE
mac address is rewritten which show error
message like:
Error message:
Warning: Xlltemac.87000000 MAC addresses don't match:
Address in SROM is 30:00:00:00:00:00
Address in environment is 00:0a:35:00:6a:04
NAMESIZE contains Driver name + zero terminated character.
Signed-off-by: Michal Simek <monstr@monstr.eu>
Built-in Ethernet adapters support setting the mac address by means of a
ethaddr environment variable for each interface (ethaddr, eth1addr, eth2addr).
This adds similar support to the USB network side, using the names
usbethaddr, usbeth1addr, etc. They are kept separate since we don't want
a USB device taking the MAC address of a built-in device or vice versa.
Signed-off-by: Simon Glass <sjg@chromium.org>
Tested-by: Eric Bénard <eric@eukrea.com>
All available at91rm9200 boards have migrated to ar920t/at91 and
therefore to CONFIG_NET_MULTI.
The obsolete at91rm9200_miiphy_initialize() was removed in "ARM: remove
obsolete at91rm9200".
Signed-off-by: Andreas Bießmann <andreas.devel@googlemail.com>
At least on ARM the ipaddr is only set in board_init_r function. The
problem is if ipaddr is not defined in environment importing another
environment defined don't update the ipaddr value.
For example, suppose we've a default environment without net variables
defined and we want to import an uEnv.txt environment from SD-card like
this:
ipaddr=192.168.2.240
netmask=255.255.255.0
gatewayip=192.168.2.1
serverip=192.168.2.114
Then if you try boot from NFS results in:
Importing environment from mmc ...
Running uenvcmd ...
smc911x: detected LAN9221 controller
smc911x: phy initialized
smc911x: MAC ac🇩🇪48:00:00:00
*** ERROR: `ipaddr' not set
The ipaddr at this point is NULL beacause is only set at board_init_r
function. This patch updates the ipaddr value if the environment has
changed.
Signed-off-by: Enric Balletbo i Serra <eballetbo@iseebcn.com>
Acked-by: Mike Frysinger <vapier@gentoo.org>
With the upcoming TFTP server implementation, requests can be either
outgoing or incoming, so avoid ambiguities.
Signed-off-by: Luca Ceresoli <luca.ceresoli@comelit.it>
Cc: Wolfgang Denk <wd@denx.de>
Acked-by: Detlev Zundel <dzu@denx.de>
With the upcoming TFTP server implementation, the remote node can be
either a client or a server, so avoid ambiguities.
Signed-off-by: Luca Ceresoli <luca.ceresoli@comelit.it>
Cc: Wolfgang Denk <wd@denx.de>
Acked-by: Detlev Zundel <dzu@denx.de>
This removes the following checkpatch issue:
- ERROR: do not initialise statics to 0 or NULL
Signed-off-by: Luca Ceresoli <luca.ceresoli@comelit.it>
Cc: Wolfgang Denk <wd@denx.de>
This removes the following checkpatch issue:
- WARNING: suspect code indent for conditional statements
Signed-off-by: Luca Ceresoli <luca.ceresoli@comelit.it>
Cc: Wolfgang Denk <wd@denx.de>
This removes the following checkpatch issue:
- ERROR: trailing statements should be on next line
Signed-off-by: Luca Ceresoli <luca.ceresoli@comelit.it>
Cc: Wolfgang Denk <wd@denx.de>
This removes the following checkpatch issues:
- WARNING: braces {} are not necessary for single statement blocks
- WARNING: braces {} are not necessary for any arm of this statement
Signed-off-by: Luca Ceresoli <luca.ceresoli@comelit.it>
Cc: Wolfgang Denk <wd@denx.de>
This removes the following checkpatch issue:
- ERROR: do not use assignment in if condition.
There is one such error left:
ERROR: do not use assignment in if condition
#239: FILE: tftp.c:239:
+ if (!ProhibitMcast
+ && (Bitmap = malloc(Mapsize))
+ && eth_get_dev()->mcast) {
which would require an additional nested if to be fixed, resulting in longer
and less readable code.
Signed-off-by: Luca Ceresoli <luca.ceresoli@comelit.it>
Cc: Wolfgang Denk <wd@denx.de>
This removes the following checkpatch issues:
- ERROR: "foo * bar" should be "foo *bar"
- ERROR: "(foo*)" should be "(foo *)"
Signed-off-by: Luca Ceresoli <luca.ceresoli@comelit.it>
Cc: Wolfgang Denk <wd@denx.de>
This removes the following checkpatch issues:
- ERROR: space prohibited before that close parenthesis ')'
- ERROR: space required after that ';' (ctx:BxV)
- ERROR: space required after that ',' (ctx:VxV)
- ERROR: space required after that ';' (ctx:VxV)
- ERROR: spaces required around that '<<=' (ctx:VxV)
- ERROR: spaces required around that '<' (ctx:VxV)
- ERROR: spaces required around that '=' (ctx:VxV)
- ERROR: spaces required around that '+=' (ctx:VxV)
- ERROR: spaces required around that '=' (ctx:VxW)
- WARNING: please, no spaces at the start of a line
- WARNING: space prohibited between function name and open parenthesis '('
Signed-off-by: Luca Ceresoli <luca.ceresoli@comelit.it>
Cc: Wolfgang Denk <wd@denx.de>
This removes the following checkpatch issue:
- ERROR: do not use assignment in if condition
Signed-off-by: Luca Ceresoli <luca.ceresoli@comelit.it>
Cc: Wolfgang Denk <wd@denx.de>
Cc: Ben Warren <biggerbadderben@gmail.com>
This removes the following checkpatch issues:
- ERROR: switch and case should be at the same indent
- WARNING: suspect code indent for conditional statements
- WARNING: labels should not be indented
Signed-off-by: Luca Ceresoli <luca.ceresoli@comelit.it>
Cc: Wolfgang Denk <wd@denx.de>
Cc: Ben Warren <biggerbadderben@gmail.com>
This removes the following checkpatch issue:
- ERROR: return is not a function, parentheses are not required
Signed-off-by: Luca Ceresoli <luca.ceresoli@comelit.it>
Cc: Wolfgang Denk <wd@denx.de>
Cc: Ben Warren <biggerbadderben@gmail.com>
This removes the following checkpatch issues:
- ERROR: "foo * bar" should be "foo *bar"
- ERROR: "(foo*)" should be "(foo *)"
Signed-off-by: Luca Ceresoli <luca.ceresoli@comelit.it>
Cc: Wolfgang Denk <wd@denx.de>
Cc: Ben Warren <biggerbadderben@gmail.com>
This removes the following checkpatch issues:
- WARNING: braces {} are not necessary for single statement blocks
- WARNING: braces {} are not necessary for any arm of this statement
Signed-off-by: Luca Ceresoli <luca.ceresoli@comelit.it>
Cc: Wolfgang Denk <wd@denx.de>
Cc: Ben Warren <biggerbadderben@gmail.com>
This removes the following checkpatch issues:
- ERROR: space prohibited after that open parenthesis '('
- ERROR: space prohibited before that close parenthesis ')'
- ERROR: space prohibited after that open square bracket '['
- ERROR: space prohibited after that '&' (ctx:WxW)
- ERROR: spaces required around that '=' (ctx:VxW)
- ERROR: space required before the open parenthesis '('
- ERROR: space required after that ',' (ctx:VxV)
- ERROR: need consistent spacing around '+' (ctx:WxV)
- WARNING: unnecessary whitespace before a quoted newline
- WARNING: please, no spaces at the start of a line
- WARNING: space prohibited between function name and open
parenthesis '('
Signed-off-by: Luca Ceresoli <luca.ceresoli@comelit.it>
Cc: Wolfgang Denk <wd@denx.de>
Cc: Ben Warren <biggerbadderben@gmail.com>
Cc: Mike Frysinger <vapier@gentoo.org>
This removes the following checkpatch errors:
- ERROR: do not initialise globals to 0 or NULL
- ERROR: spaces required around that '=' (ctx:VxV)
- ERROR: that open brace { should be on the previous line
Signed-off-by: Luca Ceresoli <luca.ceresoli@comelit.it>
Cc: Wolfgang Denk <wd@denx.de>
Cc: Ben Warren <biggerbadderben@gmail.com>
Cc: Mike Frysinger <vapier@gentoo.org>
This removes the following checkpatch warning:
- WARNING: line over 80 characters
There are three such warnings left.
The first is hard to fix with cosmetic-only changes without compromising code
readability, so I'm leaving it as it is for now:
WARNING: line over 80 characters
#1537: FILE: net.c:1537:
+ [4 tabs] memcpy(((Ethernet_t *)NetArpWaitTxPacket)->et_dest, ...
The other two cannot be fixed without splitting string literals, so it is
preferred to keep them longer than 80 characters.
Signed-off-by: Luca Ceresoli <luca.ceresoli@comelit.it>
Cc: Wolfgang Denk <wd@denx.de>
Cc: Ben Warren <biggerbadderben@gmail.com>
Cc: Mike Frysinger <vapier@gentoo.org>
This is needed for the upcoming TFTP server implementation.
This also simplifies PingHandler() and fixes rxhand_f documentation.
Signed-off-by: Luca Ceresoli <luca.ceresoli@comelit.it>
Cc: Wolfgang Denk <wd@denx.de>
Acked-by: Detlev Zundel <dzu@denx.de>
Netconsole use the environment variable `ncip' to configure the
destination IP. `serverip' don't need to be defined.
Signed-off-by: Simon Guinot <sguinot@lacie.com>
If neither CONFIG_CMD_PING or CONFIG_CMD_SNTP are defined but
CONFIG_CMD_DNS is, a compile-time error will occur due to the
absence of a goto label.
Signed-off-by: Gray Remlin <gryrmln@gmail.com>
Extends the mii_dev structure to participate in a full-blown MDIO and
PHY driver scheme. The mii_dev structure and miiphy calls are modified
in such a way to allow the original mii command and miiphy
infrastructure to work as before, but also to support a new set of APIs
which allow (among other things) sharing of PHY driver code and 10G support
The mii command will continue to support normal PHY management functions
(Clause 22 of 802.3), but will not be changed to support 10G
(Clause 45).
The basic design is similar to PHY Lib from Linux, but simplified for
U-Boot's network and driver infrastructure.
We now have MDIO drivers and PHY drivers
An MDIO driver provides:
read
write
reset
A PHY driver provides:
(optionally): probe
config - initial setup, starting of auto-negotiation
startup - waiting for AN, and reading link state
shutdown - any cleanup needed
The ethernet drivers interact with the PHY Lib using these functions:
phy_connect()
phy_config()
phy_startup()
phy_shutdown()
Each PHY driver can be configured separately, or all at once using
config_phylib_all_drivers.h (added in the patch which adds the drivers)
We also provide generic drivers for Clause 22 (10/100/1000), and
Clause 45 (10G) PHYs.
We also implement phy_reset(), and call it in phy_connect(). Because
phy_reset() is essentially the same as miiphy_reset, but:
a) must support 10G PHYs, and
b) should use the phylib primitives,
we implement miiphy_reset, using phy_reset(), but only when
CONFIG_PHYLIB is set. Otherwise, we just use the old version. In this
way, we save on compile size, even if we don't manage to save code size.
Pulled ethtool.h and mdio.h from:
git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6
782d640afd15af7a1faf01cfe566ca4ac511319d
With many, many deletions so as to enable compilation under u-boot
Signed-off-by: Andy Fleming <afleming@freescale.com>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Acked-by: Detlev Zundel <dzu@denx.de>