Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
commit
16621b0eec
@ -1,2 +1,2 @@
|
||||
LINUX_VERSION-5.10 = .120
|
||||
LINUX_KERNEL_HASH-5.10.120 = 5b7a756004158ece2f5e41795ba523ec201743a736e34ce41cbe09177f7d0e8b
|
||||
LINUX_VERSION-5.10 = .125
|
||||
LINUX_KERNEL_HASH-5.10.125 = b9356ea02532c063f0b19a82e67c2afbd7c5460184fce7011222cf8667568f60
|
||||
|
||||
@ -1,2 +1,2 @@
|
||||
LINUX_VERSION-5.15 = .45
|
||||
LINUX_KERNEL_HASH-5.15.45 = b2390d7d977c66036ef0ceb294e408f2bdaab6dfeeb8ff4f4e0a84b71f8d8754
|
||||
LINUX_VERSION-5.15 = .49
|
||||
LINUX_KERNEL_HASH-5.15.49 = 32497893ba47f4ad32a59fa4254e8c25e41bc821798e3b2f2443822fa00059dc
|
||||
|
||||
@ -130,7 +130,12 @@ $(eval $(call SetupHostCommand,getopt, \
|
||||
Please install an extended getopt version that supports --long, \
|
||||
gnugetopt -o t --long test -- --test | grep '^ *--test *--', \
|
||||
getopt -o t --long test -- --test | grep '^ *--test *--', \
|
||||
/usr/local/opt/gnu-getopt/bin/getopt -o t --long test -- --test | grep '^ *--test *--'))
|
||||
/usr/local/opt/gnu-getopt/bin/getopt -o t --long test -- --test | grep '^ *--test *--', \
|
||||
/opt/local/bin/getopt -o t --long test -- --test | grep '^ *--test *--'))
|
||||
|
||||
$(eval $(call SetupHostCommand,realpath,Please install a 'realpath' utility, \
|
||||
grealpath /, \
|
||||
realpath /))
|
||||
|
||||
$(eval $(call SetupHostCommand,stat,Cannot find a file stat utility, \
|
||||
gnustat -c%s $(TOPDIR)/Makefile, \
|
||||
|
||||
@ -49,6 +49,17 @@ define Package/kexec/description
|
||||
The kexec utility allows to load and boot another kernel.
|
||||
endef
|
||||
|
||||
define Package/kdump
|
||||
$(call Package/kexec-tools/Default)
|
||||
TITLE:=Kernel crash analysis
|
||||
DEPENDS:=+kexec @(i386||x86_64||arm) @KERNEL_CRASH_DUMP
|
||||
endef
|
||||
|
||||
define Package/kdump/description
|
||||
The kdump package allows to automatically boot into a
|
||||
special kernel for analyzing kernel crashes using kdump.
|
||||
endef
|
||||
|
||||
define Package/kexec/config
|
||||
source "$(SOURCE)/Config.in"
|
||||
endef
|
||||
@ -95,5 +106,28 @@ define Package/kexec/install
|
||||
$(LN) ../usr/sbin/kexec $(1)/sbin/kexec
|
||||
endef
|
||||
|
||||
define Package/kdump/install
|
||||
$(INSTALL_DIR) $(1)/usr/sbin $(1)/etc/init.d $(1)/etc/config $(1)/etc/uci-defaults
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/vmcore-dmesg $(1)/usr/sbin
|
||||
$(INSTALL_BIN) ./files/kdump.init $(1)/etc/init.d/kdump
|
||||
$(INSTALL_BIN) ./files/kdump.defaults $(1)/etc/uci-defaults/kdump
|
||||
$(INSTALL_CONF) ./files/kdump.config $(1)/etc/config/kdump
|
||||
endef
|
||||
|
||||
define Package/kdump/prerm
|
||||
#!/bin/sh
|
||||
|
||||
case $$(uname -m) in
|
||||
i?86|x86_64)
|
||||
if grep -q " crashkernel=" /boot/grub/grub.cfg; then
|
||||
mount /boot -o remount,rw
|
||||
sed -i 's/ crashkernel=[^ ]*//' /boot/grub/grub.cfg
|
||||
mount /boot -o remount,ro
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,kexec-tools))
|
||||
$(eval $(call BuildPackage,kexec))
|
||||
$(eval $(call BuildPackage,kdump))
|
||||
|
||||
@ -8,12 +8,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=valgrind
|
||||
PKG_VERSION:=3.18.1
|
||||
PKG_VERSION:=3.19.0
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
||||
PKG_SOURCE_URL:=http://sourceware.org/pub/valgrind/
|
||||
PKG_HASH:=00859aa13a772eddf7822225f4b46ee0d39afbe071d32778da4d99984081f7f5
|
||||
PKG_HASH:=dd5e34486f1a483ff7be7300cc16b4d6b24690987877c3278d797534d6738f02
|
||||
|
||||
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
||||
PKG_LICENSE:=GPL-2.0+
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -345,7 +345,7 @@ case "${host_os}" in
|
||||
@@ -368,7 +368,7 @@ case "${host_os}" in
|
||||
# Ok, this is linux. Check the kernel version
|
||||
AC_MSG_CHECKING([for the kernel version])
|
||||
|
||||
|
||||
@ -6,7 +6,7 @@ Last-Update: 2013-11-30
|
||||
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -252,7 +252,7 @@ case "${host_cpu}" in
|
||||
@@ -275,7 +275,7 @@ case "${host_cpu}" in
|
||||
ARCH_MAX="s390x"
|
||||
;;
|
||||
|
||||
|
||||
@ -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
|
||||
@@ -2103,6 +2103,7 @@ Bool VG_(machine_get_hwcaps)( void )
|
||||
@@ -2106,6 +2106,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"
|
||||
@@ -2120,6 +2121,9 @@ Bool VG_(machine_get_hwcaps)( void )
|
||||
@@ -2123,6 +2124,9 @@ Bool VG_(machine_get_hwcaps)( void )
|
||||
|
||||
fpmode = (result != 0x3FF0000000000000ull);
|
||||
}
|
||||
|
||||
@ -42,7 +42,7 @@ define KernelPackage/crypto-aead
|
||||
CONFIG_CRYPTO_AEAD2
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/crypto/aead.ko \
|
||||
$(LINUX_DIR)/crypto/geniv.ko@ge5.10
|
||||
$(LINUX_DIR)/crypto/geniv.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,aead,1)
|
||||
$(call AddDepends/crypto, +kmod-crypto-null)
|
||||
endef
|
||||
|
||||
@ -98,13 +98,13 @@ define KernelPackage/fs-cifs
|
||||
AUTOLOAD:=$(call AutoLoad,30,cifs)
|
||||
$(call AddDepends/nls)
|
||||
DEPENDS+= \
|
||||
+(LINUX_5_4||LINUX_5_10):kmod-crypto-md4\
|
||||
+LINUX_5_10:kmod-crypto-md4\
|
||||
+kmod-crypto-md5 \
|
||||
+kmod-crypto-sha256 \
|
||||
+kmod-crypto-sha512 \
|
||||
+kmod-crypto-cmac \
|
||||
+kmod-crypto-hmac \
|
||||
+(LINUX_5_4||LINUX_5_10):kmod-crypto-arc4 \
|
||||
+LINUX_5_10:kmod-crypto-arc4 \
|
||||
+kmod-crypto-aead \
|
||||
+kmod-crypto-ccm \
|
||||
+kmod-crypto-ecb \
|
||||
@ -176,9 +176,7 @@ define KernelPackage/fs-exfat
|
||||
KCONFIG:= \
|
||||
CONFIG_EXFAT_FS \
|
||||
CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8"
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/drivers/staging/exfat/exfat.ko@lt5.7 \
|
||||
$(LINUX_DIR)/fs/exfat/exfat.ko@ge5.7
|
||||
FILES:= $(LINUX_DIR)/fs/exfat/exfat.ko
|
||||
AUTOLOAD:=$(call AutoLoad,30,exfat,1)
|
||||
DEPENDS:=+kmod-nls-base
|
||||
endef
|
||||
@ -413,7 +411,7 @@ define KernelPackage/fs-nfs-common
|
||||
$(LINUX_DIR)/fs/lockd/lockd.ko \
|
||||
$(LINUX_DIR)/net/sunrpc/sunrpc.ko \
|
||||
$(LINUX_DIR)/fs/nfs_common/grace.ko \
|
||||
$(LINUX_DIR)/fs/nfs_common/nfs_ssc.ko@ge5.10
|
||||
$(LINUX_DIR)/fs/nfs_common/nfs_ssc.ko
|
||||
AUTOLOAD:=$(call AutoLoad,30,grace sunrpc lockd)
|
||||
endef
|
||||
|
||||
|
||||
@ -90,7 +90,7 @@ I2C_DWCORE_MODULES:= \
|
||||
define KernelPackage/i2c-designware-core
|
||||
$(call i2c_defaults,$(I2C_DWCORE_MODULES),58)
|
||||
TITLE:=Synopsys DesignWare I2C core
|
||||
DEPENDS:=+kmod-i2c-core +!LINUX_5_4:kmod-regmap-core
|
||||
DEPENDS:=+kmod-i2c-core +kmod-regmap-core
|
||||
HIDDEN:=y
|
||||
endef
|
||||
|
||||
|
||||
@ -141,7 +141,7 @@ $(eval $(call KernelPackage,mii))
|
||||
define KernelPackage/mdio-devres
|
||||
SUBMENU:=$(NETWORK_DEVICES_MENU)
|
||||
TITLE:=Supports MDIO device registration
|
||||
DEPENDS:=@(LINUX_5_10||LINUX_5_15) +kmod-libphy +(TARGET_armvirt||TARGET_bcm27xx_bcm2708||TARGET_tegra):kmod-of-mdio
|
||||
DEPENDS:=+kmod-libphy +(TARGET_armvirt||TARGET_bcm27xx_bcm2708||TARGET_tegra):kmod-of-mdio
|
||||
KCONFIG:=CONFIG_MDIO_DEVRES
|
||||
HIDDEN:=1
|
||||
FILES:=$(LINUX_DIR)/drivers/net/phy/mdio_devres.ko
|
||||
@ -163,10 +163,8 @@ define KernelPackage/mdio-gpio
|
||||
CONFIG_MDIO_BITBANG \
|
||||
CONFIG_MDIO_GPIO
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/drivers/net/phy/mdio-gpio.ko@lt5.10 \
|
||||
$(LINUX_DIR)/drivers/net/phy/mdio-bitbang.ko@lt5.10 \
|
||||
$(LINUX_DIR)/drivers/net/mdio/mdio-gpio.ko@ge5.10 \
|
||||
$(LINUX_DIR)/drivers/net/mdio/mdio-bitbang.ko@ge5.10
|
||||
$(LINUX_DIR)/drivers/net/mdio/mdio-gpio.ko \
|
||||
$(LINUX_DIR)/drivers/net/mdio/mdio-bitbang.ko
|
||||
AUTOLOAD:=$(call AutoProbe,mdio-gpio)
|
||||
endef
|
||||
|
||||
@ -593,7 +591,7 @@ $(eval $(call KernelPackage,8139cp))
|
||||
define KernelPackage/r8169
|
||||
SUBMENU:=$(NETWORK_DEVICES_MENU)
|
||||
TITLE:=RealTek RTL-8169 PCI Gigabit Ethernet Adapter kernel support
|
||||
DEPENDS:=@PCI_SUPPORT +kmod-mii +r8169-firmware +kmod-phy-realtek +(LINUX_5_10||LINUX_5_15):kmod-mdio-devres
|
||||
DEPENDS:=@PCI_SUPPORT +kmod-mii +r8169-firmware +kmod-phy-realtek +kmod-mdio-devres
|
||||
KCONFIG:= \
|
||||
CONFIG_R8169 \
|
||||
CONFIG_R8169_NAPI=y \
|
||||
@ -719,7 +717,7 @@ $(eval $(call KernelPackage,igbvf))
|
||||
define KernelPackage/ixgbe
|
||||
SUBMENU:=$(NETWORK_DEVICES_MENU)
|
||||
TITLE:=Intel(R) 82598/82599 PCI-Express 10 Gigabit Ethernet support
|
||||
DEPENDS:=@PCI_SUPPORT +kmod-mdio +kmod-ptp +kmod-hwmon-core +kmod-libphy +(LINUX_5_10||LINUX_5_15):kmod-mdio-devres
|
||||
DEPENDS:=@PCI_SUPPORT +kmod-mdio +kmod-ptp +kmod-hwmon-core +kmod-libphy +kmod-mdio-devres
|
||||
KCONFIG:=CONFIG_IXGBE \
|
||||
CONFIG_IXGBE_VXLAN=n \
|
||||
CONFIG_IXGBE_HWMON=y \
|
||||
@ -1072,8 +1070,7 @@ define KernelPackage/of-mdio
|
||||
DEPENDS:=+kmod-libphy +kmod-fixed-phy @!TARGET_x86
|
||||
KCONFIG:=CONFIG_OF_MDIO
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/drivers/of/of_mdio.ko@lt5.10 \
|
||||
$(LINUX_DIR)/drivers/net/mdio/of_mdio.ko@ge5.10 \
|
||||
$(LINUX_DIR)/drivers/net/mdio/of_mdio.ko \
|
||||
$(LINUX_DIR)/drivers/net/mdio/fwnode_mdio.ko@ge5.15
|
||||
AUTOLOAD:=$(call AutoLoad,41,of_mdio)
|
||||
endef
|
||||
@ -1307,8 +1304,7 @@ define KernelPackage/sfp
|
||||
CONFIG_MDIO_I2C
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/drivers/net/phy/sfp.ko \
|
||||
$(LINUX_DIR)/drivers/net/phy/mdio-i2c.ko@lt5.10 \
|
||||
$(LINUX_DIR)/drivers/net/mdio/mdio-i2c.ko@ge5.10
|
||||
$(LINUX_DIR)/drivers/net/mdio/mdio-i2c.ko
|
||||
AUTOLOAD:=$(call AutoProbe,mdio-i2c sfp)
|
||||
endef
|
||||
|
||||
|
||||
@ -176,9 +176,7 @@ define KernelPackage/nf-flow
|
||||
CONFIG_NF_FLOW_TABLE \
|
||||
CONFIG_NF_FLOW_TABLE_HW
|
||||
DEPENDS:=+kmod-nf-conntrack
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/net/netfilter/nf_flow_table.ko \
|
||||
$(if $(CONFIG_LINUX_5_4),$(LINUX_DIR)/net/netfilter/nf_flow_table_hw.ko)
|
||||
FILES:= $(LINUX_DIR)/net/netfilter/nf_flow_table.ko
|
||||
AUTOLOAD:=$(call AutoProbe,nf_flow_table nf_flow_table_hw)
|
||||
endef
|
||||
|
||||
|
||||
@ -1190,9 +1190,7 @@ define KernelPackage/keys-trusted
|
||||
TITLE:=TPM trusted keys on kernel keyring
|
||||
DEPENDS:=@KERNEL_KEYS +kmod-crypto-hash +kmod-crypto-hmac +kmod-crypto-sha1 +kmod-tpm
|
||||
KCONFIG:=CONFIG_TRUSTED_KEYS
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/security/keys/trusted.ko@lt5.10 \
|
||||
$(LINUX_DIR)/security/keys/trusted-keys/trusted.ko@ge5.10
|
||||
FILES:= $(LINUX_DIR)/security/keys/trusted-keys/trusted.ko
|
||||
AUTOLOAD:=$(call AutoLoad,01,trusted-keys,1)
|
||||
endef
|
||||
|
||||
|
||||
@ -523,8 +523,7 @@ define KernelPackage/sound-hda-intel
|
||||
CONFIG_SND_HDA_INTEL
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/pci/hda/snd-hda-intel.ko \
|
||||
$(LINUX_DIR)/sound/hda/snd-intel-nhlt.ko@lt5.5 \
|
||||
$(LINUX_DIR)/sound/hda/snd-intel-dspcfg.ko@ge5.5
|
||||
$(LINUX_DIR)/sound/hda/snd-intel-dspcfg.ko
|
||||
AUTOLOAD:=$(call AutoProbe,snd-hda-intel)
|
||||
$(call AddDepends/sound,kmod-sound-hda-core)
|
||||
endef
|
||||
|
||||
@ -1251,7 +1251,7 @@ $(eval $(call KernelPackage,usb-net-mcs7830))
|
||||
|
||||
define KernelPackage/usb-net-smsc75xx
|
||||
TITLE:=SMSC LAN75XX based USB 2.0 Gigabit ethernet devices
|
||||
DEPENDS:=+!LINUX_5_4:kmod-libphy
|
||||
DEPENDS:=+kmod-libphy
|
||||
KCONFIG:=CONFIG_USB_NET_SMSC75XX
|
||||
FILES:=$(LINUX_DIR)/drivers/$(USBNET_DIR)/smsc75xx.ko
|
||||
AUTOLOAD:=$(call AutoProbe,smsc75xx)
|
||||
@ -1267,7 +1267,7 @@ $(eval $(call KernelPackage,usb-net-smsc75xx))
|
||||
|
||||
define KernelPackage/usb-net-smsc95xx
|
||||
TITLE:=SMSC LAN95XX based USB 2.0 10/100 ethernet devices
|
||||
DEPENDS:=+(LINUX_5_10||LINUX_5_15):kmod-libphy
|
||||
DEPENDS:=+kmod-libphy
|
||||
KCONFIG:=CONFIG_USB_NET_SMSC95XX
|
||||
FILES:=$(LINUX_DIR)/drivers/$(USBNET_DIR)/smsc95xx.ko
|
||||
AUTOLOAD:=$(call AutoProbe,smsc95xx)
|
||||
@ -1440,7 +1440,7 @@ define KernelPackage/usb-net-cdc-ncm
|
||||
KCONFIG:=CONFIG_USB_NET_CDC_NCM
|
||||
FILES:= $(LINUX_DIR)/drivers/$(USBNET_DIR)/cdc_ncm.ko
|
||||
AUTOLOAD:=$(call AutoProbe,cdc_ncm)
|
||||
$(call AddDepends/usb-net,+!LINUX_5_4:kmod-usb-net-cdc-ether)
|
||||
$(call AddDepends/usb-net,+kmod-usb-net-cdc-ether)
|
||||
endef
|
||||
|
||||
define KernelPackage/usb-net-cdc-ncm/description
|
||||
|
||||
@ -0,0 +1,103 @@
|
||||
From 716c220b4d990a4fe7800d0685ca69dee99e4e8f Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Pavel=20L=C3=B6bl?= <pavel@loebl.cz>
|
||||
Date: Fri, 6 May 2022 06:42:46 +0200
|
||||
Subject: [PATCH] brcmfmac: allow setting wlan MAC address using device tree
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This allows firmware to provide MAC address using device tree. Like in
|
||||
case there is no MAC burned in wlan NVRAM.
|
||||
|
||||
Signed-off-by: Pavel Löbl <pavel@loebl.cz>
|
||||
Signed-off-by: Kalle Valo <kvalo@kernel.org>
|
||||
Link: https://lore.kernel.org/r/20220506044246.67146-1-pavel@loebl.cz
|
||||
---
|
||||
.../broadcom/brcm80211/brcmfmac/common.c | 23 ++++++++++++++-----
|
||||
.../broadcom/brcm80211/brcmfmac/common.h | 1 +
|
||||
.../broadcom/brcm80211/brcmfmac/core.c | 4 +++-
|
||||
.../wireless/broadcom/brcm80211/brcmfmac/of.c | 3 +++
|
||||
4 files changed, 24 insertions(+), 7 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
|
||||
@@ -202,13 +202,24 @@ int brcmf_c_preinit_dcmds(struct brcmf_i
|
||||
char *ptr;
|
||||
s32 err;
|
||||
|
||||
- /* retreive mac address */
|
||||
- err = brcmf_fil_iovar_data_get(ifp, "cur_etheraddr", ifp->mac_addr,
|
||||
- sizeof(ifp->mac_addr));
|
||||
- if (err < 0) {
|
||||
- bphy_err(drvr, "Retrieving cur_etheraddr failed, %d\n", err);
|
||||
- goto done;
|
||||
+ if (is_valid_ether_addr(ifp->mac_addr)) {
|
||||
+ /* set mac address */
|
||||
+ err = brcmf_fil_iovar_data_set(ifp, "cur_etheraddr", ifp->mac_addr,
|
||||
+ ETH_ALEN);
|
||||
+ if (err < 0) {
|
||||
+ bphy_err(ifp->drvr, "Setting cur_etheraddr failed, %d\n", err);
|
||||
+ goto done;
|
||||
+ }
|
||||
+ } else {
|
||||
+ /* retrieve mac address */
|
||||
+ err = brcmf_fil_iovar_data_get(ifp, "cur_etheraddr", ifp->mac_addr,
|
||||
+ sizeof(ifp->mac_addr));
|
||||
+ if (err < 0) {
|
||||
+ bphy_err(drvr, "Retrieving cur_etheraddr failed, %d\n", err);
|
||||
+ goto done;
|
||||
+ }
|
||||
}
|
||||
+
|
||||
memcpy(ifp->drvr->mac, ifp->mac_addr, sizeof(ifp->drvr->mac));
|
||||
memcpy(ifp->drvr->wiphy->perm_addr, ifp->drvr->mac, ETH_ALEN);
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.h
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.h
|
||||
@@ -50,6 +50,7 @@ struct brcmf_mp_device {
|
||||
bool ignore_probe_fail;
|
||||
struct brcmfmac_pd_cc *country_codes;
|
||||
const char *board_type;
|
||||
+ unsigned char mac[ETH_ALEN];
|
||||
union {
|
||||
struct brcmfmac_sdio_pd sdio;
|
||||
} bus;
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
||||
@@ -7,6 +7,7 @@
|
||||
#include <linux/etherdevice.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/inetdevice.h>
|
||||
+#include <linux/property.h>
|
||||
#include <net/cfg80211.h>
|
||||
#include <net/rtnetlink.h>
|
||||
#include <net/addrconf.h>
|
||||
@@ -1226,7 +1227,8 @@ static int brcmf_bus_started(struct brcm
|
||||
brcmf_dbg(TRACE, "\n");
|
||||
|
||||
/* add primary networking interface */
|
||||
- ifp = brcmf_add_if(drvr, 0, 0, false, "wlan%d", NULL);
|
||||
+ ifp = brcmf_add_if(drvr, 0, 0, false, "wlan%d",
|
||||
+ is_valid_ether_addr(drvr->settings->mac) ? drvr->settings->mac : NULL);
|
||||
if (IS_ERR(ifp))
|
||||
return PTR_ERR(ifp);
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c
|
||||
@@ -5,6 +5,7 @@
|
||||
#include <linux/init.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_irq.h>
|
||||
+#include <linux/of_net.h>
|
||||
|
||||
#include <defs.h>
|
||||
#include "debug.h"
|
||||
@@ -97,6 +98,8 @@ void brcmf_of_probe(struct device *dev,
|
||||
if (err)
|
||||
brcmf_err("failed to get OF country code map (err=%d)\n", err);
|
||||
|
||||
+ of_get_mac_address(np, settings->mac);
|
||||
+
|
||||
if (bus_type != BRCMF_BUSTYPE_SDIO)
|
||||
return;
|
||||
|
||||
@ -12,7 +12,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c
|
||||
@@ -58,6 +58,36 @@ static int brcmf_of_get_country_codes(st
|
||||
@@ -59,6 +59,36 @@ static int brcmf_of_get_country_codes(st
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -49,7 +49,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
void brcmf_of_probe(struct device *dev, enum brcmf_bus_type bus_type,
|
||||
struct brcmf_mp_device *settings)
|
||||
{
|
||||
@@ -90,6 +120,8 @@ void brcmf_of_probe(struct device *dev,
|
||||
@@ -91,6 +121,8 @@ void brcmf_of_probe(struct device *dev,
|
||||
of_node_put(root);
|
||||
}
|
||||
|
||||
|
||||
@ -100,7 +100,7 @@
|
||||
.add_key = brcmf_cfg80211_add_key,
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
||||
@@ -1361,6 +1361,8 @@ int brcmf_attach(struct device *dev)
|
||||
@@ -1363,6 +1363,8 @@ int brcmf_attach(struct device *dev)
|
||||
|
||||
/* Link to bus module */
|
||||
drvr->hdrlen = 0;
|
||||
@ -109,7 +109,7 @@
|
||||
|
||||
/* Attach and link in the protocol */
|
||||
ret = brcmf_proto_attach(drvr);
|
||||
@@ -1443,6 +1445,12 @@ void brcmf_detach(struct device *dev)
|
||||
@@ -1445,6 +1447,12 @@ void brcmf_detach(struct device *dev)
|
||||
if (drvr == NULL)
|
||||
return;
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,52 @@
|
||||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Mon, 20 Jun 2022 14:53:04 +0200
|
||||
Subject: [PATCH] mac80211: make sta airtime deficit field s32 instead of
|
||||
s64
|
||||
|
||||
32 bit is more than enough range for the airtime deficit
|
||||
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
|
||||
--- a/net/mac80211/debugfs_sta.c
|
||||
+++ b/net/mac80211/debugfs_sta.c
|
||||
@@ -202,7 +202,7 @@ static ssize_t sta_airtime_read(struct f
|
||||
size_t bufsz = 400;
|
||||
char *buf = kzalloc(bufsz, GFP_KERNEL), *p = buf;
|
||||
u64 rx_airtime = 0, tx_airtime = 0;
|
||||
- s64 deficit[IEEE80211_NUM_ACS];
|
||||
+ s32 deficit[IEEE80211_NUM_ACS];
|
||||
ssize_t rv;
|
||||
int ac;
|
||||
|
||||
@@ -219,7 +219,7 @@ static ssize_t sta_airtime_read(struct f
|
||||
|
||||
p += scnprintf(p, bufsz + buf - p,
|
||||
"RX: %llu us\nTX: %llu us\nWeight: %u\n"
|
||||
- "Deficit: VO: %lld us VI: %lld us BE: %lld us BK: %lld us\n",
|
||||
+ "Deficit: VO: %d us VI: %d us BE: %d us BK: %d us\n",
|
||||
rx_airtime, tx_airtime, sta->airtime_weight,
|
||||
deficit[0], deficit[1], deficit[2], deficit[3]);
|
||||
|
||||
--- a/net/mac80211/sta_info.h
|
||||
+++ b/net/mac80211/sta_info.h
|
||||
@@ -138,7 +138,7 @@ enum ieee80211_agg_stop_reason {
|
||||
struct airtime_info {
|
||||
u64 rx_airtime;
|
||||
u64 tx_airtime;
|
||||
- s64 deficit;
|
||||
+ s32 deficit;
|
||||
atomic_t aql_tx_pending; /* Estimated airtime for frames pending */
|
||||
u32 aql_limit_low;
|
||||
u32 aql_limit_high;
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -3847,7 +3847,7 @@ struct ieee80211_txq *ieee80211_next_txq
|
||||
struct sta_info *sta = container_of(txqi->txq.sta,
|
||||
struct sta_info, sta);
|
||||
bool aql_check = ieee80211_txq_airtime_check(hw, &txqi->txq);
|
||||
- s64 deficit = sta->airtime[txqi->txq.ac].deficit;
|
||||
+ s32 deficit = sta->airtime[txqi->txq.ac].deficit;
|
||||
|
||||
if (aql_check)
|
||||
found_eligible_txq = true;
|
||||
@ -0,0 +1,48 @@
|
||||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Mon, 20 Jun 2022 14:59:09 +0200
|
||||
Subject: [PATCH] mac80211: consider aql_tx_pending when checking airtime
|
||||
deficit
|
||||
|
||||
When queueing packets for a station, deficit only gets added once the packets
|
||||
have been transmitted, which could be much later. During that time, a lot of
|
||||
temporary unfairness could happen, which could lead to bursty behavior.
|
||||
Fix this by subtracting the aql_tx_pending when checking the deficit in tx
|
||||
scheduling.
|
||||
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -3817,6 +3817,13 @@ out:
|
||||
}
|
||||
EXPORT_SYMBOL(ieee80211_tx_dequeue);
|
||||
|
||||
+static inline s32 ieee80211_sta_deficit(struct sta_info *sta, u8 ac)
|
||||
+{
|
||||
+ struct airtime_info *air_info = &sta->airtime[ac];
|
||||
+
|
||||
+ return air_info->deficit - atomic_read(&air_info->aql_tx_pending);
|
||||
+}
|
||||
+
|
||||
struct ieee80211_txq *ieee80211_next_txq(struct ieee80211_hw *hw, u8 ac)
|
||||
{
|
||||
struct ieee80211_local *local = hw_to_local(hw);
|
||||
@@ -3847,7 +3854,7 @@ struct ieee80211_txq *ieee80211_next_txq
|
||||
struct sta_info *sta = container_of(txqi->txq.sta,
|
||||
struct sta_info, sta);
|
||||
bool aql_check = ieee80211_txq_airtime_check(hw, &txqi->txq);
|
||||
- s32 deficit = sta->airtime[txqi->txq.ac].deficit;
|
||||
+ s32 deficit = ieee80211_sta_deficit(sta, txqi->txq.ac);
|
||||
|
||||
if (aql_check)
|
||||
found_eligible_txq = true;
|
||||
@@ -3972,7 +3979,7 @@ bool ieee80211_txq_may_transmit(struct i
|
||||
continue;
|
||||
}
|
||||
sta = container_of(iter->txq.sta, struct sta_info, sta);
|
||||
- if (sta->airtime[ac].deficit < 0)
|
||||
+ if (ieee80211_sta_deficit(sta, ac) < 0)
|
||||
sta->airtime[ac].deficit += sta->airtime_weight;
|
||||
list_move_tail(&iter->schedule_order, &local->active_txqs[ac]);
|
||||
}
|
||||
@ -0,0 +1,118 @@
|
||||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Mon, 20 Jun 2022 20:52:50 +0200
|
||||
Subject: [PATCH] mac80211: keep recently active tx queues in scheduling
|
||||
list
|
||||
|
||||
This allows proper deficit accounting to ensure that they don't carry their
|
||||
deficit until the next time they become active
|
||||
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
|
||||
--- a/net/mac80211/ieee80211_i.h
|
||||
+++ b/net/mac80211/ieee80211_i.h
|
||||
@@ -83,6 +83,13 @@ extern const u8 ieee80211_ac_to_qos_mask
|
||||
|
||||
#define IEEE80211_MAX_NAN_INSTANCE_ID 255
|
||||
|
||||
+
|
||||
+/*
|
||||
+ * Keep a station's queues on the active list for deficit accounting purposes
|
||||
+ * if it was active or queued during the last 100ms
|
||||
+ */
|
||||
+#define AIRTIME_ACTIVE_DURATION (HZ / 10)
|
||||
+
|
||||
struct ieee80211_bss {
|
||||
u32 device_ts_beacon, device_ts_presp;
|
||||
|
||||
--- a/net/mac80211/sta_info.h
|
||||
+++ b/net/mac80211/sta_info.h
|
||||
@@ -138,6 +138,7 @@ enum ieee80211_agg_stop_reason {
|
||||
struct airtime_info {
|
||||
u64 rx_airtime;
|
||||
u64 tx_airtime;
|
||||
+ u32 last_active;
|
||||
s32 deficit;
|
||||
atomic_t aql_tx_pending; /* Estimated airtime for frames pending */
|
||||
u32 aql_limit_low;
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -3824,6 +3824,36 @@ static inline s32 ieee80211_sta_deficit(
|
||||
return air_info->deficit - atomic_read(&air_info->aql_tx_pending);
|
||||
}
|
||||
|
||||
+static void
|
||||
+ieee80211_txq_set_active(struct txq_info *txqi)
|
||||
+{
|
||||
+ struct sta_info *sta;
|
||||
+
|
||||
+ if (!txqi->txq.sta)
|
||||
+ return;
|
||||
+
|
||||
+ sta = container_of(txqi->txq.sta, struct sta_info, sta);
|
||||
+ sta->airtime[txqi->txq.ac].last_active = (u32)jiffies;
|
||||
+}
|
||||
+
|
||||
+static bool
|
||||
+ieee80211_txq_keep_active(struct txq_info *txqi)
|
||||
+{
|
||||
+ struct sta_info *sta;
|
||||
+ u32 diff;
|
||||
+
|
||||
+ if (!txqi->txq.sta)
|
||||
+ return false;
|
||||
+
|
||||
+ sta = container_of(txqi->txq.sta, struct sta_info, sta);
|
||||
+ if (ieee80211_sta_deficit(sta, txqi->txq.ac) >= 0)
|
||||
+ return false;
|
||||
+
|
||||
+ diff = (u32)jiffies - sta->airtime[txqi->txq.ac].last_active;
|
||||
+
|
||||
+ return diff <= AIRTIME_ACTIVE_DURATION;
|
||||
+}
|
||||
+
|
||||
struct ieee80211_txq *ieee80211_next_txq(struct ieee80211_hw *hw, u8 ac)
|
||||
{
|
||||
struct ieee80211_local *local = hw_to_local(hw);
|
||||
@@ -3870,7 +3900,6 @@ struct ieee80211_txq *ieee80211_next_txq
|
||||
}
|
||||
}
|
||||
|
||||
-
|
||||
if (txqi->schedule_round == local->schedule_round[ac])
|
||||
goto out;
|
||||
|
||||
@@ -3890,12 +3919,13 @@ void __ieee80211_schedule_txq(struct iee
|
||||
{
|
||||
struct ieee80211_local *local = hw_to_local(hw);
|
||||
struct txq_info *txqi = to_txq_info(txq);
|
||||
+ bool has_queue;
|
||||
|
||||
spin_lock_bh(&local->active_txq_lock[txq->ac]);
|
||||
|
||||
+ has_queue = force || txq_has_queue(txq);
|
||||
if (list_empty(&txqi->schedule_order) &&
|
||||
- (force || !skb_queue_empty(&txqi->frags) ||
|
||||
- txqi->tin.backlog_packets)) {
|
||||
+ (has_queue || ieee80211_txq_keep_active(txqi))) {
|
||||
/* If airtime accounting is active, always enqueue STAs at the
|
||||
* head of the list to ensure that they only get moved to the
|
||||
* back by the airtime DRR scheduler once they have a negative
|
||||
@@ -3903,7 +3933,7 @@ void __ieee80211_schedule_txq(struct iee
|
||||
* get immediately moved to the back of the list on the next
|
||||
* call to ieee80211_next_txq().
|
||||
*/
|
||||
- if (txqi->txq.sta && local->airtime_flags &&
|
||||
+ if (txqi->txq.sta && local->airtime_flags && has_queue &&
|
||||
wiphy_ext_feature_isset(local->hw.wiphy,
|
||||
NL80211_EXT_FEATURE_AIRTIME_FAIRNESS))
|
||||
list_add(&txqi->schedule_order,
|
||||
@@ -3911,6 +3941,8 @@ void __ieee80211_schedule_txq(struct iee
|
||||
else
|
||||
list_add_tail(&txqi->schedule_order,
|
||||
&local->active_txqs[txq->ac]);
|
||||
+ if (has_queue)
|
||||
+ ieee80211_txq_set_active(txqi);
|
||||
}
|
||||
|
||||
spin_unlock_bh(&local->active_txq_lock[txq->ac]);
|
||||
@ -0,0 +1,131 @@
|
||||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Mon, 20 Jun 2022 21:26:34 +0200
|
||||
Subject: [PATCH] mac80211: add a per-PHY AQL limit to improve fairness
|
||||
|
||||
In order to maintain fairness, the amount of queueing needs to be limited
|
||||
beyond the simple per-station AQL budget, otherwise the driver can simply
|
||||
repeatedly do scheduling rounds until all queues that have not used their
|
||||
AQL budget become eligble.
|
||||
|
||||
To be conservative, use the high AQL limit for the first txq and add half
|
||||
of the low AQL for each subsequent queue.
|
||||
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
|
||||
--- a/net/mac80211/ieee80211_i.h
|
||||
+++ b/net/mac80211/ieee80211_i.h
|
||||
@@ -1211,6 +1211,7 @@ struct ieee80211_local {
|
||||
u32 aql_txq_limit_high[IEEE80211_NUM_ACS];
|
||||
u32 aql_threshold;
|
||||
atomic_t aql_total_pending_airtime;
|
||||
+ atomic_t aql_ac_pending_airtime[IEEE80211_NUM_ACS];
|
||||
|
||||
const struct ieee80211_ops *ops;
|
||||
|
||||
--- a/net/mac80211/main.c
|
||||
+++ b/net/mac80211/main.c
|
||||
@@ -712,6 +712,7 @@ struct ieee80211_hw *ieee80211_alloc_hw_
|
||||
local->aql_txq_limit_low[i] = IEEE80211_DEFAULT_AQL_TXQ_LIMIT_L;
|
||||
local->aql_txq_limit_high[i] =
|
||||
IEEE80211_DEFAULT_AQL_TXQ_LIMIT_H;
|
||||
+ atomic_set(&local->aql_ac_pending_airtime[i], 0);
|
||||
}
|
||||
|
||||
local->airtime_flags = AIRTIME_USE_TX | AIRTIME_USE_RX;
|
||||
--- a/net/mac80211/sta_info.c
|
||||
+++ b/net/mac80211/sta_info.c
|
||||
@@ -1929,6 +1929,7 @@ void ieee80211_sta_update_pending_airtim
|
||||
&sta->airtime[ac].aql_tx_pending);
|
||||
|
||||
atomic_add(tx_airtime, &local->aql_total_pending_airtime);
|
||||
+ atomic_add(tx_airtime, &local->aql_ac_pending_airtime[ac]);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1940,14 +1941,17 @@ void ieee80211_sta_update_pending_airtim
|
||||
tx_pending, 0);
|
||||
}
|
||||
|
||||
+ atomic_sub(tx_airtime, &local->aql_total_pending_airtime);
|
||||
tx_pending = atomic_sub_return(tx_airtime,
|
||||
- &local->aql_total_pending_airtime);
|
||||
+ &local->aql_ac_pending_airtime[ac]);
|
||||
if (WARN_ONCE(tx_pending < 0,
|
||||
"Device %s AC %d pending airtime underflow: %u, %u",
|
||||
wiphy_name(local->hw.wiphy), ac, tx_pending,
|
||||
- tx_airtime))
|
||||
- atomic_cmpxchg(&local->aql_total_pending_airtime,
|
||||
+ tx_airtime)) {
|
||||
+ atomic_cmpxchg(&local->aql_ac_pending_airtime[ac],
|
||||
tx_pending, 0);
|
||||
+ atomic_sub(tx_pending, &local->aql_total_pending_airtime);
|
||||
+ }
|
||||
}
|
||||
|
||||
int sta_info_move_state(struct sta_info *sta,
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -3863,6 +3863,9 @@ struct ieee80211_txq *ieee80211_next_txq
|
||||
|
||||
spin_lock_bh(&local->active_txq_lock[ac]);
|
||||
|
||||
+ if (!local->schedule_round[ac])
|
||||
+ goto out;
|
||||
+
|
||||
begin:
|
||||
txqi = list_first_entry_or_null(&local->active_txqs[ac],
|
||||
struct txq_info,
|
||||
@@ -3984,6 +3987,25 @@ bool ieee80211_txq_airtime_check(struct
|
||||
}
|
||||
EXPORT_SYMBOL(ieee80211_txq_airtime_check);
|
||||
|
||||
+static bool
|
||||
+ieee80211_txq_schedule_airtime_check(struct ieee80211_local *local, u8 ac)
|
||||
+{
|
||||
+ unsigned int num_txq = 0;
|
||||
+ struct txq_info *txq;
|
||||
+ u32 aql_limit;
|
||||
+
|
||||
+ if (!wiphy_ext_feature_isset(local->hw.wiphy, NL80211_EXT_FEATURE_AQL))
|
||||
+ return true;
|
||||
+
|
||||
+ list_for_each_entry(txq, &local->active_txqs[ac], schedule_order)
|
||||
+ num_txq++;
|
||||
+
|
||||
+ aql_limit = (num_txq - 1) * local->aql_txq_limit_low[ac] / 2 +
|
||||
+ local->aql_txq_limit_high[ac];
|
||||
+
|
||||
+ return atomic_read(&local->aql_ac_pending_airtime[ac]) < aql_limit;
|
||||
+}
|
||||
+
|
||||
bool ieee80211_txq_may_transmit(struct ieee80211_hw *hw,
|
||||
struct ieee80211_txq *txq)
|
||||
{
|
||||
@@ -4000,6 +4022,9 @@ bool ieee80211_txq_may_transmit(struct i
|
||||
if (list_empty(&txqi->schedule_order))
|
||||
goto out;
|
||||
|
||||
+ if (!ieee80211_txq_schedule_airtime_check(local, ac))
|
||||
+ goto out;
|
||||
+
|
||||
list_for_each_entry_safe(iter, tmp, &local->active_txqs[ac],
|
||||
schedule_order) {
|
||||
if (iter == txqi)
|
||||
@@ -4039,7 +4064,15 @@ void ieee80211_txq_schedule_start(struct
|
||||
struct ieee80211_local *local = hw_to_local(hw);
|
||||
|
||||
spin_lock_bh(&local->active_txq_lock[ac]);
|
||||
- local->schedule_round[ac]++;
|
||||
+
|
||||
+ if (ieee80211_txq_schedule_airtime_check(local, ac)) {
|
||||
+ local->schedule_round[ac]++;
|
||||
+ if (!local->schedule_round[ac])
|
||||
+ local->schedule_round[ac]++;
|
||||
+ } else {
|
||||
+ local->schedule_round[ac] = 0;
|
||||
+ }
|
||||
+
|
||||
spin_unlock_bh(&local->active_txq_lock[ac]);
|
||||
}
|
||||
EXPORT_SYMBOL(ieee80211_txq_schedule_start);
|
||||
@ -0,0 +1,58 @@
|
||||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Sat, 25 Jun 2022 21:25:40 +0200
|
||||
Subject: [PATCH] mac80211: add debugfs file to display per-phy AQL pending
|
||||
airtime
|
||||
|
||||
Now that the global pending airtime is more relevant for airtime fairness,
|
||||
it makes sense to make it accessible via debugfs for debugging
|
||||
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
|
||||
--- a/net/mac80211/debugfs.c
|
||||
+++ b/net/mac80211/debugfs.c
|
||||
@@ -201,6 +201,36 @@ static const struct file_operations airt
|
||||
.llseek = default_llseek,
|
||||
};
|
||||
|
||||
+static ssize_t aql_pending_read(struct file *file,
|
||||
+ char __user *user_buf,
|
||||
+ size_t count, loff_t *ppos)
|
||||
+{
|
||||
+ struct ieee80211_local *local = file->private_data;
|
||||
+ char buf[400];
|
||||
+ int len = 0;
|
||||
+
|
||||
+ len = scnprintf(buf, sizeof(buf),
|
||||
+ "AC AQL pending\n"
|
||||
+ "VO %u us\n"
|
||||
+ "VI %u us\n"
|
||||
+ "BE %u us\n"
|
||||
+ "BK %u us\n"
|
||||
+ "total %u us\n",
|
||||
+ atomic_read(&local->aql_ac_pending_airtime[IEEE80211_AC_VO]),
|
||||
+ atomic_read(&local->aql_ac_pending_airtime[IEEE80211_AC_VI]),
|
||||
+ atomic_read(&local->aql_ac_pending_airtime[IEEE80211_AC_BE]),
|
||||
+ atomic_read(&local->aql_ac_pending_airtime[IEEE80211_AC_BK]),
|
||||
+ atomic_read(&local->aql_total_pending_airtime));
|
||||
+ return simple_read_from_buffer(user_buf, count, ppos,
|
||||
+ buf, len);
|
||||
+}
|
||||
+
|
||||
+static const struct file_operations aql_pending_ops = {
|
||||
+ .read = aql_pending_read,
|
||||
+ .open = simple_open,
|
||||
+ .llseek = default_llseek,
|
||||
+};
|
||||
+
|
||||
static ssize_t aql_txq_limit_read(struct file *file,
|
||||
char __user *user_buf,
|
||||
size_t count,
|
||||
@@ -628,6 +658,7 @@ void debugfs_hw_add(struct ieee80211_loc
|
||||
DEBUGFS_ADD(hw_conf);
|
||||
DEBUGFS_ADD_MODE(force_tx_status, 0600);
|
||||
DEBUGFS_ADD_MODE(aql_enable, 0600);
|
||||
+ DEBUGFS_ADD(aql_pending);
|
||||
|
||||
if (local->ops->wake_tx_queue)
|
||||
DEBUGFS_ADD_MODE(aqm, 0600);
|
||||
@ -0,0 +1,36 @@
|
||||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Sat, 25 Jun 2022 23:10:19 +0200
|
||||
Subject: [PATCH] mac80211: only accumulate airtime deficit for active
|
||||
clients
|
||||
|
||||
When a client does not generate any local tx activity, accumulating airtime
|
||||
deficit for the round-robin scheduler can be harmful. If this goes on for too
|
||||
long, the deficit could grow quite large, which might cause unreasonable
|
||||
initial latency once the client becomes active
|
||||
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
|
||||
--- a/net/mac80211/sta_info.c
|
||||
+++ b/net/mac80211/sta_info.c
|
||||
@@ -1900,6 +1900,7 @@ void ieee80211_sta_register_airtime(stru
|
||||
struct ieee80211_local *local = sta->sdata->local;
|
||||
u8 ac = ieee80211_ac_from_tid(tid);
|
||||
u32 airtime = 0;
|
||||
+ u32 diff;
|
||||
|
||||
if (sta->local->airtime_flags & AIRTIME_USE_TX)
|
||||
airtime += tx_airtime;
|
||||
@@ -1909,7 +1910,11 @@ void ieee80211_sta_register_airtime(stru
|
||||
spin_lock_bh(&local->active_txq_lock[ac]);
|
||||
sta->airtime[ac].tx_airtime += tx_airtime;
|
||||
sta->airtime[ac].rx_airtime += rx_airtime;
|
||||
- sta->airtime[ac].deficit -= airtime;
|
||||
+
|
||||
+ diff = (u32)jiffies - sta->airtime[ac].last_active;
|
||||
+ if (diff <= AIRTIME_ACTIVE_DURATION)
|
||||
+ sta->airtime[ac].deficit -= airtime;
|
||||
+
|
||||
spin_unlock_bh(&local->active_txq_lock[ac]);
|
||||
}
|
||||
EXPORT_SYMBOL(ieee80211_sta_register_airtime);
|
||||
@ -0,0 +1,53 @@
|
||||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Sun, 26 Jun 2022 11:43:25 +0200
|
||||
Subject: [PATCH] mac80211: increase quantum for airtime scheduler
|
||||
|
||||
Given the typical AQL budget and queue length, a quantum of 256 with the
|
||||
default station weight often requires iterating over all queues frequently,
|
||||
until one of them becomes eligible.
|
||||
Improve performance by using 8 times station weight as scheduler quantum
|
||||
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
|
||||
--- a/net/mac80211/ieee80211_i.h
|
||||
+++ b/net/mac80211/ieee80211_i.h
|
||||
@@ -90,6 +90,8 @@ extern const u8 ieee80211_ac_to_qos_mask
|
||||
*/
|
||||
#define AIRTIME_ACTIVE_DURATION (HZ / 10)
|
||||
|
||||
+#define AIRTIME_QUANTUM_SHIFT 3
|
||||
+
|
||||
struct ieee80211_bss {
|
||||
u32 device_ts_beacon, device_ts_presp;
|
||||
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -3894,7 +3894,7 @@ struct ieee80211_txq *ieee80211_next_txq
|
||||
|
||||
if (deficit < 0)
|
||||
sta->airtime[txqi->txq.ac].deficit +=
|
||||
- sta->airtime_weight;
|
||||
+ sta->airtime_weight << AIRTIME_QUANTUM_SHIFT;
|
||||
|
||||
if (deficit < 0 || !aql_check) {
|
||||
list_move_tail(&txqi->schedule_order,
|
||||
@@ -4037,7 +4037,8 @@ bool ieee80211_txq_may_transmit(struct i
|
||||
}
|
||||
sta = container_of(iter->txq.sta, struct sta_info, sta);
|
||||
if (ieee80211_sta_deficit(sta, ac) < 0)
|
||||
- sta->airtime[ac].deficit += sta->airtime_weight;
|
||||
+ sta->airtime[ac].deficit += sta->airtime_weight <<
|
||||
+ AIRTIME_QUANTUM_SHIFT;
|
||||
list_move_tail(&iter->schedule_order, &local->active_txqs[ac]);
|
||||
}
|
||||
|
||||
@@ -4045,7 +4046,7 @@ bool ieee80211_txq_may_transmit(struct i
|
||||
if (sta->airtime[ac].deficit >= 0)
|
||||
goto out;
|
||||
|
||||
- sta->airtime[ac].deficit += sta->airtime_weight;
|
||||
+ sta->airtime[ac].deficit += sta->airtime_weight << AIRTIME_QUANTUM_SHIFT;
|
||||
list_move_tail(&txqi->schedule_order, &local->active_txqs[ac]);
|
||||
spin_unlock_bh(&local->active_txq_lock[ac]);
|
||||
|
||||
@ -46,7 +46,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
NUM_IEEE80211_HW_FLAGS
|
||||
--- a/net/mac80211/debugfs.c
|
||||
+++ b/net/mac80211/debugfs.c
|
||||
@@ -504,6 +504,7 @@ static const char *hw_flag_names[] = {
|
||||
@@ -494,6 +494,7 @@ static const char *hw_flag_names[] = {
|
||||
FLAG(SUPPORTS_TX_ENCAP_OFFLOAD),
|
||||
FLAG(SUPPORTS_RX_DECAP_OFFLOAD),
|
||||
FLAG(SUPPORTS_CONC_MON_RX_DECAP),
|
||||
@ -56,7 +56,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
|
||||
--- a/net/mac80211/rx.c
|
||||
+++ b/net/mac80211/rx.c
|
||||
@@ -3177,6 +3177,49 @@ static void ieee80211_process_sa_query_r
|
||||
@@ -3181,6 +3181,49 @@ static void ieee80211_process_sa_query_r
|
||||
ieee80211_tx_skb(sdata, skb);
|
||||
}
|
||||
|
||||
@ -106,7 +106,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
static ieee80211_rx_result debug_noinline
|
||||
ieee80211_rx_h_mgmt_check(struct ieee80211_rx_data *rx)
|
||||
{
|
||||
@@ -3202,6 +3245,9 @@ ieee80211_rx_h_mgmt_check(struct ieee802
|
||||
@@ -3206,6 +3249,9 @@ ieee80211_rx_h_mgmt_check(struct ieee802
|
||||
!(rx->flags & IEEE80211_RX_BEACON_REPORTED)) {
|
||||
int sig = 0;
|
||||
|
||||
|
||||
@ -57,7 +57,7 @@
|
||||
__NL80211_ATTR_AFTER_LAST,
|
||||
--- a/net/mac80211/cfg.c
|
||||
+++ b/net/mac80211/cfg.c
|
||||
@@ -2845,6 +2845,19 @@ static int ieee80211_get_tx_power(struct
|
||||
@@ -2812,6 +2812,19 @@ static int ieee80211_get_tx_power(struct
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -77,7 +77,7 @@
|
||||
static void ieee80211_rfkill_poll(struct wiphy *wiphy)
|
||||
{
|
||||
struct ieee80211_local *local = wiphy_priv(wiphy);
|
||||
@@ -4549,6 +4562,7 @@ const struct cfg80211_ops mac80211_confi
|
||||
@@ -4516,6 +4529,7 @@ const struct cfg80211_ops mac80211_confi
|
||||
.set_wiphy_params = ieee80211_set_wiphy_params,
|
||||
.set_tx_power = ieee80211_set_tx_power,
|
||||
.get_tx_power = ieee80211_get_tx_power,
|
||||
@ -87,7 +87,7 @@
|
||||
CFG80211_TESTMODE_DUMP(ieee80211_testmode_dump)
|
||||
--- a/net/mac80211/ieee80211_i.h
|
||||
+++ b/net/mac80211/ieee80211_i.h
|
||||
@@ -1464,6 +1464,7 @@ struct ieee80211_local {
|
||||
@@ -1441,6 +1441,7 @@ struct ieee80211_local {
|
||||
int dynamic_ps_forced_timeout;
|
||||
|
||||
int user_power_level; /* in dBm, for all interfaces */
|
||||
|
||||
@ -8,9 +8,9 @@ PKG_LICENSE_FILES:=
|
||||
|
||||
PKG_SOURCE_URL:=https://github.com/openwrt/mt76
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_DATE:=2022-06-02
|
||||
PKG_SOURCE_VERSION:=1d8af168e86fa4087351b7d10572accd5dee4d36
|
||||
PKG_MIRROR_HASH:=5ffd53150c57f378a3ff90e5acc15b9c3321916c4cf5a5698cff03469e6fdab4
|
||||
PKG_SOURCE_DATE:=2022-06-24
|
||||
PKG_SOURCE_VERSION:=b6e865e2cc7080c91ec34a9dd3648d25f7ce04c6
|
||||
PKG_MIRROR_HASH:=4d311e55431400266a1d58534ea22421b080670f937df3d9ad1fb9a9d0362bda
|
||||
|
||||
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
||||
PKG_USE_NINJA:=0
|
||||
|
||||
@ -8,12 +8,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=libnftnl
|
||||
PKG_VERSION:=1.2.1
|
||||
PKG_VERSION:=1.2.2
|
||||
PKG_RELEASE:=$(AUTORELEASE)
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
||||
PKG_SOURCE_URL:=https://netfilter.org/projects/$(PKG_NAME)/files
|
||||
PKG_HASH:=7508a5c414fab13e3cb3ce8262d0ce4f02c1590a8e4f8628ab497b5b4585937c
|
||||
PKG_HASH:=9efc004f9d15918d68f9e98e194d55e030168f33bb67c3e7a545b740c9ed6d0a
|
||||
|
||||
PKG_MAINTAINER:=Steven Barth <steven@midlink.org>
|
||||
PKG_LICENSE:=GPL-2.0-or-later
|
||||
|
||||
@ -68,7 +68,7 @@ config WOLFSSL_ASM_CAPABLE
|
||||
|
||||
choice
|
||||
prompt "Hardware Acceleration"
|
||||
default WOLFSSL_HAS_CPU_CRYPTO if WOLFSSL_ASM_CAPABLE
|
||||
default WOLFSSL_HAS_CPU_CRYPTO if WOLFSSL_ASM_CAPABLE && !x86_64
|
||||
default WOLFSSL_HAS_NO_HW
|
||||
|
||||
config WOLFSSL_HAS_NO_HW
|
||||
@ -80,6 +80,7 @@ choice
|
||||
help
|
||||
This will use Intel AESNI insturctions or armv8 Crypto Extensions.
|
||||
Either of them should easily outperform hardware crypto in WolfSSL.
|
||||
Beware that for Intel, the CPU has to support SSE4 instructions.
|
||||
|
||||
config WOLFSSL_HAS_AFALG
|
||||
bool "AF_ALG"
|
||||
@ -96,5 +97,9 @@ choice
|
||||
bool "/dev/crypto - full"
|
||||
select WOLFSSL_HAS_DEVCRYPTO
|
||||
endchoice
|
||||
if x86_64 && WOLFSSL_HAS_CPU_CRYPTO
|
||||
comment "WARNING: make sure your CPU supports SSE4 instructions"
|
||||
comment "WolfSSL may crash with an invalid opcode exception"
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
@ -0,0 +1,134 @@
|
||||
From: Matt Johnston <matt@ucc.asn.au>
|
||||
Date: Wed, 8 Jun 2022 21:26:20 +0800
|
||||
Subject: Fix MAX_UNAUTH_CLIENTS regression
|
||||
|
||||
Since re-exec change in 2022.82 Dropbear count
|
||||
treat authenticated sessions towards the unauthenticated
|
||||
session limit. This is fixed by passing the childpipe FD
|
||||
through to the re-execed process.
|
||||
---
|
||||
runopts.h | 5 +++--
|
||||
svr-main.c | 21 +++++++++++----------
|
||||
svr-runopts.c | 15 ++++++++++++---
|
||||
3 files changed, 26 insertions(+), 15 deletions(-)
|
||||
|
||||
--- a/runopts.h
|
||||
+++ b/runopts.h
|
||||
@@ -79,8 +79,9 @@ typedef struct svr_runopts {
|
||||
char *addresses[DROPBEAR_MAX_PORTS];
|
||||
|
||||
int inetdmode;
|
||||
- /* Hidden "-2" flag indicates it's re-executing itself */
|
||||
- int reexec_child;
|
||||
+ /* Hidden "-2 childpipe_fd" flag indicates it's re-executing itself,
|
||||
+ stores the childpipe preauth file descriptor. Set to -1 otherwise. */
|
||||
+ int reexec_childpipe;
|
||||
|
||||
/* Flags indicating whether to use ipv4 and ipv6 */
|
||||
/* not used yet
|
||||
--- a/svr-main.c
|
||||
+++ b/svr-main.c
|
||||
@@ -71,7 +71,7 @@ int main(int argc, char ** argv)
|
||||
#endif
|
||||
|
||||
#if DROPBEAR_DO_REEXEC
|
||||
- if (svr_opts.reexec_child) {
|
||||
+ if (svr_opts.reexec_childpipe >= 0) {
|
||||
#ifdef PR_SET_NAME
|
||||
/* Fix the "Name:" in /proc/pid/status, otherwise it's
|
||||
a FD number from fexecve.
|
||||
@@ -102,7 +102,7 @@ static void main_inetd() {
|
||||
|
||||
seedrandom();
|
||||
|
||||
- if (!svr_opts.reexec_child) {
|
||||
+ if (svr_opts.reexec_childpipe < 0) {
|
||||
/* In case our inetd was lax in logging source addresses */
|
||||
get_socket_address(0, NULL, NULL, &host, &port, 0);
|
||||
dropbear_log(LOG_INFO, "Child connection from %s:%s", host, port);
|
||||
@@ -115,10 +115,8 @@ static void main_inetd() {
|
||||
setsid();
|
||||
}
|
||||
|
||||
- /* Start service program
|
||||
- * -1 is a dummy childpipe, just something we can close() without
|
||||
- * mattering. */
|
||||
- svr_session(0, -1);
|
||||
+ /* -1 for childpipe in the inetd case is discarded */
|
||||
+ svr_session(0, svr_opts.reexec_childpipe);
|
||||
|
||||
/* notreached */
|
||||
}
|
||||
@@ -347,9 +345,10 @@ static void main_noinetd(int argc, char
|
||||
|
||||
if (execfd >= 0) {
|
||||
#if DROPBEAR_DO_REEXEC
|
||||
- /* Add "-2" to the args and re-execute ourself. */
|
||||
- char **new_argv = m_malloc(sizeof(char*) * (argc+3));
|
||||
- int pos0 = 0, new_argc = argc+1;
|
||||
+ /* Add "-2 childpipe[1]" to the args and re-execute ourself. */
|
||||
+ char **new_argv = m_malloc(sizeof(char*) * (argc+4));
|
||||
+ char buf[10];
|
||||
+ int pos0 = 0, new_argc = argc+2;
|
||||
|
||||
/* We need to specially handle "dropbearmulti dropbear". */
|
||||
if (multipath) {
|
||||
@@ -359,7 +358,9 @@ static void main_noinetd(int argc, char
|
||||
}
|
||||
|
||||
memcpy(&new_argv[pos0], argv, sizeof(char*) * argc);
|
||||
- new_argv[new_argc-1] = "-2";
|
||||
+ new_argv[new_argc-2] = "-2";
|
||||
+ snprintf(buf, sizeof(buf), "%d", childpipe[1]);
|
||||
+ new_argv[new_argc-1] = buf;
|
||||
new_argv[new_argc] = NULL;
|
||||
|
||||
if ((dup2(childsock, STDIN_FILENO) < 0)) {
|
||||
--- a/svr-runopts.c
|
||||
+++ b/svr-runopts.c
|
||||
@@ -138,6 +138,7 @@ void svr_getopts(int argc, char ** argv)
|
||||
char* keepalive_arg = NULL;
|
||||
char* idle_timeout_arg = NULL;
|
||||
char* maxauthtries_arg = NULL;
|
||||
+ char* reexec_fd_arg = NULL;
|
||||
char* keyfile = NULL;
|
||||
char c;
|
||||
#if DROPBEAR_PLUGIN
|
||||
@@ -175,6 +176,7 @@ void svr_getopts(int argc, char ** argv)
|
||||
svr_opts.pubkey_plugin_options = NULL;
|
||||
#endif
|
||||
svr_opts.pass_on_env = 0;
|
||||
+ svr_opts.reexec_childpipe = -1;
|
||||
|
||||
#ifndef DISABLE_ZLIB
|
||||
opts.compress_mode = DROPBEAR_COMPRESS_DELAYED;
|
||||
@@ -250,12 +252,12 @@ void svr_getopts(int argc, char ** argv)
|
||||
#if DROPBEAR_DO_REEXEC && NON_INETD_MODE
|
||||
/* For internal use by re-exec */
|
||||
case '2':
|
||||
- svr_opts.reexec_child = 1;
|
||||
+ next = &reexec_fd_arg;
|
||||
break;
|
||||
#endif
|
||||
case 'p':
|
||||
- nextisport = 1;
|
||||
- break;
|
||||
+ nextisport = 1;
|
||||
+ break;
|
||||
case 'P':
|
||||
next = &svr_opts.pidfile;
|
||||
break;
|
||||
@@ -426,6 +428,13 @@ void svr_getopts(int argc, char ** argv)
|
||||
dropbear_log(LOG_INFO, "Forced command set to '%s'", svr_opts.forced_command);
|
||||
}
|
||||
|
||||
+ if (reexec_fd_arg) {
|
||||
+ if (m_str_to_uint(reexec_fd_arg, &svr_opts.reexec_childpipe) == DROPBEAR_FAILURE
|
||||
+ || svr_opts.reexec_childpipe < 0) {
|
||||
+ dropbear_exit("Bad -2");
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
#if INETD_MODE
|
||||
if (svr_opts.inetdmode && (
|
||||
opts.usingsyslog == 0
|
||||
@ -1,21 +1,20 @@
|
||||
# Copyright (C) 2006-2016 OpenWrt.org
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
# Copyright (C) 2006-2016 OpenWrt.org
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=arptables
|
||||
PKG_VERSION:=0.0.5
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_URL:=https://git.netfilter.org/arptables
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_DATE:=2015-05-20
|
||||
PKG_SOURCE_VERSION:=f4ab8f63f11a72f14687a6646d04ae1bae3fa45f
|
||||
PKG_MIRROR_HASH:=84bc660be4c9f70be91046acfd87785add930eceab7c543036058e1a9de2e9d9
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=http://ftp.netfilter.org/pub/arptables
|
||||
PKG_HASH:=4f9a0656ce5c90868f551cd4deeb2d04f33899667e1fb2818b64e432fe8f629c
|
||||
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
PKG_LICENSE_FILES:=COPYING
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
@ -37,7 +36,7 @@ MAKE_FLAGS += \
|
||||
|
||||
define Package/arptables-legacy/install
|
||||
$(INSTALL_DIR) $(1)/usr/sbin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/arptables $(1)/usr/sbin/arptables-legacy
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/arptables-legacy $(1)/usr/sbin/arptables-legacy
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,arptables-legacy))
|
||||
|
||||
@ -8,13 +8,13 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=ethtool
|
||||
PKG_VERSION:=5.16
|
||||
PKG_VERSION:=5.18
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
||||
PKG_SOURCE_URL:=@KERNEL/software/network/ethtool
|
||||
PKG_HASH:=aa2fef1936dd4a11755dfa0bdb93f0ec5bea45208d27c9754bc3abe1aa42c1cb
|
||||
PKG_HASH:=9577b2ffbce710b659fb239598ec92bced1ca400ca0f1286762bfa44e4784270
|
||||
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
PKG_LICENSE_FILES:=COPYING
|
||||
|
||||
@ -1,20 +1,21 @@
|
||||
# Copyright (C) 2015 OpenWrt.org
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
# Copyright (C) 2015 OpenWrt.org
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=nftables
|
||||
PKG_VERSION:=1.0.2
|
||||
PKG_RELEASE:=3
|
||||
PKG_VERSION:=1.0.4
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
||||
PKG_SOURCE_URL:=https://netfilter.org/projects/$(PKG_NAME)/files
|
||||
PKG_HASH:=0b28a36ffcf4567b841de7bd3f37918b1fed27859eb48bdec51e1f7a83954c02
|
||||
PKG_HASH:=927fb1fea1f685a328c10cf791eb655d7e1ed49d310eea5cb3101dfd8d6cba35
|
||||
|
||||
PKG_MAINTAINER:=
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
PKG_LICENSE_FILES:=COPYING
|
||||
|
||||
PKG_FIXUP:=autoreconf
|
||||
PKG_INSTALL:=1
|
||||
|
||||
@ -1,29 +0,0 @@
|
||||
From 18a08fb7f0443f8bde83393bd6f69e23a04246b3 Mon Sep 17 00:00:00 2001
|
||||
From: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||
Date: Tue, 22 Feb 2022 00:56:36 +0100
|
||||
Subject: examples: compile with `make check' and add AM_CPPFLAGS
|
||||
|
||||
Compile examples via `make check' like libnftnl does. Use AM_CPPFLAGS to
|
||||
specify local headers via -I.
|
||||
|
||||
Unfortunately, `make distcheck' did not catch this compile time error in
|
||||
my system, since it was using the nftables/libnftables.h file of the
|
||||
previous nftables release.
|
||||
|
||||
Fixes: 5b364657a35f ("build: missing SUBIRS update")
|
||||
Fixes: caf2a6ad2d22 ("examples: add libnftables example program")
|
||||
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||
---
|
||||
examples/Makefile.am | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/examples/Makefile.am
|
||||
+++ b/examples/Makefile.am
|
||||
@@ -1,4 +1,6 @@
|
||||
-noinst_PROGRAMS = nft-buffer \
|
||||
+check_PROGRAMS = nft-buffer \
|
||||
nft-json-file
|
||||
|
||||
+AM_CPPFLAGS = -I$(top_srcdir)/include
|
||||
+
|
||||
LDADD = $(top_builddir)/src/libnftables.la
|
||||
@ -12,9 +12,9 @@ PKG_FLAGS:=essential
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=$(PROJECT_GIT)/project/opkg-lede.git
|
||||
PKG_SOURCE_DATE:=2022-01-09
|
||||
PKG_SOURCE_VERSION:=2edcfad1bb9a32f31199d5842aa087b4d30ec6f5
|
||||
PKG_MIRROR_HASH:=b21e51ffe5bae3ca01865415630cc1f4b471f69e0d7947264a579165c7d44294
|
||||
PKG_SOURCE_DATE:=2022-02-24
|
||||
PKG_SOURCE_VERSION:=d038e5b6d155784575f62a66a8bb7e874173e92e
|
||||
PKG_MIRROR_HASH:=e5ec4ae93f6529f7f0b9acc22a9a63c1b2f27d3b30b4a82041fcd58b9bc7cdf3
|
||||
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
PKG_LICENSE_FILES:=COPYING
|
||||
|
||||
@ -30,10 +30,10 @@ netgear,wndap620)
|
||||
|
||||
netgear,wndap660)
|
||||
ucidef_set_led_netdev "lan_act" "LAN (Activity)" "green:activity" "eth0"
|
||||
ucidef_set_led_switch "lan1_100" "LAN 100Mbps" "amber:lan-0" "switch0" "0x04" "0x04" "link"
|
||||
ucidef_set_led_switch "lan1_1000" "LAN 1000Mbps" "green:lan-0" "switch0" "0x04" "0x08" "link"
|
||||
ucidef_set_led_switch "lan2_100" "LAN 100Mbps" "amber:lan-1" "switch0" "0x02" "0x04" "link"
|
||||
ucidef_set_led_switch "lan2_1000" "LAN 1000Mbps" "green:lan-1" "switch0" "0x02" "0x08" "link"
|
||||
ucidef_set_led_switch "lan1_100" "LAN 100Mbps" "amber:lan-1" "switch0" "0x02" "0x04" "link"
|
||||
ucidef_set_led_switch "lan1_1000" "LAN 1000Mbps" "green:lan-1" "switch0" "0x02" "0x08" "link"
|
||||
ucidef_set_led_switch "lan2_100" "LAN 100Mbps" "amber:lan-2" "switch0" "0x04" "0x04" "link"
|
||||
ucidef_set_led_switch "lan2_1000" "LAN 1000Mbps" "green:lan-2" "switch0" "0x04" "0x08" "link"
|
||||
ucidef_set_led_wlan "wlan2g" "WLAN2G" "green:wlan-0" "phy0tpt"
|
||||
ucidef_set_led_wlan "wlan5g" "WLAN5G" "green:wlan-1" "phy1tpt"
|
||||
;;
|
||||
|
||||
@ -16,7 +16,7 @@ netgear,wndap620)
|
||||
ucidef_add_switch "switch0" "2:lan" "5@eth0"
|
||||
;;
|
||||
netgear,wndap660)
|
||||
ucidef_add_switch "switch0" "1:lan:2" "2:lan:1" "5@eth0"
|
||||
ucidef_add_switch "switch0" "1:lan" "2:lan" "5@eth0"
|
||||
;;
|
||||
meraki,mx60|\
|
||||
netgear,wndr4700)
|
||||
|
||||
@ -32,9 +32,9 @@ netgear,wndap660)
|
||||
":test=:fault" \
|
||||
":wlan2g=:wlan-0" \
|
||||
":wlan5g=:wlan-1" \
|
||||
":lan1-link100=:lan-0" \
|
||||
":lan1-link100=:lan-1" \
|
||||
":lan1-link1000=:lan-1" \
|
||||
":lan2-link100=:lan-1" \
|
||||
":lan2-link100=:lan-2" \
|
||||
":lan2-link1000=:lan-2"
|
||||
;;
|
||||
netgear,wndr4700)
|
||||
|
||||
@ -39,10 +39,12 @@ CONFIG_CPU_BIG_ENDIAN=y
|
||||
CONFIG_CRC16=y
|
||||
# CONFIG_CRC32_SARWATE is not set
|
||||
CONFIG_CRC32_SLICEBY8=y
|
||||
CONFIG_CRYPTO_BLAKE2S=y
|
||||
CONFIG_CRYPTO_DEFLATE=y
|
||||
CONFIG_CRYPTO_DEV_PPC4XX=y
|
||||
CONFIG_CRYPTO_HW=y
|
||||
CONFIG_CRYPTO_JITTERENTROPY=y
|
||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
||||
CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1
|
||||
CONFIG_CRYPTO_LIB_SHA256=y
|
||||
CONFIG_CRYPTO_LZO=y
|
||||
|
||||
@ -38,10 +38,12 @@ CONFIG_CPU_BIG_ENDIAN=y
|
||||
CONFIG_CRC16=y
|
||||
# CONFIG_CRC32_SARWATE is not set
|
||||
CONFIG_CRC32_SLICEBY8=y
|
||||
CONFIG_CRYPTO_BLAKE2S=y
|
||||
CONFIG_CRYPTO_DEFLATE=y
|
||||
CONFIG_CRYPTO_DEV_PPC4XX=y
|
||||
CONFIG_CRYPTO_HW=y
|
||||
CONFIG_CRYPTO_JITTERENTROPY=y
|
||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
||||
CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1
|
||||
CONFIG_CRYPTO_LZO=y
|
||||
# CONFIG_CRYPTO_MD5_PPC is not set
|
||||
|
||||
@ -14,28 +14,28 @@
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <1>;
|
||||
gpios = <&GPIO0 22 GPIO_ACTIVE_HIGH>;
|
||||
gpios = <&GPIO0 9 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
led-6 {
|
||||
color = <LED_COLOR_ID_AMBER>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <0>;
|
||||
gpios = <&GPIO0 23 GPIO_ACTIVE_HIGH>;
|
||||
function-enumerator = <1>;
|
||||
gpios = <&GPIO0 10 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
led-7 {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <2>;
|
||||
gpios = <&GPIO0 9 GPIO_ACTIVE_HIGH>;
|
||||
gpios = <&GPIO0 22 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
led-8 {
|
||||
color = <LED_COLOR_ID_AMBER>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <1>;
|
||||
gpios = <&GPIO0 10 GPIO_ACTIVE_HIGH>;
|
||||
function-enumerator = <2>;
|
||||
gpios = <&GPIO0 23 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@ -13,7 +13,7 @@ produce a noisy warning.
|
||||
|
||||
--- a/drivers/usb/host/xhci-pci.c
|
||||
+++ b/drivers/usb/host/xhci-pci.c
|
||||
@@ -281,6 +281,7 @@ static void xhci_pci_quirks(struct devic
|
||||
@@ -283,6 +283,7 @@ static void xhci_pci_quirks(struct devic
|
||||
pdev->device == 0x0015) {
|
||||
xhci->quirks |= XHCI_RESET_ON_RESUME;
|
||||
xhci->quirks |= XHCI_ZERO_64B_REGS;
|
||||
|
||||
@ -71,6 +71,7 @@ CONFIG_COMMON_CLK=y
|
||||
CONFIG_COMPAT_32BIT_TIME=y
|
||||
CONFIG_CPU_RMAP=y
|
||||
CONFIG_CRC16=y
|
||||
CONFIG_CRYPTO_BLAKE2S=y
|
||||
CONFIG_CRYPTO_CRC32C=y
|
||||
CONFIG_CRYPTO_DRBG=y
|
||||
CONFIG_CRYPTO_DRBG_HMAC=y
|
||||
@ -78,6 +79,7 @@ CONFIG_CRYPTO_DRBG_MENU=y
|
||||
CONFIG_CRYPTO_ECHAINIV=y
|
||||
CONFIG_CRYPTO_HMAC=y
|
||||
CONFIG_CRYPTO_JITTERENTROPY=y
|
||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
||||
CONFIG_CRYPTO_LIB_SHA256=y
|
||||
CONFIG_CRYPTO_NULL=y
|
||||
CONFIG_CRYPTO_RNG=y
|
||||
|
||||
@ -39,6 +39,8 @@ CONFIG_CPU_SPECTRE=y
|
||||
CONFIG_CPU_THUMB_CAPABLE=y
|
||||
CONFIG_CPU_TLB_V7=y
|
||||
CONFIG_CPU_V7=y
|
||||
CONFIG_CRYPTO_BLAKE2S=y
|
||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
||||
CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
|
||||
CONFIG_DMA_OPS=y
|
||||
CONFIG_EDAC_ATOMIC_SCRUB=y
|
||||
|
||||
@ -40,6 +40,8 @@ CONFIG_CPU_SPECTRE=y
|
||||
CONFIG_CPU_THUMB_CAPABLE=y
|
||||
CONFIG_CPU_TLB_V7=y
|
||||
CONFIG_CPU_V7=y
|
||||
CONFIG_CRYPTO_BLAKE2S=y
|
||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
||||
CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
|
||||
CONFIG_DMA_OPS=y
|
||||
CONFIG_EDAC_ATOMIC_SCRUB=y
|
||||
|
||||
@ -56,10 +56,12 @@ CONFIG_CRYPTO_AES_ARM64_CE_BLK=y
|
||||
CONFIG_CRYPTO_AES_ARM64_CE_CCM=y
|
||||
CONFIG_CRYPTO_AES_ARM64_NEON_BLK=y
|
||||
CONFIG_CRYPTO_ARCH_HAVE_LIB_CHACHA=y
|
||||
CONFIG_CRYPTO_BLAKE2S=y
|
||||
CONFIG_CRYPTO_CHACHA20=y
|
||||
CONFIG_CRYPTO_CHACHA20_NEON=y
|
||||
CONFIG_CRYPTO_CRYPTD=y
|
||||
CONFIG_CRYPTO_GHASH_ARM64_CE=y
|
||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
||||
CONFIG_CRYPTO_LIB_CHACHA_GENERIC=y
|
||||
CONFIG_CRYPTO_SHA1=y
|
||||
CONFIG_CRYPTO_SHA1_ARM64_CE=y
|
||||
|
||||
@ -58,10 +58,12 @@ CONFIG_CRYPTO_AES_ARM64_CE_BLK=y
|
||||
CONFIG_CRYPTO_AES_ARM64_CE_CCM=y
|
||||
CONFIG_CRYPTO_AES_ARM64_NEON_BLK=y
|
||||
CONFIG_CRYPTO_ARCH_HAVE_LIB_CHACHA=y
|
||||
CONFIG_CRYPTO_BLAKE2S=y
|
||||
CONFIG_CRYPTO_CHACHA20=y
|
||||
CONFIG_CRYPTO_CHACHA20_NEON=y
|
||||
CONFIG_CRYPTO_CRYPTD=y
|
||||
CONFIG_CRYPTO_GHASH_ARM64_CE=y
|
||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
||||
CONFIG_CRYPTO_LIB_CHACHA_GENERIC=y
|
||||
CONFIG_CRYPTO_SHA1=y
|
||||
CONFIG_CRYPTO_SHA1_ARM64_CE=y
|
||||
|
||||
@ -17,7 +17,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
|
||||
--- a/sound/soc/codecs/Kconfig
|
||||
+++ b/sound/soc/codecs/Kconfig
|
||||
@@ -1008,7 +1008,7 @@ config SND_SOC_PCM3168A_SPI
|
||||
@@ -1007,7 +1007,7 @@ config SND_SOC_PCM3168A_SPI
|
||||
select REGMAP_SPI
|
||||
|
||||
config SND_SOC_PCM5102A
|
||||
|
||||
@ -20,7 +20,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
|
||||
--- a/drivers/regulator/core.c
|
||||
+++ b/drivers/regulator/core.c
|
||||
@@ -2984,7 +2984,8 @@ static int _regulator_list_voltage(struc
|
||||
@@ -2987,7 +2987,8 @@ static int _regulator_list_voltage(struc
|
||||
return rdev->desc->fixed_uV;
|
||||
|
||||
if (ops->list_voltage) {
|
||||
@ -30,7 +30,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
return -EINVAL;
|
||||
if (lock)
|
||||
regulator_lock(rdev);
|
||||
@@ -3135,7 +3136,8 @@ int regulator_list_hardware_vsel(struct
|
||||
@@ -3138,7 +3139,8 @@ int regulator_list_hardware_vsel(struct
|
||||
struct regulator_dev *rdev = regulator->rdev;
|
||||
const struct regulator_ops *ops = rdev->desc->ops;
|
||||
|
||||
@ -40,7 +40,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
return -EINVAL;
|
||||
if (ops->set_voltage_sel != regulator_set_voltage_sel_regmap)
|
||||
return -EOPNOTSUPP;
|
||||
@@ -4058,6 +4060,9 @@ int regulator_set_voltage_time(struct re
|
||||
@@ -4061,6 +4063,9 @@ int regulator_set_voltage_time(struct re
|
||||
|
||||
for (i = 0; i < rdev->desc->n_voltages; i++) {
|
||||
/* We only look for exact voltage matches here */
|
||||
|
||||
@ -14,7 +14,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
|
||||
--- a/drivers/regulator/core.c
|
||||
+++ b/drivers/regulator/core.c
|
||||
@@ -4063,6 +4063,9 @@ int regulator_set_voltage_time(struct re
|
||||
@@ -4066,6 +4066,9 @@ int regulator_set_voltage_time(struct re
|
||||
if (i < rdev->desc->linear_min_sel)
|
||||
continue;
|
||||
|
||||
|
||||
@ -21,7 +21,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
|
||||
--- a/drivers/regulator/core.c
|
||||
+++ b/drivers/regulator/core.c
|
||||
@@ -2984,9 +2984,10 @@ static int _regulator_list_voltage(struc
|
||||
@@ -2987,9 +2987,10 @@ static int _regulator_list_voltage(struc
|
||||
return rdev->desc->fixed_uV;
|
||||
|
||||
if (ops->list_voltage) {
|
||||
@ -34,7 +34,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
if (lock)
|
||||
regulator_lock(rdev);
|
||||
ret = ops->list_voltage(rdev, selector);
|
||||
@@ -3136,9 +3137,10 @@ int regulator_list_hardware_vsel(struct
|
||||
@@ -3139,9 +3140,10 @@ int regulator_list_hardware_vsel(struct
|
||||
struct regulator_dev *rdev = regulator->rdev;
|
||||
const struct regulator_ops *ops = rdev->desc->ops;
|
||||
|
||||
|
||||
@ -75,9 +75,11 @@ CONFIG_CRC16=y
|
||||
CONFIG_CRC7=y
|
||||
CONFIG_CRC_CCITT=y
|
||||
CONFIG_CRC_ITU_T=y
|
||||
CONFIG_CRYPTO_BLAKE2S=y
|
||||
CONFIG_CRYPTO_CRC32C=y
|
||||
CONFIG_CRYPTO_DEFLATE=y
|
||||
CONFIG_CRYPTO_HASH_INFO=y
|
||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
||||
CONFIG_CRYPTO_LZO=y
|
||||
CONFIG_CRYPTO_RNG2=y
|
||||
CONFIG_CRYPTO_ZSTD=y
|
||||
|
||||
@ -98,6 +98,7 @@ CONFIG_CRC16=y
|
||||
# CONFIG_CRC32_SARWATE is not set
|
||||
CONFIG_CRC32_SLICEBY8=y
|
||||
CONFIG_CROSS_MEMORY_ATTACH=y
|
||||
CONFIG_CRYPTO_BLAKE2S=y
|
||||
CONFIG_CRYPTO_CRC32C=y
|
||||
CONFIG_CRYPTO_DEFLATE=y
|
||||
CONFIG_CRYPTO_DRBG=y
|
||||
@ -106,6 +107,7 @@ CONFIG_CRYPTO_DRBG_MENU=y
|
||||
CONFIG_CRYPTO_HASH_INFO=y
|
||||
CONFIG_CRYPTO_HMAC=y
|
||||
CONFIG_CRYPTO_JITTERENTROPY=y
|
||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
||||
CONFIG_CRYPTO_LIB_SHA256=y
|
||||
CONFIG_CRYPTO_LZO=y
|
||||
CONFIG_CRYPTO_RNG=y
|
||||
|
||||
@ -98,6 +98,7 @@ CONFIG_CPU_V7=y
|
||||
CONFIG_CRC16=y
|
||||
CONFIG_CRC_CCITT=y
|
||||
CONFIG_CRC_ITU_T=y
|
||||
CONFIG_CRYPTO_BLAKE2S=y
|
||||
CONFIG_CRYPTO_CMAC=y
|
||||
CONFIG_CRYPTO_CRC32C=y
|
||||
CONFIG_CRYPTO_DEFLATE=y
|
||||
@ -109,6 +110,7 @@ CONFIG_CRYPTO_ECC=y
|
||||
CONFIG_CRYPTO_ECDH=y
|
||||
CONFIG_CRYPTO_HMAC=y
|
||||
CONFIG_CRYPTO_JITTERENTROPY=y
|
||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
||||
CONFIG_CRYPTO_LIB_SHA256=y
|
||||
CONFIG_CRYPTO_LZO=y
|
||||
CONFIG_CRYPTO_RNG=y
|
||||
|
||||
@ -26,6 +26,8 @@ CONFIG_CPU_NEEDS_NO_SMARTMIPS_OR_MICROMIPS=y
|
||||
CONFIG_CPU_R4K_CACHE_TLB=y
|
||||
CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
|
||||
CONFIG_CPU_SUPPORTS_HIGHMEM=y
|
||||
CONFIG_CRYPTO_BLAKE2S=y
|
||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
||||
CONFIG_CRYPTO_LIB_POLY1305_RSIZE=2
|
||||
CONFIG_CRYPTO_RNG2=y
|
||||
CONFIG_CSRC_R4K=y
|
||||
|
||||
@ -35,7 +35,9 @@ CONFIG_CPU_R4K_CACHE_TLB=y
|
||||
CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
|
||||
CONFIG_CPU_SUPPORTS_HIGHMEM=y
|
||||
CONFIG_CPU_SUPPORTS_MSA=y
|
||||
CONFIG_CRYPTO_BLAKE2S=y
|
||||
# CONFIG_CRYPTO_CHACHA_MIPS is not set
|
||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
||||
CONFIG_CRYPTO_LIB_POLY1305_RSIZE=2
|
||||
# CONFIG_CRYPTO_POLY1305_MIPS is not set
|
||||
CONFIG_CRYPTO_RNG2=y
|
||||
|
||||
@ -34,6 +34,8 @@ CONFIG_CPU_R4K_CACHE_TLB=y
|
||||
CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
|
||||
CONFIG_CPU_SUPPORTS_HIGHMEM=y
|
||||
CONFIG_CPU_SUPPORTS_MSA=y
|
||||
CONFIG_CRYPTO_BLAKE2S=y
|
||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
||||
CONFIG_CRYPTO_LIB_POLY1305_RSIZE=2
|
||||
CONFIG_CRYPTO_RNG2=y
|
||||
CONFIG_CSRC_R4K=y
|
||||
|
||||
@ -85,7 +85,8 @@
|
||||
partitions {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "ecoscentric,redboot-fis-partitions";
|
||||
compatible = "redboot-fis";
|
||||
fis-index-block = <0xfd>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@ -4,6 +4,7 @@
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/mtd/partitions/uimage.h>
|
||||
|
||||
/ {
|
||||
model = "jjPlus JA76PF2";
|
||||
@ -32,6 +33,19 @@
|
||||
clock-frequency = <40000000>;
|
||||
};
|
||||
|
||||
i2c {
|
||||
compatible = "i2c-gpio";
|
||||
sda-gpios = <&gpio 1 GPIO_ACTIVE_HIGH>;
|
||||
scl-gpios = <&gpio 0 GPIO_ACTIVE_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
sensor@48 {
|
||||
compatible = "microchip,tcn75";
|
||||
reg = <0x48>;
|
||||
};
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
@ -87,12 +101,16 @@
|
||||
ð0 {
|
||||
status = "okay";
|
||||
|
||||
nvmem-cells = <&macaddr_lan>;
|
||||
nvmem-cell-names = "mac-address";
|
||||
phy-handle = <&phy0>;
|
||||
};
|
||||
|
||||
ð1 {
|
||||
status = "okay";
|
||||
|
||||
nvmem-cells = <&macaddr_wan>;
|
||||
nvmem-cell-names = "mac-address";
|
||||
phy-handle = <&phy4>;
|
||||
};
|
||||
|
||||
@ -109,9 +127,56 @@
|
||||
spi-max-frequency = <25000000>;
|
||||
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "ecoscentric,redboot-fis-partitions";
|
||||
|
||||
partition@0 {
|
||||
label = "RedBoot";
|
||||
reg = <0x000000 0x040000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@40000 {
|
||||
label = "loader";
|
||||
reg = <0x040000 0x020000>;
|
||||
};
|
||||
|
||||
partition@60000 {
|
||||
label = "firmware";
|
||||
reg = <0x060000 0xf80000>;
|
||||
compatible = "openwrt,uimage", "denx,uimage";
|
||||
openwrt,ih-magic = <IH_MAGIC_OKLI>;
|
||||
};
|
||||
|
||||
partition@fe0000 {
|
||||
label = "FIS directory";
|
||||
reg = <0xfe0000 0x00f000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@fef000 {
|
||||
label = "RedBoot config";
|
||||
reg = <0xfef000 0x001000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@ff0000 {
|
||||
label = "Atheros Board Data";
|
||||
reg = <0xff0000 0x10000>;
|
||||
read-only;
|
||||
compatible = "nvmem-cells";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
macaddr_wan: macaddr@1000 {
|
||||
reg = <0x1000 0x6>;
|
||||
};
|
||||
|
||||
macaddr_lan: macaddr@1006 {
|
||||
reg = <0x1006 0x6>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@ -4,6 +4,7 @@
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/mtd/partitions/uimage.h>
|
||||
|
||||
/ {
|
||||
aliases {
|
||||
@ -62,7 +63,39 @@
|
||||
spi-max-frequency = <25000000>;
|
||||
|
||||
partitions {
|
||||
compatible = "ecoscentric,redboot-fis-partitions";
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
label = "RedBoot";
|
||||
reg = <0x000000 0x030000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@30000 {
|
||||
label = "loader";
|
||||
reg = <0x030000 0x020000>;
|
||||
};
|
||||
|
||||
partition@50000 {
|
||||
label = "firmware";
|
||||
reg = <0x050000 0xfa0000>;
|
||||
compatible = "openwrt,uimage", "denx,uimage";
|
||||
openwrt,ih-magic = <IH_MAGIC_OKLI>;
|
||||
};
|
||||
|
||||
partition@ff0000 {
|
||||
label = "FIS directory";
|
||||
reg = <0xff0000 0x00f000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@fff000 {
|
||||
label = "RedBoot config";
|
||||
reg = <0xfff000 0x001000>;
|
||||
read-only;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
59
target/linux/ath79/dts/qca9563_tplink_eap225-outdoor-v3.dts
Normal file
59
target/linux/ath79/dts/qca9563_tplink_eap225-outdoor-v3.dts
Normal file
@ -0,0 +1,59 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
|
||||
#include "qca9563_tplink_eap2x5-1port.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "tplink,eap225-outdoor-v3", "qca,qca9563";
|
||||
model = "TP-Link EAP225-Outdoor v3";
|
||||
|
||||
aliases {
|
||||
led-boot = &led_status_green;
|
||||
led-failsafe = &led_status_amber;
|
||||
led-running = &led_status_green;
|
||||
led-upgrade = &led_status_amber;
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
led_status_green: status_green {
|
||||
label = "green:status";
|
||||
gpios = <&gpio 7 GPIO_ACTIVE_LOW>;
|
||||
default-state = "on";
|
||||
};
|
||||
|
||||
led_status_amber: status_amber {
|
||||
label = "amber:status";
|
||||
gpios = <&gpio 9 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&art {
|
||||
precalibration_ath10k: pre-calibration@5000 {
|
||||
reg = <0x5000 0x2f20>;
|
||||
};
|
||||
};
|
||||
|
||||
ð0 {
|
||||
phy-handle = <&phy6>;
|
||||
phy-mode = "sgmii";
|
||||
};
|
||||
|
||||
&mdio0 {
|
||||
phy6: ethernet-phy@6 {
|
||||
reg = <6>;
|
||||
};
|
||||
};
|
||||
|
||||
&pcie {
|
||||
wifi@0,0 {
|
||||
compatible = "qcom,ath10k";
|
||||
reg = <0 0 0 0 0>;
|
||||
|
||||
mac-address-increment = <1>;
|
||||
|
||||
nvmem-cells = <&macaddr_info_8>, <&precalibration_ath10k>;
|
||||
nvmem-cell-names = "mac-address", "pre-calibration";
|
||||
};
|
||||
};
|
||||
@ -76,6 +76,7 @@ ath79_setup_interfaces()
|
||||
tplink,cpe610-v2|\
|
||||
tplink,cpe710-v1|\
|
||||
tplink,eap225-outdoor-v1|\
|
||||
tplink,eap225-outdoor-v3|\
|
||||
tplink,eap225-v1|\
|
||||
tplink,eap225-v3|\
|
||||
tplink,eap245-v1|\
|
||||
@ -651,10 +652,6 @@ ath79_setup_macs()
|
||||
wan_mac=$(mtd_get_mac_ascii u-boot-env wanaddr)
|
||||
label_mac=$wan_mac
|
||||
;;
|
||||
jjplus,ja76pf2)
|
||||
wan_mac=$(fconfig -s -r -d $(find_mtd_part "RedBoot config") -n alias/ethaddr)
|
||||
lan_mac=$(macaddr_add "$wan_mac" 1)
|
||||
;;
|
||||
mercury,mw4530r-v1|\
|
||||
tplink,tl-wdr3600-v1|\
|
||||
tplink,tl-wdr4300-v1|\
|
||||
|
||||
@ -1,8 +1,11 @@
|
||||
. /lib/functions.sh
|
||||
|
||||
case "$(board_name)" in
|
||||
jjplus,ja76pf2|\
|
||||
meraki,mr12|\
|
||||
meraki,mr16)
|
||||
meraki,mr16|\
|
||||
ubnt,routerstation|\
|
||||
ubnt,routerstation-pro)
|
||||
uci set system.@system[0].compat_version="2.0"
|
||||
uci commit system
|
||||
;;
|
||||
|
||||
@ -8,35 +8,19 @@ REQUIRE_IMAGE_METADATA=1
|
||||
RAMFS_COPY_BIN='fw_printenv fw_setenv'
|
||||
RAMFS_COPY_DATA='/etc/fw_env.config /var/lock/fw_printenv.lock'
|
||||
|
||||
redboot_fis_do_upgrade() {
|
||||
local append
|
||||
local sysup_file="$1"
|
||||
local kern_part="$2"
|
||||
local magic=$(get_magic_word "$sysup_file")
|
||||
|
||||
if [ "$magic" = "4349" ]; then
|
||||
local kern_length=0x$(dd if="$sysup_file" bs=2 skip=1 count=4 2>/dev/null)
|
||||
|
||||
[ -f "$UPGRADE_BACKUP" ] && append="-j $UPGRADE_BACKUP"
|
||||
dd if="$sysup_file" bs=64k skip=1 2>/dev/null | \
|
||||
mtd -r $append -F$kern_part:$kern_length:0x80060000,rootfs write - $kern_part:rootfs
|
||||
|
||||
elif [ "$magic" = "7379" ]; then
|
||||
local board_dir=$(tar tf $sysup_file | grep -m 1 '^sysupgrade-.*/$')
|
||||
local kern_length=$(tar xf $sysup_file ${board_dir}kernel -O | wc -c)
|
||||
|
||||
[ -f "$UPGRADE_BACKUP" ] && append="-j $UPGRADE_BACKUP"
|
||||
tar xf $sysup_file ${board_dir}kernel ${board_dir}root -O | \
|
||||
mtd -r $append -F$kern_part:$kern_length:0x80060000,rootfs write - $kern_part:rootfs
|
||||
|
||||
else
|
||||
echo "Unknown image, aborting!"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
platform_check_image() {
|
||||
return 0
|
||||
local board=$(board_name)
|
||||
|
||||
case "$board" in
|
||||
jjplus,ja76pf2|\
|
||||
ubnt,routerstation|\
|
||||
ubnt,routerstation-pro)
|
||||
platform_check_image_redboot_fis "$1"
|
||||
;;
|
||||
*)
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
platform_do_upgrade() {
|
||||
@ -45,7 +29,7 @@ platform_do_upgrade() {
|
||||
case "$board" in
|
||||
adtran,bsap1800-v2|\
|
||||
adtran,bsap1840)
|
||||
redboot_fis_do_upgrade "$1" vmlinux_2
|
||||
platform_do_upgrade_redboot_fis "$1" vmlinux_2
|
||||
;;
|
||||
allnet,all-wap02860ac|\
|
||||
araknis,an-300-ap-i-n|\
|
||||
@ -66,7 +50,7 @@ platform_do_upgrade() {
|
||||
platform_do_upgrade_failsafe_datachk "$1"
|
||||
;;
|
||||
jjplus,ja76pf2)
|
||||
redboot_fis_do_upgrade "$1" linux
|
||||
platform_do_upgrade_redboot_fis "$1" linux
|
||||
;;
|
||||
openmesh,a40|\
|
||||
openmesh,a60|\
|
||||
@ -98,7 +82,7 @@ platform_do_upgrade() {
|
||||
;;
|
||||
ubnt,routerstation|\
|
||||
ubnt,routerstation-pro)
|
||||
redboot_fis_do_upgrade "$1" kernel
|
||||
platform_do_upgrade_redboot_fis "$1" kernel
|
||||
;;
|
||||
*)
|
||||
default_do_upgrade "$1"
|
||||
|
||||
@ -0,0 +1,31 @@
|
||||
platform_check_image_redboot_fis() {
|
||||
if [ "$(get_magic_word "$1")" != "7379" ]; then
|
||||
v "Unknown image format, aborting!"
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
platform_do_upgrade_redboot_fis() {
|
||||
local append
|
||||
local sysup_file="$1"
|
||||
local kern_part="$2"
|
||||
|
||||
if [ "$(get_magic_word "$sysup_file")" = "7379" ]; then
|
||||
local board_dir=$(tar tf $sysup_file | grep -m 1 '^sysupgrade-.*/$')
|
||||
|
||||
[ -f "$UPGRADE_BACKUP" ] && append="-j $UPGRADE_BACKUP"
|
||||
|
||||
if grep -q "mtd1.*loader" /proc/mtd; then
|
||||
tar xf $sysup_file ${board_dir}kernel ${board_dir}root -O | \
|
||||
mtd -r $append write - loader:firmware
|
||||
|
||||
else
|
||||
local kern_length=$(tar xf $sysup_file ${board_dir}kernel -O | wc -c)
|
||||
|
||||
tar xf $sysup_file ${board_dir}kernel ${board_dir}root -O | \
|
||||
mtd -r $append -F$kern_part:$kern_length:0x80060000,rootfs write - $kern_part:rootfs
|
||||
fi
|
||||
fi
|
||||
}
|
||||
@ -13,11 +13,11 @@ CONFIG_IP17XX_PHY=y
|
||||
CONFIG_LEDS_RESET=y
|
||||
CONFIG_MARVELL_PHY=y
|
||||
CONFIG_MICREL_PHY=y
|
||||
CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-3
|
||||
CONFIG_MTD_REDBOOT_PARTS=y
|
||||
CONFIG_MTD_SPLIT_EVA_FW=y
|
||||
CONFIG_PHY_AR7100_USB=y
|
||||
CONFIG_PHY_AR7200_USB=y
|
||||
CONFIG_REALTEK_PHY=y
|
||||
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
||||
CONFIG_RTL8366RB_PHY=y
|
||||
CONFIG_RTL8366S_PHY=y
|
||||
|
||||
@ -8,14 +8,6 @@ DEVICE_VARS += LOADER_FLASH_MAX LOADER_KERNEL_MAGIC
|
||||
DEVICE_VARS += NETGEAR_BOARD_ID NETGEAR_HW_ID
|
||||
DEVICE_VARS += RAS_BOARD RAS_ROOTFS_SIZE RAS_VERSION
|
||||
|
||||
define Build/combined-image
|
||||
sh $(TOPDIR)/scripts/combined-image.sh \
|
||||
"$(IMAGE_KERNEL)" \
|
||||
"$@" \
|
||||
"$@.new"
|
||||
@mv $@.new $@
|
||||
endef
|
||||
|
||||
define Build/loader-common
|
||||
rm -rf $@.src
|
||||
$(MAKE) -C lzma-loader \
|
||||
|
||||
@ -10,7 +10,7 @@ UBNT_REVISION := $(VERSION_DIST)-$(REVISION)
|
||||
define Build/mkubntimage
|
||||
-$(STAGING_DIR_HOST)/bin/mkfwimage -B $(UBNT_BOARD) \
|
||||
-v $(UBNT_TYPE).$(UBNT_CHIP).v6.0.0-$(VERSION_DIST)-$(REVISION) \
|
||||
-k $(IMAGE_KERNEL) -r $@ -o $@
|
||||
-k $(if $(1),$(1),$(IMAGE_KERNEL)) -r $@ -o $@
|
||||
endef
|
||||
|
||||
define Build/mkubntimage2
|
||||
|
||||
@ -401,6 +401,17 @@ define Device/tplink_eap225-outdoor-v1
|
||||
endef
|
||||
TARGET_DEVICES += tplink_eap225-outdoor-v1
|
||||
|
||||
define Device/tplink_eap225-outdoor-v3
|
||||
$(Device/tplink-eap2x5)
|
||||
SOC := qca9563
|
||||
IMAGE_SIZE := 13824k
|
||||
DEVICE_MODEL := EAP225-Outdoor
|
||||
DEVICE_VARIANT := v3
|
||||
DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca9888-ct
|
||||
TPLINK_BOARD_ID := EAP225-V3
|
||||
endef
|
||||
TARGET_DEVICES += tplink_eap225-outdoor-v3
|
||||
|
||||
define Device/tplink_eap225-v1
|
||||
$(Device/tplink-eap2x5)
|
||||
SOC := qca9563
|
||||
|
||||
@ -171,14 +171,24 @@ define Device/ubnt_routerstation_common
|
||||
kmod-usb2 fconfig
|
||||
DEVICE_VENDOR := Ubiquiti
|
||||
SOC := ar7161
|
||||
IMAGE_SIZE := 16128k
|
||||
LOADER_TYPE := bin
|
||||
LOADER_FLASH_OFFS := 0x50000
|
||||
COMPILE := loader-$(1).bin
|
||||
COMPILE/loader-$(1).bin := loader-okli-compile | lzma | pad-to 128k
|
||||
IMAGE_SIZE := 16000k
|
||||
IMAGES += factory.bin
|
||||
IMAGE/factory.bin := append-rootfs | pad-rootfs | mkubntimage | \
|
||||
check-size
|
||||
IMAGE/sysupgrade.bin := append-rootfs | pad-rootfs | combined-image | \
|
||||
check-size | append-metadata
|
||||
KERNEL := kernel-bin | append-dtb | lzma | pad-to $$(BLOCKSIZE)
|
||||
IMAGE/factory.bin := append-kernel | uImage lzma -M 0x4f4b4c49 | pad-to $$$$(BLOCKSIZE) | \
|
||||
append-rootfs | pad-rootfs | pad-to $$$$(BLOCKSIZE) | \
|
||||
mkubntimage $$$$(KDIR)/loader-$(1).bin | check-size
|
||||
IMAGE/sysupgrade.bin := append-kernel | uImage lzma -M 0x4f4b4c49 | pad-to $$$$(BLOCKSIZE) | \
|
||||
append-rootfs | pad-rootfs | pad-to $$$$(BLOCKSIZE) | check-size | \
|
||||
sysupgrade-tar kernel=$$$$(KDIR)/loader-$(1).bin rootfs=$$$$@ | append-metadata
|
||||
KERNEL := kernel-bin | append-dtb | lzma
|
||||
KERNEL_INITRAMFS := kernel-bin | append-dtb
|
||||
DEVICE_COMPAT_VERSION := 2.0
|
||||
DEVICE_COMPAT_MESSAGE := Partition design has changed compared to older versions (19.07 and 21.02) \
|
||||
due to kernel drivers restrictions. Upgrade via sysupgrade mechanism is one way operation. \
|
||||
Downgrading OpenWrt version will involve usage of TFTP recovery or bootloader command line interface.
|
||||
endef
|
||||
|
||||
define Device/ubnt_routerstation
|
||||
@ -188,7 +198,6 @@ define Device/ubnt_routerstation
|
||||
UBNT_TYPE := RSx
|
||||
UBNT_CHIP := ar7100
|
||||
DEVICE_PACKAGES += -swconfig
|
||||
SUPPORTED_DEVICES += routerstation
|
||||
endef
|
||||
TARGET_DEVICES += ubnt_routerstation
|
||||
|
||||
@ -198,7 +207,6 @@ define Device/ubnt_routerstation-pro
|
||||
UBNT_BOARD := RSPRO
|
||||
UBNT_TYPE := RSPRO
|
||||
UBNT_CHIP := ar7100pro
|
||||
SUPPORTED_DEVICES += routerstation-pro
|
||||
endef
|
||||
TARGET_DEVICES += ubnt_routerstation-pro
|
||||
|
||||
|
||||
@ -209,7 +209,7 @@ define Device/adtran_bsap1880
|
||||
IMAGE_SIZE := 11200k
|
||||
IMAGES += kernel.bin rootfs.bin
|
||||
IMAGE/kernel.bin := append-kernel
|
||||
IMAGE/rootfs.bin := append-rootfs | pad-rootfs
|
||||
IMAGE/rootfs.bin := append-rootfs | pad-rootfs | pad-to $$(BLOCKSIZE)
|
||||
IMAGE/sysupgrade.bin := append-rootfs | pad-rootfs | \
|
||||
check-size | sysupgrade-tar rootfs=$$$$@ | append-metadata
|
||||
endef
|
||||
@ -863,7 +863,8 @@ define Device/dlink_dap-2xxx
|
||||
IMAGE/factory.img := append-kernel | pad-offset 6144k 160 | \
|
||||
append-rootfs | wrgg-pad-rootfs | mkwrggimg | check-size
|
||||
IMAGE/sysupgrade.bin := append-kernel | mkwrggimg | \
|
||||
pad-to $$$$(BLOCKSIZE) | append-rootfs | check-size | append-metadata
|
||||
pad-to $$$$(BLOCKSIZE) | append-rootfs | wrgg-pad-rootfs | \
|
||||
check-size | append-metadata
|
||||
KERNEL := kernel-bin | append-dtb | relocate-kernel | lzma
|
||||
KERNEL_INITRAMFS := $$(KERNEL) | mkwrggimg
|
||||
endef
|
||||
@ -1465,16 +1466,25 @@ define Device/jjplus_ja76pf2
|
||||
SOC := ar7161
|
||||
DEVICE_VENDOR := jjPlus
|
||||
DEVICE_MODEL := JA76PF2
|
||||
DEVICE_PACKAGES += -kmod-ath9k -swconfig -wpad-basic-wolfssl -uboot-envtools fconfig
|
||||
IMAGES += kernel.bin rootfs.bin
|
||||
IMAGE/kernel.bin := append-kernel
|
||||
IMAGE/rootfs.bin := append-rootfs | pad-rootfs
|
||||
IMAGE/sysupgrade.bin := append-rootfs | pad-rootfs | combined-image | \
|
||||
check-size | append-metadata
|
||||
KERNEL := kernel-bin | append-dtb | lzma | pad-to $$(BLOCKSIZE)
|
||||
DEVICE_PACKAGES += -kmod-ath9k -swconfig -wpad-basic-wolfssl -uboot-envtools fconfig kmod-hwmon-lm75
|
||||
LOADER_TYPE := bin
|
||||
LOADER_FLASH_OFFS := 0x60000
|
||||
COMPILE := loader-$(1).bin
|
||||
COMPILE/loader-$(1).bin := loader-okli-compile | lzma | pad-to 128k
|
||||
ARTIFACTS := loader.bin
|
||||
ARTIFACT/loader.bin := append-loader-okli $(1)
|
||||
IMAGES += firmware.bin
|
||||
IMAGE/firmware.bin := append-kernel | uImage lzma -M 0x4f4b4c49 | pad-to $$$$(BLOCKSIZE) | \
|
||||
append-rootfs | pad-rootfs | pad-to $$$$(BLOCKSIZE) | check-size
|
||||
IMAGE/sysupgrade.bin := $$(IMAGE/firmware.bin) | \
|
||||
sysupgrade-tar kernel=$$$$(KDIR)/loader-$(1).bin rootfs=$$$$@ | append-metadata
|
||||
KERNEL := kernel-bin | append-dtb | lzma
|
||||
KERNEL_INITRAMFS := kernel-bin | append-dtb
|
||||
IMAGE_SIZE := 16000k
|
||||
SUPPORTED_DEVICES += ja76pf2
|
||||
IMAGE_SIZE := 15872k
|
||||
DEVICE_COMPAT_VERSION := 2.0
|
||||
DEVICE_COMPAT_MESSAGE := Partition design has changed compared to older versions (19.07 and 21.02) \
|
||||
due to kernel drivers restrictions. Upgrade via sysupgrade mechanism is one way operation. \
|
||||
Downgrading OpenWrt version will involve usage of bootloader command line interface.
|
||||
endef
|
||||
TARGET_DEVICES += jjplus_ja76pf2
|
||||
|
||||
|
||||
@ -10,7 +10,7 @@ Signed-off-by: Abhimanyu Vishwakarma <Abhimanyu.Vishwakarma@imgtec.com>
|
||||
|
||||
--- a/drivers/mtd/spi-nor/core.c
|
||||
+++ b/drivers/mtd/spi-nor/core.c
|
||||
@@ -3147,6 +3147,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
@@ -3156,6 +3156,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
struct device *dev = nor->dev;
|
||||
struct mtd_info *mtd = &nor->mtd;
|
||||
struct device_node *np = spi_nor_get_flash_node(nor);
|
||||
@ -18,7 +18,7 @@ Signed-off-by: Abhimanyu Vishwakarma <Abhimanyu.Vishwakarma@imgtec.com>
|
||||
int ret;
|
||||
int i;
|
||||
|
||||
@@ -3201,7 +3202,12 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
@@ -3210,7 +3211,12 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
||||
@ -1,44 +0,0 @@
|
||||
--- a/drivers/mtd/parsers/redboot.c
|
||||
+++ b/drivers/mtd/parsers/redboot.c
|
||||
@@ -90,12 +90,18 @@ static int parse_redboot_partitions(stru
|
||||
|
||||
parse_redboot_of(master);
|
||||
|
||||
+ buf = vmalloc(master->erasesize);
|
||||
+ if (!buf)
|
||||
+ return -ENOMEM;
|
||||
+
|
||||
+ restart:
|
||||
if ( directory < 0 ) {
|
||||
offset = master->size + directory * master->erasesize;
|
||||
while (mtd_block_isbad(master, offset)) {
|
||||
if (!offset) {
|
||||
nogood:
|
||||
printk(KERN_NOTICE "Failed to find a non-bad block to check for RedBoot partition table\n");
|
||||
+ vfree(buf);
|
||||
return -EIO;
|
||||
}
|
||||
offset -= master->erasesize;
|
||||
@@ -108,10 +114,6 @@ static int parse_redboot_partitions(stru
|
||||
goto nogood;
|
||||
}
|
||||
}
|
||||
- buf = vmalloc(master->erasesize);
|
||||
-
|
||||
- if (!buf)
|
||||
- return -ENOMEM;
|
||||
|
||||
printk(KERN_NOTICE "Searching for RedBoot partition table in %s at offset 0x%lx\n",
|
||||
master->name, offset);
|
||||
@@ -184,6 +186,11 @@ static int parse_redboot_partitions(stru
|
||||
}
|
||||
if (i == numslots) {
|
||||
/* Didn't find it */
|
||||
+ if (offset + master->erasesize < master->size) {
|
||||
+ /* not at the end of the flash yet, maybe next block :) */
|
||||
+ directory++;
|
||||
+ goto restart;
|
||||
+ }
|
||||
printk(KERN_NOTICE "No RedBoot partition table detected in %s\n",
|
||||
master->name);
|
||||
ret = 0;
|
||||
@ -706,7 +706,7 @@
|
||||
EXPORT_SYMBOL(xfrm_parse_spi);
|
||||
--- a/net/ipv4/tcp_input.c
|
||||
+++ b/net/ipv4/tcp_input.c
|
||||
@@ -4084,14 +4084,16 @@ static bool tcp_parse_aligned_timestamp(
|
||||
@@ -4087,14 +4087,16 @@ static bool tcp_parse_aligned_timestamp(
|
||||
{
|
||||
const __be32 *ptr = (const __be32 *)(th + 1);
|
||||
|
||||
|
||||
@ -10,7 +10,7 @@ Signed-off-by: Abhimanyu Vishwakarma <Abhimanyu.Vishwakarma@imgtec.com>
|
||||
|
||||
--- a/drivers/mtd/spi-nor/core.c
|
||||
+++ b/drivers/mtd/spi-nor/core.c
|
||||
@@ -3101,6 +3101,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
@@ -3110,6 +3110,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
struct device *dev = nor->dev;
|
||||
struct mtd_info *mtd = &nor->mtd;
|
||||
struct device_node *np = spi_nor_get_flash_node(nor);
|
||||
@ -18,7 +18,7 @@ Signed-off-by: Abhimanyu Vishwakarma <Abhimanyu.Vishwakarma@imgtec.com>
|
||||
int ret;
|
||||
int i;
|
||||
|
||||
@@ -3155,7 +3156,12 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
@@ -3164,7 +3165,12 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
||||
@ -1,45 +0,0 @@
|
||||
--- a/drivers/mtd/parsers/redboot.c
|
||||
+++ b/drivers/mtd/parsers/redboot.c
|
||||
@@ -90,12 +90,18 @@ static int parse_redboot_partitions(stru
|
||||
|
||||
parse_redboot_of(master);
|
||||
|
||||
+ buf = vmalloc(master->erasesize);
|
||||
+ if (!buf)
|
||||
+ return -ENOMEM;
|
||||
+
|
||||
+ restart:
|
||||
if (directory < 0) {
|
||||
offset = master->size + directory * master->erasesize;
|
||||
while (mtd_block_isbad(master, offset)) {
|
||||
if (!offset) {
|
||||
nogood:
|
||||
pr_notice("Failed to find a non-bad block to check for RedBoot partition table\n");
|
||||
+ vfree(buf);
|
||||
return -EIO;
|
||||
}
|
||||
offset -= master->erasesize;
|
||||
@@ -108,10 +114,6 @@ nogood:
|
||||
goto nogood;
|
||||
}
|
||||
}
|
||||
- buf = vmalloc(master->erasesize);
|
||||
-
|
||||
- if (!buf)
|
||||
- return -ENOMEM;
|
||||
|
||||
pr_notice("Searching for RedBoot partition table in %s at offset 0x%lx\n",
|
||||
master->name, offset);
|
||||
@@ -183,6 +185,12 @@ nogood:
|
||||
}
|
||||
if (i == numslots) {
|
||||
/* Didn't find it */
|
||||
+ if (offset + master->erasesize < master->size) {
|
||||
+ /* not at the end of the flash yet, maybe next block :) */
|
||||
+ directory++;
|
||||
+ goto restart;
|
||||
+ }
|
||||
+
|
||||
pr_notice("No RedBoot partition table detected in %s\n",
|
||||
master->name);
|
||||
ret = 0;
|
||||
@ -706,7 +706,7 @@
|
||||
EXPORT_SYMBOL(xfrm_parse_spi);
|
||||
--- a/net/ipv4/tcp_input.c
|
||||
+++ b/net/ipv4/tcp_input.c
|
||||
@@ -4130,14 +4130,16 @@ static bool tcp_parse_aligned_timestamp(
|
||||
@@ -4133,14 +4133,16 @@ static bool tcp_parse_aligned_timestamp(
|
||||
{
|
||||
const __be32 *ptr = (const __be32 *)(th + 1);
|
||||
|
||||
|
||||
@ -105,8 +105,10 @@ CONFIG_CPU_THUMB_CAPABLE=y
|
||||
CONFIG_CPU_TLB_V6=y
|
||||
CONFIG_CPU_V6K=y
|
||||
CONFIG_CRC16=y
|
||||
CONFIG_CRYPTO_BLAKE2S=y
|
||||
CONFIG_CRYPTO_CRC32=y
|
||||
CONFIG_CRYPTO_CRC32C=y
|
||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
||||
CONFIG_CRYPTO_RNG2=y
|
||||
CONFIG_DCACHE_WORD_ACCESS=y
|
||||
CONFIG_DEBUG_BUGVERBOSE=y
|
||||
|
||||
@ -123,6 +123,7 @@ CONFIG_CPU_THUMB_CAPABLE=y
|
||||
CONFIG_CPU_TLB_V7=y
|
||||
CONFIG_CPU_V7=y
|
||||
CONFIG_CRC16=y
|
||||
CONFIG_CRYPTO_BLAKE2S=y
|
||||
CONFIG_CRYPTO_CBC=y
|
||||
CONFIG_CRYPTO_CRC32=y
|
||||
CONFIG_CRYPTO_CRC32C=y
|
||||
@ -133,6 +134,7 @@ CONFIG_CRYPTO_DRBG_MENU=y
|
||||
CONFIG_CRYPTO_ECB=y
|
||||
CONFIG_CRYPTO_HMAC=y
|
||||
CONFIG_CRYPTO_JITTERENTROPY=y
|
||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
||||
CONFIG_CRYPTO_LIB_SHA256=y
|
||||
CONFIG_CRYPTO_RNG=y
|
||||
CONFIG_CRYPTO_RNG2=y
|
||||
|
||||
@ -126,6 +126,7 @@ CONFIG_CRC16=y
|
||||
CONFIG_CRYPTO_AES_ARM64=y
|
||||
CONFIG_CRYPTO_AES_ARM64_BS=y
|
||||
CONFIG_CRYPTO_AES_ARM64_NEON_BLK=y
|
||||
CONFIG_CRYPTO_BLAKE2S=y
|
||||
CONFIG_CRYPTO_CBC=y
|
||||
CONFIG_CRYPTO_CRC32=y
|
||||
CONFIG_CRYPTO_CRC32C=y
|
||||
@ -137,6 +138,7 @@ CONFIG_CRYPTO_DRBG_MENU=y
|
||||
CONFIG_CRYPTO_ECB=y
|
||||
CONFIG_CRYPTO_HMAC=y
|
||||
CONFIG_CRYPTO_JITTERENTROPY=y
|
||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
||||
CONFIG_CRYPTO_LIB_SHA256=y
|
||||
CONFIG_CRYPTO_RNG=y
|
||||
CONFIG_CRYPTO_RNG2=y
|
||||
|
||||
@ -130,6 +130,7 @@ CONFIG_CRC16=y
|
||||
CONFIG_CRYPTO_AES_ARM64=y
|
||||
CONFIG_CRYPTO_AES_ARM64_BS=y
|
||||
CONFIG_CRYPTO_AES_ARM64_NEON_BLK=y
|
||||
CONFIG_CRYPTO_BLAKE2S=y
|
||||
CONFIG_CRYPTO_CBC=y
|
||||
CONFIG_CRYPTO_CRC32=y
|
||||
CONFIG_CRYPTO_CRC32C=y
|
||||
@ -141,6 +142,7 @@ CONFIG_CRYPTO_DRBG_MENU=y
|
||||
CONFIG_CRYPTO_ECB=y
|
||||
CONFIG_CRYPTO_HMAC=y
|
||||
CONFIG_CRYPTO_JITTERENTROPY=y
|
||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
||||
CONFIG_CRYPTO_LIB_SHA256=y
|
||||
CONFIG_CRYPTO_RNG=y
|
||||
CONFIG_CRYPTO_RNG2=y
|
||||
|
||||
@ -1,58 +0,0 @@
|
||||
From fe19823f6053fe91a671fdbf92ab93b517a25219 Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.com>
|
||||
Date: Tue, 3 Nov 2020 11:49:53 +0000
|
||||
Subject: [PATCH] Revert "mailbox: avoid timer start from callback"
|
||||
|
||||
This reverts commit c7dacf5b0f32957b24ef29df1207dc2cd8307743.
|
||||
|
||||
The Pi 400 shutdown/poweroff mechanism relies on being able to set
|
||||
a GPIO on the expander in the pm_power_off handler, something that
|
||||
requires two mailbox calls - GET_GPIO_STATE and SET_GPIO_STATE. A
|
||||
recent kernel change introduces a reasonable possibility that the
|
||||
GET call doesn't completes, and bisecting led to a commit from
|
||||
October that changes the timer usage of the mailbox.
|
||||
|
||||
My theory is that there is a race condition in the new code that breaks
|
||||
the poll timer, but that it normally goes unnoticed because subsequent
|
||||
mailbox activity wakes it up again. The power-off mailbox calls happen
|
||||
at a time when other subsystems have been shut down, so if one of them
|
||||
fails then there is nothing to allow it to recover.
|
||||
|
||||
See: https://github.com/raspberrypi/linux/issues/3941
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
---
|
||||
drivers/mailbox/mailbox.c | 12 +++++-------
|
||||
1 file changed, 5 insertions(+), 7 deletions(-)
|
||||
|
||||
--- a/drivers/mailbox/mailbox.c
|
||||
+++ b/drivers/mailbox/mailbox.c
|
||||
@@ -82,12 +82,9 @@ static void msg_submit(struct mbox_chan
|
||||
exit:
|
||||
spin_unlock_irqrestore(&chan->lock, flags);
|
||||
|
||||
- /* kick start the timer immediately to avoid delays */
|
||||
- if (!err && (chan->txdone_method & TXDONE_BY_POLL)) {
|
||||
- /* but only if not already active */
|
||||
- if (!hrtimer_active(&chan->mbox->poll_hrt))
|
||||
- hrtimer_start(&chan->mbox->poll_hrt, 0, HRTIMER_MODE_REL);
|
||||
- }
|
||||
+ if (!err && (chan->txdone_method & TXDONE_BY_POLL))
|
||||
+ /* kick start the timer immediately to avoid delays */
|
||||
+ hrtimer_start(&chan->mbox->poll_hrt, 0, HRTIMER_MODE_REL);
|
||||
}
|
||||
|
||||
static void tx_tick(struct mbox_chan *chan, int r)
|
||||
@@ -125,10 +122,11 @@ static enum hrtimer_restart txdone_hrtim
|
||||
struct mbox_chan *chan = &mbox->chans[i];
|
||||
|
||||
if (chan->active_req && chan->cl) {
|
||||
- resched = true;
|
||||
txdone = chan->mbox->ops->last_tx_done(chan);
|
||||
if (txdone)
|
||||
tx_tick(chan, 0);
|
||||
+ else
|
||||
+ resched = true;
|
||||
}
|
||||
}
|
||||
|
||||
@ -25,7 +25,7 @@ Signed-off-by: Steve Glendinning <steve.glendinning@smsc.com>
|
||||
static int __must_check __smsc95xx_read_reg(struct usbnet *dev, u32 index,
|
||||
u32 *data, int in_pm)
|
||||
{
|
||||
@@ -1839,7 +1843,8 @@ static int smsc95xx_rx_fixup(struct usbn
|
||||
@@ -1838,7 +1842,8 @@ static int smsc95xx_rx_fixup(struct usbn
|
||||
if (dev->net->features & NETIF_F_RXCSUM)
|
||||
smsc95xx_rx_csum_offload(skb);
|
||||
skb_trim(skb, skb->len - 4); /* remove fcs */
|
||||
@ -35,7 +35,7 @@ Signed-off-by: Steve Glendinning <steve.glendinning@smsc.com>
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -1857,7 +1862,8 @@ static int smsc95xx_rx_fixup(struct usbn
|
||||
@@ -1856,7 +1861,8 @@ static int smsc95xx_rx_fixup(struct usbn
|
||||
if (dev->net->features & NETIF_F_RXCSUM)
|
||||
smsc95xx_rx_csum_offload(ax_skb);
|
||||
skb_trim(ax_skb, ax_skb->len - 4); /* remove fcs */
|
||||
|
||||
@ -20,7 +20,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
|
||||
--- a/drivers/pinctrl/bcm/pinctrl-bcm2835.c
|
||||
+++ b/drivers/pinctrl/bcm/pinctrl-bcm2835.c
|
||||
@@ -362,7 +362,7 @@ static const struct gpio_chip bcm2835_gp
|
||||
@@ -378,7 +378,7 @@ static const struct gpio_chip bcm2835_gp
|
||||
.get = bcm2835_gpio_get,
|
||||
.set = bcm2835_gpio_set,
|
||||
.set_config = gpiochip_generic_config,
|
||||
@ -28,8 +28,8 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
+ .base = 0,
|
||||
.ngpio = BCM2835_NUM_GPIOS,
|
||||
.can_sleep = false,
|
||||
};
|
||||
@@ -378,7 +378,7 @@ static const struct gpio_chip bcm2711_gp
|
||||
.of_gpio_ranges_fallback = bcm2835_of_gpio_ranges_fallback,
|
||||
@@ -395,7 +395,7 @@ static const struct gpio_chip bcm2711_gp
|
||||
.get = bcm2835_gpio_get,
|
||||
.set = bcm2835_gpio_set,
|
||||
.set_config = gpiochip_generic_config,
|
||||
@ -37,4 +37,4 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
+ .base = 0,
|
||||
.ngpio = BCM2711_NUM_GPIOS,
|
||||
.can_sleep = false,
|
||||
};
|
||||
.of_gpio_ranges_fallback = bcm2835_of_gpio_ranges_fallback,
|
||||
|
||||
@ -244,7 +244,7 @@ bcm2835-mmc: uninitialized_var is no more
|
||||
static inline int mmc_blk_part_switch(struct mmc_card *card,
|
||||
unsigned int part_type);
|
||||
static void mmc_blk_rw_rq_prep(struct mmc_queue_req *mqrq,
|
||||
@@ -2924,6 +2931,8 @@ static int mmc_blk_probe(struct mmc_card
|
||||
@@ -2923,6 +2930,8 @@ static int mmc_blk_probe(struct mmc_card
|
||||
{
|
||||
struct mmc_blk_data *md;
|
||||
int ret = 0;
|
||||
@ -253,7 +253,7 @@ bcm2835-mmc: uninitialized_var is no more
|
||||
|
||||
/*
|
||||
* Check that the card supports the command class(es) we need.
|
||||
@@ -2931,7 +2940,16 @@ static int mmc_blk_probe(struct mmc_card
|
||||
@@ -2930,7 +2939,16 @@ static int mmc_blk_probe(struct mmc_card
|
||||
if (!(card->csd.cmdclass & CCC_BLOCK_READ))
|
||||
return -ENODEV;
|
||||
|
||||
@ -271,7 +271,7 @@ bcm2835-mmc: uninitialized_var is no more
|
||||
|
||||
card->complete_wq = alloc_workqueue("mmc_complete",
|
||||
WQ_MEM_RECLAIM | WQ_HIGHPRI, 0);
|
||||
@@ -2946,6 +2964,17 @@ static int mmc_blk_probe(struct mmc_card
|
||||
@@ -2945,6 +2963,17 @@ static int mmc_blk_probe(struct mmc_card
|
||||
goto out_free;
|
||||
}
|
||||
|
||||
|
||||
@ -14175,7 +14175,7 @@ Signed-off-by: Joerg Schambacher <joerg@hifiberry.com>
|
||||
config SND_SOC_MADERA
|
||||
tristate
|
||||
default y if SND_SOC_CS47L15=y
|
||||
@@ -1189,6 +1200,10 @@ config SND_SOC_RT5616
|
||||
@@ -1187,6 +1198,10 @@ config SND_SOC_RT5616
|
||||
tristate "Realtek RT5616 CODEC"
|
||||
depends on I2C
|
||||
|
||||
@ -14186,7 +14186,7 @@ Signed-off-by: Joerg Schambacher <joerg@hifiberry.com>
|
||||
config SND_SOC_RT5631
|
||||
tristate "Realtek ALC5631/RT5631 CODEC"
|
||||
depends on I2C
|
||||
@@ -1439,6 +1454,9 @@ config SND_SOC_TFA9879
|
||||
@@ -1437,6 +1452,9 @@ config SND_SOC_TFA9879
|
||||
tristate "NXP Semiconductors TFA9879 amplifier"
|
||||
depends on I2C
|
||||
|
||||
@ -14196,7 +14196,7 @@ Signed-off-by: Joerg Schambacher <joerg@hifiberry.com>
|
||||
config SND_SOC_TFA989X
|
||||
tristate "NXP/Goodix TFA989X (TFA1) amplifiers"
|
||||
depends on I2C
|
||||
@@ -1945,4 +1963,8 @@ config SND_SOC_LPASS_TX_MACRO
|
||||
@@ -1943,4 +1961,8 @@ config SND_SOC_LPASS_TX_MACRO
|
||||
select REGMAP_MMIO
|
||||
tristate "Qualcomm TX Macro in LPASS(Low Power Audio SubSystem)"
|
||||
|
||||
|
||||
@ -81,7 +81,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
extern int usb_driver_set_configuration(struct usb_device *udev, int config);
|
||||
--- a/include/linux/usb/hcd.h
|
||||
+++ b/include/linux/usb/hcd.h
|
||||
@@ -382,6 +382,11 @@ struct hc_driver {
|
||||
@@ -384,6 +384,11 @@ struct hc_driver {
|
||||
* or bandwidth constraints.
|
||||
*/
|
||||
void (*reset_bandwidth)(struct usb_hcd *, struct usb_device *);
|
||||
@ -93,7 +93,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
/* Returns the hardware-chosen device address */
|
||||
int (*address_device)(struct usb_hcd *, struct usb_device *udev);
|
||||
/* prepares the hardware to send commands to the device */
|
||||
@@ -446,6 +451,8 @@ extern void usb_hcd_unmap_urb_setup_for_
|
||||
@@ -448,6 +453,8 @@ extern void usb_hcd_unmap_urb_setup_for_
|
||||
extern void usb_hcd_unmap_urb_for_dma(struct usb_hcd *, struct urb *);
|
||||
extern void usb_hcd_flush_endpoint(struct usb_device *udev,
|
||||
struct usb_host_endpoint *ep);
|
||||
|
||||
@ -14,7 +14,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/drivers/pinctrl/bcm/pinctrl-bcm2835.c
|
||||
+++ b/drivers/pinctrl/bcm/pinctrl-bcm2835.c
|
||||
@@ -1321,7 +1321,7 @@ static int bcm2835_pinctrl_probe(struct
|
||||
@@ -1339,7 +1339,7 @@ static int bcm2835_pinctrl_probe(struct
|
||||
girq->default_type = IRQ_TYPE_NONE;
|
||||
girq->handler = handle_level_irq;
|
||||
|
||||
|
||||
@ -26,7 +26,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
|
||||
--- a/drivers/of/overlay.c
|
||||
+++ b/drivers/of/overlay.c
|
||||
@@ -245,6 +245,8 @@ static struct property *dup_and_fixup_sy
|
||||
@@ -243,6 +243,8 @@ static struct property *dup_and_fixup_sy
|
||||
if (!target_path)
|
||||
return NULL;
|
||||
target_path_len = strlen(target_path);
|
||||
|
||||
@ -1,24 +0,0 @@
|
||||
From d9f70317612c5b3b558fd4b52c57e52832d34d52 Mon Sep 17 00:00:00 2001
|
||||
From: Dom Cobley <popcornmix@gmail.com>
|
||||
Date: Thu, 8 Jul 2021 13:48:11 +0100
|
||||
Subject: [PATCH] bcm2711_thermal: Don't clamp temperature at zero
|
||||
|
||||
The temperature sensor is valid below zero and the linux framework is happy with it.
|
||||
|
||||
See: https://www.raspberrypi.org/forums/viewtopic.php?f=98&t=315382
|
||||
Signed-off-by: Dom Cobley <popcornmix@gmail.com>
|
||||
---
|
||||
drivers/thermal/broadcom/bcm2711_thermal.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/thermal/broadcom/bcm2711_thermal.c
|
||||
+++ b/drivers/thermal/broadcom/bcm2711_thermal.c
|
||||
@@ -52,7 +52,7 @@ static int bcm2711_get_temp(void *data,
|
||||
/* Convert a HW code to a temperature reading (millidegree celsius) */
|
||||
t = slope * val + offset;
|
||||
|
||||
- *temp = t < 0 ? 0 : t;
|
||||
+ *temp = t;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -157,7 +157,7 @@ Signed-off-by: Joerg Quinten <aBUGSworstnightmare@gmail.com>
|
||||
static const struct drm_display_mode innolux_at070tn92_mode = {
|
||||
.clock = 33333,
|
||||
.hdisplay = 800,
|
||||
@@ -4659,6 +4691,9 @@ static const struct of_device_id platfor
|
||||
@@ -4660,6 +4692,9 @@ static const struct of_device_id platfor
|
||||
.compatible = "innolux,at043tn24",
|
||||
.data = &innolux_at043tn24,
|
||||
}, {
|
||||
|
||||
@ -115,7 +115,7 @@ Link: https://lore.kernel.org/r/20211215091739.135042-4-maxime@cerno.tech
|
||||
|
||||
--- a/drivers/gpu/drm/vc4/vc4_regs.h
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_regs.h
|
||||
@@ -975,7 +975,10 @@ enum hvs_pixel_format {
|
||||
@@ -983,7 +983,10 @@ enum hvs_pixel_format {
|
||||
#define SCALER_CSC0_COEF_CR_OFS_SHIFT 0
|
||||
#define SCALER_CSC0_ITR_R_601_5 0x00f00000
|
||||
#define SCALER_CSC0_ITR_R_709_3 0x00f00000
|
||||
@ -126,7 +126,7 @@ Link: https://lore.kernel.org/r/20211215091739.135042-4-maxime@cerno.tech
|
||||
|
||||
/* S2.8 contribution of Cb to Green */
|
||||
#define SCALER_CSC1_COEF_CB_GRN_MASK VC4_MASK(31, 22)
|
||||
@@ -990,8 +993,11 @@ enum hvs_pixel_format {
|
||||
@@ -998,8 +1001,11 @@ enum hvs_pixel_format {
|
||||
#define SCALER_CSC1_COEF_CR_BLU_MASK VC4_MASK(1, 0)
|
||||
#define SCALER_CSC1_COEF_CR_BLU_SHIFT 0
|
||||
#define SCALER_CSC1_ITR_R_601_5 0xe73304a8
|
||||
@ -140,7 +140,7 @@ Link: https://lore.kernel.org/r/20211215091739.135042-4-maxime@cerno.tech
|
||||
|
||||
/* S2.8 contribution of Cb to Red */
|
||||
#define SCALER_CSC2_COEF_CB_RED_MASK VC4_MASK(29, 20)
|
||||
@@ -1002,9 +1008,12 @@ enum hvs_pixel_format {
|
||||
@@ -1010,9 +1016,12 @@ enum hvs_pixel_format {
|
||||
/* S2.8 contribution of Cb to Blue */
|
||||
#define SCALER_CSC2_COEF_CB_BLU_MASK VC4_MASK(19, 10)
|
||||
#define SCALER_CSC2_COEF_CB_BLU_SHIFT 10
|
||||
|
||||
@ -59,7 +59,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
/* The filter kernel is composed of dwords each containing 3 9-bit
|
||||
* signed integers packed next to each other.
|
||||
*/
|
||||
@@ -689,6 +728,8 @@ static int vc4_hvs_bind(struct device *d
|
||||
@@ -728,6 +767,8 @@ static int vc4_hvs_bind(struct device *d
|
||||
vc4_debugfs_add_regset32(drm, "hvs_regs", &hvs->regset);
|
||||
vc4_debugfs_add_file(drm, "hvs_underrun", vc4_hvs_debugfs_underrun,
|
||||
NULL);
|
||||
|
||||
@ -16,7 +16,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
|
||||
--- a/sound/usb/quirks.c
|
||||
+++ b/sound/usb/quirks.c
|
||||
@@ -1902,6 +1902,8 @@ static const struct usb_audio_quirk_flag
|
||||
@@ -1908,6 +1908,8 @@ static const struct usb_audio_quirk_flag
|
||||
QUIRK_FLAG_ALIGN_TRANSFER),
|
||||
DEVICE_FLG(0x1224, 0x2a25, /* Jieli Technology USB PHY 2.0 */
|
||||
QUIRK_FLAG_GET_SAMPLE_RATE),
|
||||
|
||||
@ -15,7 +15,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
|
||||
--- a/drivers/gpu/drm/panel/panel-simple.c
|
||||
+++ b/drivers/gpu/drm/panel/panel-simple.c
|
||||
@@ -3758,6 +3758,31 @@ static const struct panel_desc qishenglo
|
||||
@@ -3759,6 +3759,31 @@ static const struct panel_desc qishenglo
|
||||
.connector_type = DRM_MODE_CONNECTOR_DPI,
|
||||
};
|
||||
|
||||
@ -47,7 +47,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
static const struct display_timing rocktech_rk070er9427_timing = {
|
||||
.pixelclock = { 26400000, 33300000, 46800000 },
|
||||
.hactive = { 800, 800, 800 },
|
||||
@@ -4838,6 +4863,9 @@ static const struct of_device_id platfor
|
||||
@@ -4839,6 +4864,9 @@ static const struct of_device_id platfor
|
||||
.compatible = "qishenglong,gopher2b-lcd",
|
||||
.data = &qishenglong_gopher2b_lcd,
|
||||
}, {
|
||||
|
||||
@ -126,8 +126,8 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
|
||||
--- a/drivers/gpu/drm/vc4/vc4_hvs.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_hvs.c
|
||||
@@ -236,6 +236,80 @@ static void vc4_hvs_update_gamma_lut(str
|
||||
vc4_hvs_lut_load(crtc);
|
||||
@@ -259,6 +259,80 @@ u8 vc4_hvs_get_fifo_frame_count(struct d
|
||||
return field;
|
||||
}
|
||||
|
||||
+static void vc5_hvs_write_gamma_entry(struct vc4_dev *vc4,
|
||||
@ -207,7 +207,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
int vc4_hvs_get_fifo_from_output(struct drm_device *dev, unsigned int output)
|
||||
{
|
||||
struct vc4_dev *vc4 = to_vc4_dev(dev);
|
||||
@@ -329,14 +403,16 @@ static int vc4_hvs_init_channel(struct v
|
||||
@@ -352,14 +426,16 @@ static int vc4_hvs_init_channel(struct v
|
||||
dispbkgndx &= ~SCALER_DISPBKGND_INTERLACE;
|
||||
|
||||
HVS_WRITE(SCALER_DISPBKGNDX(chan), dispbkgndx |
|
||||
@ -227,7 +227,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -534,7 +610,10 @@ void vc4_hvs_atomic_flush(struct drm_crt
|
||||
@@ -557,7 +633,10 @@ void vc4_hvs_atomic_flush(struct drm_crt
|
||||
u32 dispbkgndx = HVS_READ(SCALER_DISPBKGNDX(vc4_state->assigned_channel));
|
||||
|
||||
if (crtc->state->gamma_lut) {
|
||||
@ -241,7 +241,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
/* Unsetting DISPBKGND_GAMMA skips the gamma lut step
|
||||
--- a/drivers/gpu/drm/vc4/vc4_regs.h
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_regs.h
|
||||
@@ -491,6 +491,28 @@
|
||||
@@ -499,6 +499,28 @@
|
||||
#define SCALER_DLIST_START 0x00002000
|
||||
#define SCALER_DLIST_SIZE 0x00004000
|
||||
|
||||
|
||||
@ -102,7 +102,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
/* The filter kernel is composed of dwords each containing 3 9-bit
|
||||
* signed integers packed next to each other.
|
||||
*/
|
||||
@@ -809,6 +887,9 @@ static int vc4_hvs_bind(struct device *d
|
||||
@@ -848,6 +926,9 @@ static int vc4_hvs_bind(struct device *d
|
||||
NULL);
|
||||
vc4_debugfs_add_file(drm, "hvs_dlists", vc4_hvs_debugfs_dlist,
|
||||
NULL);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user