summaryrefslogtreecommitdiff
path: root/net
AgeCommit message (Collapse)Author
2024-11-25Merge tag 'v2025.01-rc3' into nextTom Rini
Prepare v2025.01-rc3
2024-11-22net: lwip: dhcp: support arguments for TFTP file downloadJerome Forissier
The dhcp command is supposed to have the following syntax as per "help dhcp": dhcp [loadAddress] [[hostIPaddr:]bootfilename] In other words, any arguments should be passed to an implicit tftpboot command after the DHCP exchange has occurred. Add the missing code to the lwIP version of do_dhcp(). Signed-off-by: Jerome Forissier <[email protected]>
2024-11-22net: lwip: provide entropy to MBed TLS in one goIlias Apalodimas
We currently provide entropy to mbedTLS using 8b chunks. Take into account the 'len' parameter passed by MBed TLS to the entropy gathering function instead. Note that the current code works because len is always 128 (defined at compile time), therefore mbedtls_hardware_poll() is called repeatedly and the buffer is filled correctly. But passing 'len' to dm_rng_read() is both better and simpler. Reviewed-by: Jerome Forissier <[email protected]> Suggested-by: Simon Glass <[email protected]> Signed-off-by: Ilias Apalodimas <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2024-11-22net: lwip: fix get_udev_ipv4_info()Jerome Forissier
The local variables ipstr, maskstr and gwstr in static function get_udev_ipv4_info() cannot be pointers to read-only data, since they may be written to in case the device index is > 0. Therefore make them char arrays allocated on the stack. Reported-by: Ilias Apalodimas <[email protected]> Reported-by: Adriano Cordova <[email protected]> Link: https://lists.denx.de/pipermail/u-boot/2024-November/572066.html Signed-off-by: Jerome Forissier <[email protected]> Reviewed-by: Ilias Apalodimas <[email protected]>
2024-11-22net: lwip: fix dhcp_loop()Jerome Forissier
The local variables ipstr, maskstr and gwstr in static function dhcp_loop() cannot be pointers to read-only data, since they may be written to in case the device index is > 0. Therefore make them char arrays allocated on the stack. Reported-by: Ilias Apalodimas <[email protected]> Signed-off-by: Jerome Forissier <[email protected]> Reviewed-by: Ilias Apalodimas <[email protected]>
2024-11-18Kconfig: describe NET, NO_NET, LWIP_DEBUG and LWIP_ASSERTJerome Forissier
Some Kconfig symbols introduced in commit 8cb330355bd5 ("net: introduce alternative implementation as net/lwip/") need a full description. The NET symbol needs one, too. Signed-off-by: Jerome Forissier <[email protected]> Reviewed-by: Ilias Apalodimas <[email protected]>
2024-11-18net: lwip/wget: correct SERVER_NAME_SIZEHeinrich Schuchardt
The maximum length of a domain name is 253 as defined in RFC 1035. So SERVER_NAME_SIZE should be 254 including NUL. Fixes: 3c656c928bd7 ("net: lwip: add wget command") Signed-off-by: Heinrich Schuchardt <[email protected]> Reviewed-by: Jerome Forissier <[email protected]> Reviewed-by: Ilias Apalodimas <[email protected]>
2024-11-18net: net_utils: Move ip_to_string to lib/net_utils.cAdriano Cordova
The function string_to_ip is already in net_utils, which is compiled unconditionally, but ip_to_string is currently only accessible if the legacy network stack is selected. This commit puts ip_to_string in net_utils.c and removes it from the legacy network code. Signed-off-by: Adriano Cordova <[email protected]> Reviewed-by: Heinrich Schuchardt <[email protected]>
2024-11-16net/lwip: wget: integrate struct wget_info into wget codeAdriano Cordova
Each wget request now fills the struct wget_info. Also, the efi bootdevice is now set conditionally to the set_bootdevice variable in wget_info and a buffer size check is performed if check_buffer_size is set. Signed-off-by: Adriano Cordova <[email protected]>
2024-11-16net/lwip: wget: put server_name and port into wget_ctxAdriano Cordova
Currently server_name and port are local variables in wget_loop. This commit puts them inside ctx, so that they are accessible from the http callbacks. Signed-off-by: Adriano Cordova <[email protected]>
2024-11-16net: wget: make wget_with_dns return value compatible with its lwip versionAdriano Cordova
There are two wget_with_dns functions, one in the legacy network stack and one in lwip, but the return values are not compatible. This commit modifies the legacy version of wget_with_dns so that the return values are compatible: 0 on success, otherwise a negative error. This way wget_with_dns can be called in a network stack agnostic way. Signed-off-by: Adriano Cordova <[email protected]>
2024-11-16net: wget: integrate struct wget_info into legacy wget codeAdriano Cordova
Each wget request now fills the struct wget_info. The efi bootdevice is now set conditionally to the set_bootdevice variable in wget_info, and the same holds for lmb memory check. Signed-off-by: Adriano Cordova <[email protected]>
2024-11-16net: wget: Add interface to issue wget_requests using wget_http_infoAdriano Cordova
Declare and define a global default struct wget_http_info and an interface to issue wget requests providing a custom struct wget_http_info. This code is common to legacy wget and lwip wget. The idea is that the command wget should use the default wget_http_info and other internal u-boot code can call wget_request with their own wget_http_info struct. Signed-off-by: Adriano Cordova <[email protected]>
2024-11-16net: Kconfig: add CONFIG_WGET symbolAdriano Cordova
Let net/wget.c and net/lwip/wget.c depend on CONFIG_WGET, and cmd/wget.c depend on CONFIG_CMD_WGET. This way, the wget code can be used regardless of whether the wget command is available. Signed-off-by: Adriano Cordova <[email protected]> Reviewed-by: Heinrich Schuchardt <[email protected]>
2024-11-14lwip: fix code style issuesJerome Forissier
Fix various code style issues in the lwIP code. Reported-by: Tom Rini <[email protected]> Signed-off-by: Jerome Forissier <[email protected]> Acked-by: Ilias Apalodimas <[email protected]>
2024-11-12Merge patch series "Enable https for wget"Tom Rini
Ilias Apalodimas <[email protected]> says: Hi all, This is a respin of [1] adding https support to wget. In short patch#1 enables the crypto algorithms we need in mbedTLS patches#2, #3 enable anf fix the lwIP part we need patch#4 is adding https:// parsing support in our wget patch#5 is making https:// the default for QEMU lwip defconfig so people can easily test and finaly patch#6 updates our documentation [1] https://lore.kernel.org/u-boot/[email protected]/ Link: https://lore.kernel.org/r/[email protected]
2024-11-12net: lwip: Enable https:// support for wgetIlias Apalodimas
With the recent changes of lwip & mbedTLS we can now download from https:// urls instead of just http://. Adjust our wget lwip version parsing to support both URLs. While at it adjust the default TCP window for QEMU since https seems to require at least 16384 Signed-off-by: Ilias Apalodimas <[email protected]> Reviewed-by: Simon Glass <[email protected]> Reviewed-by: Jerome Forissier <[email protected]>
2024-11-12net: wget: drop Content-Length processingJerome Forissier
We don't do anything with Content-Length except a debug print, and the strict_strtoul() call is incorrect (it always returns -EINVAL and leaves content_length to zero due to the presence of trailing characters after the decimal valuoe of Content-Length). So let's just drop this piece of code. Signed-off-by: Jerome Forissier <[email protected]>
2024-10-16net: lwip: add TFTP_BLOCKSIZEJerome Forissier
Add support for setting the TFTP block size. The default value (1468) is fine for Ethernet and allows a better throughput than the TFTP default (512), if the server supports the blksize option of course. I tested this change with qemu_arm64_lwip_defconfig. The throughput is now 875 KiB/s vs. 313 KiB/s before. That is still a low number, but I think we can't expect more without implementing the windowsize option. Signed-off-by: Jerome Forissier <[email protected]> Reviewed-by: Ilias Apalodimas <[email protected]>
2024-10-16net: lwip: add wget commandJerome Forissier
Add support for the wget command with NET_LWIP. The command normally expects a URL: wget [loadaddr] url, but it also accepts the legacy syntax: wget [loadaddr] [server:]file. The server IP may alternatively be supplied via ${httpserverip} which has higher priority than ${serverip}. Based on code initially developed by Maxim U. Signed-off-by: Jerome Forissier <[email protected]> Co-developed-by: Maxim Uvarov <[email protected]> Cc: Maxim Uvarov <[email protected]> Signed-off-by: Jerome Forissier <[email protected]> Acked-by: Ilias Apalodimas <[email protected]>
2024-10-16net: lwip: add dns commandJerome Forissier
Add CMD_DNS when NET_LWIP is enabled to provide the dns command using lwIP. Signed-off-by: Jerome Forissier <[email protected]> Acked-by: Ilias Apalodimas <[email protected]>
2024-10-16net: lwip: add ping commandJerome Forissier
Add support for the the ping command with NET_LWIP. The implementation is derived from lwIP's contrib/apps/ping/ping.c. Signed-off-by: Jerome Forissier <[email protected]> Acked-by: Ilias Apalodimas <[email protected]>
2024-10-16net: lwip: add TFTP support and tftpboot commandJerome Forissier
Implement do_tftpb(). This implementation of the tftp command supports an optional port number. For example: tftp 192.168.0.30:9069:file.bin It also supports taking the server IP from ${tftpserverip} if defined, before falling back to ${serverip}. Signed-off-by: Jerome Forissier <[email protected]> Acked-by: Ilias Apalodimas <[email protected]> Tested-by: Ilias Apalodimas <[email protected]>
2024-10-16net: lwip: add DHCP support and dhcp commmandJerome Forissier
Add what it takes to enable NETDEVICES with NET_LWIP and enable DHCP as well as the dhcp command. CMD_TFTPBOOT is selected by BOOTMETH_EFI due to this code having an implicit dependency on do_tftpb(). Note that PXE is likely non-fonctional with NET_LWIP (or at least not 100% functional) because DHCP option 209 is not supported by the lwIP library. Therefore, BOOTP_PXE_DHCP_OPTION cannot be enabled. Signed-off-by: Jerome Forissier <[email protected]> Tested-by: Ilias Apalodimas <[email protected]> Acked-by: Ilias Apalodimas <[email protected]>
2024-10-16net: eth-uclass: add function eth_start_udev()Jerome Forissier
Add a function to start a given network device, and update eth_init() to use it. Signed-off-by: Jerome Forissier <[email protected]> Reviewed-by: Ilias Apalodimas <[email protected]>
2024-10-16net: split net into net{,-common,-legacy,-lwip}Jerome Forissier
Make net.h a wrapper which includes net-common.h and either net-legacy.h or net-lwip.h based on NET_LWIP. The function copy_filename() can be useful when NET_LWIP is enabled, therefore move it out of net/net.c which is built only when networking choice is NET and create a new file net/net-common.c. Signed-off-by: Jerome Forissier <[email protected]> Acked-by: Ilias Apalodimas <[email protected]>
2024-10-16net: introduce alternative implementation as net/lwip/Jerome Forissier
Prepare the introduction of the lwIP (lightweight IP) TCP/IP stack by adding a new net/lwip/ directory and the NET_LWIP symbol. Network support is either NO_NET, NET (legacy stack) or NET_LWIP. Subsequent commits will introduce the lwIP code, re-work the NETDEVICE integration and port some of the NET commands and features to lwIP. SPL_NET cannot be enabled when NET_LWIP=y. SPL_NET pulls some symbols that are part of NET (such as arp_init(), arp_timeout_check(), arp_receive(), net_arp_wait_packet_ip()). lwIP support in SPL may be added later. Similarly, DFU_TFTP and FASTBOOT are not compatible with NET_LWIP because of dependencies on net_loop(), tftp_timeout_ms, tftp_timeout_count_max and other NET things. Let's add a dependency on !NET_LWIP for now. SANDBOX can select NET_LWIP but doing so will currently disable the eth dm tests as well as the wget tests which have strong dependencies on the NET code. Other adjustments to Kconfig files are made to fix "unmet direct dependencies detected" for USB_FUNCTION_SDP and CMD_FASTBOOT when the default networking stack is set to NET_LWIP ("default NET_LWIP" instead of "default NET" in Kconfig). The networking stack is now a choice between NO_NET, NET and NET_LWIP. Therefore '# CONFIG_NET is not set' should be 'CONFIG_NO_NET=y'. Adjust the defconfigs accordingly. Signed-off-by: Jerome Forissier <[email protected]> Acked-by: Ilias Apalodimas <[email protected]>
2024-10-15net: correct wget_connected debug messagesHeinrich Schuchardt
* Remove duplicate debug message in wget_connected() * Correct typo 'Connctd' Signed-off-by: Heinrich Schuchardt <[email protected]> Reviewed-by: Peter Robinson <[email protected]> Reviewed-by: Ilias Apalodimas <[email protected]>
2024-10-15net/wget: set filesizeHeinrich Schuchardt
After downloading a file with wget the file size may be needed in follow up actions, e.g. * write file to device * calculate hash Let wget set the environment variable filesize. Reviewed-by: Ilias Apalodimas <[email protected]> Signed-off-by: Heinrich Schuchardt <[email protected]>
2024-10-11Merge patch series "Tidy up use of 'SPL' and CONFIG_SPL_BUILD"Tom Rini
Simon Glass <[email protected]> says: When the SPL build-phase was first created it was designed to solve a particular problem (the need to init SDRAM so that U-Boot proper could be loaded). It has since expanded to become an important part of U-Boot, with three phases now present: TPL, VPL and SPL Due to this history, the term 'SPL' is used to mean both a particular phase (the one before U-Boot proper) and all the non-proper phases. This has become confusing. For a similar reason CONFIG_SPL_BUILD is set to 'y' for all 'SPL' phases, not just SPL. So code which can only be compiled for actual SPL, for example, must use something like this: #if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) In Makefiles we have similar issues. SPL_ has been used as a variable which expands to either SPL_ or nothing, to chose between options like CONFIG_BLK and CONFIG_SPL_BLK. When TPL appeared, a new SPL_TPL variable was created which expanded to 'SPL_', 'TPL_' or nothing. Later it was updated to support 'VPL_' as well. This series starts a change in terminology and usage to resolve the above issues: - The word 'xPL' is used instead of 'SPL' to mean a non-proper build - A new CONFIG_XPL_BUILD define indicates that the current build is an 'xPL' build - The existing CONFIG_SPL_BUILD is changed to mean SPL; it is not now defined for TPL and VPL phases - The existing SPL_ Makefile variable is renamed to SPL_ - The existing SPL_TPL Makefile variable is renamed to PHASE_ It should be noted that xpl_phase() can generally be used instead of the above CONFIGs without a code-space or run-time penalty. This series does not attempt to convert all of U-Boot to use this new terminology but it makes a start. In particular, renaming spl.h and common/spl seems like a bridge too far at this point. The series is fully bisectable. It has also been checked to ensure there are no code-size changes on any commit.
2024-10-11global: Rename SPL_TPL_ to PHASE_Simon Glass
Use PHASE_ as the symbol to select a particular XPL build. This means that SPL_TPL_ is no-longer set. Update the comment in bootstage to refer to this symbol, instead of SPL_ Signed-off-by: Simon Glass <[email protected]>
2024-10-11global: Rename SPL_ to XPL_Simon Glass
Use XPL_ as the symbol to indicate an SPL build. This means that SPL_ is no-longer set. Signed-off-by: Simon Glass <[email protected]>
2024-10-11global: Use CONFIG_XPL_BUILD instead of CONFIG_SPL_BUILDSimon Glass
Complete this rename for all directories outside arch/ board/ drivers/ and include/ Use the new symbol to refer to any 'SPL' build, including TPL and VPL Signed-off-by: Simon Glass <[email protected]>
2024-10-10tftp: implement support for LED activityChristian Marangi
Implement support for LED activity. If the feature is enabled, make the defined ACTIVITY LED to signal traffic. Also turn the ACTIVITY LED OFF if a CTRL-C is detected in the main net loop function. Signed-off-by: Christian Marangi <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2024-09-24Merge patch series "Miscellaneous fixes"Tom Rini
Jerome Forissier <[email protected]> says: Miscellaneous fixes made when developing the lwIP series [1]. They are posted separately since they make sense on their own. Subsequent versions of the lwIP series will contain a squashed version of this one. [1] http://patchwork.ozlabs.org/project/uboot/list/?series=420712&state=%2A&archive=both
2024-09-24net: wget: allow EFI bootJerome Forissier
wget followed by bootefi currently fails as follows: U-Boot> wget 200000 192.168.0.30:helloworld.efi Waiting for Ethernet connection... done. HTTP/1.0 200 OK Packets received 13, Transfer Successful Bytes transferred = 12720 (31b0 hex) U-Boot> bootefi 200000 No UEFI binary known at 200000 U-Boot> Fix the problem by adding the missing efi_set_bootdev() call. Signed-off-by: Jerome Forissier <[email protected]> Reviewed-by: Peter Robinson <[email protected]> Reviewed-by: Ilias Apalodimas <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2024-09-24net: wget: removed unused function wget_success()Jerome Forissier
wget_success() is used nowhere so remove it. Signed-off-by: Jerome Forissier <[email protected]> Reviewed-by: Ilias Apalodimas <[email protected]> Reviewed-by: Peter Robinson <[email protected]>
2024-09-20wget: rework the logic to validate the load addressSughosh Ganu
Use the lmb_read_check() function to verify if it is safe to use a region of memory to load data from the wget command. The current logic checks the amount of free memory available, starting from the 'load address'. This call fails if the same region of memory has been used earlier. This used to work earlier as the LMB memory map had a local scope and was not persistent. Fix this issue by using the lmb_read_check() call instead which only returns an error in case the memory region has been marked for not allowing re-use. Signed-off-by: Sughosh Ganu <[email protected]> Tested-by: Vaishnav Achath <[email protected]>
2024-09-20tftp: rework the logic to validate the load addressSughosh Ganu
Use the lmb_read_check() function to verify if it is safe to use a region of memory to load data from a tftp command. The current logic checks the amount of free memory available, starting from the 'load address'. This call fails if the same region of memory has been used earlier. This used to work earlier as the LMB memory map had a local scope and was not persistent. Fix this issue by using the lmb_read_check() call instead which only returns an error in case the memory region has been marked for not allowing re-use. Signed-off-by: Sughosh Ganu <[email protected]> Tested-by: Vaishnav Achath <[email protected]>
2024-09-12include: export uuid.hCaleb Connolly
Move this header to include/u-boot/ so that it can be used by external tools. Reviewed-by: Ilias Apalodimas <[email protected]> Signed-off-by: Caleb Connolly <[email protected]>
2024-09-10net: guard call to tftp_start() with IS_ENABLED(CONFIG_CMD_TFTPBOOT)Jerome Forissier
net_auto_load() cannot call tftp_start() if CONFIG_CMD_TFTPBOOT is disabled. Signed-off-by: Jerome Forissier <[email protected]>
2024-09-03lmb: remove the lmb_init_and_reserve() functionSughosh Ganu
With the changes to make the LMB reservations persistent, the common memory regions are being added during board init. Remove the now superfluous lmb_init_and_reserve() function. Signed-off-by: Sughosh Ganu <[email protected]> Reviewed-by: Simon Glass <[email protected]> Reviewed-by: Ilias Apalodimas <[email protected]>
2024-09-03lmb: allow lmb module to be used in SPLSughosh Ganu
With the introduction of separate config symbols for the SPL phase of U-Boot, the condition checks need to be tweaked so that platforms that enable the LMB module in SPL are also able to call the LMB API's. Use the appropriate condition checks to achieve this. Signed-off-by: Sughosh Ganu <[email protected]> Reviewed-by: Simon Glass <[email protected]> Reviewed-by: Ilias Apalodimas <[email protected]>
2024-09-03lmb: make LMB memory map persistent and globalSughosh Ganu
The current LMB API's for allocating and reserving memory use a per-caller based memory view. Memory allocated by a caller can then be overwritten by another caller. Make these allocations and reservations persistent using the alloced list data structure. Two alloced lists are declared -- one for the available(free) memory, and one for the used memory. Once full, the list can then be extended at runtime. [sjg: Use a stack to store pointer of lmb struct when running lmb tests] Signed-off-by: Sughosh Ganu <[email protected]> Signed-off-by: Simon Glass <[email protected]> [sjg: Optimise the logic to add a region in lmb_add_region_flags()]
2024-08-15sandbox: Enable wget commandYasuharu Shibata
Enable this so that the tests run. Fix a few warnings in the code so that CI passes. Signed-off-by: Simon Glass <[email protected]> Signed-off-by: Yasuharu Shibata <[email protected]>
2024-08-01net/tftp: make tftpput working with servers that do not use OACKMikhail Kshevetskiy
Option Acknowledgment (OACK) is an extension of TFTP protocol (see rfc2347). Not all tftp servers implements it. For example it does not supported by tftpd server from debian-11 (https://packages.debian.org/bullseye/tftpd). Starting the "tftpput $loadaddr $size out_file" command with such server will results in the following packets flow: 192.168.27.3 192.168.27.1 TFTP Write Request, ... 192.168.27.1 192.168.27.3 TFTP Acknowledgement, Block: 0 192.168.27.3 192.168.27.1 TFTP Write Request, ... 192.168.27.1 192.168.27.3 TFTP Acknowledgement, Block: 0 192.168.27.3 192.168.27.1 TFTP Write Request, ... 192.168.27.1 192.168.27.3 TFTP Acknowledgement, Block: 0 192.168.27.1 192.168.27.3 TFTP Acknowledgement, Block: 0 192.168.27.1 192.168.27.3 TFTP Acknowledgement, Block: 0 ... so, no data transfer happening. Here is a packets flow for tftp-server with OACK support (tftpd-hpa: https://packages.debian.org/stable/tftpd-hpa) 192.168.27.3 192.168.27.1 TFTP Write Request, ... 192.168.27.1 192.168.27.3 TFTP Option Acknowledgement, ... 192.168.27.3 192.168.27.1 TFTP Data Packet, Block: 1 192.168.27.1 192.168.27.3 TFTP Acknowledgement, Block: 1 192.168.27.3 192.168.27.1 TFTP Data Packet, Block: 2 192.168.27.1 192.168.27.3 TFTP Acknowledgement, Block: 2 and this time data transfer starts normally. As we can see there is no OACK packet in the first case. Investigating an issue we'll find out: 1) tftp_start() sets tftp_state = STATE_SEND_WRQ; 2) on OACK tftp_handler() sets tftp_state = STATE_DATA; and send a first DATA packet. 3) on ACK tftp_handler() will call a tftp_send() function. tftp_send() will * tftpd with OACK support: Current state is STATE_DATA, so transmittion of data packet will happen. * tftpd without OACK support Current state is STATE_SEND_WRQ, so retransmission of WRQ packet will happen. Thus tftpd-server will retransmit an ACK. This will repeats until timeout happens. According to RFC1350 this is wrong. We should start data transfer instead of WRQ retransmission. This patch fix an issue, so tftpput works fine with both types of servers. Signed-off-by: Mikhail Kshevetskiy <[email protected]>
2024-07-31net: remove duplicate eth_env_set_enetaddr_by_index() declarationAlexander Sverdlin
eth_env_set_enetaddr_by_index() declaration is duplicated in eth_internal.h and net.h, but all units including eth_internal.h already include net.h. Remove the superfluous declaration. Signed-off-by: Alexander Sverdlin <[email protected]>
2024-07-15net: Remove duplicate newlinesMarek Vasut
Drop all duplicate newlines. No functional change. Signed-off-by: Marek Vasut <[email protected]>
2024-07-05Fix Kconfig coding style from spaces to tabAnand Moon
Adjust indentation from spaces to tab (+optional two spaces) as in coding style with command like: $ sed -e 's/^ /\t/' -i */Kconfig Signed-off-by: Anand Moon <[email protected]>
2024-05-20Restore patch series "arm: dts: am62-beagleplay: Fix Beagleplay Ethernet"Tom Rini
As part of bringing the master branch back in to next, we need to allow for all of these changes to exist here. Reported-by: Jonas Karlman <[email protected]> Signed-off-by: Tom Rini <[email protected]>