<freeStyleProject _class='hudson.model.FreeStyleProject'><action _class='hudson.model.ParametersDefinitionProperty'><parameterDefinition _class='hudson.model.BooleanParameterDefinition'><defaultParameterValue _class='hudson.model.BooleanParameterValue'><name>BUILD_CFG_DISTCLEAN</name><value>true</value></defaultParameterValue><description>開始前に &lt;code&gt;make distclean&lt;/code&gt; を実施</description><name>BUILD_CFG_DISTCLEAN</name><type>BooleanParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.BooleanParameterDefinition'><defaultParameterValue _class='hudson.model.BooleanParameterValue'><name>BUILD_CFG_DIFFCONFIG</name><value>true</value></defaultParameterValue><description>diffconfigを使用してビルド</description><name>BUILD_CFG_DIFFCONFIG</name><type>BooleanParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.ChoiceParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>BUILD_CFG_TARGET_DEV</name><value>WR8750N/WR9500N/WG600HP (AR9344)</value></defaultParameterValue><description>ビルド対象機種系統</description><name>BUILD_CFG_TARGET_DEV</name><type>ChoiceParameterDefinition</type><choice>WR8750N/WR9500N/WG600HP (AR9344)</choice><choice>WG1400HP/WG1800HP/WG1800HP2 (QCA9558)</choice></parameterDefinition></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'><displayUrl>https://taiha.net/jenkins/job/OpenWrt-master-NEC-BSD-Aterm/</displayUrl></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'><stores></stores></action><description>&lt;p&gt;OpenWrt main for NetBSD based NEC Aterm series routers:&lt;/p&gt;


&lt;p&gt;NECのBootloaderからinitramfs-factory.binブート可&lt;/p&gt;
</description><displayName>OpenWrt (master) for NEC Aterm (NetBSD based)</displayName><displayNameOrNull>OpenWrt (master) for NEC Aterm (NetBSD based)</displayNameOrNull><fullDisplayName>OpenWrt (master) for NEC Aterm (NetBSD based)</fullDisplayName><fullName>OpenWrt-master-NEC-BSD-Aterm</fullName><name>OpenWrt-master-NEC-BSD-Aterm</name><url>https://taiha.net/jenkins/job/OpenWrt-master-NEC-BSD-Aterm/</url><buildable>true</buildable><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.parameterizedscheduler.ParameterizedTimerTriggerCause'><shortDescription>Started by timer with parameters: {BUILD_CFG_TARGET_DEV=WG1400HP/WG1800HP/WG1800HP2 (QCA9558)}</shortDescription></cause></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.BooleanParameterValue'><name>BUILD_CFG_DISTCLEAN</name><value>true</value></parameter><parameter _class='hudson.model.BooleanParameterValue'><name>BUILD_CFG_DIFFCONFIG</name><value>true</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BUILD_CFG_TARGET_DEV</name><value>WG1400HP/WG1800HP/WG1800HP2 (QCA9558)</value></parameter></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmain _class='hudson.plugins.git.util.Build'><buildNumber>499</buildNumber><marked><SHA1>a5c93cd3344709b6a05bbf1c7133d04a4d513513</SHA1><branch><SHA1>a5c93cd3344709b6a05bbf1c7133d04a4d513513</SHA1><name>refs/remotes/origin/main</name></branch></marked><revision><SHA1>a5c93cd3344709b6a05bbf1c7133d04a4d513513</SHA1><branch><SHA1>a5c93cd3344709b6a05bbf1c7133d04a4d513513</SHA1><name>refs/remotes/origin/main</name></branch></revision></refsremotesoriginmain></buildsByBranchName><lastBuiltRevision><SHA1>a5c93cd3344709b6a05bbf1c7133d04a4d513513</SHA1><branch><SHA1>a5c93cd3344709b6a05bbf1c7133d04a4d513513</SHA1><name>refs/remotes/origin/main</name></branch></lastBuiltRevision><remoteUrl>https://github.com/openwrt/openwrt</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>config.buildinfo</displayPath><fileName>config.buildinfo</fileName><relativePath>bin/targets/ath79/generic/config.buildinfo</relativePath></artifact><artifact><displayPath>feeds.buildinfo</displayPath><fileName>feeds.buildinfo</fileName><relativePath>bin/targets/ath79/generic/feeds.buildinfo</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1400hp-initramfs-factory.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1400hp-initramfs-factory.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1400hp-initramfs-factory.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1400hp-initramfs-kernel.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1400hp-initramfs-kernel.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1400hp-initramfs-kernel.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1400hp-squashfs-sysupgrade.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1400hp-squashfs-sysupgrade.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1400hp-squashfs-sysupgrade.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1400hp-uboot.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1400hp-uboot.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1400hp-uboot.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp-initramfs-factory.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp-initramfs-factory.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp-initramfs-factory.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp-initramfs-kernel.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp-initramfs-kernel.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp-initramfs-kernel.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp-squashfs-sysupgrade.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp-squashfs-sysupgrade.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp-squashfs-sysupgrade.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp-uboot.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp-uboot.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp-uboot.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp2-initramfs-factory.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp2-initramfs-factory.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp2-initramfs-factory.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp2-initramfs-kernel.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp2-initramfs-kernel.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp2-initramfs-kernel.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp2-squashfs-sysupgrade.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp2-squashfs-sysupgrade.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp2-squashfs-sysupgrade.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp2-uboot.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp2-uboot.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp2-uboot.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic.manifest</displayPath><fileName>openwrt-ath79-generic.manifest</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic.manifest</relativePath></artifact><artifact><displayPath>profiles.json</displayPath><fileName>profiles.json</fileName><relativePath>bin/targets/ath79/generic/profiles.json</relativePath></artifact><artifact><displayPath>sha256sums</displayPath><fileName>sha256sums</fileName><relativePath>bin/targets/ath79/generic/sha256sums</relativePath></artifact><artifact><displayPath>version.buildinfo</displayPath><fileName>version.buildinfo</fileName><relativePath>bin/targets/ath79/generic/version.buildinfo</relativePath></artifact><building>false</building><description>diffconfig: true, device: WG1400HP/WG1800HP/WG1800HP2 (QCA9558)</description><displayName>#499</displayName><duration>2177247</duration><estimatedDuration>2195975</estimatedDuration><fullDisplayName>OpenWrt (master) for NEC Aterm (NetBSD based) #499</fullDisplayName><id>499</id><inProgress>false</inProgress><keepLog>false</keepLog><number>499</number><queueId>64</queueId><result>SUCCESS</result><timestamp>1790565600310</timestamp><url>https://taiha.net/jenkins/job/OpenWrt-master-NEC-BSD-Aterm/499/</url><builtOn>home-slave02_taihasv</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/kernel/linux/modules/input.mk</affectedPath><commitId>a5c93cd3344709b6a05bbf1c7133d04a4d513513</commitId><timestamp>1790555623000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/daniel</absoluteUrl><fullName>daniel</fullName></author><authorEmail>daniel@makrotopia.org</authorEmail><comment>kernel: add the uhid module

BlueZ creates Bluetooth Low Energy HID devices through uhid, so a
Bluetooth remote or keyboard needs it in addition to kmod-bluetooth.

Signed-off-by: Daniel Golle &lt;daniel@makrotopia.org&gt;
</comment><date>2026-09-28 01:33:43 +0100</date><id>a5c93cd3344709b6a05bbf1c7133d04a4d513513</id><msg>kernel: add the uhid module</msg><path><editType>edit</editType><file>package/kernel/linux/modules/input.mk</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://taiha.net/jenkins/user/daniel</absoluteUrl><fullName>daniel</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.parameterizedscheduler.ParameterizedTimerTriggerCause'><shortDescription>Started by timer with parameters: {BUILD_CFG_TARGET_DEV=WR8750N/WR9500N/WG600HP (AR9344)}</shortDescription></cause></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.BooleanParameterValue'><name>BUILD_CFG_DISTCLEAN</name><value>true</value></parameter><parameter _class='hudson.model.BooleanParameterValue'><name>BUILD_CFG_DIFFCONFIG</name><value>true</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BUILD_CFG_TARGET_DEV</name><value>WR8750N/WR9500N/WG600HP (AR9344)</value></parameter></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmain _class='hudson.plugins.git.util.Build'><buildNumber>498</buildNumber><marked><SHA1>939a6efb1bfc646454d50433f5fb36ea9f4c5eb0</SHA1><branch><SHA1>939a6efb1bfc646454d50433f5fb36ea9f4c5eb0</SHA1><name>refs/remotes/origin/main</name></branch></marked><revision><SHA1>939a6efb1bfc646454d50433f5fb36ea9f4c5eb0</SHA1><branch><SHA1>939a6efb1bfc646454d50433f5fb36ea9f4c5eb0</SHA1><name>refs/remotes/origin/main</name></branch></revision></refsremotesoriginmain></buildsByBranchName><lastBuiltRevision><SHA1>939a6efb1bfc646454d50433f5fb36ea9f4c5eb0</SHA1><branch><SHA1>939a6efb1bfc646454d50433f5fb36ea9f4c5eb0</SHA1><name>refs/remotes/origin/main</name></branch></lastBuiltRevision><remoteUrl>https://github.com/openwrt/openwrt</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>config.buildinfo</displayPath><fileName>config.buildinfo</fileName><relativePath>bin/targets/ath79/tiny/config.buildinfo</relativePath></artifact><artifact><displayPath>feeds.buildinfo</displayPath><fileName>feeds.buildinfo</fileName><relativePath>bin/targets/ath79/tiny/feeds.buildinfo</relativePath></artifact><artifact><displayPath>openwrt-ath79-tiny-nec_wg600hp-initramfs-factory.bin</displayPath><fileName>openwrt-ath79-tiny-nec_wg600hp-initramfs-factory.bin</fileName><relativePath>bin/targets/ath79/tiny/openwrt-ath79-tiny-nec_wg600hp-initramfs-factory.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-tiny-nec_wg600hp-initramfs-kernel.bin</displayPath><fileName>openwrt-ath79-tiny-nec_wg600hp-initramfs-kernel.bin</fileName><relativePath>bin/targets/ath79/tiny/openwrt-ath79-tiny-nec_wg600hp-initramfs-kernel.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-tiny-nec_wg600hp-squashfs-sysupgrade.bin</displayPath><fileName>openwrt-ath79-tiny-nec_wg600hp-squashfs-sysupgrade.bin</fileName><relativePath>bin/targets/ath79/tiny/openwrt-ath79-tiny-nec_wg600hp-squashfs-sysupgrade.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-tiny-nec_wg600hp-uboot.bin</displayPath><fileName>openwrt-ath79-tiny-nec_wg600hp-uboot.bin</fileName><relativePath>bin/targets/ath79/tiny/openwrt-ath79-tiny-nec_wg600hp-uboot.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-tiny-nec_wr8750n-initramfs-factory.bin</displayPath><fileName>openwrt-ath79-tiny-nec_wr8750n-initramfs-factory.bin</fileName><relativePath>bin/targets/ath79/tiny/openwrt-ath79-tiny-nec_wr8750n-initramfs-factory.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-tiny-nec_wr8750n-initramfs-kernel.bin</displayPath><fileName>openwrt-ath79-tiny-nec_wr8750n-initramfs-kernel.bin</fileName><relativePath>bin/targets/ath79/tiny/openwrt-ath79-tiny-nec_wr8750n-initramfs-kernel.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-tiny-nec_wr8750n-squashfs-sysupgrade.bin</displayPath><fileName>openwrt-ath79-tiny-nec_wr8750n-squashfs-sysupgrade.bin</fileName><relativePath>bin/targets/ath79/tiny/openwrt-ath79-tiny-nec_wr8750n-squashfs-sysupgrade.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-tiny-nec_wr8750n-uboot.bin</displayPath><fileName>openwrt-ath79-tiny-nec_wr8750n-uboot.bin</fileName><relativePath>bin/targets/ath79/tiny/openwrt-ath79-tiny-nec_wr8750n-uboot.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-tiny-nec_wr9500n-initramfs-factory.bin</displayPath><fileName>openwrt-ath79-tiny-nec_wr9500n-initramfs-factory.bin</fileName><relativePath>bin/targets/ath79/tiny/openwrt-ath79-tiny-nec_wr9500n-initramfs-factory.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-tiny-nec_wr9500n-initramfs-kernel.bin</displayPath><fileName>openwrt-ath79-tiny-nec_wr9500n-initramfs-kernel.bin</fileName><relativePath>bin/targets/ath79/tiny/openwrt-ath79-tiny-nec_wr9500n-initramfs-kernel.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-tiny-nec_wr9500n-squashfs-sysupgrade.bin</displayPath><fileName>openwrt-ath79-tiny-nec_wr9500n-squashfs-sysupgrade.bin</fileName><relativePath>bin/targets/ath79/tiny/openwrt-ath79-tiny-nec_wr9500n-squashfs-sysupgrade.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-tiny-nec_wr9500n-uboot.bin</displayPath><fileName>openwrt-ath79-tiny-nec_wr9500n-uboot.bin</fileName><relativePath>bin/targets/ath79/tiny/openwrt-ath79-tiny-nec_wr9500n-uboot.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-tiny.manifest</displayPath><fileName>openwrt-ath79-tiny.manifest</fileName><relativePath>bin/targets/ath79/tiny/openwrt-ath79-tiny.manifest</relativePath></artifact><artifact><displayPath>profiles.json</displayPath><fileName>profiles.json</fileName><relativePath>bin/targets/ath79/tiny/profiles.json</relativePath></artifact><artifact><displayPath>sha256sums</displayPath><fileName>sha256sums</fileName><relativePath>bin/targets/ath79/tiny/sha256sums</relativePath></artifact><artifact><displayPath>version.buildinfo</displayPath><fileName>version.buildinfo</fileName><relativePath>bin/targets/ath79/tiny/version.buildinfo</relativePath></artifact><building>false</building><description>diffconfig: true, device: WR8750N/WR9500N/WG600HP (AR9344)</description><displayName>#498</displayName><duration>2238544</duration><estimatedDuration>2195975</estimatedDuration><fullDisplayName>OpenWrt (master) for NEC Aterm (NetBSD based) #498</fullDisplayName><id>498</id><inProgress>false</inProgress><keepLog>false</keepLog><number>498</number><queueId>63</queueId><result>SUCCESS</result><timestamp>1790552400260</timestamp><url>https://taiha.net/jenkins/job/OpenWrt-master-NEC-BSD-Aterm/498/</url><builtOn>home-slave02_taihasv</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/generic/backport-6.18/800-04-v7.3-net-phy-realtek-load-firmware-for-RTL8261C_CG.patch</affectedPath><affectedPath>target/linux/generic/pending-6.18/720-04-net-phy-realtek-setup-aldps.patch</affectedPath><affectedPath>target/linux/generic/pending-6.18/720-08-net-phy-realtek-rate-adapter-in-C22-mode.patch</affectedPath><affectedPath>target/linux/generic/backport-6.18/800-03-v7.3-net-phy-realtek-add-support-for-RTL8261C_CG.patch</affectedPath><affectedPath>target/linux/generic/backport-6.18/800-05-v7.3-net-phy-realtek-add-support-for-RTL8261D.patch</affectedPath><affectedPath>target/linux/realtek/patches-6.18/743-net-realtek-serdes-configuration.patch</affectedPath><affectedPath>target/linux/generic/pending-6.18/720-07-net-phy-realtek-disable-MDIO-broadcast.patch</affectedPath><affectedPath>target/linux/realtek/patches-6.18/024-04-v7.1-net-phy-realtek-add-RTL8224-polarity-support.patch</affectedPath><affectedPath>target/linux/generic/pending-6.18/720-03-net-phy-realtek-make-sure-paged-read-is-protected-by.patch</affectedPath><affectedPath>target/linux/generic/backport-6.18/800-01-v7.3-net-phy-c45-add-genphy_c45_pma_soft_reset.patch</affectedPath><affectedPath>target/linux/realtek/patches-6.18/030-v7.2-net-phy-realtek-support-MDI-swapping-for-RTL8226-CG.patch</affectedPath><affectedPath>target/linux/realtek/patches-6.18/024-02-v7.1-net-phy-realtek-add-RTL8224-pair-order-support.patch</affectedPath><affectedPath>target/linux/generic/backport-6.18/800-02-v7.3-net-phy-c45-add-setup-and-read-master-slave-helpers.patch</affectedPath><affectedPath>target/linux/generic/pending-6.18/743-net-phy-realtek-reset-RTL8261N-USXGMII-SerDes-on-lin.patch</affectedPath><affectedPath>target/linux/generic/pending-6.18/720-06-net-phy-realtek-mark-existing-MMDs-as-present.patch</affectedPath><affectedPath>target/linux/generic/pending-6.18/720-05-net-phy-realtek-detect-early-version-of-RTL8221B.patch</affectedPath><affectedPath>target/linux/generic/pending-6.18/720-01-net-phy-realtek-use-genphy_soft_reset-for-2.5G-PHYs.patch</affectedPath><affectedPath>target/linux/generic/pending-6.18/742-net-phy-realtek-add-5G-and-10G-PHY-support.patch</affectedPath><commitId>51478f312267af5756c076199a0528dcc8f10d22</commitId><timestamp>1790235209000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>generic: 6.18: backport RTL8261C/D PHY support

Backport the upstream series adding support for the Realtek RTL8261C_CG
(PHY ID 0x001cc898) and RTL8261D 10Gbps PHYs, merged for v7.3 as
"add-support-for-rtl8261c-d".

Both parts share the PHY ID and are told apart by a sub-PHY-ID read from
the vendor extension page (0x00 for the RTL8261C, 0x81 for the RTL8261D).
The RTL8261C loads rtl_nic/rtl8261c.bin, the RTL8261D needs no firmware.

Two Clause 45 helpers the driver depends on are backported along with it.

3b63c19e64f8 ("net: phy: c45: add genphy_c45_pma_soft_reset()")
d7722c03089e ("net: phy: c45: add setup and read master/slave helpers")
b772b5ae4537 ("net: phy: realtek: add support for RTL8261C_CG")
a04171a1cf32 ("net: phy: realtek: load firmware for RTL8261C_CG")
f0667918d5fc ("net: phy: realtek: add support for RTL8261D")

Refresh various out-of-tree patches in generic and realtek target.

Assisted-by: Claude:claude-opus-5
Signed-off-by: Simon Polack &lt;spolack+git@mailbox.org&gt;
Link: https://github.com/openwrt/openwrt/pull/25092
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-24 09:33:29 +0200</date><id>51478f312267af5756c076199a0528dcc8f10d22</id><msg>generic: 6.18: backport RTL8261C/D PHY support</msg><path><editType>edit</editType><file>target/linux/generic/pending-6.18/720-01-net-phy-realtek-use-genphy_soft_reset-for-2.5G-PHYs.patch</file></path><path><editType>edit</editType><file>target/linux/realtek/patches-6.18/030-v7.2-net-phy-realtek-support-MDI-swapping-for-RTL8226-CG.patch</file></path><path><editType>add</editType><file>target/linux/generic/backport-6.18/800-02-v7.3-net-phy-c45-add-setup-and-read-master-slave-helpers.patch</file></path><path><editType>add</editType><file>target/linux/generic/backport-6.18/800-03-v7.3-net-phy-realtek-add-support-for-RTL8261C_CG.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.18/720-05-net-phy-realtek-detect-early-version-of-RTL8221B.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.18/743-net-phy-realtek-reset-RTL8261N-USXGMII-SerDes-on-lin.patch</file></path><path><editType>add</editType><file>target/linux/generic/backport-6.18/800-05-v7.3-net-phy-realtek-add-support-for-RTL8261D.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.18/720-03-net-phy-realtek-make-sure-paged-read-is-protected-by.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.18/720-08-net-phy-realtek-rate-adapter-in-C22-mode.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.18/742-net-phy-realtek-add-5G-and-10G-PHY-support.patch</file></path><path><editType>edit</editType><file>target/linux/realtek/patches-6.18/024-04-v7.1-net-phy-realtek-add-RTL8224-polarity-support.patch</file></path><path><editType>add</editType><file>target/linux/generic/backport-6.18/800-04-v7.3-net-phy-realtek-load-firmware-for-RTL8261C_CG.patch</file></path><path><editType>edit</editType><file>target/linux/realtek/patches-6.18/743-net-realtek-serdes-configuration.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.18/720-04-net-phy-realtek-setup-aldps.patch</file></path><path><editType>add</editType><file>target/linux/generic/backport-6.18/800-01-v7.3-net-phy-c45-add-genphy_c45_pma_soft_reset.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.18/720-07-net-phy-realtek-disable-MDIO-broadcast.patch</file></path><path><editType>edit</editType><file>target/linux/realtek/patches-6.18/024-02-v7.1-net-phy-realtek-add-RTL8224-pair-order-support.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.18/720-06-net-phy-realtek-mark-existing-MMDs-as-present.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/generic/pending-6.18/720-04-net-phy-realtek-setup-aldps.patch</affectedPath><affectedPath>target/linux/generic/pending-6.18/720-08-net-phy-realtek-rate-adapter-in-C22-mode.patch</affectedPath><affectedPath>target/linux/realtek/patches-6.18/743-net-realtek-serdes-configuration.patch</affectedPath><affectedPath>target/linux/generic/pending-6.18/720-07-net-phy-realtek-disable-MDIO-broadcast.patch</affectedPath><affectedPath>target/linux/realtek/patches-6.18/024-04-v7.1-net-phy-realtek-add-RTL8224-polarity-support.patch</affectedPath><affectedPath>target/linux/generic/pending-6.18/720-03-net-phy-realtek-make-sure-paged-read-is-protected-by.patch</affectedPath><affectedPath>target/linux/realtek/patches-6.18/030-v7.2-net-phy-realtek-support-MDI-swapping-for-RTL8226-CG.patch</affectedPath><affectedPath>target/linux/realtek/patches-6.18/024-02-v7.1-net-phy-realtek-add-RTL8224-pair-order-support.patch</affectedPath><affectedPath>target/linux/generic/pending-6.18/743-net-phy-realtek-reset-RTL8261N-USXGMII-SerDes-on-lin.patch</affectedPath><affectedPath>target/linux/generic/pending-6.18/720-06-net-phy-realtek-mark-existing-MMDs-as-present.patch</affectedPath><affectedPath>target/linux/generic/backport-6.18/800-06-v7.4-net-phy-realtek-add-support-for-RTL8261CE_CG.patch</affectedPath><affectedPath>target/linux/generic/pending-6.18/720-05-net-phy-realtek-detect-early-version-of-RTL8221B.patch</affectedPath><affectedPath>target/linux/generic/pending-6.18/720-01-net-phy-realtek-use-genphy_soft_reset-for-2.5G-PHYs.patch</affectedPath><affectedPath>target/linux/generic/pending-6.18/742-net-phy-realtek-add-5G-and-10G-PHY-support.patch</affectedPath><commitId>393bd191d4b472627d3f529556cd4af352b09479</commitId><timestamp>1790235210000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>generic: 6.18: backport RTL8261CE_CG PHY support

Backport support for the Realtek RTL8261CE_CG (PHY ID 0x001cc899),
merged for v7.4. It shares the sub-PHY-ID and the firmware with the
RTL8261C_CG.

ca44c21fc117 ("net: phy: realtek: add support for RTL8261CE_CG")

Parts reporting this PHY ID fall through to the generic Clause 45
driver. Both 10G ports of the Gemtek W1700K carry one and never come up.

The patch applies before the out-of-tree
742-net-phy-realtek-add-5G-and-10G-PHY-support.patch, which is where the
RTL_8261N/RTL_8264/RTL_8264B context around the new define comes from, so
742 gains the RTL_8261CE_CG define as context.

Refresh various out-of-tree patches in generic and realtek target.

Assisted-by: Claude:claude-opus-5
Signed-off-by: Simon Polack &lt;spolack+git@mailbox.org&gt;
Link: https://github.com/openwrt/openwrt/pull/25092
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-24 09:33:30 +0200</date><id>393bd191d4b472627d3f529556cd4af352b09479</id><msg>generic: 6.18: backport RTL8261CE_CG PHY support</msg><path><editType>edit</editType><file>target/linux/generic/pending-6.18/720-01-net-phy-realtek-use-genphy_soft_reset-for-2.5G-PHYs.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.18/720-05-net-phy-realtek-detect-early-version-of-RTL8221B.patch</file></path><path><editType>add</editType><file>target/linux/generic/backport-6.18/800-06-v7.4-net-phy-realtek-add-support-for-RTL8261CE_CG.patch</file></path><path><editType>edit</editType><file>target/linux/realtek/patches-6.18/024-04-v7.1-net-phy-realtek-add-RTL8224-polarity-support.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.18/743-net-phy-realtek-reset-RTL8261N-USXGMII-SerDes-on-lin.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.18/720-08-net-phy-realtek-rate-adapter-in-C22-mode.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.18/720-04-net-phy-realtek-setup-aldps.patch</file></path><path><editType>edit</editType><file>target/linux/realtek/patches-6.18/743-net-realtek-serdes-configuration.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.18/720-07-net-phy-realtek-disable-MDIO-broadcast.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.18/742-net-phy-realtek-add-5G-and-10G-PHY-support.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.18/720-06-net-phy-realtek-mark-existing-MMDs-as-present.patch</file></path><path><editType>edit</editType><file>target/linux/realtek/patches-6.18/030-v7.2-net-phy-realtek-support-MDI-swapping-for-RTL8226-CG.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.18/720-03-net-phy-realtek-make-sure-paged-read-is-protected-by.patch</file></path><path><editType>edit</editType><file>target/linux/realtek/patches-6.18/024-02-v7.1-net-phy-realtek-add-RTL8224-pair-order-support.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/patches-6.18/024-02-v7.1-net-phy-realtek-add-RTL8224-pair-order-support.patch</affectedPath><affectedPath>target/linux/generic/pending-6.18/743-net-phy-realtek-reset-RTL8261N-USXGMII-SerDes-on-lin.patch</affectedPath><affectedPath>target/linux/realtek/patches-6.18/743-net-realtek-serdes-configuration.patch</affectedPath><affectedPath>target/linux/realtek/patches-6.18/024-04-v7.1-net-phy-realtek-add-RTL8224-polarity-support.patch</affectedPath><affectedPath>target/linux/realtek/patches-6.18/030-v7.2-net-phy-realtek-support-MDI-swapping-for-RTL8226-CG.patch</affectedPath><affectedPath>target/linux/generic/pending-6.18/721-01-net-phy-realtek-apply-SerDes-lane-polarity-on-RTL8261.patch</affectedPath><affectedPath>target/linux/generic/pending-6.18/742-net-phy-realtek-add-5G-and-10G-PHY-support.patch</affectedPath><commitId>fce07ce378fc5fde27fe0f177f8b769f2d7c5137</commitId><timestamp>1790235210000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>generic: net: phy: realtek: apply SerDes lane polarity on RTL8261C/D

The Gemtek W1700K routes the USXGMII lanes between the AN7581 and its
RTL8261CE inverted and describes that in the device tree, but nothing in
the RTL8261C/D driver reads tx-polarity/rx-polarity and the Airoha PCS
has no polarity handling of its own. The copper side negotiates normally
while the SerDes never trains and the netdev stays NO-CARRIER.

Add a read and a read-modify-write helper for the VEND1 SerDes command
window and program the lane polarity from rtl8261x_config_init().

Submitted upstream as part of a series documenting the RTL8261C/D device
tree bindings and adding SerDes lane polarity and LED support.

Apply it ahead of the out-of-tree
742-net-phy-realtek-add-5G-and-10G-PHY-support.patch so it can be carried
exactly as submitted. 742 drops its own select PHY_COMMON_PROPS and its
phy-common-props.h include, as both come from here now. Once accepted
upstream this patch only moves to backports, so they stay dropped.

Refresh out-of-tree patches in realtek target.

Assisted-by: Claude:claude-opus-5
Signed-off-by: Simon Polack &lt;spolack+git@mailbox.org&gt;
Link: https://github.com/openwrt/openwrt/pull/25092
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-24 09:33:30 +0200</date><id>fce07ce378fc5fde27fe0f177f8b769f2d7c5137</id><msg>generic: net: phy: realtek: apply SerDes lane polarity on RTL8261C/D</msg><path><editType>add</editType><file>target/linux/generic/pending-6.18/721-01-net-phy-realtek-apply-SerDes-lane-polarity-on-RTL8261.patch</file></path><path><editType>edit</editType><file>target/linux/realtek/patches-6.18/743-net-realtek-serdes-configuration.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.18/742-net-phy-realtek-add-5G-and-10G-PHY-support.patch</file></path><path><editType>edit</editType><file>target/linux/realtek/patches-6.18/030-v7.2-net-phy-realtek-support-MDI-swapping-for-RTL8226-CG.patch</file></path><path><editType>edit</editType><file>target/linux/realtek/patches-6.18/024-04-v7.1-net-phy-realtek-add-RTL8224-polarity-support.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.18/743-net-phy-realtek-reset-RTL8261N-USXGMII-SerDes-on-lin.patch</file></path><path><editType>edit</editType><file>target/linux/realtek/patches-6.18/024-02-v7.1-net-phy-realtek-add-RTL8224-pair-order-support.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/patches-6.18/024-02-v7.1-net-phy-realtek-add-RTL8224-pair-order-support.patch</affectedPath><affectedPath>target/linux/generic/pending-6.18/721-02-net-phy-realtek-add-LED-support-for-RTL8261C-D.patch</affectedPath><affectedPath>target/linux/generic/pending-6.18/743-net-phy-realtek-reset-RTL8261N-USXGMII-SerDes-on-lin.patch</affectedPath><affectedPath>target/linux/realtek/patches-6.18/743-net-realtek-serdes-configuration.patch</affectedPath><affectedPath>target/linux/realtek/patches-6.18/024-04-v7.1-net-phy-realtek-add-RTL8224-polarity-support.patch</affectedPath><affectedPath>target/linux/realtek/patches-6.18/030-v7.2-net-phy-realtek-support-MDI-swapping-for-RTL8226-CG.patch</affectedPath><affectedPath>target/linux/generic/pending-6.18/742-net-phy-realtek-add-5G-and-10G-PHY-support.patch</affectedPath><commitId>714786c3d3f995d53639514279571a28e64b63f8</commitId><timestamp>1790235210000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>generic: net: phy: realtek: add LED support for RTL8261C/D

The RTL8261C/D drive their LEDs through the same register block as the
RTL8221B, with four LEDs instead of three and two more speed bits. Wire
the callbacks to the RTL8261C_CG and RTL8261CE_CG entries so the 10G
ports of the Gemtek W1700K can be driven from the netdev trigger instead
of coming up dark.

Submitted upstream in the same series as the SerDes lane polarity patch.

Apply it ahead of the out-of-tree
742-net-phy-realtek-add-5G-and-10G-PHY-support.patch as well, so it too
can be carried exactly as submitted. 742's realtek_drvs[] hunk is rebased
on top of it, which only moves its leading context.

Refresh out-of-tree patches in realtek target.

Assisted-by: Claude:claude-opus-5
Signed-off-by: Simon Polack &lt;spolack+git@mailbox.org&gt;
Link: https://github.com/openwrt/openwrt/pull/25092
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-24 09:33:30 +0200</date><id>714786c3d3f995d53639514279571a28e64b63f8</id><msg>generic: net: phy: realtek: add LED support for RTL8261C/D</msg><path><editType>edit</editType><file>target/linux/realtek/patches-6.18/030-v7.2-net-phy-realtek-support-MDI-swapping-for-RTL8226-CG.patch</file></path><path><editType>edit</editType><file>target/linux/realtek/patches-6.18/024-04-v7.1-net-phy-realtek-add-RTL8224-polarity-support.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.18/742-net-phy-realtek-add-5G-and-10G-PHY-support.patch</file></path><path><editType>edit</editType><file>target/linux/realtek/patches-6.18/024-02-v7.1-net-phy-realtek-add-RTL8224-pair-order-support.patch</file></path><path><editType>edit</editType><file>target/linux/realtek/patches-6.18/743-net-realtek-serdes-configuration.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.18/743-net-phy-realtek-reset-RTL8261N-USXGMII-SerDes-on-lin.patch</file></path><path><editType>add</editType><file>target/linux/generic/pending-6.18/721-02-net-phy-realtek-add-LED-support-for-RTL8261C-D.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/firmware/linux-firmware/realtek.mk</affectedPath><affectedPath>package/firmware/linux-firmware/Makefile</affectedPath><commitId>e14c7032256e98d92608378a0e8978fb8cd1ecc7</commitId><timestamp>1790235211000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>linux-firmware: add rtl8261c-firmware package

The realtek PHY driver requests rtl_nic/rtl8261c.bin for the RTL8261C.
The blob has been in linux-firmware since 2026-05-28 and is present in
the 20260910 tarball already used here, but it is not matched by any of
the r8169-firmware globs, so nothing installs it today.

The RTL8261D handled by the same phy_driver entry needs no firmware, so
this stays a standalone package rather than a kmod-phy-realtek
dependency, which would pull the blob onto every board with any Realtek
PHY.

Assisted-by: Claude:claude-opus-5
Signed-off-by: Simon Polack &lt;spolack+git@mailbox.org&gt;
Link: https://github.com/openwrt/openwrt/pull/25092
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-24 09:33:31 +0200</date><id>e14c7032256e98d92608378a0e8978fb8cd1ecc7</id><msg>linux-firmware: add rtl8261c-firmware package</msg><path><editType>edit</editType><file>package/firmware/linux-firmware/realtek.mk</file></path><path><editType>edit</editType><file>package/firmware/linux-firmware/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/airoha/image/an7581.mk</affectedPath><commitId>5d0c4349adcb2204785fd3117999d97238d584e7</commitId><timestamp>1790235211000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>airoha: an7581: add rtl8261c-firmware to the Gemtek W1700K

Hardware revisions of this board ship either an RTL8261N, handled by the
out-of-tree RTL826x driver, or an RTL8261CE, handled by the mainline
driver. The two need different firmware and the revision is not known at
image build time, so ship both.

Assisted-by: Claude:claude-opus-5
Signed-off-by: Simon Polack &lt;spolack+git@mailbox.org&gt;
Link: https://github.com/openwrt/openwrt/pull/25092
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-24 09:33:31 +0200</date><id>5d0c4349adcb2204785fd3117999d97238d584e7</id><msg>airoha: an7581: add rtl8261c-firmware to the Gemtek W1700K</msg><path><editType>edit</editType><file>target/linux/airoha/image/an7581.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/airoha/an7581/base-files/etc/board.d/01_leds</affectedPath><affectedPath>target/linux/airoha/dts/an7581-w1700k-ubi.dts</affectedPath><commitId>18304dd7474dcc2df040f1426c4e6d3f0dedb9b5</commitId><timestamp>1790235212000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>airoha: an7581: add PHY LEDs for the Gemtek W1700K

Both 10G ports have a yellow and a green LED driven by the RTL8261CE
rather than by GPIO. Index 2 is yellow, index 3 green. The
index-to-colour mapping was determined empirically by inverting the
polarity bits in VEND2 0xd044 one at a time.

Configure the triggers to match the 1G ports on this board, where green
means gigabit: yellow for 10/100, green from 1000 up, and both together
for 10000. Without this the LEDs come up with no trigger and stay dark,
losing the firmware defaults they had before.

The indices were only verified on an RTL8261CE. Board revisions carrying an
RTL8261N are unaffected for now since that driver has no LED callbacks, but
the mapping should be rechecked there before relying on it.

Assisted-by: Claude:claude-opus-5
Signed-off-by: Simon Polack &lt;spolack+git@mailbox.org&gt;
Link: https://github.com/openwrt/openwrt/pull/25092
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-24 09:33:32 +0200</date><id>18304dd7474dcc2df040f1426c4e6d3f0dedb9b5</id><msg>airoha: an7581: add PHY LEDs for the Gemtek W1700K</msg><path><editType>edit</editType><file>target/linux/airoha/an7581/base-files/etc/board.d/01_leds</file></path><path><editType>edit</editType><file>target/linux/airoha/dts/an7581-w1700k-ubi.dts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>scripts/belkin-header.py</affectedPath><commitId>98bc30d154f67557598a2114463e9b97c915463d</commitId><timestamp>1790249809000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/mail</absoluteUrl><fullName>mail</fullName></author><authorEmail>mail@aparcar.org</authorEmail><comment>realtek: take the Belkin header time from SOURCE_DATE_EPOCH

The factory images of the Linksys LGS3xxC switches differ between
builds in the Belkin header:

  -00000000: 0780 0001 7917 f807 6ab3 0fe3 0058 2000  ....y...j....X .
  +00000000: 0780 0001 2a5a 3f79 6ab3 d0c7 0058 2000  ....*Z?yj....X .

belkin-header.py stores time.time() as the image time, which also
changes the header checksum. Use SOURCE_DATE_EPOCH when it is set, like
linksys-image.sh does for the tarball inside.

Link: https://github.com/openwrt/openwrt/pull/25355
Signed-off-by: Paul Spooren &lt;mail@aparcar.org&gt;
</comment><date>2026-09-24 13:36:49 +0200</date><id>98bc30d154f67557598a2114463e9b97c915463d</id><msg>realtek: take the Belkin header time from SOURCE_DATE_EPOCH</msg><path><editType>edit</editType><file>scripts/belkin-header.py</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/generic/hack-6.18/780-usb-net-MeigLink_modem_support.patch</affectedPath><affectedPath>target/linux/generic/backport-6.18/787-v7.3-net-usb-qmi_wwan-add-Quectel-EG120K-EA.patch</affectedPath><commitId>23bebd5c32f994ca44a23aff65dff878f82fb7ba</commitId><timestamp>1790255078000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>kernel: qmi_wwan: add support for Quectel EG120K-EA

The Quectel EG120K-EA (LTE Cat.12) reports USB ID 2c7c:030b and exposes
its QMI/RMNET function on a vendor-specific ff/ff/ff interface. The same
product ID is already known to the option driver as EM060K, which claims
the serial interfaces, but without a qmi_wwan entry the data interface is
left unbound and no cdc-wdm node appears.

Add the device using QMI_MATCH_FF_FF_FF so the DTR quirk is applied.

Tested on a GL.iNet GL-X2000, where the modem enumerates at SuperSpeed and
now brings up cdc-wdm0 and wwan0. A data session over MEO (268-06) was
verified end to end.

Accepted upstream via netdev/net, so this is carried as a backport and can
be dropped once the kernel is bumped to 7.3 or later. Inserting it ahead of
the MeigLink hack shifts that patch's offsets, so
780-usb-net-MeigLink_modem_support.patch is refreshed as well.

Link: https://patch.msgid.link/20260921093426.2870266-1-gilbertorconde@gmail.com

Signed-off-by: Gilberto Conde &lt;gilbertorconde@gmail.com&gt;
</comment><date>2026-09-24 15:04:38 +0200</date><id>23bebd5c32f994ca44a23aff65dff878f82fb7ba</id><msg>kernel: qmi_wwan: add support for Quectel EG120K-EA</msg><path><editType>add</editType><file>target/linux/generic/backport-6.18/787-v7.3-net-usb-qmi_wwan-add-Quectel-EG120K-EA.patch</file></path><path><editType>edit</editType><file>target/linux/generic/hack-6.18/780-usb-net-MeigLink_modem_support.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/airoha/patches-6.18/402-06-thermal-drivers-airoha-serialise-access-to-the-shared-ADC.patch</affectedPath><commitId>53e165762c16ad6891efe20f36ba3a3e7f2e0fef</commitId><timestamp>1790255135000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>airoha: thermal: serialise access to the shared ADC

Two thermal zones reading the shared ADC at once interleave and convert
another sensor's diodes with the wrong constants. On AN7583 the zone
carrying the critical trip crossed 120 C on a chip at 55 C, shutting the
board down.

Serialise the sequence, read the mux selection back instead of caching
it, check it again after sampling and refuse to divide by a zero gain.

Signed-off-by: Vitaliy Sochnev &lt;sochnev.v.74@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25147
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-24 15:05:35 +0200</date><id>53e165762c16ad6891efe20f36ba3a3e7f2e0fef</id><msg>airoha: thermal: serialise access to the shared ADC</msg><path><editType>add</editType><file>target/linux/airoha/patches-6.18/402-06-thermal-drivers-airoha-serialise-access-to-the-shared-ADC.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/airoha/dts/an7583.dtsi</affectedPath><affectedPath>target/linux/airoha/patches-6.18/402-07-thermal-drivers-airoha-read-all-three-AN7583-sensors.patch</affectedPath><commitId>0a7d2ceb9b65df14fe0f70f2d26c939a32416195</commitId><timestamp>1790255135000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>airoha: an7583: expose all three temperature sensors

The driver carried the constants for all three sensors but registered
one zone and read only the bandgap one. Register a zone per sensor and
add two zones to the device tree.

The bandgap sensor stays zone 0 with its trips and cooling map.
#thermal-sensor-cells goes from 0 to 1.

Signed-off-by: Vitaliy Sochnev &lt;sochnev.v.74@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25147
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-24 15:05:35 +0200</date><id>0a7d2ceb9b65df14fe0f70f2d26c939a32416195</id><msg>airoha: an7583: expose all three temperature sensors</msg><path><editType>edit</editType><file>target/linux/airoha/dts/an7583.dtsi</file></path><path><editType>add</editType><file>target/linux/airoha/patches-6.18/402-07-thermal-drivers-airoha-read-all-three-AN7583-sensors.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/qualcommbe/image/ipq95xx.mk</affectedPath><commitId>2c0a72ffe9c8ccd62e6b2214e5101605f89caabf</commitId><timestamp>1790255278000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>qualcommbe: ipq95xx: SBE1V1K: fix boot failure via kernel loadaddr

The Charter Spectrum SBE1V1K fails to boot with the default kernel
load address. The device gets stuck early in the boot process due to
the stock bootloader encountering memory overlap or alignment issues
with the default `0x41000000` address.

Changing `KERNEL_LOADADDR` to `0x42200000` resolves the boot failure
and ensures stable operation.

Why `0x42200000` instead of `0x42000000`?
While testing showed that `0x42000000` also boots successfully,
`0x42200000` was explicitly chosen for two primary safety reasons:

1. Avoid U-Boot `loadaddr` Overlap: On many QCA/IPQ platforms,
   `0x42000000` is commonly used as the default `loadaddr` to fetch
   the FIT image into memory. Setting the extraction destination
   (`KERNEL_LOADADDR`) to the exact same base address risks in-place
   decompression overlaps.
2. Reserved Memory Buffer: The memory range below `0x42000000`
   is heavily utilized by TZ, SMEM, and vendor-specific reserved
   memory in newer Askey firmwares. Adding a 2MB aligned offset
   (`0x200000`) provides a safer buffer against shifting vendor
   memory boundaries in future OEM bootloader updates, while still
   strictly satisfying the ARM64 2MB alignment requirement.

This fix and the `0x42200000` address have been successfully tested
on actual SBE1V1K hardware by community member motolav.

Link: https://forum.openwrt.org/t/spectrum-sbe1v1k-ipq9574-openwrt-support/245244/262
Tested-by: motolav &lt;https://forum.openwrt.org/u/motolav&gt;

Signed-off-by: Jackie Han &lt;jackie.han@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25344
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-24 15:07:58 +0200</date><id>2c0a72ffe9c8ccd62e6b2214e5101605f89caabf</id><msg>qualcommbe: ipq95xx: SBE1V1K: fix boot failure via kernel loadaddr</msg><path><editType>edit</editType><file>target/linux/qualcommbe/image/ipq95xx.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/generic/backport-6.18/950-v7.3-cgroup-fix-spurious-SIGKILL-of-CLONE_INTO_CGROUP-children.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0504-cgroup-Add-cgroup_enable-option.patch</affectedPath><commitId>8b7604f90a872366e956333001ac16960832b80b</commitId><timestamp>1790257260000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/daniel</absoluteUrl><fullName>daniel</fullName></author><authorEmail>daniel@makrotopia.org</authorEmail><comment>generic: backport cgroup CLONE_INTO_CGROUP SIGKILL fix

Since b69bb476dee9 ("cgroup: fix race between fork and cgroup.kill") the
fork path snapshots kill_seq in cgroup_css_set_fork() before the
CLONE_INTO_CGROUP target has been resolved, so it always records the
forking task's own cgroup while cgroup_post_fork() reads the target's
and compares the two. Once cgroup.kill has been written to a cgroup,
every child later cloned out of it into another cgroup is SIGKILLed
before it runs a single instruction, for as long as that cgroup exists.

This breaks re-creating an OCI container under procd, whose service
supervisor kills the instance cgroup on exit and leaves it in place: the
container init ujail clones with CLONE_INTO_CGROUP is killed at birth and
the create fails with no diagnostic. The fix is in mainline from v7.3-rc2
and carries Cc: stable, so it is expected to reach 6.18.y with a future
stable release, at which point this patch can be dropped.

Signed-off-by: Daniel Golle &lt;daniel@makrotopia.org&gt;
</comment><date>2026-09-24 14:41:00 +0100</date><id>8b7604f90a872366e956333001ac16960832b80b</id><msg>generic: backport cgroup CLONE_INTO_CGROUP SIGKILL fix</msg><path><editType>edit</editType><file>target/linux/bcm27xx/patches-6.18/0504-cgroup-Add-cgroup_enable-option.patch</file></path><path><editType>add</editType><file>target/linux/generic/backport-6.18/950-v7.3-cgroup-fix-spurious-SIGKILL-of-CLONE_INTO_CGROUP-children.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/boot/apex/Makefile</affectedPath><commitId>e2aa1d759647837a9e82e22ed5db9a3b79b27cc2</commitId><timestamp>1790263388000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/mail</absoluteUrl><fullName>mail</fullName></author><authorEmail>mail@aparcar.org</authorEmail><comment>apex: take the build date from SOURCE_DATE_EPOCH

The APEX boot loader embeds the time of the build in its version
banner, which makes the Iomega NAS100D factory image differ between
builds:

  -compiled for OpenWrt NAS100D/BE on 2026.Sep.23-04:17:21
  +compiled for OpenWrt NAS100D/BE on 2026.Sep.23-11:06:03

APEX sets BUILDDATE with $(shell date) in its top level Makefile. Pass
BUILDDATE on the command line, formatted from SOURCE_DATE_EPOCH in UTC
and the C locale, which overrides it for all sub-makes.

Link: https://github.com/openwrt/openwrt/pull/25354
Signed-off-by: Paul Spooren &lt;mail@aparcar.org&gt;
</comment><date>2026-09-24 17:23:08 +0200</date><id>e2aa1d759647837a9e82e22ed5db9a3b79b27cc2</id><msg>apex: take the build date from SOURCE_DATE_EPOCH</msg><path><editType>edit</editType><file>package/boot/apex/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/ath79/dts/qca9558_jjplus_jwap230.dts</affectedPath><affectedPath>target/linux/ath79/dts/qca9558_tplink_tl-wr1043nd.dtsi</affectedPath><affectedPath>target/linux/ath79/dts/ar9344_tplink_tl-wdr4300.dtsi</affectedPath><affectedPath>target/linux/ath79/dts/ar9344_mikrotik_routerboard-2011uias-2hnd.dts</affectedPath><affectedPath>target/linux/ath79/dts/ar7242_ubnt_edgeswitch-5xp.dts</affectedPath><commitId>50d7282818513e4116a042065d678fdece41a474</commitId><timestamp>1790269024000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>ath79: fix switch addresses for atheros switches

The driver doesn't really care about the address in dts, but might as
well fix it anyway.

0 is just wrong.
1f is the address for the builtin FE switch, not the external gigabit
switch.

10 is the driver default.

Signed-off-by: Rosen Penev &lt;rosenp@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25370
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-24 18:57:04 +0200</date><id>50d7282818513e4116a042065d678fdece41a474</id><msg>ath79: fix switch addresses for atheros switches</msg><path><editType>edit</editType><file>target/linux/ath79/dts/ar9344_tplink_tl-wdr4300.dtsi</file></path><path><editType>edit</editType><file>target/linux/ath79/dts/ar7242_ubnt_edgeswitch-5xp.dts</file></path><path><editType>edit</editType><file>target/linux/ath79/dts/qca9558_jjplus_jwap230.dts</file></path><path><editType>edit</editType><file>target/linux/ath79/dts/qca9558_tplink_tl-wr1043nd.dtsi</file></path><path><editType>edit</editType><file>target/linux/ath79/dts/ar9344_mikrotik_routerboard-2011uias-2hnd.dts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/ramips/image/mt7621.mk</affectedPath><commitId>eb2bd0cc0875b05fc0bc18129aa12d8bb277f605</commitId><timestamp>1790269126000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>ramips: mt7621: add MMC driver for SD compatible MikroTik devices

These devices have SD card slots. Add MMC driver package by default
so that users can use it out of the box.

Closes: https://github.com/openwrt/openwrt/issues/25099
Signed-off-by: Shiji Yang &lt;yangshiji66@outlook.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25351
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-24 18:58:46 +0200</date><id>eb2bd0cc0875b05fc0bc18129aa12d8bb277f605</id><msg>ramips: mt7621: add MMC driver for SD compatible MikroTik devices</msg><path><editType>edit</editType><file>target/linux/ramips/image/mt7621.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/mediatek/filogic/base-files/etc/board.d/01_leds</affectedPath><commitId>bafaf2665a7f57ce7ea1fb3e0532f382635ced23</commitId><timestamp>1790269434000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>mediatek: filogic: light the Internet LED on Cudy WR3000S v1

The WR3000S has a GPIO LED behind its front-panel "Internet" lamp
(white:wan-online, &amp;pio 11), but no board.d entry, so no trigger is ever
set and the lamp stays dark. Give it the same netdev trigger the WR3000H
and WR3000P already use for their white:wan-online LED: follow the link
state of the wan port. As on those boards, "link" means the wan port has
carrier, not that connectivity works.

The panel's WAN and LAN1-4 lamps are not GPIO LEDs and are not registered
as Linux LEDs at all; they light on link in hardware, so board.d cannot
address them and they are untouched here. The -ubootmod variant includes
the same mt7981b-cudy-wr3000s-v1.dtsi, and so the identical LED, and is
listed alongside.

Tested on a WR3000S v1 (OEM layout), on an image built from main at
6727587d24 plus this commit: after a config-wipe sysupgrade the board.d
entry is applied automatically (board.json -&gt; system.led_internet), the
lamp lights while the WAN port has link, and it goes dark when it loses
link. Only the OEM-layout variant was flashed.

Signed-off-by: Ivan Rainbolt &lt;ivan@github.ivanthegeek.com&gt;
Co-Authored-By: Claude Opus 5 &lt;noreply@anthropic.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25335
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-24 19:03:54 +0200</date><id>bafaf2665a7f57ce7ea1fb3e0532f382635ced23</id><msg>mediatek: filogic: light the Internet LED on Cudy WR3000S v1</msg><path><editType>edit</editType><file>target/linux/mediatek/filogic/base-files/etc/board.d/01_leds</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/mvebu/patches-6.18/303-mvebu-armada-38x-errata.patch</affectedPath><affectedPath>target/linux/mvebu/config-6.18</affectedPath><commitId>bebe3e4588aa63bd1e6a62229fef87f06e84f069</commitId><timestamp>1790269545000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>mvebu: fix Armada 38x errata

Armada 38x uses Cortex-A9 r4p1, but the current kernel config selects
erratum 720789, which was fixed in r2p0, and omits some errata that
still affect r4p1. Fix the config.

Signed-off-by: Qingfang Deng &lt;dqfext@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25297
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-24 19:05:45 +0200</date><id>bebe3e4588aa63bd1e6a62229fef87f06e84f069</id><msg>mvebu: fix Armada 38x errata</msg><path><editType>add</editType><file>target/linux/mvebu/patches-6.18/303-mvebu-armada-38x-errata.patch</file></path><path><editType>edit</editType><file>target/linux/mvebu/config-6.18</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/kirkwood/config-6.18</affectedPath><commitId>8f4161ef6ee1955e6fbad1382f2c7077bf3d1ca0</commitId><timestamp>1790269847000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>kirkwood: enable cpufreq and cpuidle

This appears to reduce the CPU temp by at least a few degrees C on
Linksys EA4500, which is notorious for its thermal challenges.

Tested only on EA4500 by running without issues for a few weeks under a
light workload.

Signed-off-by: Will Mortensen &lt;willmo@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25276
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-24 19:10:47 +0200</date><id>8f4161ef6ee1955e6fbad1382f2c7077bf3d1ca0</id><msg>kirkwood: enable cpufreq and cpuidle</msg><path><editType>edit</editType><file>target/linux/kirkwood/config-6.18</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/network/services/hostapd/patches/780-Implement-APuP-Access-Point-Micro-Peering.patch</affectedPath><commitId>d6c5598e2ff78e2ae18656ace00a7c84f6ee74f6</commitId><timestamp>1790277650000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/hauke</absoluteUrl><fullName>hauke</fullName></author><authorEmail>hauke@hauke-m.de</authorEmail><comment>hostapd: fix NULL pointer dereference in APuP beacon handling

apup_process_beacon() dereferenced the return value of ap_sta_add()
without checking it. ap_sta_add() returns NULL when the station table is
full, when the allocation fails or when accounting_sta_get_id() fails,
so the following read of sta_ret-&gt;aid dereferences NULL.

The station table filling up is remotely triggerable. Beacons reach
handle_beacon() on every softmac driver, because hostapd subscribes to
them per wiphy with NL80211_CMD_REGISTER_BEACONS when it starts the AP.
An adjacent station can therefore beacon the target's SSID from
successive spoofed BSSIDs, each of which is added as an APuP peer, until
max_num_sta is reached and hostapd crashes.

CONFIG_APUP=y is set unconditionally in DRIVER_MAKEOPTS, so the code is
compiled into every wpad variant, but the call is gated on
hapd-&gt;conf-&gt;apup at runtime and wifi-scripts defaults apup to 0. Only
configurations that opt into APuP are affected.

Reported-by: JuliusBairaktaris
Fixes: e80520197c9c ("hostapd: Add support for APuP")
Assisted-by: Claude:claude-opus-5
Link: https://github.com/openwrt/openwrt/pull/25242
Signed-off-by: Hauke Mehrtens &lt;hauke@hauke-m.de&gt;
</comment><date>2026-09-24 21:20:50 +0200</date><id>d6c5598e2ff78e2ae18656ace00a7c84f6ee74f6</id><msg>hostapd: fix NULL pointer dereference in APuP beacon handling</msg><path><editType>edit</editType><file>package/network/services/hostapd/patches/780-Implement-APuP-Access-Point-Micro-Peering.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/network/services/hostapd/patches/780-Implement-APuP-Access-Point-Micro-Peering.patch</affectedPath><commitId>73e10e74328d58930577f100b9dd01bc8ea6edd5</commitId><timestamp>1790277658000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/hauke</absoluteUrl><fullName>hauke</fullName></author><authorEmail>hauke@hauke-m.de</authorEmail><comment>hostapd: free the APuP peer when no AID is available

apup_process_beacon() adds the peer with ap_sta_add() and only asks for
an AID with hostapd_get_aid() further down. When that fails the function
returns without undoing anything, leaving the station in hapd-&gt;sta_list
with WLAN_STA_AUTH set but with no AID, no WLAN_STA_ASSOC and no WDS
interface. The driver entry added by the preceding hostapd_sta_add() and
the hapd-&gt;num_sta reference are leaked as well.

The leftover entry is then found by the ap_get_sta() check at the top of
the function, so every later beacon from that BSSID returns early and
the peer can never be set up again until hostapd is restarted.

Release the half-initialised station with ap_free_sta(), which removes
the driver entry, cancels the inactivity timer registered by
ap_sta_add(), unlinks it from the list and drops the counters.

Fixes: e80520197c9c ("hostapd: Add support for APuP")
Assisted-by: Claude:claude-opus-5
Link: https://github.com/openwrt/openwrt/pull/25242
Signed-off-by: Hauke Mehrtens &lt;hauke@hauke-m.de&gt;
</comment><date>2026-09-24 21:20:58 +0200</date><id>73e10e74328d58930577f100b9dd01bc8ea6edd5</id><msg>hostapd: free the APuP peer when no AID is available</msg><path><editType>edit</editType><file>package/network/services/hostapd/patches/780-Implement-APuP-Access-Point-Micro-Peering.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/network/services/hostapd/patches/600-ubus_support.patch</affectedPath><affectedPath>package/network/services/hostapd/Makefile</affectedPath><commitId>18a969c475807ed384b20e02c6adf80e48fc09ca</commitId><timestamp>1790277658000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/hauke</absoluteUrl><fullName>hauke</fullName></author><authorEmail>hauke@hauke-m.de</authorEmail><comment>hostapd: restore Link Measurement Report handling

The ubus notification for link measurements was added by replacing the
call to hostapd_handle_link_mesr_report() instead of adding to it, so
upstream's handler lost its only caller and is compiled out as dead
code, which the build shows as:

  src/ap/rrm.c:354:13: warning: 'hostapd_handle_link_mesr_report'
  defined but not used [-Wunused-function]

As a result nothing clears hapd-&gt;link_mesr_req_active or cancels
hostapd_link_mesr_rep_timeout_handler() when a report arrives, so a
REQ_LINK_MEASUREMENT issued over the control interface always ends in a
timeout even though the report was received, and the LINK-MSR-RESP-RX
event carrying the report is never emitted.

Call both handlers, which is how the ubus hook for beacon reports a few
lines above is wired up too.

Fixes: f6445cfa1acb ("hostapd: add ubus link-measurements notifications")
Assisted-by: Claude:claude-opus-5
Link: https://github.com/openwrt/openwrt/pull/25242
Signed-off-by: Hauke Mehrtens &lt;hauke@hauke-m.de&gt;
</comment><date>2026-09-24 21:20:58 +0200</date><id>18a969c475807ed384b20e02c6adf80e48fc09ca</id><msg>hostapd: restore Link Measurement Report handling</msg><path><editType>edit</editType><file>package/network/services/hostapd/Makefile</file></path><path><editType>edit</editType><file>package/network/services/hostapd/patches/600-ubus_support.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>scripts/target-metadata.pl</affectedPath><commitId>1b85ec12b37dcc70be71671be5773d2e3e2c3f06</commitId><timestamp>1790285608000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/daniel</absoluteUrl><fullName>daniel</fullName></author><authorEmail>daniel@makrotopia.org</authorEmail><comment>build: indent the generated PWM_SUPPORT select

"\s" is not an escape sequence in a Perl double-quoted string, so the
pwm feature emits its select statement without the leading tab that
every other feature gets. Kconfig accepts the unindented line, but the
generated target/Config.in is inconsistent.

Fixes: f6fbc397066e ("build: define PWM_SUPPORT arch feature flag")
Signed-off-by: Daniel Golle &lt;daniel@makrotopia.org&gt;
</comment><date>2026-09-24 22:33:28 +0100</date><id>1b85ec12b37dcc70be71671be5773d2e3e2c3f06</id><msg>build: indent the generated PWM_SUPPORT select</msg><path><editType>edit</editType><file>scripts/target-metadata.pl</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/lantiq/xway_legacy/target.mk</affectedPath><affectedPath>target/linux/lantiq/xrx200_legacy/target.mk</affectedPath><affectedPath>target/linux/lantiq/xway/target.mk</affectedPath><affectedPath>target/linux/lantiq/ase/target.mk</affectedPath><affectedPath>target/linux/lantiq/xrx200/target.mk</affectedPath><commitId>9489ba0163bb9e0bea004c8b11885b86f3c3cf11</commitId><timestamp>1790285608000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/daniel</absoluteUrl><fullName>daniel</fullName></author><authorEmail>daniel@makrotopia.org</authorEmail><comment>lantiq: drop the unread atm target feature

The atm feature has no entry in target_config_features(), so it selects
no symbol, and nothing else reads the feature list beyond the broken and
source-only filters. It has never gated anything. The kmod-ltq-atm-*
packages are unrelated name matches, pulled in through DEFAULT_PACKAGES.

Signed-off-by: Daniel Golle &lt;daniel@makrotopia.org&gt;
</comment><date>2026-09-24 22:33:28 +0100</date><id>9489ba0163bb9e0bea004c8b11885b86f3c3cf11</id><msg>lantiq: drop the unread atm target feature</msg><path><editType>edit</editType><file>target/linux/lantiq/ase/target.mk</file></path><path><editType>edit</editType><file>target/linux/lantiq/xway_legacy/target.mk</file></path><path><editType>edit</editType><file>target/linux/lantiq/xrx200/target.mk</file></path><path><editType>edit</editType><file>target/linux/lantiq/xrx200_legacy/target.mk</file></path><path><editType>edit</editType><file>target/linux/lantiq/xway/target.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>scripts/target-metadata.pl</affectedPath><affectedPath>config/Config-images.in</affectedPath><affectedPath>target/Config.in</affectedPath><commitId>ad1b1f2d36aacf13e3f983a1bdf4d699ef929ae3</commitId><timestamp>1790285608000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/daniel</absoluteUrl><fullName>daniel</fullName></author><authorEmail>daniel@makrotopia.org</authorEmail><comment>build: gate the VM image formats on their target features

The x86 and armsr targets declare the vdi, vmdk and vhdx features, but
VDI_IMAGES, VMDK_IMAGES and VHDX_IMAGES depend on a hardcoded target
list instead, so the features select nothing and a target opting in has
to edit config/Config-images.in.

Give them USES_VDI, USES_VMDK and USES_VHDX in the same shape as the
other image formats and depend on those. The set of targets offering
each format is unchanged.

Signed-off-by: Daniel Golle &lt;daniel@makrotopia.org&gt;
</comment><date>2026-09-24 22:33:28 +0100</date><id>ad1b1f2d36aacf13e3f983a1bdf4d699ef929ae3</id><msg>build: gate the VM image formats on their target features</msg><path><editType>edit</editType><file>scripts/target-metadata.pl</file></path><path><editType>edit</editType><file>config/Config-images.in</file></path><path><editType>edit</editType><file>target/Config.in</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/bpf.mk</affectedPath><affectedPath>rules.mk</affectedPath><commitId>6c03a267b09b2d8bd7ddd4f6e7e702efe71202f1</commitId><timestamp>1790320427000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/mail</absoluteUrl><fullName>mail</fullName></author><authorEmail>mail@aparcar.org</authorEmail><comment>build: bpf: remap build paths in BTF line info

CompileBPF calls clang with -g but without any prefix map. Stripping debug info
keeps .BTF and .BTF.ext, since libbpf needs them, and their line info carries
the absolute path of each source file. This makes BPF objects like qosify-bpf.o
depend on the build directory and breaks reproducibility:

  -/builder/shared-workdir/build/build_dir/.../qosify-bpf.c
  +/tmp/rebuilderd-openwrt.juCsuQ/src/build_dir/.../qosify-bpf.c

IREMAP_CFLAGS is not enough here: without CONFIG_REPRODUCIBLE_DEBUG_INFO it
only sets -fmacro-prefix-map, which leaves the line info alone, and it is empty
for external toolchains, which have no say over the host clang.  Unlike regular
debug info, BTF ships with the package, so always pass -ffile-prefix-map for
the build and staging directories.

Add an fremap helper next to iremap for that, and let IREMAP_STAGING_DIR and
CompileBPF share the map of the staging directory, so they cannot drift apart.

Link: https://github.com/openwrt/openwrt/pull/25359
Signed-off-by: Paul Spooren &lt;mail@aparcar.org&gt;
</comment><date>2026-09-25 09:13:47 +0200</date><id>6c03a267b09b2d8bd7ddd4f6e7e702efe71202f1</id><msg>build: bpf: remap build paths in BTF line info</msg><path><editType>edit</editType><file>include/bpf.mk</file></path><path><editType>edit</editType><file>rules.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/base-files/etc/board.d/02_network</affectedPath><affectedPath>target/linux/realtek/image/rtl838x.mk</affectedPath><affectedPath>target/linux/realtek/dts/rtl8380_netgear_gs110tpp-v1.dts</affectedPath><commitId>ded52f63db1bcf72880159d20d511f4b1a6629cb</commitId><timestamp>1790322181000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>realtek: gs110tpp: switch to PSE driver

Use the realtek-pse-mcu kernel driver instead of realtek-poe. The MCU
is a Nuvoton M05xx using the gen1 protocol over UART at 19200 baud.

realtek-poe turns off the MCU's port mapping at startup, which reversed
the PoE port numbering and the front-panel PoE LEDs. The kernel driver
leaves the mapping alone, so both now match the front panel. The MCU
keeps this state across a warm reboot, so a unit sysupgraded from a
realtek-poe image stays reversed until its first power cycle.

Tested on a GS110TPP v1: the driver probes the MCU and its BCM59121,
and a PoE device on lan1 is powered.

Signed-off-by: Kel Modderman &lt;kelvmod@gmail.com&gt;
Co-Authored-By: Claude Opus 5.5 (1M context) &lt;noreply@anthropic.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25298
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-25 09:43:01 +0200</date><id>ded52f63db1bcf72880159d20d511f4b1a6629cb</id><msg>realtek: gs110tpp: switch to PSE driver</msg><path><editType>edit</editType><file>target/linux/realtek/base-files/etc/board.d/02_network</file></path><path><editType>edit</editType><file>target/linux/realtek/image/rtl838x.mk</file></path><path><editType>edit</editType><file>target/linux/realtek/dts/rtl8380_netgear_gs110tpp-v1.dts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/bcm53xx/config-6.18</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.18/370-usb-bcma-add-regulator-support.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.18/310-ARM-BCM5301X-Add-DT-for-Netgear-R7900.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.18/352-v7.2-ARM-dts-BCM5301X-EA9200-fix-nvram-size.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.18/371-ARM-dts-broadcom-model-USB-VBUS-power-with-regulator.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.18/362-ARM-dts-BCM5301X-EA6300-fix-USB3.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.18/352-ARM-dts-BCM5301X-EA9200-fix-nvram-size.patch</affectedPath><commitId>d2595dff03ea1b690815d25d8e680594c8e9e27e</commitId><timestamp>1790322526000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>bcm53xx: use regulators for USB control

Some of these GPIOs are shared between interfaces. Use a regulator to be
able to share them. Enable Kconfig options so that they work.

Backport one patch upstream so the patch applies. Rename another to
clarify it's in 7.2.

Signed-off-by: Rosen Penev &lt;rosenp@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25296
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-25 09:48:46 +0200</date><id>d2595dff03ea1b690815d25d8e680594c8e9e27e</id><msg>bcm53xx: use regulators for USB control</msg><path><editType>add</editType><file>target/linux/bcm53xx/patches-6.18/371-ARM-dts-broadcom-model-USB-VBUS-power-with-regulator.patch</file></path><path><editType>edit</editType><file>target/linux/bcm53xx/config-6.18</file></path><path><editType>add</editType><file>target/linux/bcm53xx/patches-6.18/370-usb-bcma-add-regulator-support.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.18/352-ARM-dts-BCM5301X-EA9200-fix-nvram-size.patch</file></path><path><editType>add</editType><file>target/linux/bcm53xx/patches-6.18/362-ARM-dts-BCM5301X-EA6300-fix-USB3.patch</file></path><path><editType>edit</editType><file>target/linux/bcm53xx/patches-6.18/310-ARM-BCM5301X-Add-DT-for-Netgear-R7900.patch</file></path><path><editType>add</editType><file>target/linux/bcm53xx/patches-6.18/352-v7.2-ARM-dts-BCM5301X-EA9200-fix-nvram-size.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</affectedPath><commitId>87fc39518a0ccc737de29a80ae70dd14a630ae75</commitId><timestamp>1790322856000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>realtek: pcs: configure forced 1000BASE-X speed after disabling AN

RTL93xx ignores BMCR speed-selection updates while BMCR_ANENABLE is
set. The RTL931x mode setup therefore cannot reliably select 1000 Mbps
for forced 1000BASE-X before generic autonegotiation handling runs.

Move forced 1000BASE-X speed selection into the generic helper and
perform it after disabling autonegotiation. This also removes the
ineffective RTL931x-specific write.

Link: https://github.com/openwrt/openwrt/pull/25378
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-25 09:54:16 +0200</date><id>87fc39518a0ccc737de29a80ae70dd14a630ae75</id><msg>realtek: pcs: configure forced 1000BASE-X speed after disabling AN</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</affectedPath><commitId>d11e939d9f98641382e94d94eb96835c8854ba00</commitId><timestamp>1790322857000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>realtek: pcs: configure BMCR for 100BASE-X

100BASE-X does not use in-band autonegotiation and requires BMCR to
select 100 Mbps. Extend the generic autonegotiation helper to always
disable AN for this mode and then program BMCR_SPEED100.

This ordering is required on RTL93xx, which ignores speed-selection
updates while BMCR_ANENABLE is set.

Link: https://github.com/openwrt/openwrt/pull/25378
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-25 09:54:17 +0200</date><id>d11e939d9f98641382e94d94eb96835c8854ba00</id><msg>realtek: pcs: configure BMCR for 100BASE-X</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</affectedPath><commitId>4c8e2912ec4d39c90aef540e6a3ea90bd9b33c48</commitId><timestamp>1790322857000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>realtek: pcs: prepare generic helpers for 100BASE-X

100BASE-X uses a direct SerDes attachment and the same 1G-class PLL
configuration as 1000BASE-X on the supported hardware.

Teach the common attachment and PLL selectors about the mode. This is
preparation only; no additional SerDes advertises support yet.

Link: https://github.com/openwrt/openwrt/pull/25378
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-25 09:54:17 +0200</date><id>4c8e2912ec4d39c90aef540e6a3ea90bd9b33c48</id><msg>realtek: pcs: prepare generic helpers for 100BASE-X</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</affectedPath><commitId>f019b2b5d59cdec4ae7abe3774f7ef82af788ed7</commitId><timestamp>1790322857000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>realtek: pcs: rtl930x: prepare 100BASE-X support

RTL930x uses the IP-driven mode setup for Base-X links and the 1G
analog configuration for SGMII and 1000BASE-X.

Route 100BASE-X through the same IP-driven and 1G analog setup paths.
Keep the mode unavailable until all RTL93xx support is in place.

Link: https://github.com/openwrt/openwrt/pull/25378
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-25 09:54:17 +0200</date><id>f019b2b5d59cdec4ae7abe3774f7ef82af788ed7</id><msg>realtek: pcs: rtl930x: prepare 100BASE-X support</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</affectedPath><commitId>1a5e8733a01ac6d79c61463337a2d7e688cb77cf</commitId><timestamp>1790322858000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>realtek: pcs: rtl931x: prepare 100BASE-X support

RTL931x handles 100BASE-X through its 1G fiber digital path, but the
FIB1G link detector must remain disabled at 100 Mbps.

Add 100BASE-X to the fiber setup and symbol-error handling paths. Share
the 1000BASE-X setup while selecting the appropriate FIB1G link-enable
value for each mode. Keep the mode unavailable until the shared
RTL93xx support is enabled.

Link: https://github.com/openwrt/openwrt/pull/25378
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-25 09:54:18 +0200</date><id>1a5e8733a01ac6d79c61463337a2d7e688cb77cf</id><msg>realtek: pcs: rtl931x: prepare 100BASE-X support</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</affectedPath><commitId>446ca9fd630d54572f360ea42f852fe0ed66cf24</commitId><timestamp>1790322858000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>realtek: pcs: rtl93xx: enable 100BASE-X support

The generic, RTL930x, and RTL931x setup paths now handle 100BASE-X.
Add the RTL93xx hardware mode value and mapping, select the 1G analog
CMU page, and advertise the mode from RTL93xx SerDes instances.

This makes the prepared support available to PCS consumers.

Link: https://github.com/openwrt/openwrt/pull/25378
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-25 09:54:18 +0200</date><id>446ca9fd630d54572f360ea42f852fe0ed66cf24</id><msg>realtek: pcs: rtl93xx: enable 100BASE-X support</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/dsa.c</affectedPath><commitId>0f0d9c05b895daf8995e15997f7e5f802dd00227</commitId><timestamp>1790322859000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>realtek: dsa: advertise 100BASE-X support

Phylink can only request interface modes advertised by the DSA port.
Expose 100BASE-X when the SoC MAC capabilities include MAC_100 so that
ports backed by a capable PCS can select the newly supported mode.

Keep this independent of MAC_1000FD because the 100 Mbps and 1 Gbps MAC
capabilities are reported separately.

Link: https://github.com/openwrt/openwrt/pull/25378
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-25 09:54:19 +0200</date><id>0f0d9c05b895daf8995e15997f7e5f802dd00227</id><msg>realtek: dsa: advertise 100BASE-X support</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/dsa.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</affectedPath><commitId>a3676bf9ca89187fe192f5924a1c5e59a3f26c85</commitId><timestamp>1790322859000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>realtek: pcs: configure autoneg before post_config

The post_config hooks finalize a powered-up SerDes and may calibrate
its receiver. Configure autonegotiation and the BMCR speed first so
finalization runs with the requested PCS state.

This is required for 100BASE-X on RTL930x. Calibrating with the default
1000 Mbps BMCR setting produced symbol errors until BMCR was switched
to 100 Mbps.

Preserve the changed result from set_autoneg across the post_config
callback so pcs_config keeps its existing return semantics.

Tested runtime mode transitions and cold boot on RTL838x, RTL930x and
RTL931x. Links came up and passed traffic in all tested modes with no
regressions observed.

Assisted-by: ChatGPT (OpenAI GPT-5.6 Sol)
Link: https://github.com/openwrt/openwrt/pull/25378
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-25 09:54:19 +0200</date><id>a3676bf9ca89187fe192f5924a1c5e59a3f26c85</id><msg>realtek: pcs: configure autoneg before post_config</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>tools/mkimage/patches/030-allow-to-use-different-magic.patch</affectedPath><commitId>f9a75af7436428a7316332037e178b43c2c0c439</commitId><timestamp>1790323504000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>tools/mkimage: support custom magic in dumpimage

OpenWrt's custom uImage magic patch makes legacy image verification use
params.magic instead of IH_MAGIC.

mkimage initializes this field, while dumpimage leaves it zeroed. This
causes dumpimage to reject valid legacy uImages using the standard
IH_MAGIC with FDT_ERR_BADMAGIC.

Initialize dumpimage's magic to IH_MAGIC so the normal verification path
works by default. Also add -M handling matching mkimage, allowing
dumpimage to verify and extract uImages built with a custom magic.

Tested with the patched U-Boot 2026.07 host tools. Standard-magic images
list and extract correctly, custom-magic images are accepted with the
matching -M value, and are rejected without it or with an incorrect
magic. Extracted payloads were verified byte-for-byte.

Fixes: #25287
Signed-off-by: Massimo Mazzariol &lt;mazzariol.massimo@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25288
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-25 10:05:04 +0200</date><id>f9a75af7436428a7316332037e178b43c2c0c439</id><msg>tools/mkimage: support custom magic in dumpimage</msg><path><editType>edit</editType><file>tools/mkimage/patches/030-allow-to-use-different-magic.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>tools/mkimage/patches/030-allow-to-use-different-magic.patch</affectedPath><commitId>36efe835fdddaf61ae75e2d442af2abb02d45dd0</commitId><timestamp>1790323504000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>tools/mkimage: validate custom magic range

strtoull() can parse values wider than the 32-bit uImage magic field.
Reject values above UINT32_MAX before assigning the parsed value to
params.magic.

Signed-off-by: Massimo Mazzariol &lt;mazzariol.massimo@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25288
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-25 10:05:04 +0200</date><id>36efe835fdddaf61ae75e2d442af2abb02d45dd0</id><msg>tools/mkimage: validate custom magic range</msg><path><editType>edit</editType><file>tools/mkimage/patches/030-allow-to-use-different-magic.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>tools/mkimage/patches/030-allow-to-use-different-magic.patch</affectedPath><commitId>6f684052de875c61db37682c306cf024ca164d4c</commitId><timestamp>1790323504000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>tools/mkimage: reject empty custom magic

Reject custom magic values when strtoull() does not parse any
digits, in addition to values outside the 32-bit uImage magic range.

Signed-off-by: Massimo Mazzariol &lt;mazzariol.massimo@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25288
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-25 10:05:04 +0200</date><id>6f684052de875c61db37682c306cf024ca164d4c</id><msg>tools/mkimage: reject empty custom magic</msg><path><editType>edit</editType><file>tools/mkimage/patches/030-allow-to-use-different-magic.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/mediatek/dts/thermal-trips-cooling-maps.dtsi</affectedPath><commitId>5feb530ed37598eefb2384a2e22cff37855e5a9f</commitId><timestamp>1790323997000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>mediatek: filogic: add dtsi for shared thermal trip levels &amp; cooling maps

Add a common dtsi with macros for thermal trip levels and cooling maps that can be included in other
device trees.

The trip levels are spaced 1.25C apart with double that (2.5C) for the hysteresis, with 5C
hysteresis for the lowest trip level (65C) because it is preferable for the fan to run for longer at
low speed than to stop and start repeatedly.

In the absence of continuous proportional feedback control, tightly grouping the trip levels and
cooling maps minimises the frequency and amplitude of temperature and fan speed oscillations.

There are 36 trip levels and the cooling maps start from cooling state 1 (0-index) so cooling-levels
must have at least 37 elements. If greater increments between trip levels/cooling-levels are desired
or needed the cooling-levels can be padded with repeated values.

The THERMAL_TRIPS_COMMON and THERMAL_COOLING_MAPS_COMMON macros take one argument as the prefix to
the trip levels node labels. The prefix must be the same within a thermal zone.

Signed-off-by: Ryan Leung &lt;untilscour@protonmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/22936
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-25 10:13:17 +0200</date><id>5feb530ed37598eefb2384a2e22cff37855e5a9f</id><msg>mediatek: filogic: add dtsi for shared thermal trip levels &amp; cooling maps</msg><path><editType>add</editType><file>target/linux/mediatek/dts/thermal-trips-cooling-maps.dtsi</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/mediatek/dts/mt7981b-comfast-cf-wr632ax-common.dtsi</affectedPath><commitId>8060e1d5683a82053bd096ec2788cdcb72c9d151</commitId><timestamp>1790323997000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>mediatek: filogic: comfast cf-wr632ax: adjust fan behavior &amp; monitor Wi-Fi temps

Add thermal zone for the Wi-Fi chip using the same trip levels and cooling maps as the CPU. The
kernel thermal governor will act on whichever temperature is the highest. There is only a single
heatsink and fan to cover both the SoC and Wi-Fi chip, so tracking both CPU and Wi-Fi temperatures
ensures that neither chip will overheat from low fan speed.

The trip levels are spaced 1.25C apart with double that (2.5C) for the hysteresis, with 5C
hysteresis for the lowest trip level (65C) because it is preferable for the fan to run for longer at
low speed than to stop and start repeatedly.

In the absence of continuous proportional feedback control, tightly grouping the trip levels and
cooling maps minimises the frequency and amplitude of temperature and fan speed oscillations.

The cooling states are set to increments of 5 (out of 255) from 12% to 61% and then increments of 10
from 61% to 100% with kick start speed at 15%. In comparison, the default in mt7981b.dtsi starts at
50% fan speed and leads to constant on/off cycles within a short period of time (every ~2 minutes).

Signed-off-by: Ryan Leung &lt;untilscour@protonmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/22936
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-25 10:13:17 +0200</date><id>8060e1d5683a82053bd096ec2788cdcb72c9d151</id><msg>mediatek: filogic: comfast cf-wr632ax: adjust fan behavior &amp; monitor Wi-Fi temps</msg><path><editType>edit</editType><file>target/linux/mediatek/dts/mt7981b-comfast-cf-wr632ax-common.dtsi</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/mediatek/dts/mt7981b-comfast-cf-wr632ax-common.dtsi</affectedPath><commitId>d733b2148c2a63ca7e5c36bb87ef1f2d38b010c6</commitId><timestamp>1790323997000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>mediatek: filogic: comfast cf-wr632ax: replace label with openwrt,netdev-name

Replace the label property for ethernet interface names with the property openwrt,netdev-name added
in commit d4d6c48b6e05 ("mediatek: filogic: support openwrt,netdev-name for renaming interfaces").

Signed-off-by: Ryan Leung &lt;untilscour@protonmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/22936
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-25 10:13:17 +0200</date><id>d733b2148c2a63ca7e5c36bb87ef1f2d38b010c6</id><msg>mediatek: filogic: comfast cf-wr632ax: replace label with openwrt,netdev-name</msg><path><editType>edit</editType><file>target/linux/mediatek/dts/mt7981b-comfast-cf-wr632ax-common.dtsi</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/qualcommax/patches-6.18/0723-clk-qcom-gcc-ipq5018-fix-uniphy-soft-reset-issue.patch</affectedPath><affectedPath>target/linux/qualcommax/patches-6.18/0191-clk-qcom-ipq-cmn-pll-keep-the-CMN-block-bus-clocks-enabled.patch</affectedPath><affectedPath>target/linux/qualcommax/patches-6.18/0721-clk-gcc-ipq5018-remove-the-unsupported-clk-combinati.patch</affectedPath><affectedPath>target/linux/qualcommax/patches-6.18/0090-v7.4-clk-qcom-gcc-ipq5018-mark-gpll0_main-clock-as-critical.patch</affectedPath><commitId>bbe5cbb665ec1db69e9171e35d4aaa6d3ac0f146</commitId><timestamp>1790327645000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>qualcommax: fix gpll0_main clock disable hang on ipq5018

Add upstream patch marking the 'gpll0_main' clock as critical on
IPQ5018 (gcc-ipq5018 driver), backported from upstream commit
33f9cb56cc28 ("clk: qcom: gcc-ipq5018: mark 'gpll0_main' clock as
critical").

During boot the APCS core clock feeding the CPUs can use GPLL0 as
its parent. On some boards (e.g. TP-Link Archer AX55 v1 using the
in-tree DTS since v6.18), the ipq-cmn-pll driver's pm_runtime_put()
call in its probe function asynchronously disables
'gcc_cmn_blk_ahb_clk', which in turn disables 'gpll0_main' as well,
hanging the system until the hardware watchdog restarts the board.

Marking gpll0_main as CLK_IS_CRITICAL fixes the underlying issue
directly in the GCC driver, making the previous workaround in
0191-clk-qcom-ipq-cmn-pll-keep-the-CMN-block-bus-clocks-enabled.patch
unnecessary. Drop that patch, as it addressed the same symptom by
keeping the CMN PLL block's bus clocks permanently enabled via a
devres-managed runtime PM reference instead of fixing the actual
critical clock.

Refresh the context in
0721-clk-gcc-ipq5018-remove-the-unsupported-clk-combinati.patch and
0723-clk-qcom-gcc-ipq5018-fix-uniphy-soft-reset-issue.patch, whose
hunks shifted by 9 lines due to the newly inserted patch.

Signed-off-by: Mieczyslaw Nalewaj &lt;namiltd@yahoo.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25386
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-25 11:14:05 +0200</date><id>bbe5cbb665ec1db69e9171e35d4aaa6d3ac0f146</id><msg>qualcommax: fix gpll0_main clock disable hang on ipq5018</msg><path><editType>edit</editType><file>target/linux/qualcommax/patches-6.18/0721-clk-gcc-ipq5018-remove-the-unsupported-clk-combinati.patch</file></path><path><editType>edit</editType><file>target/linux/qualcommax/patches-6.18/0723-clk-qcom-gcc-ipq5018-fix-uniphy-soft-reset-issue.patch</file></path><path><editType>delete</editType><file>target/linux/qualcommax/patches-6.18/0191-clk-qcom-ipq-cmn-pll-keep-the-CMN-block-bus-clocks-enabled.patch</file></path><path><editType>add</editType><file>target/linux/qualcommax/patches-6.18/0090-v7.4-clk-qcom-gcc-ipq5018-mark-gpll0_main-clock-as-critical.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/generic/pending-6.18/206-kbuild-map-the-kernel-tree-for-external-modules.patch</affectedPath><commitId>50ec6f218ab9d2b507c0c74ed0e14535257dc799</commitId><timestamp>1790352203000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/mail</absoluteUrl><fullName>mail</fullName></author><authorEmail>mail@aparcar.org</authorEmail><comment>kernel: map the kernel tree out of __FILE__ for external modules

Kernel modules from the packages feed differ between builds on 6.18,
e.g. kmod-v4l2loopback, kmod-jool-netfilter, kmod-pf-ring and
kmod-usb-serial-dmx_usb_module:

  -/builder/shared-workdir/build/build_dir/.../linux-6.18.52/include/linux/ucopysize.h
  +/tmp/rebuilderd-openwrt.Xebb8P/src/build_dir/.../linux-6.18.52/include/linux/ucopysize.h

These packages call make -C $(LINUX_DIR) M=... without
KERNEL_MAKE_FLAGS, so they get none of the OpenWrt prefix maps. With
6.12 that did not matter, since srctree stayed "." and the kernel
headers were included by a relative path. Since 6.13 srctree holds the
absolute path of the kernel tree for external modules, while kbuild
only maps srcroot, the module directory.

Add a pending patch that maps the kernel tree for external modules too.
It is added before the map of srcroot and before KCFLAGS, and GCC uses
the last matching map, so modules built through KERNEL_MAKE_FLAGS keep
their current output.

Link: https://github.com/openwrt/openwrt/pull/25356
Signed-off-by: Paul Spooren &lt;mail@aparcar.org&gt;
</comment><date>2026-09-25 18:03:23 +0200</date><id>50ec6f218ab9d2b507c0c74ed0e14535257dc799</id><msg>kernel: map the kernel tree out of __FILE__ for external modules</msg><path><editType>add</editType><file>target/linux/generic/pending-6.18/206-kbuild-map-the-kernel-tree-for-external-modules.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/qualcommbe/patches-6.18/0100-arm64-dts-qcom-ipq9574-add-reset-to-SDHC.patch</affectedPath><affectedPath>target/linux/qualcommbe/patches-6.18/0324-arm64-dts-qcom-ipq9574-add-PCS-uniphy-nodes.patch</affectedPath><affectedPath>target/linux/qualcommbe/patches-6.18/0344-arm64-dts-qcom-Add-EDMA-node-for-IPQ9574.patch</affectedPath><affectedPath>target/linux/qualcommbe/patches-6.18/0353-arm64-dts-qcom-ipq9574-add-NSSNOC-clock-to-nss-node.patch</affectedPath><affectedPath>target/linux/qualcommbe/patches-6.18/0356-arm64-dts-qcom-ipq9574-describe-remaining-uniphy-resets.patch</affectedPath><affectedPath>target/linux/qualcommbe/patches-6.18/0346-arm64-dts-qcom-ipq9574-Use-usb-phy-for-node-names.patch</affectedPath><affectedPath>target/linux/qualcommbe/patches-6.18/0355-arm64-dts-qcom-ipq9574-add-NSSNOC-interconnects-to-n.patch</affectedPath><affectedPath>target/linux/qualcommbe/patches-6.18/0343-arm64-dts-qcom-Add-IPQ9574-PPE-base-device-node.patch</affectedPath><commitId>da141cba5c52cc45d2b7413ad3ed7c587491141d</commitId><timestamp>1790364090000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>qualcommbe: ipq957x: add reset to SDHCI controller

Add a pending upstream patch[1] to add the reset to the SDHCI controller.
This allows it to reset itself on probe and avoids warnings due to leftover
bootloader configuration.

[1] https://patchwork.kernel.org/project/linux-arm-msm/patch/20260925191706.1579990-1-robert.marko@sartura.hr/
Signed-off-by: Robert Marko &lt;robert.marko@sartura.hr&gt;
</comment><date>2026-09-25 21:21:30 +0200</date><id>da141cba5c52cc45d2b7413ad3ed7c587491141d</id><msg>qualcommbe: ipq957x: add reset to SDHCI controller</msg><path><editType>edit</editType><file>target/linux/qualcommbe/patches-6.18/0353-arm64-dts-qcom-ipq9574-add-NSSNOC-clock-to-nss-node.patch</file></path><path><editType>edit</editType><file>target/linux/qualcommbe/patches-6.18/0355-arm64-dts-qcom-ipq9574-add-NSSNOC-interconnects-to-n.patch</file></path><path><editType>add</editType><file>target/linux/qualcommbe/patches-6.18/0100-arm64-dts-qcom-ipq9574-add-reset-to-SDHC.patch</file></path><path><editType>edit</editType><file>target/linux/qualcommbe/patches-6.18/0324-arm64-dts-qcom-ipq9574-add-PCS-uniphy-nodes.patch</file></path><path><editType>edit</editType><file>target/linux/qualcommbe/patches-6.18/0344-arm64-dts-qcom-Add-EDMA-node-for-IPQ9574.patch</file></path><path><editType>edit</editType><file>target/linux/qualcommbe/patches-6.18/0356-arm64-dts-qcom-ipq9574-describe-remaining-uniphy-resets.patch</file></path><path><editType>edit</editType><file>target/linux/qualcommbe/patches-6.18/0343-arm64-dts-qcom-Add-IPQ9574-PPE-base-device-node.patch</file></path><path><editType>edit</editType><file>target/linux/qualcommbe/patches-6.18/0346-arm64-dts-qcom-ipq9574-Use-usb-phy-for-node-names.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/qualcommbe/patches-6.18/0362-net-ethernet-qualcomm-ppe-fix-rx-dma-mapping-direction.patch</affectedPath><commitId>e8ca976eff4fe2ea9ac433ae615e4384b155b783</commitId><timestamp>1790365598000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>qualcommbe: fix PPE EDMA RX DMA mappings

EDMA maps RX fill buffers with DMA_TO_DEVICE but unmaps them with DMA_FROM_DEVICE. Use DMA_FROM_DEVICE consistently, release mappings left on RX rings during teardown, and flush ring-disable writes before descriptor cleanup.

Signed-off-by: krava &lt;igor.kravchenko05@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/24218
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-25 21:46:38 +0200</date><id>e8ca976eff4fe2ea9ac433ae615e4384b155b783</id><msg>qualcommbe: fix PPE EDMA RX DMA mappings</msg><path><editType>add</editType><file>target/linux/qualcommbe/patches-6.18/0362-net-ethernet-qualcomm-ppe-fix-rx-dma-mapping-direction.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/system/procd/Makefile</affectedPath><commitId>3ab520425b127d66617bfeb1e2805b4f20109f95</commitId><timestamp>1790380392000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/daniel</absoluteUrl><fullName>daniel</fullName></author><authorEmail>daniel@makrotopia.org</authorEmail><comment>procd: jail/seccomp: complete the pre-main syscall allowlists

Add missing syscall names needed on 32-bit platforms to the pre-main
pre-main syscall allowlists.

Fixes: #25392
Fixes: ee526dbf01 ("procd: update to git HEAD of 2026-09-13")
Signed-off-by: Daniel Golle &lt;daniel@makrotopia.org&gt;
</comment><date>2026-09-26 00:53:12 +0100</date><id>3ab520425b127d66617bfeb1e2805b4f20109f95</id><msg>procd: jail/seccomp: complete the pre-main syscall allowlists</msg><path><editType>edit</editType><file>package/system/procd/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/system/mtd/src/trx.c</affectedPath><commitId>83c18c360eaf0ba35c267536d4294195a13598ba</commitId><timestamp>1790450768000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/hauke</absoluteUrl><fullName>hauke</fullName></author><authorEmail>hauke@hauke-m.de</authorEmail><comment>mtd: fix fd and mapping leak in trx_fixup() error path

When the TRX magic check fails, trx_fixup() jumps straight to the err
label, which only returns -1. At that point the mtd device has already
been opened and the whole partition has been mmap()ed, so both the file
descriptor and the mapping are leaked.

Add an err2 label that unwinds the mapping before falling through to the
existing close(bfd), so the error path unwinds in reverse order of
acquisition like the success path does.

Fixes: bbd9eb4669fa ("clean up mtd, fix up trx header when integrating jffs2 data on broadcom devices")
Assisted-by: Claude:claude-opus-5
Link: https://github.com/openwrt/openwrt/pull/25284
Signed-off-by: Hauke Mehrtens &lt;hauke@hauke-m.de&gt;
</comment><date>2026-09-26 21:26:08 +0200</date><id>83c18c360eaf0ba35c267536d4294195a13598ba</id><msg>mtd: fix fd and mapping leak in trx_fixup() error path</msg><path><editType>edit</editType><file>package/system/mtd/src/trx.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/system/mtd/Makefile</affectedPath><affectedPath>package/system/mtd/src/trx.c</affectedPath><commitId>e056c32ed0042b54d567059420454a4864b2222e</commitId><timestamp>1790450789000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/hauke</absoluteUrl><fullName>hauke</fullName></author><authorEmail>hauke@hauke-m.de</authorEmail><comment>mtd: validate trx-&gt;len in trx_fixup()

trx_fixup() computed the CRC32 range from the on-flash TRX header
without validating it:

    scan = ptr + offsetof(struct trx_header, flag_version);
    trx-&gt;crc32 = crc32buf(scan, trx-&gt;len - (scan - ptr));

trx-&gt;len is read from the mmap()ed partition and is only sanity checked
in trx_check(), which is a separate entry point. A trx-&gt;len larger than
the partition therefore makes crc32buf() walk that many bytes past the
end of the mapping and crash mtd with SIGSEGV.

The mirror case of a trx-&gt;len below the 12 byte offset does not overread
in practice: crc32buf() takes a size_t but passes it to crc32(), which
takes an int len and loops on "while (--len &gt;= 0)". The wrapped value
truncates to a negative int, so the loop body never runs and a zero
length CRC32 is written instead. Values at or above 0x8000000c truncate
the same way. Only the range from sizeof(struct trx_header) to roughly
0x8000000b stays positive through the truncation and reads out of
bounds, which is exactly the range a plausible bad length falls into.

Bound trx-&gt;len on both sides before computing the range, using the same
lower limit trx_check() already applies. Both comparisons are unsigned,
so the wrapping cases are rejected as well.

trx_fixup() runs as root on the contents of the flash, so this is a
robustness fix rather than a privilege boundary: it is reachable through
"mtd jffs2write" and the jffs2_replaced path of "mtd write", not through
"mtd fixtrx", which uses mtd_fixtrx() and derives its length from
erasesize instead. The practical benefit is not crashing on a truncated
or corrupted header during sysupgrade.

Link: https://github.com/openwrt/openwrt/security/advisories/GHSA-wch3-f5gc-mw2h
Reported-by: @tonoyx91
Reported-by: @0xROI
Fixes: bbd9eb4669fa ("clean up mtd, fix up trx header when integrating jffs2 data on broadcom devices")
Assisted-by: Claude:claude-opus-5
Link: https://github.com/openwrt/openwrt/pull/25284
Signed-off-by: Hauke Mehrtens &lt;hauke@hauke-m.de&gt;
</comment><date>2026-09-26 21:26:29 +0200</date><id>e056c32ed0042b54d567059420454a4864b2222e</id><msg>mtd: validate trx-&gt;len in trx_fixup()</msg><path><editType>edit</editType><file>package/system/mtd/Makefile</file></path><path><editType>edit</editType><file>package/system/mtd/src/trx.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/libs/libpcap/patches/100-no-openssl.patch</affectedPath><affectedPath>package/libs/libpcap/patches/102-skip-manpages.patch</affectedPath><affectedPath>package/libs/libpcap/Makefile</affectedPath><affectedPath>package/libs/libpcap/patches/300-Add-support-for-B.A.T.M.A.N.-Advanced.patch</affectedPath><commitId>b36d01c69682adf3eaf00f9e9414e99a6d0a0d41</commitId><timestamp>1790452540000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/hauke</absoluteUrl><fullName>hauke</fullName></author><authorEmail>hauke@hauke-m.de</authorEmail><comment>libpcap: update to 1.10.7

Changelog: https://github.com/the-tcpdump-group/libpcap/blob/libpcap-1.10/CHANGES

CVE fixes:
 - CVE-2026-0799: Access M[] safely in the BPF interpreter.
 - CVE-2026-31912: Mind the program bounds in pcap_offline_filter().
 - CVE-2026-31911: Fail opcodes safely in the BPF interpreter.
 - CVE-2026-6244: Avoid division by zero via pcap_offline_filter().
 - CVE-2026-6554: Limit "ja L" looping in pcap_offline_filter().
 - CVE-2026-18313: Fix a memory leak in rpcapd.
 - CVE-2026-18238: Fix RPCAP_MSG_PACKET validation.

Signed-off-by: Ivan Pavlov &lt;AuthorReflex@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25384
Signed-off-by: Hauke Mehrtens &lt;hauke@hauke-m.de&gt;
</comment><date>2026-09-26 21:55:40 +0200</date><id>b36d01c69682adf3eaf00f9e9414e99a6d0a0d41</id><msg>libpcap: update to 1.10.7</msg><path><editType>edit</editType><file>package/libs/libpcap/patches/100-no-openssl.patch</file></path><path><editType>edit</editType><file>package/libs/libpcap/patches/102-skip-manpages.patch</file></path><path><editType>edit</editType><file>package/libs/libpcap/Makefile</file></path><path><editType>edit</editType><file>package/libs/libpcap/patches/300-Add-support-for-B.A.T.M.A.N.-Advanced.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/network/utils/tcpdump/patches/001-remove_pcap_debug.patch</affectedPath><affectedPath>package/network/utils/tcpdump/patches/100-tcpdump_mini.patch</affectedPath><affectedPath>package/network/utils/tcpdump/Makefile</affectedPath><commitId>b6bb254a85fe375cf923bc9da3eeceefd1526889</commitId><timestamp>1790452684000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/hauke</absoluteUrl><fullName>hauke</fullName></author><authorEmail>hauke@hauke-m.de</authorEmail><comment>tcpdump: update to 4.99.7

Changelog: https://github.com/the-tcpdump-group/tcpdump/blob/tcpdump-4.99/CHANGES

001-remove_pcap_debug.patch - rebased manually

Signed-off-by: Ivan Pavlov &lt;AuthorReflex@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25385
Signed-off-by: Hauke Mehrtens &lt;hauke@hauke-m.de&gt;
</comment><date>2026-09-26 21:58:04 +0200</date><id>b6bb254a85fe375cf923bc9da3eeceefd1526889</id><msg>tcpdump: update to 4.99.7</msg><path><editType>edit</editType><file>package/network/utils/tcpdump/patches/001-remove_pcap_debug.patch</file></path><path><editType>edit</editType><file>package/network/utils/tcpdump/Makefile</file></path><path><editType>edit</editType><file>package/network/utils/tcpdump/patches/100-tcpdump_mini.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/libs/elfutils/patches/003-libintl-compatibility.patch</affectedPath><affectedPath>package/libs/elfutils/Makefile</affectedPath><commitId>b3bd04ddb1dc6664ead64d72380f6a8b4f1c8db6</commitId><timestamp>1790453552000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/hauke</absoluteUrl><fullName>hauke</fullName></author><authorEmail>hauke@hauke-m.de</authorEmail><comment>elfutils: update to 0.196

Release notes: https://inbox.sourceware.org/elfutils-devel/CAJDtP-QXj15OOpBxLdU+V1PZKM8YmnsE1eVy-R2R5xbE7Shk5A@mail.gmail.com/T/#u

Patches refreshed automatically.

Signed-off-by: Ivan Pavlov &lt;AuthorReflex@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25387
Signed-off-by: Hauke Mehrtens &lt;hauke@hauke-m.de&gt;
</comment><date>2026-09-26 22:12:32 +0200</date><id>b3bd04ddb1dc6664ead64d72380f6a8b4f1c8db6</id><msg>elfutils: update to 0.196</msg><path><editType>edit</editType><file>package/libs/elfutils/patches/003-libintl-compatibility.patch</file></path><path><editType>edit</editType><file>package/libs/elfutils/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/boot/uboot-mediatek/patches/459-add-mercusys-mr90x-v1.patch</affectedPath><commitId>9fba5528d6c5a87440c42392f49f5a0b2abc34f1</commitId><timestamp>1790453686000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/hauke</absoluteUrl><fullName>hauke</fullName></author><authorEmail>hauke@hauke-m.de</authorEmail><comment>uboot-mediatek: increase SPI-NAND frequency for Mercusys MR90X v1

Increase the spi-max-frequency from 20MHz to 52MHz for the SPI-NAND flash
on the Mercusys MR90X v1. The underlying GigaDevice GD5F1GQ5UEYIGY
SPI-NAND flash chip natively supports clock speeds up to 133MHz and the
MediaTek MT7986B SoC handles 52MHz safely.

Signed-off-by: Mikhail Zhilkin &lt;csharper2005@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25246
Signed-off-by: Hauke Mehrtens &lt;hauke@hauke-m.de&gt;
</comment><date>2026-09-26 22:14:46 +0200</date><id>9fba5528d6c5a87440c42392f49f5a0b2abc34f1</id><msg>uboot-mediatek: increase SPI-NAND frequency for Mercusys MR90X v1</msg><path><editType>edit</editType><file>package/boot/uboot-mediatek/patches/459-add-mercusys-mr90x-v1.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/mediatek/dts/mt7986b-mercusys-mr90x-v1-common.dtsi</affectedPath><commitId>ea78c9d915efb066df3e2873edef0ae86946fd12</commitId><timestamp>1790453686000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/hauke</absoluteUrl><fullName>hauke</fullName></author><authorEmail>hauke@hauke-m.de</authorEmail><comment>mediatek: increase SPI-NAND frequency for Mercusys MR90X v1

Increase the spi-max-frequency from 20MHz to 52MHz for the SPI-NAND flash
on the Mercusys MR90X v1. The underlying GigaDevice GD5F1GQ5UEYIGY
SPI-NAND flash chip natively supports clock speeds up to 133MHz and the
MediaTek MT7986B SoC handles 52MHz safely.

Testing with 'dd' reading 16MB from /dev/mtd3 shows a significant
performance improvement (~49% reduction in read time):

Before (20MHz):
256+0 records in
256+0 records out
real    0m 2.71s

After (52MHz):
256+0 records in
256+0 records out
real    0m 1.37s

Signed-off-by: Mikhail Zhilkin &lt;csharper2005@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25246
Signed-off-by: Hauke Mehrtens &lt;hauke@hauke-m.de&gt;
</comment><date>2026-09-26 22:14:46 +0200</date><id>ea78c9d915efb066df3e2873edef0ae86946fd12</id><msg>mediatek: increase SPI-NAND frequency for Mercusys MR90X v1</msg><path><editType>edit</editType><file>target/linux/mediatek/dts/mt7986b-mercusys-mr90x-v1-common.dtsi</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/bmips/bcm63268/config-6.12</affectedPath><affectedPath>target/linux/bmips/bcm6362/config-6.18</affectedPath><affectedPath>target/linux/bmips/patches-6.12/502-net-mdio-mux-bcm6368-allow-disabling.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.18/600-mips-bmips-add-pci-support.patch</affectedPath><affectedPath>target/linux/bmips/bcm6362/config-6.12</affectedPath><affectedPath>target/linux/bmips/patches-6.12/601-pci-controllers-add-bcm6328-pcie-support.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.12/501-net-broadcom-add-BCM6348-enet-controller-driver.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.18/502-net-mdio-mux-bcm6368-allow-disabling.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.18/500-net-broadcom-add-BCM6368-enetsw-controller-driver.patch</affectedPath><affectedPath>target/linux/bmips/bcm63268/config-6.18</affectedPath><affectedPath>target/linux/bmips/patches-6.18/110-net-dsa-b53-bcm531x5-fix-cpu-rgmii-mode-interpretation.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.12/200-mips-bmips-automatically-detect-CPU-frequency.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.18/501-net-broadcom-add-BCM6348-enet-controller-driver.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.18/800-jffs2-work-around-unaligned-accesses-failing-on-bcm6.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.18/201-mips-bmips-automatically-detect-RAM-size.patch</affectedPath><affectedPath>target/linux/bmips/bcm6358/config-6.18</affectedPath><affectedPath>target/linux/bmips/patches-6.12/603-pci-controllers-add-bcm6348-pci-support.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.18/200-mips-bmips-automatically-detect-CPU-frequency.patch</affectedPath><affectedPath>target/linux/bmips/bcm6328/config-6.18</affectedPath><affectedPath>target/linux/bmips/patches-6.12/100-irqchip-add-support-for-bcm6345-style-external-inter.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.18/100-irqchip-add-support-for-bcm6345-style-external-inter.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.12/201-mips-bmips-automatically-detect-RAM-size.patch</affectedPath><affectedPath>target/linux/bmips/bcm6318/config-6.18</affectedPath><affectedPath>target/linux/bmips/patches-6.12/202-mips-bmips-tweak-Kconfig-options.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.18/700-leds-add-support-for-Sercomm-MSP430-LED-controller.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.12/700-leds-add-support-for-Sercomm-MSP430-LED-controller.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.12/602-pci-controllers-add-bcm6318-pcie-support.patch</affectedPath><affectedPath>target/linux/bmips/bcm6318/config-6.12</affectedPath><affectedPath>target/linux/bmips/patches-6.18/601-pci-controllers-add-bcm6328-pcie-support.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.12/110-net-dsa-b53-bcm531x5-fix-cpu-rgmii-mode-interpretation.patch</affectedPath><affectedPath>target/linux/bmips/bcm6358/config-6.12</affectedPath><affectedPath>target/linux/bmips/bcm6328/config-6.12</affectedPath><affectedPath>target/linux/bmips/patches-6.12/800-jffs2-work-around-unaligned-accesses-failing-on-bcm6.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.18/202-mips-bmips-tweak-Kconfig-options.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.18/603-pci-controllers-add-bcm6348-pci-support.patch</affectedPath><affectedPath>target/linux/bmips/bcm6368/config-6.18</affectedPath><affectedPath>target/linux/bmips/patches-6.12/500-net-broadcom-add-BCM6368-enetsw-controller-driver.patch</affectedPath><affectedPath>target/linux/bmips/bcm6368/config-6.12</affectedPath><affectedPath>target/linux/bmips/patches-6.18/602-pci-controllers-add-bcm6318-pcie-support.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.12/600-mips-bmips-add-pci-support.patch</affectedPath><commitId>5da13ae692fd9de648e0366671d67151335d9049</commitId><timestamp>1790467286000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>kernel/bmips: create files for v6.18 (from v6.12)

This is an automatically generated commit.

When doing `git bisect`, consider `git bisect --skip`.

Signed-off-by: Andrew LaMarche &lt;andrewjlamarche@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25293
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-27 02:01:26 +0200</date><id>5da13ae692fd9de648e0366671d67151335d9049</id><msg>kernel/bmips: create files for v6.18 (from v6.12)</msg><path><editType>delete</editType><file>target/linux/bmips/patches-6.12/600-mips-bmips-add-pci-support.patch</file></path><path><editType>add</editType><file>target/linux/bmips/patches-6.18/202-mips-bmips-tweak-Kconfig-options.patch</file></path><path><editType>delete</editType><file>target/linux/bmips/patches-6.12/501-net-broadcom-add-BCM6348-enet-controller-driver.patch</file></path><path><editType>add</editType><file>target/linux/bmips/patches-6.18/201-mips-bmips-automatically-detect-RAM-size.patch</file></path><path><editType>delete</editType><file>target/linux/bmips/bcm6318/config-6.12</file></path><path><editType>add</editType><file>target/linux/bmips/patches-6.18/200-mips-bmips-automatically-detect-CPU-frequency.patch</file></path><path><editType>delete</editType><file>target/linux/bmips/bcm6328/config-6.12</file></path><path><editType>add</editType><file>target/linux/bmips/bcm6358/config-6.18</file></path><path><editType>add</editType><file>target/linux/bmips/patches-6.18/501-net-broadcom-add-BCM6348-enet-controller-driver.patch</file></path><path><editType>delete</editType><file>target/linux/bmips/patches-6.12/100-irqchip-add-support-for-bcm6345-style-external-inter.patch</file></path><path><editType>delete</editType><file>target/linux/bmips/patches-6.12/603-pci-controllers-add-bcm6348-pci-support.patch</file></path><path><editType>delete</editType><file>target/linux/bmips/patches-6.12/202-mips-bmips-tweak-Kconfig-options.patch</file></path><path><editType>delete</editType><file>target/linux/bmips/patches-6.12/110-net-dsa-b53-bcm531x5-fix-cpu-rgmii-mode-interpretation.patch</file></path><path><editType>add</editType><file>target/linux/bmips/patches-6.18/110-net-dsa-b53-bcm531x5-fix-cpu-rgmii-mode-interpretation.patch</file></path><path><editType>add</editType><file>target/linux/bmips/bcm6318/config-6.18</file></path><path><editType>add</editType><file>target/linux/bmips/patches-6.18/602-pci-controllers-add-bcm6318-pcie-support.patch</file></path><path><editType>add</editType><file>target/linux/bmips/bcm6362/config-6.18</file></path><path><editType>delete</editType><file>target/linux/bmips/patches-6.12/502-net-mdio-mux-bcm6368-allow-disabling.patch</file></path><path><editType>delete</editType><file>target/linux/bmips/patches-6.12/500-net-broadcom-add-BCM6368-enetsw-controller-driver.patch</file></path><path><editType>add</editType><file>target/linux/bmips/patches-6.18/700-leds-add-support-for-Sercomm-MSP430-LED-controller.patch</file></path><path><editType>delete</editType><file>target/linux/bmips/patches-6.12/602-pci-controllers-add-bcm6318-pcie-support.patch</file></path><path><editType>add</editType><file>target/linux/bmips/patches-6.18/600-mips-bmips-add-pci-support.patch</file></path><path><editType>add</editType><file>target/linux/bmips/patches-6.18/601-pci-controllers-add-bcm6328-pcie-support.patch</file></path><path><editType>add</editType><file>target/linux/bmips/patches-6.18/800-jffs2-work-around-unaligned-accesses-failing-on-bcm6.patch</file></path><path><editType>add</editType><file>target/linux/bmips/patches-6.18/603-pci-controllers-add-bcm6348-pci-support.patch</file></path><path><editType>delete</editType><file>target/linux/bmips/patches-6.12/700-leds-add-support-for-Sercomm-MSP430-LED-controller.patch</file></path><path><editType>add</editType><file>target/linux/bmips/patches-6.18/500-net-broadcom-add-BCM6368-enetsw-controller-driver.patch</file></path><path><editType>delete</editType><file>target/linux/bmips/patches-6.12/200-mips-bmips-automatically-detect-CPU-frequency.patch</file></path><path><editType>delete</editType><file>target/linux/bmips/bcm6362/config-6.12</file></path><path><editType>delete</editType><file>target/linux/bmips/patches-6.12/601-pci-controllers-add-bcm6328-pcie-support.patch</file></path><path><editType>add</editType><file>target/linux/bmips/bcm63268/config-6.18</file></path><path><editType>add</editType><file>target/linux/bmips/bcm6368/config-6.18</file></path><path><editType>delete</editType><file>target/linux/bmips/patches-6.12/800-jffs2-work-around-unaligned-accesses-failing-on-bcm6.patch</file></path><path><editType>add</editType><file>target/linux/bmips/patches-6.18/502-net-mdio-mux-bcm6368-allow-disabling.patch</file></path><path><editType>delete</editType><file>target/linux/bmips/bcm6368/config-6.12</file></path><path><editType>add</editType><file>target/linux/bmips/bcm6328/config-6.18</file></path><path><editType>delete</editType><file>target/linux/bmips/bcm63268/config-6.12</file></path><path><editType>delete</editType><file>target/linux/bmips/bcm6358/config-6.12</file></path><path><editType>delete</editType><file>target/linux/bmips/patches-6.12/201-mips-bmips-automatically-detect-RAM-size.patch</file></path><path><editType>add</editType><file>target/linux/bmips/patches-6.18/100-irqchip-add-support-for-bcm6345-style-external-inter.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/bmips/bcm63268/config-6.12</affectedPath><affectedPath>target/linux/bmips/patches-6.12/202-mips-bmips-tweak-Kconfig-options.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.12/700-leds-add-support-for-Sercomm-MSP430-LED-controller.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.12/602-pci-controllers-add-bcm6318-pcie-support.patch</affectedPath><affectedPath>target/linux/bmips/bcm6318/config-6.12</affectedPath><affectedPath>target/linux/bmips/patches-6.12/502-net-mdio-mux-bcm6368-allow-disabling.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.12/110-net-dsa-b53-bcm531x5-fix-cpu-rgmii-mode-interpretation.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.12/601-pci-controllers-add-bcm6328-pcie-support.patch</affectedPath><affectedPath>target/linux/bmips/bcm6362/config-6.12</affectedPath><affectedPath>target/linux/bmips/patches-6.12/501-net-broadcom-add-BCM6348-enet-controller-driver.patch</affectedPath><affectedPath>target/linux/bmips/bcm6358/config-6.12</affectedPath><affectedPath>target/linux/bmips/bcm6328/config-6.12</affectedPath><affectedPath>target/linux/bmips/patches-6.12/200-mips-bmips-automatically-detect-CPU-frequency.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.12/800-jffs2-work-around-unaligned-accesses-failing-on-bcm6.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.12/603-pci-controllers-add-bcm6348-pci-support.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.12/500-net-broadcom-add-BCM6368-enetsw-controller-driver.patch</affectedPath><affectedPath>target/linux/bmips/bcm6368/config-6.12</affectedPath><affectedPath>target/linux/bmips/patches-6.12/600-mips-bmips-add-pci-support.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.12/100-irqchip-add-support-for-bcm6345-style-external-inter.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.12/201-mips-bmips-automatically-detect-RAM-size.patch</affectedPath><commitId>e829831c057b528040035743d457a86458937be3</commitId><timestamp>1790467287000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>kernel/bmips: restore files for v6.12

This is an automatically generated commit which aids following Kernel patch
history, as git will see the move and copy as a rename thus defeating the
purpose.

For the original discussion see:
https://lists.openwrt.org/pipermail/openwrt-devel/2023-October/041673.html

Signed-off-by: Andrew LaMarche &lt;andrewjlamarche@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25293
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-27 02:01:27 +0200</date><id>e829831c057b528040035743d457a86458937be3</id><msg>kernel/bmips: restore files for v6.12</msg><path><editType>add</editType><file>target/linux/bmips/patches-6.12/600-mips-bmips-add-pci-support.patch</file></path><path><editType>add</editType><file>target/linux/bmips/bcm6318/config-6.12</file></path><path><editType>add</editType><file>target/linux/bmips/patches-6.12/110-net-dsa-b53-bcm531x5-fix-cpu-rgmii-mode-interpretation.patch</file></path><path><editType>add</editType><file>target/linux/bmips/bcm6328/config-6.12</file></path><path><editType>add</editType><file>target/linux/bmips/bcm63268/config-6.12</file></path><path><editType>add</editType><file>target/linux/bmips/patches-6.12/502-net-mdio-mux-bcm6368-allow-disabling.patch</file></path><path><editType>add</editType><file>target/linux/bmips/bcm6368/config-6.12</file></path><path><editType>add</editType><file>target/linux/bmips/patches-6.12/602-pci-controllers-add-bcm6318-pcie-support.patch</file></path><path><editType>add</editType><file>target/linux/bmips/patches-6.12/200-mips-bmips-automatically-detect-CPU-frequency.patch</file></path><path><editType>add</editType><file>target/linux/bmips/patches-6.12/202-mips-bmips-tweak-Kconfig-options.patch</file></path><path><editType>add</editType><file>target/linux/bmips/patches-6.12/601-pci-controllers-add-bcm6328-pcie-support.patch</file></path><path><editType>add</editType><file>target/linux/bmips/patches-6.12/501-net-broadcom-add-BCM6348-enet-controller-driver.patch</file></path><path><editType>add</editType><file>target/linux/bmips/bcm6358/config-6.12</file></path><path><editType>add</editType><file>target/linux/bmips/patches-6.12/603-pci-controllers-add-bcm6348-pci-support.patch</file></path><path><editType>add</editType><file>target/linux/bmips/patches-6.12/500-net-broadcom-add-BCM6368-enetsw-controller-driver.patch</file></path><path><editType>add</editType><file>target/linux/bmips/patches-6.12/100-irqchip-add-support-for-bcm6345-style-external-inter.patch</file></path><path><editType>add</editType><file>target/linux/bmips/patches-6.12/201-mips-bmips-automatically-detect-RAM-size.patch</file></path><path><editType>add</editType><file>target/linux/bmips/patches-6.12/700-leds-add-support-for-Sercomm-MSP430-LED-controller.patch</file></path><path><editType>add</editType><file>target/linux/bmips/patches-6.12/800-jffs2-work-around-unaligned-accesses-failing-on-bcm6.patch</file></path><path><editType>add</editType><file>target/linux/bmips/bcm6362/config-6.12</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/bmips/Makefile</affectedPath><commitId>97790a5ba0e643f60497603fef57652cabd8906a</commitId><timestamp>1790467287000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>bmips: enable 6.18 testing kernel

Enable the 6.18 testing kernel for bmips.

Signed-off-by: Andrew LaMarche &lt;andrewjlamarche@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25293
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-27 02:01:27 +0200</date><id>97790a5ba0e643f60497603fef57652cabd8906a</id><msg>bmips: enable 6.18 testing kernel</msg><path><editType>edit</editType><file>target/linux/bmips/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/bmips/patches-6.18/202-mips-bmips-tweak-Kconfig-options.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.18/603-pci-controllers-add-bcm6348-pci-support.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.18/700-leds-add-support-for-Sercomm-MSP430-LED-controller.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.18/602-pci-controllers-add-bcm6318-pcie-support.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.18/601-pci-controllers-add-bcm6328-pcie-support.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.18/100-irqchip-add-support-for-bcm6345-style-external-inter.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.18/600-mips-bmips-add-pci-support.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.18/502-net-mdio-mux-bcm6368-allow-disabling.patch</affectedPath><commitId>547f8a86bb7832922ad57e831874676ea7fbe6ea</commitId><timestamp>1790467287000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>bmips: refresh 6.18 patches

Refresh patches for 6.18.

Signed-off-by: Andrew LaMarche &lt;andrewjlamarche@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25293
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-27 02:01:27 +0200</date><id>547f8a86bb7832922ad57e831874676ea7fbe6ea</id><msg>bmips: refresh 6.18 patches</msg><path><editType>edit</editType><file>target/linux/bmips/patches-6.18/700-leds-add-support-for-Sercomm-MSP430-LED-controller.patch</file></path><path><editType>edit</editType><file>target/linux/bmips/patches-6.18/601-pci-controllers-add-bcm6328-pcie-support.patch</file></path><path><editType>edit</editType><file>target/linux/bmips/patches-6.18/603-pci-controllers-add-bcm6348-pci-support.patch</file></path><path><editType>edit</editType><file>target/linux/bmips/patches-6.18/100-irqchip-add-support-for-bcm6345-style-external-inter.patch</file></path><path><editType>edit</editType><file>target/linux/bmips/patches-6.18/202-mips-bmips-tweak-Kconfig-options.patch</file></path><path><editType>edit</editType><file>target/linux/bmips/patches-6.18/502-net-mdio-mux-bcm6368-allow-disabling.patch</file></path><path><editType>edit</editType><file>target/linux/bmips/patches-6.18/600-mips-bmips-add-pci-support.patch</file></path><path><editType>edit</editType><file>target/linux/bmips/patches-6.18/602-pci-controllers-add-bcm6318-pcie-support.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/bmips/bcm6358/config-6.18</affectedPath><affectedPath>target/linux/bmips/bcm6362/config-6.18</affectedPath><affectedPath>target/linux/bmips/bcm63268/config-6.18</affectedPath><affectedPath>target/linux/bmips/bcm6368/config-6.18</affectedPath><affectedPath>target/linux/bmips/bcm6318/config-6.18</affectedPath><affectedPath>target/linux/bmips/bcm6328/config-6.18</affectedPath><commitId>a1d76643c8a669fa0de5bedb656ecc67b744dd89</commitId><timestamp>1790467288000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>bmips: refresh kernel config

Add missing symbols for bmips

Signed-off-by: Andrew LaMarche &lt;andrewjlamarche@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25293
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-27 02:01:28 +0200</date><id>a1d76643c8a669fa0de5bedb656ecc67b744dd89</id><msg>bmips: refresh kernel config</msg><path><editType>edit</editType><file>target/linux/bmips/bcm6358/config-6.18</file></path><path><editType>edit</editType><file>target/linux/bmips/bcm6362/config-6.18</file></path><path><editType>edit</editType><file>target/linux/bmips/bcm63268/config-6.18</file></path><path><editType>edit</editType><file>target/linux/bmips/bcm6318/config-6.18</file></path><path><editType>edit</editType><file>target/linux/bmips/bcm6368/config-6.18</file></path><path><editType>edit</editType><file>target/linux/bmips/bcm6328/config-6.18</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/bmips/files/drivers/pci/controller/pcie-bcm6318.c</affectedPath><affectedPath>target/linux/bmips/files/drivers/pci/controller/pci-bcm6348.c</affectedPath><affectedPath>target/linux/bmips/files/drivers/pci/controller/pcie-bcm6328.c</affectedPath><commitId>d5472fb9abd68075bd5b57d9d41be41b2e81fb94</commitId><timestamp>1790467288000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>bmips: add of_pci_parse_bus_range() version guard

Kernel 6.14 no longer exports of_pci_parse_bus_range(). Re-add a local
version to the bmips pci(e) drivers.

Signed-off-by: Andrew LaMarche &lt;andrewjlamarche@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25293
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-27 02:01:28 +0200</date><id>d5472fb9abd68075bd5b57d9d41be41b2e81fb94</id><msg>bmips: add of_pci_parse_bus_range() version guard</msg><path><editType>edit</editType><file>target/linux/bmips/files/drivers/pci/controller/pcie-bcm6328.c</file></path><path><editType>edit</editType><file>target/linux/bmips/files/drivers/pci/controller/pci-bcm6348.c</file></path><path><editType>edit</editType><file>target/linux/bmips/files/drivers/pci/controller/pcie-bcm6318.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/bmips/files/drivers/net/ethernet/broadcom/bcm6348-enet.c</affectedPath><affectedPath>target/linux/bmips/files/drivers/net/ethernet/broadcom/bcm6368-enetsw.c</affectedPath><commitId>7abedbd60268b92229c1f6be20800970a43d5356</commitId><timestamp>1790467288000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>bmips: add enet timer guards and use modern timers

Guard from_timer() to kernels &lt; 6.16 and migrate del_timer_sync to
timer_delete_sync() in favor of modern APIs.

Signed-off-by: Andrew LaMarche &lt;andrewjlamarche@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25293
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-27 02:01:28 +0200</date><id>7abedbd60268b92229c1f6be20800970a43d5356</id><msg>bmips: add enet timer guards and use modern timers</msg><path><editType>edit</editType><file>target/linux/bmips/files/drivers/net/ethernet/broadcom/bcm6368-enetsw.c</file></path><path><editType>edit</editType><file>target/linux/bmips/files/drivers/net/ethernet/broadcom/bcm6348-enet.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/bmips/files/drivers/net/ethernet/broadcom/bcm6348-enet.c</affectedPath><commitId>220866c5cf36269c3099b955d7b0de3d080bcade</commitId><timestamp>1790467289000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>bmips: fix iudma table match

Match the correct bcm6348_iudma_of_match table instead of
bcm6348_emac_of_match.

Signed-off-by: Andrew LaMarche &lt;andrewjlamarche@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25293
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-27 02:01:29 +0200</date><id>220866c5cf36269c3099b955d7b0de3d080bcade</id><msg>bmips: fix iudma table match</msg><path><editType>edit</editType><file>target/linux/bmips/files/drivers/net/ethernet/broadcom/bcm6348-enet.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/ath79/image/generic.mk</affectedPath><commitId>177bc19f275908572805e36d9e5debe8b32ef471</commitId><timestamp>1790496754000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/mail</absoluteUrl><fullName>mail</fullName></author><authorEmail>mail@aparcar.org</authorEmail><comment>ath79: make the ZyXEL NWA11xx factory tarball reproducible

The factory images of the ZyXEL NWA11xx devices differ between builds
in the tar.bz2 they wrap:

  -drwxr-xr-x 0 buildbot (1000) buildbot (1000) 0 2026-09-24 21:39:18 ./
  -rw-r--r--  0 buildbot (1000) buildbot (1000) 3387 2026-09-24 21:39:18 ./vmlinux_mi124_f1e.lzma.uImage
  -rw-r--r--  0 buildbot (1000) buildbot (1000) 8388608 2026-09-24 21:39:18 ./mi124_f1e-jffs2
  +drwxr-xr-x 0 rebuilder (1000) rebuilder (1000) 0 2026-09-25 01:03:01 ./
  +-rw-r--r-- 0 rebuilder (1000) rebuilder (1000) 8388608 2026-09-25 01:03:01 ./mi124_f1e-jffs2
  +-rw-r--r-- 0 rebuilder (1000) rebuilder (1000) 3387 2026-09-25 01:03:01 ./vmlinux_mi124_f1e.lzma.uImage

zyxel-tar-bz2 archives the staging directory as it is, so owner, mtime
and the order of the members come from the build host.

Store the members as root with the mtime set to SOURCE_DATE_EPOCH and
without group or other write permission. List them explicitly, kernel
first, which is the order of the images built so far, instead of
sorting them by name.

Link: https://github.com/openwrt/openwrt/pull/25389
Signed-off-by: Paul Spooren &lt;mail@aparcar.org&gt;
</comment><date>2026-09-27 10:12:34 +0200</date><id>177bc19f275908572805e36d9e5debe8b32ef471</id><msg>ath79: make the ZyXEL NWA11xx factory tarball reproducible</msg><path><editType>edit</editType><file>target/linux/ath79/image/generic.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/apm821xx/image/Makefile</affectedPath><commitId>4092869bc87d62c6f67236f59c13e3b9a255cdbe</commitId><timestamp>1790497092000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/mail</absoluteUrl><fullName>mail</fullName></author><authorEmail>mail@aparcar.org</authorEmail><comment>sata: make the boot partition reproducible

The ext2 boot partition of the WD My Book Live images differs between
builds:

  -Linux rev 1.0 ext2 filesystem data, UUID=8474430c-7c37-4000-95a5-1d8f4f0607d1
  +Linux rev 1.0 ext2 filesystem data, UUID=4b8e89bb-aee0-4fde-971c-893df8d8fcd1
  -drwxr-xr-x   0     1000     1000        0 2026-09-23 08:27:40.000000 ./boot/
  +drwxr-xr-x   0     1000     1000        0 2026-09-23 10:17:28.000000 ./boot/

genext2fs copies owner, mode and mtime of the staged files from the host
and adds them in readdir() order, which also decides their inode numbers
and blocks. It leaves the UUID empty, so e2fsck fills in a random one,
and e2fsck stamps the last check with the current time.

Pass genext2fs a name sorted tarball with root ownership, group and
other write permission dropped and mtimes clamped to SOURCE_DATE_EPOCH,
derive the UUID from the file system contents and run e2fsck with
E2FSCK_TIME set to SOURCE_DATE_EPOCH. Remove the staging directory and
the tarball afterwards.

Link: https://github.com/openwrt/openwrt/pull/25357
Signed-off-by: Paul Spooren &lt;mail@aparcar.org&gt;
</comment><date>2026-09-27 10:18:12 +0200</date><id>4092869bc87d62c6f67236f59c13e3b9a255cdbe</id><msg>sata: make the boot partition reproducible</msg><path><editType>edit</editType><file>target/linux/apm821xx/image/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/bcm27xx/patches-6.18/0933-staging-vc04_services-vchiq-mmal-Bound-check-the-par.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0937-media-hevc_d-Improve-checking-and-cleanup-of-decoder.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0971-media-hevc_d-Do-not-reject-slice-header-with-bad-ref.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0958-usb-xhci-pci-Limit-VL805-DMA-address-to-40-bits.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0906-overlays-mcp2515-Cosmetic-tweaks.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0955-usb-storage-pick-better-defaults-for-max_sectors.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0542-usb-xhci-default-to-Intel-scheme-for-calculating-U1-.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0020-BCM2708-Add-core-Device-Tree-support.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0950-overlays-Add-gpclk-and-gpclk-pi5-overlays.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0953-ARM-dts-overlays-waveshare-dsi-Add-auto_detect-panel.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0655-DOWNSTREAM-drm-v3d-Delete-downstream-CLK-management.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0941-arm64-dts-broadcom-bcm2712-rpi.dtsi-add-light-DMAs.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0959-net-macb-Add-PHY-post-reset-settle-delay.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0970-media-rp1-cfe-Add-an-unbind-callback-to-tear-down-th.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0798-Revert-arm64-errata-Mitigate-TLBI-errata-on-various-.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0912-media-i2c-vd55g1-Add-support-for-vd65g4-RGB-variant.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0911-media-dt-bindings-vd55g1-Add-vd65g4-compatible.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0968-media-rp1-cfe-Release-the-vb2-queue-when-unregisteri.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0930-overlays-wm8960-soundcard-Add-media-parameter.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0922-dtoverlays-sdhost-Add-preserve_mmc-parameter.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0913-media-i2c-vd55g1-Fix-media-bus-code-initialization.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0509-mmc-sd-filter-card-CQ-support-based-on-an-allow-list.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0884-nvme-host-pci-Revert-to-upstream.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0905-dtoverlays-mcp2515-Add-spi6-support.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0926-gpiolib-Don-t-bypass-SRCU-when-CONFIG_LOCKDEP-is-ena.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0944-misc-rp1-pio-add-cyclic-DMA-support.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0936-bcm2835-i2s-fail-capture-open-cleanly-when-FIFO-clea.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0948-clk-Add-clk-hog-driver.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0957-drm-vc4-hdmi-Only-offer-even-channel-counts.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0969-media-rp1-cfe-Reset-the-video_device-before-re-regis.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0905-Post-Merge-Fixup-up-to-825dba6c63eeb40a62699d1f8a4aa.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0929-overlays-rt5616-Add-RT5616-audio-codec-overlay.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0940-dma-dw-axi-dmac-fix-cyclic-DMA.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0942-misc-rp1-pio-add-PIO_IOC_SM_CONFIG_XFER_V2.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0952-drm-panel-waveshare-Add-automatic-panel-detection-su.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0965-media-i2c-imx296-Add-strobe-outputs-controlled-by-mo.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0925-drm-vblank-do-not-halve-the-frame-duration-twice-for.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0923-dmaengine-dw-axi-dmac-Simplify-segmentation-calc-754.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0918-media-i2c-vd55g1-Fix-wrong-output-FPS-value.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0924-ASoC-dwc-Raise-sample-rate-limit-to-768kHz.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0915-media-i2c-vd55g1-Fix-manual-digital-gain-on-color-va.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0943-misc-rp1-pio-disable-SM-before-freeing-DMA.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0914-media-i2c-vd55g1-Remove-spurious-pad-format-update-o.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0951-usb-xhci-pci-Limit-VL805-DMA-address-to-37-bits.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0939-overlays-ed-backlight-pwm-Add-EDATEC-PWM-backlight-o.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0935-drm-vc4-hdmi-Don-t-write-past-the-end-of-a-packet-RA.patch</affectedPath><affectedPath>target/linux/generic/config-6.18</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0346-serial-sc16is7xx-Don-t-spin-if-no-data-received.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0954-DT-rp1-remove-dwc3-parkmode-disable-hs-quirk.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0956-ASoC-hdmi-codec-Always-allow-stereo-playback.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0947-overlays-Add-pwm-fan.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0927-media-bcm2835-unicam-Drop-setting-colorspace-when-in.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0916-media-dt-bindings-vd55g1-Add-vd55g4-compatible.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0934-staging-vc04_services-vc-sm-cma-Fix-fd-handling-when.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0917-media-i2c-vd55g1-Add-support-for-vd55g4.patch</affectedPath><affectedPath>target/linux/bcm27xx/patches-6.18/0945-staging-vc04_services-fix-pointer-arithmetic-in-crea.patch</affectedPath><commitId>bbab063e48bd0bafa2e732471c68dbf81cd36a0b</commitId><timestamp>1790497111000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>bcm27xx: update patches up to Git HEAD as of 2026-09-17

These patches were generated from:
https://github.com/raspberrypi/linux/commits/rpi-6.18.y
Patches were generated from the diff between linux kernel branch linux-6.18.y
and rpi-6.18.y from raspberry pi kernel source:

git format-patch -N linux-6.18.y..rpi-6.18.y (HEAD)
(HEAD -&gt; 4bb240615790ea5bd939484f4595b6952ac94ef4) as of 20260917
"Commit: media/hevc_d: Do not reject slice header with bad ref_idx entries"

Exceptions:
- github workflow patches
- applied and reverted patches
- README patches
- (def)configs
- patches merged upstream

Patches refreshed against current OpenWrt-kernel.

Previously, exporting patches from rpi-6.18.y via 'git format-patch' missed
content whenever the branch had merged commits from mainline, because
format-patch does not linearize merge history. The final patch in the series
(manual fixup-patch) restored that missing content (e.g.
mmc_card_working_sd_cq() in drivers/mmc/core/card.h) after each export.

This cycle, the patches touching the affected merge points were adjusted
around those points so that the full diff is captured directly by the
regular format-patch export - the content that the fixup-patch used to
reintroduce is now already present in the reworked series. A diff against
the upstream rpi-6.18.y tree confirms no delta remains, so the fixup is no
longer required and has been dropped.

Note: a normal 'quilt refresh' across the series still shifts hunk
offsets/context in unrelated patches as usual; that's expected housekeeping
and is unrelated to the merge-commit gap this fixup was compensating for.

Add the new CONFIG_CLK_HOG symbol, disabled by default, to
the generic config.

Fixes: https://github.com/openwrt/openwrt/issues/24951

Signed-off-by: Joshua Covington &lt;joshuacov@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25243
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-27 10:18:31 +0200</date><id>bbab063e48bd0bafa2e732471c68dbf81cd36a0b</id><msg>bcm27xx: update patches up to Git HEAD as of 2026-09-17</msg><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0952-drm-panel-waveshare-Add-automatic-panel-detection-su.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0937-media-hevc_d-Improve-checking-and-cleanup-of-decoder.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0959-net-macb-Add-PHY-post-reset-settle-delay.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0936-bcm2835-i2s-fail-capture-open-cleanly-when-FIFO-clea.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0945-staging-vc04_services-fix-pointer-arithmetic-in-crea.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0913-media-i2c-vd55g1-Fix-media-bus-code-initialization.patch</file></path><path><editType>edit</editType><file>target/linux/generic/config-6.18</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0943-misc-rp1-pio-disable-SM-before-freeing-DMA.patch</file></path><path><editType>edit</editType><file>target/linux/bcm27xx/patches-6.18/0509-mmc-sd-filter-card-CQ-support-based-on-an-allow-list.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0911-media-dt-bindings-vd55g1-Add-vd65g4-compatible.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0923-dmaengine-dw-axi-dmac-Simplify-segmentation-calc-754.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0948-clk-Add-clk-hog-driver.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0958-usb-xhci-pci-Limit-VL805-DMA-address-to-40-bits.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0955-usb-storage-pick-better-defaults-for-max_sectors.patch</file></path><path><editType>edit</editType><file>target/linux/bcm27xx/patches-6.18/0346-serial-sc16is7xx-Don-t-spin-if-no-data-received.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0906-overlays-mcp2515-Cosmetic-tweaks.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0914-media-i2c-vd55g1-Remove-spurious-pad-format-update-o.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0918-media-i2c-vd55g1-Fix-wrong-output-FPS-value.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0939-overlays-ed-backlight-pwm-Add-EDATEC-PWM-backlight-o.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0933-staging-vc04_services-vchiq-mmal-Bound-check-the-par.patch</file></path><path><editType>delete</editType><file>target/linux/bcm27xx/patches-6.18/0905-Post-Merge-Fixup-up-to-825dba6c63eeb40a62699d1f8a4aa.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0930-overlays-wm8960-soundcard-Add-media-parameter.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0927-media-bcm2835-unicam-Drop-setting-colorspace-when-in.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0926-gpiolib-Don-t-bypass-SRCU-when-CONFIG_LOCKDEP-is-ena.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0934-staging-vc04_services-vc-sm-cma-Fix-fd-handling-when.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0957-drm-vc4-hdmi-Only-offer-even-channel-counts.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0951-usb-xhci-pci-Limit-VL805-DMA-address-to-37-bits.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0954-DT-rp1-remove-dwc3-parkmode-disable-hs-quirk.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0970-media-rp1-cfe-Add-an-unbind-callback-to-tear-down-th.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0947-overlays-Add-pwm-fan.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0968-media-rp1-cfe-Release-the-vb2-queue-when-unregisteri.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0929-overlays-rt5616-Add-RT5616-audio-codec-overlay.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0942-misc-rp1-pio-add-PIO_IOC_SM_CONFIG_XFER_V2.patch</file></path><path><editType>edit</editType><file>target/linux/bcm27xx/patches-6.18/0884-nvme-host-pci-Revert-to-upstream.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0953-ARM-dts-overlays-waveshare-dsi-Add-auto_detect-panel.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0935-drm-vc4-hdmi-Don-t-write-past-the-end-of-a-packet-RA.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0916-media-dt-bindings-vd55g1-Add-vd55g4-compatible.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0917-media-i2c-vd55g1-Add-support-for-vd55g4.patch</file></path><path><editType>edit</editType><file>target/linux/bcm27xx/patches-6.18/0542-usb-xhci-default-to-Intel-scheme-for-calculating-U1-.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0971-media-hevc_d-Do-not-reject-slice-header-with-bad-ref.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0944-misc-rp1-pio-add-cyclic-DMA-support.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0940-dma-dw-axi-dmac-fix-cyclic-DMA.patch</file></path><path><editType>edit</editType><file>target/linux/bcm27xx/patches-6.18/0020-BCM2708-Add-core-Device-Tree-support.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0915-media-i2c-vd55g1-Fix-manual-digital-gain-on-color-va.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0925-drm-vblank-do-not-halve-the-frame-duration-twice-for.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0965-media-i2c-imx296-Add-strobe-outputs-controlled-by-mo.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0969-media-rp1-cfe-Reset-the-video_device-before-re-regis.patch</file></path><path><editType>edit</editType><file>target/linux/bcm27xx/patches-6.18/0655-DOWNSTREAM-drm-v3d-Delete-downstream-CLK-management.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0941-arm64-dts-broadcom-bcm2712-rpi.dtsi-add-light-DMAs.patch</file></path><path><editType>edit</editType><file>target/linux/bcm27xx/patches-6.18/0798-Revert-arm64-errata-Mitigate-TLBI-errata-on-various-.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0912-media-i2c-vd55g1-Add-support-for-vd65g4-RGB-variant.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0905-dtoverlays-mcp2515-Add-spi6-support.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0924-ASoC-dwc-Raise-sample-rate-limit-to-768kHz.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0950-overlays-Add-gpclk-and-gpclk-pi5-overlays.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0956-ASoC-hdmi-codec-Always-allow-stereo-playback.patch</file></path><path><editType>add</editType><file>target/linux/bcm27xx/patches-6.18/0922-dtoverlays-sdhost-Add-preserve_mmc-parameter.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/bcm27xx/modules/other.mk</affectedPath><commitId>3f50262abc28df67540b3c17ecea49d74f3b0d6f</commitId><timestamp>1790497111000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>bcm27xx: add kmod-clk-hog package

Package CONFIG_CLK_HOG as kmod-clk-hog. The gpclk and gpclk-pi5
overlays rely on this driver to keep a GPCLK output enabled with no
other consumer, so it needs to be selectable for those overlays to
actually work. Not selected by default; built only for images that
ask for it, or under CONFIG_ALL_KMODS.

Signed-off-by: Joshua Covington &lt;joshuacov@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25243
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-27 10:18:31 +0200</date><id>3f50262abc28df67540b3c17ecea49d74f3b0d6f</id><msg>bcm27xx: add kmod-clk-hog package</msg><path><editType>edit</editType><file>target/linux/bcm27xx/modules/other.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/utils/bcm27xx-utils/patches/1002-piolib-make-piolib-a-shared-library.patch</affectedPath><affectedPath>package/utils/bcm27xx-utils/patches/1001-rpifwcrypto-switch-from-GnuTLS-to-OpenSSL.patch</affectedPath><affectedPath>package/utils/bcm27xx-utils/Makefile</affectedPath><affectedPath>package/utils/bcm27xx-utils/patches/0001-raspinfo-adapt-to-OpenWrt.patch</affectedPath><affectedPath>package/utils/bcm27xx-utils/patches/1003-cmake-disable-splashasm.patch</affectedPath><commitId>afe0f08a6fc85d7c824691a9e6c432cb8ae2bca9</commitId><timestamp>1790497112000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>bcm27xx-utils: update to Git HEAD as of 2026.09.17

Update to Git HEAD as of 2026-09-17

Update patches:
- 0001-raspinfo-adapt-to-OpenWrt.patch: rebase, note vclog alongside
  vcdbg when neither is found
- 1001-rpifwcrypto-switch-from-GnuTLS-to-OpenSSL.patch: add proper
  commit message; update documentation where needed; fix hash_file()
  to bound the memcpy by the actual digest length instead of always
  copying SHA256_HASH_SIZE bytes
- 1002-piolib-make-piolib-a-shared-library.patch: add proper commit
  message and update documentation where needed
- Add 1003-cmake-disable-splashasm.patch: splashasm is not needed
  for the OpenWrt build at this time

Fixes: a296a5adf7a3 ("bcm27xx-utils: update to 20260621, add rpi-fw-crypto and piolib")

Signed-off-by: Joshua Covington &lt;joshuacov@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25243
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-27 10:18:32 +0200</date><id>afe0f08a6fc85d7c824691a9e6c432cb8ae2bca9</id><msg>bcm27xx-utils: update to Git HEAD as of 2026.09.17</msg><path><editType>edit</editType><file>package/utils/bcm27xx-utils/Makefile</file></path><path><editType>edit</editType><file>package/utils/bcm27xx-utils/patches/0001-raspinfo-adapt-to-OpenWrt.patch</file></path><path><editType>edit</editType><file>package/utils/bcm27xx-utils/patches/1001-rpifwcrypto-switch-from-GnuTLS-to-OpenSSL.patch</file></path><path><editType>edit</editType><file>package/utils/bcm27xx-utils/patches/1002-piolib-make-piolib-a-shared-library.patch</file></path><path><editType>add</editType><file>package/utils/bcm27xx-utils/patches/1003-cmake-disable-splashasm.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/kernel/bcm27xx-gpu-fw/Makefile</affectedPath><commitId>74d6a3a0a40ad5ecc6739eb9149d11fe62b463f0</commitId><timestamp>1790497112000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>bcm27xx-gpu-fw: update to 2026.09.15

Update to 2026-09-15

Signed-off-by: Joshua Covington &lt;joshuacov@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25243
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-27 10:18:32 +0200</date><id>74d6a3a0a40ad5ecc6739eb9149d11fe62b463f0</id><msg>bcm27xx-gpu-fw: update to 2026.09.15</msg><path><editType>edit</editType><file>package/kernel/bcm27xx-gpu-fw/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/bmips/patches-6.12/202-mips-bmips-tweak-Kconfig-options.patch</affectedPath><affectedPath>target/linux/bmips/bcm63268/config-6.12</affectedPath><affectedPath>target/linux/bmips/patches-6.12/700-leds-add-support-for-Sercomm-MSP430-LED-controller.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.12/602-pci-controllers-add-bcm6318-pcie-support.patch</affectedPath><affectedPath>target/linux/bmips/bcm6318/config-6.12</affectedPath><affectedPath>target/linux/bmips/patches-6.12/502-net-mdio-mux-bcm6368-allow-disabling.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.12/601-pci-controllers-add-bcm6328-pcie-support.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.12/110-net-dsa-b53-bcm531x5-fix-cpu-rgmii-mode-interpretation.patch</affectedPath><affectedPath>target/linux/bmips/bcm6362/config-6.12</affectedPath><affectedPath>target/linux/bmips/patches-6.12/501-net-broadcom-add-BCM6348-enet-controller-driver.patch</affectedPath><affectedPath>target/linux/bmips/bcm6358/config-6.12</affectedPath><affectedPath>target/linux/bmips/bcm6328/config-6.12</affectedPath><affectedPath>target/linux/bmips/patches-6.12/200-mips-bmips-automatically-detect-CPU-frequency.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.12/800-jffs2-work-around-unaligned-accesses-failing-on-bcm6.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.12/603-pci-controllers-add-bcm6348-pci-support.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.12/500-net-broadcom-add-BCM6368-enetsw-controller-driver.patch</affectedPath><affectedPath>target/linux/bmips/bcm6368/config-6.12</affectedPath><affectedPath>target/linux/bmips/patches-6.12/100-irqchip-add-support-for-bcm6345-style-external-inter.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.12/600-mips-bmips-add-pci-support.patch</affectedPath><affectedPath>target/linux/bmips/patches-6.12/201-mips-bmips-automatically-detect-RAM-size.patch</affectedPath><affectedPath>target/linux/bmips/Makefile</affectedPath><commitId>c54aabf4efa4d1b1db65870cfae618d812e53e53</commitId><timestamp>1790497373000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>bmips: drop v6.12 and default to 6.18

Switch the bmips target to kernel v6.18 and drop v6.12.

Signed-off-by: Andrew LaMarche &lt;andrewjlamarche@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25423
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-27 10:22:53 +0200</date><id>c54aabf4efa4d1b1db65870cfae618d812e53e53</id><msg>bmips: drop v6.12 and default to 6.18</msg><path><editType>edit</editType><file>target/linux/bmips/Makefile</file></path><path><editType>delete</editType><file>target/linux/bmips/patches-6.12/100-irqchip-add-support-for-bcm6345-style-external-inter.patch</file></path><path><editType>delete</editType><file>target/linux/bmips/bcm6328/config-6.12</file></path><path><editType>delete</editType><file>target/linux/bmips/patches-6.12/602-pci-controllers-add-bcm6318-pcie-support.patch</file></path><path><editType>delete</editType><file>target/linux/bmips/patches-6.12/200-mips-bmips-automatically-detect-CPU-frequency.patch</file></path><path><editType>delete</editType><file>target/linux/bmips/patches-6.12/601-pci-controllers-add-bcm6328-pcie-support.patch</file></path><path><editType>delete</editType><file>target/linux/bmips/patches-6.12/110-net-dsa-b53-bcm531x5-fix-cpu-rgmii-mode-interpretation.patch</file></path><path><editType>delete</editType><file>target/linux/bmips/patches-6.12/502-net-mdio-mux-bcm6368-allow-disabling.patch</file></path><path><editType>delete</editType><file>target/linux/bmips/patches-6.12/603-pci-controllers-add-bcm6348-pci-support.patch</file></path><path><editType>delete</editType><file>target/linux/bmips/patches-6.12/700-leds-add-support-for-Sercomm-MSP430-LED-controller.patch</file></path><path><editType>delete</editType><file>target/linux/bmips/bcm6358/config-6.12</file></path><path><editType>delete</editType><file>target/linux/bmips/bcm6318/config-6.12</file></path><path><editType>delete</editType><file>target/linux/bmips/patches-6.12/202-mips-bmips-tweak-Kconfig-options.patch</file></path><path><editType>delete</editType><file>target/linux/bmips/patches-6.12/501-net-broadcom-add-BCM6348-enet-controller-driver.patch</file></path><path><editType>delete</editType><file>target/linux/bmips/bcm6368/config-6.12</file></path><path><editType>delete</editType><file>target/linux/bmips/bcm63268/config-6.12</file></path><path><editType>delete</editType><file>target/linux/bmips/patches-6.12/201-mips-bmips-automatically-detect-RAM-size.patch</file></path><path><editType>delete</editType><file>target/linux/bmips/patches-6.12/800-jffs2-work-around-unaligned-accesses-failing-on-bcm6.patch</file></path><path><editType>delete</editType><file>target/linux/bmips/patches-6.12/500-net-broadcom-add-BCM6368-enetsw-controller-driver.patch</file></path><path><editType>delete</editType><file>target/linux/bmips/patches-6.12/600-mips-bmips-add-pci-support.patch</file></path><path><editType>delete</editType><file>target/linux/bmips/bcm6362/config-6.12</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/qualcommax/dts/ipq5018-archer-ax55-v1.dts</affectedPath><commitId>836734f67477b7ef26ad935db70a439fbfdf39b0</commitId><timestamp>1790497916000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>qualcommax: ax55-v1: use hex for switch address

Change the Realtek switch MDIO node unit address and reg property from
decimal (29) to hexadecimal (0x1d) to comply with standard Device Tree
coding conventions. This is a cosmetic fix and does not change the actual
hardware address.

Signed-off-by: Mieczyslaw Nalewaj &lt;namiltd@yahoo.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25382
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-27 10:31:56 +0200</date><id>836734f67477b7ef26ad935db70a439fbfdf39b0</id><msg>qualcommax: ax55-v1: use hex for switch address</msg><path><editType>edit</editType><file>target/linux/qualcommax/dts/ipq5018-archer-ax55-v1.dts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/boot/arm-trusted-firmware-mediatek/Makefile</affectedPath><affectedPath>package/boot/arm-trusted-firmware-mediatek/patches/0008-mediatek-spi-nand-add-DS35Q1GB-flash.patch</affectedPath><commitId>10030f85ff9d903dd236825ad90505ddf1789014</commitId><timestamp>1790497932000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>arm-trusted-firmware-mediatek: add DS35Q1GB flash

The DS35Q1GB is similar to the MX35LF1GE4AB, has issues accessing
the parameter page. The DS35Q1GA does not have this issue. So add
SPI-NAND ID for DS35Q1GB as a workaround.

Signed-off-by: Chukun Pan &lt;amadeus@jmu.edu.cn&gt;
Link: https://github.com/openwrt/openwrt/pull/24200
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-27 10:32:12 +0200</date><id>10030f85ff9d903dd236825ad90505ddf1789014</id><msg>arm-trusted-firmware-mediatek: add DS35Q1GB flash</msg><path><editType>add</editType><file>package/boot/arm-trusted-firmware-mediatek/patches/0008-mediatek-spi-nand-add-DS35Q1GB-flash.patch</file></path><path><editType>edit</editType><file>package/boot/arm-trusted-firmware-mediatek/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/boot/uboot-mediatek/patches/115-mtd-spinand-add-support-for-Dosilicon-DS35Q1GA.patch</affectedPath><affectedPath>package/boot/uboot-mediatek/patches/116-mtd-spinand-dosilicon-support-new-devices.patch</affectedPath><commitId>619fc0813de941ce36fb19d83cae7ab6e1246fce</commitId><timestamp>1790497932000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>uboot-mediatek: add Dosilicon spi-nand flash

Port the Dosilicon SPI-NAND flash driver from the kernel to U-Boot.

Signed-off-by: Chukun Pan &lt;amadeus@jmu.edu.cn&gt;
Link: https://github.com/openwrt/openwrt/pull/24200
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-27 10:32:12 +0200</date><id>619fc0813de941ce36fb19d83cae7ab6e1246fce</id><msg>uboot-mediatek: add Dosilicon spi-nand flash</msg><path><editType>add</editType><file>package/boot/uboot-mediatek/patches/116-mtd-spinand-dosilicon-support-new-devices.patch</file></path><path><editType>add</editType><file>package/boot/uboot-mediatek/patches/115-mtd-spinand-add-support-for-Dosilicon-DS35Q1GA.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/boot/uboot-tools/uboot-envtools/files/mediatek_filogic</affectedPath><affectedPath>package/boot/uboot-mediatek/patches/480-add-tplink-7dr72xx.patch</affectedPath><affectedPath>package/boot/uboot-mediatek/Makefile</affectedPath><commitId>dff4a9d049b32e6c37c793131b1bf7259a85fcc7</commitId><timestamp>1790497932000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>uboot-mediatek: add TP-Link TL-7DR7230/7250

Add custom U-Boot build for the following device:
- TP-Link TL-7DR7230 v1
- TP-Link TL-7DR7230 v2
- TP-Link TL-7DR7250 v1

Signed-off-by: Chukun Pan &lt;amadeus@jmu.edu.cn&gt;
Link: https://github.com/openwrt/openwrt/pull/24200
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-27 10:32:12 +0200</date><id>dff4a9d049b32e6c37c793131b1bf7259a85fcc7</id><msg>uboot-mediatek: add TP-Link TL-7DR7230/7250</msg><path><editType>edit</editType><file>package/boot/uboot-tools/uboot-envtools/files/mediatek_filogic</file></path><path><editType>edit</editType><file>package/boot/uboot-mediatek/Makefile</file></path><path><editType>add</editType><file>package/boot/uboot-mediatek/patches/480-add-tplink-7dr72xx.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/mediatek/patches-6.18/412-mtd-spinand-dosilicon-support-new-devices.patch</affectedPath><commitId>4dd69c754fededacaa4eb42deff107991a91fbce</commitId><timestamp>1790497933000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>mediatek: add Dosilicon DS35Q1GB-IB support

Add the DS35Q1GB flash driver from the Rockchip kernel.

Signed-off-by: Chukun Pan &lt;amadeus@jmu.edu.cn&gt;
Link: https://github.com/openwrt/openwrt/pull/24200
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-27 10:32:13 +0200</date><id>4dd69c754fededacaa4eb42deff107991a91fbce</id><msg>mediatek: add Dosilicon DS35Q1GB-IB support</msg><path><editType>add</editType><file>target/linux/mediatek/patches-6.18/412-mtd-spinand-dosilicon-support-new-devices.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/mediatek/dts/mt7988d-tplink-tl-7dr7230.dtsi</affectedPath><affectedPath>target/linux/mediatek/dts/mt7988d-tplink-tl-7dr7230-v1.dts</affectedPath><affectedPath>target/linux/mediatek/dts/mt7988d-tplink-tl-7dr72xx.dtsi</affectedPath><affectedPath>target/linux/mediatek/image/filogic.mk</affectedPath><affectedPath>target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh</affectedPath><affectedPath>target/linux/mediatek/dts/mt7988-tplink-tl-common.dtsi</affectedPath><affectedPath>target/linux/mediatek/filogic/base-files/etc/board.d/02_network</affectedPath><commitId>af8ba9b4263d330ac830cdac7334323a2c8d284a</commitId><timestamp>1790497933000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>mediatek: add TP-Link TL-7DR7230 v1 support

Hardware specification:
  SoC: MediaTek MT7988D 3x A73
  Flash: ESMT F50L1G41LB 128MB
  RAM: GDQ2BFAA-CJ DDR4 512MB
  Ethernet: 1x 2.5G Wan, 4x 1G Lan
  WiFi1: MT7975N 2.4GHz 4T4R
  WiFi2: MT7979N 5GHz 4T5R
  Button: Reset, WPS
  Power: DC 12V 2A

MAC addresses map:
   LAN 4C:xx:xx:xx:xx:A7
   WAN 4C:xx:xx:xx:xx:A8
   2G  4C:xx:xx:xx:xx:A7
   5G  4C:xx:xx:xx:xx:A9

Flash instructions:
  1. Update 7dr7230mv1-middleware.bin in vendor uboot

  2. Update factory.bin in the middleware firmware

  3. After openwrt boots up, install kmod-mtd-rw and
     execute: insmod mtd-rw i_want_a_brick=1

  4. Replace the stock bootloader to OpenWrt's:
     mtd write openwrt-mediatek-filogic-tplink_tl-7dr7230-v1-preloader.bin bl2
     mtd write openwrt-mediatek-filogic-tplink_tl-7dr7230-v1-bl31-uboot.fip fip

  5. Run the following command to remove the OEM UBI volume:
     ubirmvol /dev/ubi0 -N kernel
     ubirmvol /dev/ubi0 -N rootfs
     ubimkvol /dev/ubi0 -N ubootenv -s 1MiB
     ubimkvol /dev/ubi0 -N ubootenv2 -s 1MiB

  6. Upload sysupgrade.bin to perform the upgrade.

Signed-off-by: Chukun Pan &lt;amadeus@jmu.edu.cn&gt;
Link: https://github.com/openwrt/openwrt/pull/24200
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-27 10:32:13 +0200</date><id>af8ba9b4263d330ac830cdac7334323a2c8d284a</id><msg>mediatek: add TP-Link TL-7DR7230 v1 support</msg><path><editType>add</editType><file>target/linux/mediatek/dts/mt7988d-tplink-tl-7dr7230-v1.dts</file></path><path><editType>edit</editType><file>target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh</file></path><path><editType>edit</editType><file>target/linux/mediatek/filogic/base-files/etc/board.d/02_network</file></path><path><editType>edit</editType><file>target/linux/mediatek/image/filogic.mk</file></path><path><editType>add</editType><file>target/linux/mediatek/dts/mt7988d-tplink-tl-7dr7230.dtsi</file></path><path><editType>add</editType><file>target/linux/mediatek/dts/mt7988-tplink-tl-common.dtsi</file></path><path><editType>add</editType><file>target/linux/mediatek/dts/mt7988d-tplink-tl-7dr72xx.dtsi</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/mediatek/dts/mt7988d-tplink-tl-7dr7230-v2.dts</affectedPath><affectedPath>target/linux/mediatek/image/filogic.mk</affectedPath><commitId>820662d91773953947eac2bda34830272a015aff</commitId><timestamp>1790497933000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>mediatek: add TP-Link TL-7DR7230 v2 support

Hardware specification:
  SoC: MediaTek MT7988D 3x A73
  Flash: Dosilicon DS35Q1GB-IB 128MB
  RAM: Zentel A3T4GF40BBF DDR3 512MB
  Ethernet: 1x 2.5G Wan, 4x 1G Lan
  WiFi1: MT7975N 2.4GHz 4T4R
  WiFi2: MT7979N 5GHz 4T5R
  Button: Reset, WPS
  Power: DC 12V 2A

MAC addresses map:
   LAN 80:xx:xx:xx:19:FE
   WAN 80:xx:xx:xx:19:FF
   2G  80:xx:xx:xx:19:FE
   5G  80:xx:xx:xx:1A:00

Flash instructions:
  1. Connect to your PC via the Gigabit port of the router,
     set a static ip on the ethernet interface of your PC.
     (ip 192.168.1.254, gateway 192.168.1.1)

  2. Execute the following operation to open nc shell:
     https://forum.openwrt.org/t/tp-link-china-routers-rce-vuln

  3. Download the preloader.bin and uboot.fip, host them with
     the HTTP server: python3 -m http.server

  4. Replace the stock bootloader to OpenWrt's:
     ln -sf opt/game_acc/rootfs/bin/busybox wget &amp;&amp; cd tmp
     /wget http://192.168.1.254:8000/openwrt-mediatek-filogic-tplink_tl-7dr7230-v2-preloader.bin
     /wget http://192.168.1.254:8000/openwrt-mediatek-filogic-tplink_tl-7dr7230-v2-bl31-uboot.fip
     dd bs=131072 conv=sync of=/dev/mtdblock15 if=openwrt-mediatek-filogic-tplink_tl-7dr7230-v2-preloader.bin
     dd bs=131072 conv=sync of=/dev/mtdblock15 seek=44 if=openwrt-mediatek-filogic-tplink_tl-7dr7230-v2-bl31-uboot.fip

  5. Download the initramfs image, host it with the tftp server,
     and restart the router, waiting for tftp recovery to complete.

  6. After openwrt boots up, upload sysupgrade.bin to upgrade.

Signed-off-by: Chukun Pan &lt;amadeus@jmu.edu.cn&gt;
Link: https://github.com/openwrt/openwrt/pull/24200
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-27 10:32:13 +0200</date><id>820662d91773953947eac2bda34830272a015aff</id><msg>mediatek: add TP-Link TL-7DR7230 v2 support</msg><path><editType>edit</editType><file>target/linux/mediatek/image/filogic.mk</file></path><path><editType>add</editType><file>target/linux/mediatek/dts/mt7988d-tplink-tl-7dr7230-v2.dts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/mediatek/dts/mt7988d-tplink-tl-7dr7250-v1.dts</affectedPath><affectedPath>target/linux/mediatek/image/filogic.mk</affectedPath><affectedPath>target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh</affectedPath><affectedPath>target/linux/mediatek/filogic/base-files/etc/board.d/02_network</affectedPath><commitId>7e2bacd43fbe9cf8833be02e1ec3ae3fc4cb6352</commitId><timestamp>1790497934000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>mediatek: add TP-Link TL-7DR7250 v1 support

Hardware specification:
  SoC: MediaTek MT7988D 3x A73
  Flash: ESMT F50L1G41LB 128MB
  RAM: NT5AD256M16E4 DDR4 512MB
  Ethernet: 2x 2.5G + 2x 1G Lan
  WiFi1: MT7975N 2.4GHz 4T4R
  WiFi2: MT7979N 5GHz 4T5R
  Button: Reset, WPS
  Power: DC 12V 2A

MAC addresses map:
   LAN 4C:xx:xx:xx:xx:57
   WAN 4C:xx:xx:xx:xx:58
   2G  4C:xx:xx:xx:xx:57
   5G  4C:xx:xx:xx:xx:59

Flash instructions:
  1. Connect to your PC via the Gigabit port of the router,
     set a static ip on the ethernet interface of your PC.
     (ip 192.168.1.254, gateway 192.168.1.1)

  2. Execute the following operation to open nc shell:
     https://forum.openwrt.org/t/tp-link-china-routers-rce-vuln

  3. Download the preloader.bin and uboot.fip, host them with
     the HTTP server: python3 -m http.server

  4. Replace the stock bootloader to OpenWrt's:
     ln -sf opt/game_acc/rootfs/bin/busybox wget &amp;&amp; cd tmp
     /wget http://192.168.1.254:8000/openwrt-mediatek-filogic-tplink_tl-7dr7250-v1-preloader.bin
     /wget http://192.168.1.254:8000/openwrt-mediatek-filogic-tplink_tl-7dr7250-v1-bl31-uboot.fip
     dd bs=131072 conv=sync of=/dev/mtdblock15 if=openwrt-mediatek-filogic-tplink_tl-7dr7250-v1-preloader.bin
     dd bs=131072 conv=sync of=/dev/mtdblock15 seek=44 if=openwrt-mediatek-filogic-tplink_tl-7dr7250-v1-bl31-uboot.fip

  5. Download the initramfs image, host it with the tftp server,
     and restart the router, waiting for tftp recovery to complete.

  6. After openwrt boots up, upload sysupgrade.bin to upgrade.

Signed-off-by: Chukun Pan &lt;amadeus@jmu.edu.cn&gt;
Link: https://github.com/openwrt/openwrt/pull/24200
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-27 10:32:14 +0200</date><id>7e2bacd43fbe9cf8833be02e1ec3ae3fc4cb6352</id><msg>mediatek: add TP-Link TL-7DR7250 v1 support</msg><path><editType>edit</editType><file>target/linux/mediatek/image/filogic.mk</file></path><path><editType>add</editType><file>target/linux/mediatek/dts/mt7988d-tplink-tl-7dr7250-v1.dts</file></path><path><editType>edit</editType><file>target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh</file></path><path><editType>edit</editType><file>target/linux/mediatek/filogic/base-files/etc/board.d/02_network</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/qualcommax/dts/ipq5018-ax6000.dts</affectedPath><commitId>88d3c30f182601f9e63f59fe4888c2576928d7df</commitId><timestamp>1790498001000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>qualcommax: ipq5018-ax6000: set explicit NAND ECC strength/step-size

Some Xiaomi AX6000 (RA72) units use SPI-NAND with page size 2048 and
OOB size 128, requiring ECC strength 8 with step size 512 (matching
stock firmware). Without explicit ECC settings, the kernel defaults
to strength 4, causing UBI ECC errors and a boot loop after
sysupgrade to squashfs on affected units.

Signed-off-by: Sergey Dubow &lt;killerpelmeney@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/24959
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-27 10:33:21 +0200</date><id>88d3c30f182601f9e63f59fe4888c2576928d7df</id><msg>qualcommax: ipq5018-ax6000: set explicit NAND ECC strength/step-size</msg><path><editType>edit</editType><file>target/linux/qualcommax/dts/ipq5018-ax6000.dts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/qualcommax/dts/ipq5018-wrc-x3000gst2.dts</affectedPath><affectedPath>target/linux/qualcommax/dts/ipq5018-wrc-x3000gs2.dts</affectedPath><affectedPath>target/linux/qualcommax/dts/ipq5018-wrc-x3000.dtsi</affectedPath><commitId>e5c3f4569de572e7fee27158a19c3d33014012a4</commitId><timestamp>1790498058000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>qualcommax: create a shared dtsi for ELECOM WRC-X3000GS(T)2

Create a shared dtsi for ELECOM WRC-X3000GS2 and WRC-X3000GST2.
They have the almost identical hardware, except for memory (256M vs.
512M).

Additionally, disable "q6_region" in reserved-memory of WRC-X3000GS2.
This was disabled before, but accidentally activated by 1f879b88398b
("qualcommax: ipq50xx: split firmware variants and refactor QCN6122
support").

Signed-off-by: INAGAKI Hiroshi &lt;musashino.open@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/24937
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-27 10:34:18 +0200</date><id>e5c3f4569de572e7fee27158a19c3d33014012a4</id><msg>qualcommax: create a shared dtsi for ELECOM WRC-X3000GS(T)2</msg><path><editType>add</editType><file>target/linux/qualcommax/dts/ipq5018-wrc-x3000.dtsi</file></path><path><editType>edit</editType><file>target/linux/qualcommax/dts/ipq5018-wrc-x3000gst2.dts</file></path><path><editType>edit</editType><file>target/linux/qualcommax/dts/ipq5018-wrc-x3000gs2.dts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/generic/backport-6.18/438-v7.3-mtd-spinand-Do-not-update-the-QE-bit-on-devices-without-one.patch</affectedPath><commitId>d42c59d039555f6d68e68dc3ff6731d9650603e8</commitId><timestamp>1790498143000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>generic: 6.18: backport SPI-NAND QE bit fix

Backport upstream commit 1c1a342aceec ("mtd: spinand: Do not update
the QE bit on devices without one") to OpenWrt's Linux 6.18 series.

On the Winbond W25N02KV, configuration register bit 0 is H-DIS, not
a QE bit. Clearing it can enable HOLD and cause flash commands to stall.
On the JioRouter JIDU6401, this caused sysupgrade failures and a
subsequent warm reboot hang in BL2.

Upstream commit:
https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git/commit/?id=1c1a342aceec79528b3ba51f376eca2be5928fe7

Validation:
- Patch prepared and refreshed against OpenWrt Linux 6.18.52.
- `target/linux/compile` passed for mediatek/filogic.
- The upstream patch reports successful sysupgrade and warm reboot on
  JioRouter JIDU6401 with W25N02KV.

Signed-off-by: Sagnik Sasmal &lt;sagnik@sagnik.me&gt;
Link: https://github.com/openwrt/openwrt/pull/25428
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-27 10:35:43 +0200</date><id>d42c59d039555f6d68e68dc3ff6731d9650603e8</id><msg>generic: 6.18: backport SPI-NAND QE bit fix</msg><path><editType>add</editType><file>target/linux/generic/backport-6.18/438-v7.3-mtd-spinand-Do-not-update-the-QE-bit-on-devices-without-one.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/firmware/ipq-wifi/Makefile</affectedPath><commitId>ca3701cb149c261a56cbcbba1fd81b02cc6bba1d</commitId><timestamp>1790498626000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>ipq-wifi: update to Git HEAD (2026-09-27)

3d9c15abc376 ipq5018: add TP-Link EAP650-Outdoor-v1

Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-27 10:43:46 +0200</date><id>ca3701cb149c261a56cbcbba1fd81b02cc6bba1d</id><msg>ipq-wifi: update to Git HEAD (2026-09-27)</msg><path><editType>edit</editType><file>package/firmware/ipq-wifi/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/qualcommax/ipq50xx/base-files/etc/hotplug.d/firmware/11-ath11k-caldata</affectedPath><affectedPath>target/linux/qualcommax/ipq50xx/base-files/lib/preinit/09_mount_factory_data</affectedPath><affectedPath>target/linux/qualcommax/ipq50xx/base-files/etc/board.d/02_network</affectedPath><affectedPath>target/linux/qualcommax/ipq50xx/base-files/lib/upgrade/platform.sh</affectedPath><affectedPath>package/firmware/ipq-wifi/Makefile</affectedPath><affectedPath>target/linux/qualcommax/dts/ipq5018-eap650-outdoor-v1.dts</affectedPath><affectedPath>target/linux/qualcommax/image/ipq50xx.mk</affectedPath><affectedPath>package/boot/uboot-tools/uboot-envtools/files/qualcommax_ipq50xx</affectedPath><commitId>c4543e374d291b3d2c711ae02e5dbe8e168e1825</commitId><timestamp>1790498648000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>qualcommax: ipq50xx: add support for TP-Link EAP650-Outdoor-v1

TP-Link EAP650-Outdoor is a 802.11ax AP claiming AX3000 support. It is
wall or pole mountable, and rated for outdoor use. It can only be
powered via PoE.

Specifications:
---------------
* CPU: Qualcomm IPQ5018 Dual core Cortex-A53
* RAM: 512 MB
* Storage: 128MB NAND GigaDevice F50D1G41LB-83YIG2M
* Ethernet: 1x Gigabit RJ45 port with PoE input
* 2.4GHz: IPQ5018 802.11b/g/n/ax (2x 4dBi)
* 5GHz: QCN6024 802.11n/ac/ax (2x 5dBi)
* LEDs: 1x Status LED (Green/Yellow)
* Buttons: 1x Reset
* UART: 4-pin unpopulated header
  TX RX GND VCC - JP2 (3.3V, 115200/8)

MAC addresses:

LAN     : B0:19:21:xx:xx:02
2.4GHz  : B0:19:21:xx:xx:02
5GHz    : B0:19:21:xx:xx:03

The procedures to 'backup your stock firmware' and 'stock firmware recovery'
described in the commit "qualcommax: ipq50xx: Add support for Yuncore AX850"
are equivalent for this device.
https://git.openwrt.org/openwrt/openwrt/commit/?id=5d2994a73e20ba840d3096e1ad52add6937fe86d

Installation:
=============

TFTP method
-----------

To flash via tftp, first place the initramfs image on the TFTP server.

    setenv serverip &lt;ip of tftp server&gt;
    setenv ipaddr &lt;ip in same subnet as tftp server&gt;
    tftpboot tplink_eap650-outdoor-v1-initramfs-uImage.itb
    bootm

This should boot OpenWRT. Once booted, flash the sysupgrade.bin image
using either luci or the commandline.

Signed-off-by: Samuele Longhi &lt;agave@dracaena.it&gt;
Link: https://github.com/openwrt/openwrt/pull/23056
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-27 10:44:08 +0200</date><id>c4543e374d291b3d2c711ae02e5dbe8e168e1825</id><msg>qualcommax: ipq50xx: add support for TP-Link EAP650-Outdoor-v1</msg><path><editType>edit</editType><file>target/linux/qualcommax/ipq50xx/base-files/etc/hotplug.d/firmware/11-ath11k-caldata</file></path><path><editType>add</editType><file>target/linux/qualcommax/ipq50xx/base-files/lib/preinit/09_mount_factory_data</file></path><path><editType>edit</editType><file>target/linux/qualcommax/image/ipq50xx.mk</file></path><path><editType>add</editType><file>target/linux/qualcommax/dts/ipq5018-eap650-outdoor-v1.dts</file></path><path><editType>edit</editType><file>package/boot/uboot-tools/uboot-envtools/files/qualcommax_ipq50xx</file></path><path><editType>edit</editType><file>target/linux/qualcommax/ipq50xx/base-files/etc/board.d/02_network</file></path><path><editType>edit</editType><file>package/firmware/ipq-wifi/Makefile</file></path><path><editType>edit</editType><file>target/linux/qualcommax/ipq50xx/base-files/lib/upgrade/platform.sh</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/qualcommax/ipq50xx/base-files/etc/board.d/02_network</affectedPath><affectedPath>target/linux/qualcommax/ipq50xx/base-files/lib/upgrade/platform.sh</affectedPath><affectedPath>target/linux/qualcommax/ipq50xx/base-files/etc/board.d/01_leds</affectedPath><affectedPath>target/linux/qualcommax/dts/ipq5018-rax3000q.dts</affectedPath><affectedPath>target/linux/qualcommax/image/ipq50xx.mk</affectedPath><affectedPath>package/boot/uboot-tools/uboot-envtools/files/qualcommax_ipq50xx</affectedPath><commitId>d592680cc501cd7decdffb50b80c964d128c22ef</commitId><timestamp>1790499491000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>qualcommax: ipq50xx: add support for CMCC RAX3000Q/QY

Add support for the CMCC RAX3000Q/QY platform based on Qualcomm IPQ5000.
Both hardware variants are identical and share the same device tree.

Hardware Specifications:
- SoC: Qualcomm IPQ5000
- RAM: 256 MiB, integrated in SoC
- Flash: GigaDevice GD5F1GQ5REYIG (Dosilicon variant is not supported)
- 2.4 GHz Wi-Fi: SoC integrated, with 2 FEMs
- 5 GHz Wi-Fi: QCN6102, with 2 FEMs
- Switch: QCA8337, 1 WAN + 3 LAN
- LEDs: 3 RGB LEDs
- Keys: reset and mesh pairing
- UART: 3-pin, 115200n8

The vendor flash layout is documented and the ART partition contains
calibration data, which must be preserved carefully.

Due to the limited 256 MiB RAM, ath11k is disabled in the DTS to avoid
OOM issues on this device.

The MAC address location in flash could not be identified reliably.
As a temporary workaround, the MAC addresses (WAN LAN 2.4G 5G WiFi) are derived from the ART
partition start, with vendor/default values being invalid and falling
back to random generation if left unchanged (FF).

Flash Guide
Requirements

- UART access (3-pin, 115200n8)
- Ethernet cable
- TFTP server running on your computer
- OpenWrt `.ubi` firmware image

Step 0: Backup all partitions (strongly recommended)
Step 1: Connect UART and interrupt U-Boot
Step 2: Configure PC network
Step 3: Start TFTP server
Step 4: Load firmware via U-Boot
    tftpboot 192.168.10.19:&lt;your_firmware&gt;.ubi

Step 5: Flash firmware
    flash rootfs

Step 6: Reboot device
    reset

Signed-off-by: Mark Jia &lt;mark304188@hotmail.com&gt;
</comment><date>2026-09-27 10:58:11 +0200</date><id>d592680cc501cd7decdffb50b80c964d128c22ef</id><msg>qualcommax: ipq50xx: add support for CMCC RAX3000Q/QY</msg><path><editType>edit</editType><file>target/linux/qualcommax/image/ipq50xx.mk</file></path><path><editType>edit</editType><file>target/linux/qualcommax/ipq50xx/base-files/etc/board.d/02_network</file></path><path><editType>edit</editType><file>target/linux/qualcommax/ipq50xx/base-files/etc/board.d/01_leds</file></path><path><editType>edit</editType><file>target/linux/qualcommax/ipq50xx/base-files/lib/upgrade/platform.sh</file></path><path><editType>edit</editType><file>package/boot/uboot-tools/uboot-envtools/files/qualcommax_ipq50xx</file></path><path><editType>add</editType><file>target/linux/qualcommax/dts/ipq5018-rax3000q.dts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/boot/uboot-mediatek/patches/110-mtd-spinand-fmsh-add-support-for-FM25G02B.patch</affectedPath><commitId>72f1965140672a2db2a941c3d626c0bb79d6fb1e</commitId><timestamp>1790500355000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>uboot-mediatek: add FudanMicro FM25G02B SPI-NAND support

The chip ships on Keenetic KN-1012 units and is not in the fmsh table,
so U-Boot finds no flash at all. Add the ID and geometry, along with the
ECC status decode its 3-bit status field needs and a read-cache list
whose quad-I/O read takes a single dummy byte.

The driver change is ported from Linux commits d5a5c9eb2ee9 ("mtd:
spinand: fmsh: add support for FM25G{01,02}B") and 8211f2d74b35 ("mtd:
spinand: fmsh: fix FM25G01B/FM25G02B Quad I/O read dummy cycles").
Only the FM25G02B entry is carried, the part in hand; the identifiers
keep upstream's FM25G01B names so that the file stays textually in step
with Linux.

Assisted-by: LLM
Signed-off-by: Aleksei Sviridkin &lt;f@lex.la&gt;
Link: https://github.com/openwrt/openwrt/pull/24820
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-27 11:12:35 +0200</date><id>72f1965140672a2db2a941c3d626c0bb79d6fb1e</id><msg>uboot-mediatek: add FudanMicro FM25G02B SPI-NAND support</msg><path><editType>add</editType><file>package/boot/uboot-mediatek/patches/110-mtd-spinand-fmsh-add-support-for-FM25G02B.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/boot/uboot-mediatek/patches/112-nmbm-add-Kconfig-entries-for-ENABLE_NAND_NMBM.patch</affectedPath><affectedPath>package/boot/uboot-mediatek/patches/409-arm-mediatek-allow-a-board-to-carry-the-arm64-kernel-image-header.patch</affectedPath><affectedPath>package/boot/uboot-mediatek/Makefile</affectedPath><affectedPath>package/boot/uboot-mediatek/patches/504-add-keenetic_kn-1012.patch</affectedPath><commitId>99e87a79312505ca9a15a469332c74b5423a50f2</commitId><timestamp>1790500355000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>uboot-mediatek: add Keenetic KN-1012 chainload build

The stock bootloader stays in place, so U-Boot is packaged as the
payload it accepts as a kernel and chainloaded from it.
It brings up NAND through NMBM, reads the kernel FIT from flash and
applies the device tree overlay matching the media present in the combo
port, so a single image serves both the copper PHY and the SFP cage. The
media is sensed on pio 23, the cage's mod-def0, which a seated module
pulls low. The environment tests it with "if gpio input 23", and that
reads as true for a low pin: gpio input returns the pin level as its
exit status.

The SPI-NAND is driven four-bit. The stock loader, shipped in the vendor
SDK as target/linux/mt7981/KN-1012/boot.bin, embeds an FDT whose
spi_nand@0 reads

	spi-max-frequency = &lt;0x3197500&gt;;
	spi-rx-bus-width = &lt;0x04&gt;;
	spi-tx-bus-width = &lt;0x04&gt;;

on the same spi@1100a000 declaring support_quad, tick_dly = &lt;2&gt; and
sample_sel = &lt;0&gt;; MediaTek's own mt7981-rfb device tree carries the
identical pair at the identical 52 MHz. Without the two properties
spi-uclass defaults the slave to one lane and the SPI-NAND core silently
picks the single-bit read variant. The tx width also selects the
four-lane program op, which this build reaches only when NMBM has to
create its management table; the stock loader programs this part
four-bit already.

The same build serves the Keenetic and the Netcraze variant of the
board. The board support commits add a device profile for each brand,
and the two profiles produce differently named images, so the TFTP
recovery loop asks for each name in turn: the board has no populated
console to correct the name from. A single brand-neutral name was
rejected because it would match no built artifact, which breaks the
default tftpboot for both variants rather than for one. The U-Boot
device tree names the board Keenetic KN-1012 for both: the hardware is
the same and the build does not read the brand from flash.

The Kconfig entries the build relies on come as separate patches, and
both stay local: the NMBM symbols belong to the NMBM code this tree
carries, and a MediaTek bool that selects the kernel image header, with
the generic text offset base redeclared under it so the defconfig can
set it, was declined upstream. U-Boot wants a board there instead, and
this board cannot load its OS from upstream U-Boot without NMBM.

The kernel image header carries a text_offset of 0x80000: the stock
kernel FIT loads at 0x48080000, 0x80000 above the 2 MiB base the loader
works from, and the chainloader mirrors that placement. A zero offset,
which TEXT_BASE alone would give, has not been tried on this loader.

Assisted-by: LLM
Signed-off-by: Aleksei Sviridkin &lt;f@lex.la&gt;
Link: https://github.com/openwrt/openwrt/pull/24820
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-27 11:12:35 +0200</date><id>99e87a79312505ca9a15a469332c74b5423a50f2</id><msg>uboot-mediatek: add Keenetic KN-1012 chainload build</msg><path><editType>edit</editType><file>package/boot/uboot-mediatek/Makefile</file></path><path><editType>add</editType><file>package/boot/uboot-mediatek/patches/409-arm-mediatek-allow-a-board-to-carry-the-arm64-kernel-image-header.patch</file></path><path><editType>add</editType><file>package/boot/uboot-mediatek/patches/504-add-keenetic_kn-1012.patch</file></path><path><editType>add</editType><file>package/boot/uboot-mediatek/patches/112-nmbm-add-Kconfig-entries-for-ENABLE_NAND_NMBM.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac</affectedPath><affectedPath>target/linux/mediatek/dts/mt7981b-keenetic-kn-1012-copper.dtso</affectedPath><affectedPath>target/linux/mediatek/dts/mt7981b-keenetic-kn-1012-sfp.dtso</affectedPath><affectedPath>target/linux/mediatek/dts/mt7981b-keenetic-kn-1012.dts</affectedPath><affectedPath>target/linux/mediatek/dts/mt7981b-keenetic-kn-1012.dtsi</affectedPath><affectedPath>target/linux/mediatek/filogic/base-files/etc/board.d/01_leds</affectedPath><affectedPath>target/linux/mediatek/image/filogic.mk</affectedPath><commitId>87d7b11bd5b422e6e6b6b43dde137d75460ac15a</commitId><timestamp>1790500356000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>mediatek: filogic: add support for Keenetic KN-1012

Keenetic KN-1012 is a 2.4/5 GHz band 11ax (Wi-Fi 6) router with a
combo SFP/copper port, based on MT7981B.

The copper side of the combo port does not come up on this tree yet. It
needs the pending phylink change that defers the PHY attach for PHYs
marked needs-host-firmware until their driver has bound,
https://lore.kernel.org/r/20260914211137.2760618-1-f@lex.la/, and that
property on the PHY node, which goes in together with the change.
Everything else on the board, the SFP side of the same port included,
works without them.

Specification:

- SoC             : MediaTek MT7981B
- RAM             : 512 MiB
- Flash           : SPI-NAND 256 MiB (chip varies by production run,
                    Fudan Micro FM25G02B seen)
- WLAN            : 2.4/5 GHz 2T2R (MediaTek MT7981B (SoC))
- Ethernet        : 4x 10/100/1000 Mbps + 1x combo port
  - switch        : MediaTek MT7531
  - combo port    : SFP cage and an Airoha EN8811H 2.5G copper PHY
                    share one SerDes, selected by a GPIO mux
- USB             : USB 2.0 through a GL850G-OHY60 hub, two switchable
                    power rails
- LEDs/Keys (GPIO): 6x/4x
- UART            : through-hole on PCB (J500), unconfirmed
  - assignment    : 5V, TX, RX, NC, GND
  - settings      : 115200n8
- Power           : 12 VDC, 2.5 A, center positive

The vendor bootloader stays in place, so U-Boot is chainloaded from it
as the payload it accepts as a kernel. It reads the GPIO reporting
whether an SFP module is present and boots the device tree matching the
medium, so one image serves both the copper PHY and the SFP cage. The
chainloader itself is wrapped into a FIT shaped like the vendor kernel
image, kernel@1 / fdt@1 / config@1 with the "Linux 4.9" description,
because the stock loader accepted a payload generated by mkits.sh with
its default node names and descriptions but never ran it. Both vendor
firmware slots (firmware_1, storage_a, firmware_2, storage_b) are
concatenated into one virtual flash, its first 8 MiB the kernel
partition and the rest UBI, so the second slot no longer holds a vendor-
bootable image; u-state stays read-only. The factory image is bounded to
the first firmware slot, where the stock recovery writes it; whether the
recovery writes past that slot is untested.

Flash instruction using the vendor recovery mode:

1. Connect the TFTP host to one of the LAN ports, address 192.168.1.2
2. Rename the factory image to "KN-1012_recovery.bin" and put it in
   the TFTP directory
3. Power off the device, hold the "Reset" button, power it on and keep
   the button held for ~10 seconds
4. The bootloader downloads the image over TFTP and writes it to flash
5. Wait for the device to reboot, it comes up on 192.168.1.1

Reverting to stock image:

1. Download the official recovery package for the model and take the
   .bin image out of it
2. Follow the same steps as above with that image in place of the
   OpenWrt one

MAC addresses:

  use   source
  LAN   rf-eeprom 0x4
  WAN   rf-eeprom 0xa, also the address on the label
  2g    rf-eeprom 0x4, the first MAC slot of the WiFi EEPROM
  5g    rf-eeprom 0x4 with the locally administered bit set and bit 7
        flipped

Left alone, mt76 would read the second EEPROM slot at 0xa for phy1
and collide with the WAN address, so the board joins the Keenetic
family entry in 11_fix_wifi_mac, which derives phy1 from the 0x4 slot
the way mt76 would on its own: LA bit set, bit 7 flipped.

The P and N of the SerDes lane from the switch to the EN8811H are
swapped on this board, like on the BPI-R3 mini, so the copper PHY node
sets rx-polarity to PHY_POL_INVERT, the current form of the
airoha,pnswap-rx property the BPI-R3 mini still carries. Without it the
copper side links up at any speed but transmits nothing, while receive
works.

The copper PHY's INTB is on pio 0 and the PHY node declares it; the
vendor tree hangs the same line on the switch node and calls it level
low. This uses edge falling, as the BPI-R3 mini does for its EN8811H
PHYs. On this tree the line is not used yet: phylib sets phydev-&gt;irq to
PHY_POLL when the port attaches the PHY with the generic driver still
bound at switch probe, and nothing restores it when the EN8811H driver
binds later. With the phylink change named at the top and the phylib
change that keeps the interrupt across the driver swap,
https://lore.kernel.org/r/20260919015326.499479-1-f@lex.la/, forced
renegotiations on this board delivered the link-down and link-up events
over INTB and left no interrupt unhandled.

The copper port stays down on this tree because the switch attaches the
PHY at probe, before the EN8811H driver can load its firmware from the
root filesystem, and phylink refuses 2500base-x against the generic
driver, so DSA drops the port. The copper results above were taken with
the phylink change named at the top applied; SFP, lan1 to lan3, WAN and
wifi do not depend on it. The SFP side was booted with a DAC in the
cage: the loader picked the SFP configuration, the module EEPROM read
over I2C, lan4 came up over the cage without the PHY race and the cage's
indicator LED lit; on copper that LED stays off. Link and traffic over
the SFP path stand on the earlier two-tree form of the image, 1 Gbit/s
against a 1 Gbit/s partner, with the module pulled bringing the board
back on copper.

The board support (pin map, SFP node, copper PHY description, image
recipe parameters and LED assignments) is based on the out-of-tree port
by Maxim Anisimov, branch main_keenetic_kn1012 of Linaro1985/openwrt.
The chainloader and the U-Boot side are new relative to that port, as
is the split into a shared dtsi with a device tree overlay per medium,
which the chainloader applies.

Assisted-by: LLM
Signed-off-by: Aleksei Sviridkin &lt;f@lex.la&gt;
Link: https://github.com/openwrt/openwrt/pull/24820
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-27 11:12:36 +0200</date><id>87d7b11bd5b422e6e6b6b43dde137d75460ac15a</id><msg>mediatek: filogic: add support for Keenetic KN-1012</msg><path><editType>edit</editType><file>target/linux/mediatek/filogic/base-files/etc/board.d/01_leds</file></path><path><editType>edit</editType><file>target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac</file></path><path><editType>add</editType><file>target/linux/mediatek/dts/mt7981b-keenetic-kn-1012.dtsi</file></path><path><editType>add</editType><file>target/linux/mediatek/dts/mt7981b-keenetic-kn-1012-copper.dtso</file></path><path><editType>add</editType><file>target/linux/mediatek/dts/mt7981b-keenetic-kn-1012-sfp.dtso</file></path><path><editType>edit</editType><file>target/linux/mediatek/image/filogic.mk</file></path><path><editType>add</editType><file>target/linux/mediatek/dts/mt7981b-keenetic-kn-1012.dts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/mediatek/filogic/base-files/etc/board.d/01_leds</affectedPath><affectedPath>target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac</affectedPath><affectedPath>target/linux/mediatek/dts/mt7981b-netcraze-nc-1012.dts</affectedPath><affectedPath>target/linux/mediatek/image/filogic.mk</affectedPath><commitId>492a0ff6b13aead1dc2a54def9160cc38550c032</commitId><timestamp>1790500356000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>mediatek: filogic: add support for Netcraze NC-1012

The Netcraze NC-1012 is a rebrand of the Keenetic KN-1012 with identical
hardware. The stock recovery accepts only images signed with the NC-1012
zyimage device id, taken here from the official NC-1012 recovery image.

It shares the KN-1012 device tree through the common dtsi and the copper
and SFP overlays, and the image recipe through the common device define,
following the KN-3411/NC-3411 pattern. The recovery procedure is the
KN-1012 one with the image named NC-1012_recovery.bin.

Assisted-by: LLM
Signed-off-by: Aleksei Sviridkin &lt;f@lex.la&gt;
Link: https://github.com/openwrt/openwrt/pull/24820
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-27 11:12:36 +0200</date><id>492a0ff6b13aead1dc2a54def9160cc38550c032</id><msg>mediatek: filogic: add support for Netcraze NC-1012</msg><path><editType>edit</editType><file>target/linux/mediatek/image/filogic.mk</file></path><path><editType>add</editType><file>target/linux/mediatek/dts/mt7981b-netcraze-nc-1012.dts</file></path><path><editType>edit</editType><file>target/linux/mediatek/filogic/base-files/etc/board.d/01_leds</file></path><path><editType>edit</editType><file>target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/firmware/ipq-wifi/Makefile</affectedPath><commitId>6e7bccd2a38a63c4f4925492449e826438bf8037</commitId><timestamp>1790500662000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>ipq-wifi: update to Git HEAD (2026-09-27)

a215395b9338 ipq5018: add BDF for GL.iNet GL-X2000
7b66ac970c91 qcn6122: add BDF for GL.iNet GL-X2000
3eba07d9b5c9 ipq5018: add AVM FRITZ!Box 4050 BDFs

Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-27 11:17:42 +0200</date><id>6e7bccd2a38a63c4f4925492449e826438bf8037</id><msg>ipq-wifi: update to Git HEAD (2026-09-27)</msg><path><editType>edit</editType><file>package/firmware/ipq-wifi/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/boot/uboot-tools/Makefile</affectedPath><affectedPath>package/boot/uboot-tools/uboot-envtools/files/qualcommbe_ipq95xx</affectedPath><commitId>6fb5b53af27e03abe80abeacc346a733bb6deb86</commitId><timestamp>1790501300000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>uboot-envtools: add Linksys LN6001 support

Map the existing 256 KiB u_env eMMC partition for the Linksys LN6001.
This lets the device upgrade path read and update the existing boot-slot
environment through fw_printenv and fw_setenv.

Increment the package release for the functional board-map addition.

Signed-off-by: Satoshi Ikeuchi &lt;satosan.ikm@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/24736
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-27 11:28:20 +0200</date><id>6fb5b53af27e03abe80abeacc346a733bb6deb86</id><msg>uboot-envtools: add Linksys LN6001 support</msg><path><editType>edit</editType><file>package/boot/uboot-tools/uboot-envtools/files/qualcommbe_ipq95xx</file></path><path><editType>edit</editType><file>package/boot/uboot-tools/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/qualcommbe/dts/ipq9554-linksys-ln6001.dts</affectedPath><affectedPath>target/linux/qualcommbe/ipq95xx/base-files/lib/upgrade/platform.sh</affectedPath><affectedPath>target/linux/qualcommbe/image/ipq95xx.mk</affectedPath><affectedPath>target/linux/qualcommbe/config-6.18</affectedPath><affectedPath>target/linux/qualcommbe/ipq95xx/base-files/etc/board.d/02_network</affectedPath><affectedPath>target/linux/qualcommbe/ipq95xx/base-files/etc/init.d/bootcount</affectedPath><affectedPath>target/linux/qualcommbe/ipq95xx/base-files/lib/upgrade/ln6001.sh</affectedPath><commitId>614d968227780f497164538234531d62bcb587f7</commitId><timestamp>1790501300000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>qualcommbe: add Linksys LN6001 support

Add wired support and an eMMC A/B sysupgrade path for the Linksys LN6001.
Write and verify the inactive kernel/rootfs pair before changing the boot
selectors. Confirm an installed boot by clearing the s_env boot counter
and updating its checksum.

Identify the board as IPQ9554, using the shared ipq9574.dtsi and family
fallback compatible. Disable the absent UNIPHY1 block and provide the
board clocks required by eMMC, MDIO and PWM. Let U-Boot populate memory
size, use the default GPIO-key debounce and allow 10 ms for QCA8081 reset
assertion while retaining the 150 ms deassertion delay. Use decimal 28
for the QCA8081 PHY address. The assertion delay follows the QCA8081
precedent in 904aa4386548.

Return to common upgrade cleanup and reboot after safe staging failures,
while stopping on uncertain boot selector state.

Hardware specification:

- SoC: Qualcomm IPQ9554
- RAM: 1 GiB DDR4
- Flash: 8 GB Samsung 8GTF4R eMMC
- Ethernet: four 1 GbE LAN ports through QCA8075 over PSGMII
- Ethernet: one 2.5 GbE WAN port through QCA8081
- LEDs: red, green, blue and white PWM status channels
- Buttons: reset and WPS GPIO keys
- UART: 115200 8N1
- Power: 12 V, 2.5 A
- Wireless and Bluetooth: not enabled

Installation:

The initial installation uses serial access and an OpenWrt RAM boot.
Keep a bootable stock slot and start with that slot selected. The updater
accepts only the observed retail GPT geometry, matching bootconfig copies,
boot_part_ready=3, auto_recovery=yes and matching Wi-Fi firmware slots.
It does not repair an inconsistent layout or selector state.

Copy this image to the TFTP server as ln6001-initramfs.itb:

openwrt-qualcommbe-ipq95xx-linksys_ln6001-initramfs-uImage.itb

Connect Ethernet to LAN4 and configure the TFTP server as 192.168.1.254/24.
Interrupt U-Boot autoboot through the serial console and run:

setenv ipaddr 192.168.1.1
setenv serverip 192.168.1.254
setenv netmask 255.255.255.0
tftp 0x4d100000 ln6001-initramfs.itb
bootm 0x4d100000#config@1

Do not save these temporary network settings or write the initramfs FIT
to eMMC. In RAM-booted OpenWrt, transfer the following image to
/tmp/ln6001-sysupgrade.bin:

openwrt-qualcommbe-ipq95xx-linksys_ln6001-squashfs-sysupgrade.bin

Check the selected slot and validate the image, then install:

fw_printenv boot_part boot_part_ready auto_recovery
sysupgrade -T /tmp/ln6001-sysupgrade.bin
sysupgrade -n /tmp/ln6001-sysupgrade.bin

Run the last command only after validation succeeds. boot_part=1 selects
A and installation writes B; boot_part=2 selects B and installation
writes A. Do not force a failed check. The sysupgrade archive is not a
Linksys web-update image. Subsequent OpenWrt sysupgrades use the same
inactive-slot path; omit -n to request preservation of OpenWrt settings.

Recovery:

The serial TFTP/bootm procedure remains available without depending on
the installed rootfs. Before installation, resetting a RAM-only session
returns to the selected existing firmware. After installation, a normal
reboot uses the newly selected slot and does not itself return to stock.

With consistent selector copies and environment, a recovery RAM boot can
run the same checked sysupgrade path. Inconsistent selectors are rejected;
do not bypass these checks. Keep serial access and a bootable other slot.

Partition and MAC address handling:

Discover the existing GPT at runtime and require the retail partition
labels, starts and sizes before writing. Preserve the GPT, bootloader,
devinfo and both Wi-Fi firmware payloads. The upgrade writes the inactive
HLOS/rootfs pair, then updates both bootconfig selector sectors and the
boot_part environment variable. Successful installed boots clear the
boot counter and update its checksum in s_env after verifying the active
slot. A stale checksum on an already-zero counter is repaired as well.

Read hw_mac_addr from devinfo through read-only block NVMEM. Stock LAN
and WAN use the same base address; assign offset zero to all five wired
ports. Configuration persists in a per-slot F2FS overlay.

Validation:

Retail-hardware testing passed RAM boot with U-Boot supplying 1
GiB RAM, and sysupgrade -n from stock-selected A into B followed
by two successful installed boots. The boot-count record
contained a zero count and valid checksum after both boots. F2FS
remained writable and a UCI setting persisted across reboot.
Kernel/rootfs readback matched the image; full stock A hashes and
non-selector protected partition hashes were unchanged.

LAN4 linked at 1 Gbps. WAN-to-WAN testing against a stock LN6001
negotiated 2500 Mbps full duplex at both ends and recovered to
that rate after cable replug without reboot or interface reset.
Normal and full-MTU IPv6 pings passed without loss before and
after replug. Separate four-stream TCP endpoint tests measured
2.313 Gbit/s received by this image and 2.311 Gbit/s by the peer,
then 2.316 Gbit/s received after replug. These are router-local
tests, not forwarding benchmarks. One RX error at the
disconnected checkpoint did not increase during subsequent
traffic; TX and peer RX/TX error counters remained zero.

Fifteen local synthetic tests cover boot-counter checksum
validation and repair, write/readback failures, upgrade guards
and safe return versus deliberate halt. Seven temporary-file
bootcount test groups also passed on the device. Real boot
selectors were not corrupted for failure tests. Image-macro
checks confirm sysupgrade.bin only with the size guard retained.

Signed-off-by: Satoshi Ikeuchi &lt;satosan.ikm@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/24736
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-27 11:28:20 +0200</date><id>614d968227780f497164538234531d62bcb587f7</id><msg>qualcommbe: add Linksys LN6001 support</msg><path><editType>add</editType><file>target/linux/qualcommbe/dts/ipq9554-linksys-ln6001.dts</file></path><path><editType>edit</editType><file>target/linux/qualcommbe/image/ipq95xx.mk</file></path><path><editType>add</editType><file>target/linux/qualcommbe/ipq95xx/base-files/lib/upgrade/ln6001.sh</file></path><path><editType>edit</editType><file>target/linux/qualcommbe/config-6.18</file></path><path><editType>edit</editType><file>target/linux/qualcommbe/ipq95xx/base-files/etc/board.d/02_network</file></path><path><editType>add</editType><file>target/linux/qualcommbe/ipq95xx/base-files/etc/init.d/bootcount</file></path><path><editType>edit</editType><file>target/linux/qualcommbe/ipq95xx/base-files/lib/upgrade/platform.sh</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/generic/pending-6.12/711-04-net-dsa-qca8k-skip-host-FDB-entries-on-CPU-ports-purge-stale.patch</affectedPath><affectedPath>target/linux/generic/pending-6.18/711-04-net-dsa-qca8k-no-program-unicast-host-FDB-entries.patch</affectedPath><affectedPath>target/linux/generic/pending-6.12/711-04-net-dsa-qca8k-no-program-unicast-host-FDB-entries.patch</affectedPath><affectedPath>target/linux/generic/pending-6.18/711-04-net-dsa-qca8k-skip-host-FDB-entries-on-CPU-ports-purge-stale.patch</affectedPath><affectedPath>target/linux/ipq40xx/patches-6.18/706-net-dsa-qca8k-add-IPQ4019-built-in-switch-support.patch</affectedPath><commitId>42656fee2244bdf07a3652c6f311355a5630df38</commitId><timestamp>1790501405000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>kernel: qca8k: skip host FDB entries on CPU ports, purge stale dynamic ones

Rework 711-04-net-dsa-qca8k-no-program-unicast-host-FDB-entries.patch:
host FDB adds on CPU ports are skipped, relying on unknown-unicast
flooding to deliver host-bound frames to the CPU. That assumption
breaks when a station roams from a wired user port onto an interface
behind the CPU (wireless AP and WDS setups): a stale dynamically
learned ATU entry still points at the old user port, so downstream
frames hit it and are dropped by same-port filtering instead of being
flooded to the CPU. With CPU-port hardware learning disabled (assisted
learning), nothing ever corrects the entry - clients roaming onto the
device stay blackholed while the device itself stays reachable.

Purge any dynamically learned ATU entry for {addr, vid} when the host
add is skipped, so the address becomes unknown unicast again - exactly
the delivery mechanism the skip relies on. Static entries are left
untouched, and the companion skip in qca8k_port_fdb_del is kept so
host address removal does not purge legitimately learned entries.

Also refresh ipq40xx's 706 patch for the shifted hunk offsets.

Tested on IPQ4019 (Google WiFi APs): stale entries are purged at
association time and roaming recovers instantly.

Fixes: 9716066e80 ("kernel: add qualcommax patches to generic")
Signed-off-by: Brandon Mahdavi &lt;brandon.mahdavi@mahcom.com&gt;
Link: https://github.com/openwrt/openwrt/pull/24162
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-27 11:30:05 +0200</date><id>42656fee2244bdf07a3652c6f311355a5630df38</id><msg>kernel: qca8k: skip host FDB entries on CPU ports, purge stale dynamic ones</msg><path><editType>add</editType><file>target/linux/generic/pending-6.12/711-04-net-dsa-qca8k-skip-host-FDB-entries-on-CPU-ports-purge-stale.patch</file></path><path><editType>add</editType><file>target/linux/generic/pending-6.18/711-04-net-dsa-qca8k-skip-host-FDB-entries-on-CPU-ports-purge-stale.patch</file></path><path><editType>delete</editType><file>target/linux/generic/pending-6.18/711-04-net-dsa-qca8k-no-program-unicast-host-FDB-entries.patch</file></path><path><editType>delete</editType><file>target/linux/generic/pending-6.12/711-04-net-dsa-qca8k-no-program-unicast-host-FDB-entries.patch</file></path><path><editType>edit</editType><file>target/linux/ipq40xx/patches-6.18/706-net-dsa-qca8k-add-IPQ4019-built-in-switch-support.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/kernel/linux/modules/netdevices.mk</affectedPath><commitId>57072d9ebb29a40ddf8f6fb2333bdd425cf52332</commitId><timestamp>1790501992000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>kernel: netdevices: enable MACsec support for mlx5-core

Enable MACsec (Media Access Control Security) support in the Mellanox
mlx5 driver by setting CONFIG_MLX5_MACSEC=y.

Enabling this configuration allows users to utilize hardware MACsec
offload capabilities on supported Mellanox ConnectX network adapters.
This provides point-to-point Layer 2 encryption at line rate while
significantly reducing CPU overhead.

The kmod-macsec dependency is intentionally omitted to make this an
opt-in feature. The offload support only builds if kmod-macsec is
also selected, preventing driver bloat for standard users.

Signed-off-by: Til Kaiser &lt;mail@tk154.de&gt;
Link: https://github.com/openwrt/openwrt/pull/25400
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-27 11:39:52 +0200</date><id>57072d9ebb29a40ddf8f6fb2333bdd425cf52332</id><msg>kernel: netdevices: enable MACsec support for mlx5-core</msg><path><editType>edit</editType><file>package/kernel/linux/modules/netdevices.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/phy/realtek/phy-rtk-pcie.c</affectedPath><commitId>ab58ca8fc0e36c526d3590b97f9ef6f90828cd7f</commitId><timestamp>1790513936000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>realtek: phy: add delay to fix pcie link up failures

The current pcie phy driver results in inconsistent failures on PCIe linkup,
different from one boot to another. Doing some testing, it has became clear
that mdio operations are at fault. The mdio seem to require an additional
delay after it has completed an operation and reported status of done. The
mdio ready bit however, is unchanged and so doesn't have any connection to
this "after completion" delay.

Fix the issue by adding an additional delay after regmap polling and remove
MDIO_READY from cond variable as it is unrelated. Change the function name
to rtk_phy_poll_done_and_delay() to go along with the changes. Mostly as a
guess but 10 us is enough delay to fix the inconsistent failures. Tested by
booting an image on rtl9607c machine 4 times and no failed link ups happen.

Add the fsleep() after regmap_read() in rtk_phy_read() as it also triggers
something in phy mdio controller that require the same delay.

Fixes: bb00e9f0974f ("realtek: phy: add support for rtl9607c pcie phy")
Signed-off-by: Rustam Adilov &lt;adilov@tutamail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25412
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-27 14:58:56 +0200</date><id>ab58ca8fc0e36c526d3590b97f9ef6f90828cd7f</id><msg>realtek: phy: add delay to fix pcie link up failures</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/phy/realtek/phy-rtk-pcie.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/l3.c</affectedPath><commitId>f9ee620893c3214d661c80fefe943eb09224e2c1</commitId><timestamp>1790535996000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/markus.stockhausen</absoluteUrl><fullName>markus.stockhausen</fullName></author><authorEmail>markus.stockhausen@gmx.de</authorEmail><comment>realtek: l3: drop a warning built on a value nobody set

The netevent handler ends by testing an err it never assigns and prints
a netdev warning with whatever the stack left there. Nothing it does can
fail at that point: the work it has just queued is what could, and that
happens somewhere else entirely.

No build says so, because the kernel turns -Wmaybe-uninitialized off for
GCC outside W=2 (scripts/Makefile.extrawarn).

Assisted-by: Claude:claude-opus-5
Signed-off-by: Gennaro Cimmino &lt;gcimmino@rayonra.net&gt;
Link: https://github.com/openwrt/openwrt/pull/25311
Signed-off-by: Markus Stockhausen &lt;markus.stockhausen@gmx.de&gt;
</comment><date>2026-09-27 21:06:36 +0200</date><id>f9ee620893c3214d661c80fefe943eb09224e2c1</id><msg>realtek: l3: drop a warning built on a value nobody set</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/l3.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/l3.c</affectedPath><commitId>5b0782cd0e5ad33ec3ad97a4f3f594927e0518f7</commitId><timestamp>1790537930000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/markus.stockhausen</absoluteUrl><fullName>markus.stockhausen</fullName></author><authorEmail>markus.stockhausen@gmx.de</authorEmail><comment>realtek: l3: leave the RCU section before writing a table

Programming the routes that were waiting on a neighbour runs the whole
of otto_l3_nexthop_update() inside rcu_read_lock(), and everything it
does there ends in otto_table_acquire(), which takes a mutex.

Where this kernel is built there is no preemptible RCU, so that section
is a preempt_disable(): taking a mutex in it is fine only while the
mutex is free, and the moment it is not, the wait for it is a schedule()
with preemption off. Nothing says so at build time either, since
DEBUG_ATOMIC_SLEEP is off in the generic config and the might_sleep()
that would have complained is compiled out.

The other side of that mutex is not hypothetical. The router MAC, the
four host route tables, the four prefix route tables and the next hop
table are reached through one access register and so share one lock,
and this function writes three of them. The debugfs route dump holds
that same lock across a sweep of 8192 addresses and calls
cond_resched() every 64 rows, which is to say it sleeps with it held,
by design and legitimately. A neighbour resolving while someone reads
that file is all it takes.

Keep the section the rhashtable asks for around the lookup, which is
what needs it, and end it there. The routes the lookup would have walked
are the ones on the driver's own list with that gateway, and the list is
what the rest of this file already walks: the work queue behind every
route added, removed or programmed is single threaded, which is the
invariant the teardown path states and relies on.

Holding ctrl-&gt;lock instead was the smaller diff and would have been
wrong: it serialises this driver's insertions, not the rhashtable's own
shrink worker, which is what the RCU section is there for.

Assisted-by: Claude:claude-opus-5
Signed-off-by: Gennaro Cimmino &lt;gcimmino@rayonra.net&gt;
Link: https://github.com/openwrt/openwrt/pull/25447
Signed-off-by: Markus Stockhausen &lt;markus.stockhausen@gmx.de&gt;
</comment><date>2026-09-27 21:38:50 +0200</date><id>5b0782cd0e5ad33ec3ad97a4f3f594927e0518f7</id><msg>realtek: l3: leave the RCU section before writing a table</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/l3.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/l3.c</affectedPath><commitId>e96716c4ef65c8f7590face49292b6066f26caf2</commitId><timestamp>1790537930000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/markus.stockhausen</absoluteUrl><fullName>markus.stockhausen</fullName></author><authorEmail>markus.stockhausen@gmx.de</authorEmail><comment>realtek: l3: do not look for a route that was never placed

A prefix route is given its row when its gateway resolves, and until
then it carries the -1 its allocator wrote there. A route with no
gateway to resolve keeps that value for its whole life, and a connected
route is exactly that: nothing routes inside its own subnet, so nothing
ever places it.

Removing one still takes the hardware side of the removal path, because
the test there asks whether the ops can look a route up, not whether
this route was ever written. So the CAM is searched for an entry that
was never in it, and the answer is reported as a fault: on a plain
dual-stack box, "prefix route 192.168.1.0/24 was not in hardware" at
every restart of the network.

The noise is not the whole of it. That search keys on the masked
destination, so a shorter prefix covering the same address answers it,
and the row that comes back is then reported as holding another route -
which it does, and rightly, because it is not this route's row and never
was.

Ask the row the driver recorded instead. Both messages stay for the case
they were written for, a route that was placed and is no longer where
the driver put it, which is the state a half-finished row move leaves
behind.

Assisted-by: Claude:claude-opus-5
Signed-off-by: Gennaro Cimmino &lt;gcimmino@rayonra.net&gt;
Link: https://github.com/openwrt/openwrt/pull/25447
Signed-off-by: Markus Stockhausen &lt;markus.stockhausen@gmx.de&gt;
</comment><date>2026-09-27 21:38:50 +0200</date><id>e96716c4ef65c8f7590face49292b6066f26caf2</id><msg>realtek: l3: do not look for a route that was never placed</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/l3.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/tegra/config-6.18</affectedPath><affectedPath>target/linux/tegra/patches-6.12/100-serial8250-on-tegra-hsuart-recover-from-spurious-interrupts-due-to-tegra2-silicon-bug.patch</affectedPath><affectedPath>target/linux/tegra/patches-6.18/100-serial8250-on-tegra-hsuart-recover-from-spurious-interrupts-due-to-tegra2-silicon-bug.patch</affectedPath><affectedPath>target/linux/tegra/config-6.12</affectedPath><commitId>dbea6b4972f3d7c9c1983fc6c634cf2aa66e753b</commitId><timestamp>1790538668000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>kernel/tegra: create files for v6.18 (from v6.12)

This is an automatically generated commit.

When doing `git bisect`, consider `git bisect --skip`.

Signed-off-by: Tomasz Maciej Nowak &lt;tmn505@gmail.com&gt;
Link: https://patchwork.ozlabs.org/project/openwrt/patch/20260507135738.5684-2-tmn505@terefe.re/
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-27 21:51:08 +0200</date><id>dbea6b4972f3d7c9c1983fc6c634cf2aa66e753b</id><msg>kernel/tegra: create files for v6.18 (from v6.12)</msg><path><editType>add</editType><file>target/linux/tegra/patches-6.18/100-serial8250-on-tegra-hsuart-recover-from-spurious-interrupts-due-to-tegra2-silicon-bug.patch</file></path><path><editType>add</editType><file>target/linux/tegra/config-6.18</file></path><path><editType>delete</editType><file>target/linux/tegra/patches-6.12/100-serial8250-on-tegra-hsuart-recover-from-spurious-interrupts-due-to-tegra2-silicon-bug.patch</file></path><path><editType>delete</editType><file>target/linux/tegra/config-6.12</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/tegra/patches-6.12/100-serial8250-on-tegra-hsuart-recover-from-spurious-interrupts-due-to-tegra2-silicon-bug.patch</affectedPath><affectedPath>target/linux/tegra/config-6.12</affectedPath><commitId>1d019b3978db229aef2144e07430017c838a5bee</commitId><timestamp>1790538669000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>kernel/tegra: restore files for v6.12

This is an automatically generated commit which aids following Kernel patch
history, as git will see the move and copy as a rename thus defeating the
purpose.

For the original discussion see:
https://lists.openwrt.org/pipermail/openwrt-devel/2023-October/041673.html

Signed-off-by: Tomasz Maciej Nowak &lt;tmn505@gmail.com&gt;
Link: https://patchwork.ozlabs.org/project/openwrt/patch/20260507135738.5684-3-tmn505@terefe.re/
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-27 21:51:09 +0200</date><id>1d019b3978db229aef2144e07430017c838a5bee</id><msg>kernel/tegra: restore files for v6.12</msg><path><editType>add</editType><file>target/linux/tegra/config-6.12</file></path><path><editType>add</editType><file>target/linux/tegra/patches-6.12/100-serial8250-on-tegra-hsuart-recover-from-spurious-interrupts-due-to-tegra2-silicon-bug.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/tegra/config-6.18</affectedPath><affectedPath>target/linux/tegra/patches-6.18/100-serial8250-on-tegra-hsuart-recover-from-spurious-interrupts-due-to-tegra2-silicon-bug.patch</affectedPath><commitId>7de485e59897aacc421b2df1a5de02cac1eaa9d6</commitId><timestamp>1790538669000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>tegra: 6.18: refresh config and patches

No functional changes.

Signed-off-by: Tomasz Maciej Nowak &lt;tmn505@gmail.com&gt;
Link: https://patchwork.ozlabs.org/project/openwrt/patch/20260507135738.5684-4-tmn505@terefe.re/
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-27 21:51:09 +0200</date><id>7de485e59897aacc421b2df1a5de02cac1eaa9d6</id><msg>tegra: 6.18: refresh config and patches</msg><path><editType>edit</editType><file>target/linux/tegra/config-6.18</file></path><path><editType>edit</editType><file>target/linux/tegra/patches-6.18/100-serial8250-on-tegra-hsuart-recover-from-spurious-interrupts-due-to-tegra2-silicon-bug.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/tegra/Makefile</affectedPath><commitId>58c36f0bce0a5a7f5be09b7cfd5a763f80a9d4d7</commitId><timestamp>1790538669000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>tegra: add 6.18 as testing kernel

Allow to select 6.18 as testing kernel.

Signed-off-by: Tomasz Maciej Nowak &lt;tmn505@gmail.com&gt;
Link: https://patchwork.ozlabs.org/project/openwrt/patch/20260507135738.5684-5-tmn505@terefe.re/
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-27 21:51:09 +0200</date><id>58c36f0bce0a5a7f5be09b7cfd5a763f80a9d4d7</id><msg>tegra: add 6.18 as testing kernel</msg><path><editType>edit</editType><file>target/linux/tegra/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/boot/uboot-tegra/Makefile</affectedPath><affectedPath>package/boot/uboot-tegra/patches/001-scripts-dtc-drop-yaml-in-DT-validation.patch</affectedPath><commitId>4186150dbbb879f033b230a416f2f9ba6adde2e8</commitId><timestamp>1790538669000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>uboot-tegra: bump version to 2026.04

Maintenence bump, no new features.

Signed-off-by: Tomasz Maciej Nowak &lt;tmn505@gmail.com&gt;
Link: https://patchwork.ozlabs.org/project/openwrt/patch/20260507135738.5684-6-tmn505@terefe.re/
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-27 21:51:09 +0200</date><id>4186150dbbb879f033b230a416f2f9ba6adde2e8</id><msg>uboot-tegra: bump version to 2026.04</msg><path><editType>edit</editType><file>package/boot/uboot-tegra/Makefile</file></path><path><editType>add</editType><file>package/boot/uboot-tegra/patches/001-scripts-dtc-drop-yaml-in-DT-validation.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/dsa.c</affectedPath><commitId>48b6665b178c67125913d5cf55c3c0a94d6f03f0</commitId><timestamp>1790539273000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/markus.stockhausen</absoluteUrl><fullName>markus.stockhausen</fullName></author><authorEmail>markus.stockhausen@gmx.de</authorEmail><comment>realtek: dsa: report only unicast rows in the FDB dump

rtldsa_port_fdb_dump() reuses one uninitialised entry for every row it
reads, but the fill functions do not write every field for every row
type. RTL838x and RTL839x never write is_trunk, so the test that skips
trunk entries reads a stack value for the whole walk and can drop every
hardware entry from bridge fdb show. An L2 multicast row leaves port
and is_static untouched on all families, and vid too on RTL930x and
RTL931x, so it is reported on the port of whatever row came before it.

Zero the entry for every row and report only L2_UNICAST rows, as
mv88e6xxx and b53 do. On RTL838x and RTL839x this skips IP multicast
rows as well. On RTL930x and RTL931x unicast rows are reported as
before, and the driver writes no multicast rows of its own: a static
FDB entry with a multicast MAC, which rtldsa_port_fdb_add() stores as a
unicast row there, reads back as multicast and is no longer reported.

Tested on an RTL9303 (Hasivo S1100W-8XGT-SE), with the L2 table dump of
PR #25394 as the reference and two follow-ups that change only the loop
bounds, which are the same on RTL930x. With 150 static and 16 learned
entries, bridge fdb show listed exactly the 166 unicast rows the
hardware held on user ports. A static FDB entry with a multicast MAC,
present in the table as an L2 multicast row, was not reported on any
user port. Not tested on RTL838x, RTL839x or RTL931x hardware.

Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Gennaro Cimmino &lt;gcimmino@rayonra.net&gt;
Link: https://github.com/openwrt/openwrt/pull/25398
Signed-off-by: Markus Stockhausen &lt;markus.stockhausen@gmx.de&gt;
</comment><date>2026-09-27 22:01:13 +0200</date><id>48b6665b178c67125913d5cf55c3c0a94d6f03f0</id><msg>realtek: dsa: report only unicast rows in the FDB dump</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/dsa.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl930x.c</affectedPath><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl838x.c</affectedPath><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl-otto.h</affectedPath><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl839x.c</affectedPath><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl931x.c</affectedPath><commitId>fb9c8bf5ef88025425e6c1cd8dcb4bc84de53c0c</commitId><timestamp>1790539644000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/markus.stockhausen</absoluteUrl><fullName>markus.stockhausen</fullName></author><authorEmail>markus.stockhausen@gmx.de</authorEmail><comment>realtek: dsa: add the L2 table ids to the family config

The L2 debugfs dump walks fib_entries rows of the hash table and a
fixed 64 rows of the CAM. That covers both tables on RTL838x, RTL839x
and RTL930x, but not on RTL931x: otto_table.c maps the RTL9310 L2 table
with 32768 rows and its CAM with 128, while fib_entries stays at 16384
there (its TODO says the code cannot handle 32K). fib_entries also
sizes l2_uc_map and bounds the fdb_dump walk, so raising it is a change
of its own.

Record which otto_table ids hold the L2 hash table and the CAM of each
family, so a dump can take the row counts from otto_table_rows()
instead. Nothing reads the new fields yet, so this is a no-op on all
four families.

Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Gennaro Cimmino &lt;gcimmino@rayonra.net&gt;
Link: https://github.com/openwrt/openwrt/pull/25394
Signed-off-by: Markus Stockhausen &lt;markus.stockhausen@gmx.de&gt;
</comment><date>2026-09-27 22:07:24 +0200</date><id>fb9c8bf5ef88025425e6c1cd8dcb4bc84de53c0c</id><msg>realtek: dsa: add the L2 table ids to the family config</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl931x.c</file></path><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl930x.c</file></path><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl838x.c</file></path><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl-otto.h</file></path><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl839x.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/common.c</affectedPath><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/l2.c</affectedPath><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/l2.h</affectedPath><commitId>a980e72e6d34f27789fd10f4acdf6496e7896ef9</commitId><timestamp>1790539644000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/markus.stockhausen</absoluteUrl><fullName>markus.stockhausen</fullName></author><authorEmail>markus.stockhausen@gmx.de</authorEmail><comment>realtek: dsa: add an L2 table dump to realtek_otto_l2

The only debugfs dump of the L2 table is rtl838x/l2_table in
debugfs.c. It walks fib_entries rows of the hash table and 64 rows of
the CAM, which leaves half of both unread on RTL931x. On RTL838x and
RTL839x its entry is not initialised and the fill functions of those
families never set is_trunk or trunk, so a stack value can be printed
as trunk data and used as an index into the LAG arrays.

Add the dump to l2.c as realtek_otto_l2/fdb, next to realtek_otto_l3.
It takes the row counts of the hash table and the CAM from
otto_table_rows(), so on RTL931x it reads all 32768 hash rows and 128
CAM rows. The upper hash rows are ones the driver already writes: on
RTL931x the second hash block starts at row 16384. The entry is zeroed
for every row, and the walk yields the CPU every 64 rows whether or not
they are valid, where the old loop only reached cond_resched() on a
valid row. The output format is unchanged.

debugfs.c keeps its copy until the next commit.

Tested on an RTL9303 (Hasivo S1100W-8XGT-SE) at this commit, where both
files exist: with 150 static FDB entries added, rtl838x/l2_table and
realtek_otto_l2/fdb listed the same 182 entries on three back-to-back
reads, identical apart from the age of learned entries. Reading the new
file in 64-byte chunks matched a single read, ages aside, and
CONFIG_DEBUG_ATOMIC_SLEEP reported nothing. Not tested on RTL838x,
RTL839x or RTL931x hardware.

Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Gennaro Cimmino &lt;gcimmino@rayonra.net&gt;
Link: https://github.com/openwrt/openwrt/pull/25394
Signed-off-by: Markus Stockhausen &lt;markus.stockhausen@gmx.de&gt;
</comment><date>2026-09-27 22:07:24 +0200</date><id>a980e72e6d34f27789fd10f4acdf6496e7896ef9</id><msg>realtek: dsa: add an L2 table dump to realtek_otto_l2</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/common.c</file></path><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/l2.h</file></path><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/l2.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/debugfs.c</affectedPath><commitId>101929399c12644ac8c3fe9b11b83c93fe9ee755</commitId><timestamp>1790539644000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/markus.stockhausen</absoluteUrl><fullName>markus.stockhausen</fullName></author><authorEmail>markus.stockhausen@gmx.de</authorEmail><comment>realtek: dsa: drop the L2 table dump from debugfs.c

The L2 table dump now lives in l2.c as realtek_otto_l2/fdb and reads
the whole table on every family. Remove the old rtl838x/l2_table copy,
which stopped at half the table on RTL931x and could print stack
contents as trunk data on RTL838x and RTL839x.

The other files in the rtl838x debugfs directory are unchanged.

Tested on an RTL9303 (Hasivo S1100W-8XGT-SE): rtl838x/l2_table is gone
and realtek_otto_l2/fdb lists 150 static FDB entries next to the
learned ones.

Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Gennaro Cimmino &lt;gcimmino@rayonra.net&gt;
Link: https://github.com/openwrt/openwrt/pull/25394
Signed-off-by: Markus Stockhausen &lt;markus.stockhausen@gmx.de&gt;
</comment><date>2026-09-27 22:07:24 +0200</date><id>101929399c12644ac8c3fe9b11b83c93fe9ee755</id><msg>realtek: dsa: drop the L2 table dump from debugfs.c</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/debugfs.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/generic/backport-6.12/630-v6.13-net-usb-qmi_wwan-add-Quectel-RG255C.patch</affectedPath><affectedPath>target/linux/generic/kernel-6.12</affectedPath><affectedPath>target/linux/generic/pending-6.12/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch</affectedPath><affectedPath>target/linux/generic/backport-6.12/942-07-v7.2-net-dsa-realtek-rtl8365mb-add-FDB-support.patch</affectedPath><commitId>5150a2ede192f609bf8894b75aa2794e346aef99</commitId><timestamp>1790550358000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/hauke</absoluteUrl><fullName>hauke</fullName></author><authorEmail>hauke@hauke-m.de</authorEmail><comment>kernel: bump 6.12 to 6.12.109

Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.109

All patches are automatically refreshed.

Signed-off-by: Shiji Yang &lt;yangshiji66@outlook.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25179
Signed-off-by: Hauke Mehrtens &lt;hauke@hauke-m.de&gt;
</comment><date>2026-09-28 01:05:58 +0200</date><id>5150a2ede192f609bf8894b75aa2794e346aef99</id><msg>kernel: bump 6.12 to 6.12.109</msg><path><editType>edit</editType><file>target/linux/generic/pending-6.12/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch</file></path><path><editType>edit</editType><file>target/linux/generic/kernel-6.12</file></path><path><editType>edit</editType><file>target/linux/generic/backport-6.12/942-07-v7.2-net-dsa-realtek-rtl8365mb-add-FDB-support.patch</file></path><path><editType>edit</editType><file>target/linux/generic/backport-6.12/630-v6.13-net-usb-qmi_wwan-add-Quectel-RG255C.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/generic/pending-6.12/342-powerpc-Enable-kernel-XZ-compression-option-on-PPC_8.patch</affectedPath><affectedPath>target/linux/generic/backport-6.12/202-v6.13-clk-Provide-devm_clk_bulk_get_all_enabled-helper.patch</affectedPath><affectedPath>target/linux/generic/pending-6.12/400-mtd-mtdsplit-support.patch</affectedPath><affectedPath>target/linux/generic/pending-6.12/812-PCI-sysfs-enforce-single-creation-of-sysfs-entry-for.patch</affectedPath><affectedPath>target/linux/generic/hack-6.12/610-net-page_pool-try-to-free-deferred-skbs-while-waitin.patch</affectedPath><affectedPath>target/linux/generic/hack-6.12/200-tools_portability.patch</affectedPath><affectedPath>target/linux/generic/backport-6.12/501-v6.19-ksmbd-server-avoid-busy-polling-in-accept-loop.patch</affectedPath><affectedPath>target/linux/generic/backport-6.12/502-v7.3-smb-server-fix-signing-multi-iov-response.patch</affectedPath><affectedPath>target/linux/generic/config-6.12</affectedPath><affectedPath>target/linux/generic/pending-6.12/739-05-net-pcs-add-driver-for-MediaTek-USXGMII-PCS.patch</affectedPath><affectedPath>target/linux/generic/pending-6.12/510-block-add-uImage.FIT-subimage-block-driver.patch</affectedPath><affectedPath>target/linux/generic/hack-6.12/660-fq_codel_defaults.patch</affectedPath><affectedPath>target/linux/generic/backport-6.12/720-04-v6.13-net-phy-mediatek-Re-organize-MediaTek-ethernet-phy-d.patch</affectedPath><affectedPath>target/linux/generic/pending-6.12/790-bus-mhi-core-add-SBL-state-callback.patch</affectedPath><affectedPath>target/linux/generic/backport-6.12/500-02-v6.13-block-introduce-add_disk_fwnode.patch</affectedPath><affectedPath>target/linux/generic/backport-6.12/626-16b-v6.17-regulator-Add-support-for-power-budget.patch</affectedPath><affectedPath>target/linux/generic/backport-6.12/504-v7.3-ksmbd-fix-listener-task-lifetime-on-netdev-events.patch</affectedPath><affectedPath>target/linux/generic/kernel-6.12</affectedPath><affectedPath>target/linux/generic/pending-6.12/490-ubi-auto-attach-mtd-device-named-ubi-or-data-on-boot.patch</affectedPath><affectedPath>target/linux/generic/backport-6.12/720-05-v6.13-net-phy-mediatek-Move-LED-helper-functions-into-mtk-.patch</affectedPath><affectedPath>target/linux/generic/backport-6.12/201-v6.13-of-property-add-of_graph_get_next_port.patch</affectedPath><affectedPath>target/linux/generic/backport-6.12/503-02-v7.3-ksmbd-keep-tcp-timers-alive-for-kernel-sockets.patch</affectedPath><affectedPath>target/linux/generic/backport-6.12/700-01-v7.0-net-sched-Export-mq-functions-for-reuse.patch</affectedPath><commitId>0d3a5dfdf4a11ba2ee4ed122a1dfbedf2a172c45</commitId><timestamp>1790550358000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/hauke</absoluteUrl><fullName>hauke</fullName></author><authorEmail>hauke@hauke-m.de</authorEmail><comment>kernel: bump 6.12 to 6.12.110

Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.110

Upstream merged patches:
- generic/backport-6.12/201-v6.13-of-property-add-of_graph_get_next_port.patch[1]

Manually rebased patches:
- generic/hack-6.12/200-tools_portability.patch[2]

kconfig symbol changes:
- Rename GENERIC_PTDUMP -&gt; ARCH_HAS_PTDUMP[3]

All other patches are automatically refreshed.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=59d1a468e5e53bc8ca274966ee1935c39e403593
[2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=11bdce7911eba18d96283a212a9b8435cc4b94d2
[3] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=654a60dcc384ae2cb65bbb59d11a3e7c3911b446
Signed-off-by: Shiji Yang &lt;yangshiji66@outlook.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25179
Signed-off-by: Hauke Mehrtens &lt;hauke@hauke-m.de&gt;
</comment><date>2026-09-28 01:05:58 +0200</date><id>0d3a5dfdf4a11ba2ee4ed122a1dfbedf2a172c45</id><msg>kernel: bump 6.12 to 6.12.110</msg><path><editType>edit</editType><file>target/linux/generic/kernel-6.12</file></path><path><editType>edit</editType><file>target/linux/generic/backport-6.12/502-v7.3-smb-server-fix-signing-multi-iov-response.patch</file></path><path><editType>delete</editType><file>target/linux/generic/backport-6.12/201-v6.13-of-property-add-of_graph_get_next_port.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.12/510-block-add-uImage.FIT-subimage-block-driver.patch</file></path><path><editType>edit</editType><file>target/linux/generic/hack-6.12/200-tools_portability.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.12/342-powerpc-Enable-kernel-XZ-compression-option-on-PPC_8.patch</file></path><path><editType>edit</editType><file>target/linux/generic/config-6.12</file></path><path><editType>edit</editType><file>target/linux/generic/backport-6.12/503-02-v7.3-ksmbd-keep-tcp-timers-alive-for-kernel-sockets.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.12/790-bus-mhi-core-add-SBL-state-callback.patch</file></path><path><editType>edit</editType><file>target/linux/generic/backport-6.12/501-v6.19-ksmbd-server-avoid-busy-polling-in-accept-loop.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.12/490-ubi-auto-attach-mtd-device-named-ubi-or-data-on-boot.patch</file></path><path><editType>edit</editType><file>target/linux/generic/backport-6.12/504-v7.3-ksmbd-fix-listener-task-lifetime-on-netdev-events.patch</file></path><path><editType>edit</editType><file>target/linux/generic/backport-6.12/720-05-v6.13-net-phy-mediatek-Move-LED-helper-functions-into-mtk-.patch</file></path><path><editType>edit</editType><file>target/linux/generic/backport-6.12/202-v6.13-clk-Provide-devm_clk_bulk_get_all_enabled-helper.patch</file></path><path><editType>edit</editType><file>target/linux/generic/hack-6.12/610-net-page_pool-try-to-free-deferred-skbs-while-waitin.patch</file></path><path><editType>edit</editType><file>target/linux/generic/hack-6.12/660-fq_codel_defaults.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.12/739-05-net-pcs-add-driver-for-MediaTek-USXGMII-PCS.patch</file></path><path><editType>edit</editType><file>target/linux/generic/backport-6.12/500-02-v6.13-block-introduce-add_disk_fwnode.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.12/812-PCI-sysfs-enforce-single-creation-of-sysfs-entry-for.patch</file></path><path><editType>edit</editType><file>target/linux/generic/backport-6.12/626-16b-v6.17-regulator-Add-support-for-power-budget.patch</file></path><path><editType>edit</editType><file>target/linux/generic/backport-6.12/700-01-v7.0-net-sched-Export-mq-functions-for-reuse.patch</file></path><path><editType>edit</editType><file>target/linux/generic/backport-6.12/720-04-v6.13-net-phy-mediatek-Re-organize-MediaTek-ethernet-phy-d.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.12/400-mtd-mtdsplit-support.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/generic/config-6.18</affectedPath><affectedPath>target/linux/generic/config-6.12</affectedPath><commitId>252773a268140cd85263ec304d4833e698da0797</commitId><timestamp>1790550358000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/hauke</absoluteUrl><fullName>hauke</fullName></author><authorEmail>hauke@hauke-m.de</authorEmail><comment>kernel: generic: remove kconfig symbol ARCH_HAS_PTDUMP

This is a CPU architecture specific feature. It will be automatically
selected if CPU support it, and we should not enable it globally.

It is worth noting that in the 6.18 kernel, GENERIC_PTDUMP has already
been renamed[1], but we did not add the new symbol ARCH_HAS_PTDUMP, so
we simply drop GENERIC_PTDUMP.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=f9aad622006bd64c28fdf73c03a1c5139fcbf049
Signed-off-by: Shiji Yang &lt;yangshiji66@outlook.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25179
Signed-off-by: Hauke Mehrtens &lt;hauke@hauke-m.de&gt;
</comment><date>2026-09-28 01:05:58 +0200</date><id>252773a268140cd85263ec304d4833e698da0797</id><msg>kernel: generic: remove kconfig symbol ARCH_HAS_PTDUMP</msg><path><editType>edit</editType><file>target/linux/generic/config-6.12</file></path><path><editType>edit</editType><file>target/linux/generic/config-6.18</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/generic/hack-6.12/755-net-phy-motorcomm-yt8821-bus-collision-workaround.patch</affectedPath><affectedPath>target/linux/generic/hack-6.12/711-net-dsa-mv88e6xxx-disable-ATU-violation.patch</affectedPath><affectedPath>target/linux/generic/pending-6.12/681-net-remove-NETIF_F_GSO_FRAGLIST-from-NETIF_F_GSO_SOF.patch</affectedPath><affectedPath>target/linux/generic/pending-6.12/655-increase_skb_pad.patch</affectedPath><affectedPath>target/linux/generic/pending-6.12/812-PCI-sysfs-enforce-single-creation-of-sysfs-entry-for.patch</affectedPath><affectedPath>target/linux/generic/backport-6.12/720-07-v6.13-net-phy-mediatek-Integrate-read-write-page-helper-fu.patch</affectedPath><affectedPath>target/linux/generic/backport-6.12/720-10-v6.15-net-phy-mediatek-Change-to-more-meaningful-macros.patch</affectedPath><affectedPath>target/linux/generic/backport-6.12/502-v7.3-smb-server-fix-signing-multi-iov-response.patch</affectedPath><affectedPath>target/linux/generic/backport-6.12/720-09-v6.14-net-phy-Constify-struct-mdio_device_id.patch</affectedPath><affectedPath>target/linux/generic/pending-6.12/630-packet_socket_type.patch</affectedPath><affectedPath>target/linux/generic/backport-6.12/720-04-v6.13-net-phy-mediatek-Re-organize-MediaTek-ethernet-phy-d.patch</affectedPath><affectedPath>target/linux/generic/hack-6.12/766-net-phy-mediatek-ge-add-LED-configuration-interface.patch</affectedPath><affectedPath>target/linux/generic/pending-6.12/710-bridge-add-knob-for-filtering-rx-tx-BPDU-pack.patch</affectedPath><affectedPath>target/linux/generic/pending-6.12/750-net-sfp-add-quirk-for-QINIYEK-BJ-SFP-10G-T-copper-SF.patch</affectedPath><affectedPath>target/linux/generic/pending-6.12/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch</affectedPath><affectedPath>target/linux/generic/pending-6.12/834-ledtrig-libata.patch</affectedPath><affectedPath>target/linux/generic/hack-6.12/204-module_strip.patch</affectedPath><affectedPath>target/linux/generic/hack-6.12/930-Revert-Revert-Revert-driver-core-Set-fw_devlink-on-b.patch</affectedPath><affectedPath>target/linux/generic/backport-6.12/720-03-v6.13-net-phy-mediatek-ge-soc-Propagate-error-code-correct.patch</affectedPath><affectedPath>target/linux/generic/hack-6.12/902-debloat_proc.patch</affectedPath><affectedPath>target/linux/generic/backport-6.12/740-v6.13-net-dsa-mv88e6xxx-Support-LED-control.patch</affectedPath><affectedPath>target/linux/generic/backport-6.12/720-01-v6.13-net-phy-mediatek-ge-soc-Fix-coding-style.patch</affectedPath><affectedPath>target/linux/generic/backport-6.12/751-v7.2-net-dsa-qca8k-add-support-for-force-mode-for-fixed-l.patch</affectedPath><affectedPath>target/linux/generic/backport-6.12/626-16b-v6.17-regulator-Add-support-for-power-budget.patch</affectedPath><affectedPath>target/linux/generic/backport-6.12/720-08-v6.13-net-phy-mediatek-add-MT7530-MT7531-s-PHY-ID-macros.patch</affectedPath><affectedPath>target/linux/generic/kernel-6.12</affectedPath><affectedPath>target/linux/generic/backport-6.12/720-02-v6.13-net-phy-mediatek-ge-soc-Shrink-line-wrapping-to-80-c.patch</affectedPath><affectedPath>target/linux/generic/hack-6.12/721-net-add-packet-mangeling.patch</affectedPath><affectedPath>target/linux/generic/backport-6.12/730-03-v6.13-net-phy-support-active-high-property-for-PHY-LEDs.patch</affectedPath><affectedPath>target/linux/generic/backport-6.12/941-v7.2-net-dsa-realtek-rtl8365mb-add-support-for-rtl8367sb.patch</affectedPath><affectedPath>target/linux/generic/backport-6.12/800-v6.13-hwmon-Add-static-visibility-member-to-struct-hwmon_o.patch</affectedPath><affectedPath>target/linux/generic/backport-6.12/626-09-v6.13-net-pse-pd-Clean-ethtool-header-of-PSE-structures.patch</affectedPath><affectedPath>target/linux/generic/backport-6.12/741-v6.13-net-dsa-mv88e6xxx-fix-unreleased-fwnode_handle-in-se.patch</affectedPath><commitId>939a6efb1bfc646454d50433f5fb36ea9f4c5eb0</commitId><timestamp>1790550358000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/hauke</absoluteUrl><fullName>hauke</fullName></author><authorEmail>hauke@hauke-m.de</authorEmail><comment>kernel: bump 6.12 to 6.12.111

Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.111

Upstream merged patches:
- generic/backport-6.12/720-04-v6.13-net-phy-mediatek-Re-organize-MediaTek-ethernet-phy-d.patch[1]
- generic/backport-6.12/751-v7.2-net-dsa-qca8k-add-support-for-force-mode-for-fixed-l.patch[2]
- generic/backport-6.12/941-v7.2-net-dsa-realtek-rtl8365mb-add-support-for-rtl8367sb.patch[3]

All other patches are automatically refreshed.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=eceb15fbc345b2e9cc1c1aa94baec2af828f6bfc
[2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=1d256b5b49066afdfbf854d866e91d0fdbf7285b
[3] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=9baa7b30dff52e7c0bfa441adf69213410eb932c
Signed-off-by: Shiji Yang &lt;yangshiji66@outlook.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25179
Signed-off-by: Hauke Mehrtens &lt;hauke@hauke-m.de&gt;
</comment><date>2026-09-28 01:05:58 +0200</date><id>939a6efb1bfc646454d50433f5fb36ea9f4c5eb0</id><msg>kernel: bump 6.12 to 6.12.111</msg><path><editType>edit</editType><file>target/linux/generic/backport-6.12/720-07-v6.13-net-phy-mediatek-Integrate-read-write-page-helper-fu.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.12/655-increase_skb_pad.patch</file></path><path><editType>edit</editType><file>target/linux/generic/backport-6.12/720-03-v6.13-net-phy-mediatek-ge-soc-Propagate-error-code-correct.patch</file></path><path><editType>edit</editType><file>target/linux/generic/hack-6.12/204-module_strip.patch</file></path><path><editType>edit</editType><file>target/linux/generic/backport-6.12/720-10-v6.15-net-phy-mediatek-Change-to-more-meaningful-macros.patch</file></path><path><editType>edit</editType><file>target/linux/generic/backport-6.12/720-08-v6.13-net-phy-mediatek-add-MT7530-MT7531-s-PHY-ID-macros.patch</file></path><path><editType>edit</editType><file>target/linux/generic/hack-6.12/755-net-phy-motorcomm-yt8821-bus-collision-workaround.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.12/834-ledtrig-libata.patch</file></path><path><editType>edit</editType><file>target/linux/generic/backport-6.12/720-02-v6.13-net-phy-mediatek-ge-soc-Shrink-line-wrapping-to-80-c.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.12/681-net-remove-NETIF_F_GSO_FRAGLIST-from-NETIF_F_GSO_SOF.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.12/710-bridge-add-knob-for-filtering-rx-tx-BPDU-pack.patch</file></path><path><editType>delete</editType><file>target/linux/generic/backport-6.12/751-v7.2-net-dsa-qca8k-add-support-for-force-mode-for-fixed-l.patch</file></path><path><editType>edit</editType><file>target/linux/generic/hack-6.12/721-net-add-packet-mangeling.patch</file></path><path><editType>edit</editType><file>target/linux/generic/backport-6.12/730-03-v6.13-net-phy-support-active-high-property-for-PHY-LEDs.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.12/812-PCI-sysfs-enforce-single-creation-of-sysfs-entry-for.patch</file></path><path><editType>edit</editType><file>target/linux/generic/kernel-6.12</file></path><path><editType>edit</editType><file>target/linux/generic/backport-6.12/502-v7.3-smb-server-fix-signing-multi-iov-response.patch</file></path><path><editType>edit</editType><file>target/linux/generic/backport-6.12/740-v6.13-net-dsa-mv88e6xxx-Support-LED-control.patch</file></path><path><editType>delete</editType><file>target/linux/generic/backport-6.12/941-v7.2-net-dsa-realtek-rtl8365mb-add-support-for-rtl8367sb.patch</file></path><path><editType>edit</editType><file>target/linux/generic/hack-6.12/902-debloat_proc.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.12/630-packet_socket_type.patch</file></path><path><editType>edit</editType><file>target/linux/generic/hack-6.12/766-net-phy-mediatek-ge-add-LED-configuration-interface.patch</file></path><path><editType>delete</editType><file>target/linux/generic/backport-6.12/720-04-v6.13-net-phy-mediatek-Re-organize-MediaTek-ethernet-phy-d.patch</file></path><path><editType>edit</editType><file>target/linux/generic/backport-6.12/741-v6.13-net-dsa-mv88e6xxx-fix-unreleased-fwnode_handle-in-se.patch</file></path><path><editType>edit</editType><file>target/linux/generic/backport-6.12/800-v6.13-hwmon-Add-static-visibility-member-to-struct-hwmon_o.patch</file></path><path><editType>edit</editType><file>target/linux/generic/hack-6.12/711-net-dsa-mv88e6xxx-disable-ATU-violation.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.12/750-net-sfp-add-quirk-for-QINIYEK-BJ-SFP-10G-T-copper-SF.patch</file></path><path><editType>edit</editType><file>target/linux/generic/hack-6.12/930-Revert-Revert-Revert-driver-core-Set-fw_devlink-on-b.patch</file></path><path><editType>edit</editType><file>target/linux/generic/backport-6.12/626-16b-v6.17-regulator-Add-support-for-power-budget.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.12/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch</file></path><path><editType>edit</editType><file>target/linux/generic/backport-6.12/626-09-v6.13-net-pse-pd-Clean-ethtool-header-of-PSE-structures.patch</file></path><path><editType>edit</editType><file>target/linux/generic/backport-6.12/720-01-v6.13-net-phy-mediatek-ge-soc-Fix-coding-style.patch</file></path><path><editType>edit</editType><file>target/linux/generic/backport-6.12/720-09-v6.14-net-phy-Constify-struct-mdio_device_id.patch</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></culprit><culprit><absoluteUrl>https://taiha.net/jenkins/user/markus.stockhausen</absoluteUrl><fullName>markus.stockhausen</fullName></culprit><culprit><absoluteUrl>https://taiha.net/jenkins/user/hauke</absoluteUrl><fullName>hauke</fullName></culprit><culprit><absoluteUrl>https://taiha.net/jenkins/user/daniel</absoluteUrl><fullName>daniel</fullName></culprit><culprit><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></culprit><culprit><absoluteUrl>https://taiha.net/jenkins/user/mail</absoluteUrl><fullName>mail</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.parameterizedscheduler.ParameterizedTimerTriggerCause'><shortDescription>Started by timer with parameters: {BUILD_CFG_TARGET_DEV=WG1400HP/WG1800HP/WG1800HP2 (QCA9558)}</shortDescription></cause></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.BooleanParameterValue'><name>BUILD_CFG_DISTCLEAN</name><value>true</value></parameter><parameter _class='hudson.model.BooleanParameterValue'><name>BUILD_CFG_DIFFCONFIG</name><value>true</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BUILD_CFG_TARGET_DEV</name><value>WG1400HP/WG1800HP/WG1800HP2 (QCA9558)</value></parameter></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmain _class='hudson.plugins.git.util.Build'><buildNumber>497</buildNumber><marked><SHA1>98f3808362bec6dc5eee0479be7f4239efbfa91e</SHA1><branch><SHA1>98f3808362bec6dc5eee0479be7f4239efbfa91e</SHA1><name>refs/remotes/origin/main</name></branch></marked><revision><SHA1>98f3808362bec6dc5eee0479be7f4239efbfa91e</SHA1><branch><SHA1>98f3808362bec6dc5eee0479be7f4239efbfa91e</SHA1><name>refs/remotes/origin/main</name></branch></revision></refsremotesoriginmain></buildsByBranchName><lastBuiltRevision><SHA1>98f3808362bec6dc5eee0479be7f4239efbfa91e</SHA1><branch><SHA1>98f3808362bec6dc5eee0479be7f4239efbfa91e</SHA1><name>refs/remotes/origin/main</name></branch></lastBuiltRevision><remoteUrl>https://github.com/openwrt/openwrt</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>config.buildinfo</displayPath><fileName>config.buildinfo</fileName><relativePath>bin/targets/ath79/generic/config.buildinfo</relativePath></artifact><artifact><displayPath>feeds.buildinfo</displayPath><fileName>feeds.buildinfo</fileName><relativePath>bin/targets/ath79/generic/feeds.buildinfo</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1400hp-initramfs-factory.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1400hp-initramfs-factory.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1400hp-initramfs-factory.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1400hp-initramfs-kernel.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1400hp-initramfs-kernel.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1400hp-initramfs-kernel.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1400hp-squashfs-sysupgrade.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1400hp-squashfs-sysupgrade.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1400hp-squashfs-sysupgrade.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1400hp-uboot.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1400hp-uboot.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1400hp-uboot.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp-initramfs-factory.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp-initramfs-factory.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp-initramfs-factory.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp-initramfs-kernel.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp-initramfs-kernel.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp-initramfs-kernel.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp-squashfs-sysupgrade.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp-squashfs-sysupgrade.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp-squashfs-sysupgrade.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp-uboot.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp-uboot.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp-uboot.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp2-initramfs-factory.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp2-initramfs-factory.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp2-initramfs-factory.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp2-initramfs-kernel.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp2-initramfs-kernel.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp2-initramfs-kernel.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp2-squashfs-sysupgrade.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp2-squashfs-sysupgrade.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp2-squashfs-sysupgrade.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp2-uboot.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp2-uboot.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp2-uboot.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic.manifest</displayPath><fileName>openwrt-ath79-generic.manifest</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic.manifest</relativePath></artifact><artifact><displayPath>profiles.json</displayPath><fileName>profiles.json</fileName><relativePath>bin/targets/ath79/generic/profiles.json</relativePath></artifact><artifact><displayPath>sha256sums</displayPath><fileName>sha256sums</fileName><relativePath>bin/targets/ath79/generic/sha256sums</relativePath></artifact><artifact><displayPath>version.buildinfo</displayPath><fileName>version.buildinfo</fileName><relativePath>bin/targets/ath79/generic/version.buildinfo</relativePath></artifact><building>false</building><description>diffconfig: true, device: WG1400HP/WG1800HP/WG1800HP2 (QCA9558)</description><displayName>#497</displayName><duration>2172135</duration><estimatedDuration>2195975</estimatedDuration><fullDisplayName>OpenWrt (master) for NEC Aterm (NetBSD based) #497</fullDisplayName><id>497</id><inProgress>false</inProgress><keepLog>false</keepLog><number>497</number><queueId>62</queueId><result>SUCCESS</result><timestamp>1790220000646</timestamp><url>https://taiha.net/jenkins/job/OpenWrt-master-NEC-BSD-Aterm/497/</url><builtOn>home-slave02_taihasv</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/generic/backport-6.18/852-v7.1-rtc-cmos-use-platform_get_irq_optional.patch</affectedPath><commitId>5c95472821ea421a600547a508a2abe36c697447</commitId><timestamp>1789978466000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>kernel: backport rtc-cmos use platform_get_irq_optional()

Backport upstream commit e9f850ba66cd ("rtc: cmos: Use
platform_get_irq_optional() in cmos_platform_probe()"),
which landed in v7.1.

The rtc-cmos driver can live without an IRQ and returning an error
code from platform_get_irq() is not a problem for it in general, so
make it call platform_get_irq_optional() in cmos_platform_probe()
instead of platform_get_irq() to avoid a confusing error message
printed by the latter if an IRQ cannot be found for index 0, which
is possible on x86 platforms.

Additionally, on x86, if the IRQ is not defined and the system has
a legacy PIC, hardcode it to RTC_IRQ, which should be safe then (and
which is what the dropped PNP code did).

Fixes: https://github.com/openwrt/openwrt/issues/25248

Signed-off-by: Andy Chiang &lt;AndyChiang_git@outlook.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25264
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-21 10:14:26 +0200</date><id>5c95472821ea421a600547a508a2abe36c697447</id><msg>kernel: backport rtc-cmos use platform_get_irq_optional()</msg><path><editType>add</editType><file>target/linux/generic/backport-6.18/852-v7.1-rtc-cmos-use-platform_get_irq_optional.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/generic/backport-6.18/798-v7.1-net-phy-mxl-gpy-add-PHY-level-statistics-via-ethtool.patch</affectedPath><affectedPath>target/linux/generic/backport-6.18/720-v7.2-net-phy-intel-xway-add-PHY-level-statistics-via-etht.patch</affectedPath><commitId>41f9a2065d51829faf14ccdec7ad44df0a447280</commitId><timestamp>1789978897000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>kernel: backport Lantiq and Maxlinear PHY level statistics support

Backport Lantiq and Maxlineat PHY level statistics support. These
statistics count frames dropped by the PHY due to invalid symbols
on layer 1.

Tested on Lantiq/Maxlinear GPY111:
root@OpenWrt:~# ethtool -S lan3 --groups eth-phy
Standard stats for lan3:
eth-phy-SymbolErrorDuringCarrier: 856

Signed-off-by: Aleksander Jan Bajkowski &lt;olek2@wp.pl&gt;
Link: https://github.com/openwrt/openwrt/pull/25282
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-21 10:21:37 +0200</date><id>41f9a2065d51829faf14ccdec7ad44df0a447280</id><msg>kernel: backport Lantiq and Maxlinear PHY level statistics support</msg><path><editType>add</editType><file>target/linux/generic/backport-6.18/720-v7.2-net-phy-intel-xway-add-PHY-level-statistics-via-etht.patch</file></path><path><editType>add</editType><file>target/linux/generic/backport-6.18/798-v7.1-net-phy-mxl-gpy-add-PHY-level-statistics-via-ethtool.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>tools/xz/Makefile</affectedPath><commitId>cce54a1d82a33ede9e917d3bf90df573cf033484</commitId><timestamp>1789990093000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>tools/xz: update to version 5.8.4

Release Notes:
https://github.com/tukaani-project/xz/releases/tag/v5.8.4

Signed-off-by: Shiji Yang &lt;yangshiji66@outlook.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25295
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-21 13:28:13 +0200</date><id>cce54a1d82a33ede9e917d3bf90df573cf033484</id><msg>tools/xz: update to version 5.8.4</msg><path><editType>edit</editType><file>tools/xz/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/qualcommax/ipq807x/base-files/etc/board.d/02_network</affectedPath><commitId>c618c6a353f2adafab4c182224739d3687896e49</commitId><timestamp>1789990234000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>qualcommax: ipq807x: ax89x: use lan1 for failsafe

The default failsafe script just takes the first interface from the UCI LAN
inteface list, so its currently using the SFP interface in failsafe.

Since this is not convenient at all, change the order so that lan1 will now
be used for failsafe instead.

Fixes: #23633
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-21 13:30:34 +0200</date><id>c618c6a353f2adafab4c182224739d3687896e49</id><msg>qualcommax: ipq807x: ax89x: use lan1 for failsafe</msg><path><editType>edit</editType><file>target/linux/qualcommax/ipq807x/base-files/etc/board.d/02_network</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/vlan.c</affectedPath><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/dsa.c</affectedPath><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl930x.c</affectedPath><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/common.c</affectedPath><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/stp.c</affectedPath><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl839x.c</affectedPath><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl838x.c</affectedPath><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/Makefile</affectedPath><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/vlan.h</affectedPath><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/debugfs.c</affectedPath><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl931x.c</affectedPath><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/stp.h</affectedPath><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl-otto.h</affectedPath><commitId>14651b96832a9f9cef3b7bdcfb3dfecf9161ac58</commitId><timestamp>1790005920000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/markus.stockhausen</absoluteUrl><fullName>markus.stockhausen</fullName></author><authorEmail>markus.stockhausen@gmx.de</authorEmail><comment>realtek: dsa: move STP and MST handling into a separate source file

STP and MST handling is spread across dsa.c, common.c and the
chip-specific source files. Group it in stp.c to keep port state
handling, MST slot management and hardware access together.

Move the associated function comments and register definitions with
the implementation. Add stp.h for the shared declarations and MST slot
structure, and update the callers and Makefile.

Replace the spanning-tree control register field with a per-chip
initialization callback so the register definitions remain private to
stp.c. Add a helper for updating non-CIST port states during bridge
join and leave.

Preserve the existing locking and forwarding behavior, and remove
excess blank lines left by the moved code.

Assisted-by: ChatGPT (OpenAI GPT-6 Astra)
Link: https://github.com/openwrt/openwrt/pull/25292
Signed-off-by: Markus Stockhausen &lt;markus.stockhausen@gmx.de&gt;
</comment><date>2026-09-21 17:52:00 +0200</date><id>14651b96832a9f9cef3b7bdcfb3dfecf9161ac58</id><msg>realtek: dsa: move STP and MST handling into a separate source file</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/vlan.h</file></path><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/debugfs.c</file></path><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl-otto.h</file></path><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl839x.c</file></path><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl931x.c</file></path><path><editType>add</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/stp.h</file></path><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl838x.c</file></path><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/common.c</file></path><path><editType>add</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/stp.c</file></path><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/vlan.c</file></path><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/Makefile</file></path><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/dsa.c</file></path><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl930x.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/qualcommbe/image/ipq95xx.mk</affectedPath><commitId>f6442c8840b891214b9814f499d41c383d250932</commitId><timestamp>1790064218000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>qualcommbe: ipq95xx: drop KERNEL_LOADADDR for askey_sbe1v1k

askey_sbe1v1k currently sets KERNEL_LOADADDR to 0x42080000, which is not
2MB-aligned. This trips the arm64 boot code's alignment check and
prints the following warning on every boot:

  [Firmware Bug]: Kernel image misaligned at boot, please fix your
  bootloader!

0x42080000 is a 2MB-aligned base plus the legacy TEXT_OFFSET of
0x80000, which arm64 kernels used before v5.8. Since v5.8, TEXT_OFFSET
is fixed at 0, so the kernel now expects the load address itself to sit
on a 2MB boundary. This target runs on much newer kernels, so the old
offset is stale and only serves to trigger the FW_BUG warning.

Instead of manually shifting the address, drop the device-specific
KERNEL_LOADADDR override entirely. This allows the image to fall back
to the target's default load address (0x41000000), which is properly
2MB-aligned and cleanly resolves the alignment warning.

Verified by both TFTP-booting the .itb and flashing the generated
sysupgrade image to a physical bare-metal device. The device boots
cleanly, operates stably, and the misalignment warning no longer appears.

Signed-off-by: Jackie Han &lt;jackie.han@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25283
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-22 10:03:38 +0200</date><id>f6442c8840b891214b9814f499d41c383d250932</id><msg>qualcommbe: ipq95xx: drop KERNEL_LOADADDR for askey_sbe1v1k</msg><path><editType>edit</editType><file>target/linux/qualcommbe/image/ipq95xx.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/qualcommax/dts/ipq6018-mr7500.dts</affectedPath><commitId>773a9c473f735289f9f8b608c5ade2a7e0778541</commitId><timestamp>1790067110000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>qualcommax: fix partition map and GPIO polarity for MR7500

Updates the MR7500 DTS to correctly map the partition containing the WAN
PHY firmware.
Also fixes inverted PHY reset polarity.

Signed-off-by: Ross Barnes-Brown &lt;true.robot.ross@gmail.com&gt;
Signed-off-by: Paweł Owoc &lt;frut3k7@gmail.com&gt;
Co-authored-by: Paweł Owoc &lt;frut3k7@gmail.com&gt;
</comment><date>2026-09-22 10:51:50 +0200</date><id>773a9c473f735289f9f8b608c5ade2a7e0778541</id><msg>qualcommax: fix partition map and GPIO polarity for MR7500</msg><path><editType>edit</editType><file>target/linux/qualcommax/dts/ipq6018-mr7500.dts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/generic/pending-6.18/739-05-net-pcs-add-driver-for-MediaTek-USXGMII-PCS.patch</affectedPath><commitId>328acd4e9d3407758c55917484823bc1726df64a</commitId><timestamp>1790076459000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>generic: remove Kconfig.orig from USXGMII PCS patch

The imported PCS patch accidentlly adds drivers/net/pcs/Kconfig.orig.
Remove this file from the patch.

Fixes: 18cbd83a1443 ("generic: 6.18: import updated standalone PCS handling")
Signed-off-by: Zhengping Zhang &lt;zhengping.zhang@airoha.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25319
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-22 13:27:39 +0200</date><id>328acd4e9d3407758c55917484823bc1726df64a</id><msg>generic: remove Kconfig.orig from USXGMII PCS patch</msg><path><editType>edit</editType><file>target/linux/generic/pending-6.18/739-05-net-pcs-add-driver-for-MediaTek-USXGMII-PCS.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/microchipsw/patches-6.18/0015-spi-atmel-quadspi-use-init-callback-for-gclk-variant.patch</affectedPath><affectedPath>target/linux/microchipsw/patches-6.18/0016-spi-atmel-quadspi-add-LAN969x-QSPI-support.patch</affectedPath><affectedPath>target/linux/microchipsw/patches-6.18/0014-v7.3-spi-atmel-quadspi-add-controller-init-callback.patch</affectedPath><affectedPath>target/linux/microchipsw/patches-6.18/0017-arm64-dts-microchip-lan969x-add-QSPI-nodes.patch</affectedPath><affectedPath>target/linux/microchipsw/patches-6.18/0017-v7.3-arm64-dts-microchip-lan969x-add-QSPI-nodes.patch</affectedPath><affectedPath>target/linux/microchipsw/patches-6.18/0016-v7.3-spi-atmel-quadspi-add-LAN969x-QSPI-support.patch</affectedPath><affectedPath>target/linux/microchipsw/patches-6.18/0015-v7.3-spi-atmel-quadspi-use-init-callback-for-gclk-variant.patch</affectedPath><affectedPath>target/linux/microchipsw/patches-6.18/0014-spi-atmel-quadspi-add-controller-init-callback.patch</affectedPath><commitId>809afa7e4312230beccb6829ed255f9b2f324290</commitId><timestamp>1790081597000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robert.marko</absoluteUrl><fullName>robert.marko</fullName></author><authorEmail>robert.marko@sartura.hr</authorEmail><comment>microchipsw: add version to QSPI backport

QSPI support was merged into 7.3, so mark the patches as such.

Signed-off-by: Robert Marko &lt;robert.marko@sartura.hr&gt;
</comment><date>2026-09-22 14:53:17 +0200</date><id>809afa7e4312230beccb6829ed255f9b2f324290</id><msg>microchipsw: add version to QSPI backport</msg><path><editType>add</editType><file>target/linux/microchipsw/patches-6.18/0014-v7.3-spi-atmel-quadspi-add-controller-init-callback.patch</file></path><path><editType>delete</editType><file>target/linux/microchipsw/patches-6.18/0017-arm64-dts-microchip-lan969x-add-QSPI-nodes.patch</file></path><path><editType>delete</editType><file>target/linux/microchipsw/patches-6.18/0015-spi-atmel-quadspi-use-init-callback-for-gclk-variant.patch</file></path><path><editType>delete</editType><file>target/linux/microchipsw/patches-6.18/0014-spi-atmel-quadspi-add-controller-init-callback.patch</file></path><path><editType>add</editType><file>target/linux/microchipsw/patches-6.18/0017-v7.3-arm64-dts-microchip-lan969x-add-QSPI-nodes.patch</file></path><path><editType>add</editType><file>target/linux/microchipsw/patches-6.18/0016-v7.3-spi-atmel-quadspi-add-LAN969x-QSPI-support.patch</file></path><path><editType>add</editType><file>target/linux/microchipsw/patches-6.18/0015-v7.3-spi-atmel-quadspi-use-init-callback-for-gclk-variant.patch</file></path><path><editType>delete</editType><file>target/linux/microchipsw/patches-6.18/0016-spi-atmel-quadspi-add-LAN969x-QSPI-support.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/microchipsw/patches-6.18/102-arm64-dts-microchip-ev23x71a-enable-QSPI.patch</affectedPath><affectedPath>target/linux/microchipsw/patches-6.18/100-mmc-sdhci-of-at91-disable-selectively-clocks-on-pm-r.patch</affectedPath><affectedPath>target/linux/microchipsw/patches-6.18/100-dt-bindings-mmc-atmel-sama5d2-sdhci-add-LAN969x-comp.patch</affectedPath><affectedPath>target/linux/microchipsw/patches-6.18/101-arm64-dts-microchip-lan969x-add-SDMMC-nodes.patch</affectedPath><affectedPath>target/linux/microchipsw/patches-6.18/104-arm64-dts-microchip-ev23x71a-enable-QSPI.patch</affectedPath><affectedPath>target/linux/microchipsw/patches-6.18/101-dt-bindings-mmc-atmel-sama5d2-sdhci-add-LAN969x-comp.patch</affectedPath><affectedPath>target/linux/microchipsw/patches-6.18/105-arm64-dts-microchip-ev23x71a-enable-eMMC.patch</affectedPath><affectedPath>target/linux/microchipsw/patches-6.18/103-arm64-dts-microchip-ev23x71a-enable-eMMC.patch</affectedPath><affectedPath>target/linux/microchipsw/patches-6.18/102-mmc-sdhci-of-at91-add-LAN969x-support.patch</affectedPath><affectedPath>target/linux/microchipsw/patches-6.18/103-arm64-dts-microchip-lan969x-add-SDMMC-nodes.patch</affectedPath><commitId>6727587d2439cca176aa948392ba34f04515f3d4</commitId><timestamp>1790081597000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robert.marko</absoluteUrl><fullName>robert.marko</fullName></author><authorEmail>robert.marko@sartura.hr</authorEmail><comment>microchipsw: use latest MMC patches

Use the latest version of MMC patches pending upstream.

Signed-off-by: Robert Marko &lt;robert.marko@sartura.hr&gt;
</comment><date>2026-09-22 14:53:17 +0200</date><id>6727587d2439cca176aa948392ba34f04515f3d4</id><msg>microchipsw: use latest MMC patches</msg><path><editType>add</editType><file>target/linux/microchipsw/patches-6.18/103-arm64-dts-microchip-lan969x-add-SDMMC-nodes.patch</file></path><path><editType>add</editType><file>target/linux/microchipsw/patches-6.18/100-mmc-sdhci-of-at91-disable-selectively-clocks-on-pm-r.patch</file></path><path><editType>add</editType><file>target/linux/microchipsw/patches-6.18/104-arm64-dts-microchip-ev23x71a-enable-QSPI.patch</file></path><path><editType>add</editType><file>target/linux/microchipsw/patches-6.18/101-dt-bindings-mmc-atmel-sama5d2-sdhci-add-LAN969x-comp.patch</file></path><path><editType>delete</editType><file>target/linux/microchipsw/patches-6.18/103-arm64-dts-microchip-ev23x71a-enable-eMMC.patch</file></path><path><editType>add</editType><file>target/linux/microchipsw/patches-6.18/102-mmc-sdhci-of-at91-add-LAN969x-support.patch</file></path><path><editType>delete</editType><file>target/linux/microchipsw/patches-6.18/102-arm64-dts-microchip-ev23x71a-enable-QSPI.patch</file></path><path><editType>add</editType><file>target/linux/microchipsw/patches-6.18/105-arm64-dts-microchip-ev23x71a-enable-eMMC.patch</file></path><path><editType>delete</editType><file>target/linux/microchipsw/patches-6.18/101-arm64-dts-microchip-lan969x-add-SDMMC-nodes.patch</file></path><path><editType>delete</editType><file>target/linux/microchipsw/patches-6.18/100-dt-bindings-mmc-atmel-sama5d2-sdhci-add-LAN969x-comp.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/dts/rtl9303_horaco_zx-swtgw2c8f.dts</affectedPath><commitId>b0a05388ed6e74c70241525192b5045f7a09e7e1</commitId><timestamp>1790088470000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/markus.stockhausen</absoluteUrl><fullName>markus.stockhausen</fullName></author><authorEmail>markus.stockhausen@gmx.de</authorEmail><comment>realtek: fix Horaco ZX-SWTGW2C8F port status LEDs for 2.5G

Corrected 2.5G port status LED operation

Signed-off-by: DSP ALU32 &lt;dspalu32@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25291
Signed-off-by: Markus Stockhausen &lt;markus.stockhausen@gmx.de&gt;
</comment><date>2026-09-22 16:47:50 +0200</date><id>b0a05388ed6e74c70241525192b5045f7a09e7e1</id><msg>realtek: fix Horaco ZX-SWTGW2C8F port status LEDs for 2.5G</msg><path><editType>edit</editType><file>target/linux/realtek/dts/rtl9303_horaco_zx-swtgw2c8f.dts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/dts/rtl9303_horaco_zx-swtgw2c8f.dts</affectedPath><commitId>45dc02ca085d552a3b95e763f8894e6e694bd0c3</commitId><timestamp>1790088470000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/markus.stockhausen</absoluteUrl><fullName>markus.stockhausen</fullName></author><authorEmail>markus.stockhausen@gmx.de</authorEmail><comment>realtek: fix Horaco ZX-SWTGW2C8F sysupgrade: MTD partition rename

Corrected name of 'firmware' MTD partition to fix sysupgrade (was 'runtime')

Signed-off-by: DSP ALU32 &lt;dspalu32@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25291
Signed-off-by: Markus Stockhausen &lt;markus.stockhausen@gmx.de&gt;
</comment><date>2026-09-22 16:47:50 +0200</date><id>45dc02ca085d552a3b95e763f8894e6e694bd0c3</id><msg>realtek: fix Horaco ZX-SWTGW2C8F sysupgrade: MTD partition rename</msg><path><editType>edit</editType><file>target/linux/realtek/dts/rtl9303_horaco_zx-swtgw2c8f.dts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/dts/rtl9303_horaco_zx-swtgw2c8f.dts</affectedPath><commitId>54937fe9d6420e390c23635bff0dea1c7a6a4da6</commitId><timestamp>1790088470000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/markus.stockhausen</absoluteUrl><fullName>markus.stockhausen</fullName></author><authorEmail>markus.stockhausen@gmx.de</authorEmail><comment>realtek: add SFP thermal zone/sensors for Horaco ZX-SWTGW2C8F

Added SFP thermal zone, in line with other RTL9303 devices on OpenWrt

Signed-off-by: DSP ALU32 &lt;dspalu32@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25291
Signed-off-by: Markus Stockhausen &lt;markus.stockhausen@gmx.de&gt;
</comment><date>2026-09-22 16:47:50 +0200</date><id>54937fe9d6420e390c23635bff0dea1c7a6a4da6</id><msg>realtek: add SFP thermal zone/sensors for Horaco ZX-SWTGW2C8F</msg><path><editType>edit</editType><file>target/linux/realtek/dts/rtl9303_horaco_zx-swtgw2c8f.dts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/l3.c</affectedPath><commitId>f4cf59fe1c11823d211854d70eeb351e8345d5d5</commitId><timestamp>1790088554000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/markus.stockhausen</absoluteUrl><fullName>markus.stockhausen</fullName></author><authorEmail>markus.stockhausen@gmx.de</authorEmail><comment>realtek: l3: do not queue FIB work for multicast routes

The FIB notifier lets the two multicast families through its filter, but
the branch that fills the work item runs only for AF_INET. An entry
event from ipmr or ip6mr therefore queues a work item whose fib_info
pointer is still the zero kzalloc() left there, and the add handler the
worker calls hands that NULL to fib_info_nh(), whose first act is to
read fi-&gt;nh. The box oopses there and panics.

The events are real ones: mr_call_mfc_notifiers() sends ENTRY_ADD,
ENTRY_REPLACE and ENTRY_DEL down the same chain this driver registers
on, once per multicast cache entry a routing daemon installs or removes.

What it takes is a kernel built with multicast routing, a daemon that
installs a cache entry, and a switch whose L3 setup is in place. The mfc
add and delete paths and mroute_clean_tables() emit these notifiers, in
ipmr and ip6mr alike, and mr_dump() replays every existing entry to a
notifier that has just registered - so the driver can also meet one at
its own probe, if a daemon installed it first. All of them start from
userspace. CONFIG_IP_MROUTE and CONFIG_IPV6_MROUTE are off in the generic
config and no realtek subtarget turns them on, so a stock image never
gets there either.

Given both, no command and no route added by hand are needed: an
RTL9303 with the offload compiled in and smcroute installed dies 58
seconds into its first boot, as the daemon opens its interfaces during
the ordinary network bring-up.

Measured the other way round as well: an image built the same way and
differing by this commit and one unrelated L3 fix runs on, 273 seconds
against a 58 second failure window, with nothing in the log. The RTL839x
carries its L3 setup outside any config symbol, so a build of that
family with multicast routing on is enough as well; the RTL930x
additionally needs the offload symbol, which no subtarget config sets.

Take only the two families the driver decodes.

Assisted-by: Claude:claude-opus-5
Signed-off-by: Gennaro Cimmino &lt;gcimmino@rayonra.net&gt;
Link: https://github.com/openwrt/openwrt/pull/25309
Signed-off-by: Markus Stockhausen &lt;markus.stockhausen@gmx.de&gt;
</comment><date>2026-09-22 16:49:14 +0200</date><id>f4cf59fe1c11823d211854d70eeb351e8345d5d5</id><msg>realtek: l3: do not queue FIB work for multicast routes</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/l3.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl931x.c</affectedPath><affectedPath>target/linux/realtek/files-6.18/include/linux/soc/realtek/otto_table.h</affectedPath><commitId>6b46fe37b517946906b93b9428ae0fc592f4f195</commitId><timestamp>1790091563000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/markus.stockhausen</absoluteUrl><fullName>markus.stockhausen</fullName></author><authorEmail>markus.stockhausen@gmx.de</authorEmail><comment>realtek: soc: define a macro for table reads with non zero word offset

The RTL931X utilizes the otto_table_read_bytes function in its DSA driver
as it needs field and mib offsets for stat reading.

This can be replaced by a proper otto_table_offset_read macro which takes
4th variable as a word offset for otto_table_read_bytes.

Signed-off-by: Rustam Adilov &lt;adilov@tutamail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25136
Signed-off-by: Markus Stockhausen &lt;markus.stockhausen@gmx.de&gt;
</comment><date>2026-09-22 17:39:23 +0200</date><id>6b46fe37b517946906b93b9428ae0fc592f4f195</id><msg>realtek: soc: define a macro for table reads with non zero word offset</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl931x.c</file></path><path><editType>edit</editType><file>target/linux/realtek/files-6.18/include/linux/soc/realtek/otto_table.h</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/soc/realtek/otto_table.c</affectedPath><commitId>3ac6d739fa3a284c0b0377b47b0b005beb62abc0</commitId><timestamp>1790091564000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/markus.stockhausen</absoluteUrl><fullName>markus.stockhausen</fullName></author><authorEmail>markus.stockhausen@gmx.de</authorEmail><comment>realtek: soc: split addr to ctrl/sts and data to read/write

In preparation for upcoming support of RTL9607C split the addr and
data properties of otto_table struct into control address, status
address and write and read data windows.

Signed-off-by: Rustam Adilov &lt;adilov@tutamail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25136
Signed-off-by: Markus Stockhausen &lt;markus.stockhausen@gmx.de&gt;
</comment><date>2026-09-22 17:39:24 +0200</date><id>3ac6d739fa3a284c0b0377b47b0b005beb62abc0</id><msg>realtek: soc: split addr to ctrl/sts and data to read/write</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/soc/realtek/otto_table.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/soc/realtek/otto_table.c</affectedPath><commitId>188f5ef394c7e78bf98c914326d83c93c938c7d9</commitId><timestamp>1790091564000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/markus.stockhausen</absoluteUrl><fullName>markus.stockhausen</fullName></author><authorEmail>markus.stockhausen@gmx.de</authorEmail><comment>realtek: soc: add busy status bit property

The TBL_ACCESS_CTRL register of RTL9607C does not have an execute
bit and thus relies on a separate busy bit in its TBL_ACCESS_STS
register. Add a busy bit with -1 describing the lack of that bit
in the table registers.

Signed-off-by: Rustam Adilov &lt;adilov@tutamail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25136
Signed-off-by: Markus Stockhausen &lt;markus.stockhausen@gmx.de&gt;
</comment><date>2026-09-22 17:39:24 +0200</date><id>188f5ef394c7e78bf98c914326d83c93c938c7d9</id><msg>realtek: soc: add busy status bit property</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/soc/realtek/otto_table.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/soc/realtek/otto_table.c</affectedPath><commitId>bdc34d92af2b0589406325a6f6572486f5e54d99</commitId><timestamp>1790091564000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/markus.stockhausen</absoluteUrl><fullName>markus.stockhausen</fullName></author><authorEmail>markus.stockhausen@gmx.de</authorEmail><comment>realtek: soc: add addr lsb and addr msb properties to table struct

The address bit field of TBL_ACCESS_CTRL register on RTL9607C is not located
at 0 lsb. Introduce new addr lsb and addr msb properties to otto_table struct.
This also accidentally fixes the address mask of OTTO_REG_9300_L2 table as the
"BIT(t_bit) - 1" would result in an extra 2 bits.

Signed-off-by: Rustam Adilov &lt;adilov@tutamail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25136
Signed-off-by: Markus Stockhausen &lt;markus.stockhausen@gmx.de&gt;
</comment><date>2026-09-22 17:39:24 +0200</date><id>bdc34d92af2b0589406325a6f6572486f5e54d99</id><msg>realtek: soc: add addr lsb and addr msb properties to table struct</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/soc/realtek/otto_table.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/soc/realtek/otto_table.c</affectedPath><commitId>a74fa4bf4dd60243fe4e81c76b57c3813ae168e7</commitId><timestamp>1790091564000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/markus.stockhausen</absoluteUrl><fullName>markus.stockhausen</fullName></author><authorEmail>markus.stockhausen@gmx.de</authorEmail><comment>realtek: soc: add read/write execute bits

The RTL9607C NAT_TBL_ACCESS_CTRL register has 2 split execute bits for read and
write operations and thus does not have command bit. Add the read/write execute
bit to otto_table struct and change c_bit to signed where -1 is unused to make
NAT_TBL_ACCESS_CTRL work.

Signed-off-by: Rustam Adilov &lt;adilov@tutamail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25136
Signed-off-by: Markus Stockhausen &lt;markus.stockhausen@gmx.de&gt;
</comment><date>2026-09-22 17:39:24 +0200</date><id>a74fa4bf4dd60243fe4e81c76b57c3813ae168e7</id><msg>realtek: soc: add read/write execute bits</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/soc/realtek/otto_table.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/soc/realtek/otto_table.c</affectedPath><commitId>070ed83c88f209a7b3e27c2ee2a7e7eaaace3ac8</commitId><timestamp>1790091564000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/markus.stockhausen</absoluteUrl><fullName>markus.stockhausen</fullName></author><authorEmail>markus.stockhausen@gmx.de</authorEmail><comment>realtek: soc: add m_bit and hit_bit properties

The RTL9607C has access method bit field that is used as a look-up
method for read queries of L2 tables and hit bit for whether or not
the table query found an entry. It is exactly the same as how L2
tables are interfaced on RTL8365MB switch as per rtl8365mb_table in
its DSA driver.

For now only the otto_table sruct is changed for description purposes
without adding the functionality.

Signed-off-by: Rustam Adilov &lt;adilov@tutamail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25136
Signed-off-by: Markus Stockhausen &lt;markus.stockhausen@gmx.de&gt;
</comment><date>2026-09-22 17:39:24 +0200</date><id>070ed83c88f209a7b3e27c2ee2a7e7eaaace3ac8</id><msg>realtek: soc: add m_bit and hit_bit properties</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/soc/realtek/otto_table.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/soc/realtek/otto_table.c</affectedPath><affectedPath>target/linux/realtek/files-6.18/include/linux/soc/realtek/otto_table.h</affectedPath><commitId>1a881f81d088b4fbabcd4db4bd79cdb6cdf12ad9</commitId><timestamp>1790091564000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/markus.stockhausen</absoluteUrl><fullName>markus.stockhausen</fullName></author><authorEmail>markus.stockhausen@gmx.de</authorEmail><comment>realtek: soc: add offset parameter to otto_table_map

Add the offset parameter to otto_table_map struct since some RTL9607C tables
like ACL_DATA and CF_RULE_T* require addition of an offset to their index to
differentiate from their MASK table counterpart.

Signed-off-by: Rustam Adilov &lt;adilov@tutamail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25136
Signed-off-by: Markus Stockhausen &lt;markus.stockhausen@gmx.de&gt;
</comment><date>2026-09-22 17:39:24 +0200</date><id>1a881f81d088b4fbabcd4db4bd79cdb6cdf12ad9</id><msg>realtek: soc: add offset parameter to otto_table_map</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/soc/realtek/otto_table.c</file></path><path><editType>edit</editType><file>target/linux/realtek/files-6.18/include/linux/soc/realtek/otto_table.h</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/soc/realtek/otto_table.c</affectedPath><affectedPath>target/linux/realtek/files-6.18/include/linux/soc/realtek/otto_table.h</affectedPath><commitId>07a2f397383799cc0acc73bec3a61eceff83262e</commitId><timestamp>1790091564000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/markus.stockhausen</absoluteUrl><fullName>markus.stockhausen</fullName></author><authorEmail>markus.stockhausen@gmx.de</authorEmail><comment>realtek: soc: add support for RTL9607C Tables

The RTL9607C SoC is another Otto family member with very identical indirect
table access as the rest of existing switch SoCs. It has two registers that
control tables: TBL_ACCESS_CTRL for LUT, VLAN, ACL and Classification tables
and NAT_TBL_ACCESS_CTRL for HWNAT related tables.

Add these two main control registers to OTTO_REG_LIST and all of their tables
to otto_table_maps and otto_table_id in header file.

Signed-off-by: Rustam Adilov &lt;adilov@tutamail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25136
Signed-off-by: Markus Stockhausen &lt;markus.stockhausen@gmx.de&gt;
</comment><date>2026-09-22 17:39:24 +0200</date><id>07a2f397383799cc0acc73bec3a61eceff83262e</id><msg>realtek: soc: add support for RTL9607C Tables</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/include/linux/soc/realtek/otto_table.h</file></path><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/soc/realtek/otto_table.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>scripts/download.pl</affectedPath><commitId>ffef939ec42a94d5f31018f876515c00b1ae5dc9</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>scripts/download.pl: delete local file with hash mismatch

The unlink of a local file with a hash mismatch comes after the die,
so it never runs. The message says that the file is deleted, but it
stays, and every following build fails in the same way.

Delete the file before the die, so that the next run downloads it
again.

Fixes: 4e19cbc553 ("download: handle possibly invalid local tarballs")
Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>ffef939ec42a94d5f31018f876515c00b1ae5dc9</id><msg>scripts/download.pl: delete local file with hash mismatch</msg><path><editType>edit</editType><file>scripts/download.pl</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/boot/uboot-mediatek/Makefile</affectedPath><commitId>468176411cb819cf6c5b09d3383e91cded6622ce</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>uboot-mediatek: rebuild the fip if BL31 changed

The fip contains BL31 from trusted-firmware-a, but the U-Boot build does
not depend on it. After a rebuild of trusted-firmware-a, the fip and the
images that contain it keep the old BL31.

Make the build stamp depend on the BL31 image.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>468176411cb819cf6c5b09d3383e91cded6622ce</id><msg>uboot-mediatek: rebuild the fip if BL31 changed</msg><path><editType>edit</editType><file>package/boot/uboot-mediatek/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/package.mk</affectedPath><commitId>a0e191667cac3447017c29fd76cad6843b045b58</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: exclude apk staging dirs from the autorebuild check

The rdep check on PKG_BUILD_DIR excludes the ipkg-* staging dirs, but
not the apk-* ones. The package step writes the apk scripts after
.built is touched. If this crosses a second boundary, the next build
sees newer files and packs the package again, which starts the loop
again. The kernel package with its kmods takes several seconds to pack
and is repacked on every build.

Anchor the pattern to PKG_BUILD_DIR, as a plain "*/apk-*" also matches
the build dir of the apk package itself.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>a0e191667cac3447017c29fd76cad6843b045b58</id><msg>build: exclude apk staging dirs from the autorebuild check</msg><path><editType>edit</editType><file>include/package.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>scripts/package-metadata.pl</affectedPath><commitId>f8471d798ec7694a477b7605bbeb5dcb7e9b5256</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>scripts/package-metadata.pl: keep the depends of real packages

pkgaux writes Package/&lt;name&gt;/depends for every name that a package
provides. If a package provides the name of another real package, it
overwrites the dependencies of that package: dnsmasq-full provides
dnsmasq, so dnsmasq gets the dependencies of dnsmasq-full, among them
nftables-json and libnftnl.

These lists are used for the library dependencies of the prepare
stamp. dnsmasq thus depends on libnftnl without being ordered after it,
and is built again in the build that follows a clean build.

Skip provided names that belong to another real package.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>f8471d798ec7694a477b7605bbeb5dcb7e9b5256</id><msg>scripts/package-metadata.pl: keep the depends of real packages</msg><path><editType>edit</editType><file>scripts/package-metadata.pl</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/package.mk</affectedPath><commitId>be3937dfbc341085a423d9518cfaf63c4d347235</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: only track library dependencies of selected packages

The prepare stamp of a Makefile depends on the library version files
of every package it defines, selected or not. Packages that are not
selected are not in the dependency graph of the top-level build, so
their libraries can be built after the package in a parallel build,
and the package is prepared and built again on the next run.

The own packages of a Makefile are only filtered out if they are
defined before the packages that depend on them. mac80211 defines
cfg80211 and mac80211 after the drivers, so it depends on its own
version files, and every clean build is followed by a rebuild of
mac80211, mt76 and linux-firmware.

Only add the library dependencies of selected packages, or of all
packages if DEVELOPER is set.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>be3937dfbc341085a423d9518cfaf63c4d347235</id><msg>build: only track library dependencies of selected packages</msg><path><editType>edit</editType><file>include/package.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>scripts/package-metadata.pl</affectedPath><commitId>4547335cc7d17bc6c0ab168e0d570fb479ae0ea1</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>scripts/package-metadata.pl: keep the condition of package depends

gen_package_auxiliary drops the condition of a dependency such as
+BUILD_NLS:libintl-full, so the ABI version check of a package also
counts packages that it does not depend on in this configuration.

With all packages selected and BUILD_NLS not set, libelf depends on
libintl-full. gettext-full is built after elfutils, and its new
libintl-full.version causes elfutils, and binutils, gdb, strace,
iproute2 and others through it, to be built again on the next make
call.

Write the condition as a make expression with get_conditional_dep, as
gen_package_mk does.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>4547335cc7d17bc6c0ab168e0d570fb479ae0ea1</id><msg>scripts/package-metadata.pl: keep the condition of package depends</msg><path><editType>edit</editType><file>scripts/package-metadata.pl</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>scripts/package-metadata.pl</affectedPath><commitId>d0379f4a5a3c4e9b535727711b76f8457dbc9c48</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>scripts/package-metadata.pl: list every build variant only once

If several packages of a source use the same build variant, the
variant is added to the list of variants once for each selected
package, and the variant is built as often, one after the other. With
all packages selected, hostapd builds 4 variants twice, and f2fs-tools
its 2 variants four times each.

Add each variant once, with the condition of all packages that use it.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>d0379f4a5a3c4e9b535727711b76f8457dbc9c48</id><msg>scripts/package-metadata.pl: list every build variant only once</msg><path><editType>edit</editType><file>scripts/package-metadata.pl</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/subdir.mk</affectedPath><commitId>39ed48c8f12eec91d5bf39d37ca666b6a937cc87</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: clean all stamps of a subdir

stampfile assigns the clean rule of its stamp to &lt;subdir&gt;//clean with
:=, so every call replaces the one before. toolchain and tools define
a compile and a check stamp, and &lt;subdir&gt;/clean only removes the check
stamp. After "make toolchain/clean", the compile stamp is newer than the
toolchain sources, the next build takes the toolchain as built, and the
target build fails because the compiler is missing.

Append the clean rule instead, so that all stamps are removed.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>39ed48c8f12eec91d5bf39d37ca666b6a937cc87</id><msg>build: clean all stamps of a subdir</msg><path><editType>edit</editType><file>include/subdir.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/subdir.mk</affectedPath><commitId>1315d219498e25e9cfe3c9666855b71fa4013cdb</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: log failed host builds in the error file of the subdir

Commit 501123eb7a ("include/subdir: on build failure always print
error") passes $(2) instead of $(1) to ERROR for the builds of a build
type, such as host builds. subdir has no second parameter, so with
BUILD_LOG set a failed host build is written to logs/error.txt instead
of logs/package/error.txt, where the other errors of the subdir go.

Fixes: 501123eb7a ("include/subdir: on build failure always print error")
Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>1315d219498e25e9cfe3c9666855b71fa4013cdb</id><msg>build: log failed host builds in the error file of the subdir</msg><path><editType>edit</editType><file>include/subdir.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>rules.mk</affectedPath><commitId>83b7310eb3897afa20d8bbddd59638b2614b3f73</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: do not share a file for the 64-bit time_t test

YEAR_2038 writes its test program to $(TMP_DIR)/year2038.c and deletes
it after the test. Packages that are built in parallel run the test at
the same time and use the same file, so one of them can compile a
partly written file or find no file. The test then fails, and the host
build is configured with --disable-year2038.

Pass the test program to the compiler on stdin instead.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>83b7310eb3897afa20d8bbddd59638b2614b3f73</id><msg>build: do not share a file for the 64-bit time_t test</msg><path><editType>edit</editType><file>rules.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/depends.mk</affectedPath><commitId>5433adbc6e53ea21b235d391240b716603986b5e</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: sort the file list for the stamp hash in the C locale

find_md5 sorts the list of package files with the locale of the user.
The top-level Makefile sets LC_ALL=C, but a make call in a package
directory, such as make -C package/kernel/linux, uses the locale of
the shell. With en_GB.UTF-8, some file names sort in a different
order, so the hash and the name of the prepared stamp differ, and the
package is built again. The next top-level build then builds it again.

Always sort in the C locale.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>5433adbc6e53ea21b235d391240b716603986b5e</id><msg>build: sort the file list for the stamp hash in the C locale</msg><path><editType>edit</editType><file>include/depends.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/network/utils/xdp-tools/Makefile</affectedPath><affectedPath>package/network/utils/xdp-tools/patches/0004-configure-do-not-use-bash-redirection.patch</affectedPath><commitId>111e92cce05f7e32996b7f0dd56d42e2d86e61ee</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>xdp-tools: find the arch headers of the toolchain for the BPF programs

The configure script of xdp-tools sets ARCH_INCLUDES only from the
multiarch directory of a native compiler. For a cross compiler it stays
empty, and clang takes &lt;linux/types.h&gt; for the BPF programs from
/usr/include of the host. On hosts that have &lt;asm/types.h&gt; only in the
multiarch directory, such as Debian without gcc-multilib, the build
fails:

  /usr/include/linux/types.h:5:10: fatal error: 'asm/types.h' file not found

Add the include directories of the toolchain with -idirafter. They are
searched after the headers of xdp-tools and of the system, as the
multiarch directory of a native build, so they do not replace the Linux
headers that xdp-tools ships. The target compiler already has them as
system directories.

The configure script also tests for bpftool with the bash redirection &amp;&gt;.
/bin/sh may be dash, which runs the command in the background instead, so
configure drops a working bpftool and takes the output of whereis. Add a
second patch that uses &gt;/dev/null 2&gt;&amp;1, which every shell supports.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>111e92cce05f7e32996b7f0dd56d42e2d86e61ee</id><msg>xdp-tools: find the arch headers of the toolchain for the BPF programs</msg><path><editType>edit</editType><file>package/network/utils/xdp-tools/Makefile</file></path><path><editType>add</editType><file>package/network/utils/xdp-tools/patches/0004-configure-do-not-use-bash-redirection.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/boot/uboot-tools/uboot-envtools/files/uboot-envtools.sh</affectedPath><commitId>bda729e82f200b3c338ac313c70e616285e4872e</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>uboot-envtools: remove stray output from the boot log

/etc/uci-defaults/30_uboot-envtools runs in preinit, before the board
file is generated. Two of its helpers write to the console:

* uci batch prints the name of every anonymous section that "add"
  creates, and nothing redirects stdout.
* grep -q hides a match, but it still reports a file that does not
  exist. /etc/fw_env.config is absent until the first append creates it.

On the first boot after a flash this puts three lines on the console:

    cfg016cb7
    cfg026cb7
    grep: /etc/fw_env.config: No such file or directory

Redirect the batch output and add -s to the grep.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>bda729e82f200b3c338ac313c70e616285e4872e</id><msg>uboot-envtools: remove stray output from the boot log</msg><path><editType>edit</editType><file>package/boot/uboot-tools/uboot-envtools/files/uboot-envtools.sh</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/kernel/lantiq/ltq-ifxos/Makefile</affectedPath><affectedPath>package/kernel/lantiq/ltq-deu/Makefile</affectedPath><affectedPath>package/kernel/lantiq/ltq-adsl-mei/Makefile</affectedPath><commitId>fbd3048f21857c53416a42181a6e9ababba4a716</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>lantiq: pass the kernel make flags to three module packages

ltq-adsl-mei and ltq-deu call make directly after a cd into the kernel
directory, and ltq-ifxos builds its module through autotools. None of them
pass KERNEL_MAKE_FLAGS, so the module compile runs without the
-ffile-prefix-map that iremap adds. WARN_ON_ONCE() in check_copy_size()
expands to warn_slowpath_fmt(__FILE__, ...), so the absolute build path
lands in the .ko.

Measured on the published snapshot packages of lantiq/xway and
xrx200_legacy:
- drv_mei_cpe.ko holds
  /builder/shared-workdir/build/build_dir/target-mips_24kc_musl/linux-lantiq_xway/linux-6.18.52/include/linux/ucopysize.h
- drv_ifxos.ko holds the same path for linux-lantiq_xrx200_legacy
- ltq_atm_danube.ko, built with the flags, holds no such string

The module size follows the length of the build path, so the apk record
and every image that carries the module differ between two builds in
different directories.

ltq_deu_vr9.ko holds no such string today, but the package has the same
defect.

Pass the flags in the same way as ltq-atm and ltq-vdsl-vr9-mei already do.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>fbd3048f21857c53416a42181a6e9ababba4a716</id><msg>lantiq: pass the kernel make flags to three module packages</msg><path><editType>edit</editType><file>package/kernel/lantiq/ltq-deu/Makefile</file></path><path><editType>edit</editType><file>package/kernel/lantiq/ltq-adsl-mei/Makefile</file></path><path><editType>edit</editType><file>package/kernel/lantiq/ltq-ifxos/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/package.mk</affectedPath><commitId>728fb15aff43e37aa3be02fb3d97277f825b504b</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: use a separate staging directory per build variant

All variants of a package collect their InstallDev files in the same
directory below $(TMP_DIR) and remove it before and after use. Add the
build variant to its name, as for the staging file list, so that the
variants of a package do not share it.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>728fb15aff43e37aa3be02fb3d97277f825b504b</id><msg>build: use a separate staging directory per build variant</msg><path><editType>edit</editType><file>include/package.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/boot/uboot-mediatek/Makefile</affectedPath><commitId>df6a1c978bda765bf684b6b7fb76ad100328ea2a</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>uboot-mediatek: compress BL31 in the build directory

With FIP_COMPRESS set, the fip step compresses the BL31 image next to
the original in the staging directory. All U-Boot variants for the same
SoC, boot device and DRAM type write the same file.

Write the compressed BL31 to the build directory of the variant instead.
The fip does not change.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>df6a1c978bda765bf684b6b7fb76ad100328ea2a</id><msg>uboot-mediatek: compress BL31 in the build directory</msg><path><editType>edit</editType><file>package/boot/uboot-mediatek/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/package-dumpinfo.mk</affectedPath><affectedPath>scripts/metadata.pm</affectedPath><affectedPath>include/subdir.mk</affectedPath><affectedPath>scripts/package-metadata.pl</affectedPath><commitId>2d40469602c0152ac17e23ca72b4f4ace32fa11a</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: allow packages to build their variants in parallel

The variants of a package are built one after the other in one recipe.
For packages with many variants, such as the boot loaders, this makes
the variants the longest chain of the package build, also if nothing
has to be done.

Add PKG_PARALLEL_VARIANTS. If a package sets it, every variant gets its
own make target with the dependencies of the package, and the package
target depends on these targets. A package must only set it if its
variants share no files outside of their build directories.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>2d40469602c0152ac17e23ca72b4f4ace32fa11a</id><msg>build: allow packages to build their variants in parallel</msg><path><editType>edit</editType><file>include/subdir.mk</file></path><path><editType>edit</editType><file>scripts/metadata.pm</file></path><path><editType>edit</editType><file>scripts/package-metadata.pl</file></path><path><editType>edit</editType><file>include/package-dumpinfo.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/boot/arm-trusted-firmware-mediatek/Makefile</affectedPath><affectedPath>package/boot/uboot-mediatek/Makefile</affectedPath><commitId>b8d89de6e07934e9264d4c2c6fef834be0a52f9e</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>mediatek: build the boot loader variants in parallel

The variants of arm-trusted-firmware-mediatek and uboot-mediatek only
write to their own build directories and to files in the staging and
bin directories that have the variant in their name.

For the OpenWrt One, a clean build of the 9 TF-A variants takes 2 s
instead of 11 s, and of the 2 U-Boot variants 12 s instead of 21 s.
The images do not change.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>b8d89de6e07934e9264d4c2c6fef834be0a52f9e</id><msg>mediatek: build the boot loader variants in parallel</msg><path><editType>edit</editType><file>package/boot/arm-trusted-firmware-mediatek/Makefile</file></path><path><editType>edit</editType><file>package/boot/uboot-mediatek/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/network/services/hostapd/Makefile</affectedPath><commitId>b029d56e0bd0c4e044c6e5d918e0da96223ab8da</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>hostapd: build the variants in parallel

The variants only write to their own build directories. The packages
without a variant are only built by the first variant.

With all packages selected, a clean build of the 31 variants takes 46 s
instead of 114 s, and the packages do not change. Together with the
commit that lists every build variant only once, a build that has
nothing to do takes 17 s instead of 33 s, as the variants were the
longest chain of it.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>b029d56e0bd0c4e044c6e5d918e0da96223ab8da</id><msg>hostapd: build the variants in parallel</msg><path><editType>edit</editType><file>package/network/services/hostapd/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/libs/gettext-full/Makefile</affectedPath><commitId>b8d8bb9ba3084a7c611f02e06f3cba4e6ba6bbb2</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>gettext-full: enable parallel builds again

Commit 30fb675847 ("gettext-full: disable parallel compilation")
disabled parallel builds of gettext 0.21, as they failed with make -j12.

With gettext 0.24.2, the host and the target build passed four times
each with make -j24, and libintl-full does not change. The host build
takes 172 s instead of 231 s, and the target build 142 s instead of
214 s. With all packages selected, both are on the longest chain of a
clean build.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>b8d8bb9ba3084a7c611f02e06f3cba4e6ba6bbb2</id><msg>gettext-full: enable parallel builds again</msg><path><editType>edit</editType><file>package/libs/gettext-full/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>tools/mtd-utils/Makefile</affectedPath><affectedPath>tools/erofs-utils/Makefile</affectedPath><affectedPath>tools/cpio/Makefile</affectedPath><commitId>3d597977b6616cc4206d5a95b134f13e581032b5</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>tools: build erofs-utils, mtd-utils and cpio in parallel

A tool builds with -j1 unless it sets HOST_BUILD_PARALLEL, and 45 of the
73 tools do not set it. These three gain the most from the job server on
a cold build of this tree:

  erofs-utils  23.11 s -&gt; 15.73 s
  mtd-utils    11.70 s -&gt;  6.42 s
  cpio          8.46 s -&gt;  3.56 s

Each one builds three times out of three with the job server, and each
build writes a tree that is identical to the one a serial build writes.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>3d597977b6616cc4206d5a95b134f13e581032b5</id><msg>tools: build erofs-utils, mtd-utils and cpio in parallel</msg><path><editType>edit</editType><file>tools/mtd-utils/Makefile</file></path><path><editType>edit</editType><file>tools/cpio/Makefile</file></path><path><editType>edit</editType><file>tools/erofs-utils/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/utils/mtd-utils/Makefile</affectedPath><affectedPath>package/libs/libselinux/Makefile</affectedPath><affectedPath>package/libs/libsepol/Makefile</affectedPath><commitId>bb332115ba1db784b05eabf258ab407aeff7f00e</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>package: build mtd-utils, libsepol and libselinux in parallel

A package builds with -j1 unless it sets PKG_BUILD_PARALLEL, and 171 of
the 220 packages do not set it. These three gain the most from the job
server on a cold build of this tree:

  mtd-utils   24.77 s -&gt; 6.43 s
  libsepol    17.99 s -&gt; 2.18 s
  libselinux   7.82 s -&gt; 1.89 s

mtd-utils runs while nothing else does, so its 18 s count against the
wall clock in full.

Each one builds three times out of three with the job server, and each
build writes a tree that is identical to the one a serial build writes.
nftables gains as well, 17.9 s to 13.0 s, but it is left alone: its
build directory differs between two serial builds, so the check that
covers the other three says nothing about it.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>bb332115ba1db784b05eabf258ab407aeff7f00e</id><msg>package: build mtd-utils, libsepol and libselinux in parallel</msg><path><editType>edit</editType><file>package/libs/libselinux/Makefile</file></path><path><editType>edit</editType><file>package/libs/libsepol/Makefile</file></path><path><editType>edit</editType><file>package/utils/mtd-utils/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/kernel.mk</affectedPath><commitId>a15df1972728e44802d78a8694915527966ea624</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>kernel: filter versioned kmod items in make

version_filter calls package-metadata.pl for every list that contains
a versioned item such as "foo@ge6.18". Parsing package/kernel/linux
runs it about 40 times, which takes 1.3 s of 2.2 s, and this parse is
on the critical path of every build.

Filter items of the form &lt;name&gt;@&lt;op&gt;&lt;version&gt; in make. The version
comparison stays in package-metadata.pl, but runs only once per
version. Other forms are passed to package-metadata.pl as before.

The only difference in the output: items without a version condition
are no longer passed through the shell, so quotes in a KCONFIG value
are kept. That list is only used for variable names, so the result is
the same. All kmod packages and images are identical.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>a15df1972728e44802d78a8694915527966ea624</id><msg>kernel: filter versioned kmod items in make</msg><path><editType>edit</editType><file>include/kernel.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>rules.mk</affectedPath><commitId>d29ffc6f39c383b9fc3e15b52837488c6d556a12</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: evaluate NPROC only once

NPROC is a recursive variable, so every use starts a shell. The image
Makefile expands the initramfs rule once per device, which runs nproc
about 200 times and makes the parse of the mediatek image Makefile take
about 1 s. It is parsed twice per build.

Evaluate it on first use and keep the result.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>d29ffc6f39c383b9fc3e15b52837488c6d556a12</id><msg>build: evaluate NPROC only once</msg><path><editType>edit</editType><file>rules.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/toplevel.mk</affectedPath><commitId>177325ba1a7860994aea060d861e1513ea91c5b4</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: compute REVISION and SOURCE_DATE_EPOCH once per build

The top-level Makefile calls itself for prereq and for the build, and
every call runs getver.sh and get_source_date_epoch.sh again, although
the values are already exported by the first call.

Take them from the environment in recursive calls. The first call still
computes them, so a value in the environment of the user is ignored as
before.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>177325ba1a7860994aea060d861e1513ea91c5b4</id><msg>build: compute REVISION and SOURCE_DATE_EPOCH once per build</msg><path><editType>edit</editType><file>include/toplevel.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/toplevel.mk</affectedPath><commitId>e3a89c4e4bcd25158690408cfc52886b4e67e602</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: detect the host triplet once per build

The top-level Makefile calls itself for prereq and for the build, and
every call runs config.guess again. config.guess runs the host C
compiler three times, which takes about 40 ms.

Take GNU_HOST_NAME from the environment in recursive calls, as for
REVISION and SOURCE_DATE_EPOCH.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>e3a89c4e4bcd25158690408cfc52886b4e67e602</id><msg>build: detect the host triplet once per build</msg><path><editType>edit</editType><file>include/toplevel.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/feeds.mk</affectedPath><commitId>f5fb15d8698ffd2feff34d30842a619544450c38</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: list the available feeds only when needed

feeds.mk runs "scripts/feeds list -n" when it is included, which
happens in every package Makefile. The list is only needed to find the
package directories of the feeds, which a package Makefile only does
when it creates or cleans a package.

Evaluate FEEDS_AVAILABLE on first use.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>f5fb15d8698ffd2feff34d30842a619544450c38</id><msg>build: list the available feeds only when needed</msg><path><editType>edit</editType><file>include/feeds.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Makefile</affectedPath><commitId>6b009ee3eafe1dd1651ef49eb73180e94a4ee3e9</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: create the index, image info and checksums in one make call

world runs package/index, json_overview_image_info and checksum as
three separate calls of the top-level Makefile, and each call parses it
again. The calls run without -j, so one call with all three goals runs
them in the same order.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>6b009ee3eafe1dd1651ef49eb73180e94a4ee3e9</id><msg>build: create the index, image info and checksums in one make call</msg><path><editType>edit</editType><file>Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/host-build.mk</affectedPath><affectedPath>include/package.mk</affectedPath><affectedPath>include/depends.mk</affectedPath><commitId>842611776de08eaa24f1205a8bd7b93461667887</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: hash the package files only once per Makefile

Build/CoreTargets fixes the value of STAMP_PREPARED, but its expansion
references STAMP_PREPARED several times before that happens, and every
reference hashes all files of the package again with find and mkhash.
HOST_STAMP_PREPARED carries the same hash and the same cost.

Compute the hash on first use in PKG_FILES_MD5 and keep it. Both stamps
read it.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>842611776de08eaa24f1205a8bd7b93461667887</id><msg>build: hash the package files only once per Makefile</msg><path><editType>edit</editType><file>include/package.mk</file></path><path><editType>edit</editType><file>include/depends.mk</file></path><path><editType>edit</editType><file>include/host-build.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>rules.mk</affectedPath><commitId>43a9ff1c9430cf64891bcfaea5cdbe437c9f28a7</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: compute the hash of a config symbol list only once

confvar runs a shell and mkhash every time make expands a stamp name that
contains it, 21 times in a make call for a package with a host build,
also if nothing has to be done.

The config symbols do not change during a make call, so keep the hash
of each list of symbols after the first use.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>43a9ff1c9430cf64891bcfaea5cdbe437c9f28a7</id><msg>build: compute the hash of a config symbol list only once</msg><path><editType>edit</editType><file>rules.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/package.mk</affectedPath><commitId>a44d3e32563168b9022f779f567456e6efdcb013</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: find the source date of a package only once per directory

Make expands PKG_SOURCE_DATE_EPOCH for every recipe of a package, as
package-pack.mk exports it to the recipes. Every expansion runs
get_source_date_epoch.sh, which runs git.

Keep the result for each directory. The directory still depends on
whether the build directory has a version.date file.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>a44d3e32563168b9022f779f567456e6efdcb013</id><msg>build: find the source date of a package only once per directory</msg><path><editType>edit</editType><file>include/package.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/host-build.mk</affectedPath><commitId>64acf8343569ebc221e6d209d4daf92e37af3f6a</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: test for 64-bit time_t only when a host build needs it

host-build.mk runs the YEAR_2038 compiler test while it parses, so every
package with a host build runs it on every make call, also for a target
build or a build that has nothing to do.

Add the result to HOST_CONFIGURE_ARGS without expanding it, so the test
runs only when the host build is configured.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>64acf8343569ebc221e6d209d4daf92e37af3f6a</id><msg>build: test for 64-bit time_t only when a host build needs it</msg><path><editType>edit</editType><file>include/host-build.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/package-pack.mk</affectedPath><affectedPath>include/package.mk</affectedPath><commitId>9772acb4f7cb5892b99ccaf034b61ab9c4fe9126</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: only define the clean rule for packages not selected

BuildPackage expands the full BuildTarget/ipkg for every package in a
Makefile, whether it is selected or not. package/kernel/linux defines
more than 1000 kmods, and this takes about 0.9 s of its 1.2 s parse,
which is on the critical path of every build.

Move the clean rule into BuildTarget/ipkg/disabled, and only expand it
for packages that are not selected, unless DEVELOPER is set. The other
rules of such a package can not be reached, as its compile target only
depends on them if the package is selected. Target types without a
disabled variant are expanded as before.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>9772acb4f7cb5892b99ccaf034b61ab9c4fe9126</id><msg>build: only define the clean rule for packages not selected</msg><path><editType>edit</editType><file>include/package.mk</file></path><path><editType>edit</editType><file>include/package-pack.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/image.mk</affectedPath><commitId>6258a11bacdb5840b40a7a35e7f60b8d68a6eaab</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>image: only define the rules of selected devices

A target defines more than 100 devices, and the image Makefile
expands the kernel, image and artifact rules of every one of them. The
rules of a device that is not selected are only reachable through
install-disabled and compile-disabled, so nothing uses them. The image
Makefile is parsed twice per build, 0.3 s each for mediatek.

Only expand Device/Build for selected devices, and for all devices if
CONFIG_IB is set, as the ImageBuilder compiles them all.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>6258a11bacdb5840b40a7a35e7f60b8d68a6eaab</id><msg>image: only define the rules of selected devices</msg><path><editType>edit</editType><file>include/image.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/subdir.mk</affectedPath><commitId>407e8331402f94e1eae5addda38fdf5a90afdcd6</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: expand the subdir recipes only when they run

subdir expands the recipe of every target of every build directory when
it creates the rules, although make runs only a few of them. The main
Makefile creates these rules on every make call, and a build calls it
several times in a row.

Put only a call of the recipe into the rules, so that make expands it
when the recipe runs. The commands do not change. The parse of the main
Makefile takes 0.10 s instead of 0.15 s, with 318 package directories.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>407e8331402f94e1eae5addda38fdf5a90afdcd6</id><msg>build: expand the subdir recipes only when they run</msg><path><editType>edit</editType><file>include/subdir.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/subdir.mk</affectedPath><commitId>bc96efb443fd683e02e2c3fc625f72ed55ecb8b0</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: find the alias of a build directory with notdir

subdir calls diralias twice for every target of every build directory,
and diralias splits the path into words twice to find its last
component. This takes a quarter of the parse time of the main Makefile.

Use notdir, which returns the same last component. The rules do not
change.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>bc96efb443fd683e02e2c3fc625f72ed55ecb8b0</id><msg>build: find the alias of a build directory with notdir</msg><path><editType>edit</editType><file>include/subdir.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/kernel-build.mk</affectedPath><affectedPath>scripts/build-time-log.sh</affectedPath><affectedPath>rules.mk</affectedPath><affectedPath>scripts/build-time-report.pl</affectedPath><affectedPath>include/host-build.mk</affectedPath><affectedPath>include/package.mk</affectedPath><commitId>b95b0928ac7135322dd3d42c19d489ede35bf121</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: add per stage build time profiling

Set BUILD_TIME_LOG=&lt;file&gt; to record a begin and an end event for every
prepare, configure, compile and install stage of every tool, toolchain
component, kernel and package. scripts/build-time-report.pl turns the log
into a report.

The report divides each second of the build between the stages that run
in it, so the numbers show which stages hold up the wall clock rather
than which ones burn the most CPU. Nothing is recorded and no extra
process runs when BUILD_TIME_LOG is unset.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>b95b0928ac7135322dd3d42c19d489ede35bf121</id><msg>build: add per stage build time profiling</msg><path><editType>edit</editType><file>include/package.mk</file></path><path><editType>edit</editType><file>include/host-build.mk</file></path><path><editType>add</editType><file>scripts/build-time-report.pl</file></path><path><editType>edit</editType><file>rules.mk</file></path><path><editType>edit</editType><file>include/kernel-build.mk</file></path><path><editType>add</editType><file>scripts/build-time-log.sh</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/kernel-defaults.mk</affectedPath><commitId>714886f3e4f0d4f5eb8ec299edcfd137c409c8d0</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>kernel: build the separate initramfs kernel only once

With TARGET_ROOTFS_INITRAMFS_SEPARATE, the initramfs kernel differs
from the regular kernel only in CONFIG_RD_&lt;ALGO&gt;. Both are built in the
same tree, so every build switches the kernel config twice and relinks
vmlinux twice, even if nothing changed.

Give the regular kernel the same ramdisk support and use its image for
the initramfs as is. The initramfs step now only creates the initrd.
Remove the separate initramfs branches of Kernel/SetInitramfs, as it is
no longer called in this mode.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>714886f3e4f0d4f5eb8ec299edcfd137c409c8d0</id><msg>kernel: build the separate initramfs kernel only once</msg><path><editType>edit</editType><file>include/kernel-defaults.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/kernel-defaults.mk</affectedPath><commitId>9d84fbff3670153e3ec8415304cdd376022ba163</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>kernel: skip kbuild if the kernel tree did not change

kbuild runs twice per build, for the modules and for the image, and
takes about half a second each time even if there is nothing to do.

Store a hash of the kbuild command line after a successful run, and
skip the next run if the hash is the same and no file in the kernel
tree or the toolchain is newer than the stamp. The OpenWrt files at the
top of the kernel tree are ignored, apart from .config. Directories are
ignored, as kbuild changes them with temporary files, so a deleted file
alone does not trigger a run.

With CONFIG_STRIP_KERNEL_EXPORTS the image link reads symtab.h, which
sits above the kernel tree and follows the modules of the packages. The
scan of the image run names that file as well.

The workaround that deletes vmlinux now only runs together with kbuild.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>9d84fbff3670153e3ec8415304cdd376022ba163</id><msg>kernel: skip kbuild if the kernel tree did not change</msg><path><editType>edit</editType><file>include/kernel-defaults.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/toplevel.mk</affectedPath><commitId>cb18fbc331a45d999860b1f7f7b89d1b7e2dc5be</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: regenerate package metadata only after it changed

prepare-tmpinfo runs on every build and calls package-metadata.pl
three times, although tmp/.packageinfo usually did not change. It also
writes tmp/.config-feeds.in on every build: the check against
tmp/.packageauxvars never passes, as that file is written again later
in the same recipe.

Generate the package metadata files only if tmp/.packageinfo or the
scripts are newer, and replace tmp/.config-feeds.in only if its content
changed.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>cb18fbc331a45d999860b1f7f7b89d1b7e2dc5be</id><msg>build: regenerate package metadata only after it changed</msg><path><editType>edit</editType><file>include/toplevel.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/toplevel.mk</affectedPath><commitId>e7d105af30a79f55da5a41315943b2c1d12878f9</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: skip the .config sync check if nothing changed

Every build runs conf --defconfig on a copy of .config to warn if the
configuration is out of sync. This takes about a second before the
build starts.

Skip the check if the last one passed, and neither .config nor a
Kconfig file, the generated Kconfig files or conf changed since then.
If the check fails, it runs and warns again on every build, as before.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>e7d105af30a79f55da5a41315943b2c1d12878f9</id><msg>build: skip the .config sync check if nothing changed</msg><path><editType>edit</editType><file>include/toplevel.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/Makefile</affectedPath><commitId>bc2e85eb8df05e8e1e5a7542c243b33fcbbf6365</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: clean the package root dir only if the packages can have changed

The stamp of package/cleanup depends on tmp/.build, which is touched on
every make call, so every build deletes $(STAGING_DIR_ROOT) and every
package copies its files into it again, one after the other under a
lock. With all packages selected, this takes 5 s of a build that has
nothing to do, most of it in the 1102 kmods of package/kernel/linux.

Only clean it if .config, the package metadata or a file below package/
changed since the last cleanup. An edit of the source in a build
directory alone does not clean it, so a file that such an edit removes
from a package stays until then. make package/cleanup cleans it at any
time.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>bc2e85eb8df05e8e1e5a7542c243b33fcbbf6365</id><msg>build: clean the package root dir only if the packages can have changed</msg><path><editType>edit</editType><file>package/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>scripts/timestamp.pl</affectedPath><commitId>3cf47c5c17dc2ec3ecab578a1fd4d723bb6b3f9b</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: compare timestamps with a fraction of a second

timestamp.pl decides whether a subdir has work to do. It scans the stamp
file and the source directories, keeps the newest, and reports that the
work is done when the newest one is the stamp. The scan reads the mtime
through the core stat of perl, which truncates it to whole seconds, and
the comparison is strict with the stamp scanned first. Two files that
share a second therefore count as a tie, and a tie says that the work is
done.

include/subdir.mk touches tmp/.build at the start of a build and the
stamp of a subdir at the end, so the two land in the same second once a
build takes less than a second between them. The target install stamp is
the last one of a build, roughly 0.4 s before the build ends, so it is
the one that ties first: the next build then skips target/install and
ships the images of the previous build. Around one build in five was
affected once the build became fast enough.

Read the mtime through Time::HiRes, which reports the fraction as well.
Two touches around a fork no longer share a timestamp. Keep the core
stat where the module is missing, which restores the old behaviour
rather than failing.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>3cf47c5c17dc2ec3ecab578a1fd4d723bb6b3f9b</id><msg>build: compare timestamps with a fraction of a second</msg><path><editType>edit</editType><file>scripts/timestamp.pl</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/Makefile</affectedPath><commitId>3054effc90f343ebd2c2eae9319de4b671052836</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: rebuild the package index only when a package changed

package/index runs apk mkndx and make-index-json.py over every package
on each build, which takes 1.2 s of a no-op build of this tree with 1258
packages. The result depends only on the package files.

Skip the pass while packages.adb and index.json exist and no package
file, and no directory, is newer than index.json. The directory covers a
package that was added or removed, because neither changes a file that
is left. The comparison uses index.json rather than packages.adb,
because apk mkndx writes packages.adb through a rename, which sets the
mtime of the directory to that of the file it wrote. The directory would
then tie with packages.adb and the skip would rest on the two comparing
equal. index.json is written after it, so the directory is older.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>3054effc90f343ebd2c2eae9319de4b671052836</id><msg>build: rebuild the package index only when a package changed</msg><path><editType>edit</editType><file>package/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>rules.mk</affectedPath><commitId>d8442d2876d97ea4ef98c51c688af971e44e5788</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: write the checksum file only when a file changed

sha256sums hashes every file of a directory on each build. package/index
calls it over the package output of this tree, which holds 1258 files,
and spends 0.7 s of a no-op build on a file that does not change.

Skip the pass while the file exists and nothing in the directory is
newer than it.

The checksum target of a build calls sha256sums as well, but it keeps
writing the file on every build. buildversion and feedsversion rewrite
version.buildinfo and feeds.buildinfo beside it without a guard, so the
directory always holds something newer. Only package/index gains here.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>d8442d2876d97ea4ef98c51c688af971e44e5788</id><msg>build: write the checksum file only when a file changed</msg><path><editType>edit</editType><file>rules.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Makefile</affectedPath><commitId>af60df881d1e5e221ecdf1e64444366c9ae9f603</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: run diffconfig only when the configuration changed

diffconfig.sh runs the configuration parser over the whole tree twice,
which takes 2 s of every build, and buildinfo runs it on each build.
The result depends only on .config and the Kconfig files.

Skip it while neither is newer than the file it wrote last time.
include/toplevel.mk guards the sync check of .config the same way.

This alone changes nothing on a parallel build, because buildinfo runs
beside the compile stamps. It pays once the other phases become shorter.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>af60df881d1e5e221ecdf1e64444366c9ae9f603</id><msg>build: run diffconfig only when the configuration changed</msg><path><editType>edit</editType><file>Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/Makefile</affectedPath><commitId>8d2564302560bea292ba4050df444404e32527ef</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: merge the packages only when the set of packages changed

package/merge deletes the symlink farm of every built package and creates
it again on every build. package/merge-index then reads all of those
packages to create the index. With two thousand packages both steps take a
third of a second, and the cost grows with the size of the configuration.

Record the name, the size and the timestamp of every package file. Skip
both steps while that list is unchanged and the index is present. A rebuild
of the symlinks drops the index, so merge-index creates it again.

This takes the time of package/install on an unchanged tree from 1.05 s to
0.60 s for the OpenWrt One.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>8d2564302560bea292ba4050df444404e32527ef</id><msg>build: merge the packages only when the set of packages changed</msg><path><editType>edit</editType><file>package/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/kernel-build.mk</affectedPath><commitId>746c76168c231a3d5f4fb8de4727b8e11f0645b5</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: create the images only when an input changed

target/linux install runs the whole image build on every build. It creates
the root file system image, the kernel images, the FIT containers and the
factory images again, although the inputs are the same. This takes 0.7 s for
the OpenWrt One and much more for a target with many devices.

Record a state after a successful image build:

 - a hash of the target directory, because the build normalises the
   timestamps of the root file system and they cannot report a change,
 - the name and the size of every image in the output directory, so that a
   deleted image brings the build back,
 - the name and the size of every file below json_info_files, because
   image_prepare drops that directory and profiles.json comes from it.

Skip the image build while the state is the same and no file of the kernel
build directory, the kernel tree, the image directory of the staging
directory, the host tools, the target directory of the tree, include,
scripts or .config is newer than the state file.

This takes the time of target/linux install on an unchanged tree from 1.77 s
to 1.33 s, and the time of a full no-op build from 4.11 s to 3.72 s for the
OpenWrt One.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>746c76168c231a3d5f4fb8de4727b8e11f0645b5</id><msg>build: create the images only when an input changed</msg><path><editType>edit</editType><file>include/kernel-build.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/kernel-build.mk</affectedPath><commitId>e97e3f36bd5d48add83c5c7fba907600b12a653c</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>kernel: configure the kernel only when an input changed

The configure stage rewrites the kernel configuration on every build. It
runs kconfig.pl twice and package-metadata.pl once, which takes an eighth of
a second. target/compile and target/install both pay it.

The rule carries FORCE because the kernel configuration also depends on the
package metadata, which is not a prerequisite. Add a check file that the
rule creates only when the configure stage must run, and make the stamp
depend on it. The check covers the kernel configuration files, .config, the
package metadata, the scripts that read them, the two build system files
that hold the recipe, the target directory and the user headers.

This takes the time of target/linux install on an unchanged tree from 1.33 s
to 1.15 s, and the time of a full no-op build from 3.68 s to 3.40 s for the
OpenWrt One.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>e97e3f36bd5d48add83c5c7fba907600b12a653c</id><msg>kernel: configure the kernel only when an input changed</msg><path><editType>edit</editType><file>include/kernel-build.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/toplevel.mk</affectedPath><commitId>0e5a0bd5581a1360230759cd35623db1fd01f5be</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: scan the package and target metadata only after a change

prepare-tmpinfo runs the metadata scan for the packages and for the targets
on every build. Each run starts two more make processes and walks the whole
directory, which takes 0.15 s per scan even when it finds nothing to do.

Keep a stamp per scan and skip the scan while no Makefile, no .mk file and
no directory below the scanned tree is newer than the stamp, and while
include, rules.mk and .config are unchanged as well.

package/kernel/linux reads target/linux/*/modules.mk through SCAN_DEPS, so
the package scan watches those files although they sit in the target tree.

This takes the time of the prereq step from 0.45 s to 0.21 s, and the time
of a full no-op build from 3.40 s to 3.25 s for the OpenWrt One.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>0e5a0bd5581a1360230759cd35623db1fd01f5be</id><msg>build: scan the package and target metadata only after a change</msg><path><editType>edit</editType><file>include/toplevel.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Makefile</affectedPath><affectedPath>rules.mk</affectedPath><commitId>ac4f1dd36ce8c3b3c06652780d86056d78efa642</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: write the build info files only when they change

buildversion, feedsversion and json_overview_image_info rewrite
version.buildinfo, feeds.buildinfo and profiles.json on every build. The
content is the same, but the new timestamp makes the checksum step hash
every image again, which takes 0.18 s for the OpenWrt One and grows with the
number of devices.

Write the three files to the temporary directory and copy them over the
result of the last build only when the content differs.

This takes the time of the index, image info and checksum step from 0.36 s
to 0.10 s, and the time of a full no-op build from 3.25 s to 3.00 s.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>ac4f1dd36ce8c3b3c06652780d86056d78efa642</id><msg>build: write the build info files only when they change</msg><path><editType>edit</editType><file>rules.mk</file></path><path><editType>edit</editType><file>Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>scripts/timestamp.pl</affectedPath><commitId>b5c4b58764f34556af41326cca6354bc723b1ba5</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: let find answer the rebuild question

The -n caller of timestamp.pl only needs to know whether the stamp is the
newest file. The script reads the timestamp of every file to answer that,
which costs 0.09 s for the build directory of U-Boot with its 44000 files.
The rebuild check runs the script twice per package and per build.

Collect the paths first, and for -n ask find for the first file that is
newer than the stamp. find stops at that file, so the walk ends early when
there is work to do. The other modes keep the old code, and so does -n with
-follow, because find and the script treat a symbolic link to a file
differently there.

The check over the U-Boot build directory now takes 0.02 s. The result is
the same for all 44 build directories of the OpenWrt One. The time of a full
no-op build does not change on a machine with 24 cores, where the package
step waits for the dependency chain rather than for the checks.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>b5c4b58764f34556af41326cca6354bc723b1ba5</id><msg>build: let find answer the rebuild question</msg><path><editType>edit</editType><file>scripts/timestamp.pl</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/download.mk</affectedPath><commitId>f7adeacb6265eb7236d15dec831b1b7f1bd880e4</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: hash downloaded files only after they changed

check_download_integrity hashes the downloaded file on every parse of
every Makefile that uses it. With large archives this costs seconds per
build, for example about 1.2 s for linux-firmware, which is on the
critical path of the package build.

Remember the identity (inode, size, mtime, ctime) of a file that
matched its expected hash, and hash it again only after it changed.

The identity comes from the stat of tools/coreutils, which a Linux host
does not build. Fall back to the stat of the host, and drop the cache
when neither one answers, so that a missing stat costs time and never
trust.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>f7adeacb6265eb7236d15dec831b1b7f1bd880e4</id><msg>build: hash downloaded files only after they changed</msg><path><editType>edit</editType><file>include/download.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/image-commands.mk</affectedPath><affectedPath>include/kernel-defaults.mk</affectedPath><affectedPath>scripts/cache-run.sh</affectedPath><affectedPath>rules.mk</affectedPath><commitId>c6a1bf59665544d6f8e2718006e2c39385584cea</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: reuse the output of slow compression steps

On a rebuild, the initrd and the initramfs kernel image usually have
the same content as before, but xz and lzma compress them again on
every build. For the OpenWrt One this takes about 6 s of the build.

Add scripts/cache-run.sh. It runs a command that creates one file from
another, and stores the output together with a hash of the input, the
command line and the tool. If they are the same in the next run, it
copies the stored output instead. The commands are deterministic, so
the result is identical.

On a hit the script compares the stored output with the file that is
already there and copies only when the two differ. The output then keeps
its timestamp, so a later step that compares timestamps does not treat it
as new work.

Use it for the initrd compression and for Build/lzma. bzip2 and lzop
stay as they are: bzip2 writes to stdout, and lzop stores the mtime of
its input. xz and gzip now keep the cpio, as the other tools do, so a
cache hit leaves the same files behind as a normal run.

The slot name follows the path of the output below $(KDIR), because two
targets in different directories can share a basename. cache-run.sh holds
a lock over the slot and swaps the stored output in with a rename, so two
image recipes on one slot never read a half written pair.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>c6a1bf59665544d6f8e2718006e2c39385584cea</id><msg>build: reuse the output of slow compression steps</msg><path><editType>edit</editType><file>include/kernel-defaults.mk</file></path><path><editType>edit</editType><file>include/image-commands.mk</file></path><path><editType>edit</editType><file>rules.mk</file></path><path><editType>add</editType><file>scripts/cache-run.sh</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/image-commands.mk</affectedPath><commitId>5b3be62345bde6ecabb1869a8a9a86abd1316c23</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: reuse the output of Build/libdeflate-gzip

libdeflate-gzip -12 of a kernel takes about a second, and its input
usually did not change. Run it through cache-run.sh, as Build/lzma.

libdeflate-gzip stores no mtime or file name, and -k -S .new gives the
same output as -c.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>5b3be62345bde6ecabb1869a8a9a86abd1316c23</id><msg>build: reuse the output of Build/libdeflate-gzip</msg><path><editType>edit</editType><file>include/image-commands.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/Makefile</affectedPath><commitId>48c1e36bf2b8cbe1bfa07cc129cbc833d977d501</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>package: reuse the rootfs if its inputs did not change

The rootfs is installed from scratch on every build: apk add, then the
post-install and init scripts of every package, one after the other.
This takes about 1.5 s, even if no package changed.

Build a key from the package index, which holds a hash of every
package, the install list, .config, SOURCE_DATE_EPOCH, the files
overlay, apk, tar, gzip and the Makefiles that create the rootfs. Save
a copy of the rootfs with the key, and restore it from the copy if the
key did not change. Later build steps modify the rootfs, so it is
always restored from the copy and never reused in place.

prepare_rootfs runs tar and gzip over the apk script archive, so the
key holds those two host tools as well. With mklibs it also runs
rstrip.sh, which the key then holds too.

The install list now holds the base-files, libc and kernel versions
too, so that the key can use it. Only the APK path uses the cache.

The copy costs disk: the build directory carries the root filesystem
twice, once as root and root.orig and once in the cache.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>48c1e36bf2b8cbe1bfa07cc129cbc833d977d501</id><msg>package: reuse the rootfs if its inputs did not change</msg><path><editType>edit</editType><file>package/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>rules.mk</affectedPath><affectedPath>include/site/cache</affectedPath><affectedPath>include/host-build.mk</affectedPath><affectedPath>include/package.mk</affectedPath><commitId>a0b036985afc5dd36a93faba1119b55b89780a3b</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: cache the autoconf results of a package that opts in

A configure run spends its time on the compiler invocations behind its
checks, not on the shell. tools/m4 runs the compiler 633 times and takes
24 seconds. ccache does not help, because it refuses to cache an
autoconf conftest compile at all; it counts these separately as
"Autoconf compile/link" under its uncacheable calls.

A package that sets PKG_CONFIGURE_CACHE or HOST_CONFIGURE_CACHE keeps a
config.cache under tmp/, so a package that is cleaned and built again
reads the answers instead of running the checks. The configure stage of
tools/m4 drops from 24.5 s to 1.5 s. dirclean removes tmp/, so a full
reset of the tree starts from cold answers.

A package has to opt in, because a cache is only correct for a configure
script that keeps its side effects outside the AC_CACHE_VAL body.
ncurses appends -D_XOPEN_SOURCE and -D_DEFAULT_SOURCE to CPPFLAGS inside
that body, so a cached run restores the value, skips the append, and
then fails to compile wcwidth. ncurses_cfg.h is identical in both cases;
the difference is in the generated Makefile.

The path covers everything else that changes an answer. A target package
is keyed on the toolchain directory, which carries the gcc version. A
host package is keyed on the version string of the host compiler,
because autoconf cannot detect a new compiler behind an unchanged name;
gcc 14 turned an implicit function declaration into an error and changed
many answers that way. Both are keyed on a hash of the configure
arguments and the build flags, and autoconf refuses a cache written with
different flags on top of that.

A cached program path outlives a wipe of staging_dir, so ac_cv_path_ and
ac_cv_prog_ answers are dropped when the cache loads and configure
searches PATH again. Without that, a cache written before staging_dir
held sed pins /usr/bin/sed for good. A search runs no compiler, so this
costs nothing that matters.

The cache arrives through a site script rather than --cache-file, so a
hand written configure script never sees a new argument. The site script
removes the file of the previous arguments, so a different configuration
gets a cold cache instead of an autoconf error. It also unsets the
variable, and make exports it for the configure stage alone, so a nested
configure run keeps its own cache.

Set CONFIGURE_CACHE_DIR to keep the cache elsewhere, or to the empty
string to run every check again.

Host builds now read a site script on Linux as well. Before this change
only Darwin had one.

CONFIG_SITE holds one path name: autoconf before 2.70 reads the whole
value as that one name, so a second path would silence both scripts. It
names the cache script alone, and the cache script loads the site script
of the architecture from CONFIG_SITE_BASE.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>a0b036985afc5dd36a93faba1119b55b89780a3b</id><msg>build: cache the autoconf results of a package that opts in</msg><path><editType>edit</editType><file>include/package.mk</file></path><path><editType>add</editType><file>include/site/cache</file></path><path><editType>edit</editType><file>rules.mk</file></path><path><editType>edit</editType><file>include/host-build.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>tools/tar/Makefile</affectedPath><affectedPath>tools/m4/Makefile</affectedPath><affectedPath>tools/bison/Makefile</affectedPath><affectedPath>tools/patch/Makefile</affectedPath><affectedPath>tools/findutils/Makefile</affectedPath><affectedPath>tools/cpio/Makefile</affectedPath><affectedPath>tools/e2fsprogs/Makefile</affectedPath><affectedPath>tools/elfutils/Makefile</affectedPath><affectedPath>tools/gmp/Makefile</affectedPath><affectedPath>tools/sed/Makefile</affectedPath><commitId>cd322612ccb66e35878ed7f9d3e562f9f4b4bd09</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>tools: cache the configure results of ten autotools tools

These ten hold up the wall clock on their own. Their configure stages
run while nothing else does, because the tools build in dependency
order. Measured over a full build, cold cache against warm:

  sed        21.68 s -&gt; 1.22 s
  m4         21.48 s -&gt; 1.22 s
  findutils  19.47 s -&gt; 1.56 s
  tar        17.75 s -&gt; 1.47 s
  cpio       14.28 s -&gt; 1.26 s
  bison      12.81 s -&gt; 1.29 s
  patch      12.16 s -&gt; 1.31 s
  elfutils   26.58 s -&gt; 15.47 s

Each of the ten configures the same way with a warm cache as it does
without one. The check runs configure three times, without a cache, with
a cold cache and with a warm cache, and compares every file that
configure generates between the first and the last. ncurses fails that
check; these do not.

The only difference left is ac_ct_AR and ac_ct_RANLIB, which a cold run
fills through the fallback path of AC_CHECK_TOOL and a warm run leaves
empty. AR and RANLIB are correct in both, and no generated Makefile
reads the ac_ct_ form.

tools/cmake keeps its 33 s, the longest configure stage in the build. It
bootstraps with its own script rather than autoconf, so this does not
reach it.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>cd322612ccb66e35878ed7f9d3e562f9f4b4bd09</id><msg>tools: cache the configure results of ten autotools tools</msg><path><editType>edit</editType><file>tools/bison/Makefile</file></path><path><editType>edit</editType><file>tools/sed/Makefile</file></path><path><editType>edit</editType><file>tools/cpio/Makefile</file></path><path><editType>edit</editType><file>tools/e2fsprogs/Makefile</file></path><path><editType>edit</editType><file>tools/findutils/Makefile</file></path><path><editType>edit</editType><file>tools/m4/Makefile</file></path><path><editType>edit</editType><file>tools/elfutils/Makefile</file></path><path><editType>edit</editType><file>tools/patch/Makefile</file></path><path><editType>edit</editType><file>tools/gmp/Makefile</file></path><path><editType>edit</editType><file>tools/tar/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/system/apk/Makefile</affectedPath><affectedPath>package/system/apk/patches/0012-crypto_openssl-use-deterministic-ECDSA-signatures.patch</affectedPath><commitId>e923974fc1720954f04e3916072fda1fb14efc98</commitId><timestamp>1790095590000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>apk: use deterministic ECDSA signatures

The host apk signs with LibreSSL, which uses a random ECDSA nonce. A
package that is signed again has different bytes and often a different
size, even if its content did not change. The rootfs records the
package size in /lib/apk/db/installed, so a rebuild of one package
changes all images.

Add a patch that derives the nonce as specified in RFC 6979. Signed
packages and images are now identical after a rebuild.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:46:30 +0200</date><id>e923974fc1720954f04e3916072fda1fb14efc98</id><msg>apk: use deterministic ECDSA signatures</msg><path><editType>add</editType><file>package/system/apk/patches/0012-crypto_openssl-use-deterministic-ECDSA-signatures.patch</file></path><path><editType>edit</editType><file>package/system/apk/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/trusted-firmware-a.mk</affectedPath><commitId>1e7c8fbc299665a3afe67773752cd14f35d7ec56</commitId><timestamp>1790095590000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>trusted-firmware-a: use a reproducible build timestamp

TF-A embeds __TIME__ and __DATE__ in its build message, so bl2 and bl31
differ on every build, and so do all images that contain them.

Pass BUILD_MESSAGE_TIMESTAMP, derived from the source date of the
package, in the same format.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:46:30 +0200</date><id>1e7c8fbc299665a3afe67773752cd14f35d7ec56</id><msg>trusted-firmware-a: use a reproducible build timestamp</msg><path><editType>edit</editType><file>include/trusted-firmware-a.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>tools/yafut/patches/100-honour-SOURCE_DATE_EPOCH.patch</affectedPath><affectedPath>tools/yafut/Makefile</affectedPath><commitId>ec4768fbed8ea3b09e323cb267db0714a7d68eb7</commitId><timestamp>1790095590000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>yafut: use a reproducible timestamp

yaffsfs_CurrentTime() returns the wall clock, and Yaffs writes that value
to the access, modification and change time of every object header. The
RouterBOARD images of ipq40xx/mikrotik therefore differ on every build,
and so does the sysupgrade metadata checksum that follows them.

Add a patch that reads SOURCE_DATE_EPOCH, which the build already exports.

Tested with two images written one second apart. They are identical with
SOURCE_DATE_EPOCH set and differ without it.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:46:30 +0200</date><id>ec4768fbed8ea3b09e323cb267db0714a7d68eb7</id><msg>yafut: use a reproducible timestamp</msg><path><editType>add</editType><file>tools/yafut/patches/100-honour-SOURCE_DATE_EPOCH.patch</file></path><path><editType>edit</editType><file>tools/yafut/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/boot/uboot-mxs/Makefile</affectedPath><affectedPath>package/boot/uboot-mxs/patches/0002-tools-mxsimage-honour-SOURCE_DATE_EPOCH.patch</affectedPath><commitId>3a33c694aaa019d5a5619099d385b5bc12ebff3f</commitId><timestamp>1790095590000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>uboot-mxs: use a reproducible build timestamp

mkimage -T mxsimage builds u-boot.sb. sb_get_timestamp() reads the wall
clock and sb_prefill_image_header() writes it to the boot image header.
The header digest covers that field, so the sdcard images of mxs differ on
every build.

Add a patch that uses imagetool_get_source_date(), which the other image
tools already use, and keep the wall clock as the fallback.

Tested with the mxsimage configuration of u-boot. Two images are identical
with the same SOURCE_DATE_EPOCH, differ with different values, and still
differ when the variable is not set.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:46:30 +0200</date><id>3a33c694aaa019d5a5619099d385b5bc12ebff3f</id><msg>uboot-mxs: use a reproducible build timestamp</msg><path><editType>add</editType><file>package/boot/uboot-mxs/patches/0002-tools-mxsimage-honour-SOURCE_DATE_EPOCH.patch</file></path><path><editType>edit</editType><file>package/boot/uboot-mxs/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/generic/pending-6.12/303-MIPS-vdso-keep-the-prefix-map-flags.patch</affectedPath><affectedPath>target/linux/generic/pending-6.18/303-MIPS-vdso-keep-the-prefix-map-flags.patch</affectedPath><commitId>0995a0e3511218deb4a492f28a9e181d3c2ca92b</commitId><timestamp>1790095590000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>kernel: make the MIPS vDSO build id independent of the build path

arch/mips/vdso/Makefile takes a few flags from KBUILD_CFLAGS and adds -g,
so the vDSO always carries debug information. -ffile-prefix-map is not in
that list, so DW_AT_comp_dir of the vDSO objects holds the absolute build
directory. The vDSO is linked with --build-id=sha1, which hashes the debug
information, and objcopy -S then removes the debug information and keeps
the note. The kernel embeds that image.

Every MIPS image therefore depends on the name of the build directory. The
reproducible build service works in a directory with a random name, so it
reports all MIPS targets as different. The ARM architectures add their vDSO
flags on top of KBUILD_CFLAGS and are not affected.

Add a patch to 6.12 and to 6.18 that takes the two prefix map flags over
from KBUILD_CFLAGS.

Tested with two ath79/nand builds in directories of different name. Before
the patch the vDSO build ids differ and all 91 images differ. After the
patch the build ids match and all 91 images are identical.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:46:30 +0200</date><id>0995a0e3511218deb4a492f28a9e181d3c2ca92b</id><msg>kernel: make the MIPS vDSO build id independent of the build path</msg><path><editType>add</editType><file>target/linux/generic/pending-6.12/303-MIPS-vdso-keep-the-prefix-map-flags.patch</file></path><path><editType>add</editType><file>target/linux/generic/pending-6.18/303-MIPS-vdso-keep-the-prefix-map-flags.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/generic/pending-6.18/304-LoongArch-vdso-keep-the-prefix-map-flags.patch</affectedPath><affectedPath>target/linux/generic/pending-6.12/304-LoongArch-vdso-keep-the-prefix-map-flags.patch</affectedPath><commitId>115209aa225a9b2d8b849809eaa4969de8e8c539</commitId><timestamp>1790095590000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>kernel: make the LoongArch vDSO build id independent of the build path

The LoongArch vDSO Makefile builds its objects with a flag set of its own,
in the same way as the MIPS one. It drops -ffile-prefix-map, adds -g and
links with --build-id, so the build id of the vDSO follows the absolute
path of the build directory. The kernel embeds the vDSO, so two builds in
different directories produce different images.

Take the prefix map flags over from KBUILD_CFLAGS.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:46:30 +0200</date><id>115209aa225a9b2d8b849809eaa4969de8e8c539</id><msg>kernel: make the LoongArch vDSO build id independent of the build path</msg><path><editType>add</editType><file>target/linux/generic/pending-6.12/304-LoongArch-vdso-keep-the-prefix-map-flags.patch</file></path><path><editType>add</editType><file>target/linux/generic/pending-6.18/304-LoongArch-vdso-keep-the-prefix-map-flags.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/ramips/image/mt76x8.mk</affectedPath><affectedPath>target/linux/ixp4xx/image/Makefile</affectedPath><affectedPath>target/linux/ipq40xx/image/generic.mk</affectedPath><affectedPath>scripts/linksys-image.sh</affectedPath><affectedPath>target/linux/qualcommax/image/ipq60xx.mk</affectedPath><affectedPath>target/linux/bcm53xx/image/Makefile</affectedPath><affectedPath>target/linux/qualcommax/image/ipq807x.mk</affectedPath><commitId>8e7a8a2b9210481adbfbfe42aa37cfc804817674</commitId><timestamp>1790095590000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>image: create the archive images with fixed metadata

Several image recipes call tar without the options that pin the member
order, the owner, the mode and the modification time. The archive then
holds the build time, the umask of the build user and the readdir order of
the build directory, so two builds of the same source produce different
images.

Pass the same options that Image/mkfs/targz and sysupgrade-tar.sh already
use. The recipes define no member order, so sorting the members takes
nothing away. The diffoscope of the published WAX610 archive shows the
order differing between the build machines, which is what a readdir order
produces.

--mode=go-w clears the write bit of the group and of the others. tar keeps
the mode of the file on disk, which follows the umask of the build user,
so without it the archive differs between a host with umask 022 and one
with umask 002.

Covers the Netgear factory archives of ipq40xx, ipq60xx and ipq807x, the
Creality factory archive of mt76x8, the D-Link DWL8610AP archive of
bcm53xx, the Freecom archive of ixp4xx and the Linksys switch archive of
realtek.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:46:30 +0200</date><id>8e7a8a2b9210481adbfbfe42aa37cfc804817674</id><msg>image: create the archive images with fixed metadata</msg><path><editType>edit</editType><file>target/linux/qualcommax/image/ipq60xx.mk</file></path><path><editType>edit</editType><file>target/linux/ramips/image/mt76x8.mk</file></path><path><editType>edit</editType><file>target/linux/bcm53xx/image/Makefile</file></path><path><editType>edit</editType><file>target/linux/ixp4xx/image/Makefile</file></path><path><editType>edit</editType><file>target/linux/qualcommax/image/ipq807x.mk</file></path><path><editType>edit</editType><file>target/linux/ipq40xx/image/generic.mk</file></path><path><editType>edit</editType><file>scripts/linksys-image.sh</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/image/Makefile</affectedPath><commitId>92f41f89436d33e1dbb7ac6e9aa8c5f0326e4e37</commitId><timestamp>1790095590000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>realtek: use a reproducible timestamp in the 7z kernel container

7zr stores the modification time of the input file. The kernel image
carries the build time, so the H3C and HPE images differ between builds.

Set the time of the input to SOURCE_DATE_EPOCH before the archive is
created.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:46:30 +0200</date><id>92f41f89436d33e1dbb7ac6e9aa8c5f0326e4e37</id><msg>realtek: use a reproducible timestamp in the 7z kernel container</msg><path><editType>edit</editType><file>target/linux/realtek/image/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/boot/uboot-mediatek/Makefile</affectedPath><affectedPath>package/boot/uboot-mediatek/patches/009-tools-mtk_image-honour-SOURCE_DATE_EPOCH.patch</affectedPath><commitId>03ffe29cdf03b3824a621a63c098ac7e477282a0</commitId><timestamp>1790095590000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>uboot-mediatek: use a reproducible build timestamp for MT7621

mtk_image_set_mt7621_header() reads the wall clock and writes it to the
timestamp of the legacy image header, so the MT7621 boot loader image
differs on every build.

Add a patch that uses imagetool_get_source_date(), which the other image
tools already use, and keep the wall clock as the fallback.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:46:30 +0200</date><id>03ffe29cdf03b3824a621a63c098ac7e477282a0</id><msg>uboot-mediatek: use a reproducible build timestamp for MT7621</msg><path><editType>edit</editType><file>package/boot/uboot-mediatek/Makefile</file></path><path><editType>add</editType><file>package/boot/uboot-mediatek/patches/009-tools-mtk_image-honour-SOURCE_DATE_EPOCH.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/bmips/image/Makefile</affectedPath><commitId>f73a0d39e172402e42bce02e62592280fc96f806</commitId><timestamp>1790095590000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>bmips: squash the owner and the mode in the CFE JFFS2 partition

Build/cfe-jffs2 is the only mkfs.jffs2 call in the tree that passes
neither --squash-uids nor --squash-perms. The recipe creates the marker
files with touch and cp, so the JFFS2 inodes carry the uid, the gid and
the umask of the build machine. The published images hold uid and gid
1000.

mkfs.jffs2 already takes the timestamp from SOURCE_DATE_EPOCH, so the
owner and the mode are the remaining inputs from the environment.

Pass both options, as mvebu and ath79 already do.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:46:30 +0200</date><id>f73a0d39e172402e42bce02e62592280fc96f806</id><msg>bmips: squash the owner and the mode in the CFE JFFS2 partition</msg><path><editType>edit</editType><file>target/linux/bmips/image/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/imx/image/cortexa9.mk</affectedPath><commitId>fc166c4869dba4876ad3d7d6e12a8ff87c35ca2a</commitId><timestamp>1790095590000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>imx: fix the boot file system of the Gateworks Ventana

Build/boot-overlay copies the device trees and builds the boot script in
$@.boot, so every file carries the build time. mkfs.ubifs writes st_mtime
straight into the inode and has no SOURCE_DATE_EPOCH support, and the two
tar calls pass neither --sort=name nor the options that pin the owner and
the mode, so both nand.ubi and bootfs.tar.gz differ between builds.

The diffoscope of the published bootfs.tar.gz shows both: wall clock
mtimes on the device tree files, and a member order that follows readdir.

Set the times in $@.boot once, before the UBIFS image and the tar are
made. Sort the members of both archives and give them a fixed owner and
mode, as the other archive recipes do.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:46:30 +0200</date><id>fc166c4869dba4876ad3d7d6e12a8ff87c35ca2a</id><msg>imx: fix the boot file system of the Gateworks Ventana</msg><path><editType>edit</editType><file>target/linux/imx/image/cortexa9.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/kernel/lantiq/ltq-tapi/Makefile</affectedPath><affectedPath>package/kernel/lantiq/ltq-tapi/patches/021-keep-build-paths-out-of-the-configure-string.patch</affectedPath><affectedPath>package/kernel/lantiq/ltq-vmmc/patches/022-keep-build-paths-out-of-the-configure-string.patch</affectedPath><affectedPath>package/kernel/lantiq/ltq-vmmc/Makefile</affectedPath><commitId>661d6963dfed41b291be3bcb98523d44ce7a872c</commitId><timestamp>1790095590000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>lantiq: keep build paths out of the TAPI and VMMC modules

configure.in of drv_tapi and drv_vmmc compiles the whole configure command
line into the module. drv_tapi_linux.c prints it through a proc file. The
command line holds the absolute paths of the build machine, among them
--enable-kernelbuild, --with-ifxos-incl, --enable-tapiincl, CPPFLAGS and
LDFLAGS, so the module depends on the directory it was built in.

Measured in the published snapshot modules of lantiq/xway: drv_tapi.ko and
drv_vmmc.ko both hold
--enable-kernelbuild=/builder/shared-workdir/build/build_dir/...
The existing 020-not-leak-cflags.patch covers the Kbuild CFLAGS, not this
string.

Drop every argument that holds a path and keep the feature flags. The loop
repeats the idiom the file already uses for CONFIGURE_OPTIONS.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:46:30 +0200</date><id>661d6963dfed41b291be3bcb98523d44ce7a872c</id><msg>lantiq: keep build paths out of the TAPI and VMMC modules</msg><path><editType>add</editType><file>package/kernel/lantiq/ltq-vmmc/patches/022-keep-build-paths-out-of-the-configure-string.patch</file></path><path><editType>edit</editType><file>package/kernel/lantiq/ltq-tapi/Makefile</file></path><path><editType>edit</editType><file>package/kernel/lantiq/ltq-vmmc/Makefile</file></path><path><editType>add</editType><file>package/kernel/lantiq/ltq-tapi/patches/021-keep-build-paths-out-of-the-configure-string.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>scripts/make-sbom.py</affectedPath><affectedPath>scripts/package-metadata.pl</affectedPath><commitId>712ff7ca89f76f6fdcb3289f78b7176174013a1e</commitId><timestamp>1790095590000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: create reproducible CycloneDX SBOMs

Both SBOM generators produce a different file on every run, so the
published .bom.cdx.json of an image and of a package feed never match a
rebuild.

dump_cyclonedxsbom_json() in scripts/package-metadata.pl has three
causes. It draws the serial number from rand(), it takes the timestamp
from the wall clock, and encode_json() follows the Perl hash order, which
changes with the hash seed of each run. The last one alone reorders every
key in the file.

scripts/make-sbom.py has the first two causes, through uuid.uuid4() and
datetime.utcnow().

Take the timestamp from SOURCE_DATE_EPOCH, which the build exports. Derive
the serial number from the timestamp and the component list, so it stays a
valid RFC 4122 identifier and still changes when the content changes. Sort
the keys of the Perl output.

Tested with the package index and the image manifest of an ipq40xx build.
Two runs with the same SOURCE_DATE_EPOCH are now identical, two runs with
different values differ, and the scripts exit with an error when the value
is not a number. Both files differ between two runs without the change.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:46:30 +0200</date><id>712ff7ca89f76f6fdcb3289f78b7176174013a1e</id><msg>build: create reproducible CycloneDX SBOMs</msg><path><editType>edit</editType><file>scripts/make-sbom.py</file></path><path><editType>edit</editType><file>scripts/package-metadata.pl</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/kernel.mk</affectedPath><affectedPath>rules.mk</affectedPath><affectedPath>include/package.mk</affectedPath><commitId>b06e5f3bf9246d5d299142f5a774497f07b8ec2d</commitId><timestamp>1790095590000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: map the staging directory out of the compiler output

iremap is called with BUILD_DIR and with PKG_BUILD_DIR, never with
STAGING_DIR. A header taken from the staging directory therefore reaches
__FILE__ and the debug information with its absolute path, and the result
depends on the directory the tree was built in.

Measured in the published snapshot of lantiq/xway: mt76-connac-lib.ko,
mt76x02-lib.ko and mt7925-common.ko hold
/builder/shared-workdir/build/staging_dir/target-mips_24kc_musl/usr/include/mac80211/net/cfg80211.h
That path is __FILE__ in .rodata, so the strip before the package is built
cannot reach it and the module ships it.

Map STAGING_DIR as well. Keep the staging_dir element in the replacement:
the last element of STAGING_DIR and of BUILD_DIR carry the same name, so
the bare name would make the two roots indistinguishable. The map of
BUILD_DIR does not change, so only a path that leaks today changes.

Verified with the target compiler on a header below a mapped directory:
-ffile-prefix-map removes the absolute path from both __FILE__ and the
debug information, -fmacro-prefix-map removes it from __FILE__ alone. The
shipped half is __FILE__, so both variants cover it.

A local build of mt76 also holds nine staging paths, but those are debug
information: the build directory copy of mt76-connac-lib.ko is 653456
bytes with 13 debug sections and nine such paths, the shipped copy is
84688 bytes with none. They are named here so that the next reader does
not take them for the same defect.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:46:30 +0200</date><id>b06e5f3bf9246d5d299142f5a774497f07b8ec2d</id><msg>build: map the staging directory out of the compiler output</msg><path><editType>edit</editType><file>include/kernel.mk</file></path><path><editType>edit</editType><file>rules.mk</file></path><path><editType>edit</editType><file>include/package.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>toolchain/gcc/common.mk</affectedPath><commitId>fa081cadb824d6b104386471eaecb217b665a9a9</commitId><timestamp>1790095590000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>toolchain: keep the build path out of the target libraries

gcc builds the target libraries with CFLAGS_FOR_TARGET, which carries no
prefix map. __FILE__ therefore expands to an absolute path, and assert in
libstdc++ and the ryu code put seven of them into .rodata, where the strip
before packaging cannot reach them. The libstdcpp6 package differs between
two builds in different directories, and so does every image that ships it.

The published package shows the same thing. libstdcpp6-14.4.0-r5.apk of
bcm47xx/mips74k holds
/builder/shared-workdir/build/build_dir/toolchain-mipsel_74kc_gcc-14.4.0_musl/gcc-14.4.0/libstdc++-v3/src/c++11/debug.cc
so no rebuild of that package can match today.

iremap is called with BUILD_DIR for the kernel, with PKG_BUILD_DIR for a
package and with STAGING_DIR for the target headers. The toolchain build
directory has no such call. Add one for the three FOR_TARGET flag sets.

The replacement keeps the build_dir element, because the last element of
the toolchain build directory and of the toolchain staging directory is
the same string and one replacement for both would make the two roots
indistinguishable.

Tested with two bcm47xx/mips74k trees whose directory names differ in
length. The shipped libstdc++.so.6.0.33 holds no absolute path any more
and the libstdcpp6 package is now identical in both trees. It differed by
165 bytes before.

The toolchain staging directory still appears in the debug information of
the same library, 244 times. Those are DWARF include directories, they do
not survive the strip, and no shipped file carries them.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:46:30 +0200</date><id>fa081cadb824d6b104386471eaecb217b665a9a9</id><msg>toolchain: keep the build path out of the target libraries</msg><path><editType>edit</editType><file>toolchain/gcc/common.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/boot/uboot-lantiq/Makefile</affectedPath><affectedPath>package/boot/uboot-lantiq/patches/201-Makefile-honour-SOURCE_DATE_EPOCH.patch</affectedPath><commitId>b1aa81b442ba95273304ff9d060775b3617c37cf</commitId><timestamp>1790095590000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>uboot-lantiq: use a reproducible build timestamp

u-boot 2013.10 builds timestamp_autogenerated.h with a bare date call, so
U_BOOT_DATE and U_BOOT_TIME hold the wall clock and the banner of every
image changes on each build:

  U-Boot 2013.10-openwrt4 (Sep 21 2026 - 20:47:50) ARV7506PW11

Add a patch that uses SOURCE_DATE_EPOCH when the environment provides it,
which the build already exports, and keeps the wall clock otherwise. Later
u-boot versions do the same in their own timestamp rule, which is why only
this package needs the change.

Found with two lantiq/xway trees whose directory names differ in length.
Three bytes of u-boot.bin differed, all inside the banner. After the
change the three u-boot images of arv7506pw11 are identical in both trees
and the banner follows the source date.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:46:30 +0200</date><id>b1aa81b442ba95273304ff9d060775b3617c37cf</id><msg>uboot-lantiq: use a reproducible build timestamp</msg><path><editType>edit</editType><file>package/boot/uboot-lantiq/Makefile</file></path><path><editType>add</editType><file>package/boot/uboot-lantiq/patches/201-Makefile-honour-SOURCE_DATE_EPOCH.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/kernel-defaults.mk</affectedPath><affectedPath>include/rootfs.mk</affectedPath><commitId>3a16a57c08e9b6dcfcccf9a5eb611c79eadff2c9</commitId><timestamp>1790095590000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>kernel: keep /init out of the root filesystem images

The initramfs step copied /init into the root filesystem directory and
never removed it again. With CONFIG_TARGET_PER_DEVICE_ROOTFS the
initramfs kernel and the rootfs image of a device come from that same
directory. Nothing orders the two steps, so /init entered the squashfs
image or not, depending on which step ran first. The reproducible build
service reports this as a difference between the published image and a
rebuild.

Add /init to the initramfs from outside the root filesystem instead. A
built in initramfs gets it through a gen_init_cpio list file. A separate
cpio gets it appended to the finished archive. The mode is now fixed at
0755 and no longer follows the umask of the checkout.

The initramfs step also normalised the mtime of the root filesystem
directory. Do that in prepare_rootfs, so no step writes to the directory
after the image build can start.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:46:30 +0200</date><id>3a16a57c08e9b6dcfcccf9a5eb611c79eadff2c9</id><msg>kernel: keep /init out of the root filesystem images</msg><path><editType>edit</editType><file>include/kernel-defaults.mk</file></path><path><editType>edit</editType><file>include/rootfs.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/boot/arm-trusted-firmware-microchipsw/Makefile</affectedPath><commitId>d15fd263f7214f9b71121039f871cb94ae4f9ced</commitId><timestamp>1790098675000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>boot: arm-trusted-firmware-microchipsw: update to v2.8.17-mchp4

Microchip has fixed various issues since the last update, so update TF-A.

Signed-off-by: Robert Marko &lt;robert.marko@sartura.hr&gt;
</comment><date>2026-09-22 19:37:55 +0200</date><id>d15fd263f7214f9b71121039f871cb94ae4f9ced</id><msg>boot: arm-trusted-firmware-microchipsw: update to v2.8.17-mchp4</msg><path><editType>edit</editType><file>package/boot/arm-trusted-firmware-microchipsw/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/boot/arm-trusted-firmware-microchipsw/patches/0004-microchip-lan969x-do-not-rely-on-Ruby-shebang.patch</affectedPath><affectedPath>package/boot/arm-trusted-firmware-microchipsw/patches/0004-plat-microchip-convert-FWU-scripts-to-Python.patch</affectedPath><affectedPath>package/boot/arm-trusted-firmware-microchipsw/Makefile</affectedPath><commitId>b24e4338646f62c6dd8d138d41ced466362911cf</commitId><timestamp>1790098675000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>boot: arm-trusted-firmware-microchipsw: convert FWU scripts to Python

Currently, we depend on building the host Ruby support just for the two
FWU scripts that are written in Ruby.

Use Codex 5.6 to convert the scripts to Python and drop Ruby dependency.

Signed-off-by: Robert Marko &lt;robert.marko@sartura.hr&gt;
</comment><date>2026-09-22 19:37:55 +0200</date><id>b24e4338646f62c6dd8d138d41ced466362911cf</id><msg>boot: arm-trusted-firmware-microchipsw: convert FWU scripts to Python</msg><path><editType>delete</editType><file>package/boot/arm-trusted-firmware-microchipsw/patches/0004-microchip-lan969x-do-not-rely-on-Ruby-shebang.patch</file></path><path><editType>add</editType><file>package/boot/arm-trusted-firmware-microchipsw/patches/0004-plat-microchip-convert-FWU-scripts-to-Python.patch</file></path><path><editType>edit</editType><file>package/boot/arm-trusted-firmware-microchipsw/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/system/procd/Makefile</affectedPath><affectedPath>package/system/procd/files/uxc.sh</affectedPath><commitId>56d9cd66a8ec84989618f3fea76e429c2d2eeda5</commitId><timestamp>1790100067000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/daniel</absoluteUrl><fullName>daniel</fullName></author><authorEmail>daniel@makrotopia.org</authorEmail><comment>procd: update to git HEAD of 2026-09-22

Various bug fixes and container runtime improvements.

Fixes: #25277 (at least)
Signed-off-by: Daniel Golle &lt;daniel@makrotopia.org&gt;
</comment><date>2026-09-22 19:01:07 +0100</date><id>56d9cd66a8ec84989618f3fea76e429c2d2eeda5</id><msg>procd: update to git HEAD of 2026-09-22</msg><path><editType>edit</editType><file>package/system/procd/Makefile</file></path><path><editType>edit</editType><file>package/system/procd/files/uxc.sh</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>tools/lzma/Makefile</affectedPath><affectedPath>tools/mkimage/Makefile</affectedPath><affectedPath>tools/mtools/Makefile</affectedPath><commitId>0f05c481fd445d49fdea6962952a84d53d03da1c</commitId><timestamp>1790101799000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>tools: pass the job server to the compile step of mtools, mkimage and lzma

host-build.mk clears MAKEFLAGS, so a custom Host/Compile that runs a bare
$(MAKE) builds with one job, whatever HOST_BUILD_PARALLEL says. mtools
sets the flag, but its compile step never used it.

Each of the three now passes $(HOST_JOBS), and mkimage and lzma set
HOST_BUILD_PARALLEL:

  mkimage  11.7 s -&gt; 7.2 s
  mtools    8.3 s -&gt; 4.8 s
  lzma      4.0 s -&gt; 1.8 s

Each one builds five times out of five with the job server, and each
build installs files that are identical to those of a serial build.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 20:29:59 +0200</date><id>0f05c481fd445d49fdea6962952a84d53d03da1c</id><msg>tools: pass the job server to the compile step of mtools, mkimage and lzma</msg><path><editType>edit</editType><file>tools/mtools/Makefile</file></path><path><editType>edit</editType><file>tools/lzma/Makefile</file></path><path><editType>edit</editType><file>tools/mkimage/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>tools/make-ext4fs/Makefile</affectedPath><affectedPath>tools/automake/Makefile</affectedPath><affectedPath>tools/dosfstools/Makefile</affectedPath><affectedPath>tools/autoconf/Makefile</affectedPath><affectedPath>tools/libtool/Makefile</affectedPath><commitId>c3447b76fe2c76e1eedf4fca0a8955a8cb568677</commitId><timestamp>1790101799000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>tools: build autoconf, automake, libtool, dosfstools and make-ext4fs in parallel

  libtool      22.5 s -&gt; 20.0 s
  dosfstools    6.0 s -&gt;  4.8 s
  make-ext4fs   2.1 s -&gt;  1.2 s
  automake      3.9 s -&gt;  3.4 s
  autoconf      3.1 s -&gt;  2.6 s

Each one builds five times out of five with the job server, and each
build installs files that are identical to those of a serial build.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 20:29:59 +0200</date><id>c3447b76fe2c76e1eedf4fca0a8955a8cb568677</id><msg>tools: build autoconf, automake, libtool, dosfstools and make-ext4fs in parallel</msg><path><editType>edit</editType><file>tools/autoconf/Makefile</file></path><path><editType>edit</editType><file>tools/automake/Makefile</file></path><path><editType>edit</editType><file>tools/libtool/Makefile</file></path><path><editType>edit</editType><file>tools/make-ext4fs/Makefile</file></path><path><editType>edit</editType><file>tools/dosfstools/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>tools/sparse/Makefile</affectedPath><commitId>37f7186e75b0af0a1338fd6625f3f3881c2fce01</commitId><timestamp>1790101799000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>tools/sparse: build in parallel

sparse set PKG_BUILD_PARALLEL, which a host build does not read, so it
built with one job. Use HOST_BUILD_PARALLEL: 6.6 s -&gt; 1.3 s.

It builds five times out of five with the job server, and each build
installs files that are identical to those of a serial build.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 20:29:59 +0200</date><id>37f7186e75b0af0a1338fd6625f3f3881c2fce01</id><msg>tools/sparse: build in parallel</msg><path><editType>edit</editType><file>tools/sparse/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/site/cache</affectedPath><affectedPath>rules.mk</affectedPath><commitId>18a2ea702cf3111a21deed641f946d31f4e09018</commitId><timestamp>1790101799000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: start the configure cache cold when its answers may be stale

Three cases kept a cached answer that no longer held:

A new configure script. A package with an autoreconf fixup regenerates
configure with the staged autoconf, automake and libtool, and a new
version of one of them can change what a cache variable means. The site
script now keeps a checksum of configure beside the cache and drops the
cache when the checksum changes. A new patch to configure is covered too.

A changed precious variable. configure aborts when LIBS, CPP or another
precious variable differs from the value in the cache, and because
nothing removes the cache, it aborts on every later run as well:

  configure: error: 'LIBS' was not set in the previous run
  configure: error: changes in the environment can compromise the build

The site script now makes the same comparison before configure does and
drops the cache on a difference.

Paths under other names. The libtool answers lt_cv_path_*, acl_cv_path_*
and lt_cv_sys_global_symbol_*, and gmp_cv_prog_m4, hold the path of a
system tool or of the staged sed and m4, and survived a wipe of
staging_dir. The site script now drops them with the ac_cv_path_ answers.

m4 and gmp still configure the same way with a warm cache as they do
without one, and still read it: the m4 configure stage takes 1.5 s warm
against 23 s cold.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 20:29:59 +0200</date><id>18a2ea702cf3111a21deed641f946d31f4e09018</id><msg>build: start the configure cache cold when its answers may be stale</msg><path><editType>edit</editType><file>include/site/cache</file></path><path><editType>edit</editType><file>rules.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>tools/bc/Makefile</affectedPath><affectedPath>tools/mtools/Makefile</affectedPath><affectedPath>tools/expat/Makefile</affectedPath><affectedPath>tools/xz/Makefile</affectedPath><affectedPath>tools/libressl/Makefile</affectedPath><affectedPath>tools/flex/Makefile</affectedPath><affectedPath>tools/libtool/Makefile</affectedPath><affectedPath>tools/gengetopt/Makefile</affectedPath><affectedPath>tools/fakeroot/Makefile</affectedPath><affectedPath>tools/mtd-utils/Makefile</affectedPath><affectedPath>tools/dosfstools/Makefile</affectedPath><commitId>6eae1d6b772eeb012046f64be83ecf9ea5ef7514</commitId><timestamp>1790101799000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>tools: cache the configure results of eleven more autotools tools

Configure stage without a cache against a warm cache:

  mtools      3.34 s -&gt; 0.28 s
  gengetopt   4.39 s -&gt; 2.13 s
  fakeroot   10.97 s -&gt; 8.73 s
  xz          4.32 s -&gt; 2.17 s
  libressl    3.07 s -&gt; 1.46 s
  flex       12.32 s -&gt; 10.98 s
  expat       2.74 s -&gt; 1.52 s
  bc          1.34 s -&gt; 0.38 s
  dosfstools  3.13 s -&gt; 2.54 s
  libtool     2.86 s -&gt; 2.29 s
  mtd-utils   4.06 s -&gt; 3.56 s

flex, fakeroot, dosfstools and mtd-utils run autoreconf in the same
stage, and the cache does not reach that part.

Each of the eleven configures the same way with a warm cache as it does
without one: the check configures three times, without a cache, with a
cold cache and with a warm cache, and every generated file of the first
and the last run is identical. A static scan of each configure script
found no cache check that changes CFLAGS, CPPFLAGS, LDFLAGS or LIBS
without restoring it.

patchelf, mklibs and automake pass the same check but gain less than
half a second, so they stay out.

make world after make tools/clean now takes 121 s against 177 s with
cold caches.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 20:29:59 +0200</date><id>6eae1d6b772eeb012046f64be83ecf9ea5ef7514</id><msg>tools: cache the configure results of eleven more autotools tools</msg><path><editType>edit</editType><file>tools/mtools/Makefile</file></path><path><editType>edit</editType><file>tools/xz/Makefile</file></path><path><editType>edit</editType><file>tools/libressl/Makefile</file></path><path><editType>edit</editType><file>tools/dosfstools/Makefile</file></path><path><editType>edit</editType><file>tools/flex/Makefile</file></path><path><editType>edit</editType><file>tools/gengetopt/Makefile</file></path><path><editType>edit</editType><file>tools/fakeroot/Makefile</file></path><path><editType>edit</editType><file>tools/mtd-utils/Makefile</file></path><path><editType>edit</editType><file>tools/expat/Makefile</file></path><path><editType>edit</editType><file>tools/libtool/Makefile</file></path><path><editType>edit</editType><file>tools/bc/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/generic/pending-6.18/304-LoongArch-vdso-keep-the-prefix-map-flags.patch</affectedPath><affectedPath>target/linux/generic/pending-6.12/304-LoongArch-vdso-keep-the-prefix-map-flags.patch</affectedPath><commitId>67fcd3e5698a2dbf3d71068fce2dcfacc3a3109d</commitId><timestamp>1790106068000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>generic: refresh the LoongArch vDSO prefix map patch

The patch ends in an empty line where quilt writes a context line
holding a single space, so `make target/linux/refresh` rewrites it
and the kernel patch check fails on every target.

Fixes: 115209aa225a ("kernel: make the LoongArch vDSO build id independent of the build path")
Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Julius Bairaktaris &lt;julius@bairaktaris.de&gt;
Link: https://github.com/openwrt/openwrt/pull/25333
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-22 21:41:08 +0200</date><id>67fcd3e5698a2dbf3d71068fce2dcfacc3a3109d</id><msg>generic: refresh the LoongArch vDSO prefix map patch</msg><path><editType>edit</editType><file>target/linux/generic/pending-6.18/304-LoongArch-vdso-keep-the-prefix-map-flags.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.12/304-LoongArch-vdso-keep-the-prefix-map-flags.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/ath79/image/generic.mk</affectedPath><affectedPath>target/linux/ath79/generic/config-default</affectedPath><commitId>2e5345462eeb203b54d2805b388cae271041b8a5</commitId><timestamp>1790109688000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>ath79: use module for Fritz 300E

The generic config builds CONFIG_INTEL_XWAY_PHY for all devices while
only a single one uses it. Avoid bloating the kernel by using the module
for the only device that uses this PHY.

Signed-off-by: Rosen Penev &lt;rosenp@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25294
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-22 22:41:28 +0200</date><id>2e5345462eeb203b54d2805b388cae271041b8a5</id><msg>ath79: use module for Fritz 300E</msg><path><editType>edit</editType><file>target/linux/ath79/generic/config-default</file></path><path><editType>edit</editType><file>target/linux/ath79/image/generic.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/ath79/dts/qca9558_tplink_archer-c.dtsi</affectedPath><affectedPath>target/linux/ath79/generic/base-files/etc/board.d/05_compat-version</affectedPath><affectedPath>target/linux/ath79/generic/base-files/etc/board.d/02_network</affectedPath><affectedPath>target/linux/ath79/image/generic-tp-link.mk</affectedPath><commitId>7d1c5a68e534652378cd14e2ef8f9732567a2a69</commitId><timestamp>1790109798000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>ath79: convert qca9558_tplink_archer-c.dtsi to swconfig

This reverts commit 487ff3cfa03771102c18a987acd83f8ea020e5e3.

Three problems:

CONFIG_AR8216_PHY is enabled and to stop it from interfering and
crashing on boot, internal MDIO needs to be used.

Once internal MDIO gets used, ports end up dying even in the absence of
traffic. This is currently believed to be an issue with qca,qca8327
specifically. There are no reports of qca,qca8337 behaving badly.

Routing speed with DSA becomes much slower. Gigabit routing is no longer
doable, even with flow offload. This needs further research.

Signed-off-by: Rosen Penev &lt;rosenp@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25308
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-22 22:43:18 +0200</date><id>7d1c5a68e534652378cd14e2ef8f9732567a2a69</id><msg>ath79: convert qca9558_tplink_archer-c.dtsi to swconfig</msg><path><editType>delete</editType><file>target/linux/ath79/generic/base-files/etc/board.d/05_compat-version</file></path><path><editType>edit</editType><file>target/linux/ath79/generic/base-files/etc/board.d/02_network</file></path><path><editType>edit</editType><file>target/linux/ath79/image/generic-tp-link.mk</file></path><path><editType>edit</editType><file>target/linux/ath79/dts/qca9558_tplink_archer-c.dtsi</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/network/utils/comgt/Makefile</affectedPath><affectedPath>package/network/utils/comgt/files/ncm.json</affectedPath><commitId>19ff245b9233060bcbf55ec50cc3086d4348b72c</commitId><timestamp>1790111268000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>comgt: add ncm support for Fibocom FG621-EA modem

Add a vendor profile for Fibocom modems so that proto ncm can drive them.
Without it ncm.sh reports UNSUPPORTED_MODEM, as the manufacturer string
returned by AT+CGMI has no matching key in ncm.json.

The FG621-EA is used in the ASUS 4G-AX56 and the TP-Link TL-MR500 v1. The
profile keys off the manufacturer string rather than any particular board,
so it applies to Fibocom NCM modems generally.

ncm.json is installed by comgt-ncm, so bump PKG_RELEASE to make sure
existing installations pick up the new vendor profile on upgrade.

This change originates from PR #19793 by kddred, open in draft since
August 2025 without review. The original commit is authored and signed
off with a GitHub noreply address, which the commit formality check
rejects, so it could not be carried unmodified, and kddred has not been
active since August 2025. Authorship is reassigned for that reason alone;
the work is theirs. Happy to restore the original authorship if a usable
address becomes available.

Tested on an ASUS 4G-AX56 (HW rev A1) on both main and openwrt-25.12.

Link: https://github.com/openwrt/openwrt/pull/19793
Signed-off-by: Fredrik Hallin &lt;fredappsdev@outlook.com&gt;
Link: https://github.com/openwrt/openwrt/pull/24974
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-22 23:07:48 +0200</date><id>19ff245b9233060bcbf55ec50cc3086d4348b72c</id><msg>comgt: add ncm support for Fibocom FG621-EA modem</msg><path><editType>edit</editType><file>package/network/utils/comgt/files/ncm.json</file></path><path><editType>edit</editType><file>package/network/utils/comgt/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/patches-6.18/040-v7.4-spi-realtek-rtl-add-support-for-second-CS.patch</affectedPath><commitId>c09e3f28ba110394a1aa4b765d73a4b53e7c90b6</commitId><timestamp>1790149366000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>realtek: spi: backport patch to support second SPI CS

Backports an accepted upstream patch targeted for 7.4 to extend the
Realtek SPI driver with support for the second CS. Though no devices
made use of this so far, further devices may do so.

Link: https://github.com/openwrt/openwrt/pull/25334
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-23 09:42:46 +0200</date><id>c09e3f28ba110394a1aa4b765d73a4b53e7c90b6</id><msg>realtek: spi: backport patch to support second SPI CS</msg><path><editType>add</editType><file>target/linux/realtek/patches-6.18/040-v7.4-spi-realtek-rtl-add-support-for-second-CS.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>tools/yafut/patches/100-honour-SOURCE_DATE_EPOCH.patch</affectedPath><commitId>d5c26afe3336e6a2602f3f90e62dff5f4ec81b84</commitId><timestamp>1790157519000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/nbd</absoluteUrl><fullName>nbd</fullName></author><authorEmail>nbd@nbd.name</authorEmail><comment>tools/yafut: refresh patch

Refresh 100-honour-SOURCE_DATE_EPOCH.patch

Signed-off-by: Felix Fietkau &lt;nbd@nbd.name&gt;
</comment><date>2026-09-23 11:58:39 +0200</date><id>d5c26afe3336e6a2602f3f90e62dff5f4ec81b84</id><msg>tools/yafut: refresh patch</msg><path><editType>edit</editType><file>tools/yafut/patches/100-honour-SOURCE_DATE_EPOCH.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/qualcommax/dts/ipq6018-mr7500.dts</affectedPath><commitId>fa6c94b6e963e5c043da208eb9661240fe346593</commitId><timestamp>1790163445000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>qualcommax: ipq60xx: add AQR114C reset delays for MR7500

The AQR114C requires time after reset deassertion before it is
ready to respond on the MDIO bus. Add reset-assert-us and
reset-deassert-us to ensure reliable PHY enumeration on boot.

Signed-off-by: Ross Barnes-Brown &lt;true.robot.ross@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/24055
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-23 13:37:25 +0200</date><id>fa6c94b6e963e5c043da208eb9661240fe346593</id><msg>qualcommax: ipq60xx: add AQR114C reset delays for MR7500</msg><path><editType>edit</editType><file>target/linux/qualcommax/dts/ipq6018-mr7500.dts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/boot/uboot-microchipsw/patches/0007-mmc-atmel-sdhci-add-support-for-LAN969x.patch</affectedPath><affectedPath>package/boot/uboot-microchipsw/src/board/microchip/lan969x/lan969x.env</affectedPath><affectedPath>package/boot/uboot-microchipsw/patches/0002-pinctrl-add-Microchip-LAN969x-driver.patch</affectedPath><affectedPath>package/boot/uboot-microchipsw/patches/0013-net-phy-add-Microchip-LAN8841-support.patch</affectedPath><affectedPath>package/boot/uboot-microchipsw/patches/0008-i2c-at91-i2c-include-arch-specific-clk.h-only-for-AT.patch</affectedPath><affectedPath>package/boot/uboot-microchipsw/patches/0010-usb-dwc3-generic-add-support-for-Microchip-LAN969x.patch</affectedPath><affectedPath>package/boot/uboot-microchipsw/patches/0006-mmc-atmel-sdhci-include-arch-specific-clk.h-only-for.patch</affectedPath><affectedPath>package/boot/uboot-microchipsw/patches/0003-clk-add-Microchip-LAN966x-and-LAN969x-support.patch</affectedPath><affectedPath>package/boot/uboot-microchipsw/patches/0011-spi-atmel-quadspi-add-Microchip-LAN969x-support.patch</affectedPath><affectedPath>package/boot/uboot-microchipsw/patches/0017-cmd-add-imsz-and-imszb.patch</affectedPath><affectedPath>package/boot/uboot-microchipsw/patches/200-cmd-add-imsz-and-imszb.patch</affectedPath><affectedPath>package/boot/uboot-microchipsw/patches/0005-mmc-atmel-sdhci-set-GCK-rate-based-on-compatible.patch</affectedPath><affectedPath>package/boot/uboot-microchipsw/patches/0004-mmc-atmel-remove-duplicate-depends-on-ARCH_AT91.patch</affectedPath><affectedPath>package/boot/uboot-microchipsw/patches/0014-arch-arm-add-Microchip-LAN969x-support.patch</affectedPath><affectedPath>package/boot/uboot-microchipsw/patches/0016-microchip-lan969x-add-OpenWrt-default-environment.patch</affectedPath><affectedPath>package/boot/uboot-microchipsw/patches/0012-net-add-Microchip-SparX-5-and-LAN969x-support.patch</affectedPath><affectedPath>package/boot/uboot-microchipsw/patches/0015-arm-microchipsw-add-Novarq-Tactical-1000.patch</affectedPath><affectedPath>package/boot/uboot-microchipsw/Makefile</affectedPath><affectedPath>package/boot/uboot-microchipsw/patches/0001-serial-atmel-usart-allow-selecting-from-ARCH_MICROCH.patch</affectedPath><affectedPath>package/boot/uboot-microchipsw/patches/0009-i2c-i2c-at91-allow-selecting-from-ARCH_MICROCHIPSW.patch</affectedPath><commitId>1f89cfd70159a3ff9ecf62fc5bcb3455abcba88c</commitId><timestamp>1790168948000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robert.marko</absoluteUrl><fullName>robert.marko</fullName></author><authorEmail>robert.marko@sartura.hr</authorEmail><comment>boot: uboot-microchipsw: use mainline U-Boot

Use mainline U-Boot with pending patches for LAN969x instead of the
old vendor U-Boot.

Both existing boards are supported.

Signed-off-by: Robert Marko &lt;robert.marko@sartura.hr&gt;
</comment><date>2026-09-23 15:09:08 +0200</date><id>1f89cfd70159a3ff9ecf62fc5bcb3455abcba88c</id><msg>boot: uboot-microchipsw: use mainline U-Boot</msg><path><editType>add</editType><file>package/boot/uboot-microchipsw/patches/0002-pinctrl-add-Microchip-LAN969x-driver.patch</file></path><path><editType>add</editType><file>package/boot/uboot-microchipsw/patches/0011-spi-atmel-quadspi-add-Microchip-LAN969x-support.patch</file></path><path><editType>add</editType><file>package/boot/uboot-microchipsw/patches/0001-serial-atmel-usart-allow-selecting-from-ARCH_MICROCH.patch</file></path><path><editType>add</editType><file>package/boot/uboot-microchipsw/patches/0005-mmc-atmel-sdhci-set-GCK-rate-based-on-compatible.patch</file></path><path><editType>add</editType><file>package/boot/uboot-microchipsw/patches/0013-net-phy-add-Microchip-LAN8841-support.patch</file></path><path><editType>delete</editType><file>package/boot/uboot-microchipsw/src/board/microchip/lan969x/lan969x.env</file></path><path><editType>add</editType><file>package/boot/uboot-microchipsw/patches/0006-mmc-atmel-sdhci-include-arch-specific-clk.h-only-for.patch</file></path><path><editType>add</editType><file>package/boot/uboot-microchipsw/patches/0008-i2c-at91-i2c-include-arch-specific-clk.h-only-for-AT.patch</file></path><path><editType>add</editType><file>package/boot/uboot-microchipsw/patches/0009-i2c-i2c-at91-allow-selecting-from-ARCH_MICROCHIPSW.patch</file></path><path><editType>add</editType><file>package/boot/uboot-microchipsw/patches/0007-mmc-atmel-sdhci-add-support-for-LAN969x.patch</file></path><path><editType>add</editType><file>package/boot/uboot-microchipsw/patches/0016-microchip-lan969x-add-OpenWrt-default-environment.patch</file></path><path><editType>add</editType><file>package/boot/uboot-microchipsw/patches/0014-arch-arm-add-Microchip-LAN969x-support.patch</file></path><path><editType>add</editType><file>package/boot/uboot-microchipsw/patches/0003-clk-add-Microchip-LAN966x-and-LAN969x-support.patch</file></path><path><editType>add</editType><file>package/boot/uboot-microchipsw/patches/0010-usb-dwc3-generic-add-support-for-Microchip-LAN969x.patch</file></path><path><editType>add</editType><file>package/boot/uboot-microchipsw/patches/0015-arm-microchipsw-add-Novarq-Tactical-1000.patch</file></path><path><editType>add</editType><file>package/boot/uboot-microchipsw/patches/0012-net-add-Microchip-SparX-5-and-LAN969x-support.patch</file></path><path><editType>delete</editType><file>package/boot/uboot-microchipsw/patches/200-cmd-add-imsz-and-imszb.patch</file></path><path><editType>edit</editType><file>package/boot/uboot-microchipsw/Makefile</file></path><path><editType>add</editType><file>package/boot/uboot-microchipsw/patches/0017-cmd-add-imsz-and-imszb.patch</file></path><path><editType>add</editType><file>package/boot/uboot-microchipsw/patches/0004-mmc-atmel-remove-duplicate-depends-on-ARCH_AT91.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>tools/cmake/Makefile</affectedPath><affectedPath>tools/cmake/patches/150-zstd-libarchive.patch</affectedPath><commitId>ad71bfef7e5c1c4e1579f6469110babb7e973d9b</commitId><timestamp>1790169479000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>tools/cmake: pass zstd paths to bootstrap

Instead of carrying a patch (150-zstd-libarchive.patch) that modifies
Utilities/cmlibarchive/CMakeLists.txt to enable pkg-config search for
zstd, pass explicit staging library and include paths (-DZSTD_INCLUDE_DIR
and -DZSTD_LIBRARY) directly to CMake's bootstrap script.

ZSTD_INCLUDE_DIR and ZSTD_LIBRARY are the cache variables CMake itself
sets when --system-zstd is not used, so pre-seeding them guarantees that
CMake always links against OpenWrt's staging libzstd without requiring
a patch.

Fixes: 0e3d51ccaedf ("tools/cmake: fix compilation with host libzstd-dev")
Suggested-by: Michael Pratt &lt;mcpratt@pm.me&gt;
Signed-off-by: Josef Schlehofer &lt;pepe.schlehofer@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/24407
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-23 15:17:59 +0200</date><id>ad71bfef7e5c1c4e1579f6469110babb7e973d9b</id><msg>tools/cmake: pass zstd paths to bootstrap</msg><path><editType>edit</editType><file>tools/cmake/Makefile</file></path><path><editType>delete</editType><file>tools/cmake/patches/150-zstd-libarchive.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/cmake.mk</affectedPath><affectedPath>tools/cmake/patches/100-no-testing.patch</affectedPath><affectedPath>tools/cmake/Makefile</affectedPath><commitId>ddb23f3a0223d1280bd674ea7fe4b1dedde22997</commitId><timestamp>1790173765000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>tools/cmake: pass -DBUILD_TESTING=OFF to bootstrap

Instead of carrying 100-no-testing.patch, pass -DBUILD_TESTING=OFF
directly to CMake's bootstrap script. This avoids refreshing the patch
on every CMake update.

The patch also changed the default in the installed CTest.cmake module.
Preserve that behavior by passing -DBUILD_TESTING=OFF by default in
cmake.mk for target and host builds. Packages can override it via
CMAKE_OPTIONS or CMAKE_HOST_OPTIONS.

OpenWrt never runs CMake tests, so building them only wastes build time.

This replaces the patch introduced in 8af80e79bd5b ("tools/cmake:
update to 3.17.0").

Signed-off-by: Josef Schlehofer &lt;pepe.schlehofer@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/24403
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-23 16:29:25 +0200</date><id>ddb23f3a0223d1280bd674ea7fe4b1dedde22997</id><msg>tools/cmake: pass -DBUILD_TESTING=OFF to bootstrap</msg><path><editType>edit</editType><file>tools/cmake/Makefile</file></path><path><editType>edit</editType><file>include/cmake.mk</file></path><path><editType>delete</editType><file>tools/cmake/patches/100-no-testing.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>tools/cmake/Makefile</affectedPath><commitId>e4f2ae3b8d797395f4763cb6d225911795a992ec</commitId><timestamp>1790175463000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>tools/cmake: pass testing option after bootstrap separator

Host/Configure/Default supplies the bootstrap "--" separator before
CMAKE_HOST_OPTIONS. Keep BUILD_TESTING with the CMake cache options so
it is passed after that separator, without introducing a second one.

Fixes: ddb23f3a0223d ("tools/cmake: pass -DBUILD_TESTING=OFF to bootstrap")
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-23 16:57:43 +0200</date><id>e4f2ae3b8d797395f4763cb6d225911795a992ec</id><msg>tools/cmake: pass testing option after bootstrap separator</msg><path><editType>edit</editType><file>tools/cmake/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/devel/valgrind/Makefile</affectedPath><commitId>da415b6a69ebd98a5a58cceb058dd8273475c6d7</commitId><timestamp>1790175721000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>valgrind: fix ARMv7 detection on AArch64

The mvebu target enables CONFIG_CPU_V7 even for AArch64 subtargets,
which also causes CONFIG_arm_v7 to be set. This makes Valgrind use
the ARMv7 configure host triplet on AArch64, breaking the build.

Only apply the ARMv7 host override when ARCH is arm.

Signed-off-by: Tianling Shen &lt;cnsztl@immortalwrt.org&gt;
Link: https://github.com/openwrt/openwrt/pull/25346
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-23 17:02:01 +0200</date><id>da415b6a69ebd98a5a58cceb058dd8273475c6d7</id><msg>valgrind: fix ARMv7 detection on AArch64</msg><path><editType>edit</editType><file>package/devel/valgrind/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/patches-6.18/024-02-v7.1-net-phy-realtek-add-RTL8224-pair-order-support.patch</affectedPath><affectedPath>target/linux/realtek/patches-6.18/743-net-realtek-serdes-configuration.patch</affectedPath><affectedPath>target/linux/realtek/patches-6.18/024-04-v7.1-net-phy-realtek-add-RTL8224-polarity-support.patch</affectedPath><affectedPath>target/linux/realtek/patches-6.18/030-v7.2-net-phy-realtek-support-MDI-swapping-for-RTL8226-CG.patch</affectedPath><affectedPath>target/linux/generic/pending-6.18/743-net-phy-realtek-reset-RTL8261N-USXGMII-SerDes-on-lin.patch</affectedPath><affectedPath>target/linux/generic/pending-6.18/742-net-phy-realtek-add-5G-and-10G-PHY-support.patch</affectedPath><commitId>76da1ee259c5804e105c3f044fcf94833608b227</commitId><timestamp>1790184476000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>generic: harden RTL826x PHY match, EEE and soft-reset

Require PKG_MODEL 0x8261 for RTL8261BE/N probe matching.  Extend
EEE disable in rtl826x_probe() to multi-G speeds for PHYs without
a device-tree node (e.g. SFP cage modules).  Wait the datasheet t7
minimum (150 ms) after MMD30 soft-reset before applying firmware
patches.

Fixes 10G link flapping on Spectrum SBE1V1K (RTL8261BE).

Also exercised on BPi-R4 with a ZYOPM SFP+ RTL8261BE module.

Tested-by: Andrew LaMarche &lt;andrewjlamarche@gmail.com&gt;
Link: https://forum.openwrt.org/t/spectrum-sbe1v1k-ipq9574-openwrt-support/245244/190

Signed-off-by: Daniel Pawlik &lt;pawlik.dan@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/24887
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-23 19:27:56 +0200</date><id>76da1ee259c5804e105c3f044fcf94833608b227</id><msg>generic: harden RTL826x PHY match, EEE and soft-reset</msg><path><editType>edit</editType><file>target/linux/generic/pending-6.18/742-net-phy-realtek-add-5G-and-10G-PHY-support.patch</file></path><path><editType>edit</editType><file>target/linux/realtek/patches-6.18/030-v7.2-net-phy-realtek-support-MDI-swapping-for-RTL8226-CG.patch</file></path><path><editType>edit</editType><file>target/linux/realtek/patches-6.18/024-04-v7.1-net-phy-realtek-add-RTL8224-polarity-support.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.18/743-net-phy-realtek-reset-RTL8261N-USXGMII-SerDes-on-lin.patch</file></path><path><editType>edit</editType><file>target/linux/realtek/patches-6.18/024-02-v7.1-net-phy-realtek-add-RTL8224-pair-order-support.patch</file></path><path><editType>edit</editType><file>target/linux/realtek/patches-6.18/743-net-realtek-serdes-configuration.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</affectedPath><commitId>cc83970a16200b453ae2363520151cad1e30ac9a</commitId><timestamp>1790184620000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>realtek: pcs: rtl93xx: name common SerDes registers and fields

Document SerDes registers and fields shared by RTL930x and RTL931x.
Replace magic offsets and bit ranges at their call sites with the named
registers and field masks.

Link: https://github.com/openwrt/openwrt/pull/25314
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-23 19:30:20 +0200</date><id>cc83970a16200b453ae2363520151cad1e30ac9a</id><msg>realtek: pcs: rtl93xx: name common SerDes registers and fields</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</affectedPath><commitId>be387779344c4cecaae5b3382945e7f67618f583</commitId><timestamp>1790184621000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>realtek: pcs: rtl930x: name SerDes registers and fields

Document RTL930x SerDes registers and fields, then replace magic offsets
and bit ranges at their call sites. Use FIELD_PREP() where values need
positioning and named masks for field updates.

Link: https://github.com/openwrt/openwrt/pull/25314
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-23 19:30:21 +0200</date><id>be387779344c4cecaae5b3382945e7f67618f583</id><msg>realtek: pcs: rtl930x: name SerDes registers and fields</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</affectedPath><commitId>c1b568dbd7b297120e9df587acc56847c37159a3</commitId><timestamp>1790184621000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>realtek: pcs: rtl931x: name SerDes registers and fields

Document RTL931x SerDes registers and fields, then replace magic offsets
and bit ranges at their call sites. Use FIELD_PREP() where values need
positioning and named masks for field updates.

Link: https://github.com/openwrt/openwrt/pull/25314
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-23 19:30:21 +0200</date><id>c1b568dbd7b297120e9df587acc56847c37159a3</id><msg>realtek: pcs: rtl931x: name SerDes registers and fields</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</affectedPath><commitId>b532485b4e74cd6d112d7286a7068677080d9cde</commitId><timestamp>1790184621000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>realtek: pcs: rtl83xx: name the SerDes soft reset field

Document the common SerDes soft-reset register and field. Replace magic
register values in the RTL838x and RTL839x reset sequences with named,
SDK-style masked field updates. Merge the two sequences by dropping the
RTL839x-specific delay - which is unneeded according to the SDK - and
provide a combined helper.

Link: https://github.com/openwrt/openwrt/pull/25314
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-23 19:30:21 +0200</date><id>b532485b4e74cd6d112d7286a7068677080d9cde</id><msg>realtek: pcs: rtl83xx: name the SerDes soft reset field</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</affectedPath><commitId>4cf738158f88ad961a8873c79b1f25d8a633878a</commitId><timestamp>1790184622000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>realtek: pcs: rtl930x: simplify XSG writes

XSG fan-out is only required for the low digital pages on SerDes 2 and
3. Apply the analog configuration tables through the normal write path
and remove the now-unused XSG table helper.

Limit the XSG operation to its supported targets, reuse the normal
RTL930x write for the first SerDes, and derive the companion from the
existing physical mapping.

Link: https://github.com/openwrt/openwrt/pull/25314
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-23 19:30:22 +0200</date><id>4cf738158f88ad961a8873c79b1f25d8a633878a</id><msg>realtek: pcs: rtl930x: simplify XSG writes</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</affectedPath><commitId>76d313b2c60578948e68ec2994f671c7637243e3</commitId><timestamp>1790184622000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>realtek: pcs: rtl930x: coalesce TX amplitude updates

Program impedance, pre-amplitude, and post-amplitude in that order so
dependent enable state is not exposed before its coefficient.

Then update the main amplitude and both enable bits together. This
replaces three REG07 read-modify-write transactions with one.

Link: https://github.com/openwrt/openwrt/pull/25314
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-23 19:30:22 +0200</date><id>76d313b2c60578948e68ec2994f671c7637243e3</id><msg>realtek: pcs: rtl930x: coalesce TX amplitude updates</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</affectedPath><commitId>3c80700e134d75fdd16194ad51eb3ce693355056</commitId><timestamp>1790184622000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>realtek: pcs: rtl930x: coalesce RX VTH updates

The positive and negative VTH values occupy disjoint fields in the same
register. Combine them into one masked read-modify-write instead of
updating each field separately.

Link: https://github.com/openwrt/openwrt/pull/25314
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-23 19:30:22 +0200</date><id>3c80700e134d75fdd16194ad51eb3ce693355056</id><msg>realtek: pcs: rtl930x: coalesce RX VTH updates</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/bcm53xx/Makefile</affectedPath><commitId>d2a80cdbd8060f9ec4de36f19769274d2712114b</commitId><timestamp>1790189037000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>bcm53xx: switch to 6.18

Promote kernel 6.18 to the default KERNEL_PATCHVER for bcm53xx and
drop the KERNEL_TESTING_PATCHVER entry, since 6.18 is no longer the
testing kernel.

Signed-off-by: Rosen Penev &lt;rosenp@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25307
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-23 20:43:57 +0200</date><id>d2a80cdbd8060f9ec4de36f19769274d2712114b</id><msg>bcm53xx: switch to 6.18</msg><path><editType>edit</editType><file>target/linux/bcm53xx/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/bcm53xx/patches-6.12/321-v7.1-ARM-dts-BCM5301X-EA9200-add-USB-GPIOs.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/500-UBI-Detect-EOF-mark-and-erase-all-remaining-blocks.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/326-ARM-dts-BCM5301X-EA9200-use-network-LED-trigger.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/325-ARM-dts-BCM5301X-EA9200-set-MAC-from-nvram.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/314-ARM-dts-BCM5301X-EA6300-specify-switch.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/300-ARM-BCM5301X-Disable-MMU-and-Dcache-during-decompres.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/140-mtd-parsers-trx-parse-firmware-MTD-partitions-only.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/324-ARM-dts-BCM5301X-EA9200-add-wifi-definitions.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/304-ARM-dts-BCM5301X-Specify-switch-ports-for-remaining-.patch</affectedPath><affectedPath>target/linux/bcm53xx/config-6.12</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/050-v6.13-ARM-dts-meraki-mr26-set-mac-address-for-gmac0.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/320-v7.1-ARM-dts-BCM5301X-EA9200-add-WiFi-button.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/352-ARM-dts-BCM5301X-EA9200-fix-nvram-size.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/360-v7.2-ARM-dts-BCM5301X-R6300v2-fix-USB3.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/323-v7.1-ARM-dts-BCM5301X-EA9200-specify-partitions.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/349-v7.1-ARM-dts-BCM5301X-Describe-PCIe-controllers-fully.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/312-v7.1-ARM-dts-BCM5301X-panamera-set-WAN-MAC-from-nvram.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/340-meraki-mx6x-mac-base.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/315-ARM-dts-BCM5301X-phicomm-k3-specify-switch.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/322-v7.1-ARM-dts-BCM5301X-EA9200-add-LEDs.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/313-ARM-dts-BCM5301X-AC87U-specify-switch.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/333-bcm53xx-dts-meraki-mx6x-add-OpenWrt-specific-LED-ali.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/311-v7.1-ARM-dts-BCM5301X-EA9200-set-WAN-MAC-from-nvram.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/332-Meraki-MX6X-partition-fixups.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/180-usb-xhci-add-support-for-performing-fake-doorbell.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/331-v7.2-ARM-dts-NSP-Move-MX6X-pinctrl-config-to-PWM-node.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/361-v7.2-ARM-dts-BCM5301X-EA6500v2-fix-USB3.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/701-net-dsa-b53-disable-EAP-setup-on-Northstar-switches.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/351-PCI-iproc-Use-the-EROM-outbound-window-on-BCMA.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/350-v7.1-ARM-dts-BCM5301X-add-root-pcie-bridges.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/310-ARM-BCM5301X-Add-DT-for-Netgear-R7900.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/051-ARM-dts-meraki-mr26-wifi-MACs-in-dts.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/905-BCM53573-minor-hacks.patch</affectedPath><commitId>6a31f03522f5cbb829b9078863096058c82767fc</commitId><timestamp>1790189037000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>bcm53xx: remove 6.12 files

Now that 6.18 is the only supported kernel version for bcm53xx,
remove the 6.12 kernel configs (config-6.12 and per-subtarget
config-6.12 files) and the entire patches-6.12 patch stack, as they
are no longer used.

Signed-off-by: Rosen Penev &lt;rosenp@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25307
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-23 20:43:57 +0200</date><id>6a31f03522f5cbb829b9078863096058c82767fc</id><msg>bcm53xx: remove 6.12 files</msg><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/349-v7.1-ARM-dts-BCM5301X-Describe-PCIe-controllers-fully.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/326-ARM-dts-BCM5301X-EA9200-use-network-LED-trigger.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/051-ARM-dts-meraki-mr26-wifi-MACs-in-dts.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/333-bcm53xx-dts-meraki-mx6x-add-OpenWrt-specific-LED-ali.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/050-v6.13-ARM-dts-meraki-mr26-set-mac-address-for-gmac0.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/312-v7.1-ARM-dts-BCM5301X-panamera-set-WAN-MAC-from-nvram.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/351-PCI-iproc-Use-the-EROM-outbound-window-on-BCMA.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/313-ARM-dts-BCM5301X-AC87U-specify-switch.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/350-v7.1-ARM-dts-BCM5301X-add-root-pcie-bridges.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/905-BCM53573-minor-hacks.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/314-ARM-dts-BCM5301X-EA6300-specify-switch.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/324-ARM-dts-BCM5301X-EA9200-add-wifi-definitions.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/321-v7.1-ARM-dts-BCM5301X-EA9200-add-USB-GPIOs.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/322-v7.1-ARM-dts-BCM5301X-EA9200-add-LEDs.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/140-mtd-parsers-trx-parse-firmware-MTD-partitions-only.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/701-net-dsa-b53-disable-EAP-setup-on-Northstar-switches.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/300-ARM-BCM5301X-Disable-MMU-and-Dcache-during-decompres.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/311-v7.1-ARM-dts-BCM5301X-EA9200-set-WAN-MAC-from-nvram.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/331-v7.2-ARM-dts-NSP-Move-MX6X-pinctrl-config-to-PWM-node.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/340-meraki-mx6x-mac-base.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/361-v7.2-ARM-dts-BCM5301X-EA6500v2-fix-USB3.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/332-Meraki-MX6X-partition-fixups.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/304-ARM-dts-BCM5301X-Specify-switch-ports-for-remaining-.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/180-usb-xhci-add-support-for-performing-fake-doorbell.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/320-v7.1-ARM-dts-BCM5301X-EA9200-add-WiFi-button.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/500-UBI-Detect-EOF-mark-and-erase-all-remaining-blocks.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/352-ARM-dts-BCM5301X-EA9200-fix-nvram-size.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/315-ARM-dts-BCM5301X-phicomm-k3-specify-switch.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/360-v7.2-ARM-dts-BCM5301X-R6300v2-fix-USB3.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/config-6.12</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/325-ARM-dts-BCM5301X-EA9200-set-MAC-from-nvram.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/310-ARM-BCM5301X-Add-DT-for-Netgear-R7900.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/323-v7.1-ARM-dts-BCM5301X-EA9200-specify-partitions.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/net/phy/realtek/realtek_multiport.c</affectedPath><commitId>2c9a3999e452135fbc1e2be906832d7e77d1fda6</commitId><timestamp>1790190608000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>realtek: phy: fix RTL8218E second XSGMII channel group

The RTL8218E exposes XSGMII as one logical SerDes, but its eight
MAC-side channels are represented by two groups of four. The initial
setup disables autonegotiation only for the first group on page 0x400,
leaving the second group on page 0x500 in autonegotiation mode.

Consequently, the first four package ports pass traffic while the
remaining four establish copper link but do not pass packets. Disable
XSGMII autonegotiation for the second group as well by forcing
register 0x500.12[9:8] to 01.

This changes 0x500.12 from 0x70d0 to 0x71d0 and brings
0x507.15[7:4] from 0 to 0xf on hardware, after which all eight ports
pass traffic.

Fixes: 2db820be865f ("realtek: phy: fix RTL8218E XSGMII initialization")
Assisted-by: ChatGPT (OpenAI GPT-5.6 Sol)
Link: https://github.com/openwrt/openwrt/pull/25364
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-23 21:10:08 +0200</date><id>2c9a3999e452135fbc1e2be906832d7e77d1fda6</id><msg>realtek: phy: fix RTL8218E second XSGMII channel group</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/phy/realtek/realtek_multiport.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/base-files/etc/board.d/02_network</affectedPath><affectedPath>target/linux/realtek/image/rtl930x.mk</affectedPath><affectedPath>target/linux/realtek/dts/rtl9302_ubnt_usw-pro-max-24-poe.dts</affectedPath><commitId>98f3808362bec6dc5eee0479be7f4239efbfa91e</commitId><timestamp>1790190901000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>realtek: add support for Ubiquiti UniFi USW Pro Max 24 PoE

Add support for RTL9302B-based Ubiquiti UniFi USW Pro Max 24 PoE switch
with 16x GbE and 8x 2.5G RJ45 ports, 2x SFP+, and a front display.

Hardware
========

  - RTL9302B switch SoC
  - 512 MiB RAM
  - 32 MiB SPI-NOR flash
  - 16x 100M/1G RJ45 ports via 2x RTL8218E
  - 8x 100M/1G/2.5G RJ45 ports via 2x RTL8224
  - PoE:
      - 400W total budget
      - 8x 802.3at, 32W per port (ports 1-8)
      - 16x 802.3bt, 60W per port (ports 9-24)
  - 2x SFP+ ports
  - Buttons: 1x Reset
  - LEDs: RGBW LED per port (Etherlighting)
  - Front touch display via USB ACM (see below)
  - Console: TTL 3.3V, 115200 8N1 (internal pin header close to SoC;
    layout front to back: VCC RX TX GND)
  - Etherlighting feature (lighting patterns and color control)
  - Vendor firmware: U-Boot + LEDE-based Ubiquiti OS

MAC address
===========

Single MAC address in EEPROM partition, applied to all ports.

Front touch display
===================

The unit has a touch-capable front display, driven by a dedicated
STM32-based MCU. Unlike other Ubiquiti switches where the MCU is
connected to the SoC via UART directly, here it is exposed as a USB
CDC-ACM serial device through an on-board Genesys Logic GL850G USB hub.
The MCU runs Ubiquiti's LCM firmware and exposes a high-level JSON
protocol (page selection, button-press events, etc.); arbitrary
pixel-level control is not possible without replacing the MCU firmware.
Display support therefore depends on both USB host support and a driver
for the LCM protocol, neither of which is currently available.

Known issues
============

  - Etherlighting not controllable, driver WIP. Port LEDs for link work
    though. By default, the controller keeps the LEDs in a breathing
    state, gated by the link state delivered by the Realtek SoC.

Disclaimer
==========

Stock firmware uses a dual-bank layout (kernel0/kernel1, ~15 MiB each).
OpenWrt replaces both banks with a single contiguous firmware partition.
Flashing OpenWrt writes or invalidates both stock kernel slots; U-Boot
remains intact and can be used for recovery.

Installation
============

1. Enable SSH on the stock UniFi OS and log in with user account.

2. Copy the OpenWrt sysupgrade image to /tmp on the switch (e.g. via
   scp).

3. Adjust IMG below to point at the copied file, then run the block as a
   whole. It verifies the expected stock partition layout and image size,
   writes kernel0, splits into kernel1 if the image is larger than that
   slot (otherwise invalidates kernel1 so U-Boot cannot pick a stale
   bank), and reboots:

   set -e
   IMG=/tmp/openwrt-realtek-rtl930x-ubnt_usw-pro-max-24-poe-squashfs-sysupgrade.bin
   K0_SIZE=$((0xf10000))
   K0_BLOCKS=$((K0_SIZE / 0x10000))

   grep -q '^mtd2: 00f10000 00010000 "kernel0"$' /proc/mtd
   grep -q '^mtd3: 00f20000 00010000 "kernel1"$' /proc/mtd
   IMG_SIZE=$(wc -c &lt; "$IMG")
   [ "$IMG_SIZE" -gt 0 ]
   [ "$IMG_SIZE" -le $((0x1e30000)) ]

   dd if="$IMG" of=/dev/mtdblock2 bs=64k count=$K0_BLOCKS conv=fsync
   if [ "$IMG_SIZE" -gt "$K0_SIZE" ]; then
       dd if="$IMG" of=/dev/mtdblock3 bs=64k skip=$K0_BLOCKS conv=fsync
   else
       dd if=/dev/zero of=/dev/mtdblock3 bs=64k count=1 conv=fsync
   fi
   sync
   reboot

   The switch comes up in OpenWrt after reboot.

4. It is recommended to modify the bootcmd to speed up the boot and
   prevent any issues due to the dual-boot selection. Since U-Boot by
   default uses bootubnt which does a lot of (unneeded) RTK
   initialization, quite some time passes until Linux is started.
   Additionally, the U-Boot logic fiddles with some bits on flash which
   causes JFFS2 errors in OpenWrt. While this doesn't seem to cause
   issues yet, be defensive and set the bootcmd from OpenWrt with:

     fw_setenv bootcmd 'bootm 0xb40b0000'
     fw_printenv bootcmd

   This directly boots the uImage from flash, without doing all the
   initialization. OpenWrt is able to bootstrap the networking
   completely on its own.

It does not matter which bank stock booted from when the dd block
runs: both banks are touched in the same pass (kernel0 written, kernel1
either written or invalidated). With kernel1 invalidated, U-Boot's
internal fallback kicks in and permanently switches to kernel0 on the
next boot, so the device stays on OpenWrt as long as kernel0 is
bootable.

Recovery
========

Since the installation procedure invalidates or partially overwrites
the second bank, recovery requires serial console access (see Hardware
above for pinout).

1. Interrupt U-Boot autoboot by spamming a key during early boot to
   drop into the U-Boot prompt.

2. Bring up networking:

   rtk network on

3. Transfer an OpenWrt initramfs image via TFTP and boot it:

   tftpboot 0x82000000 &lt;server&gt;:&lt;initramfs.bin&gt;
   bootm 0x82000000

4. From the running initramfs OpenWrt, do a sysupgrade to reflash
   OpenWrt or whatever you want to recover. There is no need for the
   complicated procedure from installation since OpenWrt sees the
   firmware partition already as a whole.

Return to stock firmware
========================

There is no fully-supported revert path. The stock firmware blob is a
Ubiquiti UBNT archive (header + parts, see firmware-utils' fw.h) that
embeds a u-boot and a kernel0 uImage payload; only the latter is
relevant when writing back to the kernel partitions.

The snippet below extracts the kernel0 uImage from such a blob by
locating the uImage magic and using the size carried in the uImage
header itself, without parsing any UBNT framing. It is provided as a
best-effort starting point; verify the result before flashing,
otherwise you're on your own:

   BLOB=&lt;firmware.bin&gt;
   OFF=$(grep -aboF $'\x27\x05\x19\x56' "$BLOB" | head -1 | cut -d: -f1)
   SIZE=$(( $(dd if="$BLOB" bs=1 skip=$((OFF + 12)) count=4 2&gt;/dev/null \
               | hexdump -e '1/4 "%u"') + 64 ))
   dd if="$BLOB" of=kernel0.uImage bs=1 skip="$OFF" count="$SIZE"

Once you have a clean uImage, boot an OpenWrt initramfs as described in
Recovery, copy kernel0.uImage to /tmp, and run:

   set -e
   [ "$(wc -c &lt; /tmp/kernel0.uImage)" -le $((0xf10000)) ] || exit 1
   mtd write /tmp/kernel0.uImage firmware
   fw_setenv bootcmd bootubnt
   fw_printenv bootcmd
   reboot

After rebooting, Ubiquiti's firmware should boot.

Or, if you made backups of the flash before installation, just write
the backup back to flash.

Link: https://github.com/openwrt/openwrt/pull/25280
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-23 21:15:01 +0200</date><id>98f3808362bec6dc5eee0479be7f4239efbfa91e</id><msg>realtek: add support for Ubiquiti UniFi USW Pro Max 24 PoE</msg><path><editType>edit</editType><file>target/linux/realtek/base-files/etc/board.d/02_network</file></path><path><editType>add</editType><file>target/linux/realtek/dts/rtl9302_ubnt_usw-pro-max-24-poe.dts</file></path><path><editType>edit</editType><file>target/linux/realtek/image/rtl930x.mk</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://taiha.net/jenkins/user/robert.marko</absoluteUrl><fullName>robert.marko</fullName></culprit><culprit><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></culprit><culprit><absoluteUrl>https://taiha.net/jenkins/user/markus.stockhausen</absoluteUrl><fullName>markus.stockhausen</fullName></culprit><culprit><absoluteUrl>https://taiha.net/jenkins/user/daniel</absoluteUrl><fullName>daniel</fullName></culprit><culprit><absoluteUrl>https://taiha.net/jenkins/user/nbd</absoluteUrl><fullName>nbd</fullName></culprit><culprit><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></culprit><culprit><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></culprit></build><color>blue</color><firstBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.parameterizedscheduler.ParameterizedTimerTriggerCause'><shortDescription>Started by timer with parameters: {BUILD_CFG_TARGET_DEV=WG1400HP/WG1800HP/WG1800HP2 (QCA9558)}</shortDescription></cause></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.BooleanParameterValue'><name>BUILD_CFG_DISTCLEAN</name><value>true</value></parameter><parameter _class='hudson.model.BooleanParameterValue'><name>BUILD_CFG_DIFFCONFIG</name><value>true</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BUILD_CFG_TARGET_DEV</name><value>WG1400HP/WG1800HP/WG1800HP2 (QCA9558)</value></parameter></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmain _class='hudson.plugins.git.util.Build'><buildNumber>497</buildNumber><marked><SHA1>98f3808362bec6dc5eee0479be7f4239efbfa91e</SHA1><branch><SHA1>98f3808362bec6dc5eee0479be7f4239efbfa91e</SHA1><name>refs/remotes/origin/main</name></branch></marked><revision><SHA1>98f3808362bec6dc5eee0479be7f4239efbfa91e</SHA1><branch><SHA1>98f3808362bec6dc5eee0479be7f4239efbfa91e</SHA1><name>refs/remotes/origin/main</name></branch></revision></refsremotesoriginmain></buildsByBranchName><lastBuiltRevision><SHA1>98f3808362bec6dc5eee0479be7f4239efbfa91e</SHA1><branch><SHA1>98f3808362bec6dc5eee0479be7f4239efbfa91e</SHA1><name>refs/remotes/origin/main</name></branch></lastBuiltRevision><remoteUrl>https://github.com/openwrt/openwrt</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>config.buildinfo</displayPath><fileName>config.buildinfo</fileName><relativePath>bin/targets/ath79/generic/config.buildinfo</relativePath></artifact><artifact><displayPath>feeds.buildinfo</displayPath><fileName>feeds.buildinfo</fileName><relativePath>bin/targets/ath79/generic/feeds.buildinfo</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1400hp-initramfs-factory.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1400hp-initramfs-factory.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1400hp-initramfs-factory.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1400hp-initramfs-kernel.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1400hp-initramfs-kernel.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1400hp-initramfs-kernel.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1400hp-squashfs-sysupgrade.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1400hp-squashfs-sysupgrade.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1400hp-squashfs-sysupgrade.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1400hp-uboot.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1400hp-uboot.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1400hp-uboot.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp-initramfs-factory.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp-initramfs-factory.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp-initramfs-factory.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp-initramfs-kernel.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp-initramfs-kernel.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp-initramfs-kernel.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp-squashfs-sysupgrade.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp-squashfs-sysupgrade.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp-squashfs-sysupgrade.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp-uboot.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp-uboot.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp-uboot.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp2-initramfs-factory.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp2-initramfs-factory.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp2-initramfs-factory.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp2-initramfs-kernel.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp2-initramfs-kernel.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp2-initramfs-kernel.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp2-squashfs-sysupgrade.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp2-squashfs-sysupgrade.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp2-squashfs-sysupgrade.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp2-uboot.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp2-uboot.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp2-uboot.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic.manifest</displayPath><fileName>openwrt-ath79-generic.manifest</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic.manifest</relativePath></artifact><artifact><displayPath>profiles.json</displayPath><fileName>profiles.json</fileName><relativePath>bin/targets/ath79/generic/profiles.json</relativePath></artifact><artifact><displayPath>sha256sums</displayPath><fileName>sha256sums</fileName><relativePath>bin/targets/ath79/generic/sha256sums</relativePath></artifact><artifact><displayPath>version.buildinfo</displayPath><fileName>version.buildinfo</fileName><relativePath>bin/targets/ath79/generic/version.buildinfo</relativePath></artifact><building>false</building><description>diffconfig: true, device: WG1400HP/WG1800HP/WG1800HP2 (QCA9558)</description><displayName>#497</displayName><duration>2172135</duration><estimatedDuration>2195975</estimatedDuration><fullDisplayName>OpenWrt (master) for NEC Aterm (NetBSD based) #497</fullDisplayName><id>497</id><inProgress>false</inProgress><keepLog>false</keepLog><number>497</number><queueId>62</queueId><result>SUCCESS</result><timestamp>1790220000646</timestamp><url>https://taiha.net/jenkins/job/OpenWrt-master-NEC-BSD-Aterm/497/</url><builtOn>home-slave02_taihasv</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/generic/backport-6.18/852-v7.1-rtc-cmos-use-platform_get_irq_optional.patch</affectedPath><commitId>5c95472821ea421a600547a508a2abe36c697447</commitId><timestamp>1789978466000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>kernel: backport rtc-cmos use platform_get_irq_optional()

Backport upstream commit e9f850ba66cd ("rtc: cmos: Use
platform_get_irq_optional() in cmos_platform_probe()"),
which landed in v7.1.

The rtc-cmos driver can live without an IRQ and returning an error
code from platform_get_irq() is not a problem for it in general, so
make it call platform_get_irq_optional() in cmos_platform_probe()
instead of platform_get_irq() to avoid a confusing error message
printed by the latter if an IRQ cannot be found for index 0, which
is possible on x86 platforms.

Additionally, on x86, if the IRQ is not defined and the system has
a legacy PIC, hardcode it to RTC_IRQ, which should be safe then (and
which is what the dropped PNP code did).

Fixes: https://github.com/openwrt/openwrt/issues/25248

Signed-off-by: Andy Chiang &lt;AndyChiang_git@outlook.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25264
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-21 10:14:26 +0200</date><id>5c95472821ea421a600547a508a2abe36c697447</id><msg>kernel: backport rtc-cmos use platform_get_irq_optional()</msg><path><editType>add</editType><file>target/linux/generic/backport-6.18/852-v7.1-rtc-cmos-use-platform_get_irq_optional.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/generic/backport-6.18/798-v7.1-net-phy-mxl-gpy-add-PHY-level-statistics-via-ethtool.patch</affectedPath><affectedPath>target/linux/generic/backport-6.18/720-v7.2-net-phy-intel-xway-add-PHY-level-statistics-via-etht.patch</affectedPath><commitId>41f9a2065d51829faf14ccdec7ad44df0a447280</commitId><timestamp>1789978897000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>kernel: backport Lantiq and Maxlinear PHY level statistics support

Backport Lantiq and Maxlineat PHY level statistics support. These
statistics count frames dropped by the PHY due to invalid symbols
on layer 1.

Tested on Lantiq/Maxlinear GPY111:
root@OpenWrt:~# ethtool -S lan3 --groups eth-phy
Standard stats for lan3:
eth-phy-SymbolErrorDuringCarrier: 856

Signed-off-by: Aleksander Jan Bajkowski &lt;olek2@wp.pl&gt;
Link: https://github.com/openwrt/openwrt/pull/25282
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-21 10:21:37 +0200</date><id>41f9a2065d51829faf14ccdec7ad44df0a447280</id><msg>kernel: backport Lantiq and Maxlinear PHY level statistics support</msg><path><editType>add</editType><file>target/linux/generic/backport-6.18/720-v7.2-net-phy-intel-xway-add-PHY-level-statistics-via-etht.patch</file></path><path><editType>add</editType><file>target/linux/generic/backport-6.18/798-v7.1-net-phy-mxl-gpy-add-PHY-level-statistics-via-ethtool.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>tools/xz/Makefile</affectedPath><commitId>cce54a1d82a33ede9e917d3bf90df573cf033484</commitId><timestamp>1789990093000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>tools/xz: update to version 5.8.4

Release Notes:
https://github.com/tukaani-project/xz/releases/tag/v5.8.4

Signed-off-by: Shiji Yang &lt;yangshiji66@outlook.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25295
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-21 13:28:13 +0200</date><id>cce54a1d82a33ede9e917d3bf90df573cf033484</id><msg>tools/xz: update to version 5.8.4</msg><path><editType>edit</editType><file>tools/xz/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/qualcommax/ipq807x/base-files/etc/board.d/02_network</affectedPath><commitId>c618c6a353f2adafab4c182224739d3687896e49</commitId><timestamp>1789990234000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>qualcommax: ipq807x: ax89x: use lan1 for failsafe

The default failsafe script just takes the first interface from the UCI LAN
inteface list, so its currently using the SFP interface in failsafe.

Since this is not convenient at all, change the order so that lan1 will now
be used for failsafe instead.

Fixes: #23633
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-21 13:30:34 +0200</date><id>c618c6a353f2adafab4c182224739d3687896e49</id><msg>qualcommax: ipq807x: ax89x: use lan1 for failsafe</msg><path><editType>edit</editType><file>target/linux/qualcommax/ipq807x/base-files/etc/board.d/02_network</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/vlan.c</affectedPath><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/dsa.c</affectedPath><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl930x.c</affectedPath><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/common.c</affectedPath><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/stp.c</affectedPath><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl839x.c</affectedPath><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl838x.c</affectedPath><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/Makefile</affectedPath><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/vlan.h</affectedPath><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/debugfs.c</affectedPath><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl931x.c</affectedPath><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/stp.h</affectedPath><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl-otto.h</affectedPath><commitId>14651b96832a9f9cef3b7bdcfb3dfecf9161ac58</commitId><timestamp>1790005920000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/markus.stockhausen</absoluteUrl><fullName>markus.stockhausen</fullName></author><authorEmail>markus.stockhausen@gmx.de</authorEmail><comment>realtek: dsa: move STP and MST handling into a separate source file

STP and MST handling is spread across dsa.c, common.c and the
chip-specific source files. Group it in stp.c to keep port state
handling, MST slot management and hardware access together.

Move the associated function comments and register definitions with
the implementation. Add stp.h for the shared declarations and MST slot
structure, and update the callers and Makefile.

Replace the spanning-tree control register field with a per-chip
initialization callback so the register definitions remain private to
stp.c. Add a helper for updating non-CIST port states during bridge
join and leave.

Preserve the existing locking and forwarding behavior, and remove
excess blank lines left by the moved code.

Assisted-by: ChatGPT (OpenAI GPT-6 Astra)
Link: https://github.com/openwrt/openwrt/pull/25292
Signed-off-by: Markus Stockhausen &lt;markus.stockhausen@gmx.de&gt;
</comment><date>2026-09-21 17:52:00 +0200</date><id>14651b96832a9f9cef3b7bdcfb3dfecf9161ac58</id><msg>realtek: dsa: move STP and MST handling into a separate source file</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/vlan.h</file></path><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/debugfs.c</file></path><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl-otto.h</file></path><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl839x.c</file></path><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl931x.c</file></path><path><editType>add</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/stp.h</file></path><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl838x.c</file></path><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/common.c</file></path><path><editType>add</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/stp.c</file></path><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/vlan.c</file></path><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/Makefile</file></path><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/dsa.c</file></path><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl930x.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/qualcommbe/image/ipq95xx.mk</affectedPath><commitId>f6442c8840b891214b9814f499d41c383d250932</commitId><timestamp>1790064218000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>qualcommbe: ipq95xx: drop KERNEL_LOADADDR for askey_sbe1v1k

askey_sbe1v1k currently sets KERNEL_LOADADDR to 0x42080000, which is not
2MB-aligned. This trips the arm64 boot code's alignment check and
prints the following warning on every boot:

  [Firmware Bug]: Kernel image misaligned at boot, please fix your
  bootloader!

0x42080000 is a 2MB-aligned base plus the legacy TEXT_OFFSET of
0x80000, which arm64 kernels used before v5.8. Since v5.8, TEXT_OFFSET
is fixed at 0, so the kernel now expects the load address itself to sit
on a 2MB boundary. This target runs on much newer kernels, so the old
offset is stale and only serves to trigger the FW_BUG warning.

Instead of manually shifting the address, drop the device-specific
KERNEL_LOADADDR override entirely. This allows the image to fall back
to the target's default load address (0x41000000), which is properly
2MB-aligned and cleanly resolves the alignment warning.

Verified by both TFTP-booting the .itb and flashing the generated
sysupgrade image to a physical bare-metal device. The device boots
cleanly, operates stably, and the misalignment warning no longer appears.

Signed-off-by: Jackie Han &lt;jackie.han@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25283
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-22 10:03:38 +0200</date><id>f6442c8840b891214b9814f499d41c383d250932</id><msg>qualcommbe: ipq95xx: drop KERNEL_LOADADDR for askey_sbe1v1k</msg><path><editType>edit</editType><file>target/linux/qualcommbe/image/ipq95xx.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/qualcommax/dts/ipq6018-mr7500.dts</affectedPath><commitId>773a9c473f735289f9f8b608c5ade2a7e0778541</commitId><timestamp>1790067110000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>qualcommax: fix partition map and GPIO polarity for MR7500

Updates the MR7500 DTS to correctly map the partition containing the WAN
PHY firmware.
Also fixes inverted PHY reset polarity.

Signed-off-by: Ross Barnes-Brown &lt;true.robot.ross@gmail.com&gt;
Signed-off-by: Paweł Owoc &lt;frut3k7@gmail.com&gt;
Co-authored-by: Paweł Owoc &lt;frut3k7@gmail.com&gt;
</comment><date>2026-09-22 10:51:50 +0200</date><id>773a9c473f735289f9f8b608c5ade2a7e0778541</id><msg>qualcommax: fix partition map and GPIO polarity for MR7500</msg><path><editType>edit</editType><file>target/linux/qualcommax/dts/ipq6018-mr7500.dts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/generic/pending-6.18/739-05-net-pcs-add-driver-for-MediaTek-USXGMII-PCS.patch</affectedPath><commitId>328acd4e9d3407758c55917484823bc1726df64a</commitId><timestamp>1790076459000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>generic: remove Kconfig.orig from USXGMII PCS patch

The imported PCS patch accidentlly adds drivers/net/pcs/Kconfig.orig.
Remove this file from the patch.

Fixes: 18cbd83a1443 ("generic: 6.18: import updated standalone PCS handling")
Signed-off-by: Zhengping Zhang &lt;zhengping.zhang@airoha.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25319
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-22 13:27:39 +0200</date><id>328acd4e9d3407758c55917484823bc1726df64a</id><msg>generic: remove Kconfig.orig from USXGMII PCS patch</msg><path><editType>edit</editType><file>target/linux/generic/pending-6.18/739-05-net-pcs-add-driver-for-MediaTek-USXGMII-PCS.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/microchipsw/patches-6.18/0015-spi-atmel-quadspi-use-init-callback-for-gclk-variant.patch</affectedPath><affectedPath>target/linux/microchipsw/patches-6.18/0016-spi-atmel-quadspi-add-LAN969x-QSPI-support.patch</affectedPath><affectedPath>target/linux/microchipsw/patches-6.18/0014-v7.3-spi-atmel-quadspi-add-controller-init-callback.patch</affectedPath><affectedPath>target/linux/microchipsw/patches-6.18/0017-arm64-dts-microchip-lan969x-add-QSPI-nodes.patch</affectedPath><affectedPath>target/linux/microchipsw/patches-6.18/0017-v7.3-arm64-dts-microchip-lan969x-add-QSPI-nodes.patch</affectedPath><affectedPath>target/linux/microchipsw/patches-6.18/0016-v7.3-spi-atmel-quadspi-add-LAN969x-QSPI-support.patch</affectedPath><affectedPath>target/linux/microchipsw/patches-6.18/0015-v7.3-spi-atmel-quadspi-use-init-callback-for-gclk-variant.patch</affectedPath><affectedPath>target/linux/microchipsw/patches-6.18/0014-spi-atmel-quadspi-add-controller-init-callback.patch</affectedPath><commitId>809afa7e4312230beccb6829ed255f9b2f324290</commitId><timestamp>1790081597000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robert.marko</absoluteUrl><fullName>robert.marko</fullName></author><authorEmail>robert.marko@sartura.hr</authorEmail><comment>microchipsw: add version to QSPI backport

QSPI support was merged into 7.3, so mark the patches as such.

Signed-off-by: Robert Marko &lt;robert.marko@sartura.hr&gt;
</comment><date>2026-09-22 14:53:17 +0200</date><id>809afa7e4312230beccb6829ed255f9b2f324290</id><msg>microchipsw: add version to QSPI backport</msg><path><editType>add</editType><file>target/linux/microchipsw/patches-6.18/0014-v7.3-spi-atmel-quadspi-add-controller-init-callback.patch</file></path><path><editType>delete</editType><file>target/linux/microchipsw/patches-6.18/0017-arm64-dts-microchip-lan969x-add-QSPI-nodes.patch</file></path><path><editType>delete</editType><file>target/linux/microchipsw/patches-6.18/0015-spi-atmel-quadspi-use-init-callback-for-gclk-variant.patch</file></path><path><editType>delete</editType><file>target/linux/microchipsw/patches-6.18/0014-spi-atmel-quadspi-add-controller-init-callback.patch</file></path><path><editType>add</editType><file>target/linux/microchipsw/patches-6.18/0017-v7.3-arm64-dts-microchip-lan969x-add-QSPI-nodes.patch</file></path><path><editType>add</editType><file>target/linux/microchipsw/patches-6.18/0016-v7.3-spi-atmel-quadspi-add-LAN969x-QSPI-support.patch</file></path><path><editType>add</editType><file>target/linux/microchipsw/patches-6.18/0015-v7.3-spi-atmel-quadspi-use-init-callback-for-gclk-variant.patch</file></path><path><editType>delete</editType><file>target/linux/microchipsw/patches-6.18/0016-spi-atmel-quadspi-add-LAN969x-QSPI-support.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/microchipsw/patches-6.18/102-arm64-dts-microchip-ev23x71a-enable-QSPI.patch</affectedPath><affectedPath>target/linux/microchipsw/patches-6.18/100-mmc-sdhci-of-at91-disable-selectively-clocks-on-pm-r.patch</affectedPath><affectedPath>target/linux/microchipsw/patches-6.18/100-dt-bindings-mmc-atmel-sama5d2-sdhci-add-LAN969x-comp.patch</affectedPath><affectedPath>target/linux/microchipsw/patches-6.18/101-arm64-dts-microchip-lan969x-add-SDMMC-nodes.patch</affectedPath><affectedPath>target/linux/microchipsw/patches-6.18/104-arm64-dts-microchip-ev23x71a-enable-QSPI.patch</affectedPath><affectedPath>target/linux/microchipsw/patches-6.18/101-dt-bindings-mmc-atmel-sama5d2-sdhci-add-LAN969x-comp.patch</affectedPath><affectedPath>target/linux/microchipsw/patches-6.18/105-arm64-dts-microchip-ev23x71a-enable-eMMC.patch</affectedPath><affectedPath>target/linux/microchipsw/patches-6.18/103-arm64-dts-microchip-ev23x71a-enable-eMMC.patch</affectedPath><affectedPath>target/linux/microchipsw/patches-6.18/102-mmc-sdhci-of-at91-add-LAN969x-support.patch</affectedPath><affectedPath>target/linux/microchipsw/patches-6.18/103-arm64-dts-microchip-lan969x-add-SDMMC-nodes.patch</affectedPath><commitId>6727587d2439cca176aa948392ba34f04515f3d4</commitId><timestamp>1790081597000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robert.marko</absoluteUrl><fullName>robert.marko</fullName></author><authorEmail>robert.marko@sartura.hr</authorEmail><comment>microchipsw: use latest MMC patches

Use the latest version of MMC patches pending upstream.

Signed-off-by: Robert Marko &lt;robert.marko@sartura.hr&gt;
</comment><date>2026-09-22 14:53:17 +0200</date><id>6727587d2439cca176aa948392ba34f04515f3d4</id><msg>microchipsw: use latest MMC patches</msg><path><editType>add</editType><file>target/linux/microchipsw/patches-6.18/103-arm64-dts-microchip-lan969x-add-SDMMC-nodes.patch</file></path><path><editType>add</editType><file>target/linux/microchipsw/patches-6.18/100-mmc-sdhci-of-at91-disable-selectively-clocks-on-pm-r.patch</file></path><path><editType>add</editType><file>target/linux/microchipsw/patches-6.18/104-arm64-dts-microchip-ev23x71a-enable-QSPI.patch</file></path><path><editType>add</editType><file>target/linux/microchipsw/patches-6.18/101-dt-bindings-mmc-atmel-sama5d2-sdhci-add-LAN969x-comp.patch</file></path><path><editType>delete</editType><file>target/linux/microchipsw/patches-6.18/103-arm64-dts-microchip-ev23x71a-enable-eMMC.patch</file></path><path><editType>add</editType><file>target/linux/microchipsw/patches-6.18/102-mmc-sdhci-of-at91-add-LAN969x-support.patch</file></path><path><editType>delete</editType><file>target/linux/microchipsw/patches-6.18/102-arm64-dts-microchip-ev23x71a-enable-QSPI.patch</file></path><path><editType>add</editType><file>target/linux/microchipsw/patches-6.18/105-arm64-dts-microchip-ev23x71a-enable-eMMC.patch</file></path><path><editType>delete</editType><file>target/linux/microchipsw/patches-6.18/101-arm64-dts-microchip-lan969x-add-SDMMC-nodes.patch</file></path><path><editType>delete</editType><file>target/linux/microchipsw/patches-6.18/100-dt-bindings-mmc-atmel-sama5d2-sdhci-add-LAN969x-comp.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/dts/rtl9303_horaco_zx-swtgw2c8f.dts</affectedPath><commitId>b0a05388ed6e74c70241525192b5045f7a09e7e1</commitId><timestamp>1790088470000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/markus.stockhausen</absoluteUrl><fullName>markus.stockhausen</fullName></author><authorEmail>markus.stockhausen@gmx.de</authorEmail><comment>realtek: fix Horaco ZX-SWTGW2C8F port status LEDs for 2.5G

Corrected 2.5G port status LED operation

Signed-off-by: DSP ALU32 &lt;dspalu32@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25291
Signed-off-by: Markus Stockhausen &lt;markus.stockhausen@gmx.de&gt;
</comment><date>2026-09-22 16:47:50 +0200</date><id>b0a05388ed6e74c70241525192b5045f7a09e7e1</id><msg>realtek: fix Horaco ZX-SWTGW2C8F port status LEDs for 2.5G</msg><path><editType>edit</editType><file>target/linux/realtek/dts/rtl9303_horaco_zx-swtgw2c8f.dts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/dts/rtl9303_horaco_zx-swtgw2c8f.dts</affectedPath><commitId>45dc02ca085d552a3b95e763f8894e6e694bd0c3</commitId><timestamp>1790088470000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/markus.stockhausen</absoluteUrl><fullName>markus.stockhausen</fullName></author><authorEmail>markus.stockhausen@gmx.de</authorEmail><comment>realtek: fix Horaco ZX-SWTGW2C8F sysupgrade: MTD partition rename

Corrected name of 'firmware' MTD partition to fix sysupgrade (was 'runtime')

Signed-off-by: DSP ALU32 &lt;dspalu32@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25291
Signed-off-by: Markus Stockhausen &lt;markus.stockhausen@gmx.de&gt;
</comment><date>2026-09-22 16:47:50 +0200</date><id>45dc02ca085d552a3b95e763f8894e6e694bd0c3</id><msg>realtek: fix Horaco ZX-SWTGW2C8F sysupgrade: MTD partition rename</msg><path><editType>edit</editType><file>target/linux/realtek/dts/rtl9303_horaco_zx-swtgw2c8f.dts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/dts/rtl9303_horaco_zx-swtgw2c8f.dts</affectedPath><commitId>54937fe9d6420e390c23635bff0dea1c7a6a4da6</commitId><timestamp>1790088470000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/markus.stockhausen</absoluteUrl><fullName>markus.stockhausen</fullName></author><authorEmail>markus.stockhausen@gmx.de</authorEmail><comment>realtek: add SFP thermal zone/sensors for Horaco ZX-SWTGW2C8F

Added SFP thermal zone, in line with other RTL9303 devices on OpenWrt

Signed-off-by: DSP ALU32 &lt;dspalu32@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25291
Signed-off-by: Markus Stockhausen &lt;markus.stockhausen@gmx.de&gt;
</comment><date>2026-09-22 16:47:50 +0200</date><id>54937fe9d6420e390c23635bff0dea1c7a6a4da6</id><msg>realtek: add SFP thermal zone/sensors for Horaco ZX-SWTGW2C8F</msg><path><editType>edit</editType><file>target/linux/realtek/dts/rtl9303_horaco_zx-swtgw2c8f.dts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/l3.c</affectedPath><commitId>f4cf59fe1c11823d211854d70eeb351e8345d5d5</commitId><timestamp>1790088554000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/markus.stockhausen</absoluteUrl><fullName>markus.stockhausen</fullName></author><authorEmail>markus.stockhausen@gmx.de</authorEmail><comment>realtek: l3: do not queue FIB work for multicast routes

The FIB notifier lets the two multicast families through its filter, but
the branch that fills the work item runs only for AF_INET. An entry
event from ipmr or ip6mr therefore queues a work item whose fib_info
pointer is still the zero kzalloc() left there, and the add handler the
worker calls hands that NULL to fib_info_nh(), whose first act is to
read fi-&gt;nh. The box oopses there and panics.

The events are real ones: mr_call_mfc_notifiers() sends ENTRY_ADD,
ENTRY_REPLACE and ENTRY_DEL down the same chain this driver registers
on, once per multicast cache entry a routing daemon installs or removes.

What it takes is a kernel built with multicast routing, a daemon that
installs a cache entry, and a switch whose L3 setup is in place. The mfc
add and delete paths and mroute_clean_tables() emit these notifiers, in
ipmr and ip6mr alike, and mr_dump() replays every existing entry to a
notifier that has just registered - so the driver can also meet one at
its own probe, if a daemon installed it first. All of them start from
userspace. CONFIG_IP_MROUTE and CONFIG_IPV6_MROUTE are off in the generic
config and no realtek subtarget turns them on, so a stock image never
gets there either.

Given both, no command and no route added by hand are needed: an
RTL9303 with the offload compiled in and smcroute installed dies 58
seconds into its first boot, as the daemon opens its interfaces during
the ordinary network bring-up.

Measured the other way round as well: an image built the same way and
differing by this commit and one unrelated L3 fix runs on, 273 seconds
against a 58 second failure window, with nothing in the log. The RTL839x
carries its L3 setup outside any config symbol, so a build of that
family with multicast routing on is enough as well; the RTL930x
additionally needs the offload symbol, which no subtarget config sets.

Take only the two families the driver decodes.

Assisted-by: Claude:claude-opus-5
Signed-off-by: Gennaro Cimmino &lt;gcimmino@rayonra.net&gt;
Link: https://github.com/openwrt/openwrt/pull/25309
Signed-off-by: Markus Stockhausen &lt;markus.stockhausen@gmx.de&gt;
</comment><date>2026-09-22 16:49:14 +0200</date><id>f4cf59fe1c11823d211854d70eeb351e8345d5d5</id><msg>realtek: l3: do not queue FIB work for multicast routes</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/l3.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl931x.c</affectedPath><affectedPath>target/linux/realtek/files-6.18/include/linux/soc/realtek/otto_table.h</affectedPath><commitId>6b46fe37b517946906b93b9428ae0fc592f4f195</commitId><timestamp>1790091563000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/markus.stockhausen</absoluteUrl><fullName>markus.stockhausen</fullName></author><authorEmail>markus.stockhausen@gmx.de</authorEmail><comment>realtek: soc: define a macro for table reads with non zero word offset

The RTL931X utilizes the otto_table_read_bytes function in its DSA driver
as it needs field and mib offsets for stat reading.

This can be replaced by a proper otto_table_offset_read macro which takes
4th variable as a word offset for otto_table_read_bytes.

Signed-off-by: Rustam Adilov &lt;adilov@tutamail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25136
Signed-off-by: Markus Stockhausen &lt;markus.stockhausen@gmx.de&gt;
</comment><date>2026-09-22 17:39:23 +0200</date><id>6b46fe37b517946906b93b9428ae0fc592f4f195</id><msg>realtek: soc: define a macro for table reads with non zero word offset</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl931x.c</file></path><path><editType>edit</editType><file>target/linux/realtek/files-6.18/include/linux/soc/realtek/otto_table.h</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/soc/realtek/otto_table.c</affectedPath><commitId>3ac6d739fa3a284c0b0377b47b0b005beb62abc0</commitId><timestamp>1790091564000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/markus.stockhausen</absoluteUrl><fullName>markus.stockhausen</fullName></author><authorEmail>markus.stockhausen@gmx.de</authorEmail><comment>realtek: soc: split addr to ctrl/sts and data to read/write

In preparation for upcoming support of RTL9607C split the addr and
data properties of otto_table struct into control address, status
address and write and read data windows.

Signed-off-by: Rustam Adilov &lt;adilov@tutamail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25136
Signed-off-by: Markus Stockhausen &lt;markus.stockhausen@gmx.de&gt;
</comment><date>2026-09-22 17:39:24 +0200</date><id>3ac6d739fa3a284c0b0377b47b0b005beb62abc0</id><msg>realtek: soc: split addr to ctrl/sts and data to read/write</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/soc/realtek/otto_table.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/soc/realtek/otto_table.c</affectedPath><commitId>188f5ef394c7e78bf98c914326d83c93c938c7d9</commitId><timestamp>1790091564000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/markus.stockhausen</absoluteUrl><fullName>markus.stockhausen</fullName></author><authorEmail>markus.stockhausen@gmx.de</authorEmail><comment>realtek: soc: add busy status bit property

The TBL_ACCESS_CTRL register of RTL9607C does not have an execute
bit and thus relies on a separate busy bit in its TBL_ACCESS_STS
register. Add a busy bit with -1 describing the lack of that bit
in the table registers.

Signed-off-by: Rustam Adilov &lt;adilov@tutamail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25136
Signed-off-by: Markus Stockhausen &lt;markus.stockhausen@gmx.de&gt;
</comment><date>2026-09-22 17:39:24 +0200</date><id>188f5ef394c7e78bf98c914326d83c93c938c7d9</id><msg>realtek: soc: add busy status bit property</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/soc/realtek/otto_table.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/soc/realtek/otto_table.c</affectedPath><commitId>bdc34d92af2b0589406325a6f6572486f5e54d99</commitId><timestamp>1790091564000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/markus.stockhausen</absoluteUrl><fullName>markus.stockhausen</fullName></author><authorEmail>markus.stockhausen@gmx.de</authorEmail><comment>realtek: soc: add addr lsb and addr msb properties to table struct

The address bit field of TBL_ACCESS_CTRL register on RTL9607C is not located
at 0 lsb. Introduce new addr lsb and addr msb properties to otto_table struct.
This also accidentally fixes the address mask of OTTO_REG_9300_L2 table as the
"BIT(t_bit) - 1" would result in an extra 2 bits.

Signed-off-by: Rustam Adilov &lt;adilov@tutamail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25136
Signed-off-by: Markus Stockhausen &lt;markus.stockhausen@gmx.de&gt;
</comment><date>2026-09-22 17:39:24 +0200</date><id>bdc34d92af2b0589406325a6f6572486f5e54d99</id><msg>realtek: soc: add addr lsb and addr msb properties to table struct</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/soc/realtek/otto_table.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/soc/realtek/otto_table.c</affectedPath><commitId>a74fa4bf4dd60243fe4e81c76b57c3813ae168e7</commitId><timestamp>1790091564000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/markus.stockhausen</absoluteUrl><fullName>markus.stockhausen</fullName></author><authorEmail>markus.stockhausen@gmx.de</authorEmail><comment>realtek: soc: add read/write execute bits

The RTL9607C NAT_TBL_ACCESS_CTRL register has 2 split execute bits for read and
write operations and thus does not have command bit. Add the read/write execute
bit to otto_table struct and change c_bit to signed where -1 is unused to make
NAT_TBL_ACCESS_CTRL work.

Signed-off-by: Rustam Adilov &lt;adilov@tutamail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25136
Signed-off-by: Markus Stockhausen &lt;markus.stockhausen@gmx.de&gt;
</comment><date>2026-09-22 17:39:24 +0200</date><id>a74fa4bf4dd60243fe4e81c76b57c3813ae168e7</id><msg>realtek: soc: add read/write execute bits</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/soc/realtek/otto_table.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/soc/realtek/otto_table.c</affectedPath><commitId>070ed83c88f209a7b3e27c2ee2a7e7eaaace3ac8</commitId><timestamp>1790091564000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/markus.stockhausen</absoluteUrl><fullName>markus.stockhausen</fullName></author><authorEmail>markus.stockhausen@gmx.de</authorEmail><comment>realtek: soc: add m_bit and hit_bit properties

The RTL9607C has access method bit field that is used as a look-up
method for read queries of L2 tables and hit bit for whether or not
the table query found an entry. It is exactly the same as how L2
tables are interfaced on RTL8365MB switch as per rtl8365mb_table in
its DSA driver.

For now only the otto_table sruct is changed for description purposes
without adding the functionality.

Signed-off-by: Rustam Adilov &lt;adilov@tutamail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25136
Signed-off-by: Markus Stockhausen &lt;markus.stockhausen@gmx.de&gt;
</comment><date>2026-09-22 17:39:24 +0200</date><id>070ed83c88f209a7b3e27c2ee2a7e7eaaace3ac8</id><msg>realtek: soc: add m_bit and hit_bit properties</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/soc/realtek/otto_table.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/soc/realtek/otto_table.c</affectedPath><affectedPath>target/linux/realtek/files-6.18/include/linux/soc/realtek/otto_table.h</affectedPath><commitId>1a881f81d088b4fbabcd4db4bd79cdb6cdf12ad9</commitId><timestamp>1790091564000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/markus.stockhausen</absoluteUrl><fullName>markus.stockhausen</fullName></author><authorEmail>markus.stockhausen@gmx.de</authorEmail><comment>realtek: soc: add offset parameter to otto_table_map

Add the offset parameter to otto_table_map struct since some RTL9607C tables
like ACL_DATA and CF_RULE_T* require addition of an offset to their index to
differentiate from their MASK table counterpart.

Signed-off-by: Rustam Adilov &lt;adilov@tutamail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25136
Signed-off-by: Markus Stockhausen &lt;markus.stockhausen@gmx.de&gt;
</comment><date>2026-09-22 17:39:24 +0200</date><id>1a881f81d088b4fbabcd4db4bd79cdb6cdf12ad9</id><msg>realtek: soc: add offset parameter to otto_table_map</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/soc/realtek/otto_table.c</file></path><path><editType>edit</editType><file>target/linux/realtek/files-6.18/include/linux/soc/realtek/otto_table.h</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/soc/realtek/otto_table.c</affectedPath><affectedPath>target/linux/realtek/files-6.18/include/linux/soc/realtek/otto_table.h</affectedPath><commitId>07a2f397383799cc0acc73bec3a61eceff83262e</commitId><timestamp>1790091564000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/markus.stockhausen</absoluteUrl><fullName>markus.stockhausen</fullName></author><authorEmail>markus.stockhausen@gmx.de</authorEmail><comment>realtek: soc: add support for RTL9607C Tables

The RTL9607C SoC is another Otto family member with very identical indirect
table access as the rest of existing switch SoCs. It has two registers that
control tables: TBL_ACCESS_CTRL for LUT, VLAN, ACL and Classification tables
and NAT_TBL_ACCESS_CTRL for HWNAT related tables.

Add these two main control registers to OTTO_REG_LIST and all of their tables
to otto_table_maps and otto_table_id in header file.

Signed-off-by: Rustam Adilov &lt;adilov@tutamail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25136
Signed-off-by: Markus Stockhausen &lt;markus.stockhausen@gmx.de&gt;
</comment><date>2026-09-22 17:39:24 +0200</date><id>07a2f397383799cc0acc73bec3a61eceff83262e</id><msg>realtek: soc: add support for RTL9607C Tables</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/include/linux/soc/realtek/otto_table.h</file></path><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/soc/realtek/otto_table.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>scripts/download.pl</affectedPath><commitId>ffef939ec42a94d5f31018f876515c00b1ae5dc9</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>scripts/download.pl: delete local file with hash mismatch

The unlink of a local file with a hash mismatch comes after the die,
so it never runs. The message says that the file is deleted, but it
stays, and every following build fails in the same way.

Delete the file before the die, so that the next run downloads it
again.

Fixes: 4e19cbc553 ("download: handle possibly invalid local tarballs")
Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>ffef939ec42a94d5f31018f876515c00b1ae5dc9</id><msg>scripts/download.pl: delete local file with hash mismatch</msg><path><editType>edit</editType><file>scripts/download.pl</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/boot/uboot-mediatek/Makefile</affectedPath><commitId>468176411cb819cf6c5b09d3383e91cded6622ce</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>uboot-mediatek: rebuild the fip if BL31 changed

The fip contains BL31 from trusted-firmware-a, but the U-Boot build does
not depend on it. After a rebuild of trusted-firmware-a, the fip and the
images that contain it keep the old BL31.

Make the build stamp depend on the BL31 image.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>468176411cb819cf6c5b09d3383e91cded6622ce</id><msg>uboot-mediatek: rebuild the fip if BL31 changed</msg><path><editType>edit</editType><file>package/boot/uboot-mediatek/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/package.mk</affectedPath><commitId>a0e191667cac3447017c29fd76cad6843b045b58</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: exclude apk staging dirs from the autorebuild check

The rdep check on PKG_BUILD_DIR excludes the ipkg-* staging dirs, but
not the apk-* ones. The package step writes the apk scripts after
.built is touched. If this crosses a second boundary, the next build
sees newer files and packs the package again, which starts the loop
again. The kernel package with its kmods takes several seconds to pack
and is repacked on every build.

Anchor the pattern to PKG_BUILD_DIR, as a plain "*/apk-*" also matches
the build dir of the apk package itself.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>a0e191667cac3447017c29fd76cad6843b045b58</id><msg>build: exclude apk staging dirs from the autorebuild check</msg><path><editType>edit</editType><file>include/package.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>scripts/package-metadata.pl</affectedPath><commitId>f8471d798ec7694a477b7605bbeb5dcb7e9b5256</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>scripts/package-metadata.pl: keep the depends of real packages

pkgaux writes Package/&lt;name&gt;/depends for every name that a package
provides. If a package provides the name of another real package, it
overwrites the dependencies of that package: dnsmasq-full provides
dnsmasq, so dnsmasq gets the dependencies of dnsmasq-full, among them
nftables-json and libnftnl.

These lists are used for the library dependencies of the prepare
stamp. dnsmasq thus depends on libnftnl without being ordered after it,
and is built again in the build that follows a clean build.

Skip provided names that belong to another real package.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>f8471d798ec7694a477b7605bbeb5dcb7e9b5256</id><msg>scripts/package-metadata.pl: keep the depends of real packages</msg><path><editType>edit</editType><file>scripts/package-metadata.pl</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/package.mk</affectedPath><commitId>be3937dfbc341085a423d9518cfaf63c4d347235</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: only track library dependencies of selected packages

The prepare stamp of a Makefile depends on the library version files
of every package it defines, selected or not. Packages that are not
selected are not in the dependency graph of the top-level build, so
their libraries can be built after the package in a parallel build,
and the package is prepared and built again on the next run.

The own packages of a Makefile are only filtered out if they are
defined before the packages that depend on them. mac80211 defines
cfg80211 and mac80211 after the drivers, so it depends on its own
version files, and every clean build is followed by a rebuild of
mac80211, mt76 and linux-firmware.

Only add the library dependencies of selected packages, or of all
packages if DEVELOPER is set.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>be3937dfbc341085a423d9518cfaf63c4d347235</id><msg>build: only track library dependencies of selected packages</msg><path><editType>edit</editType><file>include/package.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>scripts/package-metadata.pl</affectedPath><commitId>4547335cc7d17bc6c0ab168e0d570fb479ae0ea1</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>scripts/package-metadata.pl: keep the condition of package depends

gen_package_auxiliary drops the condition of a dependency such as
+BUILD_NLS:libintl-full, so the ABI version check of a package also
counts packages that it does not depend on in this configuration.

With all packages selected and BUILD_NLS not set, libelf depends on
libintl-full. gettext-full is built after elfutils, and its new
libintl-full.version causes elfutils, and binutils, gdb, strace,
iproute2 and others through it, to be built again on the next make
call.

Write the condition as a make expression with get_conditional_dep, as
gen_package_mk does.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>4547335cc7d17bc6c0ab168e0d570fb479ae0ea1</id><msg>scripts/package-metadata.pl: keep the condition of package depends</msg><path><editType>edit</editType><file>scripts/package-metadata.pl</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>scripts/package-metadata.pl</affectedPath><commitId>d0379f4a5a3c4e9b535727711b76f8457dbc9c48</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>scripts/package-metadata.pl: list every build variant only once

If several packages of a source use the same build variant, the
variant is added to the list of variants once for each selected
package, and the variant is built as often, one after the other. With
all packages selected, hostapd builds 4 variants twice, and f2fs-tools
its 2 variants four times each.

Add each variant once, with the condition of all packages that use it.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>d0379f4a5a3c4e9b535727711b76f8457dbc9c48</id><msg>scripts/package-metadata.pl: list every build variant only once</msg><path><editType>edit</editType><file>scripts/package-metadata.pl</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/subdir.mk</affectedPath><commitId>39ed48c8f12eec91d5bf39d37ca666b6a937cc87</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: clean all stamps of a subdir

stampfile assigns the clean rule of its stamp to &lt;subdir&gt;//clean with
:=, so every call replaces the one before. toolchain and tools define
a compile and a check stamp, and &lt;subdir&gt;/clean only removes the check
stamp. After "make toolchain/clean", the compile stamp is newer than the
toolchain sources, the next build takes the toolchain as built, and the
target build fails because the compiler is missing.

Append the clean rule instead, so that all stamps are removed.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>39ed48c8f12eec91d5bf39d37ca666b6a937cc87</id><msg>build: clean all stamps of a subdir</msg><path><editType>edit</editType><file>include/subdir.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/subdir.mk</affectedPath><commitId>1315d219498e25e9cfe3c9666855b71fa4013cdb</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: log failed host builds in the error file of the subdir

Commit 501123eb7a ("include/subdir: on build failure always print
error") passes $(2) instead of $(1) to ERROR for the builds of a build
type, such as host builds. subdir has no second parameter, so with
BUILD_LOG set a failed host build is written to logs/error.txt instead
of logs/package/error.txt, where the other errors of the subdir go.

Fixes: 501123eb7a ("include/subdir: on build failure always print error")
Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>1315d219498e25e9cfe3c9666855b71fa4013cdb</id><msg>build: log failed host builds in the error file of the subdir</msg><path><editType>edit</editType><file>include/subdir.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>rules.mk</affectedPath><commitId>83b7310eb3897afa20d8bbddd59638b2614b3f73</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: do not share a file for the 64-bit time_t test

YEAR_2038 writes its test program to $(TMP_DIR)/year2038.c and deletes
it after the test. Packages that are built in parallel run the test at
the same time and use the same file, so one of them can compile a
partly written file or find no file. The test then fails, and the host
build is configured with --disable-year2038.

Pass the test program to the compiler on stdin instead.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>83b7310eb3897afa20d8bbddd59638b2614b3f73</id><msg>build: do not share a file for the 64-bit time_t test</msg><path><editType>edit</editType><file>rules.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/depends.mk</affectedPath><commitId>5433adbc6e53ea21b235d391240b716603986b5e</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: sort the file list for the stamp hash in the C locale

find_md5 sorts the list of package files with the locale of the user.
The top-level Makefile sets LC_ALL=C, but a make call in a package
directory, such as make -C package/kernel/linux, uses the locale of
the shell. With en_GB.UTF-8, some file names sort in a different
order, so the hash and the name of the prepared stamp differ, and the
package is built again. The next top-level build then builds it again.

Always sort in the C locale.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>5433adbc6e53ea21b235d391240b716603986b5e</id><msg>build: sort the file list for the stamp hash in the C locale</msg><path><editType>edit</editType><file>include/depends.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/network/utils/xdp-tools/Makefile</affectedPath><affectedPath>package/network/utils/xdp-tools/patches/0004-configure-do-not-use-bash-redirection.patch</affectedPath><commitId>111e92cce05f7e32996b7f0dd56d42e2d86e61ee</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>xdp-tools: find the arch headers of the toolchain for the BPF programs

The configure script of xdp-tools sets ARCH_INCLUDES only from the
multiarch directory of a native compiler. For a cross compiler it stays
empty, and clang takes &lt;linux/types.h&gt; for the BPF programs from
/usr/include of the host. On hosts that have &lt;asm/types.h&gt; only in the
multiarch directory, such as Debian without gcc-multilib, the build
fails:

  /usr/include/linux/types.h:5:10: fatal error: 'asm/types.h' file not found

Add the include directories of the toolchain with -idirafter. They are
searched after the headers of xdp-tools and of the system, as the
multiarch directory of a native build, so they do not replace the Linux
headers that xdp-tools ships. The target compiler already has them as
system directories.

The configure script also tests for bpftool with the bash redirection &amp;&gt;.
/bin/sh may be dash, which runs the command in the background instead, so
configure drops a working bpftool and takes the output of whereis. Add a
second patch that uses &gt;/dev/null 2&gt;&amp;1, which every shell supports.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>111e92cce05f7e32996b7f0dd56d42e2d86e61ee</id><msg>xdp-tools: find the arch headers of the toolchain for the BPF programs</msg><path><editType>edit</editType><file>package/network/utils/xdp-tools/Makefile</file></path><path><editType>add</editType><file>package/network/utils/xdp-tools/patches/0004-configure-do-not-use-bash-redirection.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/boot/uboot-tools/uboot-envtools/files/uboot-envtools.sh</affectedPath><commitId>bda729e82f200b3c338ac313c70e616285e4872e</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>uboot-envtools: remove stray output from the boot log

/etc/uci-defaults/30_uboot-envtools runs in preinit, before the board
file is generated. Two of its helpers write to the console:

* uci batch prints the name of every anonymous section that "add"
  creates, and nothing redirects stdout.
* grep -q hides a match, but it still reports a file that does not
  exist. /etc/fw_env.config is absent until the first append creates it.

On the first boot after a flash this puts three lines on the console:

    cfg016cb7
    cfg026cb7
    grep: /etc/fw_env.config: No such file or directory

Redirect the batch output and add -s to the grep.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>bda729e82f200b3c338ac313c70e616285e4872e</id><msg>uboot-envtools: remove stray output from the boot log</msg><path><editType>edit</editType><file>package/boot/uboot-tools/uboot-envtools/files/uboot-envtools.sh</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/kernel/lantiq/ltq-ifxos/Makefile</affectedPath><affectedPath>package/kernel/lantiq/ltq-deu/Makefile</affectedPath><affectedPath>package/kernel/lantiq/ltq-adsl-mei/Makefile</affectedPath><commitId>fbd3048f21857c53416a42181a6e9ababba4a716</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>lantiq: pass the kernel make flags to three module packages

ltq-adsl-mei and ltq-deu call make directly after a cd into the kernel
directory, and ltq-ifxos builds its module through autotools. None of them
pass KERNEL_MAKE_FLAGS, so the module compile runs without the
-ffile-prefix-map that iremap adds. WARN_ON_ONCE() in check_copy_size()
expands to warn_slowpath_fmt(__FILE__, ...), so the absolute build path
lands in the .ko.

Measured on the published snapshot packages of lantiq/xway and
xrx200_legacy:
- drv_mei_cpe.ko holds
  /builder/shared-workdir/build/build_dir/target-mips_24kc_musl/linux-lantiq_xway/linux-6.18.52/include/linux/ucopysize.h
- drv_ifxos.ko holds the same path for linux-lantiq_xrx200_legacy
- ltq_atm_danube.ko, built with the flags, holds no such string

The module size follows the length of the build path, so the apk record
and every image that carries the module differ between two builds in
different directories.

ltq_deu_vr9.ko holds no such string today, but the package has the same
defect.

Pass the flags in the same way as ltq-atm and ltq-vdsl-vr9-mei already do.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>fbd3048f21857c53416a42181a6e9ababba4a716</id><msg>lantiq: pass the kernel make flags to three module packages</msg><path><editType>edit</editType><file>package/kernel/lantiq/ltq-deu/Makefile</file></path><path><editType>edit</editType><file>package/kernel/lantiq/ltq-adsl-mei/Makefile</file></path><path><editType>edit</editType><file>package/kernel/lantiq/ltq-ifxos/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/package.mk</affectedPath><commitId>728fb15aff43e37aa3be02fb3d97277f825b504b</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: use a separate staging directory per build variant

All variants of a package collect their InstallDev files in the same
directory below $(TMP_DIR) and remove it before and after use. Add the
build variant to its name, as for the staging file list, so that the
variants of a package do not share it.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>728fb15aff43e37aa3be02fb3d97277f825b504b</id><msg>build: use a separate staging directory per build variant</msg><path><editType>edit</editType><file>include/package.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/boot/uboot-mediatek/Makefile</affectedPath><commitId>df6a1c978bda765bf684b6b7fb76ad100328ea2a</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>uboot-mediatek: compress BL31 in the build directory

With FIP_COMPRESS set, the fip step compresses the BL31 image next to
the original in the staging directory. All U-Boot variants for the same
SoC, boot device and DRAM type write the same file.

Write the compressed BL31 to the build directory of the variant instead.
The fip does not change.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>df6a1c978bda765bf684b6b7fb76ad100328ea2a</id><msg>uboot-mediatek: compress BL31 in the build directory</msg><path><editType>edit</editType><file>package/boot/uboot-mediatek/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/package-dumpinfo.mk</affectedPath><affectedPath>scripts/metadata.pm</affectedPath><affectedPath>include/subdir.mk</affectedPath><affectedPath>scripts/package-metadata.pl</affectedPath><commitId>2d40469602c0152ac17e23ca72b4f4ace32fa11a</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: allow packages to build their variants in parallel

The variants of a package are built one after the other in one recipe.
For packages with many variants, such as the boot loaders, this makes
the variants the longest chain of the package build, also if nothing
has to be done.

Add PKG_PARALLEL_VARIANTS. If a package sets it, every variant gets its
own make target with the dependencies of the package, and the package
target depends on these targets. A package must only set it if its
variants share no files outside of their build directories.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>2d40469602c0152ac17e23ca72b4f4ace32fa11a</id><msg>build: allow packages to build their variants in parallel</msg><path><editType>edit</editType><file>include/subdir.mk</file></path><path><editType>edit</editType><file>scripts/metadata.pm</file></path><path><editType>edit</editType><file>scripts/package-metadata.pl</file></path><path><editType>edit</editType><file>include/package-dumpinfo.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/boot/arm-trusted-firmware-mediatek/Makefile</affectedPath><affectedPath>package/boot/uboot-mediatek/Makefile</affectedPath><commitId>b8d89de6e07934e9264d4c2c6fef834be0a52f9e</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>mediatek: build the boot loader variants in parallel

The variants of arm-trusted-firmware-mediatek and uboot-mediatek only
write to their own build directories and to files in the staging and
bin directories that have the variant in their name.

For the OpenWrt One, a clean build of the 9 TF-A variants takes 2 s
instead of 11 s, and of the 2 U-Boot variants 12 s instead of 21 s.
The images do not change.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>b8d89de6e07934e9264d4c2c6fef834be0a52f9e</id><msg>mediatek: build the boot loader variants in parallel</msg><path><editType>edit</editType><file>package/boot/arm-trusted-firmware-mediatek/Makefile</file></path><path><editType>edit</editType><file>package/boot/uboot-mediatek/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/network/services/hostapd/Makefile</affectedPath><commitId>b029d56e0bd0c4e044c6e5d918e0da96223ab8da</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>hostapd: build the variants in parallel

The variants only write to their own build directories. The packages
without a variant are only built by the first variant.

With all packages selected, a clean build of the 31 variants takes 46 s
instead of 114 s, and the packages do not change. Together with the
commit that lists every build variant only once, a build that has
nothing to do takes 17 s instead of 33 s, as the variants were the
longest chain of it.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>b029d56e0bd0c4e044c6e5d918e0da96223ab8da</id><msg>hostapd: build the variants in parallel</msg><path><editType>edit</editType><file>package/network/services/hostapd/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/libs/gettext-full/Makefile</affectedPath><commitId>b8d8bb9ba3084a7c611f02e06f3cba4e6ba6bbb2</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>gettext-full: enable parallel builds again

Commit 30fb675847 ("gettext-full: disable parallel compilation")
disabled parallel builds of gettext 0.21, as they failed with make -j12.

With gettext 0.24.2, the host and the target build passed four times
each with make -j24, and libintl-full does not change. The host build
takes 172 s instead of 231 s, and the target build 142 s instead of
214 s. With all packages selected, both are on the longest chain of a
clean build.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>b8d8bb9ba3084a7c611f02e06f3cba4e6ba6bbb2</id><msg>gettext-full: enable parallel builds again</msg><path><editType>edit</editType><file>package/libs/gettext-full/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>tools/mtd-utils/Makefile</affectedPath><affectedPath>tools/erofs-utils/Makefile</affectedPath><affectedPath>tools/cpio/Makefile</affectedPath><commitId>3d597977b6616cc4206d5a95b134f13e581032b5</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>tools: build erofs-utils, mtd-utils and cpio in parallel

A tool builds with -j1 unless it sets HOST_BUILD_PARALLEL, and 45 of the
73 tools do not set it. These three gain the most from the job server on
a cold build of this tree:

  erofs-utils  23.11 s -&gt; 15.73 s
  mtd-utils    11.70 s -&gt;  6.42 s
  cpio          8.46 s -&gt;  3.56 s

Each one builds three times out of three with the job server, and each
build writes a tree that is identical to the one a serial build writes.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>3d597977b6616cc4206d5a95b134f13e581032b5</id><msg>tools: build erofs-utils, mtd-utils and cpio in parallel</msg><path><editType>edit</editType><file>tools/mtd-utils/Makefile</file></path><path><editType>edit</editType><file>tools/cpio/Makefile</file></path><path><editType>edit</editType><file>tools/erofs-utils/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/utils/mtd-utils/Makefile</affectedPath><affectedPath>package/libs/libselinux/Makefile</affectedPath><affectedPath>package/libs/libsepol/Makefile</affectedPath><commitId>bb332115ba1db784b05eabf258ab407aeff7f00e</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>package: build mtd-utils, libsepol and libselinux in parallel

A package builds with -j1 unless it sets PKG_BUILD_PARALLEL, and 171 of
the 220 packages do not set it. These three gain the most from the job
server on a cold build of this tree:

  mtd-utils   24.77 s -&gt; 6.43 s
  libsepol    17.99 s -&gt; 2.18 s
  libselinux   7.82 s -&gt; 1.89 s

mtd-utils runs while nothing else does, so its 18 s count against the
wall clock in full.

Each one builds three times out of three with the job server, and each
build writes a tree that is identical to the one a serial build writes.
nftables gains as well, 17.9 s to 13.0 s, but it is left alone: its
build directory differs between two serial builds, so the check that
covers the other three says nothing about it.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>bb332115ba1db784b05eabf258ab407aeff7f00e</id><msg>package: build mtd-utils, libsepol and libselinux in parallel</msg><path><editType>edit</editType><file>package/libs/libselinux/Makefile</file></path><path><editType>edit</editType><file>package/libs/libsepol/Makefile</file></path><path><editType>edit</editType><file>package/utils/mtd-utils/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/kernel.mk</affectedPath><commitId>a15df1972728e44802d78a8694915527966ea624</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>kernel: filter versioned kmod items in make

version_filter calls package-metadata.pl for every list that contains
a versioned item such as "foo@ge6.18". Parsing package/kernel/linux
runs it about 40 times, which takes 1.3 s of 2.2 s, and this parse is
on the critical path of every build.

Filter items of the form &lt;name&gt;@&lt;op&gt;&lt;version&gt; in make. The version
comparison stays in package-metadata.pl, but runs only once per
version. Other forms are passed to package-metadata.pl as before.

The only difference in the output: items without a version condition
are no longer passed through the shell, so quotes in a KCONFIG value
are kept. That list is only used for variable names, so the result is
the same. All kmod packages and images are identical.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>a15df1972728e44802d78a8694915527966ea624</id><msg>kernel: filter versioned kmod items in make</msg><path><editType>edit</editType><file>include/kernel.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>rules.mk</affectedPath><commitId>d29ffc6f39c383b9fc3e15b52837488c6d556a12</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: evaluate NPROC only once

NPROC is a recursive variable, so every use starts a shell. The image
Makefile expands the initramfs rule once per device, which runs nproc
about 200 times and makes the parse of the mediatek image Makefile take
about 1 s. It is parsed twice per build.

Evaluate it on first use and keep the result.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>d29ffc6f39c383b9fc3e15b52837488c6d556a12</id><msg>build: evaluate NPROC only once</msg><path><editType>edit</editType><file>rules.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/toplevel.mk</affectedPath><commitId>177325ba1a7860994aea060d861e1513ea91c5b4</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: compute REVISION and SOURCE_DATE_EPOCH once per build

The top-level Makefile calls itself for prereq and for the build, and
every call runs getver.sh and get_source_date_epoch.sh again, although
the values are already exported by the first call.

Take them from the environment in recursive calls. The first call still
computes them, so a value in the environment of the user is ignored as
before.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>177325ba1a7860994aea060d861e1513ea91c5b4</id><msg>build: compute REVISION and SOURCE_DATE_EPOCH once per build</msg><path><editType>edit</editType><file>include/toplevel.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/toplevel.mk</affectedPath><commitId>e3a89c4e4bcd25158690408cfc52886b4e67e602</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: detect the host triplet once per build

The top-level Makefile calls itself for prereq and for the build, and
every call runs config.guess again. config.guess runs the host C
compiler three times, which takes about 40 ms.

Take GNU_HOST_NAME from the environment in recursive calls, as for
REVISION and SOURCE_DATE_EPOCH.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>e3a89c4e4bcd25158690408cfc52886b4e67e602</id><msg>build: detect the host triplet once per build</msg><path><editType>edit</editType><file>include/toplevel.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/feeds.mk</affectedPath><commitId>f5fb15d8698ffd2feff34d30842a619544450c38</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: list the available feeds only when needed

feeds.mk runs "scripts/feeds list -n" when it is included, which
happens in every package Makefile. The list is only needed to find the
package directories of the feeds, which a package Makefile only does
when it creates or cleans a package.

Evaluate FEEDS_AVAILABLE on first use.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>f5fb15d8698ffd2feff34d30842a619544450c38</id><msg>build: list the available feeds only when needed</msg><path><editType>edit</editType><file>include/feeds.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Makefile</affectedPath><commitId>6b009ee3eafe1dd1651ef49eb73180e94a4ee3e9</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: create the index, image info and checksums in one make call

world runs package/index, json_overview_image_info and checksum as
three separate calls of the top-level Makefile, and each call parses it
again. The calls run without -j, so one call with all three goals runs
them in the same order.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>6b009ee3eafe1dd1651ef49eb73180e94a4ee3e9</id><msg>build: create the index, image info and checksums in one make call</msg><path><editType>edit</editType><file>Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/host-build.mk</affectedPath><affectedPath>include/package.mk</affectedPath><affectedPath>include/depends.mk</affectedPath><commitId>842611776de08eaa24f1205a8bd7b93461667887</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: hash the package files only once per Makefile

Build/CoreTargets fixes the value of STAMP_PREPARED, but its expansion
references STAMP_PREPARED several times before that happens, and every
reference hashes all files of the package again with find and mkhash.
HOST_STAMP_PREPARED carries the same hash and the same cost.

Compute the hash on first use in PKG_FILES_MD5 and keep it. Both stamps
read it.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>842611776de08eaa24f1205a8bd7b93461667887</id><msg>build: hash the package files only once per Makefile</msg><path><editType>edit</editType><file>include/package.mk</file></path><path><editType>edit</editType><file>include/depends.mk</file></path><path><editType>edit</editType><file>include/host-build.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>rules.mk</affectedPath><commitId>43a9ff1c9430cf64891bcfaea5cdbe437c9f28a7</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: compute the hash of a config symbol list only once

confvar runs a shell and mkhash every time make expands a stamp name that
contains it, 21 times in a make call for a package with a host build,
also if nothing has to be done.

The config symbols do not change during a make call, so keep the hash
of each list of symbols after the first use.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>43a9ff1c9430cf64891bcfaea5cdbe437c9f28a7</id><msg>build: compute the hash of a config symbol list only once</msg><path><editType>edit</editType><file>rules.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/package.mk</affectedPath><commitId>a44d3e32563168b9022f779f567456e6efdcb013</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: find the source date of a package only once per directory

Make expands PKG_SOURCE_DATE_EPOCH for every recipe of a package, as
package-pack.mk exports it to the recipes. Every expansion runs
get_source_date_epoch.sh, which runs git.

Keep the result for each directory. The directory still depends on
whether the build directory has a version.date file.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>a44d3e32563168b9022f779f567456e6efdcb013</id><msg>build: find the source date of a package only once per directory</msg><path><editType>edit</editType><file>include/package.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/host-build.mk</affectedPath><commitId>64acf8343569ebc221e6d209d4daf92e37af3f6a</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: test for 64-bit time_t only when a host build needs it

host-build.mk runs the YEAR_2038 compiler test while it parses, so every
package with a host build runs it on every make call, also for a target
build or a build that has nothing to do.

Add the result to HOST_CONFIGURE_ARGS without expanding it, so the test
runs only when the host build is configured.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>64acf8343569ebc221e6d209d4daf92e37af3f6a</id><msg>build: test for 64-bit time_t only when a host build needs it</msg><path><editType>edit</editType><file>include/host-build.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/package-pack.mk</affectedPath><affectedPath>include/package.mk</affectedPath><commitId>9772acb4f7cb5892b99ccaf034b61ab9c4fe9126</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: only define the clean rule for packages not selected

BuildPackage expands the full BuildTarget/ipkg for every package in a
Makefile, whether it is selected or not. package/kernel/linux defines
more than 1000 kmods, and this takes about 0.9 s of its 1.2 s parse,
which is on the critical path of every build.

Move the clean rule into BuildTarget/ipkg/disabled, and only expand it
for packages that are not selected, unless DEVELOPER is set. The other
rules of such a package can not be reached, as its compile target only
depends on them if the package is selected. Target types without a
disabled variant are expanded as before.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>9772acb4f7cb5892b99ccaf034b61ab9c4fe9126</id><msg>build: only define the clean rule for packages not selected</msg><path><editType>edit</editType><file>include/package.mk</file></path><path><editType>edit</editType><file>include/package-pack.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/image.mk</affectedPath><commitId>6258a11bacdb5840b40a7a35e7f60b8d68a6eaab</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>image: only define the rules of selected devices

A target defines more than 100 devices, and the image Makefile
expands the kernel, image and artifact rules of every one of them. The
rules of a device that is not selected are only reachable through
install-disabled and compile-disabled, so nothing uses them. The image
Makefile is parsed twice per build, 0.3 s each for mediatek.

Only expand Device/Build for selected devices, and for all devices if
CONFIG_IB is set, as the ImageBuilder compiles them all.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>6258a11bacdb5840b40a7a35e7f60b8d68a6eaab</id><msg>image: only define the rules of selected devices</msg><path><editType>edit</editType><file>include/image.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/subdir.mk</affectedPath><commitId>407e8331402f94e1eae5addda38fdf5a90afdcd6</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: expand the subdir recipes only when they run

subdir expands the recipe of every target of every build directory when
it creates the rules, although make runs only a few of them. The main
Makefile creates these rules on every make call, and a build calls it
several times in a row.

Put only a call of the recipe into the rules, so that make expands it
when the recipe runs. The commands do not change. The parse of the main
Makefile takes 0.10 s instead of 0.15 s, with 318 package directories.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>407e8331402f94e1eae5addda38fdf5a90afdcd6</id><msg>build: expand the subdir recipes only when they run</msg><path><editType>edit</editType><file>include/subdir.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/subdir.mk</affectedPath><commitId>bc96efb443fd683e02e2c3fc625f72ed55ecb8b0</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: find the alias of a build directory with notdir

subdir calls diralias twice for every target of every build directory,
and diralias splits the path into words twice to find its last
component. This takes a quarter of the parse time of the main Makefile.

Use notdir, which returns the same last component. The rules do not
change.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>bc96efb443fd683e02e2c3fc625f72ed55ecb8b0</id><msg>build: find the alias of a build directory with notdir</msg><path><editType>edit</editType><file>include/subdir.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/kernel-build.mk</affectedPath><affectedPath>scripts/build-time-log.sh</affectedPath><affectedPath>rules.mk</affectedPath><affectedPath>scripts/build-time-report.pl</affectedPath><affectedPath>include/host-build.mk</affectedPath><affectedPath>include/package.mk</affectedPath><commitId>b95b0928ac7135322dd3d42c19d489ede35bf121</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: add per stage build time profiling

Set BUILD_TIME_LOG=&lt;file&gt; to record a begin and an end event for every
prepare, configure, compile and install stage of every tool, toolchain
component, kernel and package. scripts/build-time-report.pl turns the log
into a report.

The report divides each second of the build between the stages that run
in it, so the numbers show which stages hold up the wall clock rather
than which ones burn the most CPU. Nothing is recorded and no extra
process runs when BUILD_TIME_LOG is unset.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>b95b0928ac7135322dd3d42c19d489ede35bf121</id><msg>build: add per stage build time profiling</msg><path><editType>edit</editType><file>include/package.mk</file></path><path><editType>edit</editType><file>include/host-build.mk</file></path><path><editType>add</editType><file>scripts/build-time-report.pl</file></path><path><editType>edit</editType><file>rules.mk</file></path><path><editType>edit</editType><file>include/kernel-build.mk</file></path><path><editType>add</editType><file>scripts/build-time-log.sh</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/kernel-defaults.mk</affectedPath><commitId>714886f3e4f0d4f5eb8ec299edcfd137c409c8d0</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>kernel: build the separate initramfs kernel only once

With TARGET_ROOTFS_INITRAMFS_SEPARATE, the initramfs kernel differs
from the regular kernel only in CONFIG_RD_&lt;ALGO&gt;. Both are built in the
same tree, so every build switches the kernel config twice and relinks
vmlinux twice, even if nothing changed.

Give the regular kernel the same ramdisk support and use its image for
the initramfs as is. The initramfs step now only creates the initrd.
Remove the separate initramfs branches of Kernel/SetInitramfs, as it is
no longer called in this mode.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>714886f3e4f0d4f5eb8ec299edcfd137c409c8d0</id><msg>kernel: build the separate initramfs kernel only once</msg><path><editType>edit</editType><file>include/kernel-defaults.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/kernel-defaults.mk</affectedPath><commitId>9d84fbff3670153e3ec8415304cdd376022ba163</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>kernel: skip kbuild if the kernel tree did not change

kbuild runs twice per build, for the modules and for the image, and
takes about half a second each time even if there is nothing to do.

Store a hash of the kbuild command line after a successful run, and
skip the next run if the hash is the same and no file in the kernel
tree or the toolchain is newer than the stamp. The OpenWrt files at the
top of the kernel tree are ignored, apart from .config. Directories are
ignored, as kbuild changes them with temporary files, so a deleted file
alone does not trigger a run.

With CONFIG_STRIP_KERNEL_EXPORTS the image link reads symtab.h, which
sits above the kernel tree and follows the modules of the packages. The
scan of the image run names that file as well.

The workaround that deletes vmlinux now only runs together with kbuild.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>9d84fbff3670153e3ec8415304cdd376022ba163</id><msg>kernel: skip kbuild if the kernel tree did not change</msg><path><editType>edit</editType><file>include/kernel-defaults.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/toplevel.mk</affectedPath><commitId>cb18fbc331a45d999860b1f7f7b89d1b7e2dc5be</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: regenerate package metadata only after it changed

prepare-tmpinfo runs on every build and calls package-metadata.pl
three times, although tmp/.packageinfo usually did not change. It also
writes tmp/.config-feeds.in on every build: the check against
tmp/.packageauxvars never passes, as that file is written again later
in the same recipe.

Generate the package metadata files only if tmp/.packageinfo or the
scripts are newer, and replace tmp/.config-feeds.in only if its content
changed.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>cb18fbc331a45d999860b1f7f7b89d1b7e2dc5be</id><msg>build: regenerate package metadata only after it changed</msg><path><editType>edit</editType><file>include/toplevel.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/toplevel.mk</affectedPath><commitId>e7d105af30a79f55da5a41315943b2c1d12878f9</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: skip the .config sync check if nothing changed

Every build runs conf --defconfig on a copy of .config to warn if the
configuration is out of sync. This takes about a second before the
build starts.

Skip the check if the last one passed, and neither .config nor a
Kconfig file, the generated Kconfig files or conf changed since then.
If the check fails, it runs and warns again on every build, as before.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>e7d105af30a79f55da5a41315943b2c1d12878f9</id><msg>build: skip the .config sync check if nothing changed</msg><path><editType>edit</editType><file>include/toplevel.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/Makefile</affectedPath><commitId>bc2e85eb8df05e8e1e5a7542c243b33fcbbf6365</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: clean the package root dir only if the packages can have changed

The stamp of package/cleanup depends on tmp/.build, which is touched on
every make call, so every build deletes $(STAGING_DIR_ROOT) and every
package copies its files into it again, one after the other under a
lock. With all packages selected, this takes 5 s of a build that has
nothing to do, most of it in the 1102 kmods of package/kernel/linux.

Only clean it if .config, the package metadata or a file below package/
changed since the last cleanup. An edit of the source in a build
directory alone does not clean it, so a file that such an edit removes
from a package stays until then. make package/cleanup cleans it at any
time.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>bc2e85eb8df05e8e1e5a7542c243b33fcbbf6365</id><msg>build: clean the package root dir only if the packages can have changed</msg><path><editType>edit</editType><file>package/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>scripts/timestamp.pl</affectedPath><commitId>3cf47c5c17dc2ec3ecab578a1fd4d723bb6b3f9b</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: compare timestamps with a fraction of a second

timestamp.pl decides whether a subdir has work to do. It scans the stamp
file and the source directories, keeps the newest, and reports that the
work is done when the newest one is the stamp. The scan reads the mtime
through the core stat of perl, which truncates it to whole seconds, and
the comparison is strict with the stamp scanned first. Two files that
share a second therefore count as a tie, and a tie says that the work is
done.

include/subdir.mk touches tmp/.build at the start of a build and the
stamp of a subdir at the end, so the two land in the same second once a
build takes less than a second between them. The target install stamp is
the last one of a build, roughly 0.4 s before the build ends, so it is
the one that ties first: the next build then skips target/install and
ships the images of the previous build. Around one build in five was
affected once the build became fast enough.

Read the mtime through Time::HiRes, which reports the fraction as well.
Two touches around a fork no longer share a timestamp. Keep the core
stat where the module is missing, which restores the old behaviour
rather than failing.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>3cf47c5c17dc2ec3ecab578a1fd4d723bb6b3f9b</id><msg>build: compare timestamps with a fraction of a second</msg><path><editType>edit</editType><file>scripts/timestamp.pl</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/Makefile</affectedPath><commitId>3054effc90f343ebd2c2eae9319de4b671052836</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: rebuild the package index only when a package changed

package/index runs apk mkndx and make-index-json.py over every package
on each build, which takes 1.2 s of a no-op build of this tree with 1258
packages. The result depends only on the package files.

Skip the pass while packages.adb and index.json exist and no package
file, and no directory, is newer than index.json. The directory covers a
package that was added or removed, because neither changes a file that
is left. The comparison uses index.json rather than packages.adb,
because apk mkndx writes packages.adb through a rename, which sets the
mtime of the directory to that of the file it wrote. The directory would
then tie with packages.adb and the skip would rest on the two comparing
equal. index.json is written after it, so the directory is older.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>3054effc90f343ebd2c2eae9319de4b671052836</id><msg>build: rebuild the package index only when a package changed</msg><path><editType>edit</editType><file>package/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>rules.mk</affectedPath><commitId>d8442d2876d97ea4ef98c51c688af971e44e5788</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: write the checksum file only when a file changed

sha256sums hashes every file of a directory on each build. package/index
calls it over the package output of this tree, which holds 1258 files,
and spends 0.7 s of a no-op build on a file that does not change.

Skip the pass while the file exists and nothing in the directory is
newer than it.

The checksum target of a build calls sha256sums as well, but it keeps
writing the file on every build. buildversion and feedsversion rewrite
version.buildinfo and feeds.buildinfo beside it without a guard, so the
directory always holds something newer. Only package/index gains here.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>d8442d2876d97ea4ef98c51c688af971e44e5788</id><msg>build: write the checksum file only when a file changed</msg><path><editType>edit</editType><file>rules.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Makefile</affectedPath><commitId>af60df881d1e5e221ecdf1e64444366c9ae9f603</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: run diffconfig only when the configuration changed

diffconfig.sh runs the configuration parser over the whole tree twice,
which takes 2 s of every build, and buildinfo runs it on each build.
The result depends only on .config and the Kconfig files.

Skip it while neither is newer than the file it wrote last time.
include/toplevel.mk guards the sync check of .config the same way.

This alone changes nothing on a parallel build, because buildinfo runs
beside the compile stamps. It pays once the other phases become shorter.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>af60df881d1e5e221ecdf1e64444366c9ae9f603</id><msg>build: run diffconfig only when the configuration changed</msg><path><editType>edit</editType><file>Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/Makefile</affectedPath><commitId>8d2564302560bea292ba4050df444404e32527ef</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: merge the packages only when the set of packages changed

package/merge deletes the symlink farm of every built package and creates
it again on every build. package/merge-index then reads all of those
packages to create the index. With two thousand packages both steps take a
third of a second, and the cost grows with the size of the configuration.

Record the name, the size and the timestamp of every package file. Skip
both steps while that list is unchanged and the index is present. A rebuild
of the symlinks drops the index, so merge-index creates it again.

This takes the time of package/install on an unchanged tree from 1.05 s to
0.60 s for the OpenWrt One.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>8d2564302560bea292ba4050df444404e32527ef</id><msg>build: merge the packages only when the set of packages changed</msg><path><editType>edit</editType><file>package/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/kernel-build.mk</affectedPath><commitId>746c76168c231a3d5f4fb8de4727b8e11f0645b5</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: create the images only when an input changed

target/linux install runs the whole image build on every build. It creates
the root file system image, the kernel images, the FIT containers and the
factory images again, although the inputs are the same. This takes 0.7 s for
the OpenWrt One and much more for a target with many devices.

Record a state after a successful image build:

 - a hash of the target directory, because the build normalises the
   timestamps of the root file system and they cannot report a change,
 - the name and the size of every image in the output directory, so that a
   deleted image brings the build back,
 - the name and the size of every file below json_info_files, because
   image_prepare drops that directory and profiles.json comes from it.

Skip the image build while the state is the same and no file of the kernel
build directory, the kernel tree, the image directory of the staging
directory, the host tools, the target directory of the tree, include,
scripts or .config is newer than the state file.

This takes the time of target/linux install on an unchanged tree from 1.77 s
to 1.33 s, and the time of a full no-op build from 4.11 s to 3.72 s for the
OpenWrt One.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>746c76168c231a3d5f4fb8de4727b8e11f0645b5</id><msg>build: create the images only when an input changed</msg><path><editType>edit</editType><file>include/kernel-build.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/kernel-build.mk</affectedPath><commitId>e97e3f36bd5d48add83c5c7fba907600b12a653c</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>kernel: configure the kernel only when an input changed

The configure stage rewrites the kernel configuration on every build. It
runs kconfig.pl twice and package-metadata.pl once, which takes an eighth of
a second. target/compile and target/install both pay it.

The rule carries FORCE because the kernel configuration also depends on the
package metadata, which is not a prerequisite. Add a check file that the
rule creates only when the configure stage must run, and make the stamp
depend on it. The check covers the kernel configuration files, .config, the
package metadata, the scripts that read them, the two build system files
that hold the recipe, the target directory and the user headers.

This takes the time of target/linux install on an unchanged tree from 1.33 s
to 1.15 s, and the time of a full no-op build from 3.68 s to 3.40 s for the
OpenWrt One.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>e97e3f36bd5d48add83c5c7fba907600b12a653c</id><msg>kernel: configure the kernel only when an input changed</msg><path><editType>edit</editType><file>include/kernel-build.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/toplevel.mk</affectedPath><commitId>0e5a0bd5581a1360230759cd35623db1fd01f5be</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: scan the package and target metadata only after a change

prepare-tmpinfo runs the metadata scan for the packages and for the targets
on every build. Each run starts two more make processes and walks the whole
directory, which takes 0.15 s per scan even when it finds nothing to do.

Keep a stamp per scan and skip the scan while no Makefile, no .mk file and
no directory below the scanned tree is newer than the stamp, and while
include, rules.mk and .config are unchanged as well.

package/kernel/linux reads target/linux/*/modules.mk through SCAN_DEPS, so
the package scan watches those files although they sit in the target tree.

This takes the time of the prereq step from 0.45 s to 0.21 s, and the time
of a full no-op build from 3.40 s to 3.25 s for the OpenWrt One.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>0e5a0bd5581a1360230759cd35623db1fd01f5be</id><msg>build: scan the package and target metadata only after a change</msg><path><editType>edit</editType><file>include/toplevel.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Makefile</affectedPath><affectedPath>rules.mk</affectedPath><commitId>ac4f1dd36ce8c3b3c06652780d86056d78efa642</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: write the build info files only when they change

buildversion, feedsversion and json_overview_image_info rewrite
version.buildinfo, feeds.buildinfo and profiles.json on every build. The
content is the same, but the new timestamp makes the checksum step hash
every image again, which takes 0.18 s for the OpenWrt One and grows with the
number of devices.

Write the three files to the temporary directory and copy them over the
result of the last build only when the content differs.

This takes the time of the index, image info and checksum step from 0.36 s
to 0.10 s, and the time of a full no-op build from 3.25 s to 3.00 s.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>ac4f1dd36ce8c3b3c06652780d86056d78efa642</id><msg>build: write the build info files only when they change</msg><path><editType>edit</editType><file>rules.mk</file></path><path><editType>edit</editType><file>Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>scripts/timestamp.pl</affectedPath><commitId>b5c4b58764f34556af41326cca6354bc723b1ba5</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: let find answer the rebuild question

The -n caller of timestamp.pl only needs to know whether the stamp is the
newest file. The script reads the timestamp of every file to answer that,
which costs 0.09 s for the build directory of U-Boot with its 44000 files.
The rebuild check runs the script twice per package and per build.

Collect the paths first, and for -n ask find for the first file that is
newer than the stamp. find stops at that file, so the walk ends early when
there is work to do. The other modes keep the old code, and so does -n with
-follow, because find and the script treat a symbolic link to a file
differently there.

The check over the U-Boot build directory now takes 0.02 s. The result is
the same for all 44 build directories of the OpenWrt One. The time of a full
no-op build does not change on a machine with 24 cores, where the package
step waits for the dependency chain rather than for the checks.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>b5c4b58764f34556af41326cca6354bc723b1ba5</id><msg>build: let find answer the rebuild question</msg><path><editType>edit</editType><file>scripts/timestamp.pl</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/download.mk</affectedPath><commitId>f7adeacb6265eb7236d15dec831b1b7f1bd880e4</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: hash downloaded files only after they changed

check_download_integrity hashes the downloaded file on every parse of
every Makefile that uses it. With large archives this costs seconds per
build, for example about 1.2 s for linux-firmware, which is on the
critical path of the package build.

Remember the identity (inode, size, mtime, ctime) of a file that
matched its expected hash, and hash it again only after it changed.

The identity comes from the stat of tools/coreutils, which a Linux host
does not build. Fall back to the stat of the host, and drop the cache
when neither one answers, so that a missing stat costs time and never
trust.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>f7adeacb6265eb7236d15dec831b1b7f1bd880e4</id><msg>build: hash downloaded files only after they changed</msg><path><editType>edit</editType><file>include/download.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/image-commands.mk</affectedPath><affectedPath>include/kernel-defaults.mk</affectedPath><affectedPath>scripts/cache-run.sh</affectedPath><affectedPath>rules.mk</affectedPath><commitId>c6a1bf59665544d6f8e2718006e2c39385584cea</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: reuse the output of slow compression steps

On a rebuild, the initrd and the initramfs kernel image usually have
the same content as before, but xz and lzma compress them again on
every build. For the OpenWrt One this takes about 6 s of the build.

Add scripts/cache-run.sh. It runs a command that creates one file from
another, and stores the output together with a hash of the input, the
command line and the tool. If they are the same in the next run, it
copies the stored output instead. The commands are deterministic, so
the result is identical.

On a hit the script compares the stored output with the file that is
already there and copies only when the two differ. The output then keeps
its timestamp, so a later step that compares timestamps does not treat it
as new work.

Use it for the initrd compression and for Build/lzma. bzip2 and lzop
stay as they are: bzip2 writes to stdout, and lzop stores the mtime of
its input. xz and gzip now keep the cpio, as the other tools do, so a
cache hit leaves the same files behind as a normal run.

The slot name follows the path of the output below $(KDIR), because two
targets in different directories can share a basename. cache-run.sh holds
a lock over the slot and swaps the stored output in with a rename, so two
image recipes on one slot never read a half written pair.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>c6a1bf59665544d6f8e2718006e2c39385584cea</id><msg>build: reuse the output of slow compression steps</msg><path><editType>edit</editType><file>include/kernel-defaults.mk</file></path><path><editType>edit</editType><file>include/image-commands.mk</file></path><path><editType>edit</editType><file>rules.mk</file></path><path><editType>add</editType><file>scripts/cache-run.sh</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/image-commands.mk</affectedPath><commitId>5b3be62345bde6ecabb1869a8a9a86abd1316c23</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: reuse the output of Build/libdeflate-gzip

libdeflate-gzip -12 of a kernel takes about a second, and its input
usually did not change. Run it through cache-run.sh, as Build/lzma.

libdeflate-gzip stores no mtime or file name, and -k -S .new gives the
same output as -c.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>5b3be62345bde6ecabb1869a8a9a86abd1316c23</id><msg>build: reuse the output of Build/libdeflate-gzip</msg><path><editType>edit</editType><file>include/image-commands.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/Makefile</affectedPath><commitId>48c1e36bf2b8cbe1bfa07cc129cbc833d977d501</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>package: reuse the rootfs if its inputs did not change

The rootfs is installed from scratch on every build: apk add, then the
post-install and init scripts of every package, one after the other.
This takes about 1.5 s, even if no package changed.

Build a key from the package index, which holds a hash of every
package, the install list, .config, SOURCE_DATE_EPOCH, the files
overlay, apk, tar, gzip and the Makefiles that create the rootfs. Save
a copy of the rootfs with the key, and restore it from the copy if the
key did not change. Later build steps modify the rootfs, so it is
always restored from the copy and never reused in place.

prepare_rootfs runs tar and gzip over the apk script archive, so the
key holds those two host tools as well. With mklibs it also runs
rstrip.sh, which the key then holds too.

The install list now holds the base-files, libc and kernel versions
too, so that the key can use it. Only the APK path uses the cache.

The copy costs disk: the build directory carries the root filesystem
twice, once as root and root.orig and once in the cache.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>48c1e36bf2b8cbe1bfa07cc129cbc833d977d501</id><msg>package: reuse the rootfs if its inputs did not change</msg><path><editType>edit</editType><file>package/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>rules.mk</affectedPath><affectedPath>include/site/cache</affectedPath><affectedPath>include/host-build.mk</affectedPath><affectedPath>include/package.mk</affectedPath><commitId>a0b036985afc5dd36a93faba1119b55b89780a3b</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: cache the autoconf results of a package that opts in

A configure run spends its time on the compiler invocations behind its
checks, not on the shell. tools/m4 runs the compiler 633 times and takes
24 seconds. ccache does not help, because it refuses to cache an
autoconf conftest compile at all; it counts these separately as
"Autoconf compile/link" under its uncacheable calls.

A package that sets PKG_CONFIGURE_CACHE or HOST_CONFIGURE_CACHE keeps a
config.cache under tmp/, so a package that is cleaned and built again
reads the answers instead of running the checks. The configure stage of
tools/m4 drops from 24.5 s to 1.5 s. dirclean removes tmp/, so a full
reset of the tree starts from cold answers.

A package has to opt in, because a cache is only correct for a configure
script that keeps its side effects outside the AC_CACHE_VAL body.
ncurses appends -D_XOPEN_SOURCE and -D_DEFAULT_SOURCE to CPPFLAGS inside
that body, so a cached run restores the value, skips the append, and
then fails to compile wcwidth. ncurses_cfg.h is identical in both cases;
the difference is in the generated Makefile.

The path covers everything else that changes an answer. A target package
is keyed on the toolchain directory, which carries the gcc version. A
host package is keyed on the version string of the host compiler,
because autoconf cannot detect a new compiler behind an unchanged name;
gcc 14 turned an implicit function declaration into an error and changed
many answers that way. Both are keyed on a hash of the configure
arguments and the build flags, and autoconf refuses a cache written with
different flags on top of that.

A cached program path outlives a wipe of staging_dir, so ac_cv_path_ and
ac_cv_prog_ answers are dropped when the cache loads and configure
searches PATH again. Without that, a cache written before staging_dir
held sed pins /usr/bin/sed for good. A search runs no compiler, so this
costs nothing that matters.

The cache arrives through a site script rather than --cache-file, so a
hand written configure script never sees a new argument. The site script
removes the file of the previous arguments, so a different configuration
gets a cold cache instead of an autoconf error. It also unsets the
variable, and make exports it for the configure stage alone, so a nested
configure run keeps its own cache.

Set CONFIGURE_CACHE_DIR to keep the cache elsewhere, or to the empty
string to run every check again.

Host builds now read a site script on Linux as well. Before this change
only Darwin had one.

CONFIG_SITE holds one path name: autoconf before 2.70 reads the whole
value as that one name, so a second path would silence both scripts. It
names the cache script alone, and the cache script loads the site script
of the architecture from CONFIG_SITE_BASE.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>a0b036985afc5dd36a93faba1119b55b89780a3b</id><msg>build: cache the autoconf results of a package that opts in</msg><path><editType>edit</editType><file>include/package.mk</file></path><path><editType>add</editType><file>include/site/cache</file></path><path><editType>edit</editType><file>rules.mk</file></path><path><editType>edit</editType><file>include/host-build.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>tools/tar/Makefile</affectedPath><affectedPath>tools/m4/Makefile</affectedPath><affectedPath>tools/bison/Makefile</affectedPath><affectedPath>tools/patch/Makefile</affectedPath><affectedPath>tools/findutils/Makefile</affectedPath><affectedPath>tools/cpio/Makefile</affectedPath><affectedPath>tools/e2fsprogs/Makefile</affectedPath><affectedPath>tools/elfutils/Makefile</affectedPath><affectedPath>tools/gmp/Makefile</affectedPath><affectedPath>tools/sed/Makefile</affectedPath><commitId>cd322612ccb66e35878ed7f9d3e562f9f4b4bd09</commitId><timestamp>1790093938000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>tools: cache the configure results of ten autotools tools

These ten hold up the wall clock on their own. Their configure stages
run while nothing else does, because the tools build in dependency
order. Measured over a full build, cold cache against warm:

  sed        21.68 s -&gt; 1.22 s
  m4         21.48 s -&gt; 1.22 s
  findutils  19.47 s -&gt; 1.56 s
  tar        17.75 s -&gt; 1.47 s
  cpio       14.28 s -&gt; 1.26 s
  bison      12.81 s -&gt; 1.29 s
  patch      12.16 s -&gt; 1.31 s
  elfutils   26.58 s -&gt; 15.47 s

Each of the ten configures the same way with a warm cache as it does
without one. The check runs configure three times, without a cache, with
a cold cache and with a warm cache, and compares every file that
configure generates between the first and the last. ncurses fails that
check; these do not.

The only difference left is ac_ct_AR and ac_ct_RANLIB, which a cold run
fills through the fallback path of AC_CHECK_TOOL and a warm run leaves
empty. AR and RANLIB are correct in both, and no generated Makefile
reads the ac_ct_ form.

tools/cmake keeps its 33 s, the longest configure stage in the build. It
bootstraps with its own script rather than autoconf, so this does not
reach it.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:18:58 +0200</date><id>cd322612ccb66e35878ed7f9d3e562f9f4b4bd09</id><msg>tools: cache the configure results of ten autotools tools</msg><path><editType>edit</editType><file>tools/bison/Makefile</file></path><path><editType>edit</editType><file>tools/sed/Makefile</file></path><path><editType>edit</editType><file>tools/cpio/Makefile</file></path><path><editType>edit</editType><file>tools/e2fsprogs/Makefile</file></path><path><editType>edit</editType><file>tools/findutils/Makefile</file></path><path><editType>edit</editType><file>tools/m4/Makefile</file></path><path><editType>edit</editType><file>tools/elfutils/Makefile</file></path><path><editType>edit</editType><file>tools/patch/Makefile</file></path><path><editType>edit</editType><file>tools/gmp/Makefile</file></path><path><editType>edit</editType><file>tools/tar/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/system/apk/Makefile</affectedPath><affectedPath>package/system/apk/patches/0012-crypto_openssl-use-deterministic-ECDSA-signatures.patch</affectedPath><commitId>e923974fc1720954f04e3916072fda1fb14efc98</commitId><timestamp>1790095590000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>apk: use deterministic ECDSA signatures

The host apk signs with LibreSSL, which uses a random ECDSA nonce. A
package that is signed again has different bytes and often a different
size, even if its content did not change. The rootfs records the
package size in /lib/apk/db/installed, so a rebuild of one package
changes all images.

Add a patch that derives the nonce as specified in RFC 6979. Signed
packages and images are now identical after a rebuild.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:46:30 +0200</date><id>e923974fc1720954f04e3916072fda1fb14efc98</id><msg>apk: use deterministic ECDSA signatures</msg><path><editType>add</editType><file>package/system/apk/patches/0012-crypto_openssl-use-deterministic-ECDSA-signatures.patch</file></path><path><editType>edit</editType><file>package/system/apk/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/trusted-firmware-a.mk</affectedPath><commitId>1e7c8fbc299665a3afe67773752cd14f35d7ec56</commitId><timestamp>1790095590000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>trusted-firmware-a: use a reproducible build timestamp

TF-A embeds __TIME__ and __DATE__ in its build message, so bl2 and bl31
differ on every build, and so do all images that contain them.

Pass BUILD_MESSAGE_TIMESTAMP, derived from the source date of the
package, in the same format.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:46:30 +0200</date><id>1e7c8fbc299665a3afe67773752cd14f35d7ec56</id><msg>trusted-firmware-a: use a reproducible build timestamp</msg><path><editType>edit</editType><file>include/trusted-firmware-a.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>tools/yafut/patches/100-honour-SOURCE_DATE_EPOCH.patch</affectedPath><affectedPath>tools/yafut/Makefile</affectedPath><commitId>ec4768fbed8ea3b09e323cb267db0714a7d68eb7</commitId><timestamp>1790095590000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>yafut: use a reproducible timestamp

yaffsfs_CurrentTime() returns the wall clock, and Yaffs writes that value
to the access, modification and change time of every object header. The
RouterBOARD images of ipq40xx/mikrotik therefore differ on every build,
and so does the sysupgrade metadata checksum that follows them.

Add a patch that reads SOURCE_DATE_EPOCH, which the build already exports.

Tested with two images written one second apart. They are identical with
SOURCE_DATE_EPOCH set and differ without it.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:46:30 +0200</date><id>ec4768fbed8ea3b09e323cb267db0714a7d68eb7</id><msg>yafut: use a reproducible timestamp</msg><path><editType>add</editType><file>tools/yafut/patches/100-honour-SOURCE_DATE_EPOCH.patch</file></path><path><editType>edit</editType><file>tools/yafut/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/boot/uboot-mxs/Makefile</affectedPath><affectedPath>package/boot/uboot-mxs/patches/0002-tools-mxsimage-honour-SOURCE_DATE_EPOCH.patch</affectedPath><commitId>3a33c694aaa019d5a5619099d385b5bc12ebff3f</commitId><timestamp>1790095590000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>uboot-mxs: use a reproducible build timestamp

mkimage -T mxsimage builds u-boot.sb. sb_get_timestamp() reads the wall
clock and sb_prefill_image_header() writes it to the boot image header.
The header digest covers that field, so the sdcard images of mxs differ on
every build.

Add a patch that uses imagetool_get_source_date(), which the other image
tools already use, and keep the wall clock as the fallback.

Tested with the mxsimage configuration of u-boot. Two images are identical
with the same SOURCE_DATE_EPOCH, differ with different values, and still
differ when the variable is not set.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:46:30 +0200</date><id>3a33c694aaa019d5a5619099d385b5bc12ebff3f</id><msg>uboot-mxs: use a reproducible build timestamp</msg><path><editType>add</editType><file>package/boot/uboot-mxs/patches/0002-tools-mxsimage-honour-SOURCE_DATE_EPOCH.patch</file></path><path><editType>edit</editType><file>package/boot/uboot-mxs/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/generic/pending-6.12/303-MIPS-vdso-keep-the-prefix-map-flags.patch</affectedPath><affectedPath>target/linux/generic/pending-6.18/303-MIPS-vdso-keep-the-prefix-map-flags.patch</affectedPath><commitId>0995a0e3511218deb4a492f28a9e181d3c2ca92b</commitId><timestamp>1790095590000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>kernel: make the MIPS vDSO build id independent of the build path

arch/mips/vdso/Makefile takes a few flags from KBUILD_CFLAGS and adds -g,
so the vDSO always carries debug information. -ffile-prefix-map is not in
that list, so DW_AT_comp_dir of the vDSO objects holds the absolute build
directory. The vDSO is linked with --build-id=sha1, which hashes the debug
information, and objcopy -S then removes the debug information and keeps
the note. The kernel embeds that image.

Every MIPS image therefore depends on the name of the build directory. The
reproducible build service works in a directory with a random name, so it
reports all MIPS targets as different. The ARM architectures add their vDSO
flags on top of KBUILD_CFLAGS and are not affected.

Add a patch to 6.12 and to 6.18 that takes the two prefix map flags over
from KBUILD_CFLAGS.

Tested with two ath79/nand builds in directories of different name. Before
the patch the vDSO build ids differ and all 91 images differ. After the
patch the build ids match and all 91 images are identical.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:46:30 +0200</date><id>0995a0e3511218deb4a492f28a9e181d3c2ca92b</id><msg>kernel: make the MIPS vDSO build id independent of the build path</msg><path><editType>add</editType><file>target/linux/generic/pending-6.12/303-MIPS-vdso-keep-the-prefix-map-flags.patch</file></path><path><editType>add</editType><file>target/linux/generic/pending-6.18/303-MIPS-vdso-keep-the-prefix-map-flags.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/generic/pending-6.18/304-LoongArch-vdso-keep-the-prefix-map-flags.patch</affectedPath><affectedPath>target/linux/generic/pending-6.12/304-LoongArch-vdso-keep-the-prefix-map-flags.patch</affectedPath><commitId>115209aa225a9b2d8b849809eaa4969de8e8c539</commitId><timestamp>1790095590000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>kernel: make the LoongArch vDSO build id independent of the build path

The LoongArch vDSO Makefile builds its objects with a flag set of its own,
in the same way as the MIPS one. It drops -ffile-prefix-map, adds -g and
links with --build-id, so the build id of the vDSO follows the absolute
path of the build directory. The kernel embeds the vDSO, so two builds in
different directories produce different images.

Take the prefix map flags over from KBUILD_CFLAGS.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:46:30 +0200</date><id>115209aa225a9b2d8b849809eaa4969de8e8c539</id><msg>kernel: make the LoongArch vDSO build id independent of the build path</msg><path><editType>add</editType><file>target/linux/generic/pending-6.12/304-LoongArch-vdso-keep-the-prefix-map-flags.patch</file></path><path><editType>add</editType><file>target/linux/generic/pending-6.18/304-LoongArch-vdso-keep-the-prefix-map-flags.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/ramips/image/mt76x8.mk</affectedPath><affectedPath>target/linux/ixp4xx/image/Makefile</affectedPath><affectedPath>target/linux/ipq40xx/image/generic.mk</affectedPath><affectedPath>scripts/linksys-image.sh</affectedPath><affectedPath>target/linux/qualcommax/image/ipq60xx.mk</affectedPath><affectedPath>target/linux/bcm53xx/image/Makefile</affectedPath><affectedPath>target/linux/qualcommax/image/ipq807x.mk</affectedPath><commitId>8e7a8a2b9210481adbfbfe42aa37cfc804817674</commitId><timestamp>1790095590000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>image: create the archive images with fixed metadata

Several image recipes call tar without the options that pin the member
order, the owner, the mode and the modification time. The archive then
holds the build time, the umask of the build user and the readdir order of
the build directory, so two builds of the same source produce different
images.

Pass the same options that Image/mkfs/targz and sysupgrade-tar.sh already
use. The recipes define no member order, so sorting the members takes
nothing away. The diffoscope of the published WAX610 archive shows the
order differing between the build machines, which is what a readdir order
produces.

--mode=go-w clears the write bit of the group and of the others. tar keeps
the mode of the file on disk, which follows the umask of the build user,
so without it the archive differs between a host with umask 022 and one
with umask 002.

Covers the Netgear factory archives of ipq40xx, ipq60xx and ipq807x, the
Creality factory archive of mt76x8, the D-Link DWL8610AP archive of
bcm53xx, the Freecom archive of ixp4xx and the Linksys switch archive of
realtek.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:46:30 +0200</date><id>8e7a8a2b9210481adbfbfe42aa37cfc804817674</id><msg>image: create the archive images with fixed metadata</msg><path><editType>edit</editType><file>target/linux/qualcommax/image/ipq60xx.mk</file></path><path><editType>edit</editType><file>target/linux/ramips/image/mt76x8.mk</file></path><path><editType>edit</editType><file>target/linux/bcm53xx/image/Makefile</file></path><path><editType>edit</editType><file>target/linux/ixp4xx/image/Makefile</file></path><path><editType>edit</editType><file>target/linux/qualcommax/image/ipq807x.mk</file></path><path><editType>edit</editType><file>target/linux/ipq40xx/image/generic.mk</file></path><path><editType>edit</editType><file>scripts/linksys-image.sh</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/image/Makefile</affectedPath><commitId>92f41f89436d33e1dbb7ac6e9aa8c5f0326e4e37</commitId><timestamp>1790095590000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>realtek: use a reproducible timestamp in the 7z kernel container

7zr stores the modification time of the input file. The kernel image
carries the build time, so the H3C and HPE images differ between builds.

Set the time of the input to SOURCE_DATE_EPOCH before the archive is
created.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:46:30 +0200</date><id>92f41f89436d33e1dbb7ac6e9aa8c5f0326e4e37</id><msg>realtek: use a reproducible timestamp in the 7z kernel container</msg><path><editType>edit</editType><file>target/linux/realtek/image/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/boot/uboot-mediatek/Makefile</affectedPath><affectedPath>package/boot/uboot-mediatek/patches/009-tools-mtk_image-honour-SOURCE_DATE_EPOCH.patch</affectedPath><commitId>03ffe29cdf03b3824a621a63c098ac7e477282a0</commitId><timestamp>1790095590000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>uboot-mediatek: use a reproducible build timestamp for MT7621

mtk_image_set_mt7621_header() reads the wall clock and writes it to the
timestamp of the legacy image header, so the MT7621 boot loader image
differs on every build.

Add a patch that uses imagetool_get_source_date(), which the other image
tools already use, and keep the wall clock as the fallback.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:46:30 +0200</date><id>03ffe29cdf03b3824a621a63c098ac7e477282a0</id><msg>uboot-mediatek: use a reproducible build timestamp for MT7621</msg><path><editType>edit</editType><file>package/boot/uboot-mediatek/Makefile</file></path><path><editType>add</editType><file>package/boot/uboot-mediatek/patches/009-tools-mtk_image-honour-SOURCE_DATE_EPOCH.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/bmips/image/Makefile</affectedPath><commitId>f73a0d39e172402e42bce02e62592280fc96f806</commitId><timestamp>1790095590000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>bmips: squash the owner and the mode in the CFE JFFS2 partition

Build/cfe-jffs2 is the only mkfs.jffs2 call in the tree that passes
neither --squash-uids nor --squash-perms. The recipe creates the marker
files with touch and cp, so the JFFS2 inodes carry the uid, the gid and
the umask of the build machine. The published images hold uid and gid
1000.

mkfs.jffs2 already takes the timestamp from SOURCE_DATE_EPOCH, so the
owner and the mode are the remaining inputs from the environment.

Pass both options, as mvebu and ath79 already do.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:46:30 +0200</date><id>f73a0d39e172402e42bce02e62592280fc96f806</id><msg>bmips: squash the owner and the mode in the CFE JFFS2 partition</msg><path><editType>edit</editType><file>target/linux/bmips/image/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/imx/image/cortexa9.mk</affectedPath><commitId>fc166c4869dba4876ad3d7d6e12a8ff87c35ca2a</commitId><timestamp>1790095590000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>imx: fix the boot file system of the Gateworks Ventana

Build/boot-overlay copies the device trees and builds the boot script in
$@.boot, so every file carries the build time. mkfs.ubifs writes st_mtime
straight into the inode and has no SOURCE_DATE_EPOCH support, and the two
tar calls pass neither --sort=name nor the options that pin the owner and
the mode, so both nand.ubi and bootfs.tar.gz differ between builds.

The diffoscope of the published bootfs.tar.gz shows both: wall clock
mtimes on the device tree files, and a member order that follows readdir.

Set the times in $@.boot once, before the UBIFS image and the tar are
made. Sort the members of both archives and give them a fixed owner and
mode, as the other archive recipes do.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:46:30 +0200</date><id>fc166c4869dba4876ad3d7d6e12a8ff87c35ca2a</id><msg>imx: fix the boot file system of the Gateworks Ventana</msg><path><editType>edit</editType><file>target/linux/imx/image/cortexa9.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/kernel/lantiq/ltq-tapi/Makefile</affectedPath><affectedPath>package/kernel/lantiq/ltq-tapi/patches/021-keep-build-paths-out-of-the-configure-string.patch</affectedPath><affectedPath>package/kernel/lantiq/ltq-vmmc/patches/022-keep-build-paths-out-of-the-configure-string.patch</affectedPath><affectedPath>package/kernel/lantiq/ltq-vmmc/Makefile</affectedPath><commitId>661d6963dfed41b291be3bcb98523d44ce7a872c</commitId><timestamp>1790095590000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>lantiq: keep build paths out of the TAPI and VMMC modules

configure.in of drv_tapi and drv_vmmc compiles the whole configure command
line into the module. drv_tapi_linux.c prints it through a proc file. The
command line holds the absolute paths of the build machine, among them
--enable-kernelbuild, --with-ifxos-incl, --enable-tapiincl, CPPFLAGS and
LDFLAGS, so the module depends on the directory it was built in.

Measured in the published snapshot modules of lantiq/xway: drv_tapi.ko and
drv_vmmc.ko both hold
--enable-kernelbuild=/builder/shared-workdir/build/build_dir/...
The existing 020-not-leak-cflags.patch covers the Kbuild CFLAGS, not this
string.

Drop every argument that holds a path and keep the feature flags. The loop
repeats the idiom the file already uses for CONFIGURE_OPTIONS.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:46:30 +0200</date><id>661d6963dfed41b291be3bcb98523d44ce7a872c</id><msg>lantiq: keep build paths out of the TAPI and VMMC modules</msg><path><editType>add</editType><file>package/kernel/lantiq/ltq-vmmc/patches/022-keep-build-paths-out-of-the-configure-string.patch</file></path><path><editType>edit</editType><file>package/kernel/lantiq/ltq-tapi/Makefile</file></path><path><editType>edit</editType><file>package/kernel/lantiq/ltq-vmmc/Makefile</file></path><path><editType>add</editType><file>package/kernel/lantiq/ltq-tapi/patches/021-keep-build-paths-out-of-the-configure-string.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>scripts/make-sbom.py</affectedPath><affectedPath>scripts/package-metadata.pl</affectedPath><commitId>712ff7ca89f76f6fdcb3289f78b7176174013a1e</commitId><timestamp>1790095590000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: create reproducible CycloneDX SBOMs

Both SBOM generators produce a different file on every run, so the
published .bom.cdx.json of an image and of a package feed never match a
rebuild.

dump_cyclonedxsbom_json() in scripts/package-metadata.pl has three
causes. It draws the serial number from rand(), it takes the timestamp
from the wall clock, and encode_json() follows the Perl hash order, which
changes with the hash seed of each run. The last one alone reorders every
key in the file.

scripts/make-sbom.py has the first two causes, through uuid.uuid4() and
datetime.utcnow().

Take the timestamp from SOURCE_DATE_EPOCH, which the build exports. Derive
the serial number from the timestamp and the component list, so it stays a
valid RFC 4122 identifier and still changes when the content changes. Sort
the keys of the Perl output.

Tested with the package index and the image manifest of an ipq40xx build.
Two runs with the same SOURCE_DATE_EPOCH are now identical, two runs with
different values differ, and the scripts exit with an error when the value
is not a number. Both files differ between two runs without the change.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:46:30 +0200</date><id>712ff7ca89f76f6fdcb3289f78b7176174013a1e</id><msg>build: create reproducible CycloneDX SBOMs</msg><path><editType>edit</editType><file>scripts/make-sbom.py</file></path><path><editType>edit</editType><file>scripts/package-metadata.pl</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/kernel.mk</affectedPath><affectedPath>rules.mk</affectedPath><affectedPath>include/package.mk</affectedPath><commitId>b06e5f3bf9246d5d299142f5a774497f07b8ec2d</commitId><timestamp>1790095590000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: map the staging directory out of the compiler output

iremap is called with BUILD_DIR and with PKG_BUILD_DIR, never with
STAGING_DIR. A header taken from the staging directory therefore reaches
__FILE__ and the debug information with its absolute path, and the result
depends on the directory the tree was built in.

Measured in the published snapshot of lantiq/xway: mt76-connac-lib.ko,
mt76x02-lib.ko and mt7925-common.ko hold
/builder/shared-workdir/build/staging_dir/target-mips_24kc_musl/usr/include/mac80211/net/cfg80211.h
That path is __FILE__ in .rodata, so the strip before the package is built
cannot reach it and the module ships it.

Map STAGING_DIR as well. Keep the staging_dir element in the replacement:
the last element of STAGING_DIR and of BUILD_DIR carry the same name, so
the bare name would make the two roots indistinguishable. The map of
BUILD_DIR does not change, so only a path that leaks today changes.

Verified with the target compiler on a header below a mapped directory:
-ffile-prefix-map removes the absolute path from both __FILE__ and the
debug information, -fmacro-prefix-map removes it from __FILE__ alone. The
shipped half is __FILE__, so both variants cover it.

A local build of mt76 also holds nine staging paths, but those are debug
information: the build directory copy of mt76-connac-lib.ko is 653456
bytes with 13 debug sections and nine such paths, the shipped copy is
84688 bytes with none. They are named here so that the next reader does
not take them for the same defect.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:46:30 +0200</date><id>b06e5f3bf9246d5d299142f5a774497f07b8ec2d</id><msg>build: map the staging directory out of the compiler output</msg><path><editType>edit</editType><file>include/kernel.mk</file></path><path><editType>edit</editType><file>rules.mk</file></path><path><editType>edit</editType><file>include/package.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>toolchain/gcc/common.mk</affectedPath><commitId>fa081cadb824d6b104386471eaecb217b665a9a9</commitId><timestamp>1790095590000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>toolchain: keep the build path out of the target libraries

gcc builds the target libraries with CFLAGS_FOR_TARGET, which carries no
prefix map. __FILE__ therefore expands to an absolute path, and assert in
libstdc++ and the ryu code put seven of them into .rodata, where the strip
before packaging cannot reach them. The libstdcpp6 package differs between
two builds in different directories, and so does every image that ships it.

The published package shows the same thing. libstdcpp6-14.4.0-r5.apk of
bcm47xx/mips74k holds
/builder/shared-workdir/build/build_dir/toolchain-mipsel_74kc_gcc-14.4.0_musl/gcc-14.4.0/libstdc++-v3/src/c++11/debug.cc
so no rebuild of that package can match today.

iremap is called with BUILD_DIR for the kernel, with PKG_BUILD_DIR for a
package and with STAGING_DIR for the target headers. The toolchain build
directory has no such call. Add one for the three FOR_TARGET flag sets.

The replacement keeps the build_dir element, because the last element of
the toolchain build directory and of the toolchain staging directory is
the same string and one replacement for both would make the two roots
indistinguishable.

Tested with two bcm47xx/mips74k trees whose directory names differ in
length. The shipped libstdc++.so.6.0.33 holds no absolute path any more
and the libstdcpp6 package is now identical in both trees. It differed by
165 bytes before.

The toolchain staging directory still appears in the debug information of
the same library, 244 times. Those are DWARF include directories, they do
not survive the strip, and no shipped file carries them.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:46:30 +0200</date><id>fa081cadb824d6b104386471eaecb217b665a9a9</id><msg>toolchain: keep the build path out of the target libraries</msg><path><editType>edit</editType><file>toolchain/gcc/common.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/boot/uboot-lantiq/Makefile</affectedPath><affectedPath>package/boot/uboot-lantiq/patches/201-Makefile-honour-SOURCE_DATE_EPOCH.patch</affectedPath><commitId>b1aa81b442ba95273304ff9d060775b3617c37cf</commitId><timestamp>1790095590000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>uboot-lantiq: use a reproducible build timestamp

u-boot 2013.10 builds timestamp_autogenerated.h with a bare date call, so
U_BOOT_DATE and U_BOOT_TIME hold the wall clock and the banner of every
image changes on each build:

  U-Boot 2013.10-openwrt4 (Sep 21 2026 - 20:47:50) ARV7506PW11

Add a patch that uses SOURCE_DATE_EPOCH when the environment provides it,
which the build already exports, and keeps the wall clock otherwise. Later
u-boot versions do the same in their own timestamp rule, which is why only
this package needs the change.

Found with two lantiq/xway trees whose directory names differ in length.
Three bytes of u-boot.bin differed, all inside the banner. After the
change the three u-boot images of arv7506pw11 are identical in both trees
and the banner follows the source date.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:46:30 +0200</date><id>b1aa81b442ba95273304ff9d060775b3617c37cf</id><msg>uboot-lantiq: use a reproducible build timestamp</msg><path><editType>edit</editType><file>package/boot/uboot-lantiq/Makefile</file></path><path><editType>add</editType><file>package/boot/uboot-lantiq/patches/201-Makefile-honour-SOURCE_DATE_EPOCH.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/kernel-defaults.mk</affectedPath><affectedPath>include/rootfs.mk</affectedPath><commitId>3a16a57c08e9b6dcfcccf9a5eb611c79eadff2c9</commitId><timestamp>1790095590000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>kernel: keep /init out of the root filesystem images

The initramfs step copied /init into the root filesystem directory and
never removed it again. With CONFIG_TARGET_PER_DEVICE_ROOTFS the
initramfs kernel and the rootfs image of a device come from that same
directory. Nothing orders the two steps, so /init entered the squashfs
image or not, depending on which step ran first. The reproducible build
service reports this as a difference between the published image and a
rebuild.

Add /init to the initramfs from outside the root filesystem instead. A
built in initramfs gets it through a gen_init_cpio list file. A separate
cpio gets it appended to the finished archive. The mode is now fixed at
0755 and no longer follows the umask of the checkout.

The initramfs step also normalised the mtime of the root filesystem
directory. Do that in prepare_rootfs, so no step writes to the directory
after the image build can start.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 18:46:30 +0200</date><id>3a16a57c08e9b6dcfcccf9a5eb611c79eadff2c9</id><msg>kernel: keep /init out of the root filesystem images</msg><path><editType>edit</editType><file>include/kernel-defaults.mk</file></path><path><editType>edit</editType><file>include/rootfs.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/boot/arm-trusted-firmware-microchipsw/Makefile</affectedPath><commitId>d15fd263f7214f9b71121039f871cb94ae4f9ced</commitId><timestamp>1790098675000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>boot: arm-trusted-firmware-microchipsw: update to v2.8.17-mchp4

Microchip has fixed various issues since the last update, so update TF-A.

Signed-off-by: Robert Marko &lt;robert.marko@sartura.hr&gt;
</comment><date>2026-09-22 19:37:55 +0200</date><id>d15fd263f7214f9b71121039f871cb94ae4f9ced</id><msg>boot: arm-trusted-firmware-microchipsw: update to v2.8.17-mchp4</msg><path><editType>edit</editType><file>package/boot/arm-trusted-firmware-microchipsw/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/boot/arm-trusted-firmware-microchipsw/patches/0004-microchip-lan969x-do-not-rely-on-Ruby-shebang.patch</affectedPath><affectedPath>package/boot/arm-trusted-firmware-microchipsw/patches/0004-plat-microchip-convert-FWU-scripts-to-Python.patch</affectedPath><affectedPath>package/boot/arm-trusted-firmware-microchipsw/Makefile</affectedPath><commitId>b24e4338646f62c6dd8d138d41ced466362911cf</commitId><timestamp>1790098675000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>boot: arm-trusted-firmware-microchipsw: convert FWU scripts to Python

Currently, we depend on building the host Ruby support just for the two
FWU scripts that are written in Ruby.

Use Codex 5.6 to convert the scripts to Python and drop Ruby dependency.

Signed-off-by: Robert Marko &lt;robert.marko@sartura.hr&gt;
</comment><date>2026-09-22 19:37:55 +0200</date><id>b24e4338646f62c6dd8d138d41ced466362911cf</id><msg>boot: arm-trusted-firmware-microchipsw: convert FWU scripts to Python</msg><path><editType>delete</editType><file>package/boot/arm-trusted-firmware-microchipsw/patches/0004-microchip-lan969x-do-not-rely-on-Ruby-shebang.patch</file></path><path><editType>add</editType><file>package/boot/arm-trusted-firmware-microchipsw/patches/0004-plat-microchip-convert-FWU-scripts-to-Python.patch</file></path><path><editType>edit</editType><file>package/boot/arm-trusted-firmware-microchipsw/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/system/procd/Makefile</affectedPath><affectedPath>package/system/procd/files/uxc.sh</affectedPath><commitId>56d9cd66a8ec84989618f3fea76e429c2d2eeda5</commitId><timestamp>1790100067000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/daniel</absoluteUrl><fullName>daniel</fullName></author><authorEmail>daniel@makrotopia.org</authorEmail><comment>procd: update to git HEAD of 2026-09-22

Various bug fixes and container runtime improvements.

Fixes: #25277 (at least)
Signed-off-by: Daniel Golle &lt;daniel@makrotopia.org&gt;
</comment><date>2026-09-22 19:01:07 +0100</date><id>56d9cd66a8ec84989618f3fea76e429c2d2eeda5</id><msg>procd: update to git HEAD of 2026-09-22</msg><path><editType>edit</editType><file>package/system/procd/Makefile</file></path><path><editType>edit</editType><file>package/system/procd/files/uxc.sh</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>tools/lzma/Makefile</affectedPath><affectedPath>tools/mkimage/Makefile</affectedPath><affectedPath>tools/mtools/Makefile</affectedPath><commitId>0f05c481fd445d49fdea6962952a84d53d03da1c</commitId><timestamp>1790101799000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>tools: pass the job server to the compile step of mtools, mkimage and lzma

host-build.mk clears MAKEFLAGS, so a custom Host/Compile that runs a bare
$(MAKE) builds with one job, whatever HOST_BUILD_PARALLEL says. mtools
sets the flag, but its compile step never used it.

Each of the three now passes $(HOST_JOBS), and mkimage and lzma set
HOST_BUILD_PARALLEL:

  mkimage  11.7 s -&gt; 7.2 s
  mtools    8.3 s -&gt; 4.8 s
  lzma      4.0 s -&gt; 1.8 s

Each one builds five times out of five with the job server, and each
build installs files that are identical to those of a serial build.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 20:29:59 +0200</date><id>0f05c481fd445d49fdea6962952a84d53d03da1c</id><msg>tools: pass the job server to the compile step of mtools, mkimage and lzma</msg><path><editType>edit</editType><file>tools/mtools/Makefile</file></path><path><editType>edit</editType><file>tools/lzma/Makefile</file></path><path><editType>edit</editType><file>tools/mkimage/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>tools/make-ext4fs/Makefile</affectedPath><affectedPath>tools/automake/Makefile</affectedPath><affectedPath>tools/dosfstools/Makefile</affectedPath><affectedPath>tools/autoconf/Makefile</affectedPath><affectedPath>tools/libtool/Makefile</affectedPath><commitId>c3447b76fe2c76e1eedf4fca0a8955a8cb568677</commitId><timestamp>1790101799000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>tools: build autoconf, automake, libtool, dosfstools and make-ext4fs in parallel

  libtool      22.5 s -&gt; 20.0 s
  dosfstools    6.0 s -&gt;  4.8 s
  make-ext4fs   2.1 s -&gt;  1.2 s
  automake      3.9 s -&gt;  3.4 s
  autoconf      3.1 s -&gt;  2.6 s

Each one builds five times out of five with the job server, and each
build installs files that are identical to those of a serial build.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 20:29:59 +0200</date><id>c3447b76fe2c76e1eedf4fca0a8955a8cb568677</id><msg>tools: build autoconf, automake, libtool, dosfstools and make-ext4fs in parallel</msg><path><editType>edit</editType><file>tools/autoconf/Makefile</file></path><path><editType>edit</editType><file>tools/automake/Makefile</file></path><path><editType>edit</editType><file>tools/libtool/Makefile</file></path><path><editType>edit</editType><file>tools/make-ext4fs/Makefile</file></path><path><editType>edit</editType><file>tools/dosfstools/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>tools/sparse/Makefile</affectedPath><commitId>37f7186e75b0af0a1338fd6625f3f3881c2fce01</commitId><timestamp>1790101799000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>tools/sparse: build in parallel

sparse set PKG_BUILD_PARALLEL, which a host build does not read, so it
built with one job. Use HOST_BUILD_PARALLEL: 6.6 s -&gt; 1.3 s.

It builds five times out of five with the job server, and each build
installs files that are identical to those of a serial build.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 20:29:59 +0200</date><id>37f7186e75b0af0a1338fd6625f3f3881c2fce01</id><msg>tools/sparse: build in parallel</msg><path><editType>edit</editType><file>tools/sparse/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/site/cache</affectedPath><affectedPath>rules.mk</affectedPath><commitId>18a2ea702cf3111a21deed641f946d31f4e09018</commitId><timestamp>1790101799000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>build: start the configure cache cold when its answers may be stale

Three cases kept a cached answer that no longer held:

A new configure script. A package with an autoreconf fixup regenerates
configure with the staged autoconf, automake and libtool, and a new
version of one of them can change what a cache variable means. The site
script now keeps a checksum of configure beside the cache and drops the
cache when the checksum changes. A new patch to configure is covered too.

A changed precious variable. configure aborts when LIBS, CPP or another
precious variable differs from the value in the cache, and because
nothing removes the cache, it aborts on every later run as well:

  configure: error: 'LIBS' was not set in the previous run
  configure: error: changes in the environment can compromise the build

The site script now makes the same comparison before configure does and
drops the cache on a difference.

Paths under other names. The libtool answers lt_cv_path_*, acl_cv_path_*
and lt_cv_sys_global_symbol_*, and gmp_cv_prog_m4, hold the path of a
system tool or of the staged sed and m4, and survived a wipe of
staging_dir. The site script now drops them with the ac_cv_path_ answers.

m4 and gmp still configure the same way with a warm cache as they do
without one, and still read it: the m4 configure stage takes 1.5 s warm
against 23 s cold.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 20:29:59 +0200</date><id>18a2ea702cf3111a21deed641f946d31f4e09018</id><msg>build: start the configure cache cold when its answers may be stale</msg><path><editType>edit</editType><file>include/site/cache</file></path><path><editType>edit</editType><file>rules.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>tools/bc/Makefile</affectedPath><affectedPath>tools/mtools/Makefile</affectedPath><affectedPath>tools/expat/Makefile</affectedPath><affectedPath>tools/xz/Makefile</affectedPath><affectedPath>tools/libressl/Makefile</affectedPath><affectedPath>tools/flex/Makefile</affectedPath><affectedPath>tools/libtool/Makefile</affectedPath><affectedPath>tools/gengetopt/Makefile</affectedPath><affectedPath>tools/fakeroot/Makefile</affectedPath><affectedPath>tools/mtd-utils/Makefile</affectedPath><affectedPath>tools/dosfstools/Makefile</affectedPath><commitId>6eae1d6b772eeb012046f64be83ecf9ea5ef7514</commitId><timestamp>1790101799000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></author><authorEmail>john@phrozen.org</authorEmail><comment>tools: cache the configure results of eleven more autotools tools

Configure stage without a cache against a warm cache:

  mtools      3.34 s -&gt; 0.28 s
  gengetopt   4.39 s -&gt; 2.13 s
  fakeroot   10.97 s -&gt; 8.73 s
  xz          4.32 s -&gt; 2.17 s
  libressl    3.07 s -&gt; 1.46 s
  flex       12.32 s -&gt; 10.98 s
  expat       2.74 s -&gt; 1.52 s
  bc          1.34 s -&gt; 0.38 s
  dosfstools  3.13 s -&gt; 2.54 s
  libtool     2.86 s -&gt; 2.29 s
  mtd-utils   4.06 s -&gt; 3.56 s

flex, fakeroot, dosfstools and mtd-utils run autoreconf in the same
stage, and the cache does not reach that part.

Each of the eleven configures the same way with a warm cache as it does
without one: the check configures three times, without a cache, with a
cold cache and with a warm cache, and every generated file of the first
and the last run is identical. A static scan of each configure script
found no cache check that changes CFLAGS, CPPFLAGS, LDFLAGS or LIBS
without restoring it.

patchelf, mklibs and automake pass the same check but gain less than
half a second, so they stay out.

make world after make tools/clean now takes 121 s against 177 s with
cold caches.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</comment><date>2026-09-22 20:29:59 +0200</date><id>6eae1d6b772eeb012046f64be83ecf9ea5ef7514</id><msg>tools: cache the configure results of eleven more autotools tools</msg><path><editType>edit</editType><file>tools/mtools/Makefile</file></path><path><editType>edit</editType><file>tools/xz/Makefile</file></path><path><editType>edit</editType><file>tools/libressl/Makefile</file></path><path><editType>edit</editType><file>tools/dosfstools/Makefile</file></path><path><editType>edit</editType><file>tools/flex/Makefile</file></path><path><editType>edit</editType><file>tools/gengetopt/Makefile</file></path><path><editType>edit</editType><file>tools/fakeroot/Makefile</file></path><path><editType>edit</editType><file>tools/mtd-utils/Makefile</file></path><path><editType>edit</editType><file>tools/expat/Makefile</file></path><path><editType>edit</editType><file>tools/libtool/Makefile</file></path><path><editType>edit</editType><file>tools/bc/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/generic/pending-6.18/304-LoongArch-vdso-keep-the-prefix-map-flags.patch</affectedPath><affectedPath>target/linux/generic/pending-6.12/304-LoongArch-vdso-keep-the-prefix-map-flags.patch</affectedPath><commitId>67fcd3e5698a2dbf3d71068fce2dcfacc3a3109d</commitId><timestamp>1790106068000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>generic: refresh the LoongArch vDSO prefix map patch

The patch ends in an empty line where quilt writes a context line
holding a single space, so `make target/linux/refresh` rewrites it
and the kernel patch check fails on every target.

Fixes: 115209aa225a ("kernel: make the LoongArch vDSO build id independent of the build path")
Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Julius Bairaktaris &lt;julius@bairaktaris.de&gt;
Link: https://github.com/openwrt/openwrt/pull/25333
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-22 21:41:08 +0200</date><id>67fcd3e5698a2dbf3d71068fce2dcfacc3a3109d</id><msg>generic: refresh the LoongArch vDSO prefix map patch</msg><path><editType>edit</editType><file>target/linux/generic/pending-6.18/304-LoongArch-vdso-keep-the-prefix-map-flags.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.12/304-LoongArch-vdso-keep-the-prefix-map-flags.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/ath79/image/generic.mk</affectedPath><affectedPath>target/linux/ath79/generic/config-default</affectedPath><commitId>2e5345462eeb203b54d2805b388cae271041b8a5</commitId><timestamp>1790109688000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>ath79: use module for Fritz 300E

The generic config builds CONFIG_INTEL_XWAY_PHY for all devices while
only a single one uses it. Avoid bloating the kernel by using the module
for the only device that uses this PHY.

Signed-off-by: Rosen Penev &lt;rosenp@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25294
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-22 22:41:28 +0200</date><id>2e5345462eeb203b54d2805b388cae271041b8a5</id><msg>ath79: use module for Fritz 300E</msg><path><editType>edit</editType><file>target/linux/ath79/generic/config-default</file></path><path><editType>edit</editType><file>target/linux/ath79/image/generic.mk</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/ath79/dts/qca9558_tplink_archer-c.dtsi</affectedPath><affectedPath>target/linux/ath79/generic/base-files/etc/board.d/05_compat-version</affectedPath><affectedPath>target/linux/ath79/generic/base-files/etc/board.d/02_network</affectedPath><affectedPath>target/linux/ath79/image/generic-tp-link.mk</affectedPath><commitId>7d1c5a68e534652378cd14e2ef8f9732567a2a69</commitId><timestamp>1790109798000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>ath79: convert qca9558_tplink_archer-c.dtsi to swconfig

This reverts commit 487ff3cfa03771102c18a987acd83f8ea020e5e3.

Three problems:

CONFIG_AR8216_PHY is enabled and to stop it from interfering and
crashing on boot, internal MDIO needs to be used.

Once internal MDIO gets used, ports end up dying even in the absence of
traffic. This is currently believed to be an issue with qca,qca8327
specifically. There are no reports of qca,qca8337 behaving badly.

Routing speed with DSA becomes much slower. Gigabit routing is no longer
doable, even with flow offload. This needs further research.

Signed-off-by: Rosen Penev &lt;rosenp@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25308
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-22 22:43:18 +0200</date><id>7d1c5a68e534652378cd14e2ef8f9732567a2a69</id><msg>ath79: convert qca9558_tplink_archer-c.dtsi to swconfig</msg><path><editType>delete</editType><file>target/linux/ath79/generic/base-files/etc/board.d/05_compat-version</file></path><path><editType>edit</editType><file>target/linux/ath79/generic/base-files/etc/board.d/02_network</file></path><path><editType>edit</editType><file>target/linux/ath79/image/generic-tp-link.mk</file></path><path><editType>edit</editType><file>target/linux/ath79/dts/qca9558_tplink_archer-c.dtsi</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/network/utils/comgt/Makefile</affectedPath><affectedPath>package/network/utils/comgt/files/ncm.json</affectedPath><commitId>19ff245b9233060bcbf55ec50cc3086d4348b72c</commitId><timestamp>1790111268000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>comgt: add ncm support for Fibocom FG621-EA modem

Add a vendor profile for Fibocom modems so that proto ncm can drive them.
Without it ncm.sh reports UNSUPPORTED_MODEM, as the manufacturer string
returned by AT+CGMI has no matching key in ncm.json.

The FG621-EA is used in the ASUS 4G-AX56 and the TP-Link TL-MR500 v1. The
profile keys off the manufacturer string rather than any particular board,
so it applies to Fibocom NCM modems generally.

ncm.json is installed by comgt-ncm, so bump PKG_RELEASE to make sure
existing installations pick up the new vendor profile on upgrade.

This change originates from PR #19793 by kddred, open in draft since
August 2025 without review. The original commit is authored and signed
off with a GitHub noreply address, which the commit formality check
rejects, so it could not be carried unmodified, and kddred has not been
active since August 2025. Authorship is reassigned for that reason alone;
the work is theirs. Happy to restore the original authorship if a usable
address becomes available.

Tested on an ASUS 4G-AX56 (HW rev A1) on both main and openwrt-25.12.

Link: https://github.com/openwrt/openwrt/pull/19793
Signed-off-by: Fredrik Hallin &lt;fredappsdev@outlook.com&gt;
Link: https://github.com/openwrt/openwrt/pull/24974
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-22 23:07:48 +0200</date><id>19ff245b9233060bcbf55ec50cc3086d4348b72c</id><msg>comgt: add ncm support for Fibocom FG621-EA modem</msg><path><editType>edit</editType><file>package/network/utils/comgt/files/ncm.json</file></path><path><editType>edit</editType><file>package/network/utils/comgt/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/patches-6.18/040-v7.4-spi-realtek-rtl-add-support-for-second-CS.patch</affectedPath><commitId>c09e3f28ba110394a1aa4b765d73a4b53e7c90b6</commitId><timestamp>1790149366000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>realtek: spi: backport patch to support second SPI CS

Backports an accepted upstream patch targeted for 7.4 to extend the
Realtek SPI driver with support for the second CS. Though no devices
made use of this so far, further devices may do so.

Link: https://github.com/openwrt/openwrt/pull/25334
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-23 09:42:46 +0200</date><id>c09e3f28ba110394a1aa4b765d73a4b53e7c90b6</id><msg>realtek: spi: backport patch to support second SPI CS</msg><path><editType>add</editType><file>target/linux/realtek/patches-6.18/040-v7.4-spi-realtek-rtl-add-support-for-second-CS.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>tools/yafut/patches/100-honour-SOURCE_DATE_EPOCH.patch</affectedPath><commitId>d5c26afe3336e6a2602f3f90e62dff5f4ec81b84</commitId><timestamp>1790157519000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/nbd</absoluteUrl><fullName>nbd</fullName></author><authorEmail>nbd@nbd.name</authorEmail><comment>tools/yafut: refresh patch

Refresh 100-honour-SOURCE_DATE_EPOCH.patch

Signed-off-by: Felix Fietkau &lt;nbd@nbd.name&gt;
</comment><date>2026-09-23 11:58:39 +0200</date><id>d5c26afe3336e6a2602f3f90e62dff5f4ec81b84</id><msg>tools/yafut: refresh patch</msg><path><editType>edit</editType><file>tools/yafut/patches/100-honour-SOURCE_DATE_EPOCH.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/qualcommax/dts/ipq6018-mr7500.dts</affectedPath><commitId>fa6c94b6e963e5c043da208eb9661240fe346593</commitId><timestamp>1790163445000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>qualcommax: ipq60xx: add AQR114C reset delays for MR7500

The AQR114C requires time after reset deassertion before it is
ready to respond on the MDIO bus. Add reset-assert-us and
reset-deassert-us to ensure reliable PHY enumeration on boot.

Signed-off-by: Ross Barnes-Brown &lt;true.robot.ross@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/24055
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-23 13:37:25 +0200</date><id>fa6c94b6e963e5c043da208eb9661240fe346593</id><msg>qualcommax: ipq60xx: add AQR114C reset delays for MR7500</msg><path><editType>edit</editType><file>target/linux/qualcommax/dts/ipq6018-mr7500.dts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/boot/uboot-microchipsw/patches/0007-mmc-atmel-sdhci-add-support-for-LAN969x.patch</affectedPath><affectedPath>package/boot/uboot-microchipsw/src/board/microchip/lan969x/lan969x.env</affectedPath><affectedPath>package/boot/uboot-microchipsw/patches/0002-pinctrl-add-Microchip-LAN969x-driver.patch</affectedPath><affectedPath>package/boot/uboot-microchipsw/patches/0013-net-phy-add-Microchip-LAN8841-support.patch</affectedPath><affectedPath>package/boot/uboot-microchipsw/patches/0008-i2c-at91-i2c-include-arch-specific-clk.h-only-for-AT.patch</affectedPath><affectedPath>package/boot/uboot-microchipsw/patches/0010-usb-dwc3-generic-add-support-for-Microchip-LAN969x.patch</affectedPath><affectedPath>package/boot/uboot-microchipsw/patches/0006-mmc-atmel-sdhci-include-arch-specific-clk.h-only-for.patch</affectedPath><affectedPath>package/boot/uboot-microchipsw/patches/0003-clk-add-Microchip-LAN966x-and-LAN969x-support.patch</affectedPath><affectedPath>package/boot/uboot-microchipsw/patches/0011-spi-atmel-quadspi-add-Microchip-LAN969x-support.patch</affectedPath><affectedPath>package/boot/uboot-microchipsw/patches/0017-cmd-add-imsz-and-imszb.patch</affectedPath><affectedPath>package/boot/uboot-microchipsw/patches/200-cmd-add-imsz-and-imszb.patch</affectedPath><affectedPath>package/boot/uboot-microchipsw/patches/0005-mmc-atmel-sdhci-set-GCK-rate-based-on-compatible.patch</affectedPath><affectedPath>package/boot/uboot-microchipsw/patches/0004-mmc-atmel-remove-duplicate-depends-on-ARCH_AT91.patch</affectedPath><affectedPath>package/boot/uboot-microchipsw/patches/0014-arch-arm-add-Microchip-LAN969x-support.patch</affectedPath><affectedPath>package/boot/uboot-microchipsw/patches/0016-microchip-lan969x-add-OpenWrt-default-environment.patch</affectedPath><affectedPath>package/boot/uboot-microchipsw/patches/0012-net-add-Microchip-SparX-5-and-LAN969x-support.patch</affectedPath><affectedPath>package/boot/uboot-microchipsw/patches/0015-arm-microchipsw-add-Novarq-Tactical-1000.patch</affectedPath><affectedPath>package/boot/uboot-microchipsw/Makefile</affectedPath><affectedPath>package/boot/uboot-microchipsw/patches/0001-serial-atmel-usart-allow-selecting-from-ARCH_MICROCH.patch</affectedPath><affectedPath>package/boot/uboot-microchipsw/patches/0009-i2c-i2c-at91-allow-selecting-from-ARCH_MICROCHIPSW.patch</affectedPath><commitId>1f89cfd70159a3ff9ecf62fc5bcb3455abcba88c</commitId><timestamp>1790168948000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robert.marko</absoluteUrl><fullName>robert.marko</fullName></author><authorEmail>robert.marko@sartura.hr</authorEmail><comment>boot: uboot-microchipsw: use mainline U-Boot

Use mainline U-Boot with pending patches for LAN969x instead of the
old vendor U-Boot.

Both existing boards are supported.

Signed-off-by: Robert Marko &lt;robert.marko@sartura.hr&gt;
</comment><date>2026-09-23 15:09:08 +0200</date><id>1f89cfd70159a3ff9ecf62fc5bcb3455abcba88c</id><msg>boot: uboot-microchipsw: use mainline U-Boot</msg><path><editType>add</editType><file>package/boot/uboot-microchipsw/patches/0002-pinctrl-add-Microchip-LAN969x-driver.patch</file></path><path><editType>add</editType><file>package/boot/uboot-microchipsw/patches/0011-spi-atmel-quadspi-add-Microchip-LAN969x-support.patch</file></path><path><editType>add</editType><file>package/boot/uboot-microchipsw/patches/0001-serial-atmel-usart-allow-selecting-from-ARCH_MICROCH.patch</file></path><path><editType>add</editType><file>package/boot/uboot-microchipsw/patches/0005-mmc-atmel-sdhci-set-GCK-rate-based-on-compatible.patch</file></path><path><editType>add</editType><file>package/boot/uboot-microchipsw/patches/0013-net-phy-add-Microchip-LAN8841-support.patch</file></path><path><editType>delete</editType><file>package/boot/uboot-microchipsw/src/board/microchip/lan969x/lan969x.env</file></path><path><editType>add</editType><file>package/boot/uboot-microchipsw/patches/0006-mmc-atmel-sdhci-include-arch-specific-clk.h-only-for.patch</file></path><path><editType>add</editType><file>package/boot/uboot-microchipsw/patches/0008-i2c-at91-i2c-include-arch-specific-clk.h-only-for-AT.patch</file></path><path><editType>add</editType><file>package/boot/uboot-microchipsw/patches/0009-i2c-i2c-at91-allow-selecting-from-ARCH_MICROCHIPSW.patch</file></path><path><editType>add</editType><file>package/boot/uboot-microchipsw/patches/0007-mmc-atmel-sdhci-add-support-for-LAN969x.patch</file></path><path><editType>add</editType><file>package/boot/uboot-microchipsw/patches/0016-microchip-lan969x-add-OpenWrt-default-environment.patch</file></path><path><editType>add</editType><file>package/boot/uboot-microchipsw/patches/0014-arch-arm-add-Microchip-LAN969x-support.patch</file></path><path><editType>add</editType><file>package/boot/uboot-microchipsw/patches/0003-clk-add-Microchip-LAN966x-and-LAN969x-support.patch</file></path><path><editType>add</editType><file>package/boot/uboot-microchipsw/patches/0010-usb-dwc3-generic-add-support-for-Microchip-LAN969x.patch</file></path><path><editType>add</editType><file>package/boot/uboot-microchipsw/patches/0015-arm-microchipsw-add-Novarq-Tactical-1000.patch</file></path><path><editType>add</editType><file>package/boot/uboot-microchipsw/patches/0012-net-add-Microchip-SparX-5-and-LAN969x-support.patch</file></path><path><editType>delete</editType><file>package/boot/uboot-microchipsw/patches/200-cmd-add-imsz-and-imszb.patch</file></path><path><editType>edit</editType><file>package/boot/uboot-microchipsw/Makefile</file></path><path><editType>add</editType><file>package/boot/uboot-microchipsw/patches/0017-cmd-add-imsz-and-imszb.patch</file></path><path><editType>add</editType><file>package/boot/uboot-microchipsw/patches/0004-mmc-atmel-remove-duplicate-depends-on-ARCH_AT91.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>tools/cmake/Makefile</affectedPath><affectedPath>tools/cmake/patches/150-zstd-libarchive.patch</affectedPath><commitId>ad71bfef7e5c1c4e1579f6469110babb7e973d9b</commitId><timestamp>1790169479000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>tools/cmake: pass zstd paths to bootstrap

Instead of carrying a patch (150-zstd-libarchive.patch) that modifies
Utilities/cmlibarchive/CMakeLists.txt to enable pkg-config search for
zstd, pass explicit staging library and include paths (-DZSTD_INCLUDE_DIR
and -DZSTD_LIBRARY) directly to CMake's bootstrap script.

ZSTD_INCLUDE_DIR and ZSTD_LIBRARY are the cache variables CMake itself
sets when --system-zstd is not used, so pre-seeding them guarantees that
CMake always links against OpenWrt's staging libzstd without requiring
a patch.

Fixes: 0e3d51ccaedf ("tools/cmake: fix compilation with host libzstd-dev")
Suggested-by: Michael Pratt &lt;mcpratt@pm.me&gt;
Signed-off-by: Josef Schlehofer &lt;pepe.schlehofer@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/24407
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-23 15:17:59 +0200</date><id>ad71bfef7e5c1c4e1579f6469110babb7e973d9b</id><msg>tools/cmake: pass zstd paths to bootstrap</msg><path><editType>edit</editType><file>tools/cmake/Makefile</file></path><path><editType>delete</editType><file>tools/cmake/patches/150-zstd-libarchive.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>include/cmake.mk</affectedPath><affectedPath>tools/cmake/patches/100-no-testing.patch</affectedPath><affectedPath>tools/cmake/Makefile</affectedPath><commitId>ddb23f3a0223d1280bd674ea7fe4b1dedde22997</commitId><timestamp>1790173765000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>tools/cmake: pass -DBUILD_TESTING=OFF to bootstrap

Instead of carrying 100-no-testing.patch, pass -DBUILD_TESTING=OFF
directly to CMake's bootstrap script. This avoids refreshing the patch
on every CMake update.

The patch also changed the default in the installed CTest.cmake module.
Preserve that behavior by passing -DBUILD_TESTING=OFF by default in
cmake.mk for target and host builds. Packages can override it via
CMAKE_OPTIONS or CMAKE_HOST_OPTIONS.

OpenWrt never runs CMake tests, so building them only wastes build time.

This replaces the patch introduced in 8af80e79bd5b ("tools/cmake:
update to 3.17.0").

Signed-off-by: Josef Schlehofer &lt;pepe.schlehofer@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/24403
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-23 16:29:25 +0200</date><id>ddb23f3a0223d1280bd674ea7fe4b1dedde22997</id><msg>tools/cmake: pass -DBUILD_TESTING=OFF to bootstrap</msg><path><editType>edit</editType><file>tools/cmake/Makefile</file></path><path><editType>edit</editType><file>include/cmake.mk</file></path><path><editType>delete</editType><file>tools/cmake/patches/100-no-testing.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>tools/cmake/Makefile</affectedPath><commitId>e4f2ae3b8d797395f4763cb6d225911795a992ec</commitId><timestamp>1790175463000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>tools/cmake: pass testing option after bootstrap separator

Host/Configure/Default supplies the bootstrap "--" separator before
CMAKE_HOST_OPTIONS. Keep BUILD_TESTING with the CMake cache options so
it is passed after that separator, without introducing a second one.

Fixes: ddb23f3a0223d ("tools/cmake: pass -DBUILD_TESTING=OFF to bootstrap")
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-23 16:57:43 +0200</date><id>e4f2ae3b8d797395f4763cb6d225911795a992ec</id><msg>tools/cmake: pass testing option after bootstrap separator</msg><path><editType>edit</editType><file>tools/cmake/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/devel/valgrind/Makefile</affectedPath><commitId>da415b6a69ebd98a5a58cceb058dd8273475c6d7</commitId><timestamp>1790175721000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></author><authorEmail>robimarko@gmail.com</authorEmail><comment>valgrind: fix ARMv7 detection on AArch64

The mvebu target enables CONFIG_CPU_V7 even for AArch64 subtargets,
which also causes CONFIG_arm_v7 to be set. This makes Valgrind use
the ARMv7 configure host triplet on AArch64, breaking the build.

Only apply the ARMv7 host override when ARCH is arm.

Signed-off-by: Tianling Shen &lt;cnsztl@immortalwrt.org&gt;
Link: https://github.com/openwrt/openwrt/pull/25346
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</comment><date>2026-09-23 17:02:01 +0200</date><id>da415b6a69ebd98a5a58cceb058dd8273475c6d7</id><msg>valgrind: fix ARMv7 detection on AArch64</msg><path><editType>edit</editType><file>package/devel/valgrind/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/patches-6.18/024-02-v7.1-net-phy-realtek-add-RTL8224-pair-order-support.patch</affectedPath><affectedPath>target/linux/realtek/patches-6.18/743-net-realtek-serdes-configuration.patch</affectedPath><affectedPath>target/linux/realtek/patches-6.18/024-04-v7.1-net-phy-realtek-add-RTL8224-polarity-support.patch</affectedPath><affectedPath>target/linux/realtek/patches-6.18/030-v7.2-net-phy-realtek-support-MDI-swapping-for-RTL8226-CG.patch</affectedPath><affectedPath>target/linux/generic/pending-6.18/743-net-phy-realtek-reset-RTL8261N-USXGMII-SerDes-on-lin.patch</affectedPath><affectedPath>target/linux/generic/pending-6.18/742-net-phy-realtek-add-5G-and-10G-PHY-support.patch</affectedPath><commitId>76da1ee259c5804e105c3f044fcf94833608b227</commitId><timestamp>1790184476000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>generic: harden RTL826x PHY match, EEE and soft-reset

Require PKG_MODEL 0x8261 for RTL8261BE/N probe matching.  Extend
EEE disable in rtl826x_probe() to multi-G speeds for PHYs without
a device-tree node (e.g. SFP cage modules).  Wait the datasheet t7
minimum (150 ms) after MMD30 soft-reset before applying firmware
patches.

Fixes 10G link flapping on Spectrum SBE1V1K (RTL8261BE).

Also exercised on BPi-R4 with a ZYOPM SFP+ RTL8261BE module.

Tested-by: Andrew LaMarche &lt;andrewjlamarche@gmail.com&gt;
Link: https://forum.openwrt.org/t/spectrum-sbe1v1k-ipq9574-openwrt-support/245244/190

Signed-off-by: Daniel Pawlik &lt;pawlik.dan@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/24887
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-23 19:27:56 +0200</date><id>76da1ee259c5804e105c3f044fcf94833608b227</id><msg>generic: harden RTL826x PHY match, EEE and soft-reset</msg><path><editType>edit</editType><file>target/linux/generic/pending-6.18/742-net-phy-realtek-add-5G-and-10G-PHY-support.patch</file></path><path><editType>edit</editType><file>target/linux/realtek/patches-6.18/030-v7.2-net-phy-realtek-support-MDI-swapping-for-RTL8226-CG.patch</file></path><path><editType>edit</editType><file>target/linux/realtek/patches-6.18/024-04-v7.1-net-phy-realtek-add-RTL8224-polarity-support.patch</file></path><path><editType>edit</editType><file>target/linux/generic/pending-6.18/743-net-phy-realtek-reset-RTL8261N-USXGMII-SerDes-on-lin.patch</file></path><path><editType>edit</editType><file>target/linux/realtek/patches-6.18/024-02-v7.1-net-phy-realtek-add-RTL8224-pair-order-support.patch</file></path><path><editType>edit</editType><file>target/linux/realtek/patches-6.18/743-net-realtek-serdes-configuration.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</affectedPath><commitId>cc83970a16200b453ae2363520151cad1e30ac9a</commitId><timestamp>1790184620000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>realtek: pcs: rtl93xx: name common SerDes registers and fields

Document SerDes registers and fields shared by RTL930x and RTL931x.
Replace magic offsets and bit ranges at their call sites with the named
registers and field masks.

Link: https://github.com/openwrt/openwrt/pull/25314
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-23 19:30:20 +0200</date><id>cc83970a16200b453ae2363520151cad1e30ac9a</id><msg>realtek: pcs: rtl93xx: name common SerDes registers and fields</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</affectedPath><commitId>be387779344c4cecaae5b3382945e7f67618f583</commitId><timestamp>1790184621000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>realtek: pcs: rtl930x: name SerDes registers and fields

Document RTL930x SerDes registers and fields, then replace magic offsets
and bit ranges at their call sites. Use FIELD_PREP() where values need
positioning and named masks for field updates.

Link: https://github.com/openwrt/openwrt/pull/25314
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-23 19:30:21 +0200</date><id>be387779344c4cecaae5b3382945e7f67618f583</id><msg>realtek: pcs: rtl930x: name SerDes registers and fields</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</affectedPath><commitId>c1b568dbd7b297120e9df587acc56847c37159a3</commitId><timestamp>1790184621000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>realtek: pcs: rtl931x: name SerDes registers and fields

Document RTL931x SerDes registers and fields, then replace magic offsets
and bit ranges at their call sites. Use FIELD_PREP() where values need
positioning and named masks for field updates.

Link: https://github.com/openwrt/openwrt/pull/25314
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-23 19:30:21 +0200</date><id>c1b568dbd7b297120e9df587acc56847c37159a3</id><msg>realtek: pcs: rtl931x: name SerDes registers and fields</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</affectedPath><commitId>b532485b4e74cd6d112d7286a7068677080d9cde</commitId><timestamp>1790184621000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>realtek: pcs: rtl83xx: name the SerDes soft reset field

Document the common SerDes soft-reset register and field. Replace magic
register values in the RTL838x and RTL839x reset sequences with named,
SDK-style masked field updates. Merge the two sequences by dropping the
RTL839x-specific delay - which is unneeded according to the SDK - and
provide a combined helper.

Link: https://github.com/openwrt/openwrt/pull/25314
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-23 19:30:21 +0200</date><id>b532485b4e74cd6d112d7286a7068677080d9cde</id><msg>realtek: pcs: rtl83xx: name the SerDes soft reset field</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</affectedPath><commitId>4cf738158f88ad961a8873c79b1f25d8a633878a</commitId><timestamp>1790184622000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>realtek: pcs: rtl930x: simplify XSG writes

XSG fan-out is only required for the low digital pages on SerDes 2 and
3. Apply the analog configuration tables through the normal write path
and remove the now-unused XSG table helper.

Limit the XSG operation to its supported targets, reuse the normal
RTL930x write for the first SerDes, and derive the companion from the
existing physical mapping.

Link: https://github.com/openwrt/openwrt/pull/25314
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-23 19:30:22 +0200</date><id>4cf738158f88ad961a8873c79b1f25d8a633878a</id><msg>realtek: pcs: rtl930x: simplify XSG writes</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</affectedPath><commitId>76d313b2c60578948e68ec2994f671c7637243e3</commitId><timestamp>1790184622000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>realtek: pcs: rtl930x: coalesce TX amplitude updates

Program impedance, pre-amplitude, and post-amplitude in that order so
dependent enable state is not exposed before its coefficient.

Then update the main amplitude and both enable bits together. This
replaces three REG07 read-modify-write transactions with one.

Link: https://github.com/openwrt/openwrt/pull/25314
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-23 19:30:22 +0200</date><id>76d313b2c60578948e68ec2994f671c7637243e3</id><msg>realtek: pcs: rtl930x: coalesce TX amplitude updates</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</affectedPath><commitId>3c80700e134d75fdd16194ad51eb3ce693355056</commitId><timestamp>1790184622000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>realtek: pcs: rtl930x: coalesce RX VTH updates

The positive and negative VTH values occupy disjoint fields in the same
register. Combine them into one masked read-modify-write instead of
updating each field separately.

Link: https://github.com/openwrt/openwrt/pull/25314
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-23 19:30:22 +0200</date><id>3c80700e134d75fdd16194ad51eb3ce693355056</id><msg>realtek: pcs: rtl930x: coalesce RX VTH updates</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/bcm53xx/Makefile</affectedPath><commitId>d2a80cdbd8060f9ec4de36f19769274d2712114b</commitId><timestamp>1790189037000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>bcm53xx: switch to 6.18

Promote kernel 6.18 to the default KERNEL_PATCHVER for bcm53xx and
drop the KERNEL_TESTING_PATCHVER entry, since 6.18 is no longer the
testing kernel.

Signed-off-by: Rosen Penev &lt;rosenp@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25307
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-23 20:43:57 +0200</date><id>d2a80cdbd8060f9ec4de36f19769274d2712114b</id><msg>bcm53xx: switch to 6.18</msg><path><editType>edit</editType><file>target/linux/bcm53xx/Makefile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/bcm53xx/patches-6.12/321-v7.1-ARM-dts-BCM5301X-EA9200-add-USB-GPIOs.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/500-UBI-Detect-EOF-mark-and-erase-all-remaining-blocks.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/326-ARM-dts-BCM5301X-EA9200-use-network-LED-trigger.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/325-ARM-dts-BCM5301X-EA9200-set-MAC-from-nvram.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/314-ARM-dts-BCM5301X-EA6300-specify-switch.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/300-ARM-BCM5301X-Disable-MMU-and-Dcache-during-decompres.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/140-mtd-parsers-trx-parse-firmware-MTD-partitions-only.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/324-ARM-dts-BCM5301X-EA9200-add-wifi-definitions.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/304-ARM-dts-BCM5301X-Specify-switch-ports-for-remaining-.patch</affectedPath><affectedPath>target/linux/bcm53xx/config-6.12</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/050-v6.13-ARM-dts-meraki-mr26-set-mac-address-for-gmac0.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/320-v7.1-ARM-dts-BCM5301X-EA9200-add-WiFi-button.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/352-ARM-dts-BCM5301X-EA9200-fix-nvram-size.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/360-v7.2-ARM-dts-BCM5301X-R6300v2-fix-USB3.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/323-v7.1-ARM-dts-BCM5301X-EA9200-specify-partitions.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/349-v7.1-ARM-dts-BCM5301X-Describe-PCIe-controllers-fully.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/312-v7.1-ARM-dts-BCM5301X-panamera-set-WAN-MAC-from-nvram.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/340-meraki-mx6x-mac-base.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/315-ARM-dts-BCM5301X-phicomm-k3-specify-switch.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/322-v7.1-ARM-dts-BCM5301X-EA9200-add-LEDs.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/313-ARM-dts-BCM5301X-AC87U-specify-switch.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/333-bcm53xx-dts-meraki-mx6x-add-OpenWrt-specific-LED-ali.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/311-v7.1-ARM-dts-BCM5301X-EA9200-set-WAN-MAC-from-nvram.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/332-Meraki-MX6X-partition-fixups.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/180-usb-xhci-add-support-for-performing-fake-doorbell.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/331-v7.2-ARM-dts-NSP-Move-MX6X-pinctrl-config-to-PWM-node.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/361-v7.2-ARM-dts-BCM5301X-EA6500v2-fix-USB3.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/701-net-dsa-b53-disable-EAP-setup-on-Northstar-switches.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/351-PCI-iproc-Use-the-EROM-outbound-window-on-BCMA.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/350-v7.1-ARM-dts-BCM5301X-add-root-pcie-bridges.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/310-ARM-BCM5301X-Add-DT-for-Netgear-R7900.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/051-ARM-dts-meraki-mr26-wifi-MACs-in-dts.patch</affectedPath><affectedPath>target/linux/bcm53xx/patches-6.12/905-BCM53573-minor-hacks.patch</affectedPath><commitId>6a31f03522f5cbb829b9078863096058c82767fc</commitId><timestamp>1790189037000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>bcm53xx: remove 6.12 files

Now that 6.18 is the only supported kernel version for bcm53xx,
remove the 6.12 kernel configs (config-6.12 and per-subtarget
config-6.12 files) and the entire patches-6.12 patch stack, as they
are no longer used.

Signed-off-by: Rosen Penev &lt;rosenp@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25307
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-23 20:43:57 +0200</date><id>6a31f03522f5cbb829b9078863096058c82767fc</id><msg>bcm53xx: remove 6.12 files</msg><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/349-v7.1-ARM-dts-BCM5301X-Describe-PCIe-controllers-fully.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/326-ARM-dts-BCM5301X-EA9200-use-network-LED-trigger.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/051-ARM-dts-meraki-mr26-wifi-MACs-in-dts.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/333-bcm53xx-dts-meraki-mx6x-add-OpenWrt-specific-LED-ali.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/050-v6.13-ARM-dts-meraki-mr26-set-mac-address-for-gmac0.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/312-v7.1-ARM-dts-BCM5301X-panamera-set-WAN-MAC-from-nvram.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/351-PCI-iproc-Use-the-EROM-outbound-window-on-BCMA.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/313-ARM-dts-BCM5301X-AC87U-specify-switch.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/350-v7.1-ARM-dts-BCM5301X-add-root-pcie-bridges.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/905-BCM53573-minor-hacks.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/314-ARM-dts-BCM5301X-EA6300-specify-switch.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/324-ARM-dts-BCM5301X-EA9200-add-wifi-definitions.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/321-v7.1-ARM-dts-BCM5301X-EA9200-add-USB-GPIOs.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/322-v7.1-ARM-dts-BCM5301X-EA9200-add-LEDs.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/140-mtd-parsers-trx-parse-firmware-MTD-partitions-only.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/701-net-dsa-b53-disable-EAP-setup-on-Northstar-switches.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/300-ARM-BCM5301X-Disable-MMU-and-Dcache-during-decompres.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/311-v7.1-ARM-dts-BCM5301X-EA9200-set-WAN-MAC-from-nvram.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/331-v7.2-ARM-dts-NSP-Move-MX6X-pinctrl-config-to-PWM-node.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/340-meraki-mx6x-mac-base.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/361-v7.2-ARM-dts-BCM5301X-EA6500v2-fix-USB3.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/332-Meraki-MX6X-partition-fixups.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/304-ARM-dts-BCM5301X-Specify-switch-ports-for-remaining-.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/180-usb-xhci-add-support-for-performing-fake-doorbell.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/320-v7.1-ARM-dts-BCM5301X-EA9200-add-WiFi-button.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/500-UBI-Detect-EOF-mark-and-erase-all-remaining-blocks.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/352-ARM-dts-BCM5301X-EA9200-fix-nvram-size.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/315-ARM-dts-BCM5301X-phicomm-k3-specify-switch.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/360-v7.2-ARM-dts-BCM5301X-R6300v2-fix-USB3.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/config-6.12</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/325-ARM-dts-BCM5301X-EA9200-set-MAC-from-nvram.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/310-ARM-BCM5301X-Add-DT-for-Netgear-R7900.patch</file></path><path><editType>delete</editType><file>target/linux/bcm53xx/patches-6.12/323-v7.1-ARM-dts-BCM5301X-EA9200-specify-partitions.patch</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/files-6.18/drivers/net/phy/realtek/realtek_multiport.c</affectedPath><commitId>2c9a3999e452135fbc1e2be906832d7e77d1fda6</commitId><timestamp>1790190608000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>realtek: phy: fix RTL8218E second XSGMII channel group

The RTL8218E exposes XSGMII as one logical SerDes, but its eight
MAC-side channels are represented by two groups of four. The initial
setup disables autonegotiation only for the first group on page 0x400,
leaving the second group on page 0x500 in autonegotiation mode.

Consequently, the first four package ports pass traffic while the
remaining four establish copper link but do not pass packets. Disable
XSGMII autonegotiation for the second group as well by forcing
register 0x500.12[9:8] to 01.

This changes 0x500.12 from 0x70d0 to 0x71d0 and brings
0x507.15[7:4] from 0 to 0xf on hardware, after which all eight ports
pass traffic.

Fixes: 2db820be865f ("realtek: phy: fix RTL8218E XSGMII initialization")
Assisted-by: ChatGPT (OpenAI GPT-5.6 Sol)
Link: https://github.com/openwrt/openwrt/pull/25364
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-23 21:10:08 +0200</date><id>2c9a3999e452135fbc1e2be906832d7e77d1fda6</id><msg>realtek: phy: fix RTL8218E second XSGMII channel group</msg><path><editType>edit</editType><file>target/linux/realtek/files-6.18/drivers/net/phy/realtek/realtek_multiport.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>target/linux/realtek/base-files/etc/board.d/02_network</affectedPath><affectedPath>target/linux/realtek/image/rtl930x.mk</affectedPath><affectedPath>target/linux/realtek/dts/rtl9302_ubnt_usw-pro-max-24-poe.dts</affectedPath><commitId>98f3808362bec6dc5eee0479be7f4239efbfa91e</commitId><timestamp>1790190901000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></author><authorEmail>jonas@jonasjelonek.de</authorEmail><comment>realtek: add support for Ubiquiti UniFi USW Pro Max 24 PoE

Add support for RTL9302B-based Ubiquiti UniFi USW Pro Max 24 PoE switch
with 16x GbE and 8x 2.5G RJ45 ports, 2x SFP+, and a front display.

Hardware
========

  - RTL9302B switch SoC
  - 512 MiB RAM
  - 32 MiB SPI-NOR flash
  - 16x 100M/1G RJ45 ports via 2x RTL8218E
  - 8x 100M/1G/2.5G RJ45 ports via 2x RTL8224
  - PoE:
      - 400W total budget
      - 8x 802.3at, 32W per port (ports 1-8)
      - 16x 802.3bt, 60W per port (ports 9-24)
  - 2x SFP+ ports
  - Buttons: 1x Reset
  - LEDs: RGBW LED per port (Etherlighting)
  - Front touch display via USB ACM (see below)
  - Console: TTL 3.3V, 115200 8N1 (internal pin header close to SoC;
    layout front to back: VCC RX TX GND)
  - Etherlighting feature (lighting patterns and color control)
  - Vendor firmware: U-Boot + LEDE-based Ubiquiti OS

MAC address
===========

Single MAC address in EEPROM partition, applied to all ports.

Front touch display
===================

The unit has a touch-capable front display, driven by a dedicated
STM32-based MCU. Unlike other Ubiquiti switches where the MCU is
connected to the SoC via UART directly, here it is exposed as a USB
CDC-ACM serial device through an on-board Genesys Logic GL850G USB hub.
The MCU runs Ubiquiti's LCM firmware and exposes a high-level JSON
protocol (page selection, button-press events, etc.); arbitrary
pixel-level control is not possible without replacing the MCU firmware.
Display support therefore depends on both USB host support and a driver
for the LCM protocol, neither of which is currently available.

Known issues
============

  - Etherlighting not controllable, driver WIP. Port LEDs for link work
    though. By default, the controller keeps the LEDs in a breathing
    state, gated by the link state delivered by the Realtek SoC.

Disclaimer
==========

Stock firmware uses a dual-bank layout (kernel0/kernel1, ~15 MiB each).
OpenWrt replaces both banks with a single contiguous firmware partition.
Flashing OpenWrt writes or invalidates both stock kernel slots; U-Boot
remains intact and can be used for recovery.

Installation
============

1. Enable SSH on the stock UniFi OS and log in with user account.

2. Copy the OpenWrt sysupgrade image to /tmp on the switch (e.g. via
   scp).

3. Adjust IMG below to point at the copied file, then run the block as a
   whole. It verifies the expected stock partition layout and image size,
   writes kernel0, splits into kernel1 if the image is larger than that
   slot (otherwise invalidates kernel1 so U-Boot cannot pick a stale
   bank), and reboots:

   set -e
   IMG=/tmp/openwrt-realtek-rtl930x-ubnt_usw-pro-max-24-poe-squashfs-sysupgrade.bin
   K0_SIZE=$((0xf10000))
   K0_BLOCKS=$((K0_SIZE / 0x10000))

   grep -q '^mtd2: 00f10000 00010000 "kernel0"$' /proc/mtd
   grep -q '^mtd3: 00f20000 00010000 "kernel1"$' /proc/mtd
   IMG_SIZE=$(wc -c &lt; "$IMG")
   [ "$IMG_SIZE" -gt 0 ]
   [ "$IMG_SIZE" -le $((0x1e30000)) ]

   dd if="$IMG" of=/dev/mtdblock2 bs=64k count=$K0_BLOCKS conv=fsync
   if [ "$IMG_SIZE" -gt "$K0_SIZE" ]; then
       dd if="$IMG" of=/dev/mtdblock3 bs=64k skip=$K0_BLOCKS conv=fsync
   else
       dd if=/dev/zero of=/dev/mtdblock3 bs=64k count=1 conv=fsync
   fi
   sync
   reboot

   The switch comes up in OpenWrt after reboot.

4. It is recommended to modify the bootcmd to speed up the boot and
   prevent any issues due to the dual-boot selection. Since U-Boot by
   default uses bootubnt which does a lot of (unneeded) RTK
   initialization, quite some time passes until Linux is started.
   Additionally, the U-Boot logic fiddles with some bits on flash which
   causes JFFS2 errors in OpenWrt. While this doesn't seem to cause
   issues yet, be defensive and set the bootcmd from OpenWrt with:

     fw_setenv bootcmd 'bootm 0xb40b0000'
     fw_printenv bootcmd

   This directly boots the uImage from flash, without doing all the
   initialization. OpenWrt is able to bootstrap the networking
   completely on its own.

It does not matter which bank stock booted from when the dd block
runs: both banks are touched in the same pass (kernel0 written, kernel1
either written or invalidated). With kernel1 invalidated, U-Boot's
internal fallback kicks in and permanently switches to kernel0 on the
next boot, so the device stays on OpenWrt as long as kernel0 is
bootable.

Recovery
========

Since the installation procedure invalidates or partially overwrites
the second bank, recovery requires serial console access (see Hardware
above for pinout).

1. Interrupt U-Boot autoboot by spamming a key during early boot to
   drop into the U-Boot prompt.

2. Bring up networking:

   rtk network on

3. Transfer an OpenWrt initramfs image via TFTP and boot it:

   tftpboot 0x82000000 &lt;server&gt;:&lt;initramfs.bin&gt;
   bootm 0x82000000

4. From the running initramfs OpenWrt, do a sysupgrade to reflash
   OpenWrt or whatever you want to recover. There is no need for the
   complicated procedure from installation since OpenWrt sees the
   firmware partition already as a whole.

Return to stock firmware
========================

There is no fully-supported revert path. The stock firmware blob is a
Ubiquiti UBNT archive (header + parts, see firmware-utils' fw.h) that
embeds a u-boot and a kernel0 uImage payload; only the latter is
relevant when writing back to the kernel partitions.

The snippet below extracts the kernel0 uImage from such a blob by
locating the uImage magic and using the size carried in the uImage
header itself, without parsing any UBNT framing. It is provided as a
best-effort starting point; verify the result before flashing,
otherwise you're on your own:

   BLOB=&lt;firmware.bin&gt;
   OFF=$(grep -aboF $'\x27\x05\x19\x56' "$BLOB" | head -1 | cut -d: -f1)
   SIZE=$(( $(dd if="$BLOB" bs=1 skip=$((OFF + 12)) count=4 2&gt;/dev/null \
               | hexdump -e '1/4 "%u"') + 64 ))
   dd if="$BLOB" of=kernel0.uImage bs=1 skip="$OFF" count="$SIZE"

Once you have a clean uImage, boot an OpenWrt initramfs as described in
Recovery, copy kernel0.uImage to /tmp, and run:

   set -e
   [ "$(wc -c &lt; /tmp/kernel0.uImage)" -le $((0xf10000)) ] || exit 1
   mtd write /tmp/kernel0.uImage firmware
   fw_setenv bootcmd bootubnt
   fw_printenv bootcmd
   reboot

After rebooting, Ubiquiti's firmware should boot.

Or, if you made backups of the flash before installation, just write
the backup back to flash.

Link: https://github.com/openwrt/openwrt/pull/25280
Signed-off-by: Jonas Jelonek &lt;jonas@jonasjelonek.de&gt;
</comment><date>2026-09-23 21:15:01 +0200</date><id>98f3808362bec6dc5eee0479be7f4239efbfa91e</id><msg>realtek: add support for Ubiquiti UniFi USW Pro Max 24 PoE</msg><path><editType>edit</editType><file>target/linux/realtek/base-files/etc/board.d/02_network</file></path><path><editType>add</editType><file>target/linux/realtek/dts/rtl9302_ubnt_usw-pro-max-24-poe.dts</file></path><path><editType>edit</editType><file>target/linux/realtek/image/rtl930x.mk</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://taiha.net/jenkins/user/robert.marko</absoluteUrl><fullName>robert.marko</fullName></culprit><culprit><absoluteUrl>https://taiha.net/jenkins/user/robimarko</absoluteUrl><fullName>robimarko</fullName></culprit><culprit><absoluteUrl>https://taiha.net/jenkins/user/markus.stockhausen</absoluteUrl><fullName>markus.stockhausen</fullName></culprit><culprit><absoluteUrl>https://taiha.net/jenkins/user/daniel</absoluteUrl><fullName>daniel</fullName></culprit><culprit><absoluteUrl>https://taiha.net/jenkins/user/nbd</absoluteUrl><fullName>nbd</fullName></culprit><culprit><absoluteUrl>https://taiha.net/jenkins/user/john</absoluteUrl><fullName>john</fullName></culprit><culprit><absoluteUrl>https://taiha.net/jenkins/user/jonas</absoluteUrl><fullName>jonas</fullName></culprit></firstBuild><healthReport><description>ビルドの安定性: 最近の4個中、1個ビルドに失敗しました。</description><iconClassName>icon-health-60to79</iconClassName><iconUrl>health-60to79.png</iconUrl><score>75</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.parameterizedscheduler.ParameterizedTimerTriggerCause'><shortDescription>Started by timer with parameters: {BUILD_CFG_TARGET_DEV=WG1400HP/WG1800HP/WG1800HP2 (QCA9558)}</shortDescription></cause></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.BooleanParameterValue'><name>BUILD_CFG_DISTCLEAN</name><value>true</value></parameter><parameter _class='hudson.model.BooleanParameterValue'><name>BUILD_CFG_DIFFCONFIG</name><value>true</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BUILD_CFG_TARGET_DEV</name><value>WG1400HP/WG1800HP/WG1800HP2 (QCA9558)</value></parameter></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmain _class='hudson.plugins.git.util.Build'><buildNumber>499</buildNumber><marked><SHA1>a5c93cd3344709b6a05bbf1c7133d04a4d513513</SHA1><branch><SHA1>a5c93cd3344709b6a05bbf1c7133d04a4d513513</SHA1><name>refs/remotes/origin/main</name></branch></marked><revision><SHA1>a5c93cd3344709b6a05bbf1c7133d04a4d513513</SHA1><branch><SHA1>a5c93cd3344709b6a05bbf1c7133d04a4d513513</SHA1><name>refs/remotes/origin/main</name></branch></revision></refsremotesoriginmain></buildsByBranchName><lastBuiltRevision><SHA1>a5c93cd3344709b6a05bbf1c7133d04a4d513513</SHA1><branch><SHA1>a5c93cd3344709b6a05bbf1c7133d04a4d513513</SHA1><name>refs/remotes/origin/main</name></branch></lastBuiltRevision><remoteUrl>https://github.com/openwrt/openwrt</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>config.buildinfo</displayPath><fileName>config.buildinfo</fileName><relativePath>bin/targets/ath79/generic/config.buildinfo</relativePath></artifact><artifact><displayPath>feeds.buildinfo</displayPath><fileName>feeds.buildinfo</fileName><relativePath>bin/targets/ath79/generic/feeds.buildinfo</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1400hp-initramfs-factory.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1400hp-initramfs-factory.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1400hp-initramfs-factory.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1400hp-initramfs-kernel.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1400hp-initramfs-kernel.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1400hp-initramfs-kernel.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1400hp-squashfs-sysupgrade.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1400hp-squashfs-sysupgrade.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1400hp-squashfs-sysupgrade.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1400hp-uboot.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1400hp-uboot.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1400hp-uboot.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp-initramfs-factory.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp-initramfs-factory.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp-initramfs-factory.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp-initramfs-kernel.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp-initramfs-kernel.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp-initramfs-kernel.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp-squashfs-sysupgrade.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp-squashfs-sysupgrade.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp-squashfs-sysupgrade.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp-uboot.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp-uboot.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp-uboot.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp2-initramfs-factory.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp2-initramfs-factory.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp2-initramfs-factory.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp2-initramfs-kernel.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp2-initramfs-kernel.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp2-initramfs-kernel.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp2-squashfs-sysupgrade.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp2-squashfs-sysupgrade.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp2-squashfs-sysupgrade.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp2-uboot.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp2-uboot.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp2-uboot.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic.manifest</displayPath><fileName>openwrt-ath79-generic.manifest</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic.manifest</relativePath></artifact><artifact><displayPath>profiles.json</displayPath><fileName>profiles.json</fileName><relativePath>bin/targets/ath79/generic/profiles.json</relativePath></artifact><artifact><displayPath>sha256sums</displayPath><fileName>sha256sums</fileName><relativePath>bin/targets/ath79/generic/sha256sums</relativePath></artifact><artifact><displayPath>version.buildinfo</displayPath><fileName>version.buildinfo</fileName><relativePath>bin/targets/ath79/generic/version.buildinfo</relativePath></artifact><building>false</building><description>diffconfig: true, device: WG1400HP/WG1800HP/WG1800HP2 (QCA9558)</description><displayName>#499</displayName><duration>2177247</duration><estimatedDuration>2195975</estimatedDuration><fullDisplayName>OpenWrt (master) for NEC Aterm (NetBSD based) #499</fullDisplayName><id>499</id><inProgress>false</inProgress><keepLog>false</keepLog><number>499</number><queueId>64</queueId><result>SUCCESS</result><timestamp>1790565600310</timestamp><url>https://taiha.net/jenkins/job/OpenWrt-master-NEC-BSD-Aterm/499/</url><builtOn>home-slave02_taihasv</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/kernel/linux/modules/input.mk</affectedPath><commitId>a5c93cd3344709b6a05bbf1c7133d04a4d513513</commitId><timestamp>1790555623000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/daniel</absoluteUrl><fullName>daniel</fullName></author><authorEmail>daniel@makrotopia.org</authorEmail><comment>kernel: add the uhid module

BlueZ creates Bluetooth Low Energy HID devices through uhid, so a
Bluetooth remote or keyboard needs it in addition to kmod-bluetooth.

Signed-off-by: Daniel Golle &lt;daniel@makrotopia.org&gt;
</comment><date>2026-09-28 01:33:43 +0100</date><id>a5c93cd3344709b6a05bbf1c7133d04a4d513513</id><msg>kernel: add the uhid module</msg><path><editType>edit</editType><file>package/kernel/linux/modules/input.mk</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://taiha.net/jenkins/user/daniel</absoluteUrl><fullName>daniel</fullName></culprit></lastBuild><lastCompletedBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.parameterizedscheduler.ParameterizedTimerTriggerCause'><shortDescription>Started by timer with parameters: {BUILD_CFG_TARGET_DEV=WG1400HP/WG1800HP/WG1800HP2 (QCA9558)}</shortDescription></cause></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.BooleanParameterValue'><name>BUILD_CFG_DISTCLEAN</name><value>true</value></parameter><parameter _class='hudson.model.BooleanParameterValue'><name>BUILD_CFG_DIFFCONFIG</name><value>true</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BUILD_CFG_TARGET_DEV</name><value>WG1400HP/WG1800HP/WG1800HP2 (QCA9558)</value></parameter></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmain _class='hudson.plugins.git.util.Build'><buildNumber>499</buildNumber><marked><SHA1>a5c93cd3344709b6a05bbf1c7133d04a4d513513</SHA1><branch><SHA1>a5c93cd3344709b6a05bbf1c7133d04a4d513513</SHA1><name>refs/remotes/origin/main</name></branch></marked><revision><SHA1>a5c93cd3344709b6a05bbf1c7133d04a4d513513</SHA1><branch><SHA1>a5c93cd3344709b6a05bbf1c7133d04a4d513513</SHA1><name>refs/remotes/origin/main</name></branch></revision></refsremotesoriginmain></buildsByBranchName><lastBuiltRevision><SHA1>a5c93cd3344709b6a05bbf1c7133d04a4d513513</SHA1><branch><SHA1>a5c93cd3344709b6a05bbf1c7133d04a4d513513</SHA1><name>refs/remotes/origin/main</name></branch></lastBuiltRevision><remoteUrl>https://github.com/openwrt/openwrt</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>config.buildinfo</displayPath><fileName>config.buildinfo</fileName><relativePath>bin/targets/ath79/generic/config.buildinfo</relativePath></artifact><artifact><displayPath>feeds.buildinfo</displayPath><fileName>feeds.buildinfo</fileName><relativePath>bin/targets/ath79/generic/feeds.buildinfo</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1400hp-initramfs-factory.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1400hp-initramfs-factory.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1400hp-initramfs-factory.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1400hp-initramfs-kernel.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1400hp-initramfs-kernel.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1400hp-initramfs-kernel.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1400hp-squashfs-sysupgrade.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1400hp-squashfs-sysupgrade.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1400hp-squashfs-sysupgrade.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1400hp-uboot.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1400hp-uboot.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1400hp-uboot.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp-initramfs-factory.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp-initramfs-factory.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp-initramfs-factory.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp-initramfs-kernel.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp-initramfs-kernel.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp-initramfs-kernel.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp-squashfs-sysupgrade.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp-squashfs-sysupgrade.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp-squashfs-sysupgrade.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp-uboot.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp-uboot.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp-uboot.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp2-initramfs-factory.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp2-initramfs-factory.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp2-initramfs-factory.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp2-initramfs-kernel.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp2-initramfs-kernel.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp2-initramfs-kernel.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp2-squashfs-sysupgrade.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp2-squashfs-sysupgrade.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp2-squashfs-sysupgrade.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp2-uboot.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp2-uboot.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp2-uboot.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic.manifest</displayPath><fileName>openwrt-ath79-generic.manifest</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic.manifest</relativePath></artifact><artifact><displayPath>profiles.json</displayPath><fileName>profiles.json</fileName><relativePath>bin/targets/ath79/generic/profiles.json</relativePath></artifact><artifact><displayPath>sha256sums</displayPath><fileName>sha256sums</fileName><relativePath>bin/targets/ath79/generic/sha256sums</relativePath></artifact><artifact><displayPath>version.buildinfo</displayPath><fileName>version.buildinfo</fileName><relativePath>bin/targets/ath79/generic/version.buildinfo</relativePath></artifact><building>false</building><description>diffconfig: true, device: WG1400HP/WG1800HP/WG1800HP2 (QCA9558)</description><displayName>#499</displayName><duration>2177247</duration><estimatedDuration>2195975</estimatedDuration><fullDisplayName>OpenWrt (master) for NEC Aterm (NetBSD based) #499</fullDisplayName><id>499</id><inProgress>false</inProgress><keepLog>false</keepLog><number>499</number><queueId>64</queueId><result>SUCCESS</result><timestamp>1790565600310</timestamp><url>https://taiha.net/jenkins/job/OpenWrt-master-NEC-BSD-Aterm/499/</url><builtOn>home-slave02_taihasv</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/kernel/linux/modules/input.mk</affectedPath><commitId>a5c93cd3344709b6a05bbf1c7133d04a4d513513</commitId><timestamp>1790555623000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/daniel</absoluteUrl><fullName>daniel</fullName></author><authorEmail>daniel@makrotopia.org</authorEmail><comment>kernel: add the uhid module

BlueZ creates Bluetooth Low Energy HID devices through uhid, so a
Bluetooth remote or keyboard needs it in addition to kmod-bluetooth.

Signed-off-by: Daniel Golle &lt;daniel@makrotopia.org&gt;
</comment><date>2026-09-28 01:33:43 +0100</date><id>a5c93cd3344709b6a05bbf1c7133d04a4d513513</id><msg>kernel: add the uhid module</msg><path><editType>edit</editType><file>package/kernel/linux/modules/input.mk</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://taiha.net/jenkins/user/daniel</absoluteUrl><fullName>daniel</fullName></culprit></lastCompletedBuild><lastStableBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.parameterizedscheduler.ParameterizedTimerTriggerCause'><shortDescription>Started by timer with parameters: {BUILD_CFG_TARGET_DEV=WG1400HP/WG1800HP/WG1800HP2 (QCA9558)}</shortDescription></cause></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.BooleanParameterValue'><name>BUILD_CFG_DISTCLEAN</name><value>true</value></parameter><parameter _class='hudson.model.BooleanParameterValue'><name>BUILD_CFG_DIFFCONFIG</name><value>true</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BUILD_CFG_TARGET_DEV</name><value>WG1400HP/WG1800HP/WG1800HP2 (QCA9558)</value></parameter></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmain _class='hudson.plugins.git.util.Build'><buildNumber>499</buildNumber><marked><SHA1>a5c93cd3344709b6a05bbf1c7133d04a4d513513</SHA1><branch><SHA1>a5c93cd3344709b6a05bbf1c7133d04a4d513513</SHA1><name>refs/remotes/origin/main</name></branch></marked><revision><SHA1>a5c93cd3344709b6a05bbf1c7133d04a4d513513</SHA1><branch><SHA1>a5c93cd3344709b6a05bbf1c7133d04a4d513513</SHA1><name>refs/remotes/origin/main</name></branch></revision></refsremotesoriginmain></buildsByBranchName><lastBuiltRevision><SHA1>a5c93cd3344709b6a05bbf1c7133d04a4d513513</SHA1><branch><SHA1>a5c93cd3344709b6a05bbf1c7133d04a4d513513</SHA1><name>refs/remotes/origin/main</name></branch></lastBuiltRevision><remoteUrl>https://github.com/openwrt/openwrt</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>config.buildinfo</displayPath><fileName>config.buildinfo</fileName><relativePath>bin/targets/ath79/generic/config.buildinfo</relativePath></artifact><artifact><displayPath>feeds.buildinfo</displayPath><fileName>feeds.buildinfo</fileName><relativePath>bin/targets/ath79/generic/feeds.buildinfo</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1400hp-initramfs-factory.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1400hp-initramfs-factory.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1400hp-initramfs-factory.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1400hp-initramfs-kernel.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1400hp-initramfs-kernel.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1400hp-initramfs-kernel.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1400hp-squashfs-sysupgrade.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1400hp-squashfs-sysupgrade.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1400hp-squashfs-sysupgrade.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1400hp-uboot.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1400hp-uboot.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1400hp-uboot.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp-initramfs-factory.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp-initramfs-factory.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp-initramfs-factory.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp-initramfs-kernel.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp-initramfs-kernel.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp-initramfs-kernel.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp-squashfs-sysupgrade.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp-squashfs-sysupgrade.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp-squashfs-sysupgrade.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp-uboot.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp-uboot.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp-uboot.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp2-initramfs-factory.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp2-initramfs-factory.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp2-initramfs-factory.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp2-initramfs-kernel.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp2-initramfs-kernel.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp2-initramfs-kernel.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp2-squashfs-sysupgrade.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp2-squashfs-sysupgrade.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp2-squashfs-sysupgrade.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp2-uboot.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp2-uboot.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp2-uboot.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic.manifest</displayPath><fileName>openwrt-ath79-generic.manifest</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic.manifest</relativePath></artifact><artifact><displayPath>profiles.json</displayPath><fileName>profiles.json</fileName><relativePath>bin/targets/ath79/generic/profiles.json</relativePath></artifact><artifact><displayPath>sha256sums</displayPath><fileName>sha256sums</fileName><relativePath>bin/targets/ath79/generic/sha256sums</relativePath></artifact><artifact><displayPath>version.buildinfo</displayPath><fileName>version.buildinfo</fileName><relativePath>bin/targets/ath79/generic/version.buildinfo</relativePath></artifact><building>false</building><description>diffconfig: true, device: WG1400HP/WG1800HP/WG1800HP2 (QCA9558)</description><displayName>#499</displayName><duration>2177247</duration><estimatedDuration>2195975</estimatedDuration><fullDisplayName>OpenWrt (master) for NEC Aterm (NetBSD based) #499</fullDisplayName><id>499</id><inProgress>false</inProgress><keepLog>false</keepLog><number>499</number><queueId>64</queueId><result>SUCCESS</result><timestamp>1790565600310</timestamp><url>https://taiha.net/jenkins/job/OpenWrt-master-NEC-BSD-Aterm/499/</url><builtOn>home-slave02_taihasv</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/kernel/linux/modules/input.mk</affectedPath><commitId>a5c93cd3344709b6a05bbf1c7133d04a4d513513</commitId><timestamp>1790555623000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/daniel</absoluteUrl><fullName>daniel</fullName></author><authorEmail>daniel@makrotopia.org</authorEmail><comment>kernel: add the uhid module

BlueZ creates Bluetooth Low Energy HID devices through uhid, so a
Bluetooth remote or keyboard needs it in addition to kmod-bluetooth.

Signed-off-by: Daniel Golle &lt;daniel@makrotopia.org&gt;
</comment><date>2026-09-28 01:33:43 +0100</date><id>a5c93cd3344709b6a05bbf1c7133d04a4d513513</id><msg>kernel: add the uhid module</msg><path><editType>edit</editType><file>package/kernel/linux/modules/input.mk</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://taiha.net/jenkins/user/daniel</absoluteUrl><fullName>daniel</fullName></culprit></lastStableBuild><lastSuccessfulBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.parameterizedscheduler.ParameterizedTimerTriggerCause'><shortDescription>Started by timer with parameters: {BUILD_CFG_TARGET_DEV=WG1400HP/WG1800HP/WG1800HP2 (QCA9558)}</shortDescription></cause></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.BooleanParameterValue'><name>BUILD_CFG_DISTCLEAN</name><value>true</value></parameter><parameter _class='hudson.model.BooleanParameterValue'><name>BUILD_CFG_DIFFCONFIG</name><value>true</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BUILD_CFG_TARGET_DEV</name><value>WG1400HP/WG1800HP/WG1800HP2 (QCA9558)</value></parameter></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmain _class='hudson.plugins.git.util.Build'><buildNumber>499</buildNumber><marked><SHA1>a5c93cd3344709b6a05bbf1c7133d04a4d513513</SHA1><branch><SHA1>a5c93cd3344709b6a05bbf1c7133d04a4d513513</SHA1><name>refs/remotes/origin/main</name></branch></marked><revision><SHA1>a5c93cd3344709b6a05bbf1c7133d04a4d513513</SHA1><branch><SHA1>a5c93cd3344709b6a05bbf1c7133d04a4d513513</SHA1><name>refs/remotes/origin/main</name></branch></revision></refsremotesoriginmain></buildsByBranchName><lastBuiltRevision><SHA1>a5c93cd3344709b6a05bbf1c7133d04a4d513513</SHA1><branch><SHA1>a5c93cd3344709b6a05bbf1c7133d04a4d513513</SHA1><name>refs/remotes/origin/main</name></branch></lastBuiltRevision><remoteUrl>https://github.com/openwrt/openwrt</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>config.buildinfo</displayPath><fileName>config.buildinfo</fileName><relativePath>bin/targets/ath79/generic/config.buildinfo</relativePath></artifact><artifact><displayPath>feeds.buildinfo</displayPath><fileName>feeds.buildinfo</fileName><relativePath>bin/targets/ath79/generic/feeds.buildinfo</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1400hp-initramfs-factory.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1400hp-initramfs-factory.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1400hp-initramfs-factory.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1400hp-initramfs-kernel.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1400hp-initramfs-kernel.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1400hp-initramfs-kernel.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1400hp-squashfs-sysupgrade.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1400hp-squashfs-sysupgrade.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1400hp-squashfs-sysupgrade.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1400hp-uboot.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1400hp-uboot.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1400hp-uboot.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp-initramfs-factory.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp-initramfs-factory.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp-initramfs-factory.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp-initramfs-kernel.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp-initramfs-kernel.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp-initramfs-kernel.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp-squashfs-sysupgrade.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp-squashfs-sysupgrade.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp-squashfs-sysupgrade.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp-uboot.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp-uboot.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp-uboot.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp2-initramfs-factory.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp2-initramfs-factory.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp2-initramfs-factory.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp2-initramfs-kernel.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp2-initramfs-kernel.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp2-initramfs-kernel.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp2-squashfs-sysupgrade.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp2-squashfs-sysupgrade.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp2-squashfs-sysupgrade.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic-nec_wg1800hp2-uboot.bin</displayPath><fileName>openwrt-ath79-generic-nec_wg1800hp2-uboot.bin</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic-nec_wg1800hp2-uboot.bin</relativePath></artifact><artifact><displayPath>openwrt-ath79-generic.manifest</displayPath><fileName>openwrt-ath79-generic.manifest</fileName><relativePath>bin/targets/ath79/generic/openwrt-ath79-generic.manifest</relativePath></artifact><artifact><displayPath>profiles.json</displayPath><fileName>profiles.json</fileName><relativePath>bin/targets/ath79/generic/profiles.json</relativePath></artifact><artifact><displayPath>sha256sums</displayPath><fileName>sha256sums</fileName><relativePath>bin/targets/ath79/generic/sha256sums</relativePath></artifact><artifact><displayPath>version.buildinfo</displayPath><fileName>version.buildinfo</fileName><relativePath>bin/targets/ath79/generic/version.buildinfo</relativePath></artifact><building>false</building><description>diffconfig: true, device: WG1400HP/WG1800HP/WG1800HP2 (QCA9558)</description><displayName>#499</displayName><duration>2177247</duration><estimatedDuration>2195975</estimatedDuration><fullDisplayName>OpenWrt (master) for NEC Aterm (NetBSD based) #499</fullDisplayName><id>499</id><inProgress>false</inProgress><keepLog>false</keepLog><number>499</number><queueId>64</queueId><result>SUCCESS</result><timestamp>1790565600310</timestamp><url>https://taiha.net/jenkins/job/OpenWrt-master-NEC-BSD-Aterm/499/</url><builtOn>home-slave02_taihasv</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package/kernel/linux/modules/input.mk</affectedPath><commitId>a5c93cd3344709b6a05bbf1c7133d04a4d513513</commitId><timestamp>1790555623000</timestamp><author><absoluteUrl>https://taiha.net/jenkins/user/daniel</absoluteUrl><fullName>daniel</fullName></author><authorEmail>daniel@makrotopia.org</authorEmail><comment>kernel: add the uhid module

BlueZ creates Bluetooth Low Energy HID devices through uhid, so a
Bluetooth remote or keyboard needs it in addition to kmod-bluetooth.

Signed-off-by: Daniel Golle &lt;daniel@makrotopia.org&gt;
</comment><date>2026-09-28 01:33:43 +0100</date><id>a5c93cd3344709b6a05bbf1c7133d04a4d513513</id><msg>kernel: add the uhid module</msg><path><editType>edit</editType><file>package/kernel/linux/modules/input.mk</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://taiha.net/jenkins/user/daniel</absoluteUrl><fullName>daniel</fullName></culprit></lastSuccessfulBuild><nextBuildNumber>500</nextBuildNumber><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><property _class='hudson.model.ParametersDefinitionProperty'><parameterDefinition _class='hudson.model.BooleanParameterDefinition'><defaultParameterValue _class='hudson.model.BooleanParameterValue'><name>BUILD_CFG_DISTCLEAN</name><value>true</value></defaultParameterValue><description>開始前に &lt;code&gt;make distclean&lt;/code&gt; を実施</description><name>BUILD_CFG_DISTCLEAN</name><type>BooleanParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.BooleanParameterDefinition'><defaultParameterValue _class='hudson.model.BooleanParameterValue'><name>BUILD_CFG_DIFFCONFIG</name><value>true</value></defaultParameterValue><description>diffconfigを使用してビルド</description><name>BUILD_CFG_DIFFCONFIG</name><type>BooleanParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.ChoiceParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>BUILD_CFG_TARGET_DEV</name><value>WR8750N/WR9500N/WG600HP (AR9344)</value></defaultParameterValue><description>ビルド対象機種系統</description><name>BUILD_CFG_TARGET_DEV</name><type>ChoiceParameterDefinition</type><choice>WR8750N/WR9500N/WG600HP (AR9344)</choice><choice>WG1400HP/WG1800HP/WG1800HP2 (QCA9558)</choice></parameterDefinition></property><property _class='jenkins.model.BuildDiscarderProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><labelExpression>home-slave02_taihasv</labelExpression><scm _class='hudson.plugins.git.GitSCM'><browser _class='hudson.plugins.git.browser.GithubWeb'></browser><type>hudson.plugins.git.GitSCM</type><branche></branche><mergeOptions><fastForwardMode>--ff</fastForwardMode><mergeStrategy>default</mergeStrategy></mergeOptions><userRemoteConfig></userRemoteConfig></scm></freeStyleProject>