From d9d2612f3c13dac54869064ac8b101ee1cf5b821 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Bl=C3=A4se?= Date: Sat, 26 Nov 2022 16:14:16 +0100 Subject: [PATCH] build_patches: Add patch to fix wdr4900 wifi interface configuration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A Linux patch which changed the kernel behavior of pci device naming was backported to Linux 5.4, and is therefore included in OpenWrt 21.02.5. However, the OpenWrt scripts generating the default uci configuration were not updated to accomodate this change. Therefore, wifi interface configuration does have various side effects on the wdr4900. Most of the time, more than two wifi radio/interface configurations are generated, which results in wifi not working properly (because our own configuration layer relies on the default configuration done by OpenWrt). Backport a patch from OpenWrt 22.03 / master, which works around this problem but has not been applied to the 21.02 branch. Based on: 7f4b4c29f3 (OpenWrt) Ref: https://github.com/openwrt/openwrt/issues/11002 Ref: https://github.com/openwrt/openwrt/pull/11005 Ref: https://github.com/openwrt/openwrt/issues/10530 Ref: https://github.com/openwrt/openwrt/pull/10554 Fixes: #267 Signed-off-by: Fabian Bläse --- ...-pci-aliases-to-avoid-domain-changes.patch | 158 ++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100644 build_patches/openwrt/0200-mpc85xx-Drop-pci-aliases-to-avoid-domain-changes.patch diff --git a/build_patches/openwrt/0200-mpc85xx-Drop-pci-aliases-to-avoid-domain-changes.patch b/build_patches/openwrt/0200-mpc85xx-Drop-pci-aliases-to-avoid-domain-changes.patch new file mode 100644 index 0000000..1e34b07 --- /dev/null +++ b/build_patches/openwrt/0200-mpc85xx-Drop-pci-aliases-to-avoid-domain-changes.patch @@ -0,0 +1,158 @@ +From 7f4b4c29f3489697dca7495216460d0ed5023e02 Mon Sep 17 00:00:00 2001 +From: Martin Kennedy +Date: Mon, 29 Aug 2022 20:47:24 -0400 +Subject: [PATCH] mpc85xx: Drop pci aliases to avoid domain changes + +As of upstream Linux commit 0fe1e96fef0a ("powerpc/pci: Prefer PCI +domain assignment via DT 'linux,pci-domain' and alias"), the PCIe +domain address is no longer numbered by the lowest 16 bits of the PCI +register address after a fallthrough. Instead of the fallthrough, the +enumeration process accepts the alias ID (as determined by +`of_alias_scan()`). This causes e.g.: + +9000:00:00.0 PCI bridge: Freescale Semiconductor Inc P1020E (rev 11) +9000:01:00.0 Network controller: Qualcomm Atheros AR958x 802.11abgn ... + +to become + +0000:00:00.0 PCI bridge: Freescale Semiconductor Inc P1020E (rev 11) +0000:01:00.0 Network controller: Qualcomm Atheros AR958x 802.11abgn ... + +... which then causes the sysfs path of the netdev to change, +invalidating the `wifi_device.path`s enumerated in +`/etc/config/wireless`. + +One other solution might be to migrate the uci configuration, as was +done for mvebu in commit 0bd5aa89fcf2 ("mvebu: Migrate uci config to +new PCIe path"). However, there are concerns that the sysfs path will +change once again once some upstream patches[^2][^3] are merged and +backported (and `CONFIG_PPC_PCI_BUS_NUM_DOMAIN_DEPENDENT` is enabled). + +Instead, remove the aliases and allow the fallthrough to continue for +now. We will provide a migration in a later release. + +This was first reported as a Github issue[^1]. + +[^1]: https://github.com/openwrt/openwrt/issues/10530 +[^2]: https://lore.kernel.org/linuxppc-dev/20220706104308.5390-1-pali@kernel.org/t/#u +[^3]: https://lore.kernel.org/linuxppc-dev/20220706101043.4867-1-pali@kernel.org/ + +Fixes: #10530 +Tested-by: Martin Kennedy +[Tested on the Aerohive HiveAP 330 and Extreme Networks WS-AP3825i] +Signed-off-by: Martin Kennedy +--- + .../files/arch/powerpc/boot/dts/hiveap-330.dts | 13 +++++++++++++ + .../mpc85xx/files/arch/powerpc/boot/dts/panda.dts | 14 ++++++++++++++ + .../files/arch/powerpc/boot/dts/red-15w-rev1.dts | 14 ++++++++++++++ + .../files/arch/powerpc/boot/dts/tl-wdr4900-v1.dts | 13 +++++++++++++ + .../files/arch/powerpc/boot/dts/ws-ap3710i.dts | 13 +++++++++++++ + 6 files changed, 80 insertions(+) + +diff --git a/target/linux/mpc85xx/files/arch/powerpc/boot/dts/hiveap-330.dts b/target/linux/mpc85xx/files/arch/powerpc/boot/dts/hiveap-330.dts +index ccf60eaeed0e1..d6a8da84ef66d 100644 +--- a/target/linux/mpc85xx/files/arch/powerpc/boot/dts/hiveap-330.dts ++++ b/target/linux/mpc85xx/files/arch/powerpc/boot/dts/hiveap-330.dts +@@ -300,3 +300,16 @@ + }; + }; + /include/ "fsl/p1020si-post.dtsi" ++ ++/* ++ * For the OpenWrt 22.03 release, since Linux 5.10.138 now uses ++ * aliases to determine PCI domain numbers, drop aliases so as not to ++ * change the sysfs path of our wireless netdevs. ++ */ ++ ++/ { ++ aliases { ++ /delete-property/ pci0; ++ /delete-property/ pci1; ++ }; ++}; +diff --git a/target/linux/mpc85xx/files/arch/powerpc/boot/dts/panda.dts b/target/linux/mpc85xx/files/arch/powerpc/boot/dts/panda.dts +index baaa4a43fd559..9be822f7bb8ac 100644 +--- a/target/linux/mpc85xx/files/arch/powerpc/boot/dts/panda.dts ++++ b/target/linux/mpc85xx/files/arch/powerpc/boot/dts/panda.dts +@@ -265,3 +265,17 @@ + }; + }; + /include/ "fsl/p1020si-post.dtsi" ++ ++/* ++ * For the OpenWrt 22.03 release, since Linux 5.10.138 now uses ++ * aliases to determine PCI domain numbers, drop aliases so as not to ++ * change the sysfs path of our wireless netdevs. ++ */ ++ ++/ { ++ aliases { ++ /delete-property/ pci0; ++ /delete-property/ pci1; ++ }; ++}; ++ +diff --git a/target/linux/mpc85xx/files/arch/powerpc/boot/dts/red-15w-rev1.dts b/target/linux/mpc85xx/files/arch/powerpc/boot/dts/red-15w-rev1.dts +index 1fd6a4aa49713..db35602b94b5b 100644 +--- a/target/linux/mpc85xx/files/arch/powerpc/boot/dts/red-15w-rev1.dts ++++ b/target/linux/mpc85xx/files/arch/powerpc/boot/dts/red-15w-rev1.dts +@@ -214,3 +214,17 @@ + }; + + /include/ "fsl/p1010si-post.dtsi" ++ ++/* ++ * For the OpenWrt 22.03 release, since Linux 5.10.138 now uses ++ * aliases to determine PCI domain numbers, drop aliases so as not to ++ * change the sysfs path of our wireless netdevs. ++ */ ++ ++/ { ++ aliases { ++ /delete-property/ pci0; ++ /delete-property/ pci1; ++ }; ++}; ++ +diff --git a/target/linux/mpc85xx/files/arch/powerpc/boot/dts/tl-wdr4900-v1.dts b/target/linux/mpc85xx/files/arch/powerpc/boot/dts/tl-wdr4900-v1.dts +index fbe1c0ee705d2..12281808aa5b6 100644 +--- a/target/linux/mpc85xx/files/arch/powerpc/boot/dts/tl-wdr4900-v1.dts ++++ b/target/linux/mpc85xx/files/arch/powerpc/boot/dts/tl-wdr4900-v1.dts +@@ -302,3 +302,16 @@ + /delete-node/ crypto@30000; /* Pulled in by p1010si-post */ + }; + }; ++ ++/* ++ * For the OpenWrt 22.03 release, since Linux 5.10.138 now uses ++ * aliases to determine PCI domain numbers, drop aliases so as not to ++ * change the sysfs path of our wireless netdevs. ++ */ ++ ++/ { ++ aliases { ++ /delete-property/ pci0; ++ /delete-property/ pci1; ++ }; ++}; +diff --git a/target/linux/mpc85xx/files/arch/powerpc/boot/dts/ws-ap3710i.dts b/target/linux/mpc85xx/files/arch/powerpc/boot/dts/ws-ap3710i.dts +index c5588d80275e2..5d81da4686413 100644 +--- a/target/linux/mpc85xx/files/arch/powerpc/boot/dts/ws-ap3710i.dts ++++ b/target/linux/mpc85xx/files/arch/powerpc/boot/dts/ws-ap3710i.dts +@@ -173,3 +173,16 @@ + + }; + /include/ "fsl/p1020si-post.dtsi" ++ ++/* ++ * For the OpenWrt 22.03 release, since Linux 5.10.138 now uses ++ * aliases to determine PCI domain numbers, drop aliases so as not to ++ * change the sysfs path of our wireless netdevs. ++ */ ++ ++/ { ++ aliases { ++ /delete-property/ pci0; ++ /delete-property/ pci1; ++ }; ++};