From c138fbdfb6178949e057e93b586e29a6490883d4 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 13 Mar 2020 22:43:23 +0100 Subject: [PATCH 01/10] Fix bpi-r2 kernel --- root/target/linux/mediatek/mt7623/config-4.19 | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/root/target/linux/mediatek/mt7623/config-4.19 b/root/target/linux/mediatek/mt7623/config-4.19 index a7853f52..4a4d2c53 100644 --- a/root/target/linux/mediatek/mt7623/config-4.19 +++ b/root/target/linux/mediatek/mt7623/config-4.19 @@ -34,14 +34,16 @@ CONFIG_ARM=y CONFIG_ARM_APPENDED_DTB=y CONFIG_ARM_ARCH_TIMER=y CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y -# CONFIG_ARM_ATAG_DTB_COMPAT is not set +CONFIG_ARM_ATAG_DTB_COMPAT=y +CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND=y +# CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER is not set CONFIG_ARM_CPU_SUSPEND=y # CONFIG_ARM_CPU_TOPOLOGY is not set CONFIG_ARM_GIC=y CONFIG_ARM_HAS_SG_CHAIN=y CONFIG_ARM_L1_CACHE_SHIFT=6 CONFIG_ARM_L1_CACHE_SHIFT_6=y -# CONFIG_ARM_LPAE is not set +CONFIG_ARM_LPAE=y CONFIG_ARM_MEDIATEK_CPUFREQ=y CONFIG_ARM_PATCH_IDIV=y CONFIG_ARM_PATCH_PHYS_VIRT=y @@ -53,6 +55,7 @@ CONFIG_ARM_VIRT_EXT=y CONFIG_ATAGS=y CONFIG_AUTO_ZRELADDR=y # CONFIG_BCM84881_PHY is not set +CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_MQ_PCI=y CONFIG_BOUNCE=y # CONFIG_CACHE_L2X0 is not set @@ -60,7 +63,7 @@ CONFIG_CLEANCACHE=y CONFIG_CLKDEV_LOOKUP=y CONFIG_CLKSRC_MMIO=y CONFIG_CLONE_BACKWARDS=y -CONFIG_CMDLINE="earlyprintk console=ttyS0,115200 rootfstype=squashfs,jffs2" +CONFIG_CMDLINE="earlyprintk console=ttyS0,115200 vmalloc=256M" CONFIG_CMDLINE_FROM_BOOTLOADER=y CONFIG_COMMON_CLK=y CONFIG_COMMON_CLK_MEDIATEK=y From 9d659000baa1c5849a98b67572df01b50f358153 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Sat, 14 Mar 2020 09:14:25 +0100 Subject: [PATCH 02/10] Back to a previous config for bpi-r2 kernel without wifi --- root/target/linux/mediatek/mt7623/config-4.19 | 69 ++++++++++++++----- 1 file changed, 50 insertions(+), 19 deletions(-) diff --git a/root/target/linux/mediatek/mt7623/config-4.19 b/root/target/linux/mediatek/mt7623/config-4.19 index 4a4d2c53..c162f5c0 100644 --- a/root/target/linux/mediatek/mt7623/config-4.19 +++ b/root/target/linux/mediatek/mt7623/config-4.19 @@ -1,6 +1,8 @@ # CONFIG_AIO is not set CONFIG_ALIGNMENT_TRAP=y +# CONFIG_ARCH_AXXIA is not set CONFIG_ARCH_CLOCKSOURCE_DATA=y +CONFIG_ARCH_DMA_ADDR_T_64BIT=y CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y CONFIG_ARCH_HAS_ELF_RANDOMIZE=y CONFIG_ARCH_HAS_FORTIFY_SOURCE=y @@ -8,6 +10,7 @@ CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y CONFIG_ARCH_HAS_KCOV=y CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y CONFIG_ARCH_HAS_PHYS_TO_DMA=y +CONFIG_ARCH_HAS_PTE_SPECIAL=y CONFIG_ARCH_HAS_SET_MEMORY=y CONFIG_ARCH_HAS_SG_CHAIN=y CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y @@ -52,32 +55,35 @@ CONFIG_ARM_THUMB=y CONFIG_ARM_THUMBEE=y CONFIG_ARM_UNWIND=y CONFIG_ARM_VIRT_EXT=y +CONFIG_ASN1=y +CONFIG_ASSOCIATIVE_ARRAY=y CONFIG_ATAGS=y CONFIG_AUTO_ZRELADDR=y # CONFIG_BCM84881_PHY is not set -CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_MQ_PCI=y -CONFIG_BOUNCE=y # CONFIG_CACHE_L2X0 is not set CONFIG_CLEANCACHE=y CONFIG_CLKDEV_LOOKUP=y CONFIG_CLKSRC_MMIO=y CONFIG_CLONE_BACKWARDS=y +CONFIG_CLZ_TAB=y CONFIG_CMDLINE="earlyprintk console=ttyS0,115200 vmalloc=256M" -CONFIG_CMDLINE_FROM_BOOTLOADER=y +CONFIG_CMDLINE_EXTEND=y CONFIG_COMMON_CLK=y CONFIG_COMMON_CLK_MEDIATEK=y CONFIG_COMMON_CLK_MT2701=y -# CONFIG_COMMON_CLK_MT2701_AUDSYS is not set +CONFIG_COMMON_CLK_MT2701_AUDSYS=y CONFIG_COMMON_CLK_MT2701_BDPSYS=y CONFIG_COMMON_CLK_MT2701_ETHSYS=y -# CONFIG_COMMON_CLK_MT2701_G3DSYS is not set +CONFIG_COMMON_CLK_MT2701_G3DSYS=y CONFIG_COMMON_CLK_MT2701_HIFSYS=y CONFIG_COMMON_CLK_MT2701_IMGSYS=y CONFIG_COMMON_CLK_MT2701_MMSYS=y CONFIG_COMMON_CLK_MT2701_VDECSYS=y # CONFIG_COMMON_CLK_MT7622 is not set -# CONFIG_COMMON_CLK_MT7629 is not set +CONFIG_COMMON_CLK_MT7629=y +# CONFIG_COMMON_CLK_MT7629_ETHSYS is not set +# CONFIG_COMMON_CLK_MT7629_HIFSYS is not set # CONFIG_COMMON_CLK_MT8135 is not set # CONFIG_COMMON_CLK_MT8173 is not set CONFIG_COREDUMP=y @@ -112,6 +118,7 @@ CONFIG_CPU_SPECTRE=y CONFIG_CPU_THUMB_CAPABLE=y CONFIG_CPU_TLB_V7=y CONFIG_CPU_V7=y +CONFIG_CRASH_CORE=y CONFIG_CRC16=y # CONFIG_CRC32_SARWATE is not set CONFIG_CRC32_SLICEBY8=y @@ -119,18 +126,18 @@ CONFIG_CROSS_MEMORY_ATTACH=y CONFIG_CRYPTO_ACOMP2=y CONFIG_CRYPTO_AEAD=y CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_AKCIPHER=y +CONFIG_CRYPTO_AKCIPHER2=y CONFIG_CRYPTO_CRC32=y CONFIG_CRYPTO_CRC32C=y CONFIG_CRYPTO_CTR=y CONFIG_CRYPTO_DEFLATE=y -CONFIG_CRYPTO_DEV_MEDIATEK=y CONFIG_CRYPTO_DRBG=y CONFIG_CRYPTO_DRBG_HMAC=y CONFIG_CRYPTO_DRBG_MENU=y CONFIG_CRYPTO_HASH=y CONFIG_CRYPTO_HASH2=y CONFIG_CRYPTO_HMAC=y -CONFIG_CRYPTO_HW=y CONFIG_CRYPTO_JITTERENTROPY=y CONFIG_CRYPTO_LZO=y CONFIG_CRYPTO_MANAGER=y @@ -140,6 +147,7 @@ CONFIG_CRYPTO_NULL2=y CONFIG_CRYPTO_RNG=y CONFIG_CRYPTO_RNG2=y CONFIG_CRYPTO_RNG_DEFAULT=y +CONFIG_CRYPTO_RSA=y CONFIG_CRYPTO_SEQIV=y CONFIG_CRYPTO_SHA1=y CONFIG_CRYPTO_SHA256=y @@ -164,7 +172,7 @@ CONFIG_DEBUG_UART_PHYS=0x11004000 CONFIG_DEBUG_UART_VIRT=0xf1004000 CONFIG_DEBUG_UNCOMPRESS=y # CONFIG_DEBUG_USER is not set -CONFIG_DEFAULT_MPTCP_PM="fullmesh" +CONFIG_DEFAULT_NETLINK=y CONFIG_DMADEVICES=y CONFIG_DMA_ENGINE=y CONFIG_DMA_OF=y @@ -212,7 +220,7 @@ CONFIG_GPIOLIB=y CONFIG_GPIO_SYSFS=y # CONFIG_GPS is not set CONFIG_HANDLE_DOMAIN_IRQ=y -CONFIG_HARDEN_BRANCH_PREDICTOR=y +# CONFIG_HARDEN_BRANCH_PREDICTOR is not set CONFIG_HARDIRQS_SW_RESEND=y CONFIG_HAS_DMA=y CONFIG_HAS_IOMEM=y @@ -225,6 +233,7 @@ CONFIG_HAVE_ARCH_PFN_VALID=y CONFIG_HAVE_ARCH_SECCOMP_FILTER=y CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y CONFIG_HAVE_ARCH_TRACEHOOK=y +CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y CONFIG_HAVE_ARM_ARCH_TIMER=y CONFIG_HAVE_ARM_SMCCC=y CONFIG_HAVE_CLK=y @@ -241,6 +250,7 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y CONFIG_HAVE_FUNCTION_TRACER=y CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_HAVE_GENERIC_GUP=y CONFIG_HAVE_IDE=y CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y CONFIG_HAVE_LD_DEAD_CODE_DATA_ELIMINATION=y @@ -253,19 +263,20 @@ CONFIG_HAVE_PERF_EVENTS=y CONFIG_HAVE_PERF_REGS=y CONFIG_HAVE_PERF_USER_STACK_DUMP=y CONFIG_HAVE_PROC_CPU=y +CONFIG_HAVE_RCU_TABLE_FREE=y CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y CONFIG_HAVE_RSEQ=y CONFIG_HAVE_SMP=y CONFIG_HAVE_SYSCALL_TRACEPOINTS=y CONFIG_HAVE_UID16=y CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y -CONFIG_HIGHMEM=y -# CONFIG_HIGHPTE is not set CONFIG_HOTPLUG_CPU=y +# CONFIG_HUGETLBFS is not set CONFIG_HWMON=y CONFIG_HW_RANDOM=y CONFIG_HW_RANDOM_MTK=y CONFIG_HZ_FIXED=0 +CONFIG_HZ_PERIODIC=y CONFIG_I2C=y CONFIG_I2C_BOARDINFO=y CONFIG_I2C_CHARDEV=y @@ -274,7 +285,11 @@ CONFIG_ICPLUS_PHY=y CONFIG_IIO=y # CONFIG_IIO_BUFFER is not set # CONFIG_IIO_TRIGGER is not set -CONFIG_INITRAMFS_SOURCE="" +CONFIG_INITRAMFS_COMPRESSION="" +# CONFIG_INITRAMFS_FORCE is not set +CONFIG_INITRAMFS_ROOT_GID=1000 +CONFIG_INITRAMFS_ROOT_UID=1000 +CONFIG_INITRAMFS_SOURCE="/openwrt/trunk/build_dir/target-arm_cortex-a7_musl-1.1.14_eabi/root-mediatek /openwrt/trunk/target/linux/generic/image/initramfs-base-files.txt" # CONFIG_IOMMU_DEBUGFS is not set # CONFIG_IOMMU_IO_PGTABLE_ARMV7S is not set # CONFIG_IOMMU_IO_PGTABLE_LPAE is not set @@ -286,6 +301,9 @@ CONFIG_IRQ_FORCED_THREADING=y CONFIG_IRQ_WORK=y CONFIG_JBD2=y CONFIG_KALLSYMS=y +CONFIG_KEXEC=y +CONFIG_KEXEC_CORE=y +CONFIG_KEYS=y CONFIG_LEDS_MT6323=y CONFIG_LIBFDT=y CONFIG_LOCK_DEBUGGING_SUPPORT=y @@ -297,7 +315,7 @@ CONFIG_LZO_DECOMPRESS=y # CONFIG_MACH_MT6589 is not set # CONFIG_MACH_MT6592 is not set CONFIG_MACH_MT7623=y -# CONFIG_MACH_MT7629 is not set +CONFIG_MACH_MT7629=y # CONFIG_MACH_MT8127 is not set # CONFIG_MACH_MT8135 is not set CONFIG_MAGIC_SYSRQ=y @@ -322,6 +340,12 @@ CONFIG_MMC_SDHCI=y CONFIG_MMC_SDHCI_PLTFM=y # CONFIG_MMC_TIFM_SD is not set CONFIG_MODULES_USE_ELF_REL=y +CONFIG_MPILIB=y +# CONFIG_MPTCP_BINDER is not set +# CONFIG_MPTCP_FULLMESH is not set +# CONFIG_MPTCP_NDIFFPORTS is not set +# CONFIG_MPTCP_REDUNDANT is not set +# CONFIG_MPTCP_ROUNDROBIN is not set # CONFIG_MT753X_GSW is not set CONFIG_MTD_BLOCK2MTD=y CONFIG_MTD_CMDLINE_PARTS=y @@ -349,7 +373,7 @@ CONFIG_MTK_EFUSE=y CONFIG_MTK_INFRACFG=y # CONFIG_MTK_IOMMU is not set # CONFIG_MTK_IOMMU_V1 is not set -CONFIG_MTK_PLATFORM="" +CONFIG_MTK_PLATFORM="mt7623" CONFIG_MTK_PMIC_WRAP=y CONFIG_MTK_SCPSYS=y CONFIG_MTK_THERMAL=y @@ -358,6 +382,7 @@ CONFIG_MUTEX_SPIN_ON_OWNER=y CONFIG_NEED_DMA_MAP_STATE=y CONFIG_NEON=y CONFIG_NET_DSA=y +CONFIG_NET_DSA_LEGACY=y CONFIG_NET_DSA_MT7530=y CONFIG_NET_DSA_TAG_MTK=y CONFIG_NET_FLOW_LIMIT=y @@ -368,9 +393,6 @@ CONFIG_NET_VENDOR_MEDIATEK=y # CONFIG_NET_VENDOR_WIZNET is not set CONFIG_NLS=y CONFIG_NO_BOOTMEM=y -CONFIG_NO_HZ=y -CONFIG_NO_HZ_COMMON=y -CONFIG_NO_HZ_IDLE=y CONFIG_NR_CPUS=4 CONFIG_NVMEM=y CONFIG_OF=y @@ -398,15 +420,18 @@ CONFIG_PCI_MSI=y CONFIG_PCI_MSI_IRQ_DOMAIN=y # CONFIG_PCI_V3_SEMI is not set CONFIG_PERF_USE_VMALLOC=y -CONFIG_PGTABLE_LEVELS=2 +CONFIG_PGTABLE_LEVELS=3 +CONFIG_PGTABLE_MAPPING=y CONFIG_PHYLIB=y CONFIG_PHYLINK=y +CONFIG_PHYS_ADDR_T_64BIT=y CONFIG_PHY_MTK_TPHY=y # CONFIG_PHY_MTK_XSPHY is not set CONFIG_PINCTRL=y CONFIG_PINCTRL_MT2701=y CONFIG_PINCTRL_MT6397=y CONFIG_PINCTRL_MT7623=y +CONFIG_PINCTRL_MT7629=y CONFIG_PINCTRL_MTK=y CONFIG_PINCTRL_MTK_MOORE=y CONFIG_PLUGIN_HOSTCC="g++" @@ -475,6 +500,7 @@ CONFIG_SPI_MEM=y CONFIG_SPI_MT65XX=y # CONFIG_SPI_MTK_SNFI is not set CONFIG_SPMI=y +# CONFIG_SPS30 is not set CONFIG_SRCU=y CONFIG_STREAM_PARSER=y # CONFIG_STRIP_ASM_SYMS is not set @@ -484,6 +510,7 @@ CONFIG_SWCONFIG=y CONFIG_SWPHY=y CONFIG_SWP_EMULATE=y CONFIG_SYS_SUPPORTS_APM_EMULATION=y +CONFIG_SYS_SUPPORTS_HUGETLBFS=y CONFIG_TASKS_RCU=y # CONFIG_TCP_CONG_NANQINLANG is not set CONFIG_THERMAL=y @@ -515,6 +542,8 @@ CONFIG_VFP=y CONFIG_VFPv3=y CONFIG_VM_EVENT_COUNTERS=y CONFIG_WATCHDOG_CORE=y +# CONFIG_WIRELESS is not set +# CONFIG_WLAN is not set CONFIG_XPS=y CONFIG_XZ_DEC_ARM=y CONFIG_XZ_DEC_BCJ=y @@ -522,3 +551,5 @@ CONFIG_ZBOOT_ROM_BSS=0 CONFIG_ZBOOT_ROM_TEXT=0 CONFIG_ZLIB_DEFLATE=y CONFIG_ZLIB_INFLATE=y +CONFIG_ZSMALLOC=y +# CONFIG_ZSMALLOC_STAT is not set From 304dbdde7033615be14324a99d0478040ffdce87 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Mon, 16 Mar 2020 20:03:43 +0100 Subject: [PATCH 03/10] Add smsc75xx driver support --- build.sh | 6 ++++++ patches/smsc75xx.patch | 26 ++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 patches/smsc75xx.patch diff --git a/build.sh b/build.sh index 7fe23ff8..3a4fe86e 100755 --- a/build.sh +++ b/build.sh @@ -172,6 +172,12 @@ if ! patch -Rf -N -p1 -s --dry-run < ../../patches/nanqinlang.patch; then fi echo "Done" +echo "Checking if smsc75xx patch is set or not" +if ! patch -Rf -N -p1 -s --dry-run < ../../patches/smsc75xx.patch; then + patch -N -p1 -s < ../../patches/smsc75xx.patch +fi +echo "Done" + #echo "Patch protobuf wrong hash" #patch -N -R -p1 -s < ../../patches/protobuf_hash.patch diff --git a/patches/smsc75xx.patch b/patches/smsc75xx.patch new file mode 100644 index 00000000..1dd1cbbb --- /dev/null +++ b/patches/smsc75xx.patch @@ -0,0 +1,26 @@ +Index: package/kernel/linux/modules/usb.mk +=================================================================== +--- package/kernel/linux/modules/usb.mk (revisione 42462) ++++ package/kernel/linux/modules/usb.mk (copia locale) +@@ -1091,8 +1091,21 @@ + endef + + $(eval $(call KernelPackage,usb-net-smsc95xx)) ++ ++define KernelPackage/usb-net-smsc75xx ++ TITLE:=SMSC LAN75XX based USB 2.0 Gigabit ethernet devices ++ KCONFIG:=CONFIG_USB_NET_SMSC75XX ++ FILES:=$(LINUX_DIR)/drivers/$(USBNET_DIR)/smsc75xx.ko ++ AUTOLOAD:=$(call AutoProbe,smsc75xx) ++ $(call AddDepends/usb-net, +kmod-lib-crc16) ++endef + ++define KernelPackage/usb-net-smsc75xx/description ++ Kernel module for SMSC LAN75XX based devices ++endef + ++$(eval $(call KernelPackage,usb-net-smsc75xx)) ++ + define KernelPackage/usb-net-dm9601-ether + TITLE:=Support for DM9601 ethernet connections + KCONFIG:=CONFIG_USB_NET_DM9601 From 16818d7246b34f3a3d2676479790e9d90178c97f Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Sat, 21 Mar 2020 12:13:01 +0100 Subject: [PATCH 04/10] Fix smsc75xx patch --- patches/smsc75xx.patch | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/patches/smsc75xx.patch b/patches/smsc75xx.patch index 1dd1cbbb..e08dab97 100644 --- a/patches/smsc75xx.patch +++ b/patches/smsc75xx.patch @@ -1,7 +1,7 @@ Index: package/kernel/linux/modules/usb.mk =================================================================== ---- package/kernel/linux/modules/usb.mk (revisione 42462) -+++ package/kernel/linux/modules/usb.mk (copia locale) +--- a/package/kernel/linux/modules/usb.mk (revisione 42462) ++++ b/package/kernel/linux/modules/usb.mk (copia locale) @@ -1091,8 +1091,21 @@ endef From 01558793adba80a26ccb99a3121e38b2e9140e72 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 17 Dec 2020 09:33:56 +0100 Subject: [PATCH 05/10] Add again BBR2 disable patch --- build.sh | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/build.sh b/build.sh index 7894b0ce..8a3ebd24 100755 --- a/build.sh +++ b/build.sh @@ -237,12 +237,14 @@ fi echo "Done" # Add BBR2 patch, only working on 64bits images for now -echo "Checking if BBRv2 patch is set or not" -if ! patch -Rf -N -p1 -s --dry-run < ../../patches/bbr2.patch; then - echo "apply..." - patch -N -p1 -s < ../../patches/bbr2.patch +if [ "$OMR_TARGET" = "x86_64" ] || [ "$OMR_TARGET" = "bpi-r64" ] || [ "$OMR_TARGET" = "rpi4" ] || [ "$OMR_TARGET" = "espressobin" ] || [ "$OMR_TARGET" = "r2s" ] || [ "$OMR_TARGET" = "rpi3" ]; then + echo "Checking if BBRv2 patch is set or not" + if ! patch -Rf -N -p1 -s --dry-run < ../../patches/bbr2.patch; then + echo "apply..." + patch -N -p1 -s < ../../patches/bbr2.patch + fi + echo "Done" fi -echo "Done" echo "Checking if smsc75xx patch is set or not" if ! patch -Rf -N -p1 -s --dry-run < ../../patches/smsc75xx.patch; then From 1222a62634a33b99caa2780701bddd4416c8ebcd Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Wed, 23 Dec 2020 07:32:16 +0100 Subject: [PATCH 06/10] Update Readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a332c0a9..ed21fbcd 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ OpenMPTCProuter is an open source solution to aggregate and encrypt multiple internet connections and terminates it over any VPS which make clients benefit security, reliability, net neutrality, as well as dedicated public IP. -The aggregation is based on Multipath TCP (MPTCP), which is ISP, WAN type, and latency independent "whether it was Fiber, VDSL, SHDSL, ADSL or even 4G", different scenarios can be configured to have either aggregation or failover based on MPTCP. +The aggregation is based on Multipath TCP (MPTCP), which is ISP, WAN type, and latency independent "whether it was Fiber, VDSL, SHDSL, ADSL, 4G or even 5G", different scenarios can be configured to have either aggregation or failover based on MPTCP. Aggregation via [Multi-link VPN (MLVPN)](https://github.com/markfoodyburton/MLVPN/commits/new-reorder) and [Glorytun UDP](https://github.com/angt/glorytun) with multipath support are also supported. From d5dd1a534cb5fb35110cb43cd4dcab47c18c368e Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Mon, 28 Dec 2020 14:43:01 +0100 Subject: [PATCH 07/10] Remove some bpi changes --- .../lib/preinit/06_set_rps_sock_flow | 8 -- .../base-files/lib/preinit/07_set_iface_mac | 48 ----------- .../base-files/lib/preinit/79_move_config | 19 ----- .../base-files/lib/preinit/90_init_jffs2 | 7 -- .../base-files/lib/upgrade/platform.sh | 85 ------------------- 5 files changed, 167 deletions(-) delete mode 100644 root/target/linux/mediatek/base-files/lib/preinit/06_set_rps_sock_flow delete mode 100644 root/target/linux/mediatek/base-files/lib/preinit/07_set_iface_mac delete mode 100644 root/target/linux/mediatek/base-files/lib/preinit/79_move_config delete mode 100644 root/target/linux/mediatek/base-files/lib/preinit/90_init_jffs2 delete mode 100755 root/target/linux/mediatek/base-files/lib/upgrade/platform.sh diff --git a/root/target/linux/mediatek/base-files/lib/preinit/06_set_rps_sock_flow b/root/target/linux/mediatek/base-files/lib/preinit/06_set_rps_sock_flow deleted file mode 100644 index 9a84ff4b..00000000 --- a/root/target/linux/mediatek/base-files/lib/preinit/06_set_rps_sock_flow +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -set_rps_sock_flow() { - echo 1024 > /proc/sys/net/core/rps_sock_flow_entries -} - -boot_hook_add preinit_main set_rps_sock_flow - diff --git a/root/target/linux/mediatek/base-files/lib/preinit/07_set_iface_mac b/root/target/linux/mediatek/base-files/lib/preinit/07_set_iface_mac deleted file mode 100644 index 1ad70145..00000000 --- a/root/target/linux/mediatek/base-files/lib/preinit/07_set_iface_mac +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/sh -# Copyright (C) 2018 OpenWrt.org - -RECOVERY_PART=/dev/mmcblk0p1 - -preinit_set_mac_address() { - local mac - - . /lib/functions.sh - . /lib/functions/system.sh - - case $(board_name) in - 'bananapi,bpi-r2'|\ - "unielec,u7623"*) - if [ -b $RECOVERY_PART ]; then - insmod nls_cp437 - insmod nls_iso8859-1 - insmod fat - insmod vfat - mkdir -p /tmp/recovery - mount -o rw,noatime $RECOVERY_PART /tmp/recovery - - if [ -f "/tmp/recovery/mac_addr" ]; - then - mac=$(cat /tmp/recovery/mac_addr) - else - mac=$(cat /sys/class/net/eth0/address) - echo "$mac" > /tmp/recovery/mac_addr - fi - - sync - umount /tmp/recovery - rm -rf /tmp/recovery - fi - - ip link set dev lan address $mac 2> /dev/null - - mac=$(macaddr_add $mac 1) - - ip link set dev wan1 address $mac 2>/dev/null - ip link set dev wan2 address $mac 2>/dev/null - ip link set dev wan3 address $mac 2>/dev/null - ip link set dev wan4 address $mac 2>/dev/null - ;; - esac -} - -boot_hook_add preinit_main preinit_set_mac_address diff --git a/root/target/linux/mediatek/base-files/lib/preinit/79_move_config b/root/target/linux/mediatek/base-files/lib/preinit/79_move_config deleted file mode 100644 index e8e62883..00000000 --- a/root/target/linux/mediatek/base-files/lib/preinit/79_move_config +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh -# Copyright (C) 2015 OpenWrt.org - -RECOVERY_PART=/dev/mmcblk0p1 - -move_config() { - if [ -b $RECOVERY_PART ]; then - insmod nls_cp437 - insmod nls_iso8859-1 - insmod fat - insmod vfat - mkdir -p /recovery - mount -o rw,noatime $RECOVERY_PART /recovery - [ -f /recovery/sysupgrade.tgz ] && mv -f /recovery/sysupgrade.tgz / - umount /recovery - fi -} - -boot_hook_add preinit_mount_root move_config diff --git a/root/target/linux/mediatek/base-files/lib/preinit/90_init_jffs2 b/root/target/linux/mediatek/base-files/lib/preinit/90_init_jffs2 deleted file mode 100644 index 8a510b74..00000000 --- a/root/target/linux/mediatek/base-files/lib/preinit/90_init_jffs2 +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh -do_firstboot() { - if [ "$(mount | grep jffs2)" = "" ]; then - /sbin/firstboot -y - fi -} -boot_hook_add preinit_main do_firstboot \ No newline at end of file diff --git a/root/target/linux/mediatek/base-files/lib/upgrade/platform.sh b/root/target/linux/mediatek/base-files/lib/upgrade/platform.sh deleted file mode 100755 index ee69952e..00000000 --- a/root/target/linux/mediatek/base-files/lib/upgrade/platform.sh +++ /dev/null @@ -1,85 +0,0 @@ -platform_do_upgrade() { - local board=$(board_name) - case "$board" in - "unielec,u7623"*) - #Keep the persisten random mac address (if it exists) - mkdir -p /tmp/recovery - mount -o rw,noatime /dev/mmcblk0p1 /tmp/recovery - [ -f "/tmp/recovery/mac_addr" ] && \ - mv -f /tmp/recovery/mac_addr /tmp/ - umount /tmp/recovery - - #1310720 is the offset in bytes from the start of eMMC and to - #the location of the kernel (2560 512 byte sectors) - get_image "$1" | dd of=/dev/mmcblk0 bs=1310720 seek=1 conv=fsync - - mount -o rw,noatime /dev/mmcblk0p1 /tmp/recovery - [ -f "/tmp/mac_addr" ] && mv -f /tmp/mac_addr /tmp/recovery - sync - umount /tmp/recovery - ;; - bananapi,bpi-r2) - local tar_file="$1" - - echo "flashing kernel" - tar xf $tar_file sysupgrade-7623n-bananapi-bpi-r2/kernel -O | mtd write - kernel - - echo "flashing rootfs" - tar xf $tar_file sysupgrade-7623n-bananapi-bpi-r2/root -O | mtd write - rootfs - ;; - *) - default_do_upgrade "$ARGV" - ;; - esac -} - -PART_NAME=firmware - -platform_check_image() { - local board=$(board_name) - - [ "$#" -gt 1 ] && return 1 - - case "$board" in - bananapi,bpi-r2) - local tar_file="$1" - local kernel_length=`(tar xf $tar_file sysupgrade-7623n-bananapi-bpi-r2/kernel -O | wc -c) 2> /dev/null` - local rootfs_length=`(tar xf $tar_file sysupgrade-7623n-bananapi-bpi-r2/root -O | wc -c) 2> /dev/null` - [ "$kernel_length" = 0 -o "$rootfs_length" = 0 ] && { - echo "The upgrade image is corrupt." - return 1 - } - ;; - "unielec,u7623"*) - local magic="$(get_magic_long "$1")" - [ "$magic" != "27051956" ] && { - echo "Invalid image type." - return 1 - } - return 0 - ;; - - *) - echo "Sysupgrade is not supported on your board yet." - return 1 - ;; - esac - - return 0 -} - -platform_copy_config_emmc() { - mkdir -p /recovery - mount -o rw,noatime /dev/mmcblk0p1 /recovery - cp -af "$CONF_TAR" /recovery/ - sync - umount /recovery -} - -platform_copy_config() { - case "$(board_name)" in - "unielec,u7623"*) - platform_copy_config_emmc - ;; - esac -} From ff8441888822ef418a99e9761dd237eb4537c167 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Wed, 30 Dec 2020 16:53:02 +0100 Subject: [PATCH 08/10] Close issues after 90 days instead of 120 --- .github/workflows/stale.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 0df84802..7c2090c3 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -12,9 +12,9 @@ jobs: - uses: actions/stale@v3.0.10 with: repo-token: ${{ secrets.GITHUB_TOKEN }} - stale-issue-message: "This issue is stale because it has been open 120 days with no activity. Remove stale label or comment or this will be closed in 5 days" - stale-pr-message: 'It has been open 120 days with no activity. Remove stale label or comment or this will be closed in 5 days' - days-before-stale: 120 + stale-issue-message: "This issue is stale because it has been open 90 days with no activity. Remove stale label or comment or this will be closed in 5 days" + stale-pr-message: 'It has been open 90 days with no activity. Remove stale label or comment or this will be closed in 5 days' + days-before-stale: 90 days-before-close: 5 exempt-issue-labels: 'work-in-progress,enhancement' exempt-pr-labels: 'work-in-progress,enhancement' From 62f6e0b94ffef8f7ab3945f55ffb9f5277c6f6e8 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Wed, 30 Dec 2020 18:16:40 +0100 Subject: [PATCH 09/10] Fix banner version --- build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sh b/build.sh index 8a3ebd24..d56c61d8 100755 --- a/build.sh +++ b/build.sh @@ -116,7 +116,7 @@ cp -rf root/* "$OMR_TARGET/source" cat >> "$OMR_TARGET/source/package/base-files/files/etc/banner" < Date: Mon, 4 Jan 2021 14:27:16 +0100 Subject: [PATCH 10/10] Apply patch from tessares: mptcp: avoid meta zerowindow impacting subflow --- .../generic/hack-5.4/690-mptcp_trunk.patch | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/root/target/linux/generic/hack-5.4/690-mptcp_trunk.patch b/root/target/linux/generic/hack-5.4/690-mptcp_trunk.patch index eb246722..4161cd00 100644 --- a/root/target/linux/generic/hack-5.4/690-mptcp_trunk.patch +++ b/root/target/linux/generic/hack-5.4/690-mptcp_trunk.patch @@ -23651,3 +23651,33 @@ diff -aurN linux-5.4.64/tools/include/uapi/linux/bpf.h linux-5.4.64.mptcp/tools/ BPF_TCP_MAX_STATES /* Leave at the end! */ }; +diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c +index 37e229d2f615..b428f61d959c 100644 +--- linux-5.4.64/net/ipv4/tcp_input.c ++++ linux-5.4.64.mptcp/net/ipv4/tcp_input.c +@@ -4842,7 +4842,24 @@ static void tcp_data_queue(struct sock *sk, struct sk_buff *skb) + * Out of sequence packets to the out_of_order_queue. + */ + if (TCP_SKB_CB(skb)->seq == tp->rcv_nxt) { +- if (tcp_receive_window(tp) == 0) { ++ /* Receiving data on a zero window in MPTCP can occur due to ++ * reinjected data sent on another subflow filling the ++ * window. This semi-frequently occurs due to penalization ++ * while initially growing the congestion window. ++ * For the subflow, dropping the packet is seen (wrongly) as a ++ * loss, impacting the congestion control. ++ * ++ * To avoid this, accept the packet at the subflow level, and ++ * let the meta handle the segment. ++ * If it was a duplicate segment, or if it was a new segment ++ * somehow (a bug in the sender), it is up to the meta level to ++ * handle this and drop the segment. mptcp_data_ready is able to ++ * handle either case. ++ * ++ * We still check for rmem constraints, so there is no risk of ++ * queueing too much data. ++ */ ++ if (tcp_receive_window(tp) == 0 && !mptcp(tp)) { + NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPZEROWINDOWDROP); + goto out_of_window; + }