summaryrefslogtreecommitdiff
path: root/drivers/net
AgeCommit message (Collapse)Author
2025-08-20net: ti: Kconfig: Enable SPL_SYSCON config for CPSWChintan Vankar
TI's Ethernet switch needs system controllers enabled in R5SPL stage while booting via Ethernet. Enable SPL_SYSCON config for CONFIG_TI_AM65_CPSW_NUSS. Reviewed-by: Alexander Sverdlin <[email protected]> Signed-off-by: Chintan Vankar <[email protected]>
2025-08-20net: ti: am65-cpsw-nuss: Define bind method for CPSW driverChintan Vankar
CPSW driver is defined as UCLASS_MISC driver which needs to be probed explicitly. Define bind method for CPSW driver to scan and bind ethernet-ports with UCLASS_ETH driver which will eventually probe CPSW driver and avoid probing CPSW driver explicitly. Signed-off-by: Chintan Vankar <[email protected]>
2025-08-18net: ks8851_mll: Remove unreachable codeAndrew Goodbody
In ks8851_mll_detect_chip the if..else code detects the case of (val & 0xfff0) != CIDER_ID and returns if found. So testing for this again will always fail and the code is unreachable. Just remove the test and code block. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]>
2025-08-18net: cortina_ni: Fix typo accessing wrong phyAndrew Goodbody
In ca_phy_probe when checking for an external phy it uses a field from the internal phy due to what is assumed to be a copy/paste typo. Make the obvious fix to use the field from the external phy. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]>
2025-08-18net: octeontx2: NULL check before dereferenceAndrew Goodbody
In rvu_af_init if the code fails to allocate memory for nix_af it will take the error path with nix_af == NULL which will dereference nix_af. Add the appropriate NULL check. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]>
2025-08-18net: octeontx2: Restore default value for errAndrew Goodbody
In nix_lf_setup there is a default value assigned to err in case an error is detected. However this default value will be overwritten in the for loop so that later code does not return an error code from the function. Add a new assignment to restore err to the default error code. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]>
2025-08-18net: mvpp2: Use field just assigned in error testAndrew Goodbody
In mvpp2_probe the code attempts to get a value for "gop-port-id" and assigns it to port->gop_id but it then tests port->id for being equal to -1. That is an impossible test as port->id is a field of type u8 so cannot be negative. Change the test to port->gop_id. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]>
2025-08-18net: mvpp2: Cannot test unsigned variable to be negativeAndrew Goodbody
In phy_info_parse all uses of the variable phyaddr are as an int so declaring as u32 is not useful and prevents the test for an error return from fdtdec_get_int ever detecting an error. Change phyaddr to be an int. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]>
2025-08-18net: mvpp2: Return -ENOMEM for failed allocAndrew Goodbody
Instead of returning -1 on a failed alloc, return -ENOMEM. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]>
2025-08-18net: mvpp2: Fix impossible testAndrew Goodbody
You cannot test an unsigned char to be >= 256. Instead make the variables start and end to be ints. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]>
2025-08-18net: mv88e6xxx: Fix logical operator instead of bitwiseAndrew Goodbody
In mv88e6xxx_port_enable when attempting to mask out the previous settings of two bits a logical operator was used instead of a bitwise operator. Fix this. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]>
2025-08-18net: mediatek: Use correct variable for returnAndrew Goodbody
In mtk_eth_of_to_plat, the last error check has the value in 'priv->phy_addr' but returns ret. Correct to return 'priv->phy_addr' instead. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]>
2025-08-18net: ldpaa_eth: Fix buffer overflow in memsetAndrew Goodbody
In ldpaa_eth_open a memset is used to initialise a struct to 0 but the size passed is that of a different struct. Correct to pass the sizeof the struct that is being initialised. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]>
2025-08-18net: phy: broadcom: add support for BCM54612EJim Liu
It's Broadcom PHY simply described as single-port RGMII 10/100/1000BASE-T PHY. Signed-off-by: Jim Liu <[email protected]>
2025-08-18net: designware: Fix get_timer value overflowJim Liu
get_timer returns a ulong value representing system time in ms. On a 64-bit system, this ulong value is 64 bits long. However, the driver stores it in a 32-bit unsigned integer, which overflows after 49 days up time, causing the driver to get an incorrect time. Replace the unsigned int variable with a ulong type to properly store the value returned by get_timer. Signed-off-by: Stanley Chu <[email protected]> Signed-off-by: Jim Liu <[email protected]>
2025-08-18net: phy: vitesse: Fix incorrect test for timeoutAndrew Goodbody
In vsc8514_config there is a while loop for detecting a config failure using a timeout counter with a post-decrement. In the case of a timeout this will result in the loop exiting with timeout == -1 so use that as the test below the loop to detect that the timeout occurred. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]> Reviewed-by: Quentin Schulz <[email protected]>
2025-08-18net: octeontx: Free allocated memory on errorAndrew Goodbody
In octeontx_smi_probe if an error is detected then memory that was allocated is not freed. Small refactor of the code to use a common return and free memory. Also return -ENOMEM for an allocation failure. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]>
2025-08-18net: octeontx: Remove unneeded testAndrew Goodbody
In nicvf_cq_handler there is a test for !cqe_count which will return if true so it is guaranteed that cqe_count will true after that point. This makes the later test for cqe_count redundant so it can be removed. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]>
2025-08-18net: octeontx: Remove unneeded codeAndrew Goodbody
In nicvf_rcv_pkt_handler there is no need to initialise err as it is assigned to immediately after. Also the test for !pkt will return if true meaning that pkt is guaranteed to be true after that code block and so no need to test for it and the redundant test can be removed. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]>
2025-08-15net: ti: icssg: Remove impossible testAndrew Goodbody
port_id is an unsigned variable so cannot be negative. Remove the test checking for port_id being less than 0. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]>
2025-08-15net: ti: am65-cpsw-nuss: Initialise retAndrew Goodbody
In am65_cpsw_phy_init it is not certain that ret will be assigned to before it reaches the 'return ret' statement. Initialise ret to ensure that ret is valid. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]>
2025-08-15net: phy: cortina: Ensure memory allocated is freedAndrew Goodbody
In cs4340_upload_firmware a buffer is allocated with malloc but this is never freed. The pointer to this buffer, addr, is not even kept unchanged. But in some cases addr is not a buffer allocated by malloc. Introduce the use of another pointer to keep track of the buffer and to know if it needs to be freed. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]>
2025-08-14net: e1000: Free temporary buffer on exitAndrew Goodbody
In do_e1000_spi_checksum a temporary buffer is allocated but never freed. Add code to free on exit. Also refactor the code to make the exit code common. This issue found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]>
2025-08-08Merge tag 'u-boot-socfpga-next-20250808' of ↵Tom Rini
https://source.denx.de/u-boot/custodians/u-boot-socfpga This pull request introduces initial U-Boot support for Agilex7 M-series, along with several enhancements and cleanups across existing Agilex platforms. Key changes include new board support, DDR driver additions, updated device trees, and broader SoCFPGA SPL improvements. Highlights: - Agilex7 M-series bring-up: - Basic DT support and board initialization for Agilex7 M-series SoC and SoCDK. - New sdram_agilex7m DDR driver with UIBSSM mailbox support and HBM support. - Clock driver support for Agilex7 M-series. - New defconfig: socfpga_agilex7m_defconfig. - Agilex and Agilex5 enhancements: - Improved SPL support: ASYNC interrupt enabling, system manager init refactor, and cold scratch register usage. - Updated firewall probing and watchdog support in SPL. - Cleaned up DDR code, added secure region support for ATF, and improved warm reset handling. - Device Tree and config updates: - Migration to upstream Linux DT layout for Agilex platforms. - Consolidated socfpga_agilex_defconfig and removed deprecated configs. - Platform-specific environment variables for Distro Boot added. - Driver fixes and cleanups: - dwc_eth_xgmac and clk-agilex cleanup and improvements. - Several coverity and style fixes. Contributions in this PR are from Alif Zakuan Yuslaimi, Tingting Meng, and Andrew Goodbody. This patch set has been tested on Agilex 5 devkit, Agilex devkit and Agilex7m devkit. Passing all pipeline tests at SoCFPGA U-boot custodian https://source.denx.de/u-boot/custodians/u-boot-socfpga/-/pipelines/27318
2025-08-08net: dwc_eth_xgmac_socfpga: Remove always true testAndrew Goodbody
In dwxgmac_of_get_mac_mode there is a test for mac_mode which will return if false. After this point mac_mode is guaranteed to be true so there is no need to test for this. Remove that test. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]> Reviewed-by: Tien Fong Chee <[email protected]>
2025-08-08net: dwc_eth_xgmac: Use unwind goto on errorAndrew Goodbody
In xgmac_probe there is a direct return after the point where unwind gotos start to be used to undo actions performed by earlier code. Use the appropriate unwind goto instead. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]> Reviewed-by: Tien Fong Chee <[email protected]>
2025-08-07net: fec_mxc: Set error code on error exitAndrew Goodbody
In fecmxc_probe if a timeout is detected when resetting the chip no error code is set before taking the error exit. This could lead to a silent failure. Instead set an error code. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]>
2025-08-06net: rswitch: Fix error detectionAndrew Goodbody
In rswitch_probe the error detection after the call to devm_clk_get is very wrong. It checks the value of ret which is uninitialised at that point. Instead it should be using the macros for including errors into pointers. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]> Reviewed-by: Marek Vasut <[email protected]>
2025-08-01net: phy: Support overriding Auto Negotiation timeout with env variableSiddharth Vadapalli
The Auto Negotiation procedure between two Ethernet PHYs consists of determining the best commonly supported parameters among Speed, Duplex Mode and Flow Control. The time taken for this procedure is not only dependent on the local PHY used, but also on the link-partner PHY. While a timeout can be specified in the form of a "CONFIG" on the basis of the local PHY present on the device, since the timeout also depends on the link-partner PHY, it might be necessary to modify the timeout. To avoid rebuilding the bootloader for a given device, just because it may be connected to various link-partner PHYs, each with a different timeout, introduce an environment variable named "phy_aneg_timeout" and override "CONFIG_PHY_ANEG_TIMEOUT" with "phy_aneg_timeout". Signed-off-by: Siddharth Vadapalli <[email protected]> Acked-by: Jerome Forissier <[email protected]> [jf: add missing #include <env.h>] Signed-off-by: Jerome Forissier <[email protected]>
2025-08-01arm: bcm281xx: Remove ethernet driverTom Rini
As no platforms enable the ethernet driver, remove it. Signed-off-by: Tom Rini <[email protected]>
2025-08-01net: Tighten some network driver dependenciesTom Rini
A large number of network drivers cannot build without access to some platform specific header files. Express those requirements in Kconfig as well. This covers the QUICC engine drivers as that is networking driver infrastructure. Signed-off-by: Tom Rini <[email protected]>
2025-08-01net: Add <cpu_func.h> to some platformsTom Rini
The common portable header for CPU related functions such as cache flushing and invalidation is <cpu_func.h> so add that to these drivers. Signed-off-by: Tom Rini <[email protected]>
2025-08-01drivers/net/ftgmac100.c: Fix a debug printTom Rini
In the debug print in ftgmac100_send we want to say where the packet is in memory and what the length is, so use %p to print that. Signed-off-by: Tom Rini <[email protected]>
2025-07-24sandbox: eth-raw: Prevent possible buffer overflowAndrew Goodbody
Instead of strcpy which is unbounded use strlcpy to ensure that the receiving buffer cannot be overflowed. This issue found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]>
2025-07-24net: xilinx: Fix kernel-doc for axi_mrmac function parametersVenkatesh Yadav Abbarapu
The kernel-doc comment for the axi_mrmac_recv function was missing the colon (':') after the '@packetp' parameter tag. The kernel-doc comment for the axi_mrmac_free_pkt function was missing the colon (':') after the 'length' parameter tag. This caused a Sparse warnings regarding the 'packetp' and 'length' parameters not being described. Fix the formatting to align with kernel-doc standards and resolve the warning. drivers/net/xilinx_axi_mrmac.c:357: warning: Function parameter or member 'packetp' not described in 'axi_mrmac_recv' drivers/net/xilinx_axi_mrmac.c:411: warning: Function parameter or member 'length' not described in 'axi_mrmac_free_pkt' Signed-off-by: Venkatesh Yadav Abbarapu <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Michal Simek <[email protected]>
2025-07-17drivers: net: Add T-Head DWMAC glue layerYao Zi
The Designware IP integrated in TH1520 SoC requires extra clock configuration to operate correctly. The Linux kernel's T-Head DWMAC glue driver is ported and adapted to U-Boot's API. Signed-off-by: Yao Zi <[email protected]> Acked-by: Leo Yu-Chi Liang <[email protected]>
2025-07-15Merge patch series "drivers/net/airoha_eth: fixes"Tom Rini
Mikhail Kshevetskiy <[email protected]> says: Several fixes for the airoha ethernet driver. Link: https://lore.kernel.org/r/[email protected]
2025-07-15drivers/net/airoha_eth: enable hw padding of short tx packetsMikhail Kshevetskiy
Transmission of short packets does not work good for XFI (GDM2) and HSGMII (GDM3) interfaces. The issue can be solved with: - padding of short packets to 60 bytes - setting of PAD_EN bit in the corresponding REG_GDM_FWD_CFG(n) register. The issue should present for the lan switch (GDM1) as well, but it does does not appear due to unknown reason. This patch set PAD_EN bit for the used GDM. Signed-off-by: Mikhail Kshevetskiy <[email protected]>
2025-07-15drivers/net/airoha_eth: fix stalling in package receivingMikhail Kshevetskiy
ARCH_DMA_MINALIGN is 64 for ARMv7a/ARMv8a architectures, but RX/TX descriptors are 32 bytes long. So they may not be aligned on an ARCH_DMA_MINALIGN boundary. In case of RX path, this may cause the following problem 1) Assume that a packet has arrived and the EVEN rx descriptor has been updated with the incoming data. The driver will invalidate and check the corresponding rx descriptor. 2) Now suppose the next descriptor (ODD) has not yet completed. Please note that all even descriptors starts on 64-byte boundary, and the odd ones are NOT aligned on 64-byte boundary. Inspecting even descriptor, we will read the entire CPU cache line (64 bytes). So we read and sore in CPU cache also the next (odd) descriptor. 3) Now suppose the next packet (for the odd rx descriptor) arrived while the first packet was being processed. So we have new data in memory but old data in cache. 4) After packet processing (in arht_eth_free_pkt() function) we will cleanup the descriptor and put it back to rx queue. This will call flush_dcache_range() function for the even descriptor, so the odd one will be flushed as well (it is in the same cache line). So the old data will be written to the next rx descriptor. 5) We get a freeze. The next descriptor is empty (so the driver is waiting for packets), but the hardware will continue to receive packets on other available descriptors. This will continue until the last available rx descriptor is full. Then the hardware will also freeze. The problem will be solved if the previous descriptor will be put back to the queue instead of the current one. If the current descriptor is even (starts on a 64-byte boundary), then putting the previous descriptor to the rx queue will affect the previous cache line. To be 100% ok, we must make sure that the previous and the one before the previous descriptor cannot be used for receiving at this moment. If the current descriptor is odd, then the previous descriptor is on the same cache line. Both (current and previous) descriptors are not currently in use, so issue will not arrise. WARNING: The following restrictions on PKTBUFSRX must be held: * PKTBUFSRX is even, * PKTBUFSRX >= 4. The bug appears on 32-bit airoha platform, but should be present on 64-bit as well. The code was tested both on 32-bit and 64-bit airoha boards. Signed-off-by: Mikhail Kshevetskiy <[email protected]>
2025-07-15drivers/net/airoha_eth: fix packet transmission errorsMikhail Kshevetskiy
The dma_map_single() function calls one of the functions * invalidate_dcache_range(), * flush_dcache_range(). Both of them expect that 'vaddr' is aligned to the ARCH_DMA_MINALIGN boundary. Unfortunately, RX/TX descriptors are 32-byte long. Thus they might not be aligned to the ARCH_DMA_MINALIGN boundary. Data flushing (or invalidating) might do nothing in this case. The same applies to dma_unmap_single() function. In the TX path case the issue might prevent package transmission (filled TX descriptor was not flushed). To fix an issue a special wrappers for * dma_map_single(), * dma_unmap_single() functions were created. The patch fix flushing/invalidatiog for the RX path as well. The bug appears on 32-bit airoha platform, but should be present on 64-bit as well. The code was tested both on 32-bit and 64-bit airoha boards. Signed-off-by: Mikhail Kshevetskiy <[email protected]>
2025-07-15drivers/net/airoha_eth: add missing terminator for compatible devices listMikhail Kshevetskiy
Compatible device list must have a terminator. If terminator is missed the u-boot driver subsystem will access random data placed after the list in the memory. The issue can be observed with the "dm compat" command. Signed-off-by: Mikhail Kshevetskiy <[email protected]>
2025-07-15net: mediatek: correct the AN8855 TPID value in port isolation settingsWeijie Gao
The TPID value should be 0x9100 instead of 0x8100 according to the datasheet. Fixes: cedafee9ff3 (net: mediatek: add support for Airoha AN8855 ethernet switch) Signed-off-by: Weijie Gao <[email protected]>
2025-07-10Merge branch 'master' of https://source.denx.de/u-boot/custodians/u-boot-shTom Rini
- SH Ether clean ups, RZ/A1 clean ups, RZ/A1 Genmai support - Gen3 EEPROM DT node clean up - V4H SA0 BootROM compatible binman etype, SCIF compatible SREC generation for Gen4
2025-07-10net: sh_eth: arm: renesas: README: Drop CFG_SH_ETHER_PHY_ADDRMarek Vasut
Drop CFG_SH_ETHER_PHY_ADDR from README and configuration files, this value is never used, PHY address is extracted from control DT instead. No functional change intended. Signed-off-by: Marek Vasut <[email protected]>
2025-07-10net: sh_eth: Drop phy_addr assignmentMarek Vasut
Drop unused struct sh_eth_info *port_info .phy_addr member assignment. PHY address is extracted from control DT. No functional change intended. Signed-off-by: Marek Vasut <[email protected]>
2025-07-10net: sh_eth: Convert cache operations to static functionsMarek Vasut
Turn the current cache operation macros into static functions to improve compiler coverage checking. This does change the driver behavior slightly, the driver now expects those cache operation functions to be available on all architectures on which it is used. This should pose no problem, as the driver is only used on 32bit and 64bit ARM, which both have those operations. The CFG_SH_ETHER_ALIGNE_SIZE is converted to SH_ETHER_ALIGN_SIZE and defined as either 64 on ARM or 16 on SH. Signed-off-by: Marek Vasut <[email protected]>
2025-07-10net: sh_eth: arm: renesas: README: Drop CFG_SH_ETHER_USE_PORTMarek Vasut
The CFG_SH_ETHER_USE_PORT configuration option is a remnant from before U-Boot DM existed and SH Ethernet made full use of it, and is no longer used, remove it. Signed-off-by: Marek Vasut <[email protected]>
2025-07-10net: sh_eth: Pass struct port_info aroundMarek Vasut
The struct sh_eth_dev .port member is always set to 0, therefore only single-ported SH Ethernet is ever used. Support for multiple SH Ethernet ports implemented on driver level is a remnant from before U-Boot DM existed. Pass struct sh_eth_info port_info around directly and remove the struct sh_eth_dev entirely. Handling of multiple ports should be done by U-Boot DM and multiple per-driver-instance private data. No functional change intended. Signed-off-by: Marek Vasut <[email protected]>
2025-07-10net: ti: icssg: Read firmware name from device-treeMD Danish Anwar
Update the ICSSG PRU Ethernet driver to read PRU/RTU/TXPRU firmware names from the Device Tree using the "firmware-name" property, instead of relying on the hard-coded firmware names. The firmware names are parsed during prueth_probe() and stored in the prueth->firmwares for each slice. The driver now uses these dynamically loaded names when starting the PRU cores. This change improves flexibility and allows firmware selection to be controlled via the device tree, making the driver more adaptable to different platforms and firmware configurations. Signed-off-by: MD Danish Anwar <[email protected]>
2025-07-10drivers: net: phy: micrel: Try to get phy node from phy-handleNaresh Kumar Ravulapalli
If phy node isn't found in ethernet-phy subnode, try to get it from phy-handle. And when this fails, only then use Ethernet node. This fix results in getting correct phy handle properties for the phy node if defined. Signed-off-by: Naresh Kumar Ravulapalli <[email protected]>