From 0412bf03ebfd1519555b43a4c7e684cbf9e4e840 Mon Sep 17 00:00:00 2001 From: Tanya Singh Date: Tue, 12 Mar 2024 18:33:44 +0800 Subject: [PATCH] treewide: Fix dual boot fw upgrade for Edgecore APs Fixes: WIFI-13497 Signed-off-by: Tanya Singh --- .../ipq40xx/ipq40xx/base-files/lib/upgrade/platform.sh | 4 ++-- feeds/ipq807x/ipq807x/base-files/lib/upgrade/nand.sh | 2 +- .../ipq807x/ipq807x/base-files/lib/upgrade/platform.sh | 4 ++-- .../ipq50xx/base-files/lib/upgrade/nand.sh | 2 +- .../ipq60xx/base-files/lib/upgrade/nand.sh | 2 +- .../ipq60xx/base-files/lib/upgrade/platform.sh | 4 ++-- .../ipq807x/base-files/lib/upgrade/nand.sh | 2 +- .../ipq807x/base-files/lib/upgrade/platform.sh | 10 +++++++--- feeds/ipq95xx/ipq95xx/base-files/lib/upgrade/nand.sh | 2 +- 9 files changed, 18 insertions(+), 14 deletions(-) diff --git a/feeds/ipq40xx/ipq40xx/base-files/lib/upgrade/platform.sh b/feeds/ipq40xx/ipq40xx/base-files/lib/upgrade/platform.sh index fa6a16cf4..6a7155bd2 100644 --- a/feeds/ipq40xx/ipq40xx/base-files/lib/upgrade/platform.sh +++ b/feeds/ipq40xx/ipq40xx/base-files/lib/upgrade/platform.sh @@ -83,12 +83,12 @@ platform_do_upgrade() { part="$(awk -F 'ubi.mtd=' '{printf $2}' /proc/cmdline | cut -d " " -f 1)" case "$part" in rootfs1) - fw_setenv active 2 || exit 1 CI_UBIPART="rootfs2" + CI_FWSETENV="active 2" ;; rootfs2) - fw_setenv active 1 || exit 1 CI_UBIPART="rootfs1" + CI_FWSETENV="active 1" ;; *) # legacy bootloader diff --git a/feeds/ipq807x/ipq807x/base-files/lib/upgrade/nand.sh b/feeds/ipq807x/ipq807x/base-files/lib/upgrade/nand.sh index 41a2de529..e8f10668d 100644 --- a/feeds/ipq807x/ipq807x/base-files/lib/upgrade/nand.sh +++ b/feeds/ipq807x/ipq807x/base-files/lib/upgrade/nand.sh @@ -247,8 +247,8 @@ nand_do_upgrade_success() { local conf_tar="/tmp/sysupgrade.tgz" sync [ "$CI_BOOTCFG" = 1 ] && nand_qca_update_bootconfig + [ -f "$conf_tar" ] && nand_restore_config "$conf_tar" && sync [ -n "$CI_FWSETENV" ] && fw_setenv $CI_FWSETENV - [ -f "$conf_tar" ] && nand_restore_config "$conf_tar" echo "sysupgrade successful" umount -a reboot -f diff --git a/feeds/ipq807x/ipq807x/base-files/lib/upgrade/platform.sh b/feeds/ipq807x/ipq807x/base-files/lib/upgrade/platform.sh index da189467a..499c39622 100755 --- a/feeds/ipq807x/ipq807x/base-files/lib/upgrade/platform.sh +++ b/feeds/ipq807x/ipq807x/base-files/lib/upgrade/platform.sh @@ -260,8 +260,8 @@ platform_do_upgrade() { else if [ -e /tmp/downgrade ]; then CI_UBIPART="rootfs1" - fw_setenv active 1 || exit 1 - fw_setenv upgrade_available 0 || exit 1 + { echo 'active 1'; echo 'upgrade_available 0'; } > /tmp/fw_setenv.txt || exit 1 + CI_FWSETENV="-s /tmp/fw_setenv.txt" elif grep -q rootfs1 /proc/cmdline; then CI_UBIPART="rootfs2" CI_FWSETENV="active 2" diff --git a/feeds/ipq807x_v5.4/ipq50xx/base-files/lib/upgrade/nand.sh b/feeds/ipq807x_v5.4/ipq50xx/base-files/lib/upgrade/nand.sh index 41a2de529..e8f10668d 100644 --- a/feeds/ipq807x_v5.4/ipq50xx/base-files/lib/upgrade/nand.sh +++ b/feeds/ipq807x_v5.4/ipq50xx/base-files/lib/upgrade/nand.sh @@ -247,8 +247,8 @@ nand_do_upgrade_success() { local conf_tar="/tmp/sysupgrade.tgz" sync [ "$CI_BOOTCFG" = 1 ] && nand_qca_update_bootconfig + [ -f "$conf_tar" ] && nand_restore_config "$conf_tar" && sync [ -n "$CI_FWSETENV" ] && fw_setenv $CI_FWSETENV - [ -f "$conf_tar" ] && nand_restore_config "$conf_tar" echo "sysupgrade successful" umount -a reboot -f diff --git a/feeds/ipq807x_v5.4/ipq60xx/base-files/lib/upgrade/nand.sh b/feeds/ipq807x_v5.4/ipq60xx/base-files/lib/upgrade/nand.sh index 41a2de529..e8f10668d 100644 --- a/feeds/ipq807x_v5.4/ipq60xx/base-files/lib/upgrade/nand.sh +++ b/feeds/ipq807x_v5.4/ipq60xx/base-files/lib/upgrade/nand.sh @@ -247,8 +247,8 @@ nand_do_upgrade_success() { local conf_tar="/tmp/sysupgrade.tgz" sync [ "$CI_BOOTCFG" = 1 ] && nand_qca_update_bootconfig + [ -f "$conf_tar" ] && nand_restore_config "$conf_tar" && sync [ -n "$CI_FWSETENV" ] && fw_setenv $CI_FWSETENV - [ -f "$conf_tar" ] && nand_restore_config "$conf_tar" echo "sysupgrade successful" umount -a reboot -f diff --git a/feeds/ipq807x_v5.4/ipq60xx/base-files/lib/upgrade/platform.sh b/feeds/ipq807x_v5.4/ipq60xx/base-files/lib/upgrade/platform.sh index cd0a59bd2..ecf141df1 100755 --- a/feeds/ipq807x_v5.4/ipq60xx/base-files/lib/upgrade/platform.sh +++ b/feeds/ipq807x_v5.4/ipq60xx/base-files/lib/upgrade/platform.sh @@ -122,10 +122,10 @@ platform_do_upgrade() { else if grep -q rootfs1 /proc/cmdline; then CI_UBIPART="rootfs2" - fw_setenv active 2 || exit 1 + CI_FWSETENV="active 2" else CI_UBIPART="rootfs1" - fw_setenv active 1 || exit 1 + CI_FWSETENV="active 1" fi fi nand_upgrade_tar "$1" diff --git a/feeds/ipq807x_v5.4/ipq807x/base-files/lib/upgrade/nand.sh b/feeds/ipq807x_v5.4/ipq807x/base-files/lib/upgrade/nand.sh index 41a2de529..e8f10668d 100644 --- a/feeds/ipq807x_v5.4/ipq807x/base-files/lib/upgrade/nand.sh +++ b/feeds/ipq807x_v5.4/ipq807x/base-files/lib/upgrade/nand.sh @@ -247,8 +247,8 @@ nand_do_upgrade_success() { local conf_tar="/tmp/sysupgrade.tgz" sync [ "$CI_BOOTCFG" = 1 ] && nand_qca_update_bootconfig + [ -f "$conf_tar" ] && nand_restore_config "$conf_tar" && sync [ -n "$CI_FWSETENV" ] && fw_setenv $CI_FWSETENV - [ -f "$conf_tar" ] && nand_restore_config "$conf_tar" echo "sysupgrade successful" umount -a reboot -f diff --git a/feeds/ipq807x_v5.4/ipq807x/base-files/lib/upgrade/platform.sh b/feeds/ipq807x_v5.4/ipq807x/base-files/lib/upgrade/platform.sh index 777c44196..4f4585f62 100755 --- a/feeds/ipq807x_v5.4/ipq807x/base-files/lib/upgrade/platform.sh +++ b/feeds/ipq807x_v5.4/ipq807x/base-files/lib/upgrade/platform.sh @@ -61,12 +61,16 @@ platform_do_upgrade() { if [ "$(find_mtd_chardev rootfs)" ]; then CI_UBIPART="rootfs" else - if grep -q rootfs1 /proc/cmdline; then + if [ -e /tmp/downgrade ]; then + CI_UBIPART="rootfs1" + { echo 'active 1'; echo 'upgrade_available 0'; } > /tmp/fw_setenv.txt || exit 1 + CI_FWSETENV="-s /tmp/fw_setenv.txt" + elif grep -q rootfs1 /proc/cmdline; then CI_UBIPART="rootfs2" - fw_setenv active 2 || exit 1 + CI_FWSETENV="active 2" else CI_UBIPART="rootfs1" - fw_setenv active 1 || exit 1 + CI_FWSETENV="active 1" fi fi nand_upgrade_tar "$1" diff --git a/feeds/ipq95xx/ipq95xx/base-files/lib/upgrade/nand.sh b/feeds/ipq95xx/ipq95xx/base-files/lib/upgrade/nand.sh index 539f535c4..659892b81 100644 --- a/feeds/ipq95xx/ipq95xx/base-files/lib/upgrade/nand.sh +++ b/feeds/ipq95xx/ipq95xx/base-files/lib/upgrade/nand.sh @@ -247,8 +247,8 @@ nand_do_upgrade_success() { local conf_tar="/tmp/sysupgrade.tgz" sync [ "$CI_BOOTCFG" = 1 ] && nand_qca_update_bootconfig + [ -f "$conf_tar" ] && nand_restore_config "$conf_tar" && sync [ -n "$CI_FWSETENV" ] && fw_setenv $CI_FWSETENV - [ -f "$conf_tar" ] && nand_restore_config "$conf_tar" echo "sysupgrade successful" umount -a sleep 5