aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/realtek
Commit message (Collapse)AuthorAgeFilesLines
* kernel: bump 5.15 to 5.15.96John Audia2023-02-281-1/+1
| | | | | | | | | | All patches automatically rebased. Build system: x86_64 Build-tested: bcm2711/RPi4B, filogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3 Run-tested: bcm2711/RPi4B, filogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3 Signed-off-by: John Audia <therealgraysky@proton.me>
* kernel: bump 5.15 to 5.15.94John Audia2023-02-181-3/+3
| | | | | | | | | | Patches automatically rebased. Build system: x86_64 Build-tested: bcm2711/RPi4B, filogic/xiaomi_redmi-router-ax6000-ubootmod Run-tested: bcm2711/RPi4B, filogic/xiaomi_redmi-router-ax6000-ubootmod Signed-off-by: John Audia <therealgraysky@proton.me>
* realtek: add support for APRESIA ApresiaLightGS120GT-SSINAGAKI Hiroshi2023-02-133-0/+556
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | APRESIA ApresiaLightGS120GT-SS (APLGS120GTSS) is a 16 + 4 ports gigabit switch, based on RTL8382M. Specifications: - SoC : Realtek RTL8382M - RAM : DDR3 256 MiB (Nanya NT5CC256M8JQ-EK) - Flash : SPI-NOR 32 MiB (Macronix MX25L25635FMI-10G) - Ethernet : 10/100/1000 Mbps x16 + 4 - port 1-8 : RTL8218B - port 9-16 : RTL8382M, TP (SoC, RTL8218B) - port 17-20 : RTL8214FC, TP/SFP (Combo) - LEDs/Keys : 3x/1x - UART : through-hole on PCB - J6: 3.3V, TX, RX, GND from tri-angle marking side - 115200n8 - Power : 100-120/200-240 VAC, 50/60 Hz Max. 16 W, Avg 14 W (100 VAC) - Plug : IEC 60320-C13 Flash instruction using factory image: 1. Boot ApresiaLightGS120GT-SS normally 2. Login to WebUI and open firmware page ("ファームウェア") 3. If the device is booted from image1, set active image for next booting ("起動イメージ選択") to image2("イメージ2"), press apply ("適用") button and reboot the device to make booting from image2 4. On the WebUI, set active image to image1 5. Select the OpenWrt factory image and press update button ("更新") 6. Open reboot page ("再起動") and press reboot button ("再起動実行") Notes: - "ApresiaLightGS120GT-SS" is a model name and "APLGS120GTSS" is a model number - this device has 3x GPIO-controlled LEDs on PCB, but 1x LED ("green:unused") has no hole on the case Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
* realtek: add common definition of cameo based firmwareINAGAKI Hiroshi2023-02-132-10/+16
| | | | | | | | | | | | The cameo-related recipes can also be used for APRESIA ApresiaLightGS series devices. So create common definition for the devices manufactured by Cameo. And also, the model name of ApresiaLightGS120GT-SS is too long for cameo header (max: 20 bytes), so use additional variable "CAMEO_BOARD_MODEL" in Build/cameo-headers instead of DEVICE_MODEL to use the custom name. (default of CAMEO_BOARD_MODEL: DEVICE_MODEL) Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
* realtek: rename cameo specific names in "Build/*" definitionsINAGAKI Hiroshi2023-02-132-10/+10
| | | | | | | | This patch renames some Cameo specific definitions for image generation. The same format is also used on APRESIA ApresiaLightGS series devices, not D-Link specific. Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
* realtek: fix memory leak in netevent handlerJan Hoffmann2023-02-132-16/+18
| | | | | | | | | The net_event_work struct is allocated, but only freed in a single case. Move the allocation to the branch where it is actually needed, and free it after the work has been done. Fixes: 03e1d93e0779 ("realtek: add driver support for routing offload") Signed-off-by: Jan Hoffmann <jan@3e8.eu>
* realtek: fix dts whitespaceFelix Baumann2023-02-094-9/+9
| | | | | | Remove whitespace from otherwise empty lines Signed-off-by: Felix Baumann <felix.bau@gmx.de>
* kernel: bump 5.10 to 5.10.166John Audia2023-02-031-11/+11
| | | | | | | | | | All patches automatically rebased. Build system: x86_64 Build-tested: ramips/tplink_archer-a6-v3 Run-tested: ramips/tplink_archer-a6-v3 Signed-off-by: John Audia <therealgraysky@proton.me>
* kernel: bump 5.15 to 5.15.91John Audia2023-02-031-11/+11
| | | | | | | | | | | | | Manually rebased: pending-5.15/103-kbuild-export-SUBARCH.patch All other patches automatically rebased. Build system: x86_64 Build-tested: bcm2711/RPi4B, filogic/xiaomi_redmi-router-ax6000-ubootmod Run-tested: bcm2711/RPi4B, filogic/xiaomi_redmi-router-ax6000-ubootmod Signed-off-by: John Audia <therealgraysky@proton.me>
* realtek: use generic earlycon setup on 5.15INAGAKI Hiroshi2023-01-309-15/+32
| | | | | | | | | | Use generic earlycon on Linux Kernel instead of initialization in platform setup. And also, drop bootargs with console= parameter from I-O DATA BSH-G24MB. It uses 115200bps as baud-rate, the same as default in rtl838x.dtsi. Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com> Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
* realtek: remove KERNEL_PATCHVER overridesSander Vanheule2023-01-294-8/+0
| | | | | | | | | | On the realtek target, the subtarget makefiles include a KERNEL_PATCHVER setting, shadowing KERNEL_PATCHVER from target/linux/realtek/Makefile. This makes the realtek target an exception in this regard, and makes switching kernel version a bit bothersome. Remove the overrides so all subtargets use the same kernel version. Signed-off-by: Sander Vanheule <sander@svanheule.net>
* realtek: dgs-1210-10mp: update sfp phy-handleDaniel Groth2023-01-282-4/+4
| | | | | | | | Adjust the wrong phy-handle definitions for the sfp ports so that they match the correct switch ports. Fixes: 89eb8b50d18d ("realtek: dgs-1210-10mp: add full sfp description") Signed-off-by: Daniel Groth <flygarn12@gmail.com>
* realtek: Refresh kernel patchesHauke Mehrtens2023-01-281-1/+1
| | | | | | | Make the patches apply cleanly again. Fixes: 4db8598e4296 ("realtek: Do not set KERNEL_ENTRY just to avoid NO_EXCEPT_FILL") Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* realtek: timer: Fix cosmetic whitespace in commentsOlliver Schinagl2023-01-281-20/+7
| | | | | | Comments are a bit weird in the timer driver, lets fix those. Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
* realtek: timer: Remove CEVT_RTL9300 completelyOlliver Schinagl2023-01-283-268/+0
| | | | | | | As the timer has been fixed now, we can drop the CEVT_RTL9300 timer all together. Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
* realtek: timer: Activate for RTL930x devicesOlliver Schinagl2023-01-283-15/+16
| | | | | | | | | Use the new timer driver for the RTL930x devices. Signed-off-by: Olliver Schinagl <oliver@schinagl.nl> [remove old clock provider, select MIPS_EXTERNAL_TIMER and refresh kernel config] Signed-off-by: Sander Vanheule <sander@svanheule.net>
* realtek: timer: Register enabled scheduler clockSander Vanheule2023-01-282-2/+2
| | | | | | | | | | | | | Before calling sched_clock_register(), the timer used to drive the scheduling clock should already be enabled. Otherwise the kernel log will show strange time jumps during, and the watchdog might not be pinged in a timely fashion, resulting in reboots. [ 0.160281] NET: Registered PF_NETLINK/PF_ROUTE protocol family [ 78.104319] clocksource: Switched to clocksource realtek_otto_timer Fixes: 3cc801117118 ("realtek: resurrect timer driver") Signed-off-by: Sander Vanheule <sander@svanheule.net>
* realtek: eth: Fix missing end of comment markerOlliver Schinagl2023-01-271-1/+1
| | | | | | | Because this comment is followed by another comment, nothing luckily breaks, so only a cosmetic change. Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
* realtek: rtl931x: drop LINKER_LOAD_ADDRESS bypassSander Vanheule2023-01-252-118/+0
| | | | | | | | | | | | | RTL931x kernel builds were patched to bypass the LINKER_LOAD_ADDRESS parameter, and hardcode it to 0x80220000. This doesn't make much sense, since value of LINKER_LOAD_ADDRESS, load-ld, only appears to be a copy of load-y, adjusted to the linker's taste. Dropping the hacks for bypassing LINKER_LOAD_ADDRESS results in a kernel that actually starts booting on an RTL9313 (Netgear MS510TXM), but currently still hangs when the kernel switches timers. Signed-off-by: Sander Vanheule <sander@svanheule.net>
* realtek: dsa: support active-high LEDsLorenz Brun2023-01-242-0/+10
| | | | | | | | | The TP-LINK TL-ST1008F has active-high LEDs, so we need a device tree property to express this. Signed-off-by: Lorenz Brun <lorenz@brun.one> [Tidy up code, restrict changes to 5.15] Signed-off-by: Sander Vanheule <sander@svanheule.net>
* realtek: rtl931x: drop CONFIG_NO_EXCEPT_FILL hackSander Vanheule2023-01-242-34/+0
| | | | | | | | | On RTL931x builds, CONFIG_RTL931X was used as a stand-in for CONFIG_NO_EXCEPT_FILL. Now that the latter is always selected for devices in the realtek target, this hack can be removed. Resulting device images are binary identical. Signed-off-by: Sander Vanheule <sander@svanheule.net>
* realtek: Refresh kernel config with no_except_fillOlliver Schinagl2023-01-248-0/+8
| | | | | | Update the config files with the previous commit. Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
* realtek: Do not set KERNEL_ENTRY just to avoid NO_EXCEPT_FILLOlliver Schinagl2023-01-243-3/+4
| | | | | | | | | | It seems like we are offsetting the KERNEL_ENTRY to +0x400, which is also accomplished by the NO_EXCEPT_FILL configuration option. Since this is the default for MIPS_GENERIC_KERNEL, lets push a little bit closer to that one by doing the same thing. Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
* realtek: use irq_force_affinity on otto timer insteadINAGAKI Hiroshi2023-01-212-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | After commit e0d2c59ee995 ("genirq: Always limit the affinity to online CPUs", 5.10) on Linux, the cpumask passed to irq_set_affinity of irqchip driver is limited to online CPUs. When irq_do_set_affinity called from otto timer driver with only one secondary CPU, that CPU is not marked as online yet, filtered out by cpu_online_mask and fall to error path. Then, fail to set affinity for that CPU and it leads to instability of timer on secondary CPU(s). At least, RTL839x system will be affected. log: [ 37.560020] rcu: INFO: rcu_sched detected stalls on CPUs/tasks: [ 37.638025] rcu: 1-...!: (0 ticks this GP) idle=6ac/0/0x0 softirq=0/0 fqs=1 (false positive?) [ 37.752683] (detected by 0, t=6002 jiffies, g=-1179, q=26293) [ 37.829510] Sending NMI from CPU 0 to CPUs 1: [ 37.886857] NMI backtrace for cpu 1 skipped: idling at r4k_wait_irqoff+0x1c/0x24 [ 37.984801] rcu: rcu_sched kthread timer wakeup didn't happen for 5999 jiffies! g-1179 f0x0 RCU_GP_WAIT_FQS(5) ->state=0x402 [ 38.132743] rcu: Possible timer handling issue on cpu=1 timer-softirq=0 [ 38.221033] rcu: rcu_sched kthread starved for 6000 jiffies! g-1179 f0x0 RCU_GP_WAIT_FQS(5) ->state=0x402 ->cpu=1 [ 38.356336] rcu: Unless rcu_sched kthread gets sufficient CPU time, OOM is now expected behavior. [ 38.474440] rcu: RCU grace-period kthread stack dump: ... Replace to irq_force_affinity from irq_set_affinity and ignore cpu_online_mask to fix the issue. Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com> Tested-by: Olliver Schinagl <oliver@schinagl.nl>
* realtek: Follow kernel comment style recommendationMarkus Stockhausen2023-01-131-21/+27
| | | | | | | While Linus is fine with longer code lines, comments should still be within the 80 char limit. Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
* realtek: add support for Netgear GS750EDavide Fioravanti2023-01-133-0/+524
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is an RTL8393-based switch with 48 RJ-45 and 2 SFP ports. Hardware -------- SoC: Realtek RTL8393M RAM: 128MB DDR3 (Nanya NT5CC64M16GP-DI) FLASH: 8MB NOR (Macronix MX25L6433F) ETH: 48x 10/100/1000 Mbps RJ-45 Ethernet SFP: 2x SFP BTN: - 1x Reset button LEDS: - 50x Green-Amber leds: lan/sfp status - 1x Green led: power (Always on) UART: - 115200-8-N-1 (CN3, pin-out on PCB) Everything works correctly except for the 2 SFP ports that are not working unless you enable it every boot in U-Boot with the command: rtk network on Installation ------------ You can install Openwrt using one of the following methods. Warning: flashing OpenWrt will delete your current configuration. Warning 2: if the -factory.bix file is not available anymore, you must follow Method 2. Method 1: Check the firmware version currently running on your switch. If you are running FW V1.0.1.10 or greater, you have to download the firmware V1.0.1.8 from Netgear website and then flash this version. When the switch restarts, it should be on version V1.0.1.8. Now you can get the OpenWrt -factory.bix file and then flash it using the OEM web interface. Method 2 (requires the UART connection): Boot the -initramfs-kernel.bin image from U-Boot with these commands: rtk network on; tftpboot 0x8f000000 openwrt-realtek-rtl839x-netgear_gs750e-initramfs-kernel.bin; bootm; And then flash the -sysupgrade.bin file from OpenWrt. Revert to stock --------------- Get the stock firmware from the Netgear website and flash it using the OpenWrt web interface. Remember to not keep the current configuration and check the "Force upgrade" checkbox Once reverted to stock the firmware could complain in the UART console about mtdblock3 and/or mtdblock4 not being mounted correctly but it seems to work anyway without any problems. Sample error: mount: Mounting /dev/mtdblock4 on /mntlog failed: Input/output error If you want to get rid of these error messages you can boot the -initramfs-kernel.bin image from U-Boot with these commands: rtk network on; tftpboot 0x8f000000 openwrt-realtek-rtl839x-netgear_gs750e-initramfs-kernel.bin; bootm; And then erase the corresponding partitions using the command: For mtdblock3: mtd erase jffs2_cfg For mtdblock4: mtd erase jffs2_log Now you can reboot the switch and the errors should be gone Note ---- To get the SFP ports fully working, all the right GPIOs must be found. In the GPL sources I found these: - GPIO_14: SFP_TX_DIS1; - GPIO_19: SFP_TX_DIS0; Signed-off-by: Davide Fioravanti <pantanastyle@gmail.com>
* realtek: rtl839x: enable driver for virtual mtd_concat devices in configDavide Fioravanti2023-01-132-0/+2
| | | | | | | Enable the driver for the rtl839x target. It's required at least for Netgear GS750E Signed-off-by: Davide Fioravanti <pantanastyle@gmail.com>
* kernel: Refresh kernel patchesHauke Mehrtens2023-01-081-1/+1
| | | | | | | Make the patches apply cleanly again. Fixes: 8dfe69cdfc5c ("kernel: update nvmem subsystem to the latest upstream") Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* realtek: dgs-1210-10mp: add full sfp descriptionDaniel Groth2023-01-082-4/+108
| | | | | | | | Added the full SFP description for both SFP ports (lan9, 10) on D-Link DGS-1210-10MP, which enables hot-plug detection of SFP modules. Added the patch to both kernel 5.10 and 5.15 dts files. Signed-off-by: Daniel Groth <flygarn12@gmail.com>
* kernel: Refresh kernel patchesHauke Mehrtens2023-01-071-1/+1
| | | | | | | Make the patches apply cleanly again. Fixes: 8dfe69cdfc5c ("kernel: update nvmem subsystem to the latest upstream") Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* realtek: don't relocate kernel on HPE 1920 seriesJan Hoffmann2023-01-072-16/+0
| | | | | | | This is no longer needed now that the kernel is built with a load address that matches the one hard-coded in the bootloader. Signed-off-by: Jan Hoffmann <jan@3e8.eu>
* realtek: 5.15: Improve error handling in rtl838x_pie_rule_write()Pascal Ernster2023-01-051-6/+10
| | | | | | | In target/linux/realtek/files-5.15/drivers/net/dsa/rtl83xx/rtl838x.c, make rtl838x_pie_rule_write() return non-zero value case of error. Signed-off-by: Pascal Ernster <git@hardfalcon.net>
* realtek: 5.15: Improve rtl838x dsa driver error handlingPascal Ernster2023-01-051-24/+32
| | | | | | | | | Make sure functions calling rtl838x_smi_wait_op() return its return value in target/linux/realtek/files-5.15/drivers/net/dsa/rtl83xx/rtl838x.c. This brings the code style in line with the rtl839x implementation. Suggested-by: Sander Vanheule <sander@svanheule.net> Signed-off-by: Pascal Ernster <git@hardfalcon.net>
* realtek: return correct error value for phy opsPascal Ernster2023-01-051-2/+2
| | | | | | | | | | | | | | | | | | | | | A behavioural change was introduced with commit 758c88b96963 ("realtek: Whitespace and codestyle cleanup") causing rtl838x_read_phy() and rtl838x_write_phy() to unconditionally return -ETIMEDOUT. As a result, probing the device during boot fails: Error setting up netdev, freeing it again. rtl838x-eth: probe of 1b00a300.ethernet failed with error -5 Fix the bootloop caused by this regression with kernel 5.15 on rtl838x devices, by properly returning 0 on success. Tested on a Netgear GS108T v3, a Netgear GS310TP v1, a Zyxel GS1900-8HP v1 and an HPE 1920-8G. Fixes: 758c88b969639d0e6b684669d2e54dd1be3102f4 ("realtek: Whitespace and codestyle cleanup") Tested-by: Stijn Segers <foss@volatilesystems.org> Tested-by: Jan Hoffmann <jan@3e8.eu> Signed-off-by: Pascal Ernster <git@hardfalcon.net>
* realtek: Migrate to upstream generic MIPS addressesOlliver Schinagl2023-01-053-4/+4
| | | | | | | | | | Upstream generic MIPS uses 0x80100000 and 0x80100400 for the LOADADDR and ENTRY addresses. As we do not want to diverge from upstream and patch upstream when not needed, adjust our addresses as well to be future proof. Signed-off-by: Olliver Schinagl <oliver@schinagl.nl> Tested-by: Jan Hoffmann <jan@3e8.eu> # HPE 1920-8G, HPE 1920-48G
* realtek: Migrate to libdeflateOlliver Schinagl2023-01-023-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | Libdeflate is a more advanced gzip compressor, which allows for faster decompression, higher compression speed (factor 3-4), while being fully gzip compatible. Some comparison gzip | libdeflate-gzip | delta | image [openwrt-realtek-rtl839x-*] --------+-----------------+--------+----------------------------------------------- 6589174 | 6298794 | 290380 | d-link_dgs-1210-52-initramfs-kernel.bin 6291632 | 6029488 | 262144 | d-link_dgs-1210-52-squashfs-factory_image1.bin 6292270 | 6030128 | 262142 | d-link_dgs-1210-52-squashfs-sysupgrade.bin 6589142 | 6298760 | 290382 | zyxel_gs1900-48-initramfs-kernel.bin 6292264 | 6030122 | 262142 | zyxel_gs1900-48-squashfs-sysupgrade.bin and changing lzma to (libdeflate-)gzip on existing rtl930x target: gzip | libdeflate-gzip | delta | image [openwrt-realtek-rtl930x-*] --------+-----------------+--------+-------------------------------------- 6816230 | 6510382 | 305848 | zyxel_xgs1250-12-initramfs-kernel.bin Signed-off-by: Olliver Schinagl <oliver@schinagl.nl> Reviewed-by: Robert Marko <robimarko@gmail.com> Reviewed-by: Rosen Penev <rosenp@gmail.com> Reviewed-by: Sander Vanheule <sander@svanheule.net>
* realtek: Disable boston clockOlliver Schinagl2023-01-018-8/+4
| | | | | | | We are not on the 'boston' platform so no point in having that clock driver enabled. Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
* realtek: deduplicate GS1900 recipesSander Vanheule2022-12-283-23/+18
| | | | | | | | | | ZyXEL GS1900 devices with SoCs from both the RTL838x and RTL839x families share the same image structure and size of the firmware partition. Additionally, the GS1900-48 recipe provided a parameter for the zyxel-vers command, but this parameter is not used. Deduplicate the recipes by moving it to target/linux/realtek/image/common.mk. Signed-off-by: Sander Vanheule <sander@svanheule.net>
* realtek: fix GS1900-48 firwmare partitionSander Vanheule2022-12-283-5/+5
| | | | | | | | | | The listed partition size doesn't match the original partition size, and actually overlaps with the following partition. The partition node name for the "firmware" partition also has an extra 'b' compared to the partition offset. Fixes: 47f5a0a3eed5 ("realtek: Add support for ZyXEL GS1900-48 Switch") Signed-off-by: Sander Vanheule <sander@svanheule.net>
* realtek: fix ZYXELS_VERS for GS1900-48Sander Vanheule2022-12-281-1/+1
| | | | | | | | | | | | | | | | | The GS1900-48 firmware image is identified by the 'AAHN' ID, while the GS1900-48HP is identified by 'AAHO' [1]. The latter was used, resulting in the following error message when upgrading via the stock web UI: Device only can support firmware from V1.00(AAHN.0) and later version Fix image generation by using the correct ID. [1] https://download.zyxel.com/GS1900-48/firmware/GS1900-48_2.70(AAHN.3)C0_2.pdf Link: https://forum.openwrt.org/t/146533 Fixes: 47f5a0a3eed5 ("realtek: Add support for ZyXEL GS1900-48 Switch") Suggested-by: Stefan Lippers-Hollmann <s.l-h@gmx.de> Signed-off-by: Sander Vanheule <sander@svanheule.net>
* realtek: fix default image generationSander Vanheule2022-12-281-3/+3
| | | | | | | | | | | | While cleaning up the makefiles for the realtek target, the order of the default image generating commands was accidentally changed. This caused the image signature to end up somewhere in the middle, misaligning the rootfs. As a result, sysupgrade couldn't verify upgrade images anymore, and devices end up in a boot loop due to the unaligned (and not found) rootfs. Fixes: 94d8b4852b9f ("realtek: Cleanup Makefiles") Signed-off-by: Sander Vanheule <sander@svanheule.net>
* realtek: Fix reset register accessBirger Koblitz2022-12-282-2/+2
| | | | | | | | | | | The reset register on RTL93xx not merely have bits to execute a reset of a hardware component, but also configuration bits for reset procedures. Keep them during executing a reset. Signed-off-by: Birger Koblitz <git@birger-koblitz.de> Signed-off-by: Olliver Schinagl <oliver@schinagl.nl> [backport to 5.10 kernel] Signed-off-by: Sander Vanheule <sander@svanheule.net>
* realtek: Reduce variable scopesOlliver Schinagl2022-12-2712-443/+335
| | | | | | | | | | | | | | Linus prefers to have loop initializers nice and tightly scoped. In OpenWRT this has been possible since 41a1a652fbd4 ("kernel: backport gnu11 upgrade"). This patch cleans up variable scope while trying to do the above for 'simple for loops'. This cleans up and simplifies some functions and code, and pulls in variables to a smaller scope. Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
* realtek: Cleanup MakefilesOlliver Schinagl2022-12-279-31/+110
| | | | | | | Our current Makefiles a little bit messy and can be improved somewhat, both in whitespace and in style. Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
* realtek: Replace C++ style commentsOlliver Schinagl2022-12-2720-964/+966
| | | | | | | The only exception to C++ style comments are SPDX license identifier markers at the start of C files (even headers have C style markers). Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
* realtek: Whitespace and codestyle cleanupOlliver Schinagl2022-12-2725-810/+767
| | | | | | | | Fix some ugly whitepsaces and codestyle issues around the realtek sources. While this is by no means perfect, it catches what it caught. Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
* realtek: add cond_resched to loops accessing the FDB tableJan Hoffmann2022-12-274-0/+12
| | | | | | | | | A full loop accessing all FDB entries can take several milliseconds (on RTL839x about 20 ms), so give other kernel tasks a chance to run. This is especially important for rtl83xx_port_fdb_dump which is itself called in a loop for all ports by the kernel. Signed-off-by: Jan Hoffmann <jan@3e8.eu>
* realtek: restructure rtl_table_read/writeJan Hoffmann2022-12-274-28/+62
| | | | | | | | | | | | | | | | These two functions are identical apart from writing different values to the read/write bit. Create a new function rtl_table_exec to reduce code duplication. Also replace the unbounded busy-waiting loop. The new implementation may sleep, but as the hardware typically responds before the first poll, any callers doing many table accesses still need to make sure not to block other kernel tasks themselves. So far, polling timeout errors are only handled by logging an error, but a return value is added to allow proper handling in the future. Signed-off-by: Jan Hoffmann <jan@3e8.eu>
* realtek: simplify log messages in rtl83xx_mdio_probeJan Hoffmann2022-12-272-14/+2
| | | | | | | | | | This function currently prints three messages for every switch port at KERN_INFO level. This takes a considerable amount of time during bootup and can even trigger an external watchdog. Replace these log messages by a single one at KERN_DEBUG level. Signed-off-by: Jan Hoffmann <jan@3e8.eu>
* realtek: don't set L2LEARNING flag in rtl83xx TX headerJan Hoffmann2022-12-272-4/+4
| | | | | | | | | | | | | | | | | | | As learning for the CPU port is now disabled globally, the bit in the TX header doesn't have any effect anymore. Remove it to make the header consistent with the global configuration. Originally, this change was intended to be applied before commit eb456aedfe24 ("realtek: use assisted learning on CPU port"), which is why the commit message incorrectly mentions that the TX header already disables learning. The reason for disabling learning on the CPU port in the first place is that it doesn't work correctly when packets are trapped to the CPU and then forwarded by the CPU to other ports. In that case, the switch would incorrectly learn the CPU port as source. An example that triggered this issue are Multicast Listener Reports and IGMP membership reports. Signed-off-by: Jan Hoffmann <jan@3e8.eu>