From 06b8f98e25a421a7e74a330c19235f31e52f1bb7 Mon Sep 17 00:00:00 2001 From: lean Date: Thu, 9 Dec 2021 17:23:11 +0800 Subject: [PATCH] ipq60xx: add GL.iNet AX1800 init support --- .../ipq60xx/base-files/etc/board.d/02_network | 3 + .../base-files/lib/upgrade/platform.sh | 1 + target/linux/ipq60xx/config-5.10 | 1 + .../boot/dts/qcom/qcom-ipq6018-gl-ax1800.dts | 523 ++++++++++++++++++ target/linux/ipq60xx/image/generic.mk | 31 +- .../600-qca-nss-ecm-support-CORE.patch | 52 +- ...ter-export-udp_get_timeouts-function.patch | 38 -- .../900-arm64-dts-add-OpenWrt-DTS-files.patch | 3 +- 8 files changed, 569 insertions(+), 83 deletions(-) create mode 100644 target/linux/ipq60xx/files/arch/arm64/boot/dts/qcom/qcom-ipq6018-gl-ax1800.dts delete mode 100644 target/linux/ipq60xx/patches-5.10/601-netfilter-export-udp_get_timeouts-function.patch diff --git a/target/linux/ipq60xx/base-files/etc/board.d/02_network b/target/linux/ipq60xx/base-files/etc/board.d/02_network index abfc5767b..d9c0008f4 100644 --- a/target/linux/ipq60xx/base-files/etc/board.d/02_network +++ b/target/linux/ipq60xx/base-files/etc/board.d/02_network @@ -11,6 +11,9 @@ ipq60xx_setup_interfaces() local board="$1" case "$board" in + *"GL-AX1800"*) + ucidef_set_interfaces_lan_wan "eth1 eth2 eth3 eth4" "eth0" + ;; wf,hr6001) ucidef_set_interfaces_lan_wan "eth0 eth1 eth2 eth3" "eth4" ;; diff --git a/target/linux/ipq60xx/base-files/lib/upgrade/platform.sh b/target/linux/ipq60xx/base-files/lib/upgrade/platform.sh index d2db79ef3..69da4f127 100644 --- a/target/linux/ipq60xx/base-files/lib/upgrade/platform.sh +++ b/target/linux/ipq60xx/base-files/lib/upgrade/platform.sh @@ -10,6 +10,7 @@ platform_check_image() { platform_do_upgrade() { case "$(board_name)" in + *GL-AX1800* |\ wf,hr6001) CI_UBIPART="rootfs" nand_do_upgrade "$1" diff --git a/target/linux/ipq60xx/config-5.10 b/target/linux/ipq60xx/config-5.10 index 3b9a1ad9c..f3745359d 100644 --- a/target/linux/ipq60xx/config-5.10 +++ b/target/linux/ipq60xx/config-5.10 @@ -507,3 +507,4 @@ CONFIG_ZLIB_INFLATE=y CONFIG_ZONE_DMA32=y CONFIG_ZSTD_COMPRESS=y CONFIG_ZSTD_DECOMPRESS=y +CONFIG_IPQ_MEM_PROFILE=0 \ No newline at end of file diff --git a/target/linux/ipq60xx/files/arch/arm64/boot/dts/qcom/qcom-ipq6018-gl-ax1800.dts b/target/linux/ipq60xx/files/arch/arm64/boot/dts/qcom/qcom-ipq6018-gl-ax1800.dts new file mode 100644 index 000000000..8c5406604 --- /dev/null +++ b/target/linux/ipq60xx/files/arch/arm64/boot/dts/qcom/qcom-ipq6018-gl-ax1800.dts @@ -0,0 +1,523 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) +/* + * IPQ6018 CP01 board device tree source + * + * Copyright (c) 2019-2021 The Linux Foundation. All rights reserved. + */ + +/dts-v1/; + +#include "ipq6018.dtsi" +#include "ipq6018-cp-cpu.dtsi" + +/ { + model = "GL-AX1800 IPQ6018/AP-CP03-C1"; + compatible = "qcom,ipq6018-cp03", "qcom,ipq6018"; + + aliases { + led-boot = &power; + led-failsafe = &power; + led-running = &power; + led-upgrade = &power; + serial0 = &blsp1_uart3; + /* + * Aliases as required by u-boot + * to patch MAC addresses + */ + ethernet0 = "/soc/dp1"; + ethernet1 = "/soc/dp2"; + ethernet2 = "/soc/dp3"; + ethernet3 = "/soc/dp4"; + ethernet4 = "/soc/dp5"; + }; + + chosen { + stdout-path = "serial0:115200n8"; + bootargs-append = " ubi.mtd=rootfs root=/dev/ubiblock0_1 swiotlb=1"; + }; +}; + +&blsp1_uart3 { + pinctrl-0 = <&serial_3_pins>; + pinctrl-names = "default"; + status = "ok"; +}; + +&spi_0 { + cs-select = <0>; + status = "ok"; + + m25p80@0 { + #address-cells = <1>; + #size-cells = <1>; + reg = <0>; + compatible = "n25q128a11"; + spi-max-frequency = <50000000>; + + SBL1@0 { + label = "0:SBL1"; + reg = <0x0 0xc0000>; + read-only; + }; + + MIBIB@c0000 { + label = "0:MIBIB"; + reg = <0xc0000 0x10000>; + }; + + BOOTCONFIG@d0000 { + label = "0:BOOTCONFIG"; + reg = <0xd0000 0x20000>; + read-only; + }; + + BOOTCONFIG1@f0000 { + label = "0:BOOTCONFIG1"; + reg = <0xf0000 0x20000>; + read-only; + }; + + QSEE@110000 { + label = "0:QSEE"; + reg = <0x110000 0x1a0000>; + read-only; + }; + + QSEE_1@2b0000 { + label = "0:QSEE_1"; + reg = <0x2b0000 0x1a0000>; + read-only; + }; + + DEVCFG@450000 { + label = "0:DEVCFG"; + reg = <0x450000 0x10000>; + read-only; + }; + + DEVCFG_1@460000 { + label = "0:DEVCFG_1"; + reg = <0x460000 0x10000>; + read-only; + }; + + RPM@470000 { + label = "0:RPM"; + reg = <0x4700000 0x40000>; + }; + + RPM_1@4b0000 { + label = "0:RPM_1"; + reg = <0x4b0000 0x40000>; + read-only; + }; + + CDT@4f0000 { + label = "0:CDT"; + reg = <0x4f0000 0x10000>; + }; + + CDT_1@500000 { + label = "0:CDT_1"; + reg = <0x500000 0x10000>; + }; + + APPSBLENV@510000 { + label = "0:APPSBLENV"; + reg = <0x510000 0x10000>; + }; + + APPSBL@520000 { + label = "0:APPSBL"; + reg = <0x520000 0xa0000>; + }; + + APPSBL_1@5c0000 { + label = "0:APPSBL_1"; + reg = <0x5c0000 0xa0000>; + }; + + ART: ART@660000 { + label = "0:ART"; + reg = <0x660000 0x40000>; + }; + }; +}; + +&tlmm { + spi_0_pins: spi-0-pins { + pins = "gpio38", "gpio39", "gpio40", "gpio41"; + function = "blsp0_spi"; + drive-strength = <8>; + bias-pull-down; + }; + + sd_pins: sd-pinmux { + pins = "gpio62"; + function = "sd_card"; + drive-strength = <8>; + bias-pull-up; + }; + + i2c_1_pins: i2c_1_pins { + mux { + pins = "gpio42", "gpio43"; + function = "blsp2_i2c"; + drive-strength = <8>; + bias-pull-down; + }; + }; + + mdio_pins: mdio_pinmux { + mux_0 { + pins = "gpio64"; + function = "mdc"; + drive-strength = <8>; + bias-pull-up; + }; + mux_1 { + pins = "gpio65"; + function = "mdio"; + drive-strength = <8>; + bias-pull-up; + }; + mux_2 { + pins = "gpio75"; + function = "gpio"; + bias-pull-up; + }; + mux_3 { + pins = "gpio77"; + function = "gpio"; + bias-pull-up; + }; + }; + + button_pins: button_pins { + reset_button { + pins = "gpio19"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + }; + }; + + led_pins: leds_pins { + + wlan5g { + pins = "gpio35"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + + wlan2g { + pins = "gpio37"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + + lan1 { + pins = "gpio51"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + + lan2 { + pins = "gpio24"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + + lan3 { + pins = "gpio53"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + + lan4 { + pins = "gpio25"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + + wan { + pins = "gpio9"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + }; +}; + +&soc { + mdio: mdio@90000 { + pinctrl-0 = <&mdio_pins>; + pinctrl-names = "default"; + phy-reset-gpio = <&tlmm 75 0 &tlmm 77 1>; + status = "ok"; + phy0: ethernet-phy@0 { + reg = <0>; + }; + phy1: ethernet-phy@1 { + reg = <1>; + }; + phy2: ethernet-phy@2 { + reg = <2>; + }; + phy3: ethernet-phy@3 { + reg = <3>; + }; + phy4: ethernet-phy@4 { + reg = <0x18>; + }; + }; + + dp1 { + device_type = "network"; + compatible = "qcom,nss-dp"; + qcom,id = <1>; + reg = <0x3a001000 0x200>; + qcom,mactype = <0>; + local-mac-address = [000000000000]; + qcom,link-poll = <1>; + qcom,phy-mdio-addr = <0>; + phy-mode = "sgmii"; + }; + + dp2 { + device_type = "network"; + compatible = "qcom,nss-dp"; + qcom,id = <2>; + reg = <0x3a001200 0x200>; + qcom,mactype = <0>; + local-mac-address = [000000000000]; + qcom,link-poll = <1>; + qcom,phy-mdio-addr = <1>; + phy-mode = "sgmii"; + }; + + dp3 { + device_type = "network"; + compatible = "qcom,nss-dp"; + qcom,id = <3>; + reg = <0x3a001400 0x200>; + qcom,mactype = <0>; + local-mac-address = [000000000000]; + qcom,link-poll = <1>; + qcom,phy-mdio-addr = <2>; + phy-mode = "sgmii"; + }; + + dp4 { + device_type = "network"; + compatible = "qcom,nss-dp"; + qcom,id = <4>; + reg = <0x3a001600 0x200>; + qcom,mactype = <0>; + local-mac-address = [000000000000]; + qcom,link-poll = <1>; + qcom,phy-mdio-addr = <3>; + phy-mode = "sgmii"; + }; + + dp5 { + device_type = "network"; + compatible = "qcom,nss-dp"; + qcom,id = <5>; + reg = <0x3a001800 0x200>; + qcom,mactype = <0>; + local-mac-address = [000000000000]; + qcom,link-poll = <1>; + qcom,phy-mdio-addr = <24>; + phy-mode = "sgmii"; + }; + + ess-switch@3a000000 { + switch_cpu_bmp = <0x1>; /* cpu port bitmap */ + switch_lan_bmp = <0x1e>; /* lan port bitmap */ + switch_wan_bmp = <0x20>; /* wan port bitmap */ + switch_inner_bmp = <0xc0>; /*inner port bitmap*/ + switch_mac_mode = <0x0>; /* mac mode for uniphy instance0*/ + switch_mac_mode1 = <0xf>; /* mac mode for uniphy instance1*/ + switch_mac_mode2 = <0xff>; /* mac mode for uniphy instance2*/ + qcom,port_phyinfo { + port@0 { + port_id = <1>; + phy_address = <0>; + }; + port@1 { + port_id = <2>; + phy_address = <1>; + }; + port@2 { + port_id = <3>; + phy_address = <2>; + }; + port@3 { + port_id = <4>; + phy_address = <3>; + }; + port@4 { + port_id = <5>; + phy_address = <0x18>; + port_mac_sel = "QGMAC_PORT"; + }; + }; + }; + + nss-macsec0 { + compatible = "qcom,nss-macsec"; + phy_addr = <0x18>; + phy_access_mode = <0>; + mdiobus = <&mdio>; + }; + + sd_pwrseq: sd-pwrseq { + compatible = "mmc-pwrseq-ipq"; + reset-gpios = <&tlmm 66 GPIO_ACTIVE_HIGH>; + }; + + gpio_keys { + compatible = "gpio-keys"; + pinctrl-0 = <&button_pins>; + pinctrl-names = "default"; + + button@1 { + label = "wps"; + linux,code = ; + gpios = <&tlmm 19 GPIO_ACTIVE_LOW>; + linux,input-type = <1>; + debounce-interval = <60>; + }; + }; + + leds { + compatible = "gpio-leds"; + pinctrl-0 = <&led_pins>; + pinctrl-names = "default"; + + led@35 { + label = "green:wlan5g"; + gpios = <&tlmm 35 GPIO_ACTIVE_HIGH>; + }; + + power: led@37 { + label = "green:wlan2g"; + gpios = <&tlmm 37 GPIO_ACTIVE_HIGH>; + }; + + led@51 { + label = "green:lan1"; + gpios = <&tlmm 51 GPIO_ACTIVE_HIGH>; + }; + + led@24 { + label = "green:lan2"; + gpios = <&tlmm 24 GPIO_ACTIVE_HIGH>; + }; + + led@53 { + label = "green:lan3"; + gpios = <&tlmm 53 GPIO_ACTIVE_HIGH>; + }; + + led@25 { + label = "green:lan4"; + gpios = <&tlmm 25 GPIO_ACTIVE_HIGH>; + }; + + led@31 { + label = "green:wan"; + gpios = <&tlmm 31 GPIO_ACTIVE_HIGH>; + }; + }; +}; + +&qpic_bam { + status = "ok"; +}; + +&qpic_nand { + status = "ok"; + + nand@0 { + reg = <0>; + #address-cells = <1>; + #size-cells = <1>; + + nand-ecc-strength = <4>; + nand-ecc-step-size = <512>; + nand-bus-width = <8>; + + partition0@ { + label = "rootfs"; + reg = <0x0 0x3c00000>; + }; + + partition1@0x8000000 { + label = "rootfs_1"; + reg = <0x3c00000 0x3c00000>; + }; + }; +}; + +&pcie_phy { + status = "ok"; +}; + +&pcie0 { + status = "ok"; +}; + +&qusb_phy_1 { + status = "ok"; +}; + +&usb2 { + status = "ok"; +}; + +&sdhc_2 { + pinctrl-0 = <&sd_pins>; + pinctrl-names = "default"; + cd-gpios = <&tlmm 62 GPIO_ACTIVE_LOW>; + status = "ok"; +}; + +&qusb_phy_0 { + status = "ok"; +}; + +&ssphy_0 { + status = "ok"; +}; + +&usb3 { + status = "ok"; +}; + +&nss_crypto { + status = "ok"; +}; + +&i2c_1 { + pinctrl-0 = <&i2c_1_pins>; + pinctrl-names = "default"; + status = "ok"; +}; + +&sdhc_2 { + pinctrl-0 = <&sd_pins>; + pinctrl-names = "default"; + mmc-pwrseq = <&sd_pwrseq>; + cd-gpios = <&tlmm 62 1>; + sd-ldo-gpios = <&tlmm 66 0>; + vqmmc-supply = <&ipq6018_l2>; + status = "ok"; +}; diff --git a/target/linux/ipq60xx/image/generic.mk b/target/linux/ipq60xx/image/generic.mk index 82cab878a..1c2f486ca 100644 --- a/target/linux/ipq60xx/image/generic.mk +++ b/target/linux/ipq60xx/image/generic.mk @@ -23,16 +23,31 @@ define Device/UbiFit IMAGE/nand-sysupgrade.bin := sysupgrade-tar | append-metadata endef -define Device/wf_hr6001 +define Device/glinet_gl-ax1800 $(call Device/FitImage) $(call Device/UbiFit) - DEVICE_VENDOR := WF - DEVICE_MODEL := HR6001 - KERNEL_LOADADDR := 0x41000000 + DEVICE_VENDOR := GL.iNet + DEVICE_MODEL := GL-AX1800 BLOCKSIZE := 128k PAGESIZE := 2048 - DEVICE_DTS_CONFIG := config@cp01-c1 - SOC := ipq6018 - DEVICE_PACKAGES := uboot-envtools + DEVICE_DTS := qcom-ipq6018-gl-ax1800 + DEVICE_DTS_CONFIG := config@cp03-c1 + BOARD_NAME := ap-cp03-c1 + IMAGES += stock-factory.bin + IMAGE/stock-factory.bin := append-ubi | qsdk-ipq-factory-nand endef -TARGET_DEVICES += wf_hr6001 +TARGET_DEVICES += glinet_gl-ax1800 + +#define Device/wf_hr6001 +# $(call Device/FitImage) +# $(call Device/UbiFit) +# DEVICE_VENDOR := WF +# DEVICE_MODEL := HR6001 +# KERNEL_LOADADDR := 0x41000000 +# BLOCKSIZE := 128k +# PAGESIZE := 2048 +# DEVICE_DTS_CONFIG := config@cp01-c1 +# SOC := ipq6018 +# DEVICE_PACKAGES := uboot-envtools +#endef +#TARGET_DEVICES += wf_hr6001 diff --git a/target/linux/ipq60xx/patches-5.10/600-qca-nss-ecm-support-CORE.patch b/target/linux/ipq60xx/patches-5.10/600-qca-nss-ecm-support-CORE.patch index 4b92e7f1a..7870884c7 100644 --- a/target/linux/ipq60xx/patches-5.10/600-qca-nss-ecm-support-CORE.patch +++ b/target/linux/ipq60xx/patches-5.10/600-qca-nss-ecm-support-CORE.patch @@ -1,35 +1,39 @@ --- a/net/netfilter/nf_conntrack_proto_tcp.c +++ b/net/netfilter/nf_conntrack_proto_tcp.c -@@ -32,12 +32,14 @@ +@@ -32,20 +32,14 @@ #include /* Do not check the TCP window for incoming packets */ -static int nf_ct_tcp_no_window_check __read_mostly = 1; +- +-#ifdef CONFIG_SHORTCUT_FE +int nf_ct_tcp_no_window_check __read_mostly = 1; -+EXPORT_SYMBOL_GPL(nf_ct_tcp_no_window_check); + EXPORT_SYMBOL_GPL(nf_ct_tcp_no_window_check); +-#endif /* "Be conservative in what you do, be liberal in what you accept from others." If it's non-zero, we mark only out of window RST segments as INVALID. */ -static int nf_ct_tcp_be_liberal __read_mostly = 0; +- +-#ifdef CONFIG_SHORTCUT_FE +int nf_ct_tcp_be_liberal __read_mostly = 0; -+EXPORT_SYMBOL_GPL(nf_ct_tcp_be_liberal); + EXPORT_SYMBOL_GPL(nf_ct_tcp_be_liberal); +-#endif /* If it is set to zero, we disable picking up already established connections. */ --- a/include/linux/if_bridge.h +++ b/include/linux/if_bridge.h -@@ -61,6 +61,9 @@ struct br_ip_list { - #define BR_DEFAULT_AGEING_TIME (300 * HZ) +@@ -63,6 +63,7 @@ extern void brioctl_set(int (*ioctl_hook - extern void brioctl_set(int (*ioctl_hook)(struct net *, unsigned int, void __user *)); -+extern void br_dev_update_stats(struct net_device *dev, -+ struct rtnl_link_stats64 *nlstats); + extern void br_dev_update_stats(struct net_device *dev, + struct rtnl_link_stats64 *nlstats); +extern bool br_is_hairpin_enabled(struct net_device *dev); #if IS_ENABLED(CONFIG_BRIDGE) && IS_ENABLED(CONFIG_BRIDGE_IGMP_SNOOPING) int br_multicast_list_adjacent(struct net_device *dev, -@@ -156,4 +159,41 @@ br_port_flag_is_set(const struct net_dev +@@ -158,4 +159,41 @@ br_port_flag_is_set(const struct net_dev } #endif @@ -104,7 +108,7 @@ __be16 vlan_proto, u16 vlan_id) --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h -@@ -2756,6 +2756,10 @@ enum netdev_cmd { +@@ -2745,6 +2745,10 @@ enum netdev_cmd { NETDEV_CVLAN_FILTER_DROP_INFO, NETDEV_SVLAN_FILTER_PUSH_INFO, NETDEV_SVLAN_FILTER_DROP_INFO, @@ -396,35 +400,11 @@ /* Since more than one interface can be attached to a bridge, * there still maybe an alternate path for netconsole to use; * therefore there is no reason for a NETDEV_RELEASE event. -@@ -790,3 +800,98 @@ bool br_port_flag_is_set(const struct ne +@@ -812,3 +822,74 @@ bool br_port_flag_is_set(const struct ne return p->flags & flag; } EXPORT_SYMBOL_GPL(br_port_flag_is_set); + -+/* QCA NSS ECM support - Start */ -+/* Update bridge statistics for bridge packets processed by offload engines */ -+void br_dev_update_stats(struct net_device *dev, -+ struct rtnl_link_stats64 *nlstats) -+{ -+ struct net_bridge *br; -+ struct pcpu_sw_netstats *stats; -+ -+ /* Is this a bridge? */ -+ if (!(dev->priv_flags & IFF_EBRIDGE)) -+ return; -+ -+ br = netdev_priv(dev); -+ stats = this_cpu_ptr(br->stats); -+ -+ u64_stats_update_begin(&stats->syncp); -+ stats->rx_packets += nlstats->rx_packets; -+ stats->rx_bytes += nlstats->rx_bytes; -+ stats->tx_packets += nlstats->tx_packets; -+ stats->tx_bytes += nlstats->tx_bytes; -+ u64_stats_update_end(&stats->syncp); -+} -+EXPORT_SYMBOL_GPL(br_dev_update_stats); -+ +/* API to know if hairpin feature is enabled/disabled on this bridge port */ +bool br_is_hairpin_enabled(struct net_device *dev) +{ @@ -497,7 +477,7 @@ +/* QCA NSS ECM support - End */ --- a/net/bridge/br_private.h +++ b/net/bridge/br_private.h -@@ -1591,4 +1591,9 @@ void br_do_proxy_suppress_arp(struct sk_ +@@ -1593,4 +1593,9 @@ void br_do_proxy_suppress_arp(struct sk_ void br_do_suppress_nd(struct sk_buff *skb, struct net_bridge *br, u16 vid, struct net_bridge_port *p, struct nd_msg *msg); struct nd_msg *br_is_nd_neigh_msg(struct sk_buff *skb, struct nd_msg *m); diff --git a/target/linux/ipq60xx/patches-5.10/601-netfilter-export-udp_get_timeouts-function.patch b/target/linux/ipq60xx/patches-5.10/601-netfilter-export-udp_get_timeouts-function.patch deleted file mode 100644 index 7e43c853d..000000000 --- a/target/linux/ipq60xx/patches-5.10/601-netfilter-export-udp_get_timeouts-function.patch +++ /dev/null @@ -1,38 +0,0 @@ -From e38488fd0a8a11b4bae4ccad9a7a8cfcf9eb5ab7 Mon Sep 17 00:00:00 2001 -From: Murat Sezgin -Date: Mon, 6 Apr 2020 11:08:09 -0700 -Subject: [PATCH] netfilter: export udp_get_timeouts function - -This function is required for acceleration support. - -Signed-off-by: Murat Sezgin -Change-Id: Ibca4f402735764e7e6fb3ce2678e670753c6ef9c ---- - include/net/netfilter/nf_conntrack_timeout.h | 1 + - net/netfilter/nf_conntrack_proto_udp.c | 3 ++- - 2 files changed, 3 insertions(+), 1 deletion(-) - ---- a/include/net/netfilter/nf_conntrack_timeout.h -+++ b/include/net/netfilter/nf_conntrack_timeout.h -@@ -123,5 +123,6 @@ static inline void nf_ct_destroy_timeout - extern struct nf_ct_timeout *(*nf_ct_timeout_find_get_hook)(struct net *net, const char *name); - extern void (*nf_ct_timeout_put_hook)(struct nf_ct_timeout *timeout); - #endif -+extern unsigned int *udp_get_timeouts(struct net *net); - - #endif /* _NF_CONNTRACK_TIMEOUT_H */ ---- a/net/netfilter/nf_conntrack_proto_udp.c -+++ b/net/netfilter/nf_conntrack_proto_udp.c -@@ -29,10 +29,11 @@ static const unsigned int udp_timeouts[U - [UDP_CT_REPLIED] = 120*HZ, - }; - --static unsigned int *udp_get_timeouts(struct net *net) -+unsigned int *udp_get_timeouts(struct net *net) - { - return nf_udp_pernet(net)->timeouts; - } -+EXPORT_SYMBOL(udp_get_timeouts); - - static void udp_error_log(const struct sk_buff *skb, - const struct nf_hook_state *state, diff --git a/target/linux/ipq60xx/patches-5.10/900-arm64-dts-add-OpenWrt-DTS-files.patch b/target/linux/ipq60xx/patches-5.10/900-arm64-dts-add-OpenWrt-DTS-files.patch index b2f6c5234..9182bbe99 100644 --- a/target/linux/ipq60xx/patches-5.10/900-arm64-dts-add-OpenWrt-DTS-files.patch +++ b/target/linux/ipq60xx/patches-5.10/900-arm64-dts-add-OpenWrt-DTS-files.patch @@ -12,11 +12,12 @@ Signed-off-by: Robert Marko --- a/arch/arm64/boot/dts/qcom/Makefile +++ b/arch/arm64/boot/dts/qcom/Makefile -@@ -3,6 +3,7 @@ dtb-$(CONFIG_ARCH_QCOM) += apq8016-sbc.d +@@ -3,6 +3,8 @@ dtb-$(CONFIG_ARCH_QCOM) += apq8016-sbc.d dtb-$(CONFIG_ARCH_QCOM) += apq8096-db820c.dtb dtb-$(CONFIG_ARCH_QCOM) += apq8096-ifc6640.dtb dtb-$(CONFIG_ARCH_QCOM) += ipq6018-cp01-c1.dtb +dtb-$(CONFIG_ARCH_QCOM) += ipq6018-hr6001.dtb ++dtb-$(CONFIG_ARCH_QCOM) += qcom-ipq6018-gl-ax1800.dtb dtb-$(CONFIG_ARCH_QCOM) += ipq8074-hk01.dtb dtb-$(CONFIG_ARCH_QCOM) += msm8916-longcheer-l8150.dtb dtb-$(CONFIG_ARCH_QCOM) += msm8916-mtp.dtb