diff --git a/target/linux/ipq806x/patches-6.6/990-000-Add-required-entries-in-dts-files-for-NSS-support.patch b/target/linux/ipq806x/patches-6.6/990-000-Add-required-entries-in-dts-files-for-NSS-support.patch deleted file mode 100644 index ab0a97c2a6..0000000000 --- a/target/linux/ipq806x/patches-6.6/990-000-Add-required-entries-in-dts-files-for-NSS-support.patch +++ /dev/null @@ -1,283 +0,0 @@ ---- a/arch/arm/boot/dts/qcom/qcom-ipq8064-v2.0.dtsi -+++ b/arch/arm/boot/dts/qcom/qcom-ipq8064-v2.0.dtsi -@@ -22,6 +22,15 @@ - reg = <0x41200000 0x300000>; - no-map; - }; -+ -+ ramoops@42100000 { -+ compatible = "ramoops"; -+ reg = <0x42100000 0x40000>; -+ record-size = <0x4000>; -+ console-size = <0x4000>; -+ ftrace-size = <0x4000>; -+ pmsg-size = <0x4000>; -+ }; - }; - }; - ---- a/arch/arm/boot/dts/qcom/qcom-ipq8064.dtsi -+++ b/arch/arm/boot/dts/qcom/qcom-ipq8064.dtsi -@@ -670,6 +670,20 @@ - }; - }; - -+ nss-common { -+ compatible = "qcom,nss-common"; -+ reg = <0x03000000 0x00001000>; -+ reg-names = "nss_fpb_base"; -+ clocks = <&gcc NSS_CORE_CLK>, <&gcc NSSTCM_CLK>, -+ <&rpmcc RPM_NSS_FABRIC_0_CLK>, <&rpmcc RPM_NSS_FABRIC_1_CLK>; -+ clock-names = "nss_core_clk", "nss_tcm_clk", -+ "nss-fab0-clk", "nss-fab1-clk"; -+ nss_core-supply = <&smb208_s1b>; -+ nss_core_vdd_nominal = <1100000>; -+ nss_core_vdd_high = <1150000>; -+ nss_core_threshold_freq = <733000000>; -+ }; -+ - sfpb_mutex: hwlock@1200600 { - compatible = "qcom,sfpb-mutex"; - reg = <0x01200600 0x100>; -@@ -856,6 +870,132 @@ - status = "disabled"; - }; - -+ nss0: nss@40000000 { -+ compatible = "qcom,nss"; -+ qcom,low-frequency = <733000000>; /* orig value 110000000 */ -+ qcom,mid-frequency = <733000000>; /* orig value 550000000 */ -+ qcom,max-frequency = <733000000>; -+ -+ interrupts = , -+ ; -+ reg = <0x36000000 0x1000 0x39000000 0x10000>; -+ reg-names = "nphys", "vphys"; -+ clocks = <&gcc NSS_CORE_CLK>, <&gcc NSSTCM_CLK_SRC>, -+ <&gcc NSSTCM_CLK>, <&rpmcc RPM_NSS_FABRIC_0_CLK>, -+ <&rpmcc RPM_NSS_FABRIC_1_CLK>; -+ clock-names = "nss-core-clk", "nss-tcm-src", -+ "nss-tcm-clk", "nss-fab0-clk", -+ "nss-fab1-clk"; -+ resets = <&gcc UBI32_CORE1_CLKRST_CLAMP_RESET>, -+ <&gcc UBI32_CORE1_CLAMP_RESET>, -+ <&gcc UBI32_CORE1_AHB_RESET>, -+ <&gcc UBI32_CORE1_AXI_RESET>; -+ reset-names = "clkrst-clamp", "clamp", "ahb", "axi"; -+ -+ qcom,id = <0>; -+ qcom,num-irq = <2>; -+ qcom,num-queue = <2>; -+ qcom,load-addr = <0x40000000>; -+ qcom,turbo-frequency; -+ -+ qcom,bridge-enabled; -+ qcom,gre-enabled; -+ qcom,gre-redir-enabled; -+ qcom,gre_tunnel_enabled; -+ qcom,ipv4-enabled; -+ qcom,ipv4-reasm-enabled; -+ qcom,ipv6-enabled; -+ qcom,ipv6-reasm-enabled; -+ qcom,l2tpv2-enabled; -+ qcom,map-t-enabled; -+ qcom,pppoe-enabled; -+ qcom,pptp-enabled; -+ qcom,portid-enabled; -+ qcom,shaping-enabled; -+ qcom,tun6rd-enabled; -+ qcom,tunipip6-enabled; -+ qcom,vlan-enabled; -+ qcom,wlan-dataplane-offload-enabled; -+ qcom,wlanredirect-enabled; -+ qcom,pxvlan-enabled; -+ qcom,vxlan-enabled; -+ qcom,match-enabled; -+ qcom,mirror-enabled; -+ qcom,rmnet-enabled; -+ qcom,clmap-enabled; -+ }; -+ -+ nss1: nss@40800000 { -+ compatible = "qcom,nss"; -+ qcom,low-frequency = <733000000>; /* orig value 110000000 */ -+ qcom,mid-frequency = <733000000>; /* orig value 550000000 */ -+ qcom,max-frequency = <733000000>; -+ -+ interrupts = , -+ ; -+ reg = <0x36400000 0x1000 0x39010000 0x10000>; -+ reg-names = "nphys", "vphys"; -+ resets = <&gcc UBI32_CORE2_CLKRST_CLAMP_RESET>, -+ <&gcc UBI32_CORE2_CLAMP_RESET>, -+ <&gcc UBI32_CORE2_AHB_RESET>, -+ <&gcc UBI32_CORE2_AXI_RESET>; -+ reset-names = "clkrst-clamp", "clamp", "ahb", "axi"; -+ -+ qcom,id = <1>; -+ qcom,num-irq = <2>; -+ qcom,load-addr = <0x40800000>; -+ qcom,num-queue = <2>; -+ qcom,turbo-frequency; -+ -+ qcom,capwap-enabled; -+ qcom,crypto-enabled; -+ qcom,dtls-enabled; -+ qcom,ipsec-enabled; -+ }; -+ -+ crypto1: crypto@38000000 { -+ compatible = "qcom,nss-crypto"; -+ reg = <0x38000000 0x20000>, <0x38004000 0x22000>; -+ reg-names = "crypto_pbase", "bam_base"; -+ clocks = <&gcc CE5_CORE_CLK>, <&gcc CE5_A_CLK>, <&gcc CE5_H_CLK>; -+ clock-names = "ce5_core", "ce5_aclk", "ce5_hclk"; -+ resets = <&gcc CRYPTO_ENG1_RESET>, <&gcc CRYPTO_AHB_RESET>; -+ reset-names = "rst_eng", "rst_ahb"; -+ qcom,id = <0>; -+ qcom,ee = <0>; -+ }; -+ -+ crypto2: crypto@38400000 { -+ compatible = "qcom,nss-crypto"; -+ reg = <0x38400000 0x20000>, <0x38404000 0x22000>; -+ reg-names = "crypto_pbase", "bam_base"; -+ resets = <&gcc CRYPTO_ENG2_RESET>; -+ reset-names = "rst_eng"; -+ qcom,id = <1>; -+ qcom,ee = <0>; -+ }; -+ -+ crypto3: crypto@38800000 { -+ compatible = "qcom,nss-crypto"; -+ reg = <0x38800000 0x20000>, <0x38804000 0x22000>; -+ reg-names = "crypto_pbase", "bam_base"; -+ resets = <&gcc CRYPTO_ENG3_RESET>; -+ reset-names = "rst_eng"; -+ qcom,id = <2>; -+ qcom,ee = <0>; -+ }; -+ -+ crypto4: crypto@38c00000 { -+ compatible = "qcom,nss-crypto"; -+ reg = <0x38c00000 0x20000>, <0x38c04000 0x22000>; -+ reg-names = "crypto_pbase", "bam_base"; -+ resets = <&gcc CRYPTO_ENG4_RESET>; -+ reset-names = "rst_eng"; -+ qcom,id = <3>; -+ qcom,ee = <0>; -+ }; -+ -+ - sdcc3bam: dma-controller@12182000 { - compatible = "qcom,bam-v1.3.0"; - reg = <0x12182000 0x8000>; -@@ -1462,6 +1602,12 @@ - status = "disabled"; - }; - -+ nss-gmac-common { -+ compatible = "qcom,nss-gmac-common"; -+ reg = <0x03000000 0x0000FFFF 0x1bb00000 0x0000FFFF 0x00900000 0x00004000>; -+ reg-names = "nss_reg_base", "qsgmii_reg_base", "clk_ctl_base"; -+ }; -+ - gmac0: ethernet@37000000 { - device_type = "network"; - compatible = "qcom,ipq806x-gmac", "snps,dwmac"; -@@ -1559,3 +1705,27 @@ - }; - }; - }; -+ -+ &gmac1 { -+ compatible = "qcom,nss-gmac"; -+ qcom,id = <0>; -+ qcom,pcs-chanid = <0>; -+ qcom,phy_mii_type = <0>; -+ qcom,emulation = <0>; -+ qcom,forced-speed = <1000>; -+ qcom,forced-duplex = <1>; -+ qcom,socver = <0>; -+ mdiobus = <&mdio0>; -+ }; -+ -+ &gmac2 { -+ compatible = "qcom,nss-gmac"; -+ qcom,id = <1>; -+ qcom,pcs-chanid = <1>; -+ qcom,phy_mii_type = <1>; -+ qcom,emulation = <0>; -+ qcom,forced-speed = <1000>; -+ qcom,forced-duplex = <1>; -+ qcom,socver = <0>; -+ mdiobus = <&mdio0>; -+ }; ---- a/arch/arm/boot/dts/qcom/qcom-ipq8065-nighthawk.dtsi -+++ b/arch/arm/boot/dts/qcom/qcom-ipq8065-nighthawk.dtsi -@@ -360,13 +360,23 @@ - &gmac1 { - status = "okay"; - -+ compatible = "qcom,nss-gmac"; -+ reg = <0x37200000 0x200000>; -+ interrupts = ; - phy-mode = "rgmii"; - qcom,id = <1>; -+ qcom,pcs-chanid = <0>; - qcom,phy_mdio_addr = <4>; - qcom,poll_required = <0>; - qcom,rgmii_delay = <1>; -+ qcom,phy-mdio-addr = <4>; -+ qcom,poll-required = <0>; -+ qcom,rgmii-delay = <1>; - qcom,phy_mii_type = <0>; - qcom,emulation = <0>; -+ qcom,forced-speed = <1000>; -+ qcom,forced-duplex = <1>; -+ qcom,socver = <0>; - qcom,irq = <255>; - mdiobus = <&mdio0>; - -@@ -385,13 +395,23 @@ - &gmac2 { - status = "okay"; - -+ compatible = "qcom,nss-gmac"; -+ reg = <0x37400000 0x200000>; -+ interrupts = ; - phy-mode = "sgmii"; - qcom,id = <2>; -+ qcom,pcs-chanid = <1>; - qcom,phy_mdio_addr = <0>; /* none */ - qcom,poll_required = <0>; /* no polling */ - qcom,rgmii_delay = <0>; -+ qcom,phy-mdio-addr = <0>; -+ qcom,poll-required = <0>; -+ qcom,rgmii-delay = <0>; - qcom,phy_mii_type = <1>; - qcom,emulation = <0>; -+ qcom,forced-speed = <1000>; -+ qcom,forced-duplex = <1>; -+ qcom,socver = <0>; - qcom,irq = <258>; - mdiobus = <&mdio0>; - ---- a/arch/arm/boot/dts/qcom/qcom-ipq8065.dtsi -+++ b/arch/arm/boot/dts/qcom/qcom-ipq8065.dtsi -@@ -95,3 +95,15 @@ - opp-level = <2>; - }; - }; -+ -+ &nss0 { -+ qcom,low-frequency = <110000000>; -+ qcom,mid-frequency = <600000000>; -+ qcom,max-frequency = <800000000>; -+ }; -+ -+ &nss1 { -+ qcom,low-frequency = <110000000>; -+ qcom,mid-frequency = <600000000>; -+ qcom,max-frequency = <800000000>; -+ }; diff --git a/target/linux/ipq806x/patches-6.6/990-001-Add-required-entries-in-dts-files-for-NSS-support.patch b/target/linux/ipq806x/patches-6.6/990-001-Add-required-entries-in-dts-files-for-NSS-support.patch new file mode 100644 index 0000000000..518e65c961 --- /dev/null +++ b/target/linux/ipq806x/patches-6.6/990-001-Add-required-entries-in-dts-files-for-NSS-support.patch @@ -0,0 +1,800 @@ +diff --git a/arch/arm/boot/dts/qcom/qcom-ipq8064-ad7200-c2600.dtsi b/arch/arm/boot/dts/qcom/qcom-ipq8064-ad7200-c2600.dtsi +index 3a33472..48ba58f 100644 +--- a/arch/arm/boot/dts/qcom/qcom-ipq8064-ad7200-c2600.dtsi ++++ b/arch/arm/boot/dts/qcom/qcom-ipq8064-ad7200-c2600.dtsi +@@ -371,6 +371,9 @@ phy4: ethernet-phy@4 { + + &gmac1 { + status = "okay"; ++ qcom,phy-mdio-addr = <4>; ++ qcom,poll-required = <0>; ++ qcom,rgmii-delay = <1>; + phy-mode = "rgmii"; + qcom,id = <1>; + +@@ -388,6 +391,9 @@ fixed-link { + + &gmac2 { + status = "okay"; ++ qcom,phy-mdio-addr = <0>; ++ qcom,poll-required = <0>; ++ qcom,rgmii-delay = <0>; + phy-mode = "sgmii"; + qcom,id = <2>; + +diff --git a/arch/arm/boot/dts/qcom/qcom-ipq8064-d7800.dts b/arch/arm/boot/dts/qcom/qcom-ipq8064-d7800.dts +index c147bbf..13191ee 100644 +--- a/arch/arm/boot/dts/qcom/qcom-ipq8064-d7800.dts ++++ b/arch/arm/boot/dts/qcom/qcom-ipq8064-d7800.dts +@@ -369,6 +369,9 @@ phy4: ethernet-phy@4 { + + &gmac1 { + status = "okay"; ++ qcom,phy-mdio-addr = <4>; ++ qcom,poll-required = <0>; ++ qcom,rgmii-delay = <1>; + phy-mode = "rgmii"; + qcom,id = <1>; + +@@ -386,6 +389,9 @@ fixed-link { + + &gmac2 { + status = "okay"; ++ qcom,phy-mdio-addr = <0>; ++ qcom,poll-required = <0>; ++ qcom,rgmii-delay = <0>; + phy-mode = "sgmii"; + qcom,id = <2>; + +diff --git a/arch/arm/boot/dts/qcom/qcom-ipq8064-ea7500-v1.dts b/arch/arm/boot/dts/qcom/qcom-ipq8064-ea7500-v1.dts +index 9502a2c..fbbe103 100644 +--- a/arch/arm/boot/dts/qcom/qcom-ipq8064-ea7500-v1.dts ++++ b/arch/arm/boot/dts/qcom/qcom-ipq8064-ea7500-v1.dts +@@ -92,3 +92,16 @@ partition@6080000 { + reg = <0x6080000 0x1f80000>; + }; + }; ++ ++&gmac1 { ++ qcom,phy-mdio-addr = <0>; ++ qcom,poll-required = <0>; ++ qcom,rgmii-delay = <1>; ++}; ++ ++/* LAN */ ++&gmac2 { ++ qcom,phy-mdio-addr = <4>; ++ qcom,poll-required = <0>; ++ qcom,rgmii-delay = <0>; ++}; +diff --git a/arch/arm/boot/dts/qcom/qcom-ipq8064-ea8500.dts b/arch/arm/boot/dts/qcom/qcom-ipq8064-ea8500.dts +index 0ba7bbe..1dd3894 100644 +--- a/arch/arm/boot/dts/qcom/qcom-ipq8064-ea8500.dts ++++ b/arch/arm/boot/dts/qcom/qcom-ipq8064-ea8500.dts +@@ -115,18 +115,3 @@ phy4: ethernet-phy@4 { + reg = <4>; + }; + }; +- +-&gmac1 { +- qcom,phy_mdio_addr = <4>; +- qcom,poll_required = <1>; +- qcom,rgmii_delay = <0>; +- qcom,emulation = <0>; +-}; +- +-/* LAN */ +-&gmac2 { +- qcom,phy_mdio_addr = <0>; /* none */ +- qcom,poll_required = <0>; /* no polling */ +- qcom,rgmii_delay = <0>; +- qcom,emulation = <0>; +-}; +diff --git a/arch/arm/boot/dts/qcom/qcom-ipq8064-eax500.dtsi b/arch/arm/boot/dts/qcom/qcom-ipq8064-eax500.dtsi +index 910bd86..f199898 100644 +--- a/arch/arm/boot/dts/qcom/qcom-ipq8064-eax500.dtsi ++++ b/arch/arm/boot/dts/qcom/qcom-ipq8064-eax500.dtsi +@@ -198,10 +198,17 @@ phy0: ethernet-phy@0 { + 0x00094 0x4e /* PORT6_STATUS */ + >; + }; ++ ++ phy4: ethernet-phy@4 { ++ reg = <4>; ++ }; + }; + + &gmac1 { + status = "okay"; ++ qcom,phy-mdio-addr = <0>; ++ qcom,poll-required = <0>; ++ qcom,rgmii-delay = <1>; + + phy-mode = "rgmii"; + qcom,id = <1>; +@@ -217,6 +224,9 @@ fixed-link { + + &gmac2 { + status = "okay"; ++ qcom,phy-mdio-addr = <4>; ++ qcom,poll-required = <0>; ++ qcom,rgmii-delay = <0>; + + phy-mode = "sgmii"; + qcom,id = <2>; +diff --git a/arch/arm/boot/dts/qcom/qcom-ipq8064-g10.dts b/arch/arm/boot/dts/qcom/qcom-ipq8064-g10.dts +index 0425459..677e9f0 100644 +--- a/arch/arm/boot/dts/qcom/qcom-ipq8064-g10.dts ++++ b/arch/arm/boot/dts/qcom/qcom-ipq8064-g10.dts +@@ -127,12 +127,24 @@ &adm_dma { + + &gmac1 { + status = "okay"; +- +- pinctrl-0 = <&rgmii2_pins>; +- pinctrl-names = "default"; +- ++ compatible = "qcom,nss-gmac"; ++ reg = <0x37200000 0x200000>; ++ interrupts = ; + phy-mode = "rgmii"; + qcom,id = <1>; ++ qcom,pcs-chanid = <0>; ++ qcom,phy-mdio-addr = <4>; ++ qcom,poll-required = <0>; ++ qcom,rgmii-delay = <1>; ++ qcom,phy_mii_type = <0>; ++ qcom,emulation = <0>; ++ qcom,forced-speed = <1000>; ++ qcom,forced-duplex = <1>; ++ qcom,socver = <0>; ++ qcom,irq = <255>; ++ mdiobus = <&mdio0>; ++ pinctrl-0 = <&rgmii2_pins>; ++ pinctrl-names = "default"; + + fixed-link { + speed = <1000>; +@@ -142,9 +154,22 @@ fixed-link { + + &gmac2 { + status = "okay"; +- ++ compatible = "qcom,nss-gmac"; ++ reg = <0x37400000 0x200000>; ++ interrupts = ; + phy-mode = "sgmii"; + qcom,id = <2>; ++ qcom,pcs-chanid = <1>; ++ qcom,phy-mdio-addr = <0>; ++ qcom,poll-required = <0>; /* no polling */ ++ qcom,rgmii-delay = <0>; ++ qcom,phy_mii_type = <1>; ++ qcom,emulation = <0>; ++ qcom,forced-speed = <1000>; ++ qcom,forced-duplex = <1>; ++ qcom,socver = <0>; ++ qcom,irq = <258>; ++ mdiobus = <&mdio0>; + + fixed-link { + speed = <1000>; +@@ -159,6 +184,9 @@ &gsbi4_serial { + + &mdio0 { + status = "okay"; ++ qcom,phy-mdio-addr = <4>; ++ qcom,poll-required = <0>; ++ qcom,rgmii-delay = <1>; + + pinctrl-0 = <&mdio0_pins>; + pinctrl-names = "default"; +@@ -179,6 +207,9 @@ ethernet-phy@0 { + + &nand { + status = "okay"; ++ qcom,phy-mdio-addr = <0>; ++ qcom,poll-required = <0>; ++ qcom,rgmii-delay = <0>; + + nand@0 { + reg = <0>; +diff --git a/arch/arm/boot/dts/qcom/qcom-ipq8064-onhub.dtsi b/arch/arm/boot/dts/qcom/qcom-ipq8064-onhub.dtsi +index 5cbbcc3..2871710 100644 +--- a/arch/arm/boot/dts/qcom/qcom-ipq8064-onhub.dtsi ++++ b/arch/arm/boot/dts/qcom/qcom-ipq8064-onhub.dtsi +@@ -10,8 +10,6 @@ + + / { + aliases { +- ethernet0 = &gmac0; +- ethernet1 = &gmac2; + mdio-gpio0 = &mdio; + serial0 = &gsbi4_serial; + }; +@@ -294,8 +292,22 @@ &adm_dma { + + &gmac0 { + status = "okay"; +- phy-mode = "rgmii"; +- qcom,id = <0>; ++ compatible = "qcom,nss-gmac"; ++ ++ phy-mode = "rgmii"; ++ qcom,id = <0>; ++ qcom,pcs-chanid = <0>; ++ qcom,phy-mdio-addr = <1>; ++ qcom,poll-required = <0>; ++ qcom,rgmii-delay = <1>; ++ qcom,phy_mii_type = <0>; ++ qcom,emulation = <0>; ++ qcom,forced-speed = <1000>; ++ qcom,forced-duplex = <1>; ++ qcom,socver = <0>; ++ qcom,irq = <252>; ++ local-mac-address = [00 00 00 00 00 00]; ++ mdiobus = <&mdio>; + + pinctrl-0 = <&rgmii0_pins>; + pinctrl-names = "default"; +@@ -308,8 +320,22 @@ fixed-link { + + &gmac2 { + status = "okay"; +- phy-mode = "sgmii"; +- qcom,id = <2>; ++ compatible = "qcom,nss-gmac"; ++ ++ phy-mode = "sgmii"; ++ qcom,id = <2>; ++ qcom,pcs-chanid = <1>; ++ qcom,phy-mdio-addr = <0>; ++ qcom,poll-required = <0>; ++ qcom,rgmii-delay = <0>; ++ qcom,phy_mii_type = <1>; ++ qcom,emulation = <0>; ++ qcom,forced-speed = <1000>; ++ qcom,forced-duplex = <1>; ++ qcom,socver = <0>; ++ qcom,irq = <258>; ++ local-mac-address = [00 00 00 00 00 00]; ++ mdiobus = <&mdio>; + + fixed-link { + speed = <1000>; +@@ -410,8 +436,6 @@ pcie@0 { + ath10k@0,0 { + reg = <0 0 0 0 0>; + device_type = "pci"; +- qcom,ath10k-sa-gpio = <2 3 4 0>; +- qcom,ath10k-sa-gpio-func = <5 5 5 0>; + }; + }; + }; +@@ -430,8 +454,6 @@ pcie@0 { + ath10k@0,0 { + reg = <0 0 0 0 0>; + device_type = "pci"; +- qcom,ath10k-sa-gpio = <2 3 4 0>; +- qcom,ath10k-sa-gpio-func = <5 5 5 0>; + }; + }; + }; +diff --git a/arch/arm/boot/dts/qcom/qcom-ipq8064-r7500.dts b/arch/arm/boot/dts/qcom/qcom-ipq8064-r7500.dts +index 995ea3a..1dab7c4 100644 +--- a/arch/arm/boot/dts/qcom/qcom-ipq8064-r7500.dts ++++ b/arch/arm/boot/dts/qcom/qcom-ipq8064-r7500.dts +@@ -294,6 +294,9 @@ phy4: ethernet-phy@4 { + + &gmac1 { + status = "okay"; ++ qcom,phy-mdio-addr = <4>; ++ qcom,poll-required = <0>; ++ qcom,rgmii-delay = <1>; + phy-mode = "rgmii"; + qcom,id = <1>; + +@@ -311,6 +314,9 @@ fixed-link { + + &gmac2 { + status = "okay"; ++ qcom,phy-mdio-addr = <0>; ++ qcom,poll-required = <0>; ++ qcom,rgmii-delay = <0>; + phy-mode = "sgmii"; + qcom,id = <2>; + +diff --git a/arch/arm/boot/dts/qcom/qcom-ipq8064-r7500v2.dts b/arch/arm/boot/dts/qcom/qcom-ipq8064-r7500v2.dts +index 2812f7e..fd22c33 100644 +--- a/arch/arm/boot/dts/qcom/qcom-ipq8064-r7500v2.dts ++++ b/arch/arm/boot/dts/qcom/qcom-ipq8064-r7500v2.dts +@@ -365,6 +365,9 @@ phy4: ethernet-phy@4 { + + &gmac1 { + status = "okay"; ++ qcom,phy-mdio-addr = <4>; ++ qcom,poll-required = <0>; ++ qcom,rgmii-delay = <1>; + phy-mode = "rgmii"; + qcom,id = <1>; + +@@ -382,6 +385,9 @@ fixed-link { + + &gmac2 { + status = "okay"; ++ qcom,phy-mdio-addr = <0>; ++ qcom,poll-required = <0>; ++ qcom,rgmii-delay = <0>; + phy-mode = "sgmii"; + qcom,id = <2>; + +diff --git a/arch/arm/boot/dts/qcom/qcom-ipq8064-v2.0.dtsi b/arch/arm/boot/dts/qcom/qcom-ipq8064-v2.0.dtsi +index 2f117d5..26a2750 100644 +--- a/arch/arm/boot/dts/qcom/qcom-ipq8064-v2.0.dtsi ++++ b/arch/arm/boot/dts/qcom/qcom-ipq8064-v2.0.dtsi +@@ -22,6 +22,15 @@ rsvd@41200000 { + reg = <0x41200000 0x300000>; + no-map; + }; ++ ++ ramoops@42100000 { ++ compatible = "ramoops"; ++ reg = <0x42100000 0x40000>; ++ record-size = <0x4000>; ++ console-size = <0x4000>; ++ ftrace-size = <0x4000>; ++ pmsg-size = <0x4000>; ++ }; + }; + }; + +diff --git a/arch/arm/boot/dts/qcom/qcom-ipq8064-wg2600hp.dts b/arch/arm/boot/dts/qcom/qcom-ipq8064-wg2600hp.dts +index 6f8eb26..e889572 100644 +--- a/arch/arm/boot/dts/qcom/qcom-ipq8064-wg2600hp.dts ++++ b/arch/arm/boot/dts/qcom/qcom-ipq8064-wg2600hp.dts +@@ -164,9 +164,25 @@ ethernet-phy@4 { + &gmac1 { + status = "okay"; + ++ compatible = "qcom,nss-gmac"; ++ reg = <0x37200000 0x200000>; ++ interrupts = ; ++ + phy-mode = "rgmii"; + qcom,id = <1>; + ++ qcom,pcs-chanid = <0>; ++ qcom,phy-mdio-addr = <4>; /* AKRO: 4->1 */ ++ qcom,poll-required = <0>; /* AKRO: 0->1 */ ++ qcom,rgmii-delay = <1>; /* AKRO: 1->0 */ ++ qcom,phy_mii_type = <0>; /* AKRO: 0->8(PHY_INTERFACE_MODE_RGMII) */ ++ qcom,emulation = <0>; ++ qcom,forced-speed = <1000>; ++ qcom,forced-duplex = <1>; ++ qcom,socver = <0>; ++ qcom,irq = <255>; ++ mdiobus = <&mdio0>; ++ + pinctrl-0 = <&rgmii2_pins>; + pinctrl-names = "default"; + +@@ -182,9 +198,25 @@ fixed-link { + &gmac2 { + status = "okay"; + ++ compatible = "qcom,nss-gmac"; ++ reg = <0x37400000 0x200000>; ++ interrupts = ; ++ + phy-mode = "sgmii"; + qcom,id = <2>; + ++ qcom,pcs-chanid = <1>; ++ qcom,phy-mdio-addr = <0>; /* AKRO: 0->0 */ ++ qcom,poll-required = <0>; /* no polling */ ++ qcom,rgmii-delay = <0>; ++ qcom,phy_mii_type = <1>; /* AKRO: 1->4(PHY_INTERFACE_MODE_SGMII) */ ++ qcom,emulation = <0>; ++ qcom,forced-speed = <1000>; ++ qcom,forced-duplex = <1>; ++ qcom,socver = <0>; ++ qcom,irq = <258>; ++ mdiobus = <&mdio0>; ++ + nvmem-cells = <&macaddr_PRODUCTDATA_0>; + nvmem-cell-names = "mac-address"; + +diff --git a/arch/arm/boot/dts/qcom/qcom-ipq8064.dtsi b/arch/arm/boot/dts/qcom/qcom-ipq8064.dtsi +index e10c34c..6342d32 100644 +--- a/arch/arm/boot/dts/qcom/qcom-ipq8064.dtsi ++++ b/arch/arm/boot/dts/qcom/qcom-ipq8064.dtsi +@@ -670,6 +670,20 @@ tsens: thermal-sensor { + }; + }; + ++ nss-common { ++ compatible = "qcom,nss-common"; ++ reg = <0x03000000 0x00001000>; ++ reg-names = "nss_fpb_base"; ++ clocks = <&gcc NSS_CORE_CLK>, <&gcc NSSTCM_CLK>, ++ <&rpmcc RPM_NSS_FABRIC_0_CLK>, <&rpmcc RPM_NSS_FABRIC_1_CLK>; ++ clock-names = "nss_core_clk", "nss_tcm_clk", ++ "nss-fab0-clk", "nss-fab1-clk"; ++ nss_core-supply = <&smb208_s1b>; ++ nss_core_vdd_nominal = <1100000>; ++ nss_core_vdd_high = <1150000>; ++ nss_core_threshold_freq = <733000000>; ++ }; ++ + sfpb_mutex: hwlock@1200600 { + compatible = "qcom,sfpb-mutex"; + reg = <0x01200600 0x100>; +@@ -856,6 +870,132 @@ ss_phy_1: phy@110f8830 { + status = "disabled"; + }; + ++ nss0: nss@40000000 { ++ compatible = "qcom,nss"; ++ qcom,low-frequency = <110000000>; ++ qcom,mid-frequency = <550000000>; ++ qcom,max-frequency = <733000000>; ++ ++ interrupts = , ++ ; ++ reg = <0x36000000 0x1000 0x39000000 0x10000>; ++ reg-names = "nphys", "vphys"; ++ clocks = <&gcc NSS_CORE_CLK>, <&gcc NSSTCM_CLK_SRC>, ++ <&gcc NSSTCM_CLK>, <&rpmcc RPM_NSS_FABRIC_0_CLK>, ++ <&rpmcc RPM_NSS_FABRIC_1_CLK>; ++ clock-names = "nss-core-clk", "nss-tcm-src", ++ "nss-tcm-clk", "nss-fab0-clk", ++ "nss-fab1-clk"; ++ resets = <&gcc UBI32_CORE1_CLKRST_CLAMP_RESET>, ++ <&gcc UBI32_CORE1_CLAMP_RESET>, ++ <&gcc UBI32_CORE1_AHB_RESET>, ++ <&gcc UBI32_CORE1_AXI_RESET>; ++ reset-names = "clkrst-clamp", "clamp", "ahb", "axi"; ++ ++ qcom,id = <0>; ++ qcom,num-irq = <2>; ++ qcom,num-queue = <2>; ++ qcom,load-addr = <0x40000000>; ++ qcom,turbo-frequency; ++ ++ qcom,bridge-enabled; ++ qcom,gre-enabled; ++ qcom,gre-redir-enabled; ++ qcom,gre_tunnel_enabled; ++ qcom,ipv4-enabled; ++ qcom,ipv4-reasm-enabled; ++ qcom,ipv6-enabled; ++ qcom,ipv6-reasm-enabled; ++ qcom,l2tpv2-enabled; ++ qcom,map-t-enabled; ++ qcom,pppoe-enabled; ++ qcom,pptp-enabled; ++ qcom,portid-enabled; ++ qcom,shaping-enabled; ++ qcom,tun6rd-enabled; ++ qcom,tunipip6-enabled; ++ qcom,vlan-enabled; ++ qcom,wlan-dataplane-offload-enabled; ++ qcom,wlanredirect-enabled; ++ qcom,pxvlan-enabled; ++ qcom,vxlan-enabled; ++ qcom,match-enabled; ++ qcom,mirror-enabled; ++ qcom,rmnet-enabled; ++ qcom,clmap-enabled; ++ }; ++ ++ nss1: nss@40800000 { ++ compatible = "qcom,nss"; ++ qcom,low-frequency = <110000000>; ++ qcom,mid-frequency = <550000000>; ++ qcom,max-frequency = <733000000>; ++ ++ interrupts = , ++ ; ++ reg = <0x36400000 0x1000 0x39010000 0x10000>; ++ reg-names = "nphys", "vphys"; ++ resets = <&gcc UBI32_CORE2_CLKRST_CLAMP_RESET>, ++ <&gcc UBI32_CORE2_CLAMP_RESET>, ++ <&gcc UBI32_CORE2_AHB_RESET>, ++ <&gcc UBI32_CORE2_AXI_RESET>; ++ reset-names = "clkrst-clamp", "clamp", "ahb", "axi"; ++ ++ qcom,id = <1>; ++ qcom,num-irq = <2>; ++ qcom,load-addr = <0x40800000>; ++ qcom,num-queue = <2>; ++ qcom,turbo-frequency; ++ ++ qcom,capwap-enabled; ++ qcom,crypto-enabled; ++ qcom,dtls-enabled; ++ qcom,ipsec-enabled; ++ }; ++ ++ crypto1: crypto@38000000 { ++ compatible = "qcom,nss-crypto"; ++ reg = <0x38000000 0x20000>, <0x38004000 0x22000>; ++ reg-names = "crypto_pbase", "bam_base"; ++ clocks = <&gcc CE5_CORE_CLK>, <&gcc CE5_A_CLK>, <&gcc CE5_H_CLK>; ++ clock-names = "ce5_core", "ce5_aclk", "ce5_hclk"; ++ resets = <&gcc CRYPTO_ENG1_RESET>, <&gcc CRYPTO_AHB_RESET>; ++ reset-names = "rst_eng", "rst_ahb"; ++ qcom,id = <0>; ++ qcom,ee = <0>; ++ }; ++ ++ crypto2: crypto@38400000 { ++ compatible = "qcom,nss-crypto"; ++ reg = <0x38400000 0x20000>, <0x38404000 0x22000>; ++ reg-names = "crypto_pbase", "bam_base"; ++ resets = <&gcc CRYPTO_ENG2_RESET>; ++ reset-names = "rst_eng"; ++ qcom,id = <1>; ++ qcom,ee = <0>; ++ }; ++ ++ crypto3: crypto@38800000 { ++ compatible = "qcom,nss-crypto"; ++ reg = <0x38800000 0x20000>, <0x38804000 0x22000>; ++ reg-names = "crypto_pbase", "bam_base"; ++ resets = <&gcc CRYPTO_ENG3_RESET>; ++ reset-names = "rst_eng"; ++ qcom,id = <2>; ++ qcom,ee = <0>; ++ }; ++ ++ crypto4: crypto@38c00000 { ++ compatible = "qcom,nss-crypto"; ++ reg = <0x38c00000 0x20000>, <0x38c04000 0x22000>; ++ reg-names = "crypto_pbase", "bam_base"; ++ resets = <&gcc CRYPTO_ENG4_RESET>; ++ reset-names = "rst_eng"; ++ qcom,id = <3>; ++ qcom,ee = <0>; ++ }; ++ ++ + sdcc3bam: dma-controller@12182000 { + compatible = "qcom,bam-v1.3.0"; + reg = <0x12182000 0x8000>; +@@ -1462,6 +1602,12 @@ mdio0: mdio@37000000 { + status = "disabled"; + }; + ++ nss-gmac-common { ++ compatible = "qcom,nss-gmac-common"; ++ reg = <0x03000000 0x0000FFFF 0x1bb00000 0x0000FFFF 0x00900000 0x00004000>; ++ reg-names = "nss_reg_base", "qsgmii_reg_base", "clk_ctl_base"; ++ }; ++ + gmac0: ethernet@37000000 { + device_type = "network"; + compatible = "qcom,ipq806x-gmac", "snps,dwmac"; +@@ -1559,3 +1705,48 @@ gmac3: ethernet@37600000 { + }; + }; + }; ++ ++ &rpm { ++ smb208_regulators: regulators { ++ compatible = "qcom,rpm-smb208-regulators"; ++ ++ smb208_s1a: s1a { ++ regulator-min-microvolt = <1050000>; ++ regulator-max-microvolt = <1150000>; ++ ++ qcom,switch-mode-frequency = <1200000>; ++ }; ++ ++ smb208_s1b: s1b { ++ regulator-min-microvolt = <1050000>; ++ regulator-max-microvolt = <1150000>; ++ ++ qcom,switch-mode-frequency = <1200000>; ++ }; ++ ++ }; ++ }; ++ ++ &gmac1 { ++ compatible = "qcom,nss-gmac"; ++ qcom,id = <0>; ++ qcom,pcs-chanid = <0>; ++ qcom,phy_mii_type = <0>; ++ qcom,emulation = <0>; ++ qcom,forced-speed = <1000>; ++ qcom,forced-duplex = <1>; ++ qcom,socver = <0>; ++ mdiobus = <&mdio0>; ++ }; ++ ++ &gmac2 { ++ compatible = "qcom,nss-gmac"; ++ qcom,id = <1>; ++ qcom,pcs-chanid = <1>; ++ qcom,phy_mii_type = <1>; ++ qcom,emulation = <0>; ++ qcom,forced-speed = <1000>; ++ qcom,forced-duplex = <1>; ++ qcom,socver = <0>; ++ mdiobus = <&mdio0>; ++ }; +diff --git a/arch/arm/boot/dts/qcom/qcom-ipq8065-nbg6817.dts b/arch/arm/boot/dts/qcom/qcom-ipq8065-nbg6817.dts +index 5b916ee..2a94919 100644 +--- a/arch/arm/boot/dts/qcom/qcom-ipq8065-nbg6817.dts ++++ b/arch/arm/boot/dts/qcom/qcom-ipq8065-nbg6817.dts +@@ -286,13 +286,23 @@ phy4: ethernet-phy@4 { + + &gmac1 { + status = "okay"; ++ compatible = "qcom,nss-gmac"; ++ reg = <0x37200000 0x200000>; ++ interrupts = ; + phy-mode = "rgmii"; + qcom,id = <1>; ++ qcom,pcs-chanid = <0>; + qcom,phy_mdio_addr = <4>; + qcom,poll_required = <0>; + qcom,rgmii_delay = <1>; ++ qcom,phy-mdio-addr = <4>; ++ qcom,poll-required = <0>; ++ qcom,rgmii-delay = <1>; + qcom,phy_mii_type = <0>; + qcom,emulation = <0>; ++ qcom,forced-speed = <1000>; ++ qcom,forced-duplex = <1>; ++ qcom,socver = <0>; + qcom,irq = <255>; + mdiobus = <&mdio0>; + +@@ -307,13 +317,23 @@ fixed-link { + + &gmac2 { + status = "okay"; ++ compatible = "qcom,nss-gmac"; ++ reg = <0x37400000 0x200000>; ++ interrupts = ; + phy-mode = "sgmii"; + qcom,id = <2>; ++ qcom,pcs-chanid = <1>; + qcom,phy_mdio_addr = <0>; /* none */ + qcom,poll_required = <0>; /* no polling */ + qcom,rgmii_delay = <0>; ++ qcom,phy-mdio-addr = <0>; ++ qcom,poll-required = <0>; ++ qcom,rgmii-delay = <0>; + qcom,phy_mii_type = <1>; + qcom,emulation = <0>; ++ qcom,forced-speed = <1000>; ++ qcom,forced-duplex = <1>; ++ qcom,socver = <0>; + qcom,irq = <258>; + mdiobus = <&mdio0>; + +diff --git a/arch/arm/boot/dts/qcom/qcom-ipq8065-nighthawk.dtsi b/arch/arm/boot/dts/qcom/qcom-ipq8065-nighthawk.dtsi +index ebaeceb..84b1d3c 100644 +--- a/arch/arm/boot/dts/qcom/qcom-ipq8065-nighthawk.dtsi ++++ b/arch/arm/boot/dts/qcom/qcom-ipq8065-nighthawk.dtsi +@@ -360,13 +360,23 @@ phy4: ethernet-phy@4 { + &gmac1 { + status = "okay"; + ++ compatible = "qcom,nss-gmac"; ++ reg = <0x37200000 0x200000>; ++ interrupts = ; + phy-mode = "rgmii"; + qcom,id = <1>; ++ qcom,pcs-chanid = <0>; + qcom,phy_mdio_addr = <4>; + qcom,poll_required = <0>; + qcom,rgmii_delay = <1>; ++ qcom,phy-mdio-addr = <4>; ++ qcom,poll-required = <0>; ++ qcom,rgmii-delay = <1>; + qcom,phy_mii_type = <0>; + qcom,emulation = <0>; ++ qcom,forced-speed = <1000>; ++ qcom,forced-duplex = <1>; ++ qcom,socver = <0>; + qcom,irq = <255>; + mdiobus = <&mdio0>; + +@@ -385,13 +395,23 @@ fixed-link { + &gmac2 { + status = "okay"; + ++ compatible = "qcom,nss-gmac"; ++ reg = <0x37400000 0x200000>; ++ interrupts = ; + phy-mode = "sgmii"; + qcom,id = <2>; ++ qcom,pcs-chanid = <1>; + qcom,phy_mdio_addr = <0>; /* none */ + qcom,poll_required = <0>; /* no polling */ + qcom,rgmii_delay = <0>; ++ qcom,phy-mdio-addr = <0>; ++ qcom,poll-required = <0>; ++ qcom,rgmii-delay = <0>; + qcom,phy_mii_type = <1>; + qcom,emulation = <0>; ++ qcom,forced-speed = <1000>; ++ qcom,forced-duplex = <1>; ++ qcom,socver = <0>; + qcom,irq = <258>; + mdiobus = <&mdio0>; + +diff --git a/arch/arm/boot/dts/qcom/qcom-ipq8065-rt4230w-rev6.dts b/arch/arm/boot/dts/qcom/qcom-ipq8065-rt4230w-rev6.dts +index 095d83a..6b02266 100644 +--- a/arch/arm/boot/dts/qcom/qcom-ipq8065-rt4230w-rev6.dts ++++ b/arch/arm/boot/dts/qcom/qcom-ipq8065-rt4230w-rev6.dts +@@ -316,10 +316,28 @@ phy0: ethernet-phy@0 { + 0x00054 0xc832c832 /* LED_CTRL_1 */ + >; + }; ++ ++ phy4: ethernet-phy@4 { ++ reg = <4>; ++ qca,ar8327-initvals = < ++ 0x000e4 0x6a545 /* MAC_POWER_SEL */ ++ 0x0000c 0x80 /* PAD6_MODE */ ++ >; ++ }; + }; + + &gmac0 { + status = "okay"; ++ compatible = "qcom,nss-gmac"; ++ qcom,id = <0>; ++ qcom,pcs-chanid = <0>; ++ qcom,phy-mdio-addr = <4>; ++ qcom,poll-required = <0>; ++ qcom,rgmii-delay = <1>; ++ qcom,forced-speed = <1000>; ++ qcom,forced-duplex = <1>; ++ mdiobus = <&mdio0>; ++ qcom,socver = <0>; + phy-mode = "rgmii"; + qcom,id = <0>; + +@@ -337,6 +355,16 @@ fixed-link { + + &gmac1 { + status = "okay"; ++ compatible = "qcom,nss-gmac"; ++ qcom,id = <1>; ++ qcom,pcs-chanid = <1>; ++ qcom,phy-mdio-addr = <0>; ++ qcom,poll-required = <0>; ++ qcom,rgmii-delay = <0>; ++ qcom,forced-speed = <1000>; ++ qcom,forced-duplex = <1>; ++ mdiobus = <&mdio0>; ++ qcom,socver = <0>; + phy-mode = "sgmii"; + qcom,id = <1>; + +diff --git a/arch/arm/boot/dts/qcom/qcom-ipq8065.dtsi b/arch/arm/boot/dts/qcom/qcom-ipq8065.dtsi +index 5db79dc..835c5a6 100644 +--- a/arch/arm/boot/dts/qcom/qcom-ipq8065.dtsi ++++ b/arch/arm/boot/dts/qcom/qcom-ipq8065.dtsi +@@ -95,3 +95,15 @@ opp-1725000000 { + opp-level = <2>; + }; + }; ++ ++ &nss0 { ++ qcom,low-frequency = <110000000>; ++ qcom,mid-frequency = <600000000>; ++ qcom,max-frequency = <800000000>; ++ }; ++ ++ &nss1 { ++ qcom,low-frequency = <110000000>; ++ qcom,mid-frequency = <600000000>; ++ qcom,max-frequency = <800000000>; ++ }; diff --git a/target/linux/ipq806x/patches-6.6/990-001-Add-required-driver-files-for-NSS-support.patch b/target/linux/ipq806x/patches-6.6/990-002-Add-required-driver-files-for-NSS-support.patch similarity index 100% rename from target/linux/ipq806x/patches-6.6/990-001-Add-required-driver-files-for-NSS-support.patch rename to target/linux/ipq806x/patches-6.6/990-002-Add-required-driver-files-for-NSS-support.patch diff --git a/target/linux/ipq806x/patches-6.6/990-002-Fix-missing-smb208-v1.0-nss-regulator.patch b/target/linux/ipq806x/patches-6.6/990-002-Fix-missing-smb208-v1.0-nss-regulator.patch deleted file mode 100644 index 2e6b9bc7ce..0000000000 --- a/target/linux/ipq806x/patches-6.6/990-002-Fix-missing-smb208-v1.0-nss-regulator.patch +++ /dev/null @@ -1,30 +0,0 @@ ---- a/arch/arm/boot/dts/qcom/qcom-ipq8064.dtsi -+++ b/arch/arm/boot/dts/qcom/qcom-ipq8064.dtsi -@@ -1706,6 +1706,27 @@ - }; - }; - -+ &rpm { -+ smb208_regulators: regulators { -+ compatible = "qcom,rpm-smb208-regulators"; -+ -+ smb208_s1a: s1a { -+ regulator-min-microvolt = <1050000>; -+ regulator-max-microvolt = <1150000>; -+ -+ qcom,switch-mode-frequency = <1200000>; -+ }; -+ -+ smb208_s1b: s1b { -+ regulator-min-microvolt = <1050000>; -+ regulator-max-microvolt = <1150000>; -+ -+ qcom,switch-mode-frequency = <1200000>; -+ }; -+ -+ }; -+ }; -+ - &gmac1 { - compatible = "qcom,nss-gmac"; - qcom,id = <0>; diff --git a/target/linux/ipq806x/patches-6.6/990-046--net-vxlan-Adding-APIs-to-VxLAN-driver.patch b/target/linux/ipq806x/patches-6.6/990-046-net-vxlan-Adding-APIs-to-VxLAN-driver.patch similarity index 100% rename from target/linux/ipq806x/patches-6.6/990-046--net-vxlan-Adding-APIs-to-VxLAN-driver.patch rename to target/linux/ipq806x/patches-6.6/990-046-net-vxlan-Adding-APIs-to-VxLAN-driver.patch diff --git a/target/linux/ipq806x/patches-6.6/990-051-qca-nss-drv-add-qdisc-support.patch b/target/linux/ipq806x/patches-6.6/990-051-qca-nss-drv-add-qdisc-support.patch index 2ae079488e..fd4a03e4eb 100644 --- a/target/linux/ipq806x/patches-6.6/990-051-qca-nss-drv-add-qdisc-support.patch +++ b/target/linux/ipq806x/patches-6.6/990-051-qca-nss-drv-add-qdisc-support.patch @@ -62,26 +62,26 @@ +void ifb_update_offload_stats(struct net_device *dev, struct pcpu_sw_netstats *offload_stats) +{ -+ struct ifb_dev_private *dp; -+ struct ifb_q_private *txp; ++ struct ifb_dev_private *dp; ++ struct ifb_q_private *txp; + -+ if (!dev || !offload_stats) { -+ return; -+ } ++ if (!dev || !offload_stats) { ++ return; ++} + -+ if (!(dev->priv_flags_ext & IFF_EXT_IFB)) { -+ return; -+ } ++ if (!(dev->priv_flags_ext & IFF_EXT_IFB)) { ++ return; ++} + -+ dp = netdev_priv(dev); -+ txp = dp->tx_private; ++ dp = netdev_priv(dev); ++ txp = dp->tx_private; + -+ u64_stats_update_begin(&txp->rx_stats.sync); -+ txp->rx_stats.packets += u64_stats_read(&offload_stats->rx_packets); -+ txp->rx_stats.bytes += u64_stats_read(&offload_stats->rx_bytes); -+ txp->tx_stats.packets += u64_stats_read(&offload_stats->tx_packets); -+ txp->tx_stats.bytes += u64_stats_read(&offload_stats->tx_bytes); -+ u64_stats_update_end(&txp->rx_stats.sync); ++ u64_stats_update_begin(&txp->rx_stats.sync); ++ txp->rx_stats.packets += u64_stats_read(&offload_stats->rx_packets); ++ txp->rx_stats.bytes += u64_stats_read(&offload_stats->rx_bytes); ++ txp->tx_stats.packets += u64_stats_read(&offload_stats->tx_packets); ++ txp->tx_stats.bytes += u64_stats_read(&offload_stats->tx_bytes); ++ u64_stats_update_end(&txp->rx_stats.sync); +} +EXPORT_SYMBOL(ifb_update_offload_stats); +