diff --git a/CONTRIBUTED.md b/CONTRIBUTED.md
index 331fe5befc..848483d322 100644
--- a/CONTRIBUTED.md
+++ b/CONTRIBUTED.md
@@ -1,67 +1,76 @@
# CONTRIBUTED
## Thanks to
-[](https://dlercloud.com)
+
+
+
## The Source of Packages
+
### Based on: [coolsnowwolf/lede](https://github.com/coolsnowwolf/lede).
-Package ntlf9t: [jsda/packages2](https://github.com/jsda/packages2).
-luci-theme-netgearv2 source: [tracemouse/luci-theme-netgear](https://github.com/tracemouse/luci-theme-netgear).
-luci-app-serverchan source: [tty228/luci-app-serverchan](https://github.com/tty228/luci-app-serverchan).
-OpenAppFilter source: [destan19/OpenAppFilter](https://github.com/destan19/OpenAppFilter).
-luci-app-smartinfo source: [animefansxj/luci-app-smartinfo](https://github.com/animefansxj/luci-app-smartinfo).
-luci-app-k3screenctrl source: [lwz322/luci-app-k3screenctrl](https://github.com/lwz322/luci-app-k3screenctrl).
-phicomm-k3screenctrl source: [lwz322/k3screenctrl\_build](https://github.com/lwz322/k3screenctrl_build).
-luci-app-smstool source: [f8q8/luci-app-smstool-master](https://github.com/f8q8/luci-app-smstool-master).
-luci-app-airwhu source: [KyleRicardo/luci-app-airwhu](https://github.com/KyleRicardo/luci-app-airwhu).
+
+#### Packages
+
+Package gargoyle: [ericpaulbishop/gargoyle](https://github.com/ericpaulbishop/gargoyle).
Package Lienol: [Lienol/openwrt-package](https://github.com/Lienol/openwrt-package).
-luci-app-bbr-mod source: [ntlf9t/luci-app-bbr-mod](https://github.com/ntlf9t/luci-app-bbr-mod).
-Package Openwrt-BBR: [anshi233/Openwrt-BBR](https://github.com/anshi233/Openwrt-BBR).
-simple-obfs source: [aa65535/openwrt-simple-obfs](https://github.com/aa65535/openwrt-simple-obfs).
-v2ray-plugin source: [honwen/openwrt-v2ray-plugin](https://github.com/honwen/openwrt-v2ray-plugin).
-Package zxlhhyccc: [zxlhhyccc/MY-lede](https://github.com/zxlhhyccc/MY-lede).
-luci-theme-argonv3 source: [jerrykuku/luci-theme-argon](https://github.com/jerrykuku/luci-theme-argon).
-luci-theme-darkmatter source: [apollo-ng/luci-theme-darkmatter](https://github.com/apollo-ng/luci-theme-darkmatter).
-openwrt-chinadns-ng source: [pexcn/openwrt-chinadns-ng](https://github.com/pexcn/openwrt-chinadns-ng).
-openwrt-udpspeeder source: [zhfreal/openwrt-UDPspeeder](https://github.com/zhfreal/openwrt-UDPspeeder).
-luci-app-onliner source: [rufengsuixing/luci-app-onliner](https://github.com/rufengsuixing/luci-app-onliner).
-luci-app-dockerman source: [KFERMercer/luci-app-dockerman](https://github.com/KFERMercer/luci-app-dockerman).
-luci-lib-docker source: [lisaac/luci-lib-docker](https://github.com/lisaac/luci-lib-docker).
-openwrt-iptvhelper source: [riverscn/openwrt-iptvhelper](https://github.com/riverscn/openwrt-iptvhelper).
-luci-app-autoipsetadder source: [rufengsuixing/luci-app-autoipsetadder](https://github.com/rufengsuixing/luci-app-autoipsetadder).
-luci-app-adguardhome source: [rufengsuixing/luci-app-adguardhome](https://github.com/rufengsuixing/luci-app-adguardhome).
-Rclone-OpenWrt source: [ElonH/Rclone-OpenWrt](https://github.com/ElonH/Rclone-OpenWrt).
-luci-app-usb3disable source: [rufengsuixing/luci-app-usb3disable](https://github.com/rufengsuixing/luci-app-usb3disable).
-luci-app-diskman source: [lisaac/luci-app-diskman](https://github.com/lisaac/luci-app-diskman).
-NanoPi R1s(h5) support: [jerrykuku/openwrt-nanopi-r1s-h5](https://github.com/jerrykuku/openwrt-nanopi-r1s-h5).
-NanoPi support: [speedyworldclub/nlede](https://github.com/speedyworldclub/nlede).
-luci-theme-opentomato source: [Leo-Jo-My/luci-theme-opentomato](https://github.com/Leo-Jo-My/luci-theme-opentomato).
-luci-theme-opentomcat source: [Leo-Jo-My/luci-theme-opentomcat](https://github.com/Leo-Jo-My/luci-theme-opentomcat).
-luci-theme-atmaterial source: [yangsongli/luci-theme-atmaterial](https://github.com/yangsongli/luci-theme-atmaterial).
-luci-theme-Butterfly source: [Leo-Jo-My/luci-theme-Butterfly](https://github.com/Leo-Jo-My/luci-theme-Butterfly).
+Package ntlf9t: [ntlf9t/repositories](https://github.com/ntlf9t?tab=repositories).
+
lua-maxminddb source: [jerrykuku/lua-maxminddb](https://github.com/jerrykuku/lua-maxminddb).
-package openwrt-mwol: [Mleaf/openwrt-mwol](https://github.com/Mleaf/openwrt-mwol).
-package gargoyle: [ericpaulbishop/gargoyle](https://github.com/ericpaulbishop/gargoyle).
-luci-app-qos-gargoyle source: [kuoruan/luci-app-qos-gargoyle](https://github.com/kuoruan/luci-app-qos-gargoyle).
-luci-theme-rosy source: [rosywrt/luci-theme-rosy](https://github.com/rosywrt/luci-theme-rosy).
-luci-theme-argon-mc source: [sypopo/luci-theme-argon-mc](https://github.com/sypopo/luci-theme-argon-mc).
+mentohust source: [KyleRicardo/MentoHUST-OpenWrt-ipk](https://github.com/KyleRicardo/MentoHUST-OpenWrt-ipk).
+node-request source: [jerrykuku/node-request](https://github.com/jerrykuku/node-request).
+openappfilter source: [destan19/OpenAppFilter](https://github.com/destan19/OpenAppFilter).
+openwrt-BBR source: [anshi233/Openwrt-BBR](https://github.com/anshi233/Openwrt-BBR).
+openwrt-chinadns-ng source: [pexcn/openwrt-chinadns-ng](https://github.com/pexcn/openwrt-chinadns-ng).
+openwrt-iptvhelper source: [riverscn/openwrt-iptvhelper](https://github.com/riverscn/openwrt-iptvhelper).
+openwrt-mwol source: [Mleaf/openwrt-mwol](https://github.com/Mleaf/openwrt-mwol).
+openwrt-ootoc source: [ElonH/ootoc-OpenWRT](https://github.com/ElonH/ootoc-OpenWRT).
+openwrt-rclone source: [ElonH/Rclone-OpenWrt](https://github.com/ElonH/Rclone-OpenWrt).
+openwrt-r8168 source: [BROBIRD/openwrt-r8168](https://github.com/BROBIRD/openwrt-r8168).
+openwrt-udpspeeder source: [zhfreal/openwrt-UDPspeeder](https://github.com/zhfreal/openwrt-UDPspeeder).
+phicomm-k3screenctrl source: [lwz322/k3screenctrl\_build](https://github.com/lwz322/k3screenctrl_build).
+scutclient source: [scutclient/scutclient](https://github.com/scutclient/scutclient).
+simple-obfs source: [aa65535/openwrt-simple-obfs](https://github.com/aa65535/openwrt-simple-obfs).
+v2ray-plugin source: [teddysun/v2ray-plugin](https://github.com/teddysun/v2ray-plugin).
+
+#### Luci Packages
+
+luci-app-airwhu source: [KyleRicardo/luci-app-airwhu](https://github.com/KyleRicardo/luci-app-airwhu).
+luci-app-adguardhome source: [rufengsuixing/luci-app-adguardhome](https://github.com/rufengsuixing/luci-app-adguardhome).
+luci-app-autoipsetadder source: [rufengsuixing/luci-app-autoipsetadder](https://github.com/rufengsuixing/luci-app-autoipsetadder).
+luci-app-bbr-mod source: [ntlf9t/luci-app-bbr-mod](https://github.com/ntlf9t/luci-app-bbr-mod).
+luci-app-beardropper source: [NateLol/natelol](https://github.com/NateLol/natelol).
luci-app-cupsd source: [F-Light/luci-app-cupsd](https://github.com/F-Light/luci-app-cupsd).
-ootoc-OpenWRT source: [ElonH/ootoc-OpenWRT](https://github.com/ElonH/ootoc-OpenWRT).
-r8168 source: [BROBIRD/openwrt-r8168](https://github.com/BROBIRD/openwrt-r8168).
-MentoHUST source: [KyleRicardo/MentoHUST-OpenWrt-ipk](https://github.com/KyleRicardo/MentoHUST-OpenWrt-ipk).
+luci-app-diskman source: [lisaac/luci-app-diskman](https://github.com/lisaac/luci-app-diskman).
+luci-app-dockerman source: [KFERMercer/luci-app-dockerman](https://github.com/KFERMercer/luci-app-dockerman).
+luci-app-jd-dailybonus source: [jerrykuku/luci-app-jd-dailybonus](https://github.com/jerrykuku/luci-app-jd-dailybonus).
+luci-app-k3screenctrl source: [lwz322/luci-app-k3screenctrl](https://github.com/lwz322/luci-app-k3screenctrl).
luci-app-mentohust source: [BoringCat/luci-app-mentohust](https://github.com/BoringCat/luci-app-mentohust).
luci-app-minieap source: [BoringCat/luci-app-minieap](https://github.com/BoringCat/luci-app-minieap).
-scutclient source: [scutclient/scutclient](https://github.com/scutclient/scutclient).
-MT-Wifi 5.0.4.0: [MeIsReallyBa/mt7615-dbdc-linux5.4](https://github.com/MeIsReallyBa/mt7615-dbdc-linux5.4).
-luci-app-scutclient source: [scutclient/luci-app-scutclient](https://github.com/scutclient/luci-app-scutclient).
-luci-theme-Butterfly-dark source: [Leo-Jo-My/luci-theme-Butterfly-dark](https://github.com/Leo-Jo-My/luci-theme-Butterfly-dark).
-luci-theme-argon-mod source: [Leo-Jo-My/luci-theme-argon-mod](https://github.com/Leo-Jo-My/luci-theme-argon-mod).
-node-request source: [jerrykuku/node-request](https://github.com/jerrykuku/node-request).
-luci-app-jd-dailybonus source: [jerrykuku/luci-app-jd-dailybonus](https://github.com/jerrykuku/luci-app-jd-dailybonus).
luci-app-oled source: [NateLol/luci-app-oled](https://github.com/NateLol/luci-app-oled).
-luci-app-beardropper source: [NateLol/natelol](https://github.com/NateLol/natelol).
+luci-app-onliner source: [rufengsuixing/luci-app-onliner](https://github.com/rufengsuixing/luci-app-onliner).
+luci-app-qos-gargoyle source: [kuoruan/luci-app-qos-gargoyle](https://github.com/kuoruan/luci-app-qos-gargoyle).
+luci-app-scutclient source: [scutclient/luci-app-scutclient](https://github.com/scutclient/luci-app-scutclient).
+luci-app-serverchan source: [tty228/luci-app-serverchan](https://github.com/tty228/luci-app-serverchan).
+luci-app-smartinfo source: [animefansxj/luci-app-smartinfo](https://github.com/animefansxj/luci-app-smartinfo).
+luci-app-smstool source: [f8q8/luci-app-smstool-master](https://github.com/f8q8/luci-app-smstool-master).
+luci-app-usb3disable source: [rufengsuixing/luci-app-usb3disable](https://github.com/rufengsuixing/luci-app-usb3disable).
luci-app-vssr source: [jerrykuku/luci-app-vssr](https://github.com/jerrykuku/luci-app-vssr).
+
+luci-lib-docker source: [lisaac/luci-lib-docker](https://github.com/lisaac/luci-lib-docker).
+
+luci-proto-minieap source: [ysc3839/luci-proto-minieap](https://github.com/ysc3839/luci-proto-minieap).
luci-proto-modemmanager source: [nickberry17/luci-proto-modemmanager](https://github.com/nickberry17/luci-proto-modemmanager).
+
+luci-theme-argonv3 source: [jerrykuku/luci-theme-argon](https://github.com/jerrykuku/luci-theme-argon).
+luci-theme-argon-mc source: [sypopo/luci-theme-argon-mc](https://github.com/sypopo/luci-theme-argon-mc).
+luci-theme-argon-mod source: [Leo-Jo-My/luci-theme-argon-mod](https://github.com/Leo-Jo-My/luci-theme-argon-mod).
+luci-theme-atmaterial source: [yangsongli/luci-theme-atmaterial](https://github.com/yangsongli/luci-theme-atmaterial).
+luci-theme-butterfly source: [Leo-Jo-My/luci-theme-butterfly](https://github.com/Leo-Jo-My/luci-theme-Butterfly).
+luci-theme-butterfly-dark source: [Leo-Jo-My/luci-theme-butterfly-dark](https://github.com/Leo-Jo-My/luci-theme-Butterfly-dark).
+luci-theme-darkmatter source: [apollo-ng/luci-theme-darkmatter](https://github.com/apollo-ng/luci-theme-darkmatter).
luci-theme-infinityfreedom source: [xiaoqingfengATGH/luci-theme-infinityfreedom](https://github.com/xiaoqingfengATGH/luci-theme-infinityfreedom).
-luci-proto-minieap source: [ysc3839/luci-proto-minieap](https://github.com/ysc3839/luci-proto-minieap).
+luci-theme-netgearv2 source: [tracemouse/luci-theme-netgear](https://github.com/tracemouse/luci-theme-netgear).
+luci-theme-opentomato source: [Leo-Jo-My/luci-theme-opentomato](https://github.com/Leo-Jo-My/luci-theme-opentomato).
+luci-theme-opentomcat source: [Leo-Jo-My/luci-theme-opentomcat](https://github.com/Leo-Jo-My/luci-theme-opentomcat).
+luci-theme-rosy source: [rosywrt/luci-theme-rosy](https://github.com/rosywrt/luci-theme-rosy).
diff --git a/README.md b/README.md
index f3fa242e54..0558804284 100644
--- a/README.md
+++ b/README.md
@@ -25,11 +25,11 @@ To build your own firmware you need a GNU/Linux, BSD or MacOSX system (case sens
sudo apt full-upgrade -y
sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
bzip2 ccache cmake cpio curl device-tree-compiler ecj fastjar flex gawk gettext gcc-multilib g++-multilib \
- git git-core gperf haveged help2man intltool lib32gcc1 libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev \
- libltdl-dev libmpc-dev libmpfr-dev libncurses5-dev libncurses5-dev libreadline-dev libssl-dev libtool libz-dev \
- lrzsz mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pip python3-ply \
- python-docutils qemu-utils re2c rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip vim \
- wget xmlto xxd zlib1g-dev
+ git gperf haveged help2man intltool lib32gcc1 libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \
+ libmpc-dev libmpfr-dev libncurses5-dev libncursesw5 libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \
+ mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pip python3-ply \
+ python-docutils qemu-utils re2c rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip \
+ vim wget xmlto xxd zlib1g-dev
```
- Method 2:
@@ -85,7 +85,7 @@ To build your own firmware you need a GNU/Linux, BSD or MacOSX system (case sens
2. Enter docker container and update feeds.
```bash
docker run --rm -it -v immortalwrt:/openwrt immortalwrt/opde:base
- ./scripts/feeds update -a && ./scripts/feeds install -a
+ ./scripts/feeds update -a && ./scripts/feeds install -a
```
- Tips: ImmortalWrt source code can not be cloned into NTFS filesystem (symbol link problem during compilation), but docker volume is fine.
diff --git a/include/image-commands.mk b/include/image-commands.mk
index 7be0184cb7..694aa57774 100644
--- a/include/image-commands.mk
+++ b/include/image-commands.mk
@@ -471,7 +471,7 @@ define Build/append-metadata
endef
# Convert a raw image into a $1 type image.
-# E.g. | qemu-image vdi
+# E.g. | qemu-image vdi
define Build/qemu-image
qemu-img convert -f raw -O $1 $@ $@.new
@mv $@.new $@
diff --git a/include/meson.mk b/include/meson.mk
index 12e38b9e71..ae17e18d2d 100644
--- a/include/meson.mk
+++ b/include/meson.mk
@@ -64,6 +64,7 @@ define Meson/CreateNativeFile
-e "s|@CC@|$(foreach BIN,$(HOSTCC),'$(BIN)',)|" \
-e "s|@CXX@|$(foreach BIN,$(HOSTCXX),'$(BIN)',)|" \
-e "s|@PKGCONFIG@|$(PKG_CONFIG)|" \
+ -e "s|@CMAKE@|$(STAGING_DIR_HOST)/bin/cmake|" \
-e "s|@CFLAGS@|$(foreach FLAG,$(HOST_CFLAGS) $(HOST_CPPFLAGS),'$(FLAG)',)|" \
-e "s|@CXXFLAGS@|$(foreach FLAG,$(HOST_CXXFLAGS) $(HOST_CPPFLAGS),'$(FLAG)',)|" \
-e "s|@LDFLAGS@|$(foreach FLAG,$(HOST_LDFLAGS),'$(FLAG)',)|" \
@@ -80,6 +81,7 @@ define Meson/CreateCrossFile
-e "s|@STRIP@|$(TARGET_CROSS)strip|" \
-e "s|@NM@|$(TARGET_NM)|" \
-e "s|@PKGCONFIG@|$(PKG_CONFIG)|" \
+ -e "s|@CMAKE@|$(STAGING_DIR_HOST)/bin/cmake|" \
-e "s|@CFLAGS@|$(foreach FLAG,$(TARGET_CFLAGS) $(EXTRA_CFLAGS) $(TARGET_CPPFLAGS) $(EXTRA_CPPFLAGS),'$(FLAG)',)|" \
-e "s|@CXXFLAGS@|$(foreach FLAG,$(TARGET_CXXFLAGS) $(EXTRA_CXXFLAGS) $(TARGET_CPPFLAGS) $(EXTRA_CPPFLAGS),'$(FLAG)',)|" \
-e "s|@LDFLAGS@|$(foreach FLAG,$(TARGET_LDFLAGS) $(EXTRA_LDFLAGS),'$(FLAG)',)|" \
diff --git a/include/prereq-build.mk b/include/prereq-build.mk
index e1993444f7..8123195849 100644
--- a/include/prereq-build.mk
+++ b/include/prereq-build.mk
@@ -198,5 +198,4 @@ prereq: $(STAGING_DIR_HOST)/bin/mkhash
# Install ldconfig stub
$(eval $(call TestHostCommand,ldconfig-stub,Failed to install stub, \
- touch $(STAGING_DIR_HOST)/bin/ldconfig && \
- chmod +x $(STAGING_DIR_HOST)/bin/ldconfig))
+ $(LN) /bin/true $(STAGING_DIR_HOST)/bin/ldconfig))
diff --git a/include/version.mk b/include/version.mk
index e1d92cc8b1..de1453fd25 100644
--- a/include/version.mk
+++ b/include/version.mk
@@ -23,7 +23,7 @@ PKG_CONFIG_DEPENDS += \
sanitize = $(call tolower,$(subst _,-,$(subst $(space),-,$(1))))
VERSION_NUMBER:=$(call qstrip,$(CONFIG_VERSION_NUMBER))
-VERSION_NUMBER:=$(if $(VERSION_NUMBER),$(VERSION_NUMBER),18.06-SNAPSHOT)
+VERSION_NUMBER:=$(if $(VERSION_NUMBER),$(VERSION_NUMBER),18.06-5.4-SNAPSHOT)
VERSION_CODE:=$(call qstrip,$(CONFIG_VERSION_CODE))
VERSION_CODE:=$(if $(VERSION_CODE),$(VERSION_CODE),$(REVISION))
@@ -36,19 +36,19 @@ VERSION_DIST:=$(if $(VERSION_DIST),$(VERSION_DIST),ImmortalWrt)
VERSION_DIST_SANITIZED:=$(call sanitize,$(VERSION_DIST))
VERSION_MANUFACTURER:=$(call qstrip,$(CONFIG_VERSION_MANUFACTURER))
-VERSION_MANUFACTURER:=$(if $(VERSION_MANUFACTURER),$(VERSION_MANUFACTURER),OpenWrt)
+VERSION_MANUFACTURER:=$(if $(VERSION_MANUFACTURER),$(VERSION_MANUFACTURER),ImmortalWrt)
VERSION_MANUFACTURER_URL:=$(call qstrip,$(CONFIG_VERSION_MANUFACTURER_URL))
-VERSION_MANUFACTURER_URL:=$(if $(VERSION_MANUFACTURER_URL),$(VERSION_MANUFACTURER_URL),https://openwrt.org/)
+VERSION_MANUFACTURER_URL:=$(if $(VERSION_MANUFACTURER_URL),$(VERSION_MANUFACTURER_URL),https://immortalwrt.org/)
VERSION_BUG_URL:=$(call qstrip,$(CONFIG_VERSION_BUG_URL))
-VERSION_BUG_URL:=$(if $(VERSION_BUG_URL),$(VERSION_BUG_URL),https://bugs.openwrt.org/)
+VERSION_BUG_URL:=$(if $(VERSION_BUG_URL),$(VERSION_BUG_URL),https://github.com/immortalwrt/immortalwrt/issues)
VERSION_HOME_URL:=$(call qstrip,$(CONFIG_VERSION_HOME_URL))
-VERSION_HOME_URL:=$(if $(VERSION_HOME_URL),$(VERSION_HOME_URL),https://openwrt.org/)
+VERSION_HOME_URL:=$(if $(VERSION_HOME_URL),$(VERSION_HOME_URL),https://immortalwrt.org/)
VERSION_SUPPORT_URL:=$(call qstrip,$(CONFIG_VERSION_SUPPORT_URL))
-VERSION_SUPPORT_URL:=$(if $(VERSION_SUPPORT_URL),$(VERSION_SUPPORT_URL),https://forum.openwrt.org/)
+VERSION_SUPPORT_URL:=$(if $(VERSION_SUPPORT_URL),$(VERSION_SUPPORT_URL),https://github.com/immortalwrt/immortalwrt/discussions)
VERSION_PRODUCT:=$(call qstrip,$(CONFIG_VERSION_PRODUCT))
VERSION_PRODUCT:=$(if $(VERSION_PRODUCT),$(VERSION_PRODUCT),Generic)
diff --git a/package/base-files/files/lib/upgrade/common.sh b/package/base-files/files/lib/upgrade/common.sh
index 708320fb23..4d8392635d 100644
--- a/package/base-files/files/lib/upgrade/common.sh
+++ b/package/base-files/files/lib/upgrade/common.sh
@@ -238,7 +238,7 @@ get_partitions() { #
local type="$1"
local lba="$(( $(hex_le32_to_cpu $4) * 0x100000000 + $(hex_le32_to_cpu $3) ))"
local end="$(( $(hex_le32_to_cpu $6) * 0x100000000 + $(hex_le32_to_cpu $5) ))"
- local num="$(( $end - $lba ))"
+ local num="$(( $end - $lba + 1 ))"
[ "$type" = "00000000000000000000000000000000" ] && continue
diff --git a/package/boot/tfa-layerscape/Makefile b/package/boot/tfa-layerscape/Makefile
index 6f0e175885..900402743c 100644
--- a/package/boot/tfa-layerscape/Makefile
+++ b/package/boot/tfa-layerscape/Makefile
@@ -25,7 +25,8 @@ define Host/Compile
$(MAKE) -C \
$(HOST_BUILD_DIR)/tools/fiptool \
CFLAGS="$(HOST_CFLAGS)" \
- LDFLAGS="$(HOST_LDFLAGS)"
+ LDFLAGS="$(HOST_LDFLAGS)" \
+ HOSTCCFLAGS="$(HOST_CFLAGS)"
$(MAKE) -C \
$(HOST_BUILD_DIR)/plat/nxp/tools \
CFLAGS="$(HOST_CFLAGS)"
diff --git a/package/devel/binutils/Makefile b/package/devel/binutils/Makefile
index ca1099349c..b904d4974d 100644
--- a/package/devel/binutils/Makefile
+++ b/package/devel/binutils/Makefile
@@ -9,14 +9,14 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=binutils
PKG_VERSION:=2.35.2
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE_URL:=@GNU/binutils
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_VERSION:=$(PKG_VERSION)
PKG_HASH:=dcd5b0416e7b0a9b24bed76cd8c6c132526805761863150a26d016415b8bdc7b
-PKG_FIXUP:=autoreconf
+PKG_FIXUP:=patch-libtool
PKG_LIBTOOL_PATHS:=. gas bfd opcodes gprof binutils ld libiberty gold intl
PKG_REMOVE_FILES:=libtool.m4
PKG_INSTALL:=1
diff --git a/package/devel/gdb/Makefile b/package/devel/gdb/Makefile
index a357996991..24569634a9 100644
--- a/package/devel/gdb/Makefile
+++ b/package/devel/gdb/Makefile
@@ -8,12 +8,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=gdb
-PKG_VERSION:=10.2
+PKG_VERSION:=11.1
PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@GNU/gdb
-PKG_HASH:=aaa1223d534c9b700a8bec952d9748ee1977513f178727e1bee520ee000b4f29
+PKG_HASH:=cccfcc407b20d343fb320d4a9a2110776dd3165118ffd41f4b1b162340333f94
PKG_BUILD_PARALLEL:=1
PKG_INSTALL:=1
@@ -33,7 +33,7 @@ endef
define Package/gdb
$(call Package/gdb/Default)
TITLE:=GNU Debugger
- DEPENDS+=+libreadline +libncurses +zlib
+ DEPENDS+=+libreadline +libncurses +zlib +libgmp
endef
define Package/gdb/description
@@ -62,7 +62,11 @@ CONFIGURE_ARGS+= \
--disable-ubsan \
--disable-sim \
--disable-werror \
- --disable-source-highlight
+ --disable-source-highlight \
+ --without-mpc \
+ --without-mpfr \
+ --without-isl \
+ --with-libgmp-prefix=$(STAGING_DIR)/usr
CONFIGURE_VARS+= \
ac_cv_search_tgetent="$(TARGET_LDFLAGS) -lncurses -lreadline"
diff --git a/package/devel/gdb/patches/110-shared_libgcc.patch b/package/devel/gdb/patches/110-shared_libgcc.patch
index de92a1f945..3979ccd26b 100644
--- a/package/devel/gdb/patches/110-shared_libgcc.patch
+++ b/package/devel/gdb/patches/110-shared_libgcc.patch
@@ -1,6 +1,6 @@
--- a/configure.ac
+++ b/configure.ac
-@@ -1302,13 +1302,13 @@ if test -z "$LD"; then
+@@ -1300,13 +1300,13 @@ if test -z "$LD"; then
fi
fi
@@ -17,7 +17,7 @@
AC_LANG_PUSH(C++)
AC_LINK_IFELSE([AC_LANG_SOURCE([
#if (__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 5)
-@@ -1648,7 +1648,7 @@ AC_ARG_WITH(stage1-ldflags,
+@@ -1705,7 +1705,7 @@ AC_ARG_WITH(stage1-ldflags,
# trust that they are doing what they want.
if test "$with_static_standard_libraries" = yes -a "$stage1_libs" = "" \
-a "$have_static_libs" = yes; then
@@ -26,7 +26,7 @@
fi])
AC_SUBST(stage1_ldflags)
-@@ -1677,7 +1677,7 @@ AC_ARG_WITH(boot-ldflags,
+@@ -1734,7 +1734,7 @@ AC_ARG_WITH(boot-ldflags,
# statically. But if the user explicitly specified the libraries to
# use, trust that they are doing what they want.
if test "$poststage1_libs" = ""; then
@@ -37,7 +37,7 @@
--- a/configure
+++ b/configure
-@@ -5075,14 +5075,14 @@ if test -z "$LD"; then
+@@ -5257,14 +5257,14 @@ if test -z "$LD"; then
fi
fi
@@ -56,7 +56,7 @@
ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-@@ -5883,7 +5883,7 @@ else
+@@ -6149,7 +6149,7 @@ else
# trust that they are doing what they want.
if test "$with_static_standard_libraries" = yes -a "$stage1_libs" = "" \
-a "$have_static_libs" = yes; then
@@ -65,7 +65,7 @@
fi
fi
-@@ -5919,7 +5919,7 @@ else
+@@ -6185,7 +6185,7 @@ else
# statically. But if the user explicitly specified the libraries to
# use, trust that they are doing what they want.
if test "$poststage1_libs" = ""; then
diff --git a/package/devel/gdb/patches/130-gdb-ctrl-c.patch b/package/devel/gdb/patches/130-gdb-ctrl-c.patch
index 88b5de9d8c..72b7273434 100644
--- a/package/devel/gdb/patches/130-gdb-ctrl-c.patch
+++ b/package/devel/gdb/patches/130-gdb-ctrl-c.patch
@@ -24,7 +24,7 @@ Signed-off-by: Khem Raj
--- a/gdbserver/linux-low.cc
+++ b/gdbserver/linux-low.cc
-@@ -5714,7 +5714,7 @@ linux_process_target::request_interrupt
+@@ -5733,7 +5733,7 @@ linux_process_target::request_interrupt
{
/* Send a SIGINT to the process group. This acts just like the user
typed a ^C on the controlling terminal. */
diff --git a/package/devel/strace/Makefile b/package/devel/strace/Makefile
index a95d429311..527b3e01d8 100644
--- a/package/devel/strace/Makefile
+++ b/package/devel/strace/Makefile
@@ -9,12 +9,12 @@ include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=strace
-PKG_VERSION:=5.10
+PKG_VERSION:=5.14
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://strace.io/files/$(PKG_VERSION)
-PKG_HASH:=fe3982ea4cd9aeb3b4ba35f6279f0b577a37175d3282be24b9a5537b56b8f01c
+PKG_HASH:=901bee6db5e17debad4530dd9ffb4dc9a96c4a656edbe1c3141b7cb307b11e73
PKG_MAINTAINER:=Felix Fietkau
PKG_LICENSE:=LGPL-2.1-or-later
@@ -70,7 +70,8 @@ endef
CONFIGURE_ARGS += \
--with-libdw=$(if $(CONFIG_STRACE_LIBDW),yes,no) \
--with-libunwind=$(if $(CONFIG_STRACE_LIBUNWIND),yes,no) \
- --enable-mpers=no
+ --enable-mpers=no \
+ --without-libselinux
MAKE_FLAGS := \
CCOPT="$(TARGET_CFLAGS)"
diff --git a/package/devel/strace/patches/010-m4.patch b/package/devel/strace/patches/010-m4.patch
new file mode 100644
index 0000000000..32584e1180
--- /dev/null
+++ b/package/devel/strace/patches/010-m4.patch
@@ -0,0 +1,10 @@
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -21,7 +21,6 @@ man_MANS = doc/strace.1 doc/strace-log-m
+
+ ACLOCAL_AMFLAGS = -I m4 -I src/xlat
+
+-@CODE_COVERAGE_RULES@
+ CODE_COVERAGE_BRANCH_COVERAGE = 1
+ CODE_COVERAGE_GENHTML_OPTIONS = $(CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT) \
+ --title "$(PACKAGE_NAME)-$(PACKAGE_VERSION)" \
diff --git a/package/devel/valgrind/Makefile b/package/devel/valgrind/Makefile
index 829f37569e..e6ebff4b30 100644
--- a/package/devel/valgrind/Makefile
+++ b/package/devel/valgrind/Makefile
@@ -8,12 +8,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=valgrind
-PKG_VERSION:=3.16.1
+PKG_VERSION:=3.18.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=http://sourceware.org/pub/valgrind/
-PKG_HASH:=c91f3a2f7b02db0f3bc99479861656154d241d2fdb265614ba918cc6720a33ca
+PKG_HASH:=00859aa13a772eddf7822225f4b46ee0d39afbe071d32778da4d99984081f7f5
PKG_MAINTAINER:=Felix Fietkau
PKG_LICENSE:=GPL-2.0+
@@ -33,7 +33,7 @@ include $(INCLUDE_DIR)/kernel.mk
define Package/valgrind
SECTION:=devel
CATEGORY:=Development
- DEPENDS:=@mips||mipsel||i386||x86_64||powerpc||arm_v7||aarch64 +libpthread +librt
+ DEPENDS:=@mips||mipsel||mips64||mips64el||i386||x86_64||powerpc||arm_v7||aarch64 +libpthread +librt
TITLE:=debugging and profiling tools for Linux
URL:=http://www.valgrind.org
endef
diff --git a/package/devel/valgrind/patches/010-mips-Fix-new-syscall-numbers.patch b/package/devel/valgrind/patches/010-mips-Fix-new-syscall-numbers.patch
new file mode 100644
index 0000000000..e84273c973
--- /dev/null
+++ b/package/devel/valgrind/patches/010-mips-Fix-new-syscall-numbers.patch
@@ -0,0 +1,131 @@
+From 86ab9452bd10f08dbfa22d94e1155838f6f9f2e0 Mon Sep 17 00:00:00 2001
+From: Hauke Mehrtens
+Date: Sun, 31 Oct 2021 23:11:11 +0100
+Subject: [PATCH] mips: Fix new syscall numbers
+
+The MIPS32 and MIPS64 O32 ABI are adding 4000 to all syscall numbers.
+The MIPS64 N64 ABI adds 5000 to each syscall and the MIPS64 N32 ABI adds
+6000 to each syscall number. We can not sue the shared file for MIPS and
+have to define this for each sycall separately.
+
+Without this change valgrind is not able to detect new syscalls like
+clock_gettime64 correctly.
+
+Signed-off-by: Hauke Mehrtens
+---
+ include/pub_tool_vkiscnums_asm.h | 3 ---
+ include/vki/vki-scnums-mips32-linux.h | 36 +++++++++++++++++++++++++++
+ include/vki/vki-scnums-mips64-linux.h | 32 ++++++++++++++++++++++++
+ 3 files changed, 68 insertions(+), 3 deletions(-)
+
+--- a/include/pub_tool_vkiscnums_asm.h
++++ b/include/pub_tool_vkiscnums_asm.h
+@@ -63,15 +63,12 @@
+ # include "vki/vki-scnums-arm64-linux.h"
+
+ #elif defined(VGP_mips32_linux)
+-# include "vki/vki-scnums-shared-linux.h"
+-# include "vki/vki-scnums-32bit-linux.h"
+ # include "vki/vki-scnums-mips32-linux.h"
+
+ #elif defined(VGP_nanomips_linux)
+ # include "vki/vki-scnums-nanomips-linux.h"
+
+ #elif defined(VGP_mips64_linux)
+-# include "vki/vki-scnums-shared-linux.h"
+ # include "vki/vki-scnums-mips64-linux.h"
+
+ #elif defined(VGP_x86_freebsd) || defined(VGP_amd64_freebsd)
+--- a/include/vki/vki-scnums-mips32-linux.h
++++ b/include/vki/vki-scnums-mips32-linux.h
+@@ -401,6 +401,42 @@
+ #define __NR_pkey_free (__NR_Linux + 365)
+ #define __NR_statx (__NR_Linux + 366)
+
++#define __NR_clock_gettime64 (__NR_Linux + 403)
++#define __NR_clock_settime64 (__NR_Linux + 404)
++#define __NR_clock_adjtime64 (__NR_Linux + 405)
++#define __NR_clock_getres_time64 (__NR_Linux + 406)
++#define __NR_clock_nanosleep_time64 (__NR_Linux + 407)
++#define __NR_timer_gettime64 (__NR_Linux + 408)
++#define __NR_timer_settime64 (__NR_Linux + 409)
++#define __NR_timerfd_gettime64 (__NR_Linux + 410)
++#define __NR_timerfd_settime64 (__NR_Linux + 411)
++#define __NR_utimensat_time64 (__NR_Linux + 412)
++#define __NR_pselect6_time64 (__NR_Linux + 413)
++#define __NR_ppoll_time64 (__NR_Linux + 414)
++#define __NR_io_pgetevents_time64 (__NR_Linux + 416)
++#define __NR_recvmmsg_time64 (__NR_Linux + 417)
++#define __NR_mq_timedsend_time64 (__NR_Linux + 418)
++#define __NR_mq_timedreceive_time64 (__NR_Linux + 419)
++#define __NR_semtimedop_time64 (__NR_Linux + 420)
++#define __NR_rt_sigtimedwait_time64 (__NR_Linux + 421)
++#define __NR_futex_time64 (__NR_Linux + 422)
++#define __NR_sched_rr_get_interval_time64 (__NR_Linux + 423)
++#define __NR_pidfd_send_signal (__NR_Linux + 424)
++#define __NR_io_uring_setup (__NR_Linux + 425)
++#define __NR_io_uring_enter (__NR_Linux + 426)
++#define __NR_io_uring_register (__NR_Linux + 427)
++#define __NR_open_tree (__NR_Linux + 428)
++#define __NR_move_mount (__NR_Linux + 429)
++#define __NR_fsopen (__NR_Linux + 430)
++#define __NR_fsconfig (__NR_Linux + 431)
++#define __NR_fsmount (__NR_Linux + 432)
++#define __NR_fspick (__NR_Linux + 433)
++
++#define __NR_clone3 (__NR_Linux + 435)
++#define __NR_close_range (__NR_Linux + 436)
++
++#define __NR_faccessat2 (__NR_Linux + 439)
++
+ /*
+ * Offset of the last Linux o32 flavoured syscall
+ */
+--- a/include/vki/vki-scnums-mips64-linux.h
++++ b/include/vki/vki-scnums-mips64-linux.h
+@@ -363,6 +363,22 @@
+ #define __NR_pkey_free (__NR_Linux + 325)
+ #define __NR_statx (__NR_Linux + 326)
+
++#define __NR_pidfd_send_signal (__NR_Linux + 424)
++#define __NR_io_uring_setup (__NR_Linux + 425)
++#define __NR_io_uring_enter (__NR_Linux + 426)
++#define __NR_io_uring_register (__NR_Linux + 427)
++#define __NR_open_tree (__NR_Linux + 428)
++#define __NR_move_mount (__NR_Linux + 429)
++#define __NR_fsopen (__NR_Linux + 430)
++#define __NR_fsconfig (__NR_Linux + 431)
++#define __NR_fsmount (__NR_Linux + 432)
++#define __NR_fspick (__NR_Linux + 433)
++
++#define __NR_clone3 (__NR_Linux + 435)
++#define __NR_close_range (__NR_Linux + 436)
++
++#define __NR_faccessat2 (__NR_Linux + 439)
++
+ #elif defined(VGABI_N32)
+
+ /*
+@@ -702,6 +718,22 @@
+ #define __NR_pkey_free (__NR_Linux + 329)
+ #define __NR_statx (__NR_Linux + 330)
+
++#define __NR_pidfd_send_signal (__NR_Linux + 424)
++#define __NR_io_uring_setup (__NR_Linux + 425)
++#define __NR_io_uring_enter (__NR_Linux + 426)
++#define __NR_io_uring_register (__NR_Linux + 427)
++#define __NR_open_tree (__NR_Linux + 428)
++#define __NR_move_mount (__NR_Linux + 429)
++#define __NR_fsopen (__NR_Linux + 430)
++#define __NR_fsconfig (__NR_Linux + 431)
++#define __NR_fsmount (__NR_Linux + 432)
++#define __NR_fspick (__NR_Linux + 433)
++
++#define __NR_clone3 (__NR_Linux + 435)
++#define __NR_close_range (__NR_Linux + 436)
++
++#define __NR_faccessat2 (__NR_Linux + 439)
++
+ #else
+ #error unknown mips64 abi
+ #endif
diff --git a/package/devel/valgrind/patches/130-mips_fix_soft_float.patch b/package/devel/valgrind/patches/130-mips_fix_soft_float.patch
index 05be099ca5..427aa85524 100644
--- a/package/devel/valgrind/patches/130-mips_fix_soft_float.patch
+++ b/package/devel/valgrind/patches/130-mips_fix_soft_float.patch
@@ -14,7 +14,7 @@ This fixes the following error message when compiling with a GCC 10 MIPS BE 32:
--- a/VEX/priv/guest_mips_helpers.c
+++ b/VEX/priv/guest_mips_helpers.c
-@@ -617,6 +617,7 @@ extern UInt mips_dirtyhelper_calculate_F
+@@ -616,6 +616,7 @@ extern UInt mips_dirtyhelper_calculate_F
flt_op inst )
{
UInt ret = 0;
@@ -22,7 +22,7 @@ This fixes the following error message when compiling with a GCC 10 MIPS BE 32:
#if defined(__mips__)
VexGuestMIPS32State* guest_state = (VexGuestMIPS32State*)gs;
UInt loFsVal, hiFsVal, loFtVal, hiFtVal;
-@@ -699,6 +700,7 @@ extern UInt mips_dirtyhelper_calculate_F
+@@ -698,6 +699,7 @@ extern UInt mips_dirtyhelper_calculate_F
break;
}
#endif
@@ -30,7 +30,7 @@ This fixes the following error message when compiling with a GCC 10 MIPS BE 32:
return ret;
}
-@@ -708,6 +710,7 @@ extern UInt mips_dirtyhelper_calculate_F
+@@ -707,6 +709,7 @@ extern UInt mips_dirtyhelper_calculate_F
flt_op inst )
{
UInt ret = 0;
@@ -38,7 +38,7 @@ This fixes the following error message when compiling with a GCC 10 MIPS BE 32:
#if defined(__mips__) && ((__mips == 64) || \
(defined(__mips_isa_rev) && (__mips_isa_rev >= 2)))
#if defined(VGA_mips32)
-@@ -860,6 +863,7 @@ extern UInt mips_dirtyhelper_calculate_F
+@@ -859,6 +862,7 @@ extern UInt mips_dirtyhelper_calculate_F
break;
}
#endif
@@ -48,7 +48,7 @@ This fixes the following error message when compiling with a GCC 10 MIPS BE 32:
--- a/coregrind/m_machine.c
+++ b/coregrind/m_machine.c
-@@ -1828,6 +1828,7 @@ Bool VG_(machine_get_hwcaps)( void )
+@@ -2103,6 +2103,7 @@ Bool VG_(machine_get_hwcaps)( void )
we are using alternative way to determine FP mode */
ULong result = 0;
@@ -56,7 +56,7 @@ This fixes the following error message when compiling with a GCC 10 MIPS BE 32:
if (!VG_MINIMAL_SETJMP(env_unsup_insn)) {
__asm__ volatile (
".set push\n\t"
-@@ -1845,6 +1846,9 @@ Bool VG_(machine_get_hwcaps)( void )
+@@ -2120,6 +2121,9 @@ Bool VG_(machine_get_hwcaps)( void )
fpmode = (result != 0x3FF0000000000000ull);
}
diff --git a/package/emortal/autocore/files/generic/cpuinfo b/package/emortal/autocore/files/generic/cpuinfo
index 58d1de92d4..bbc94cedd4 100755
--- a/package/emortal/autocore/files/generic/cpuinfo
+++ b/package/emortal/autocore/files/generic/cpuinfo
@@ -3,7 +3,7 @@
cpu_arch="$(grep "model name" "/proc/cpuinfo" | head -n1 | awk -F ': ' '{print $2}' | xargs)"
[ -z "${cpu_arch}" ] && cpu_arch="?"
if grep -q "x86" "/etc/openwrt_release"; then
- cpu_cores="$(grep "core id" "/proc/cpuinfo" | sort -u | wc -l)C $(grep -c "processor" "/proc/cpuinfo")T"
+ cpu_cores="$(grep "core id" "/proc/cpuinfo" | uniq | wc -l)C $(grep -c "processor" "/proc/cpuinfo")T"
else
cpu_cores="$(grep -c "processor" "/proc/cpuinfo")"
fi
@@ -17,10 +17,10 @@ elif grep -q "mvebu" "/etc/openwrt_release"; then
elif grep -q "x86" "/etc/openwrt_release"; then
cpu_freq="$(grep "MHz" "/proc/cpuinfo" | head -n1 | awk -F ': ' '{print $2}')MHz"
elif [ -e "/sys/devices/system/cpu/cpufreq/policy0/cpuinfo_cur_freq" ]; then
- cpu_freq="$(expr $(cat "/sys/devices/system/cpu/cpufreq/policy0/cpuinfo_cur_freq") / 1000)MHz"
+ cpu_freq="$(awk '{printf("%.fMHz", $0 / 1000)}' "/sys/devices/system/cpu/cpufreq/policy0/cpuinfo_cur_freq")"
fi
if ! grep -q "x86" "/etc/openwrt_release" && [ -e "/sys/devices/system/cpu/cpufreq/policy4/cpuinfo_cur_freq" ]; then
- big_cpu_freq="$(expr $(cat "/sys/devices/system/cpu/cpufreq/policy4/cpuinfo_cur_freq") / 1000)MHz "
+ big_cpu_freq="$(awk '{printf("%.fMHz ", $0 / 1000)}' "/sys/devices/system/cpu/cpufreq/policy4/cpuinfo_cur_freq")"
fi
if grep -q "bcm27xx" "/etc/openwrt_release"; then
diff --git a/package/firmware/amd64-microcode/Makefile b/package/firmware/amd64-microcode/Makefile
deleted file mode 100644
index 4444883c74..0000000000
--- a/package/firmware/amd64-microcode/Makefile
+++ /dev/null
@@ -1,47 +0,0 @@
-#
-# Copyright (C) 2018 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=amd64-microcode
-PKG_VERSION:=20191218
-PKG_RELEASE:=1
-
-PKG_SOURCE:=amd64-microcode_3.$(PKG_VERSION).$(PKG_RELEASE).tar.xz
-PKG_SOURCE_URL:=@DEBIAN/pool/non-free/a/amd64-microcode/
-PKG_HASH:=f469b79348097c5f04641b67a39d0ee5a2a1916c9556281626c04f2275d4132d
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-3.$(PKG_VERSION).$(PKG_RELEASE)
-
-PKG_LICENSE_FILE:=LICENSE.amd-ucode
-
-PKG_FLAGS:=nonshared
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/amd64-microcode
- SECTION:=firmware
- CATEGORY:=Firmware
- URL:=$(PKG_SOURCE_URL)
- DEPENDS:=@TARGET_x86
- TITLE:=AMD64 CPU microcode
-endef
-
-define Build/Prepare
- rm -rf $(PKG_BUILD_DIR)
- mkdir -p $(PKG_BUILD_DIR)
- $(TAR) -C $(BUILD_DIR) -xJf $(DL_DIR)/$(PKG_SOURCE)
-endef
-
-define Build/Compile
-endef
-
-define Package/amd64-microcode/install
- $(INSTALL_DIR) $(1)/lib/firmware/amd-ucode
- $(INSTALL_DATA) $(PKG_BUILD_DIR)/*.bin $(1)/lib/firmware/amd-ucode
-endef
-
-$(eval $(call BuildPackage,amd64-microcode))
diff --git a/package/firmware/intel-microcode/Makefile b/package/firmware/intel-microcode/Makefile
index d2f61e9bf0..7f8d5adf7c 100644
--- a/package/firmware/intel-microcode/Makefile
+++ b/package/firmware/intel-microcode/Makefile
@@ -8,13 +8,13 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=intel-microcode
-PKG_VERSION:=20200616
+PKG_VERSION:=20210608
PKG_RELEASE:=1
-PKG_SOURCE:=intel-microcode_3.$(PKG_VERSION).$(PKG_RELEASE).tar.xz
+PKG_SOURCE:=intel-microcode_3.$(PKG_VERSION).2.tar.xz
PKG_SOURCE_URL:=@DEBIAN/pool/non-free/i/intel-microcode/
-PKG_HASH:=bcc3b81c452fe4649a948c022475d76c1cdfbb730f36749a082f412f1406a3b9
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-3.$(PKG_VERSION).$(PKG_RELEASE)
+PKG_HASH:=fbf82688ffd0d87b352a35c57bd097ea014f0ad32c9c8f9629725c1b43d1c84d
+PKG_BUILD_DIR:=$(BUILD_DIR)/intel-microcode-3.$(PKG_VERSION).2
PKG_BUILD_DEPENDS:=iucode-tool/host
diff --git a/package/firmware/linux-firmware/Makefile b/package/firmware/linux-firmware/Makefile
index 2ad213b82b..4786751e8c 100644
--- a/package/firmware/linux-firmware/Makefile
+++ b/package/firmware/linux-firmware/Makefile
@@ -8,12 +8,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=linux-firmware
-PKG_VERSION:=20210511
+PKG_VERSION:=20211216
PKG_RELEASE:=1
PKG_SOURCE_URL:=@KERNEL/linux/kernel/firmware
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_HASH:=2aa6ae8b9808408f9811ac38f00c188e53e984a2b3990254f6c9c02c1ab13417
+PKG_HASH:=eeddb4e6bef31fd1a3757f12ccc324929bbad97855c0b9ec5ed780f74de1837d
PKG_MAINTAINER:=Felix Fietkau
diff --git a/package/firmware/linux-firmware/amd.mk b/package/firmware/linux-firmware/amd.mk
new file mode 100644
index 0000000000..68b305e862
--- /dev/null
+++ b/package/firmware/linux-firmware/amd.mk
@@ -0,0 +1,29 @@
+Package/amd64-microcode = $(call Package/firmware-default,AMD64 CPU microcode,@TARGET_x86)
+define Package/amd64-microcode/install
+ $(INSTALL_DIR) $(1)/lib/firmware/amd-ucode
+ $(CP) \
+ $(PKG_BUILD_DIR)/amd-ucode/*.bin \
+ $(1)/lib/firmware/amd-ucode
+endef
+
+$(eval $(call BuildPackage,amd64-microcode))
+
+Package/amdgpu-firmware = $(call Package/firmware-default,AMDGPU Video Driver firmware)
+define Package/amdgpu-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/amdgpu
+ $(CP) \
+ $(PKG_BUILD_DIR)/amdgpu/*.bin \
+ $(1)/lib/firmware/amdgpu
+endef
+
+$(eval $(call BuildPackage,amdgpu-firmware))
+
+Package/radeon-firmware = $(call Package/firmware-default,Radeon Video Driver firmware)
+define Package/radeon-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/radeon
+ $(CP) \
+ $(PKG_BUILD_DIR)/radeon/*.bin \
+ $(1)/lib/firmware/radeon
+endef
+
+$(eval $(call BuildPackage,radeon-firmware))
diff --git a/package/firmware/linux-firmware/amdgpu.mk b/package/firmware/linux-firmware/amdgpu.mk
deleted file mode 100644
index 89f11e7c39..0000000000
--- a/package/firmware/linux-firmware/amdgpu.mk
+++ /dev/null
@@ -1,9 +0,0 @@
-Package/amdgpu-firmware = $(call Package/firmware-default,AMDGPU Video Driver firmware)
-define Package/amdgpu-firmware/install
- $(INSTALL_DIR) $(1)/lib/firmware/amdgpu
- $(CP) \
- $(PKG_BUILD_DIR)/amdgpu/*.bin \
- $(1)/lib/firmware/amdgpu
-endef
-
-$(eval $(call BuildPackage,amdgpu-firmware))
diff --git a/package/firmware/linux-firmware/radeon.mk b/package/firmware/linux-firmware/radeon.mk
deleted file mode 100644
index b750efbfce..0000000000
--- a/package/firmware/linux-firmware/radeon.mk
+++ /dev/null
@@ -1,9 +0,0 @@
-Package/radeon-firmware = $(call Package/firmware-default,Radeon Video Driver firmware)
-define Package/radeon-firmware/install
- $(INSTALL_DIR) $(1)/lib/firmware/radeon
- $(CP) \
- $(PKG_BUILD_DIR)/radeon/*.bin \
- $(1)/lib/firmware/radeon
-endef
-
-$(eval $(call BuildPackage,radeon-firmware))
diff --git a/package/firmware/linux-firmware/realtek.mk b/package/firmware/linux-firmware/realtek.mk
index 182a5ce4d1..c883e8ba59 100644
--- a/package/firmware/linux-firmware/realtek.mk
+++ b/package/firmware/linux-firmware/realtek.mk
@@ -89,16 +89,10 @@ Package/rtl8723bu-firmware = $(call Package/firmware-default,RealTek RTL8723BU f
define Package/rtl8723bu-firmware/install
$(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
$(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8723bu_nic.bin $(1)/lib/firmware/rtlwifi
+ ln -s rtl8723bu_nic.bin $(1)/lib/firmware/rtlwifi/rtl8723bs_nic.bin
endef
$(eval $(call BuildPackage,rtl8723bu-firmware))
-Package/rtl8723bs-firmware = $(call Package/firmware-default,RealTek RTL8723BS firmware)
-define Package/rtl8723bs-firmware/install
- $(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
- $(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8723bs*.bin $(1)/lib/firmware/rtlwifi
-endef
-$(eval $(call BuildPackage,rtl8723bs-firmware))
-
Package/rtl8821ae-firmware = $(call Package/firmware-default,RealTek RTL8821AE firmware)
define Package/rtl8821ae-firmware/install
$(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
diff --git a/package/kernel/linux/modules/fs.mk b/package/kernel/linux/modules/fs.mk
index 7de1a0673c..f9e1b132c7 100644
--- a/package/kernel/linux/modules/fs.mk
+++ b/package/kernel/linux/modules/fs.mk
@@ -70,7 +70,6 @@ define KernelPackage/fs-btrfs
DEPENDS:=+kmod-lib-crc32c +kmod-lib-lzo +kmod-lib-zlib-inflate +kmod-lib-zlib-deflate +kmod-lib-raid6 +kmod-lib-xor +kmod-lib-zstd
KCONFIG:=\
CONFIG_BTRFS_FS \
- CONFIG_BTRFS_FS_POSIX_ACL=n \
CONFIG_BTRFS_FS_CHECK_INTEGRITY=n
FILES:=\
$(LINUX_DIR)/fs/btrfs/btrfs.ko
diff --git a/package/kernel/linux/modules/usb.mk b/package/kernel/linux/modules/usb.mk
index 505572d530..694a7b9193 100644
--- a/package/kernel/linux/modules/usb.mk
+++ b/package/kernel/linux/modules/usb.mk
@@ -1123,7 +1123,7 @@ endef
define KernelPackage/usb-net-aqc111
TITLE:=Kernel module for Aquantia AQtion USB to 5/2.5GbE Controllers
- DEPENDS:=+kmod-libphy
+ DEPENDS:=@!LINUX_4_9 +kmod-libphy
KCONFIG:=CONFIG_USB_NET_AQC111
FILES:=$(LINUX_DIR)/drivers/$(USBNET_DIR)/aqc111.ko
AUTOLOAD:=$(call AutoProbe,aqc111)
diff --git a/package/kernel/linux/modules/video.mk b/package/kernel/linux/modules/video.mk
index 8d2233622e..c0d9b10558 100644
--- a/package/kernel/linux/modules/video.mk
+++ b/package/kernel/linux/modules/video.mk
@@ -908,6 +908,21 @@ endef
$(eval $(call KernelPackage,video-gspca-sq905c))
+define KernelPackage/video-gspca-sq930x
+ TITLE:=sq930x webcam support
+ KCONFIG:=CONFIG_USB_GSPCA_SQ930X
+ FILES:=$(LINUX_DIR)/drivers/media/$(V4L2_USB_DIR)/gspca/gspca_sq930x.ko
+ AUTOLOAD:=$(call AutoProbe,gspca_sq930x)
+ $(call AddDepends/camera-gspca)
+endef
+
+define KernelPackage/video-gspca-sq930x/description
+ The SQ Technologies SQ930X based USB Camera Driver (sq930x) kernel module
+endef
+
+$(eval $(call KernelPackage,video-gspca-sq930x))
+
+
define KernelPackage/video-gspca-stk014
TITLE:=stk014 webcam support
KCONFIG:=CONFIG_USB_GSPCA_STK014
diff --git a/package/kernel/r8125/Makefile b/package/kernel/r8125/Makefile
index be28bc5b2c..49cd4326ad 100644
--- a/package/kernel/r8125/Makefile
+++ b/package/kernel/r8125/Makefile
@@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=r8125
-PKG_VERSION:=9.006.04
+PKG_VERSION:=9.007.01
PKG_RELEASE:=$(AUTORELEASE)
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
diff --git a/package/kernel/r8125/src/Makefile b/package/kernel/r8125/src/Makefile
index 514c0acdda..e64f995af4 100644
--- a/package/kernel/r8125/src/Makefile
+++ b/package/kernel/r8125/src/Makefile
@@ -35,13 +35,13 @@ ENABLE_REALWOW_SUPPORT = n
ENABLE_DASH_SUPPORT = n
ENABLE_DASH_PRINTER_SUPPORT = n
CONFIG_DOWN_SPEED_100 = n
-CONFIG_ASPM = y
+CONFIG_ASPM = n
ENABLE_S5WOL = y
ENABLE_S5_KEEP_CURR_MAC = n
ENABLE_EEE = y
ENABLE_S0_MAGIC_PACKET = n
ENABLE_TX_NO_CLOSE = y
-ENABLE_MULTIPLE_TX_QUEUE = n
+ENABLE_MULTIPLE_TX_QUEUE = y
ENABLE_PTP_SUPPORT = n
ENABLE_PTP_MASTER_MODE = n
ENABLE_RSS_SUPPORT = y
diff --git a/package/kernel/r8125/src/r8125.h b/package/kernel/r8125/src/r8125.h
index 6dd541d4ab..8b4085c40b 100644
--- a/package/kernel/r8125/src/r8125.h
+++ b/package/kernel/r8125/src/r8125.h
@@ -363,7 +363,7 @@ do { \
#define RSS_SUFFIX ""
#endif
-#define RTL8125_VERSION "9.006.04" NAPI_SUFFIX DASH_SUFFIX REALWOW_SUFFIX PTP_SUFFIX RSS_SUFFIX
+#define RTL8125_VERSION "9.007.01" NAPI_SUFFIX DASH_SUFFIX REALWOW_SUFFIX PTP_SUFFIX RSS_SUFFIX
#define MODULENAME "r8125"
#define PFX MODULENAME ": "
@@ -557,6 +557,8 @@ This is free software, and you are welcome to redistribute it under certain cond
#define D0_SPEED_UP_SPEED_1000 1
#define D0_SPEED_UP_SPEED_2500 2
+#define RTL8125_MAC_MCU_PAGE_SIZE 256 //256 words
+
#ifndef WRITE_ONCE
#define WRITE_ONCE(var, val) (*((volatile typeof(val) *)(&(var))) = (val))
#endif
@@ -2010,6 +2012,9 @@ struct rtl8125_private {
unsigned int min_irq_nvecs;
//struct msix_entry msix_entries[R8125_MAX_MSIX_VEC];
struct net_device_stats stats; /* statistics of net device */
+#ifdef ENABLE_PTP_SUPPORT
+ spinlock_t lock; /* spin lock flag */
+#endif
u32 msg_enable;
u32 tx_tcp_csum_cmd;
u32 tx_udp_csum_cmd;
@@ -2300,6 +2305,9 @@ struct rtl8125_private {
u8 rss_indir_tbl[RTL8125_MAX_INDIRECTION_TABLE_ENTRIES];
u32 rss_options;
#endif
+
+ u8 HwSuppMacMcuVer;
+ u16 MacMcuPageSize;
};
#ifdef ENABLE_LIB_SUPPORT
@@ -2365,6 +2373,8 @@ enum mcfg {
CFG_METHOD_3,
CFG_METHOD_4,
CFG_METHOD_5,
+ CFG_METHOD_6,
+ CFG_METHOD_7,
CFG_METHOD_DEFAULT,
CFG_METHOD_MAX
};
@@ -2496,6 +2506,7 @@ static inline void rtl8125_lib_reset_complete(struct rtl8125_private *tp) { }
#define HW_SUPPORT_CHECK_PHY_DISABLE_MODE(_M) ((_M)->HwSuppCheckPhyDisableModeVer > 0 )
#define HW_HAS_WRITE_PHY_MCU_RAM_CODE(_M) (((_M)->HwHasWrRamCodeToMicroP == TRUE) ? 1 : 0)
#define HW_SUPPORT_D0_SPEED_UP(_M) ((_M)->HwSuppD0SpeedUpVer > 0)
+#define HW_SUPPORT_MAC_MCU(_M) ((_M)->HwSuppMacMcuVer > 0)
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,34)
#define netdev_mc_count(dev) ((dev)->mc_count)
diff --git a/package/kernel/r8125/src/r8125_n.c b/package/kernel/r8125/src/r8125_n.c
index fd96e8f8e4..ec117a766a 100644
--- a/package/kernel/r8125/src/r8125_n.c
+++ b/package/kernel/r8125/src/r8125_n.c
@@ -106,6 +106,8 @@ static const struct {
[CFG_METHOD_3] = {"RTL8125A", FIRMWARE_8125A_3},
[CFG_METHOD_4] = {"RTL8125B", },
[CFG_METHOD_5] = {"RTL8125B", FIRMWARE_8125B_2},
+ [CFG_METHOD_6] = {"RTL8168KB", FIRMWARE_8125A_3},
+ [CFG_METHOD_7] = {"RTL8168KB", FIRMWARE_8125B_2},
[CFG_METHOD_DEFAULT] = {"Unknown", },
};
@@ -143,6 +145,18 @@ static const struct {
0xff7e5880,
Jumbo_Frame_9k),
+ _R("RTL8168KB",
+ CFG_METHOD_6,
+ BIT_30 | EnableInnerVlan | EnableOuterVlan | (RX_DMA_BURST << RxCfgDMAShift),
+ 0xff7e5880,
+ Jumbo_Frame_9k),
+
+ _R("RTL8168KB",
+ CFG_METHOD_7,
+ BIT_30 | RxCfg_pause_slot_en | EnableInnerVlan | EnableOuterVlan | (RX_DMA_BURST << RxCfgDMAShift),
+ 0xff7e5880,
+ Jumbo_Frame_9k),
+
_R("Unknown",
CFG_METHOD_DEFAULT,
(RX_DMA_BURST << RxCfgDMAShift),
@@ -158,6 +172,7 @@ static const struct {
static struct pci_device_id rtl8125_pci_tbl[] = {
{ PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8125), },
+ { PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8162), },
{ PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x3000), },
{0,},
};
@@ -646,6 +661,7 @@ static u32 rtl8125_read_thermal_sensor(struct rtl8125_private *tp)
switch (tp->mcfg) {
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_7:
ts_digout = mdio_direct_read_phy_ocp(tp, 0xBD84);
ts_digout &= 0x3ff;
break;
@@ -1049,6 +1065,7 @@ static int proc_get_temperature(struct seq_file *m, void *v)
switch (tp->mcfg) {
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_7:
seq_puts(m, "\nChip Temperature\n");
break;
default:
@@ -1668,6 +1685,7 @@ static int proc_get_temperature(char *page, char **start,
switch (tp->mcfg) {
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_7:
len += snprintf(page + len, count - len,
"\nChip Temperature\n");
break;
@@ -2250,6 +2268,8 @@ void rtl8125_oob_mutex_lock(struct rtl8125_private *tp)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
default:
ocp_reg_mutex_oob = 0x110;
ocp_reg_mutex_ib = 0x114;
@@ -2299,6 +2319,8 @@ void rtl8125_oob_mutex_unlock(struct rtl8125_private *tp)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
default:
ocp_reg_mutex_oob = 0x110;
ocp_reg_mutex_ib = 0x114;
@@ -2794,6 +2816,8 @@ rtl8125_enable_rxdvgate(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
RTL_W8(tp, 0xF2, RTL_R8(tp, 0xF2) | BIT_3);
mdelay(2);
break;
@@ -2810,6 +2834,8 @@ rtl8125_disable_rxdvgate(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
RTL_W8(tp, 0xF2, RTL_R8(tp, 0xF2) & ~BIT_3);
mdelay(2);
break;
@@ -2879,6 +2905,7 @@ rtl8125_stop_all_request(struct net_device *dev)
switch (tp->mcfg) {
case CFG_METHOD_2:
case CFG_METHOD_3:
+ case CFG_METHOD_6:
for (i = 0; i < 20; i++) {
udelay(10);
if (!(RTL_R8(tp, ChipCmd) & StopReq)) break;
@@ -2901,6 +2928,7 @@ rtl8125_wait_txrx_fifo_empty(struct net_device *dev)
switch (tp->mcfg) {
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_7:
rtl8125_stop_all_request(dev);
break;
}
@@ -2910,6 +2938,8 @@ rtl8125_wait_txrx_fifo_empty(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
for (i = 0; i < 3000; i++) {
udelay(50);
if ((RTL_R8(tp, MCUCmd_reg) & (Txfifo_empty | Rxfifo_empty)) == (Txfifo_empty | Rxfifo_empty))
@@ -2921,6 +2951,7 @@ rtl8125_wait_txrx_fifo_empty(struct net_device *dev)
switch (tp->mcfg) {
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_7:
for (i = 0; i < 3000; i++) {
udelay(50);
if ((RTL_R16(tp, IntrMitigate) & (BIT_0 | BIT_1 | BIT_8)) == (BIT_0 | BIT_1 | BIT_8))
@@ -3132,6 +3163,8 @@ rtl8125_hw_clear_timer_int(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
RTL_W32(tp, TIMER_INT0_8125, 0x0000);
RTL_W32(tp, TIMER_INT1_8125, 0x0000);
RTL_W32(tp, TIMER_INT2_8125, 0x0000);
@@ -3306,6 +3339,8 @@ rtl8125_issue_offset_99_event(struct rtl8125_private *tp)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
rtl8125_mac_ocp_write(tp, 0xE09A, rtl8125_mac_ocp_read(tp, 0xE09A) | BIT_0);
break;
}
@@ -3337,6 +3372,8 @@ static int rtl8125_enable_eee_plus(struct rtl8125_private *tp)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
rtl8125_mac_ocp_write(tp, 0xE080, rtl8125_mac_ocp_read(tp, 0xE080)|BIT_1);
break;
@@ -3359,6 +3396,8 @@ static int rtl8125_disable_eee_plus(struct rtl8125_private *tp)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
rtl8125_mac_ocp_write(tp, 0xE080, rtl8125_mac_ocp_read(tp, 0xE080)&~BIT_1);
break;
@@ -3389,7 +3428,9 @@ rtl8125_link_on_patch(struct net_device *dev)
if ((tp->mcfg == CFG_METHOD_2 ||
tp->mcfg == CFG_METHOD_3 ||
tp->mcfg == CFG_METHOD_4 ||
- tp->mcfg == CFG_METHOD_5) &&
+ tp->mcfg == CFG_METHOD_5 ||
+ tp->mcfg == CFG_METHOD_6 ||
+ tp->mcfg == CFG_METHOD_7) &&
(RTL_R8(tp, PHYstatus) & _10bps))
rtl8125_enable_eee_plus(tp);
@@ -3418,7 +3459,9 @@ rtl8125_link_down_patch(struct net_device *dev)
if (tp->mcfg == CFG_METHOD_2 ||
tp->mcfg == CFG_METHOD_3 ||
tp->mcfg == CFG_METHOD_4 ||
- tp->mcfg == CFG_METHOD_5)
+ tp->mcfg == CFG_METHOD_5 ||
+ tp->mcfg == CFG_METHOD_6 ||
+ tp->mcfg == CFG_METHOD_7)
rtl8125_disable_eee_plus(tp);
netif_tx_stop_all_queues(dev);
@@ -3472,6 +3515,38 @@ rtl8125_check_link_status(struct net_device *dev)
tp->resume_not_chg_speed = 0;
}
+static void
+rtl8125_link_option_giga(u8 *aut,
+ u32 *spd,
+ u8 *dup,
+ u32 *adv)
+{
+ if ((*spd != SPEED_1000) &&
+ (*spd != SPEED_100) &&
+ (*spd != SPEED_10))
+ *spd = SPEED_1000;
+
+ if ((*dup != DUPLEX_FULL) && (*dup != DUPLEX_HALF))
+ *dup = DUPLEX_FULL;
+
+ if ((*aut != AUTONEG_ENABLE) && (*aut != AUTONEG_DISABLE))
+ *aut = AUTONEG_ENABLE;
+
+ *adv &= (ADVERTISED_10baseT_Half |
+ ADVERTISED_10baseT_Full |
+ ADVERTISED_100baseT_Half |
+ ADVERTISED_100baseT_Full |
+ ADVERTISED_1000baseT_Half |
+ ADVERTISED_1000baseT_Full);
+ if (*adv == 0)
+ *adv = (ADVERTISED_10baseT_Half |
+ ADVERTISED_10baseT_Full |
+ ADVERTISED_100baseT_Half |
+ ADVERTISED_100baseT_Full |
+ ADVERTISED_1000baseT_Half |
+ ADVERTISED_1000baseT_Full);
+}
+
static void
rtl8125_link_option(u8 *aut,
u32 *spd,
@@ -3515,7 +3590,9 @@ rtl8125_enable_ocp_phy_power_saving(struct net_device *dev)
if (tp->mcfg == CFG_METHOD_2 ||
tp->mcfg == CFG_METHOD_3 ||
tp->mcfg == CFG_METHOD_4 ||
- tp->mcfg == CFG_METHOD_5) {
+ tp->mcfg == CFG_METHOD_5 ||
+ tp->mcfg == CFG_METHOD_6 ||
+ tp->mcfg == CFG_METHOD_7) {
val = mdio_direct_read_phy_ocp(tp, 0xC416);
if (val != 0x0050) {
rtl8125_set_phy_mcu_patch_request(tp);
@@ -3536,7 +3613,9 @@ rtl8125_disable_ocp_phy_power_saving(struct net_device *dev)
if (tp->mcfg == CFG_METHOD_2 ||
tp->mcfg == CFG_METHOD_3 ||
tp->mcfg == CFG_METHOD_4 ||
- tp->mcfg == CFG_METHOD_5) {
+ tp->mcfg == CFG_METHOD_5 ||
+ tp->mcfg == CFG_METHOD_6 ||
+ tp->mcfg == CFG_METHOD_7) {
val = mdio_direct_read_phy_ocp(tp, 0xC416);
if (val != 0x0500) {
rtl8125_set_phy_mcu_patch_request(tp);
@@ -3568,6 +3647,8 @@ rtl8125_disable_pci_offset_99(struct rtl8125_private *tp)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
rtl8125_mac_ocp_write(tp, 0xE032, rtl8125_mac_ocp_read(tp, 0xE032) & ~(BIT_0 | BIT_1));
break;
}
@@ -3577,6 +3658,8 @@ rtl8125_disable_pci_offset_99(struct rtl8125_private *tp)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
rtl8125_csi_fun0_write_byte(tp, 0x99, 0x00);
break;
}
@@ -3592,6 +3675,8 @@ rtl8125_enable_pci_offset_99(struct rtl8125_private *tp)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
rtl8125_csi_fun0_write_byte(tp, 0x99, tp->org_pci_offset_99);
break;
}
@@ -3601,6 +3686,8 @@ rtl8125_enable_pci_offset_99(struct rtl8125_private *tp)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
csi_tmp = rtl8125_mac_ocp_read(tp, 0xE032);
csi_tmp &= ~(BIT_0 | BIT_1);
if (tp->org_pci_offset_99 & (BIT_5 | BIT_6))
@@ -3622,6 +3709,8 @@ rtl8125_init_pci_offset_99(struct rtl8125_private *tp)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
rtl8125_mac_ocp_write(tp, 0xCDD0, 0x9003);
csi_tmp = rtl8125_mac_ocp_read(tp, 0xE034);
csi_tmp |= (BIT_15 | BIT_14);
@@ -3660,6 +3749,8 @@ rtl8125_disable_pci_offset_180(struct rtl8125_private *tp)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
csi_tmp = rtl8125_mac_ocp_read(tp, 0xE092);
csi_tmp &= 0xFF00;
rtl8125_mac_ocp_write(tp, 0xE092, csi_tmp);
@@ -3677,6 +3768,8 @@ rtl8125_enable_pci_offset_180(struct rtl8125_private *tp)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
csi_tmp = rtl8125_mac_ocp_read(tp, 0xE094);
csi_tmp &= 0x00FF;
rtl8125_mac_ocp_write(tp, 0xE094, csi_tmp);
@@ -3688,6 +3781,8 @@ rtl8125_enable_pci_offset_180(struct rtl8125_private *tp)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
csi_tmp = rtl8125_mac_ocp_read(tp, 0xE092);
csi_tmp &= 0xFF00;
csi_tmp |= BIT_2;
@@ -3715,7 +3810,11 @@ rtl8125_set_pci_99_180_exit_driver_para(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
- rtl8125_issue_offset_99_event(tp);
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
+ if (tp->org_pci_offset_99 & BIT_2)
+ rtl8125_issue_offset_99_event(tp);
+ rtl8125_disable_pci_offset_99(tp);
break;
}
@@ -3724,14 +3823,8 @@ rtl8125_set_pci_99_180_exit_driver_para(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
- rtl8125_disable_pci_offset_99(tp);
- break;
- }
- switch (tp->mcfg) {
- case CFG_METHOD_2:
- case CFG_METHOD_3:
- case CFG_METHOD_4:
- case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
rtl8125_disable_pci_offset_180(tp);
break;
}
@@ -3795,6 +3888,8 @@ rtl8125_hw_d3_para(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
RTL_W8(tp, 0xF1, RTL_R8(tp, 0xF1) & ~BIT_7);
rtl8125_enable_cfg9346_write(tp);
RTL_W8(tp, Config2, RTL_R8(tp, Config2) & ~BIT_7);
@@ -3814,6 +3909,8 @@ rtl8125_hw_d3_para(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
rtl8125_mac_ocp_write(tp, 0xEA18, 0x0064);
break;
}
@@ -3824,7 +3921,9 @@ rtl8125_hw_d3_para(struct net_device *dev)
if (tp->mcfg == CFG_METHOD_2 ||
tp->mcfg == CFG_METHOD_3 ||
tp->mcfg == CFG_METHOD_4 ||
- tp->mcfg == CFG_METHOD_5)
+ tp->mcfg == CFG_METHOD_5 ||
+ tp->mcfg == CFG_METHOD_6 ||
+ tp->mcfg == CFG_METHOD_7)
rtl8125_disable_ocp_phy_power_saving(dev);
rtl8125_disable_rxdvgate(dev);
@@ -4182,7 +4281,9 @@ rtl8125_powerdown_pll(struct net_device *dev, u8 from_suspend)
if (tp->mcfg == CFG_METHOD_2 ||
tp->mcfg == CFG_METHOD_3 ||
tp->mcfg == CFG_METHOD_4 ||
- tp->mcfg == CFG_METHOD_5) {
+ tp->mcfg == CFG_METHOD_5 ||
+ tp->mcfg == CFG_METHOD_6 ||
+ tp->mcfg == CFG_METHOD_7) {
rtl8125_enable_cfg9346_write(tp);
RTL_W8(tp, Config2, RTL_R8(tp, Config2) | PMSTS_En);
rtl8125_disable_cfg9346_write(tp);
@@ -4219,6 +4320,8 @@ rtl8125_powerdown_pll(struct net_device *dev, u8 from_suspend)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
RTL_W8(tp, PMCH, RTL_R8(tp, PMCH) & ~BIT_7);
break;
}
@@ -4229,6 +4332,8 @@ rtl8125_powerdown_pll(struct net_device *dev, u8 from_suspend)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
RTL_W8(tp, 0xF2, RTL_R8(tp, 0xF2) & ~BIT_6);
break;
}
@@ -4243,6 +4348,8 @@ static void rtl8125_powerup_pll(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
RTL_W8(tp, PMCH, RTL_R8(tp, PMCH) | BIT_7 | BIT_6);
break;
}
@@ -4617,7 +4724,9 @@ rtl8125_vlan_rx_register(struct net_device *dev,
if (tp->mcfg == CFG_METHOD_2 ||
tp->mcfg == CFG_METHOD_3 ||
tp->mcfg == CFG_METHOD_4 ||
- tp->mcfg == CFG_METHOD_5) {
+ tp->mcfg == CFG_METHOD_5 ||
+ tp->mcfg == CFG_METHOD_6 ||
+ tp->mcfg == CFG_METHOD_7) {
if (tp->vlgrp) {
tp->rtl8125_rx_config |= (EnableInnerVlan | EnableOuterVlan);
RTL_W32(tp, RxConfig, RTL_R32(tp, RxConfig) | (EnableInnerVlan | EnableOuterVlan))
@@ -4789,6 +4898,9 @@ static void rtl8125_gset_xmii(struct net_device *dev,
SUPPORTED_Pause |
SUPPORTED_Asym_Pause;
+ if (tp->mcfg == CFG_METHOD_6 || tp->mcfg == CFG_METHOD_7)
+ supported &= ~SUPPORTED_2500baseX_Full;
+
advertising = ADVERTISED_TP;
rtl8125_mdio_write(tp, 0x1F, 0x0000);
@@ -4968,6 +5080,8 @@ static void rtl8125_get_regs(struct net_device *dev, struct ethtool_regs *regs,
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
default:
for (i = 0; i < R8125_ERI_REGS_SIZE; i+=4) {
*(u32*)data = rtl8125_eri_read(tp, i , 4, ERIAR_ExGMAC);
@@ -5164,7 +5278,7 @@ rtl8125_get_strings(struct net_device *dev,
{
switch (stringset) {
case ETH_SS_STATS:
- memcpy(data, *rtl8125_gstrings, sizeof(rtl8125_gstrings));
+ memcpy(data, rtl8125_gstrings, sizeof(rtl8125_gstrings));
break;
}
}
@@ -5199,6 +5313,8 @@ static int rtl_get_eeprom(struct net_device *dev, struct ethtool_eeprom *eeprom,
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
default:
VPD_addr = 0xD2;
VPD_data = 0xD4;
@@ -5290,6 +5406,7 @@ static int rtl8125_enable_eee(struct rtl8125_private *tp)
switch (tp->mcfg) {
case CFG_METHOD_2:
case CFG_METHOD_3:
+ case CFG_METHOD_6:
RTL_W16(tp, EEE_TXIDLE_TIMER_8125, eee->tx_lpi_timer);
SetMcuAccessRegBit(tp, 0xE040, (BIT_1|BIT_0));
@@ -5305,6 +5422,7 @@ static int rtl8125_enable_eee(struct rtl8125_private *tp)
break;
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_7:
RTL_W16(tp, EEE_TXIDLE_TIMER_8125, eee->tx_lpi_timer);
SetMcuAccessRegBit(tp, 0xE040, (BIT_1|BIT_0));
@@ -5331,6 +5449,8 @@ static int rtl8125_enable_eee(struct rtl8125_private *tp)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
rtl8125_set_phy_mcu_patch_request(tp);
ClearMcuAccessRegBit(tp, 0xE052, BIT_0);
ClearEthPhyOcpBit(tp, 0xA442, BIT_12 | BIT_13);
@@ -5350,6 +5470,7 @@ static int rtl8125_disable_eee(struct rtl8125_private *tp)
switch (tp->mcfg) {
case CFG_METHOD_2:
case CFG_METHOD_3:
+ case CFG_METHOD_6:
ClearMcuAccessRegBit(tp, 0xE040, (BIT_1|BIT_0));
ClearMcuAccessRegBit(tp, 0xEB62, (BIT_2|BIT_1));
@@ -5363,6 +5484,7 @@ static int rtl8125_disable_eee(struct rtl8125_private *tp)
break;
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_7:
ClearMcuAccessRegBit(tp, 0xE040, (BIT_1|BIT_0));
ClearEthPhyOcpBit(tp, 0xA5D0, (BIT_2 | BIT_1));
@@ -5384,6 +5506,8 @@ static int rtl8125_disable_eee(struct rtl8125_private *tp)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
rtl8125_set_phy_mcu_patch_request(tp);
ClearMcuAccessRegBit(tp, 0xE052, BIT_0);
ClearEthPhyOcpBit(tp, 0xA442, BIT_12 | BIT_13);
@@ -5644,6 +5768,8 @@ static int rtl8125_enable_green_feature(struct rtl8125_private *tp)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
mdio_direct_write_phy_ocp(tp, 0xA436, 0x8011);
SetEthPhyOcpBit(tp, 0xA438, BIT_15);
rtl8125_mdio_write(tp, 0x00, 0x9200);
@@ -5665,6 +5791,8 @@ static int rtl8125_disable_green_feature(struct rtl8125_private *tp)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
mdio_direct_write_phy_ocp(tp, 0xA436, 0x8011);
ClearEthPhyOcpBit(tp, 0xA438, BIT_15);
rtl8125_mdio_write(tp, 0x00, 0x9200);
@@ -5683,6 +5811,7 @@ static void rtl8125_get_mac_version(struct rtl8125_private *tp)
{
u32 reg,val32;
u32 ICVerID;
+ struct pci_dev *pdev = tp->pci_dev;
val32 = RTL_R32(tp, TxConfig);
reg = val32 & 0x7c800000;
@@ -5720,6 +5849,13 @@ static void rtl8125_get_mac_version(struct rtl8125_private *tp)
tp->efuse_ver = EFUSE_NOT_SUPPORT;
break;
}
+
+ if (pdev->subsystem_vendor == 0x8162) {
+ if (tp->mcfg == CFG_METHOD_3)
+ tp->mcfg = CFG_METHOD_6;
+ else if (tp->mcfg == CFG_METHOD_5)
+ tp->mcfg = CFG_METHOD_7;
+ }
}
static void
@@ -5765,6 +5901,7 @@ rtl8125_clear_phy_ups_reg(struct net_device *dev)
switch (tp->mcfg) {
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_7:
ClearEthPhyOcpBit(tp, 0xA466, BIT_0);
break;
};
@@ -5779,7 +5916,9 @@ rtl8125_is_ups_resume(struct net_device *dev)
if (tp->mcfg == CFG_METHOD_2 ||
tp->mcfg == CFG_METHOD_3 ||
tp->mcfg == CFG_METHOD_4 ||
- tp->mcfg == CFG_METHOD_5)
+ tp->mcfg == CFG_METHOD_5 ||
+ tp->mcfg == CFG_METHOD_6 ||
+ tp->mcfg == CFG_METHOD_7)
return (rtl8125_mac_ocp_read(tp, 0xD42C) & BIT_8);
return 0;
@@ -5793,7 +5932,9 @@ rtl8125_clear_ups_resume_bit(struct net_device *dev)
if (tp->mcfg == CFG_METHOD_2 ||
tp->mcfg == CFG_METHOD_3 ||
tp->mcfg == CFG_METHOD_4 ||
- tp->mcfg == CFG_METHOD_5)
+ tp->mcfg == CFG_METHOD_5 ||
+ tp->mcfg == CFG_METHOD_6 ||
+ tp->mcfg == CFG_METHOD_7)
rtl8125_mac_ocp_write(tp, 0xD408, rtl8125_mac_ocp_read(tp, 0xD408) & ~(BIT_8));
}
@@ -5807,7 +5948,9 @@ rtl8125_wait_phy_ups_resume(struct net_device *dev, u16 PhyState)
if (tp->mcfg == CFG_METHOD_2 ||
tp->mcfg == CFG_METHOD_3 ||
tp->mcfg == CFG_METHOD_4 ||
- tp->mcfg == CFG_METHOD_5) {
+ tp->mcfg == CFG_METHOD_5 ||
+ tp->mcfg == CFG_METHOD_6 ||
+ tp->mcfg == CFG_METHOD_7) {
do {
TmpPhyState = mdio_direct_read_phy_ocp(tp, 0xA420);
TmpPhyState &= 0x7;
@@ -5848,8 +5991,7 @@ rtl8125_exit_oob(struct net_device *dev)
switch (tp->mcfg) {
case CFG_METHOD_2:
case CFG_METHOD_3:
- case CFG_METHOD_4:
- case CFG_METHOD_5:
+ case CFG_METHOD_6:
rtl8125_dash2_disable_txrx(dev);
break;
}
@@ -5871,6 +6013,8 @@ rtl8125_exit_oob(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
rtl8125_mac_ocp_write(tp, 0xC0BC, 0x00FF);
break;
}
@@ -5883,6 +6027,8 @@ rtl8125_exit_oob(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
rtl8125_disable_now_is_oob(tp);
data16 = rtl8125_mac_ocp_read(tp, 0xE8DE) & ~BIT_14;
@@ -5903,6 +6049,8 @@ rtl8125_exit_oob(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
if (rtl8125_is_ups_resume(dev)) {
rtl8125_wait_phy_ups_resume(dev, 2);
rtl8125_clear_ups_resume_bit(dev);
@@ -5915,6 +6063,8 @@ rtl8125_exit_oob(struct net_device *dev)
void
rtl8125_hw_disable_mac_mcu_bps(struct net_device *dev)
{
+ u16 regAddr;
+
struct rtl8125_private *tp = netdev_priv(dev);
switch (tp->mcfg) {
@@ -5922,6 +6072,8 @@ rtl8125_hw_disable_mac_mcu_bps(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
rtl8125_enable_cfg9346_write(tp);
RTL_W8(tp, Config5, RTL_R8(tp, Config5) & ~BIT_0);
RTL_W8(tp, Config2, RTL_R8(tp, Config2) & ~BIT_7);
@@ -5934,7 +6086,9 @@ rtl8125_hw_disable_mac_mcu_bps(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
- rtl8125_mac_ocp_write(tp, 0xFC38, 0x0000);
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
+ rtl8125_mac_ocp_write(tp, 0xFC48, 0x0000);
break;
}
@@ -5943,21 +6097,72 @@ rtl8125_hw_disable_mac_mcu_bps(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
- rtl8125_mac_ocp_write(tp, 0xFC28, 0x0000);
- rtl8125_mac_ocp_write(tp, 0xFC2A, 0x0000);
- rtl8125_mac_ocp_write(tp, 0xFC2C, 0x0000);
- rtl8125_mac_ocp_write(tp, 0xFC2E, 0x0000);
- rtl8125_mac_ocp_write(tp, 0xFC30, 0x0000);
- rtl8125_mac_ocp_write(tp, 0xFC32, 0x0000);
- rtl8125_mac_ocp_write(tp, 0xFC34, 0x0000);
- rtl8125_mac_ocp_write(tp, 0xFC36, 0x0000);
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
+ for (regAddr = 0xFC28; regAddr < 0xFC48; regAddr += 2) {
+ rtl8125_mac_ocp_write(tp, regAddr, 0x0000);
+ }
+
mdelay(3);
+
rtl8125_mac_ocp_write(tp, 0xFC26, 0x0000);
break;
}
}
#ifndef ENABLE_USE_FIRMWARE_FILE
+static void
+rtl8125_switch_mac_mcu_ram_code_page(struct rtl8125_private *tp, u16 page)
+{
+ u16 tmpUshort;
+
+ page &= (BIT_1 | BIT_0);
+ tmpUshort = rtl8125_mac_ocp_read(tp, 0xE446);
+ tmpUshort &= ~(BIT_1 | BIT_0);
+ tmpUshort |= page;
+ rtl8125_mac_ocp_write(tp, 0xE446, tmpUshort);
+}
+
+static void
+_rtl8125_write_mac_mcu_ram_code(struct rtl8125_private *tp, const u16 *entry, u16 entry_cnt)
+{
+ u16 i;
+
+ for (i = 0; i < entry_cnt; i++) {
+ rtl8125_mac_ocp_write(tp, 0xF800 + i * 2, entry[i]);
+ }
+}
+
+static void
+_rtl8125_write_mac_mcu_ram_code_with_page(struct rtl8125_private *tp, const u16 *entry, u16 entry_cnt, u16 page_size)
+{
+ u16 i;
+ u16 offset;
+
+ if (page_size == 0) return;
+
+ for (i = 0; i < entry_cnt; i++) {
+ offset = i % page_size;
+ if (offset == 0) {
+ u16 page = (i / page_size);
+ rtl8125_switch_mac_mcu_ram_code_page(tp, page);
+ }
+ rtl8125_mac_ocp_write(tp, 0xF800 + offset * 2, entry[i]);
+ }
+}
+
+static void
+rtl8125_write_mac_mcu_ram_code(struct rtl8125_private *tp, const u16 *entry, u16 entry_cnt)
+{
+ if (FALSE == HW_SUPPORT_MAC_MCU(tp)) return;
+ if (entry == NULL || entry_cnt == 0) return;
+
+ if (tp->MacMcuPageSize > 0)
+ _rtl8125_write_mac_mcu_ram_code_with_page(tp, entry, entry_cnt, tp->MacMcuPageSize);
+ else
+ _rtl8125_write_mac_mcu_ram_code(tp, entry, entry_cnt);
+}
+
static void
rtl8125_set_mac_mcu_8125a_1(struct net_device *dev)
{
@@ -5968,49 +6173,55 @@ static void
rtl8125_set_mac_mcu_8125a_2(struct net_device *dev)
{
struct rtl8125_private *tp = netdev_priv(dev);
- u16 i;
static const u16 mcu_patch_code_8125a_2[] = {
- 0xE008, 0xE01E, 0xE02E, 0xE054, 0xE057, 0xE059, 0xE0C2, 0xE0CB, 0x9996,
- 0x49D1, 0xF005, 0x49D4, 0xF10A, 0x49D8, 0xF108, 0xC00F, 0x7100, 0x209C,
- 0x249C, 0xC009, 0x9900, 0xE004, 0xC006, 0x1900, 0x9900, 0xC602, 0xBE00,
- 0x5A48, 0xE0C2, 0x0004, 0xE10A, 0xC60F, 0x73C4, 0x49B3, 0xF106, 0x73C2,
- 0xC608, 0xB406, 0xC609, 0xFF80, 0xC605, 0xB406, 0xC605, 0xFF80, 0x0544,
- 0x0568, 0xE906, 0xCDE8, 0xC724, 0xC624, 0x9EE2, 0x1E01, 0x9EE0, 0x76E0,
- 0x49E0, 0xF1FE, 0x76E6, 0x486D, 0x4868, 0x9EE4, 0x1E03, 0x9EE0, 0x76E0,
- 0x49E0, 0xF1FE, 0xC615, 0x9EE2, 0x1E01, 0x9EE0, 0x76E0, 0x49E0, 0xF1FE,
- 0x76E6, 0x486F, 0x9EE4, 0x1E03, 0x9EE0, 0x76E0, 0x49E0, 0xF1FE, 0x7196,
- 0xC702, 0xBF00, 0x5A44, 0xEB0E, 0x0070, 0x00C3, 0x1BC0, 0xC602, 0xBE00,
- 0x0E26, 0xC602, 0xBE00, 0x0EBA, 0x1501, 0xF02A, 0x1500, 0xF15D, 0xC661,
- 0x75C8, 0x49D5, 0xF00A, 0x49D6, 0xF008, 0x49D7, 0xF006, 0x49D8, 0xF004,
- 0x75D2, 0x49D9, 0xF150, 0xC553, 0x77A0, 0x75C8, 0x4855, 0x4856, 0x4857,
- 0x4858, 0x48DA, 0x48DB, 0x49FE, 0xF002, 0x485A, 0x49FF, 0xF002, 0x485B,
- 0x9DC8, 0x75D2, 0x4859, 0x9DD2, 0xC643, 0x75C0, 0x49D4, 0xF033, 0x49D0,
- 0xF137, 0xE030, 0xC63A, 0x75C8, 0x49D5, 0xF00E, 0x49D6, 0xF00C, 0x49D7,
- 0xF00A, 0x49D8, 0xF008, 0x75D2, 0x49D9, 0xF005, 0xC62E, 0x75C0, 0x49D7,
- 0xF125, 0xC528, 0x77A0, 0xC627, 0x75C8, 0x4855, 0x4856, 0x4857, 0x4858,
- 0x48DA, 0x48DB, 0x49FE, 0xF002, 0x485A, 0x49FF, 0xF002, 0x485B, 0x9DC8,
- 0x75D2, 0x4859, 0x9DD2, 0xC616, 0x75C0, 0x4857, 0x9DC0, 0xC613, 0x75C0,
- 0x49DA, 0xF003, 0x49D0, 0xF107, 0xC60B, 0xC50E, 0x48D9, 0x9DC0, 0x4859,
- 0x9DC0, 0xC608, 0xC702, 0xBF00, 0x3AE0, 0xE860, 0xB400, 0xB5D4, 0xE908,
- 0xE86C, 0x1200, 0xC409, 0x6780, 0x48F1, 0x8F80, 0xC404, 0xC602, 0xBE00,
- 0x10AA, 0xC010, 0xEA7C, 0xC602, 0xBE00, 0x0000
+ 0xE010, 0xE026, 0xE036, 0xE05C, 0xE05E, 0xE060, 0xE0C9, 0xE0D2, 0xE0D4,
+ 0xE0DF, 0xE0EA, 0xE0FB, 0xE101, 0xE106, 0xE10B, 0xE10D, 0x9996, 0x49D1,
+ 0xF005, 0x49D4, 0xF10A, 0x49D8, 0xF108, 0xC00F, 0x7100, 0x209C, 0x249C,
+ 0xC009, 0x9900, 0xE004, 0xC006, 0x1900, 0x9900, 0xC602, 0xBE00, 0x5A48,
+ 0xE0C2, 0x0004, 0xE10A, 0xC60F, 0x73C4, 0x49B3, 0xF106, 0x73C2, 0xC608,
+ 0xB406, 0xC609, 0xFF80, 0xC605, 0xB406, 0xC605, 0xFF80, 0x0544, 0x0568,
+ 0xE906, 0xCDE8, 0xC724, 0xC624, 0x9EE2, 0x1E01, 0x9EE0, 0x76E0, 0x49E0,
+ 0xF1FE, 0x76E6, 0x486D, 0x4868, 0x9EE4, 0x1E03, 0x9EE0, 0x76E0, 0x49E0,
+ 0xF1FE, 0xC615, 0x9EE2, 0x1E01, 0x9EE0, 0x76E0, 0x49E0, 0xF1FE, 0x76E6,
+ 0x486F, 0x9EE4, 0x1E03, 0x9EE0, 0x76E0, 0x49E0, 0xF1FE, 0x7196, 0xC702,
+ 0xBF00, 0x5A44, 0xEB0E, 0x0070, 0x00C3, 0xC602, 0xBE00, 0x0000, 0xC602,
+ 0xBE00, 0x0EBA, 0x1501, 0xF02A, 0x1500, 0xF15D, 0xC661, 0x75C8, 0x49D5,
+ 0xF00A, 0x49D6, 0xF008, 0x49D7, 0xF006, 0x49D8, 0xF004, 0x75D2, 0x49D9,
+ 0xF150, 0xC553, 0x77A0, 0x75C8, 0x4855, 0x4856, 0x4857, 0x4858, 0x48DA,
+ 0x48DB, 0x49FE, 0xF002, 0x485A, 0x49FF, 0xF002, 0x485B, 0x9DC8, 0x75D2,
+ 0x4859, 0x9DD2, 0xC643, 0x75C0, 0x49D4, 0xF033, 0x49D0, 0xF137, 0xE030,
+ 0xC63A, 0x75C8, 0x49D5, 0xF00E, 0x49D6, 0xF00C, 0x49D7, 0xF00A, 0x49D8,
+ 0xF008, 0x75D2, 0x49D9, 0xF005, 0xC62E, 0x75C0, 0x49D7, 0xF125, 0xC528,
+ 0x77A0, 0xC627, 0x75C8, 0x4855, 0x4856, 0x4857, 0x4858, 0x48DA, 0x48DB,
+ 0x49FE, 0xF002, 0x485A, 0x49FF, 0xF002, 0x485B, 0x9DC8, 0x75D2, 0x4859,
+ 0x9DD2, 0xC616, 0x75C0, 0x4857, 0x9DC0, 0xC613, 0x75C0, 0x49DA, 0xF003,
+ 0x49D0, 0xF107, 0xC60B, 0xC50E, 0x48D9, 0x9DC0, 0x4859, 0x9DC0, 0xC608,
+ 0xC702, 0xBF00, 0x3AE0, 0xE860, 0xB400, 0xB5D4, 0xE908, 0xE86C, 0x1200,
+ 0xC409, 0x6780, 0x48F1, 0x8F80, 0xC404, 0xC602, 0xBE00, 0x10AA, 0xC010,
+ 0xEA7C, 0xC602, 0xBE00, 0x0000, 0x740A, 0x4846, 0x4847, 0x9C0A, 0xC607,
+ 0x74C0, 0x48C6, 0x9CC0, 0xC602, 0xBE00, 0x13FE, 0xE054, 0x72CA, 0x4826,
+ 0x4827, 0x9ACA, 0xC607, 0x72C0, 0x48A6, 0x9AC0, 0xC602, 0xBE00, 0x07DC,
+ 0xE054, 0xC60F, 0x74C4, 0x49CC, 0xF109, 0xC60C, 0x74CA, 0x48C7, 0x9CCA,
+ 0xC609, 0x74C0, 0x4846, 0x9CC0, 0xC602, 0xBE00, 0x2480, 0xE092, 0xE0C0,
+ 0xE054, 0x7420, 0x48C0, 0x9C20, 0x7444, 0xC602, 0xBE00, 0x12F8, 0x1BFF,
+ 0x46EB, 0x1BFF, 0xC102, 0xB900, 0x0D5A, 0x1BFF, 0x46EB, 0x1BFF, 0xC102,
+ 0xB900, 0x0E2A, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000
};
rtl8125_hw_disable_mac_mcu_bps(dev);
- for (i = 0; i < ARRAY_SIZE(mcu_patch_code_8125a_2); i++) {
- rtl8125_mac_ocp_write(tp, 0xF800 + i * 2, mcu_patch_code_8125a_2[i]);
- }
+ rtl8125_write_mac_mcu_ram_code(tp, mcu_patch_code_8125a_2, ARRAY_SIZE(mcu_patch_code_8125a_2));
rtl8125_mac_ocp_write(tp, 0xFC26, 0x8000);
rtl8125_mac_ocp_write(tp, 0xFC2A, 0x0540);
- rtl8125_mac_ocp_write(tp, 0xFC2E, 0x0E24);
rtl8125_mac_ocp_write(tp, 0xFC30, 0x0EB8);
rtl8125_mac_ocp_write(tp, 0xFC32, 0x3A5C);
rtl8125_mac_ocp_write(tp, 0xFC34, 0x10A8);
+ rtl8125_mac_ocp_write(tp, 0xFC40, 0x0D54);
+ rtl8125_mac_ocp_write(tp, 0xFC42, 0x0E24);
- rtl8125_mac_ocp_write(tp, 0xFC48, 0x007A);
+ rtl8125_mac_ocp_write(tp, 0xFC48, 0x3072);
}
static void
@@ -6023,7 +6234,6 @@ static void
rtl8125_set_mac_mcu_8125b_2(struct net_device *dev)
{
struct rtl8125_private *tp = netdev_priv(dev);
- u16 i;
static const u16 mcu_patch_code_8125b_2[] = {
0xE010, 0xE01B, 0xE026, 0xE037, 0xE03D, 0xE057, 0xE05B, 0xE05F, 0xE061,
0xE063, 0xE065, 0xE067, 0xE069, 0xE06B, 0xE06D, 0xE06F, 0x740A, 0x4846,
@@ -6044,9 +6254,7 @@ rtl8125_set_mac_mcu_8125b_2(struct net_device *dev)
rtl8125_hw_disable_mac_mcu_bps(dev);
- for (i = 0; i < ARRAY_SIZE(mcu_patch_code_8125b_2); i++) {
- rtl8125_mac_ocp_write(tp, 0xF800 + i * 2, mcu_patch_code_8125b_2[i]);
- }
+ rtl8125_write_mac_mcu_ram_code(tp, mcu_patch_code_8125b_2, ARRAY_SIZE(mcu_patch_code_8125b_2));
rtl8125_mac_ocp_write(tp, 0xFC26, 0x8000);
@@ -6056,9 +6264,9 @@ rtl8125_set_mac_mcu_8125b_2(struct net_device *dev)
rtl8125_mac_ocp_write(tp, 0xFC2E, 0x12DA);
rtl8125_mac_ocp_write(tp, 0xFC30, 0x4A20);
rtl8125_mac_ocp_write(tp, 0xFC32, 0x47A0);
- rtl8125_mac_ocp_write(tp, 0xFC34, 0x0A46);
+ //rtl8125_mac_ocp_write(tp, 0xFC34, 0x0A46);
- rtl8125_mac_ocp_write(tp, 0xFC48, 0x007F);
+ rtl8125_mac_ocp_write(tp, 0xFC48, 0x003F);
}
static void
@@ -6073,12 +6281,14 @@ rtl8125_hw_mac_mcu_config(struct net_device *dev)
rtl8125_set_mac_mcu_8125a_1(dev);
break;
case CFG_METHOD_3:
+ case CFG_METHOD_6:
rtl8125_set_mac_mcu_8125a_2(dev);
break;
case CFG_METHOD_4:
rtl8125_set_mac_mcu_8125b_1(dev);
break;
case CFG_METHOD_5:
+ case CFG_METHOD_7:
rtl8125_set_mac_mcu_8125b_2(dev);
break;
}
@@ -6127,6 +6337,8 @@ rtl8125_hw_init(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
rtl8125_enable_cfg9346_write(tp);
RTL_W8(tp, Config5, RTL_R8(tp, Config5) & ~BIT_0);
RTL_W8(tp, Config2, RTL_R8(tp, Config2) & ~BIT_7);
@@ -6141,6 +6353,8 @@ rtl8125_hw_init(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
rtl8125_mac_ocp_write(tp, 0xD40A, rtl8125_mac_ocp_read( tp, 0xD40A) & ~(BIT_4));
break;
}
@@ -6154,7 +6368,9 @@ rtl8125_hw_init(struct net_device *dev)
if (tp->mcfg == CFG_METHOD_2 ||
tp->mcfg == CFG_METHOD_3 ||
tp->mcfg == CFG_METHOD_4 ||
- tp->mcfg == CFG_METHOD_5)
+ tp->mcfg == CFG_METHOD_5 ||
+ tp->mcfg == CFG_METHOD_6 ||
+ tp->mcfg == CFG_METHOD_7)
rtl8125_disable_ocp_phy_power_saving(dev);
//Set PCIE uncorrectable error status mask pcie 0x108
@@ -6214,6 +6430,7 @@ rtl8125_hw_ephy_config(struct net_device *dev)
rtl8125_ephy_write(tp, 0x63, 0xAB62);
break;
case CFG_METHOD_3:
+ case CFG_METHOD_6:
rtl8125_ephy_write(tp, 0x04, 0xD000);
rtl8125_ephy_write(tp, 0x0A, 0x8653);
rtl8125_ephy_write(tp, 0x23, 0xAB66);
@@ -6280,6 +6497,7 @@ rtl8125_hw_ephy_config(struct net_device *dev)
rtl8125_ephy_write(tp, 0x5B, 0x1EA0);
break;
case CFG_METHOD_5:
+ case CFG_METHOD_7:
rtl8125_ephy_write(tp, 0x0B, 0xA908);
rtl8125_ephy_write(tp, 0x22, 0x0023);
rtl8125_ephy_write(tp, 0x1E, 0x28EB);
@@ -6301,6 +6519,8 @@ rtl8125_get_hw_phy_mcu_code_ver(struct rtl8125_private *tp)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
mdio_direct_write_phy_ocp(tp, 0xA436, 0x801E);
hw_ram_code_ver = mdio_direct_read_phy_ocp(tp, 0xA438);
break;
@@ -6384,6 +6604,8 @@ rtl8125_write_hw_phy_mcu_code_ver(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
mdio_direct_write_phy_ocp(tp, 0xA436, 0x801E);
mdio_direct_write_phy_ocp(tp, 0xA438, tp->sw_ram_code_ver);
tp->hw_ram_code_ver = tp->sw_ram_code_ver;
@@ -6401,12 +6623,14 @@ rtl8125_acquire_phy_mcu_patch_key_lock(struct rtl8125_private *tp)
PatchKey = 0x8600;
break;
case CFG_METHOD_3:
+ case CFG_METHOD_6:
PatchKey = 0x8601;
break;
case CFG_METHOD_4:
PatchKey = 0x3700;
break;
case CFG_METHOD_5:
+ case CFG_METHOD_7:
PatchKey = 0x3701;
break;
default:
@@ -6426,6 +6650,8 @@ rtl8125_release_phy_mcu_patch_key_lock(struct rtl8125_private *tp)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
mdio_direct_write_phy_ocp(tp, 0xA436, 0x0000);
mdio_direct_write_phy_ocp(tp, 0xA438, 0x0000);
ClearEthPhyOcpBit(tp, 0xB82E, BIT_0);
@@ -8878,12 +9104,14 @@ rtl8125_init_hw_phy_mcu(struct net_device *dev)
rtl8125_set_phy_mcu_8125a_1(dev);
break;
case CFG_METHOD_3:
+ case CFG_METHOD_6:
rtl8125_set_phy_mcu_8125a_2(dev);
break;
case CFG_METHOD_4:
rtl8125_set_phy_mcu_8125b_1(dev);
break;
case CFG_METHOD_5:
+ case CFG_METHOD_7:
rtl8125_set_phy_mcu_8125b_2(dev);
break;
}
@@ -9809,12 +10037,14 @@ rtl8125_hw_phy_config(struct net_device *dev)
rtl8125_hw_phy_config_8125a_1(dev);
break;
case CFG_METHOD_3:
+ case CFG_METHOD_6:
rtl8125_hw_phy_config_8125a_2(dev);
break;
case CFG_METHOD_4:
rtl8125_hw_phy_config_8125b_1(dev);
break;
case CFG_METHOD_5:
+ case CFG_METHOD_7:
rtl8125_hw_phy_config_8125b_2(dev);
break;
}
@@ -9825,6 +10055,8 @@ rtl8125_hw_phy_config(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
default:
rtl8125_mdio_write(tp, 0x1F, 0x0A5B);
rtl8125_clear_eth_phy_bit(tp, 0x12, BIT_15);
@@ -9835,7 +10067,8 @@ rtl8125_hw_phy_config(struct net_device *dev)
/*ocp phy power saving*/
/*
if (aspm) {
- if (tp->mcfg == CFG_METHOD_2 || tp->mcfg == CFG_METHOD_3)
+ if (tp->mcfg == CFG_METHOD_2 || tp->mcfg == CFG_METHOD_3 ||
+ tp->mcfg == CFG_METHOD_6)
rtl8125_enable_ocp_phy_power_saving(dev);
}
*/
@@ -9940,6 +10173,8 @@ rtl8125_get_bios_setting(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
tp->bios_setting = RTL_R32(tp, TimeInt2);
break;
}
@@ -9955,6 +10190,8 @@ rtl8125_set_bios_setting(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
RTL_W32(tp, TimeInt2, tp->bios_setting);
break;
}
@@ -10008,8 +10245,6 @@ rtl8125_init_software_variable(struct net_device *dev)
switch (tp->mcfg) {
case CFG_METHOD_2:
case CFG_METHOD_3:
- case CFG_METHOD_4:
- case CFG_METHOD_5:
//tp->HwSuppDashVer = 3;
break;
default:
@@ -10022,6 +10257,8 @@ rtl8125_init_software_variable(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
tp->HwPkgDet = rtl8125_mac_ocp_read(tp, 0xDC00);
tp->HwPkgDet = (tp->HwPkgDet >> 3) & 0x07;
break;
@@ -10035,6 +10272,8 @@ rtl8125_init_software_variable(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
tp->HwSuppNowIsOobVer = 1;
break;
}
@@ -10044,6 +10283,8 @@ rtl8125_init_software_variable(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
tp->HwPcieSNOffset = 0x16C;
break;
}
@@ -10099,6 +10340,8 @@ rtl8125_init_software_variable(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
tp->org_pci_offset_99 = rtl8125_csi_fun0_read_byte(tp, 0x99);
tp->org_pci_offset_99 &= ~(BIT_5|BIT_6);
break;
@@ -10107,10 +10350,12 @@ rtl8125_init_software_variable(struct net_device *dev)
switch (tp->mcfg) {
case CFG_METHOD_2:
case CFG_METHOD_3:
+ case CFG_METHOD_6:
tp->org_pci_offset_180 = rtl8125_csi_fun0_read_byte(tp, 0x264);
break;
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_7:
tp->org_pci_offset_180 = rtl8125_csi_fun0_read_byte(tp, 0x214);
break;
}
@@ -10124,6 +10369,8 @@ rtl8125_init_software_variable(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
default:
tp->use_timer_interrrupt = TRUE;
break;
@@ -10137,6 +10384,8 @@ rtl8125_init_software_variable(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
tp->HwSuppMagicPktVer = WAKEUP_MAGIC_PACKET_V3;
break;
default:
@@ -10149,6 +10398,8 @@ rtl8125_init_software_variable(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
tp->HwSuppLinkChgWakeUpVer = 3;
break;
}
@@ -10157,6 +10408,8 @@ rtl8125_init_software_variable(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
tp->HwSuppD0SpeedUpVer = 1;
break;
}
@@ -10166,6 +10419,8 @@ rtl8125_init_software_variable(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
tp->HwSuppCheckPhyDisableModeVer = 3;
break;
}
@@ -10175,6 +10430,8 @@ rtl8125_init_software_variable(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
tp->HwSuppTxNoCloseVer = 3;
break;
}
@@ -10185,6 +10442,7 @@ rtl8125_init_software_variable(struct net_device *dev)
switch (tp->mcfg) {
case CFG_METHOD_2:
case CFG_METHOD_3:
+ case CFG_METHOD_6:
tp->RequireLSOPatch = TRUE;
break;
}
@@ -10194,12 +10452,14 @@ rtl8125_init_software_variable(struct net_device *dev)
tp->sw_ram_code_ver = NIC_RAMCODE_VERSION_CFG_METHOD_2;
break;
case CFG_METHOD_3:
+ case CFG_METHOD_6:
tp->sw_ram_code_ver = NIC_RAMCODE_VERSION_CFG_METHOD_3;
break;
case CFG_METHOD_4:
tp->sw_ram_code_ver = NIC_RAMCODE_VERSION_CFG_METHOD_4;
break;
case CFG_METHOD_5:
+ case CFG_METHOD_7:
tp->sw_ram_code_ver = NIC_RAMCODE_VERSION_CFG_METHOD_5;
break;
}
@@ -10211,17 +10471,39 @@ rtl8125_init_software_variable(struct net_device *dev)
switch (tp->mcfg) {
case CFG_METHOD_3:
+ case CFG_METHOD_6:
if ((rtl8125_mac_ocp_read(tp, 0xD442) & BIT_5) &&
- (mdio_direct_read_phy_ocp(tp, 0xD068) & BIT_1)
- ) {
+ (mdio_direct_read_phy_ocp(tp, 0xD068) & BIT_1))
tp->RequirePhyMdiSwapPatch = TRUE;
- }
+ break;
+ }
+
+ switch (tp->mcfg) {
+ case CFG_METHOD_2:
+ case CFG_METHOD_3:
+ case CFG_METHOD_4:
+ case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
+ tp->HwSuppMacMcuVer = 2;
+ break;
+ }
+
+ switch (tp->mcfg) {
+ case CFG_METHOD_2:
+ case CFG_METHOD_3:
+ case CFG_METHOD_4:
+ case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
+ tp->MacMcuPageSize = RTL8125_MAC_MCU_PAGE_SIZE;
break;
}
switch (tp->mcfg) {
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_7:
tp->HwSuppNumTxQueues = 2;
tp->HwSuppNumRxQueues = 4;
break;
@@ -10241,6 +10523,7 @@ rtl8125_init_software_variable(struct net_device *dev)
switch (tp->mcfg) {
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_7:
tp->HwSuppRssVer = 5;
tp->HwSuppIndirTblEntries = 128;
break;
@@ -10273,6 +10556,7 @@ rtl8125_init_software_variable(struct net_device *dev)
switch (tp->mcfg) {
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_7:
tp->HwSuppPtpVer = 1;
break;
}
@@ -10298,6 +10582,7 @@ rtl8125_init_software_variable(struct net_device *dev)
switch (tp->mcfg) {
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_7:
tp->HwSuppIsrVer = 2;
break;
default:
@@ -10341,10 +10626,12 @@ rtl8125_init_software_variable(struct net_device *dev)
switch (tp->mcfg) {
case CFG_METHOD_2:
case CFG_METHOD_3:
+ case CFG_METHOD_6:
tp->HwSuppIntMitiVer = 3;
break;
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_7:
tp->HwSuppIntMitiVer = 4;
break;
}
@@ -10354,6 +10641,8 @@ rtl8125_init_software_variable(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
tp->HwSuppExtendTallyCounterVer = 1;
break;
}
@@ -10365,7 +10654,10 @@ rtl8125_init_software_variable(struct net_device *dev)
tp->wol_opts = rtl8125_get_hw_wol(tp);
tp->wol_enabled = (tp->wol_opts) ? WOL_ENABLED : WOL_DISABLED;
- rtl8125_link_option((u8*)&autoneg_mode, (u32*)&speed_mode, (u8*)&duplex_mode, (u32*)&advertising_mode);
+ if (tp->mcfg == CFG_METHOD_6 || tp->mcfg == CFG_METHOD_7)
+ rtl8125_link_option_giga((u8*)&autoneg_mode, (u32*)&speed_mode, (u8*)&duplex_mode, (u32*)&advertising_mode);
+ else
+ rtl8125_link_option((u8*)&autoneg_mode, (u32*)&speed_mode, (u8*)&duplex_mode, (u32*)&advertising_mode);
tp->autoneg = autoneg_mode;
tp->speed = speed_mode;
@@ -10441,7 +10733,9 @@ rtl8125_get_mac_address(struct net_device *dev)
if(tp->mcfg == CFG_METHOD_2 ||
tp->mcfg == CFG_METHOD_3 ||
tp->mcfg == CFG_METHOD_4 ||
- tp->mcfg == CFG_METHOD_5) {
+ tp->mcfg == CFG_METHOD_5 ||
+ tp->mcfg == CFG_METHOD_6 ||
+ tp->mcfg == CFG_METHOD_7) {
*(u32*)&mac_addr[0] = RTL_R32(tp, BACKUP_ADDR0_8125);
*(u16*)&mac_addr[4] = RTL_R16(tp, BACKUP_ADDR1_8125);
}
@@ -11280,6 +11574,8 @@ rtl8125_phy_power_up(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
rtl8125_wait_phy_ups_resume(dev, 3);
break;
};
@@ -11489,6 +11785,12 @@ rtl8125_esd_checker(struct rtl8125_private *tp)
printk(KERN_ERR "%s: cmd = 0x%02x, should be 0x%02x \n.", dev->name, cmd, tp->pci_cfg_space.cmd);
pci_write_config_byte(pdev, PCI_COMMAND, tp->pci_cfg_space.cmd);
tp->esd_flag |= BIT_0;
+
+ pci_read_config_byte(pdev, PCI_COMMAND, &cmd);
+ if (cmd == 0xff) {
+ printk(KERN_ERR "%s: pci link is down \n.", dev->name);
+ goto exit;
+ }
}
pci_read_config_word(pdev, PCI_BASE_ADDRESS_0, &io_base_l);
@@ -11604,6 +11906,8 @@ rtl8125_esd_checker(struct rtl8125_private *tp)
rtl8125_set_speed(dev, tp->autoneg, tp->speed, tp->duplex, tp->advertising);
tp->esd_flag = 0;
}
+exit:
+ return;
}
/*
static void
@@ -11713,6 +12017,7 @@ static int rtl8125_try_msi(struct rtl8125_private *tp)
switch (tp->mcfg) {
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_7:
tp->max_irq_nvecs = R8125_MAX_MSIX_VEC_8125B;
tp->min_irq_nvecs = R8125_MIN_MSIX_VEC_8125B;
break;
@@ -12089,7 +12394,9 @@ rtl8125_init_one(struct pci_dev *pdev,
dev_err(&pdev->dev, "Can't allocate interrupt\n");
goto err_out_1;
}
-
+#ifdef ENABLE_PTP_SUPPORT
+ spin_lock_init(&tp->lock);
+#endif
rtl8125_init_software_variable(dev);
RTL_NET_DEVICE_OPS(rtl8125_netdev_ops);
@@ -12694,6 +13001,8 @@ rtl8125_hw_config(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
RTL_W8(tp, 0xF1, RTL_R8(tp, 0xF1) & ~BIT_7);
RTL_W8(tp, Config2, RTL_R8(tp, Config2) & ~BIT_7);
RTL_W8(tp, Config5, RTL_R8(tp, Config5) & ~BIT_0);
@@ -12706,6 +13015,8 @@ rtl8125_hw_config(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
RTL_W8(tp, Config3, RTL_R8(tp, Config3) & ~BIT_1);
break;
}
@@ -12715,6 +13026,8 @@ rtl8125_hw_config(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
//IntMITI_0-IntMITI_31
for (i=0xA00; i<0xB00; i+=4)
RTL_W32(tp, i, 0x00000000);
@@ -12727,6 +13040,8 @@ rtl8125_hw_config(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
mac_ocp_data = rtl8125_mac_ocp_read(tp, 0xC0B6);
mac_ocp_data &= BIT_0;
rtl8125_mac_ocp_write(tp, 0xC0B6, mac_ocp_data);
@@ -12749,7 +13064,9 @@ rtl8125_hw_config(struct net_device *dev)
if (tp->mcfg == CFG_METHOD_2 ||
tp->mcfg == CFG_METHOD_3 ||
tp->mcfg == CFG_METHOD_4 ||
- tp->mcfg == CFG_METHOD_5) {
+ tp->mcfg == CFG_METHOD_5 ||
+ tp->mcfg == CFG_METHOD_6 ||
+ tp->mcfg == CFG_METHOD_7) {
set_offset70F(tp, 0x27);
set_offset79(tp, 0x50);
@@ -12774,21 +13091,19 @@ rtl8125_hw_config(struct net_device *dev)
mac_ocp_data = rtl8125_mac_ocp_read(tp, 0xE614);
mac_ocp_data &= ~( BIT_10 | BIT_9 | BIT_8);
- if (tp->mcfg == CFG_METHOD_4 || tp->mcfg == CFG_METHOD_5) {
+ if (tp->mcfg == CFG_METHOD_4 || tp->mcfg == CFG_METHOD_5 ||
+ tp->mcfg == CFG_METHOD_7)
mac_ocp_data |= ((2 & 0x07) << 8);
- } else {
- if (tp->DASH && !(rtl8125_csi_fun0_read_byte(tp, 0x79) & BIT_0))
- mac_ocp_data |= ((3 & 0x07) << 8);
- else
- mac_ocp_data |= ((4 & 0x07) << 8);
- }
+ else
+ mac_ocp_data |= ((3 & 0x07) << 8);
rtl8125_mac_ocp_write(tp, 0xE614, mac_ocp_data);
rtl8125_set_tx_q_num(tp, rtl8125_tot_tx_rings(tp));
mac_ocp_data = rtl8125_mac_ocp_read(tp, 0xE63E);
mac_ocp_data &= ~(BIT_5 | BIT_4);
- if (tp->mcfg == CFG_METHOD_2 || tp->mcfg == CFG_METHOD_3)
+ if (tp->mcfg == CFG_METHOD_2 || tp->mcfg == CFG_METHOD_3 ||
+ tp->mcfg == CFG_METHOD_6)
mac_ocp_data |= ((0x02 & 0x03) << 4);
rtl8125_mac_ocp_write(tp, 0xE63E, mac_ocp_data);
@@ -12846,7 +13161,8 @@ rtl8125_hw_config(struct net_device *dev)
else
RTL_W8(tp, 0xD0, (RTL_R8(tp, 0xD0) & ~BIT_6) | BIT_7);
- if (tp->mcfg == CFG_METHOD_2 || tp->mcfg == CFG_METHOD_3)
+ if (tp->mcfg == CFG_METHOD_2 || tp->mcfg == CFG_METHOD_3 ||
+ tp->mcfg == CFG_METHOD_6)
RTL_W8(tp, MCUCmd_reg, RTL_R8(tp, MCUCmd_reg) | BIT_0);
rtl8125_disable_eee_plus(tp);
@@ -12892,6 +13208,8 @@ rtl8125_hw_config(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
rtl8125_mac_ocp_write(tp, 0xE098, 0xC302);
break;
}
@@ -12901,6 +13219,8 @@ rtl8125_hw_config(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
if (aspm) {
rtl8125_init_pci_offset_99(tp);
}
@@ -12911,6 +13231,8 @@ rtl8125_hw_config(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
if (aspm) {
rtl8125_init_pci_offset_180(tp);
}
@@ -12931,7 +13253,9 @@ rtl8125_hw_config(struct net_device *dev)
case CFG_METHOD_2:
case CFG_METHOD_3:
case CFG_METHOD_4:
- case CFG_METHOD_5: {
+ case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7: {
int timeout;
for (timeout = 0; timeout < 10; timeout++) {
if ((rtl8125_mac_ocp_read(tp, 0xE00E) & BIT_13)==0)
@@ -12982,6 +13306,8 @@ rtl8125_hw_config(struct net_device *dev)
case CFG_METHOD_3:
case CFG_METHOD_4:
case CFG_METHOD_5:
+ case CFG_METHOD_6:
+ case CFG_METHOD_7:
if (aspm) {
RTL_W8(tp, Config5, RTL_R8(tp, Config5) | BIT_0);
RTL_W8(tp, Config2, RTL_R8(tp, Config2) | BIT_7);
diff --git a/package/kernel/r8152/Makefile b/package/kernel/r8152/Makefile
index 94653e9c77..8ba85b5044 100644
--- a/package/kernel/r8152/Makefile
+++ b/package/kernel/r8152/Makefile
@@ -8,12 +8,12 @@ include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=r8152
-PKG_VERSION:=2.15
+PKG_VERSION:=2.15.20211119
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://codeload.github.com/1715173329/realtek-r8152-linux/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=dc8a06ed6ff397029c396a7e83476f1bf9541c4f927a4dbac8810c6ce014f8ca
+PKG_SOURCE_URL:=https://codeload.github.com/wget/realtek-r8152-linux/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=b7926db3b4ca71d453ac1cf875d7a8ab409ece108edc6913e8bc1c0c3b99179d
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/realtek-$(PKG_NAME)-linux-$(PKG_VERSION)
diff --git a/package/libs/libpcap/Makefile b/package/libs/libpcap/Makefile
index d07c83ac6f..2e5fc07831 100644
--- a/package/libs/libpcap/Makefile
+++ b/package/libs/libpcap/Makefile
@@ -12,8 +12,7 @@ PKG_VERSION:=1.10.1
PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://www.us.tcpdump.org/release/ \
- http://www.tcpdump.org/release/
+PKG_SOURCE_URL:=http://www.tcpdump.org/release/
PKG_HASH:=ed285f4accaf05344f90975757b3dbfe772ba41d1c401c2648b7fa45b711bdd4
PKG_MAINTAINER:=Felix Fietkau
diff --git a/package/libs/libubox/Makefile b/package/libs/libubox/Makefile
index 3117bf428a..20badb8eab 100644
--- a/package/libs/libubox/Makefile
+++ b/package/libs/libubox/Makefile
@@ -1,13 +1,13 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=libubox
-PKG_RELEASE=2
+PKG_RELEASE=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/libubox.git
-PKG_MIRROR_HASH:=cf963b19f5a25da85b2d8888514cbcc33c3f641c4478c9c25312b8bf83fe9e6b
-PKG_SOURCE_DATE:=2020-08-06
-PKG_SOURCE_VERSION:=9e52171d70def760a6949676800d0b73f85ee22d
+PKG_MIRROR_HASH:=7dd1db1e0074a9c7c722db654cce3111b3bd3cff0bfd791c4497cb0f6c22d3ca
+PKG_SOURCE_DATE:=2021-05-16
+PKG_SOURCE_VERSION:=b14c4688612c05c78ce984d7bde633bce8703b1e
CMAKE_INSTALL:=1
PKG_LICENSE:=ISC
diff --git a/package/libs/openssl/Config.in b/package/libs/openssl/Config.in
index 3358bf8a4c..195dc9fbda 100644
--- a/package/libs/openssl/Config.in
+++ b/package/libs/openssl/Config.in
@@ -4,7 +4,7 @@ comment "Build Options"
config OPENSSL_OPTIMIZE_SPEED
bool
- default y
+ default y if x86_64 || i386
prompt "Enable optimization for speed instead of size"
select OPENSSL_WITH_ASM
help
@@ -16,7 +16,7 @@ config OPENSSL_OPTIMIZE_SPEED
config OPENSSL_WITH_ASM
bool
- default y
+ default y if !SMALL_FLASH || !arm
prompt "Compile with optimized assembly code"
depends on !arc
help
@@ -38,9 +38,9 @@ config OPENSSL_WITH_ASM
config OPENSSL_WITH_SSE2
bool
- default y if x86_64 || i386 && !TARGET_x86_legacy
+ default y if !TARGET_x86_legacy && !TARGET_x86_geode
prompt "Enable use of x86 SSE2 instructions"
- depends on OPENSSL_WITH_ASM && x86_64 || i386
+ depends on OPENSSL_WITH_ASM && i386
help
Use of SSE2 instructions greatly increase performance (up to
3x faster) with a minimum (~0.2%, or 23KB) increase in package
@@ -138,7 +138,7 @@ config OPENSSL_WITH_CHACHA_POLY1305
config OPENSSL_PREFER_CHACHA_OVER_GCM
bool
- default y if !x86_64
+ default y if !x86_64 && !aarch64
prompt "Prefer ChaCha20-Poly1305 over AES-GCM by default"
depends on OPENSSL_WITH_CHACHA_POLY1305
help
diff --git a/package/libs/openssl/Makefile b/package/libs/openssl/Makefile
index 4e892d8487..9a8b03d5fd 100644
--- a/package/libs/openssl/Makefile
+++ b/package/libs/openssl/Makefile
@@ -9,9 +9,9 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=openssl
PKG_BASE:=1.1.1
-PKG_BUGFIX:=l
+PKG_BUGFIX:=m
PKG_VERSION:=$(PKG_BASE)$(PKG_BUGFIX)
-PKG_RELEASE:=2
+PKG_RELEASE:=1
PKG_USE_MIPS16:=0
ENGINES_DIR=engines-1.1
@@ -28,7 +28,7 @@ PKG_SOURCE_URL:= \
ftp://ftp.pca.dfn.de/pub/tools/net/openssl/source/ \
ftp://ftp.pca.dfn.de/pub/tools/net/openssl/source/old/$(PKG_BASE)/
-PKG_HASH:=0b7a3e5e59c34827fe0c3a74b7ec8baef302b98fa80088d7f9153aa16fa76bd1
+PKG_HASH:=f89199be8b23ca45fc7cb9f1d8d3ee67312318286ad030f5316aca6462db6c96
PKG_LICENSE:=OpenSSL
PKG_LICENSE_FILES:=LICENSE
diff --git a/package/libs/openssl/patches/001-crypto-perlasm-ppc-xlate.pl-add-linux64v2-flavour.patch b/package/libs/openssl/patches/001-crypto-perlasm-ppc-xlate.pl-add-linux64v2-flavour.patch
index bdc0509f8c..e52a3d52ea 100644
--- a/package/libs/openssl/patches/001-crypto-perlasm-ppc-xlate.pl-add-linux64v2-flavour.patch
+++ b/package/libs/openssl/patches/001-crypto-perlasm-ppc-xlate.pl-add-linux64v2-flavour.patch
@@ -1,7 +1,7 @@
-From 34ab13b7d8e3e723adb60be8142e38b7c9cd382a Mon Sep 17 00:00:00 2001
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Andy Polyakov
Date: Sun, 5 May 2019 18:25:50 +0200
-Subject: [PATCH] crypto/perlasm/ppc-xlate.pl: add linux64v2 flavour
+Subject: crypto/perlasm/ppc-xlate.pl: add linux64v2 flavour
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -14,12 +14,8 @@ endian nowadays (Adélie Linux, Void Linux, possibly Gentoo, etc.)
Reviewed-by: Paul Dale
Reviewed-by: Richard Levitte
(Merged from https://github.com/openssl/openssl/pull/8883)
----
- crypto/perlasm/ppc-xlate.pl | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/crypto/perlasm/ppc-xlate.pl b/crypto/perlasm/ppc-xlate.pl
-index e52f2f6ea6..5fcd0526df 100755
--- a/crypto/perlasm/ppc-xlate.pl
+++ b/crypto/perlasm/ppc-xlate.pl
@@ -49,7 +49,7 @@ my $globl = sub {
@@ -49,7 +45,7 @@ index e52f2f6ea6..5fcd0526df 100755
my $mtspr = sub {
my ($f,$idx,$ra) = @_;
if ($idx == 256 && $no_vrsave) {
-@@ -320,7 +320,7 @@ while($line=<>) {
+@@ -318,7 +318,7 @@ while($line=<>) {
if ($label) {
my $xlated = ($GLOBALS{$label} or $label);
print "$xlated:";
@@ -58,6 +54,3 @@ index e52f2f6ea6..5fcd0526df 100755
if ($TYPES{$label} =~ /function/) {
printf "\n.localentry %s,0\n",$xlated;
}
---
-2.31.1
-
diff --git a/package/libs/openssl/patches/100-Configure-afalg-support.patch b/package/libs/openssl/patches/100-Configure-afalg-support.patch
index 98944103b5..d8789f4b45 100644
--- a/package/libs/openssl/patches/100-Configure-afalg-support.patch
+++ b/package/libs/openssl/patches/100-Configure-afalg-support.patch
@@ -12,7 +12,7 @@ diff --git a/Configure b/Configure
index 5a699836f3..74d057c219 100755
--- a/Configure
+++ b/Configure
-@@ -1545,7 +1545,9 @@ unless ($disabled{"crypto-mdebug-backtrace"})
+@@ -1548,7 +1548,9 @@ unless ($disabled{"crypto-mdebug-backtrace"})
unless ($disabled{afalgeng}) {
$config{afalgeng}="";
diff --git a/package/libs/wolfssl/Config.in b/package/libs/wolfssl/Config.in
index 99c156292c..b32d5ab6cb 100644
--- a/package/libs/wolfssl/Config.in
+++ b/package/libs/wolfssl/Config.in
@@ -55,6 +55,10 @@ config WOLFSSL_HAS_OPENVPN
bool "Include OpenVPN support"
default n
+config WOLFSSL_ALT_NAMES
+ bool "Include SAN (Subject Alternative Name) support"
+ default y
+
config WOLFSSL_HAS_DEVCRYPTO
bool
diff --git a/package/libs/wolfssl/Makefile b/package/libs/wolfssl/Makefile
index 1e8e63aa7d..9fe7fa763c 100644
--- a/package/libs/wolfssl/Makefile
+++ b/package/libs/wolfssl/Makefile
@@ -32,7 +32,7 @@ PKG_CONFIG_DEPENDS:=\
CONFIG_WOLFSSL_HAS_ECC25519 CONFIG_WOLFSSL_HAS_OCSP \
CONFIG_WOLFSSL_HAS_SESSION_TICKET CONFIG_WOLFSSL_HAS_TLSV10 \
CONFIG_WOLFSSL_HAS_TLSV13 CONFIG_WOLFSSL_HAS_WPAS CONFIG_WOLFSSL_HAS_CERTGEN \
- CONFIG_WOLFSSL_HAS_OPENVPN
+ CONFIG_WOLFSSL_HAS_OPENVPN CONFIG_WOLFSSL_ALT_NAMES
include $(INCLUDE_DIR)/package.mk
@@ -62,7 +62,8 @@ TARGET_CFLAGS += \
-fomit-frame-pointer \
-flto \
-DFP_MAX_BITS=8192 \
- -DWOLFSSL_ALT_CERT_CHAINS
+ -DWOLFSSL_ALT_CERT_CHAINS \
+ $(if $(CONFIG_WOLFSSL_ALT_NAMES),-DWOLFSSL_ALT_NAMES)
TARGET_LDFLAGS += -flto
diff --git a/package/network/config/firewall4/Makefile b/package/network/config/firewall4/Makefile
index ccf5740466..a4f63a91ee 100644
--- a/package/network/config/firewall4/Makefile
+++ b/package/network/config/firewall4/Makefile
@@ -5,13 +5,13 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=firewall4
-PKG_RELEASE:=1
+PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/firewall4.git
-PKG_SOURCE_DATE:=2021-09-01
-PKG_SOURCE_VERSION:=cf835cecc8a449b2d2019f1ef4f085e535d5c1c1
-PKG_MIRROR_HASH:=5798b76846107dde69a2a1ff3467f735b9a91a74106fbd6299d8a26eff70b9c2
+PKG_SOURCE_DATE:=2021-10-25
+PKG_SOURCE_VERSION:=eb0a3ee812d48f1faecbf6258c293e475b4016a0
+PKG_MIRROR_HASH:=46b5bdea13a285dbd1b3432fe8cfd8cb98a2797b86b176d7762e0987ec2f230c
PKG_MAINTAINER:=Jo-Philipp Wich
PKG_LICENSE:=ISC
diff --git a/package/network/config/vti/Makefile b/package/network/config/vti/Makefile
index 292ab111e5..548b8f951f 100644
--- a/package/network/config/vti/Makefile
+++ b/package/network/config/vti/Makefile
@@ -8,47 +8,28 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=vti
-PKG_RELEASE:=4
+PKG_RELEASE:=5
PKG_LICENSE:=GPL-2.0
include $(INCLUDE_DIR)/package.mk
define Package/vti/Default
- SECTION:=net
- CATEGORY:=Network
- MAINTAINER:=Andre Valentin
- PKGARCH:=all
endef
define Package/vti
-$(call Package/vti/Default)
+ SECTION:=net
+ CATEGORY:=Network
+ MAINTAINER:=Andre Valentin
TITLE:=Virtual IPsec Tunnel Interface config support
+ DEPENDS:=+kmod-ip-vti +IPV6:kmod-ip6-vti
+ PROVIDES:=vtiv4 vtiv6
+ PKGARCH:=all
endef
define Package/vti/description
Virtual IPsec Tunnel Interface config support (IPv4 and IPv6) in /etc/config/network.
endef
-define Package/vtiv4
-$(call Package/vti/Default)
- TITLE:=Virtual IPsec Tunnel Interface (IPv4) config support
- DEPENDS:=@(PACKAGE_vti) +kmod-ip-vti
-endef
-
-define Package/vtiv4/description
- Virtual IPsec Tunnel Interface config support (IPv4) in /etc/config/network.
-endef
-
-define Package/vtiv6
-$(call Package/vti/Default)
- TITLE:=Virtual IPsec Tunnel Interface (IPv6) config support
- DEPENDS:=@(PACKAGE_vti) @IPV6 +kmod-ip6-vti
-endef
-
-define Package/vtiv6/description
- Virtual IPsec Tunnel Interface config support (IPv6) in /etc/config/network.
-endef
-
define Build/Compile
endef
@@ -60,14 +41,4 @@ define Package/vti/install
$(INSTALL_BIN) ./files/vti.sh $(1)/lib/netifd/proto/vti.sh
endef
-define Package/vtiv4/install
- :
-endef
-
-define Package/vtiv6/install
- :
-endef
-
$(eval $(call BuildPackage,vti))
-$(eval $(call BuildPackage,vtiv4))
-$(eval $(call BuildPackage,vtiv6))
diff --git a/package/network/services/odhcpd/Makefile b/package/network/services/odhcpd/Makefile
index 3a059dd82e..b35bfbf371 100644
--- a/package/network/services/odhcpd/Makefile
+++ b/package/network/services/odhcpd/Makefile
@@ -12,9 +12,9 @@ PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/odhcpd.git
-PKG_SOURCE_DATE:=2020-11-15
-PKG_SOURCE_VERSION:=fb55e80394c51d7502bb278f57520dec15a11355
-PKG_MIRROR_HASH:=631d15fd7c93529fa33433380c4811dbacca9665864e5836c6daca0c7165f25a
+PKG_SOURCE_DATE:=2020-12-24
+PKG_SOURCE_VERSION:=b75bcad7bd5fd03f64011a532b9960d78e4aac22
+PKG_MIRROR_HASH:=f795e0268b6fe09eaf15b5701a236c3a74c11deb8436af6b6ab0a59d251fc3fd
PKG_MAINTAINER:=Hans Dedecker
PKG_LICENSE:=GPL-2.0
diff --git a/package/network/utils/iproute2/Makefile b/package/network/utils/iproute2/Makefile
index ca3cb4753a..928f44e797 100644
--- a/package/network/utils/iproute2/Makefile
+++ b/package/network/utils/iproute2/Makefile
@@ -8,12 +8,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=iproute2
-PKG_VERSION:=5.14.0
+PKG_VERSION:=5.15.0
PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@KERNEL/linux/utils/net/iproute2
-PKG_HASH:=210fa785a52f3763c4287fd5ae63e246f6311bfaa48c424baab6d383bb7591d4
+PKG_HASH:=38e3e4a5f9a7f5575c015027a10df097c149111eeb739993128e5b2b35b291ff
PKG_BUILD_PARALLEL:=1
PKG_BUILD_DEPENDS:=iptables
PKG_LICENSE:=GPL-2.0
diff --git a/package/network/utils/iproute2/patches/170-ip_tiny.patch b/package/network/utils/iproute2/patches/170-ip_tiny.patch
index 2c1ec1dcb3..cd687e7601 100644
--- a/package/network/utils/iproute2/patches/170-ip_tiny.patch
+++ b/package/network/utils/iproute2/patches/170-ip_tiny.patch
@@ -30,7 +30,7 @@
"Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }\n"
" ip [ -force ] -batch filename\n"
+#ifndef IPROUTE2_TINY
- "where OBJECT := { address | addrlabel | fou | help | ila | l2tp | link |\n"
+ "where OBJECT := { address | addrlabel | fou | help | ila | ioam | l2tp | link |\n"
" macsec | maddress | monitor | mptcp | mroute | mrule |\n"
" neighbor | neighbour | netconf | netns | nexthop | ntable |\n"
" ntbl | route | rule | sr | tap | tcpmetrics |\n"
@@ -43,7 +43,7 @@
" OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |\n"
" -h[uman-readable] | -iec | -j[son] | -p[retty] |\n"
" -f[amily] { inet | inet6 | mpls | bridge | link } |\n"
-@@ -91,36 +97,50 @@ static const struct cmd {
+@@ -91,37 +97,51 @@ static const struct cmd {
int (*func)(int argc, char **argv);
} cmds[] = {
{ "address", do_ipaddr },
@@ -90,6 +90,7 @@
+#ifndef IPROUTE2_TINY
{ "nexthop", do_ipnh },
{ "mptcp", do_mptcp },
+ { "ioam", do_ioam6 },
+#endif
{ "help", do_help },
{ 0 }
diff --git a/package/network/utils/tcpdump/Makefile b/package/network/utils/tcpdump/Makefile
index f333cf98d2..a14fb9a1b7 100644
--- a/package/network/utils/tcpdump/Makefile
+++ b/package/network/utils/tcpdump/Makefile
@@ -12,8 +12,7 @@ PKG_VERSION:=4.9.3
PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://www.us.tcpdump.org/release/ \
- http://www.tcpdump.org/release/
+PKG_SOURCE_URL:=http://www.tcpdump.org/release/
PKG_HASH:=2cd47cb3d460b6ff75f4a9940f594317ad456cfbf2bd2c8e5151e16559db6410
PKG_MAINTAINER:=Felix Fietkau
diff --git a/package/network/utils/uqmi/Makefile b/package/network/utils/uqmi/Makefile
index 36e5d0d554..6f5db7d73d 100644
--- a/package/network/utils/uqmi/Makefile
+++ b/package/network/utils/uqmi/Makefile
@@ -1,13 +1,13 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=uqmi
-PKG_RELEASE:=2
+PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/uqmi.git
-PKG_SOURCE_DATE:=2020-11-22
-PKG_SOURCE_VERSION:=0a19b5b77140465c29e2afa7d611fe93abc9672f
-PKG_MIRROR_HASH:=0a6641f8e167efd21d464b0b2aeb1fec5f974dddcdb8822fbd5d7190d0b741b4
+PKG_SOURCE_DATE:=2021-11-06
+PKG_SOURCE_VERSION:=6f956265167945267d676c99f123a8c822f0a77b
+PKG_MIRROR_HASH:=1dbe14a28ec59b364dbde5dea9e10ed1c5c3eda274b6c7690c793a06643acf3e
PKG_MAINTAINER:=Matti Laakso
PKG_LICENSE:=GPL-2.0
diff --git a/package/network/utils/uqmi/files/lib/netifd/proto/qmi.sh b/package/network/utils/uqmi/files/lib/netifd/proto/qmi.sh
index 762076dde7..5ee61b94e0 100755
--- a/package/network/utils/uqmi/files/lib/netifd/proto/qmi.sh
+++ b/package/network/utils/uqmi/files/lib/netifd/proto/qmi.sh
@@ -94,7 +94,8 @@ proto_qmi_setup() {
fi
done
- if uqmi -s -d "$device" --get-pin-status | grep '"Not supported"\|"Invalid QMI command"' > /dev/null; then
+ if uqmi -s -d "$device" --uim-get-sim-state | grep -q '"Not supported"\|"Invalid QMI command"' &&
+ uqmi -s -d "$device" --get-pin-status | grep -q '"Not supported"\|"Invalid QMI command"' ; then
[ -n "$pincode" ] && {
uqmi -s -d "$device" --verify-pin1 "$pincode" > /dev/null || uqmi -s -d "$device" --uim-verify-pin1 "$pincode" > /dev/null || {
echo "Unable to verify PIN"
@@ -105,7 +106,8 @@ proto_qmi_setup() {
}
else
. /usr/share/libubox/jshn.sh
- json_load "$(uqmi -s -d "$device" --get-pin-status)"
+ json_load "$(uqmi -s -d "$device" --get-pin-status)" 2>&1 | grep -q Failed &&
+ json_load "$(uqmi -s -d "$device" --uim-get-sim-state)"
json_get_var pin1_status pin1_status
json_get_var pin1_verify_tries pin1_verify_tries
@@ -144,7 +146,7 @@ proto_qmi_setup() {
echo "PIN already verified"
;;
*)
- echo "PIN status failed ($pin1_status)"
+ echo "PIN status failed (${pin1_status:-sim_not_present})"
proto_notify_error "$interface" PIN_STATUS_FAILED
proto_block_restart "$interface"
return 1
diff --git a/package/system/fstools/Makefile b/package/system/fstools/Makefile
index dd4ec06bfb..4668338c48 100644
--- a/package/system/fstools/Makefile
+++ b/package/system/fstools/Makefile
@@ -12,9 +12,9 @@ PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/fstools.git
-PKG_MIRROR_HASH:=04cc533f567e8a928a1c13dedcad781e73dfc796db8e83ac1218b47412ce01bd
-PKG_SOURCE_DATE:=2020-07-11
-PKG_SOURCE_VERSION:=5345343828df944ae247d91cc77182f87559bc9a
+PKG_MIRROR_HASH:=41c9c51d193f5150db67fcd898b6ea904b88476c94cdfd021d81e2711441b430
+PKG_SOURCE_DATE:=2021-05-16
+PKG_SOURCE_VERSION:=3d40a1b591cd569f95891116cd033b496de0f92b
CMAKE_INSTALL:=1
PKG_LICENSE:=GPL-2.0
diff --git a/package/system/openwrt-keyring/Makefile b/package/system/openwrt-keyring/Makefile
index 92a6f70c00..6c1fe51042 100644
--- a/package/system/openwrt-keyring/Makefile
+++ b/package/system/openwrt-keyring/Makefile
@@ -7,9 +7,9 @@ PKG_RELEASE:=2
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=https://github.com/immortalwrt/keyring.git
-PKG_MIRROR_HASH:=c8600265b922462431c8f87a8cf3cd12f3e55b3c54078bb15bad9a8f41be2424
-PKG_SOURCE_DATE:=2021-08-06
-PKG_SOURCE_VERSION:=746fa1a0c45bd82d9bf25d5334933a2e454fdeeb
+PKG_MIRROR_HASH:=5665cceada943ec6430b21326256064ac5d9ce6488d2909c0247411f48fdf974
+PKG_SOURCE_DATE:=2021-12-08
+PKG_SOURCE_VERSION:=4bed7e2c5c72d164066777e0c5f358f2c9843247
PKG_MAINTAINER:=John Crispin
PKG_LICENSE:=GPL-2.0
@@ -38,6 +38,7 @@ define Package/openwrt-keyring/install
$(INSTALL_DATA) $(PKG_BUILD_DIR)/usign/b5043e70f9a75cde $(1)/etc/opkg/keys/
# Public usign key for 18.06 release builds
$(INSTALL_DATA) $(PKG_BUILD_DIR)/usign/1035ac73cc4e59e3 $(1)/etc/opkg/keys/
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/usign/a5891a78070b865a $(1)/etc/opkg/keys/
endef
$(eval $(call BuildPackage,openwrt-keyring))
diff --git a/package/system/procd/Makefile b/package/system/procd/Makefile
index b73bb1fc7b..5c6a9e8be6 100644
--- a/package/system/procd/Makefile
+++ b/package/system/procd/Makefile
@@ -12,9 +12,9 @@ PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/procd.git
-PKG_SOURCE_DATE:=2020-11-06
-PKG_SOURCE_VERSION:=b0de894830a93da5b303a3d89a42baf163d0a58c
-PKG_MIRROR_HASH:=ba7f7631fa74d3bede0241f5d96ee4939f15164e79290d1ac7fd15fc8ed628d9
+PKG_SOURCE_DATE:=2021-05-05
+PKG_SOURCE_VERSION:=021ece84de430fca988acd6934f6046ea59d8c37
+PKG_MIRROR_HASH:=edbe464cadbae000f4a48a6f1e6a0f5d27ae3ad521e308205252ad89639b6f9d
CMAKE_INSTALL:=1
PKG_LICENSE:=GPL-2.0
@@ -45,7 +45,7 @@ define Package/procd/Default
SECTION:=base
CATEGORY:=Base system
DEPENDS:=+ubusd +ubus +libjson-script +ubox +USE_GLIBC:librt +libubox \
- +libubus +libblobmsg-json +libjson-c
+ +libubus +libblobmsg-json +libjson-c +jshn
TITLE:=OpenWrt system process manager
USERID:=:dialout=20 :audio=29
endef
@@ -82,7 +82,7 @@ endef
define Package/procd-seccomp
SECTION:=base
CATEGORY:=Base system
- DEPENDS:=@(arm||armeb||mips||mipsel||i386||powerpc||x86_64) @!TARGET_uml \
+ DEPENDS:=@(aarch64||arm||armeb||mips||mipsel||i386||powerpc||x86_64) @!TARGET_uml \
@KERNEL_SECCOMP +libubox +libblobmsg-json
TITLE:=OpenWrt process seccomp helper + utrace
endef
diff --git a/package/utils/px5g-wolfssl/Makefile b/package/utils/px5g-wolfssl/Makefile
index 12ebcdcd2e..fa1db52648 100644
--- a/package/utils/px5g-wolfssl/Makefile
+++ b/package/utils/px5g-wolfssl/Makefile
@@ -12,6 +12,8 @@ PKG_USE_MIPS16:=0
PKG_MAINTAINER:=Paul Spooren
+PKG_CONFIG_DEPENDS:=CONFIG_WOLFSSL_ALT_NAMES
+
include $(INCLUDE_DIR)/package.mk
define Package/px5g-wolfssl
diff --git a/package/utils/px5g-wolfssl/px5g-wolfssl.c b/package/utils/px5g-wolfssl/px5g-wolfssl.c
index 763d7b4b71..86227d6afd 100644
--- a/package/utils/px5g-wolfssl/px5g-wolfssl.c
+++ b/package/utils/px5g-wolfssl/px5g-wolfssl.c
@@ -203,8 +203,23 @@ int selfsigned(WC_RNG *rng, char **arg) {
strncpy(newCert.subject.org, val, CTC_NAME_SIZE);
else if (!strcmp(key, "OU"))
strncpy(newCert.subject.unit, val, CTC_NAME_SIZE);
- else if (!strcmp(key, "CN"))
+ else if (!strcmp(key, "CN")) {
strncpy(newCert.subject.commonName, val, CTC_NAME_SIZE);
+
+#ifdef WOLFSSL_ALT_NAMES
+ if(strlen(val) + 2 > 256) {
+ fprintf(stderr, "error: CN is too long: %s\n", val);
+ return 1;
+ }
+
+ newCert.altNames[0] = 0x30; //Sequence with one element
+ newCert.altNames[1] = strlen(val) + 2; // Length of entire sequence
+ newCert.altNames[2] = 0x82; //8 - String, 2 - DNS Name
+ newCert.altNames[3] = strlen(val); //DNS Name length
+ memcpy(newCert.altNames + 4, val, strlen(val)); //DNS Name
+ newCert.altNamesSz = strlen(val) + 4;
+#endif
+ }
else if (!strcmp(key, "EMAIL"))
strncpy(newCert.subject.email, val, CTC_NAME_SIZE);
else
@@ -216,6 +231,9 @@ int selfsigned(WC_RNG *rng, char **arg) {
}
newCert.daysValid = days;
+ newCert.keyUsage = KEYUSE_DIGITAL_SIG | KEYUSE_CONTENT_COMMIT | KEYUSE_KEY_ENCIPHER;
+ newCert.extKeyUsage = EXTKEYUSE_SERVER_AUTH;
+
gen_key(rng, &ecKey, &rsaKey, type, keySz, exp, curve);
write_key(&ecKey, &rsaKey, type, keySz, keypath, pem);
diff --git a/scripts/dump-target-info.pl b/scripts/dump-target-info.pl
index aa97f8d603..0e4af17fe0 100755
--- a/scripts/dump-target-info.pl
+++ b/scripts/dump-target-info.pl
@@ -4,7 +4,7 @@ use strict;
use warnings;
use Cwd;
-my (%targets, %architectures);
+my (%targets, %architectures, %kernels);
$ENV{'TOPDIR'} = Cwd::getcwd();
@@ -13,7 +13,7 @@ sub parse_targetinfo {
my ($target_dir, $subtarget) = @_;
if (open M, "make -C '$target_dir' --no-print-directory DUMP=1 TARGET_BUILD=1 SUBTARGET='$subtarget' |") {
- my ($target_name, $target_arch, @target_features);
+ my ($target_name, $target_arch, $target_kernel, $target_testing_kernel, @target_features);
while (defined(my $line = readline M)) {
chomp $line;
@@ -23,19 +23,32 @@ sub parse_targetinfo {
elsif ($line =~ /^Target-Arch-Packages: (.+)$/) {
$target_arch = $1;
}
+ elsif ($line =~ /^Linux-Version: (\d\.\d+)\.\d+$/) {
+ $target_kernel = $1;
+ }
+ elsif ($line =~ /^Linux-Testing-Version: (\d\.\d+)\.\d+$/) {
+ $target_testing_kernel = $1;
+ }
elsif ($line =~ /^Target-Features: (.+)$/) {
@target_features = split /\s+/, $1;
}
elsif ($line =~ /^@\@$/) {
- if ($target_name && $target_arch &&
+ if ($target_name && $target_arch && $target_kernel &&
!grep { $_ eq 'broken' or $_ eq 'source-only' } @target_features) {
$targets{$target_name} = $target_arch;
$architectures{$target_arch} ||= [];
push @{$architectures{$target_arch}}, $target_name;
+ $kernels{$target_name} ||= [];
+ push @{$kernels{$target_name}}, $target_kernel;
+ if ($target_testing_kernel) {
+ push @{$kernels{$target_name}}, $target_testing_kernel;
+ }
}
undef $target_name;
undef $target_arch;
+ undef $target_kernel;
+ undef $target_testing_kernel;
@target_features = ();
}
}
@@ -85,7 +98,14 @@ elsif (@ARGV == 1 && $ARGV[0] eq 'architectures') {
printf "%s %s\n", $target_arch, join ' ', @{$architectures{$target_arch}};
}
}
+elsif (@ARGV == 1 && $ARGV[0] eq 'kernels') {
+ get_targetinfo();
+ foreach my $target_name (sort keys %targets) {
+ printf "%s %s\n", $target_name, join ' ', @{$kernels{$target_name}};
+ }
+}
else {
print "Usage: $0 targets\n";
print "Usage: $0 architectures\n";
+ print "Usage: $0 kernels\n";
}
diff --git a/target/imagebuilder/Makefile b/target/imagebuilder/Makefile
index 499a64e339..c5805b08f6 100644
--- a/target/imagebuilder/Makefile
+++ b/target/imagebuilder/Makefile
@@ -46,12 +46,16 @@ ifeq ($(CONFIG_IB_STANDALONE),)
$(VERSION_SED_SCRIPT) $(PKG_BUILD_DIR)/repositories.conf
endif
-ifeq ($(CONFIG_BUILDBOT),)
$(INSTALL_DIR) $(PKG_BUILD_DIR)/packages
+ # create an empty package index so `opkg` doesn't report an error
+ touch $(PKG_BUILD_DIR)/packages/Packages
+ $(INSTALL_DATA) ./files/README.md $(PKG_BUILD_DIR)/packages/
+
echo '' >> $(PKG_BUILD_DIR)/repositories.conf
echo '## This is the local package repository, do not remove!' >> $(PKG_BUILD_DIR)/repositories.conf
echo 'src imagebuilder file:packages' >> $(PKG_BUILD_DIR)/repositories.conf
+ifeq ($(CONFIG_BUILDBOT),)
ifeq ($(CONFIG_IB_STANDALONE),)
$(FIND) $(call FeedPackageDir,libc) -type f \
\( -name 'libc_*.ipk' -or -name 'kernel_*.ipk' -or -name 'kmod-*.ipk' \) \
diff --git a/target/imagebuilder/files/README.md b/target/imagebuilder/files/README.md
new file mode 100644
index 0000000000..9a9616d06d
--- /dev/null
+++ b/target/imagebuilder/files/README.md
@@ -0,0 +1,11 @@
+# ./packages folder
+
+Add `.ipk` packages to this folder will allow the ImageBuilder to install them.
+
+For more complex setups consider adding a custom feed containing packages.
+
+ src custom file:///path/to/packages
+
+Whenever the ImageBuilder builds a firmware image this folder will be reloaded
+and a new package index created. In case signature checks are enabled the
+`./packages/Packages` index will be signed with a locally generated key pair.
diff --git a/toolchain/gcc/patches/11.2.0/970-macos_arm64-building-fix.patch b/toolchain/gcc/patches/11.2.0/970-macos_arm64-building-fix.patch
new file mode 100644
index 0000000000..6572b8e559
--- /dev/null
+++ b/toolchain/gcc/patches/11.2.0/970-macos_arm64-building-fix.patch
@@ -0,0 +1,49 @@
+commit 9c6e71079b46ad5433165feaa2001450f2017b56
+Author: Przemysław Buczkowski
+Date: Mon Aug 16 13:16:21 2021 +0100
+
+ GCC: Patch for Apple Silicon compatibility
+
+ This patch fixes a linker error occuring when compiling
+ the cross-compiler on macOS and ARM64 architecture.
+
+ Adapted from:
+ https://github.com/richfelker/musl-cross-make/issues/116#issuecomment-823612404
+
+ Change-Id: Ia3ee98a163bbb62689f42e2da83a5ef36beb0913
+ Reviewed-on: https://review.haiku-os.org/c/buildtools/+/4329
+ Reviewed-by: John Scipione
+ Reviewed-by: Adrien Destugues
+
+diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h
+index 976f9afae5..736b83ff0b 100644
+--- a/gcc/config/aarch64/aarch64.h
++++ b/gcc/config/aarch64/aarch64.h
+@@ -1000,7 +1000,7 @@ extern const char *aarch64_rewrite_mcpu (int argc, const char **argv);
+ #define MCPU_TO_MARCH_SPEC_FUNCTIONS \
+ { "rewrite_mcpu", aarch64_rewrite_mcpu },
+
+-#if defined(__aarch64__)
++#if defined(__aarch64__) && ! defined(__APPLE__)
+ extern const char *host_detect_local_cpu (int argc, const char **argv);
+ #define HAVE_LOCAL_CPU_DETECT
+ # define EXTRA_SPEC_FUNCTIONS \
+diff --git a/gcc/config/host-darwin.c b/gcc/config/host-darwin.c
+index 8f700eec85..b737abc006 100644
+--- a/gcc/config/host-darwin.c
++++ b/gcc/config/host-darwin.c
+@@ -22,6 +22,8 @@
+ #include "coretypes.h"
+ #include "diagnostic-core.h"
+ #include "config/host-darwin.h"
++#include "hosthooks.h"
++#include "hosthooks-def.h"
+
+ /* Yes, this is really supposed to work. */
+ static char pch_address_space[1024*1024*1024] __attribute__((aligned (4096)));
+@@ -75,3 +77,5 @@ darwin_gt_pch_use_address (void *addr, size_t sz, int fd, size_t off)
+
+ return ret;
+ }
++
++const struct host_hooks host_hooks = HOST_HOOKS_INITIALIZER;
diff --git a/toolchain/gdb/Makefile b/toolchain/gdb/Makefile
index e769a3be3e..2adb7d165a 100644
--- a/toolchain/gdb/Makefile
+++ b/toolchain/gdb/Makefile
@@ -7,12 +7,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=gdb
-PKG_VERSION:=10.1
+PKG_VERSION:=11.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@GNU/gdb
-PKG_HASH:=f82f1eceeec14a3afa2de8d9b0d3c91d5a3820e23e0a01bbb70ef9f0276b62c0
+PKG_HASH:=cccfcc407b20d343fb320d4a9a2110776dd3165118ffd41f4b1b162340333f94
GDB_DIR:=$(PKG_NAME)-$(PKG_VERSION)
HOST_BUILD_DIR:=$(BUILD_DIR_TOOLCHAIN)/$(GDB_DIR)
@@ -30,6 +30,9 @@ HOST_CONFIGURE_ARGS = \
--build=$(GNU_HOST_NAME) \
--host=$(GNU_HOST_NAME) \
--target=$(REAL_GNU_TARGET_NAME) \
+ --with-gmp=$(TOPDIR)/staging_dir/host \
+ --with-mpfr=$(TOPDIR)/staging_dir/host \
+ --with-mpc=$(TOPDIR)/staging_dir/host \
--disable-werror \
--without-uiout \
--enable-tui --disable-gdbtk --without-x \
diff --git a/toolchain/gdb/patches/100-fix-elf-support-check.patch b/toolchain/gdb/patches/100-fix-elf-support-check.patch
deleted file mode 100644
index fe612c38db..0000000000
--- a/toolchain/gdb/patches/100-fix-elf-support-check.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- a/gdb/configure
-+++ b/gdb/configure
-@@ -16818,6 +16818,7 @@ else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
- #include
-+#include
- #include "bfd.h"
- #include "elf-bfd.h"
-
---- a/gdb/acinclude.m4
-+++ b/gdb/acinclude.m4
-@@ -362,6 +362,7 @@ AC_DEFUN([GDB_AC_CHECK_BFD], [
- AC_CACHE_CHECK([$1], [$2],
- [AC_TRY_LINK(
- [#include
-+ #include
- #include "bfd.h"
- #include "$4"
- ],
diff --git a/toolchain/musl/Config.in b/toolchain/musl/Config.in
index 7e83b6fa53..67ede4d1e7 100644
--- a/toolchain/musl/Config.in
+++ b/toolchain/musl/Config.in
@@ -1,9 +1,10 @@
# Password crypt stubbing
config MUSL_DISABLE_CRYPT_SIZE_HACK
- bool "Include crypt() support for SHA256, SHA512 and Blowfish ciphers"
- depends on TOOLCHAINOPTS && USE_MUSL && !EXTERNAL_TOOLCHAIN
- default n
+ bool
+ prompt "Include crypt() support for SHA256, SHA512 and Blowfish ciphers" if TOOLCHAINOPTS
+ depends on USE_MUSL && !EXTERNAL_TOOLCHAIN
+ default y
help
Enable this option to re-include crypt() support for the SHA256, SHA512 and
Blowfish ciphers. Without this option, attempting to hash a string with a salt
diff --git a/tools/ccache/Makefile b/tools/ccache/Makefile
index 081cc46dd0..1031fdec99 100644
--- a/tools/ccache/Makefile
+++ b/tools/ccache/Makefile
@@ -8,11 +8,11 @@ include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/target.mk
PKG_NAME:=ccache
-PKG_VERSION:=4.4.2
+PKG_VERSION:=4.5.1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://github.com/ccache/ccache/releases/download/v$(PKG_VERSION)
-PKG_HASH:=9200cafbaa5fd62c2600fccb40a18214e57747825e6cdcd76688b4b61c2dcba0
+PKG_HASH:=51186ebe0326365f4e6131e1caa8911de7da4aa6718efc00680322d63a759517
include $(INCLUDE_DIR)/host-build.mk
include $(INCLUDE_DIR)/cmake.mk
diff --git a/tools/cmake/Makefile b/tools/cmake/Makefile
index df61c83158..e54e8c4547 100644
--- a/tools/cmake/Makefile
+++ b/tools/cmake/Makefile
@@ -7,14 +7,14 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=cmake
-PKG_VERSION:=3.21.3
+PKG_VERSION:=3.22.1
PKG_RELEASE:=1
PKG_CPE_ID:=cpe:/a:kitware:cmake
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/Kitware/CMake/releases/download/v$(PKG_VERSION)/ \
https://cmake.org/files/v3.19/
-PKG_HASH:=d14d06df4265134ee42c4d50f5a60cb8b471b7b6a47da8e5d914d49dd783794f
+PKG_HASH:=0e998229549d7b3f368703d20e248e7ee1f853910d42704aa87918c213ea82c0
HOST_BUILD_PARALLEL:=1
HOST_CONFIGURE_PARALLEL:=1
diff --git a/tools/cmake/patches/120-curl-fix-libressl-linking.patch b/tools/cmake/patches/120-curl-fix-libressl-linking.patch
index 97ef5ceb00..fd05d106c8 100644
--- a/tools/cmake/patches/120-curl-fix-libressl-linking.patch
+++ b/tools/cmake/patches/120-curl-fix-libressl-linking.patch
@@ -20,7 +20,7 @@ Signed-off-by: Jo-Philipp Wich
---
--- a/Utilities/cmcurl/CMakeLists.txt
+++ b/Utilities/cmcurl/CMakeLists.txt
-@@ -528,6 +528,14 @@ if(CMAKE_USE_OPENSSL)
+@@ -565,6 +565,14 @@ if(CMAKE_USE_OPENSSL)
endif()
set(SSL_ENABLED ON)
set(USE_OPENSSL ON)
diff --git a/tools/cmake/patches/130-bootstrap_parallel_make_flag.patch b/tools/cmake/patches/130-bootstrap_parallel_make_flag.patch
index 3822cba166..dd66989c98 100644
--- a/tools/cmake/patches/130-bootstrap_parallel_make_flag.patch
+++ b/tools/cmake/patches/130-bootstrap_parallel_make_flag.patch
@@ -1,6 +1,6 @@
--- a/bootstrap
+++ b/bootstrap
-@@ -1420,7 +1420,10 @@ int main(){ printf("1%c", (char)0x0a); r
+@@ -1423,7 +1423,10 @@ int main(){ printf("1%c", (char)0x0a); r
' > "test.c"
cmake_original_make_flags="${cmake_make_flags}"
if test "x${cmake_parallel_make}" != "x"; then
diff --git a/tools/cpio/patches/001-duplicate-program-name.patch b/tools/cpio/patches/001-duplicate-program-name.patch
index 57ff4c3cad..a7c3fbc8ae 100644
--- a/tools/cpio/patches/001-duplicate-program-name.patch
+++ b/tools/cpio/patches/001-duplicate-program-name.patch
@@ -4,8 +4,6 @@ https://git.savannah.gnu.org/cgit/cpio.git/commit/?id=641d3f489cf6238bb916368d4b
* src/global.c: Remove superfluous declaration of program_name
-diff --git a/src/global.c b/src/global.c
-index fb3abe9..acf92bc 100644
--- a/src/global.c
+++ b/src/global.c
@@ -184,9 +184,6 @@ unsigned int warn_option = 0;
diff --git a/tools/cpio/patches/010-clang.patch b/tools/cpio/patches/010-clang.patch
new file mode 100644
index 0000000000..89c7a8149e
--- /dev/null
+++ b/tools/cpio/patches/010-clang.patch
@@ -0,0 +1,11 @@
+--- a/gnu/xalloc-oversized.h
++++ b/gnu/xalloc-oversized.h
+@@ -52,7 +52,7 @@ typedef size_t __xalloc_count_type;
+ #elif ((5 <= __GNUC__ \
+ || (__has_builtin (__builtin_mul_overflow) \
+ && __has_builtin (__builtin_constant_p))) \
+- && !__STRICT_ANSI__)
++ && !__STRICT_ANSI__) && !defined(__clang__)
+ # define xalloc_oversized(n, s) \
+ (__builtin_constant_p (n) && __builtin_constant_p (s) \
+ ? __xalloc_oversized (n, s) \
diff --git a/tools/fakeroot/patches/500-macos_arm64_compile_fix.patch b/tools/fakeroot/patches/500-macos_arm64_compile_fix.patch
new file mode 100644
index 0000000000..a3731b9e99
--- /dev/null
+++ b/tools/fakeroot/patches/500-macos_arm64_compile_fix.patch
@@ -0,0 +1,86 @@
+diff --git a/communicate.c b/communicate.c
+index e2699a2..21e5366 100644
+--- a/communicate.c
++++ b/communicate.c
+@@ -24,7 +24,12 @@
+ In this file, we want 'struct stat' to have a 32-bit 'ino_t'.
+ We use 'struct stat64' when we need a 64-bit 'ino_t'.
+ */
+-#define _DARWIN_NO_64_BIT_INODE
++# include
++# if __DARWIN_ONLY_64_BIT_INO_T
++# define _DARWIN_USE_64_BIT_INODE
++# else
++# define _DARWIN_NO_64_BIT_INODE
++# endif
+ #endif
+
+ #include "communicate.h"
+diff --git a/communicate.h b/communicate.h
+index 3f9ca39..a586108 100644
+--- a/communicate.h
++++ b/communicate.h
+@@ -91,6 +91,10 @@
+ # include
+ #endif
+
++#if __DARWIN_ONLY_64_BIT_INO_T
++struct stat64 __DARWIN_STRUCT_STAT64;
++#endif
++
+ #ifndef FAKEROOT_FAKENET
+ # define FAKEROOTKEY_ENV "FAKEROOTKEY"
+ #endif /* ! FAKEROOT_FAKENET */
+diff --git a/faked.c b/faked.c
+index a970184..ea51a23 100644
+--- a/faked.c
++++ b/faked.c
+@@ -84,7 +84,12 @@
+ In this file, we want 'struct stat' to have a 32-bit 'ino_t'.
+ We use 'struct stat64' when we need a 64-bit 'ino_t'.
+ */
+-#define _DARWIN_NO_64_BIT_INODE
++# include
++# if __DARWIN_ONLY_64_BIT_INO_T
++# define _DARWIN_USE_64_BIT_INODE
++# else
++# define _DARWIN_NO_64_BIT_INODE
++# endif
+ #endif
+
+ #include "config.h"
+diff --git a/libfakeroot.c b/libfakeroot.c
+index c967d5d..836337d 100644
+--- a/libfakeroot.c
++++ b/libfakeroot.c
+@@ -38,7 +38,12 @@
+ In this file, we want 'struct stat' to have a 32-bit 'ino_t'.
+ We use 'struct stat64' when we need a 64-bit 'ino_t'.
+ */
+-#define _DARWIN_NO_64_BIT_INODE
++# include
++# if __DARWIN_ONLY_64_BIT_INO_T
++# define _DARWIN_USE_64_BIT_INODE
++# else
++# define _DARWIN_NO_64_BIT_INODE
++# endif
+
+ /* The helper _unix2003 version of this file calls a few functions in this file
+ that are marked with static_nonapple so that needs to become private instead
+diff --git a/libfakeroot_unix2003.c b/libfakeroot_unix2003.c
+index e1e19b6..f32bfec 100644
+--- a/libfakeroot_unix2003.c
++++ b/libfakeroot_unix2003.c
+@@ -18,7 +18,11 @@
+ In this file, we want 'struct stat' to have a 32-bit 'ino_t'.
+ We use 'struct stat64' when we need a 64-bit 'ino_t'.
+ */
+-#define _DARWIN_NO_64_BIT_INODE
++# if __DARWIN_ONLY_64_BIT_INO_T
++# define _DARWIN_USE_64_BIT_INODE
++# else
++# define _DARWIN_NO_64_BIT_INODE
++# endif
+
+ /*
+ This file is for 32-bit symbols which have the "$UNIX2003" version, i.e.
diff --git a/tools/meson/Makefile b/tools/meson/Makefile
index 1aab5d8fcb..f648085f90 100644
--- a/tools/meson/Makefile
+++ b/tools/meson/Makefile
@@ -1,11 +1,11 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=meson
-PKG_VERSION:=0.59.2
+PKG_VERSION:=0.60.0
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/mesonbuild/meson/releases/download/$(PKG_VERSION)
-PKG_HASH:=13dee549a7ba758b7e33ce7719f28d1d337a98d10d378a4779ccc996f5a2fc49
+PKG_HASH:=080d68b685e9a0d9c9bb475457e097b49e1d1a6f750abc971428a8d2e1b12d47
PKG_MAINTAINER:=Andre Heider
PKG_LICENSE:=Apache-2.0
diff --git a/tools/meson/files/openwrt-cross.txt.in b/tools/meson/files/openwrt-cross.txt.in
index 30b4c116c4..56aa393d63 100644
--- a/tools/meson/files/openwrt-cross.txt.in
+++ b/tools/meson/files/openwrt-cross.txt.in
@@ -5,6 +5,7 @@ ar = '@AR@'
strip = '@STRIP@'
nm = '@NM@'
pkgconfig = '@PKGCONFIG@'
+cmake = '@CMAKE@'
[built-in options]
c_args = [@CFLAGS@]
diff --git a/tools/meson/files/openwrt-native.txt.in b/tools/meson/files/openwrt-native.txt.in
index 50308ec8e4..eba63c00b1 100644
--- a/tools/meson/files/openwrt-native.txt.in
+++ b/tools/meson/files/openwrt-native.txt.in
@@ -2,6 +2,7 @@
c = [@CC@]
cpp = [@CXX@]
pkgconfig = '@PKGCONFIG@'
+cmake = '@CMAKE@'
[built-in options]
c_args = [@CFLAGS@]