kernel: ipq806x: refresh qca-nss patches to kernel 5.15.155
kernel: ipq806x: refresh qca-nss patches to kernel 5.15.150
This commit is contained in:
		@@ -19,7 +19,7 @@ Signed-off-by: Christian 'Ansuel' Marangi <ansuelsmth@gmail.com>
 | 
				
			|||||||
 	/*
 | 
					 	/*
 | 
				
			||||||
 	 * Get the required data from the packet.
 | 
					 	 * Get the required data from the packet.
 | 
				
			||||||
 	 */
 | 
					 	 */
 | 
				
			||||||
@@ -1191,7 +1194,7 @@ int nf_conntrack_tcp_packet(struct nf_co
 | 
					@@ -1226,7 +1229,7 @@ int nf_conntrack_tcp_packet(struct nf_co
 | 
				
			||||||
 		 IP_CT_TCP_FLAG_DATA_UNACKNOWLEDGED &&
 | 
					 		 IP_CT_TCP_FLAG_DATA_UNACKNOWLEDGED &&
 | 
				
			||||||
 		 timeouts[new_state] > timeouts[TCP_CONNTRACK_UNACK])
 | 
					 		 timeouts[new_state] > timeouts[TCP_CONNTRACK_UNACK])
 | 
				
			||||||
 		timeout = timeouts[TCP_CONNTRACK_UNACK];
 | 
					 		timeout = timeouts[TCP_CONNTRACK_UNACK];
 | 
				
			||||||
@@ -28,7 +28,7 @@ Signed-off-by: Christian 'Ansuel' Marangi <ansuelsmth@gmail.com>
 | 
				
			|||||||
 		 timeouts[new_state] > timeouts[TCP_CONNTRACK_RETRANS])
 | 
					 		 timeouts[new_state] > timeouts[TCP_CONNTRACK_RETRANS])
 | 
				
			||||||
 		timeout = timeouts[TCP_CONNTRACK_RETRANS];
 | 
					 		timeout = timeouts[TCP_CONNTRACK_RETRANS];
 | 
				
			||||||
 	else
 | 
					 	else
 | 
				
			||||||
@@ -1507,6 +1510,9 @@ void nf_conntrack_tcp_init_net(struct ne
 | 
					@@ -1542,6 +1545,9 @@ void nf_conntrack_tcp_init_net(struct ne
 | 
				
			||||||
 	 */
 | 
					 	 */
 | 
				
			||||||
 	tn->tcp_be_liberal = 0;
 | 
					 	tn->tcp_be_liberal = 0;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -145,7 +145,7 @@
 | 
				
			|||||||
 		sdcc1bam: dma@12402000 {
 | 
					 		sdcc1bam: dma@12402000 {
 | 
				
			||||||
 			compatible = "qcom,bam-v1.3.0";
 | 
					 			compatible = "qcom,bam-v1.3.0";
 | 
				
			||||||
 			reg = <0x12402000 0x8000>;
 | 
					 			reg = <0x12402000 0x8000>;
 | 
				
			||||||
@@ -1554,6 +1685,20 @@
 | 
					@@ -1553,6 +1684,20 @@
 | 
				
			||||||
 				dmas = <&sdcc3bam 2>, <&sdcc3bam 1>;
 | 
					 				dmas = <&sdcc3bam 2>, <&sdcc3bam 1>;
 | 
				
			||||||
 				dma-names = "tx", "rx";
 | 
					 				dma-names = "tx", "rx";
 | 
				
			||||||
 			};
 | 
					 			};
 | 
				
			||||||
@@ -166,7 +166,7 @@
 | 
				
			|||||||
 		};
 | 
					 		};
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 		sfpb_mutex: hwlock@1200600 {
 | 
					 		sfpb_mutex: hwlock@1200600 {
 | 
				
			||||||
@@ -1564,3 +1709,27 @@
 | 
					@@ -1563,3 +1708,27 @@
 | 
				
			||||||
 		};
 | 
					 		};
 | 
				
			||||||
 	};
 | 
					 	};
 | 
				
			||||||
 };
 | 
					 };
 | 
				
			||||||
@@ -214,7 +214,7 @@
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
--- a/arch/arm/boot/dts/qcom-ipq8064-eax500.dtsi
 | 
					--- a/arch/arm/boot/dts/qcom-ipq8064-eax500.dtsi
 | 
				
			||||||
+++ b/arch/arm/boot/dts/qcom-ipq8064-eax500.dtsi
 | 
					+++ b/arch/arm/boot/dts/qcom-ipq8064-eax500.dtsi
 | 
				
			||||||
@@ -170,10 +170,17 @@
 | 
					@@ -198,10 +198,17 @@
 | 
				
			||||||
 			0x00094 0x4e        /* PORT6_STATUS */
 | 
					 			0x00094 0x4e        /* PORT6_STATUS */
 | 
				
			||||||
 			>;
 | 
					 			>;
 | 
				
			||||||
 	};
 | 
					 	};
 | 
				
			||||||
@@ -232,7 +232,7 @@
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 	phy-mode = "rgmii";
 | 
					 	phy-mode = "rgmii";
 | 
				
			||||||
 	qcom,id = <1>;
 | 
					 	qcom,id = <1>;
 | 
				
			||||||
@@ -189,6 +196,9 @@
 | 
					@@ -217,6 +224,9 @@
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 &gmac2 {
 | 
					 &gmac2 {
 | 
				
			||||||
 	status = "okay";
 | 
					 	status = "okay";
 | 
				
			||||||
@@ -265,7 +265,7 @@
 | 
				
			|||||||
-};
 | 
					-};
 | 
				
			||||||
--- a/arch/arm/boot/dts/qcom-ipq8064-ad7200-c2600.dtsi
 | 
					--- a/arch/arm/boot/dts/qcom-ipq8064-ad7200-c2600.dtsi
 | 
				
			||||||
+++ b/arch/arm/boot/dts/qcom-ipq8064-ad7200-c2600.dtsi
 | 
					+++ b/arch/arm/boot/dts/qcom-ipq8064-ad7200-c2600.dtsi
 | 
				
			||||||
@@ -330,6 +330,9 @@
 | 
					@@ -357,6 +357,9 @@
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 &gmac1 {
 | 
					 &gmac1 {
 | 
				
			||||||
 	status = "okay";
 | 
					 	status = "okay";
 | 
				
			||||||
@@ -275,7 +275,7 @@
 | 
				
			|||||||
 	phy-mode = "rgmii";
 | 
					 	phy-mode = "rgmii";
 | 
				
			||||||
 	qcom,id = <1>;
 | 
					 	qcom,id = <1>;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -348,6 +351,9 @@
 | 
					@@ -375,6 +378,9 @@
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 &gmac2 {
 | 
					 &gmac2 {
 | 
				
			||||||
 	status = "okay";
 | 
					 	status = "okay";
 | 
				
			||||||
@@ -287,7 +287,7 @@
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
--- a/arch/arm/boot/dts/qcom-ipq8064-r7500.dts
 | 
					--- a/arch/arm/boot/dts/qcom-ipq8064-r7500.dts
 | 
				
			||||||
+++ b/arch/arm/boot/dts/qcom-ipq8064-r7500.dts
 | 
					+++ b/arch/arm/boot/dts/qcom-ipq8064-r7500.dts
 | 
				
			||||||
@@ -258,6 +258,9 @@
 | 
					@@ -274,6 +274,9 @@
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 &gmac1 {
 | 
					 &gmac1 {
 | 
				
			||||||
 	status = "okay";
 | 
					 	status = "okay";
 | 
				
			||||||
@@ -297,7 +297,7 @@
 | 
				
			|||||||
 	phy-mode = "rgmii";
 | 
					 	phy-mode = "rgmii";
 | 
				
			||||||
 	qcom,id = <1>;
 | 
					 	qcom,id = <1>;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -275,6 +278,9 @@
 | 
					@@ -291,6 +294,9 @@
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 &gmac2 {
 | 
					 &gmac2 {
 | 
				
			||||||
 	status = "okay";
 | 
					 	status = "okay";
 | 
				
			||||||
@@ -309,7 +309,7 @@
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
--- a/arch/arm/boot/dts/qcom-ipq8064-r7500v2.dts
 | 
					--- a/arch/arm/boot/dts/qcom-ipq8064-r7500v2.dts
 | 
				
			||||||
+++ b/arch/arm/boot/dts/qcom-ipq8064-r7500v2.dts
 | 
					+++ b/arch/arm/boot/dts/qcom-ipq8064-r7500v2.dts
 | 
				
			||||||
@@ -341,6 +341,9 @@
 | 
					@@ -357,6 +357,9 @@
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 &gmac1 {
 | 
					 &gmac1 {
 | 
				
			||||||
 	status = "okay";
 | 
					 	status = "okay";
 | 
				
			||||||
@@ -319,7 +319,7 @@
 | 
				
			|||||||
 	phy-mode = "rgmii";
 | 
					 	phy-mode = "rgmii";
 | 
				
			||||||
 	qcom,id = <1>;
 | 
					 	qcom,id = <1>;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -358,6 +361,9 @@
 | 
					@@ -374,6 +377,9 @@
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 &gmac2 {
 | 
					 &gmac2 {
 | 
				
			||||||
 	status = "okay";
 | 
					 	status = "okay";
 | 
				
			||||||
@@ -331,7 +331,7 @@
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
--- a/arch/arm/boot/dts/qcom-ipq8064-d7800.dts
 | 
					--- a/arch/arm/boot/dts/qcom-ipq8064-d7800.dts
 | 
				
			||||||
+++ b/arch/arm/boot/dts/qcom-ipq8064-d7800.dts
 | 
					+++ b/arch/arm/boot/dts/qcom-ipq8064-d7800.dts
 | 
				
			||||||
@@ -344,6 +344,9 @@
 | 
					@@ -360,6 +360,9 @@
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 &gmac1 {
 | 
					 &gmac1 {
 | 
				
			||||||
 	status = "okay";
 | 
					 	status = "okay";
 | 
				
			||||||
@@ -341,7 +341,7 @@
 | 
				
			|||||||
 	phy-mode = "rgmii";
 | 
					 	phy-mode = "rgmii";
 | 
				
			||||||
 	qcom,id = <1>;
 | 
					 	qcom,id = <1>;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -361,6 +364,9 @@
 | 
					@@ -377,6 +380,9 @@
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 &gmac2 {
 | 
					 &gmac2 {
 | 
				
			||||||
 	status = "okay";
 | 
					 	status = "okay";
 | 
				
			||||||
@@ -416,9 +416,9 @@
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 	pinctrl-0 = <&mdio0_pins>;
 | 
					 	pinctrl-0 = <&mdio0_pins>;
 | 
				
			||||||
 	pinctrl-names = "default";
 | 
					 	pinctrl-names = "default";
 | 
				
			||||||
@@ -224,10 +252,14 @@
 | 
					@@ -170,10 +198,14 @@
 | 
				
			||||||
 			*/
 | 
					 			0x00094 0x4e        /* PORT6_STATUS */
 | 
				
			||||||
 		};
 | 
					 			>;
 | 
				
			||||||
 	};
 | 
					 	};
 | 
				
			||||||
+
 | 
					+
 | 
				
			||||||
 };
 | 
					 };
 | 
				
			||||||
@@ -431,7 +431,7 @@
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 	nand@0 {
 | 
					 	nand@0 {
 | 
				
			||||||
 		reg = <0>;
 | 
					 		reg = <0>;
 | 
				
			||||||
@@ -261,6 +293,7 @@
 | 
					@@ -207,6 +239,7 @@
 | 
				
			||||||
 			qcom,ath10k-calibration-variant = "ASRock-G10";
 | 
					 			qcom,ath10k-calibration-variant = "ASRock-G10";
 | 
				
			||||||
 		};
 | 
					 		};
 | 
				
			||||||
 	};
 | 
					 	};
 | 
				
			||||||
@@ -578,7 +578,7 @@
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
--- a/arch/arm/boot/dts/qcom-ipq8065-nbg6817.dts
 | 
					--- a/arch/arm/boot/dts/qcom-ipq8065-nbg6817.dts
 | 
				
			||||||
+++ b/arch/arm/boot/dts/qcom-ipq8065-nbg6817.dts
 | 
					+++ b/arch/arm/boot/dts/qcom-ipq8065-nbg6817.dts
 | 
				
			||||||
@@ -268,13 +268,23 @@
 | 
					@@ -284,13 +284,23 @@
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 &gmac1 {
 | 
					 &gmac1 {
 | 
				
			||||||
 	status = "okay";
 | 
					 	status = "okay";
 | 
				
			||||||
@@ -602,7 +602,7 @@
 | 
				
			|||||||
 	qcom,irq = <255>;
 | 
					 	qcom,irq = <255>;
 | 
				
			||||||
 	mdiobus = <&mdio0>;
 | 
					 	mdiobus = <&mdio0>;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -289,13 +299,23 @@
 | 
					@@ -305,13 +315,23 @@
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 &gmac2 {
 | 
					 &gmac2 {
 | 
				
			||||||
 	status = "okay";
 | 
					 	status = "okay";
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
--- a/drivers/soc/qcom/socinfo.c	2022-11-07 08:55:57.097003500 +0900
 | 
					--- a/drivers/soc/qcom/socinfo.c
 | 
				
			||||||
+++ b/drivers/soc/qcom/socinfo.c	2022-11-07 09:03:58.447003500 +0900
 | 
					+++ b/drivers/soc/qcom/socinfo.c
 | 
				
			||||||
@@ -230,6 +230,7 @@ static const struct soc_id soc_id[] = {
 | 
					@@ -230,6 +230,7 @@ static const struct soc_id soc_id[] = {
 | 
				
			||||||
 	{ 198, "MSM8126" },
 | 
					 	{ 198, "MSM8126" },
 | 
				
			||||||
 	{ 199, "APQ8026" },
 | 
					 	{ 199, "APQ8026" },
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
--- a/include/linux/if_bridge.h
 | 
					--- a/include/linux/if_bridge.h
 | 
				
			||||||
+++ b/include/linux/if_bridge.h
 | 
					+++ b/include/linux/if_bridge.h
 | 
				
			||||||
@@ -69,6 +69,7 @@ void brioctl_set(int (*hook)(struct net
 | 
					@@ -68,6 +68,7 @@ void brioctl_set(int (*hook)(struct net
 | 
				
			||||||
 			     void __user *uarg));
 | 
					 			     void __user *uarg));
 | 
				
			||||||
 int br_ioctl_call(struct net *net, struct net_bridge *br, unsigned int cmd,
 | 
					 int br_ioctl_call(struct net *net, struct net_bridge *br, unsigned int cmd,
 | 
				
			||||||
 		  struct ifreq *ifr, void __user *uarg);
 | 
					 		  struct ifreq *ifr, void __user *uarg);
 | 
				
			||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 #if IS_ENABLED(CONFIG_BRIDGE) && IS_ENABLED(CONFIG_BRIDGE_IGMP_SNOOPING)
 | 
					 #if IS_ENABLED(CONFIG_BRIDGE) && IS_ENABLED(CONFIG_BRIDGE_IGMP_SNOOPING)
 | 
				
			||||||
 int br_multicast_list_adjacent(struct net_device *dev,
 | 
					 int br_multicast_list_adjacent(struct net_device *dev,
 | 
				
			||||||
@@ -192,4 +193,42 @@ static inline clock_t br_get_ageing_time
 | 
					@@ -191,4 +192,42 @@ static inline clock_t br_get_ageing_time
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 #endif
 | 
					 #endif
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -53,7 +53,7 @@
 | 
				
			|||||||
 #endif
 | 
					 #endif
 | 
				
			||||||
--- a/include/linux/if_vlan.h
 | 
					--- a/include/linux/if_vlan.h
 | 
				
			||||||
+++ b/include/linux/if_vlan.h
 | 
					+++ b/include/linux/if_vlan.h
 | 
				
			||||||
@@ -222,7 +222,12 @@ extern void vlan_vids_del_by_dev(struct
 | 
					@@ -230,7 +230,12 @@ extern void vlan_vids_del_by_dev(struct
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 extern bool vlan_uses_dev(const struct net_device *dev);
 | 
					 extern bool vlan_uses_dev(const struct net_device *dev);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -68,7 +68,7 @@
 | 
				
			|||||||
 		     __be16 vlan_proto, u16 vlan_id)
 | 
					 		     __be16 vlan_proto, u16 vlan_id)
 | 
				
			||||||
--- a/include/linux/netdevice.h
 | 
					--- a/include/linux/netdevice.h
 | 
				
			||||||
+++ b/include/linux/netdevice.h
 | 
					+++ b/include/linux/netdevice.h
 | 
				
			||||||
@@ -1713,6 +1713,27 @@ enum netdev_ml_priv_type {
 | 
					@@ -1725,6 +1725,27 @@ enum netdev_ml_priv_type {
 | 
				
			||||||
 	ML_PRIV_CAN,
 | 
					 	ML_PRIV_CAN,
 | 
				
			||||||
 };
 | 
					 };
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -96,7 +96,7 @@
 | 
				
			|||||||
 /**
 | 
					 /**
 | 
				
			||||||
  *	struct net_device - The DEVICE structure.
 | 
					  *	struct net_device - The DEVICE structure.
 | 
				
			||||||
  *
 | 
					  *
 | 
				
			||||||
@@ -2848,6 +2869,10 @@ enum netdev_cmd {
 | 
					@@ -2856,6 +2877,10 @@ enum netdev_cmd {
 | 
				
			||||||
 	NETDEV_CVLAN_FILTER_DROP_INFO,
 | 
					 	NETDEV_CVLAN_FILTER_DROP_INFO,
 | 
				
			||||||
 	NETDEV_SVLAN_FILTER_PUSH_INFO,
 | 
					 	NETDEV_SVLAN_FILTER_PUSH_INFO,
 | 
				
			||||||
 	NETDEV_SVLAN_FILTER_DROP_INFO,
 | 
					 	NETDEV_SVLAN_FILTER_DROP_INFO,
 | 
				
			||||||
@@ -123,7 +123,7 @@
 | 
				
			|||||||
 	const struct dst_entry *dst = skb_dst(skb);
 | 
					 	const struct dst_entry *dst = skb_dst(skb);
 | 
				
			||||||
--- a/include/net/neighbour.h
 | 
					--- a/include/net/neighbour.h
 | 
				
			||||||
+++ b/include/net/neighbour.h
 | 
					+++ b/include/net/neighbour.h
 | 
				
			||||||
@@ -574,4 +574,15 @@ static inline void neigh_update_is_route
 | 
					@@ -567,4 +567,15 @@ static inline void neigh_update_is_route
 | 
				
			||||||
 		*notify = 1;
 | 
					 		*notify = 1;
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
@@ -155,7 +155,7 @@
 | 
				
			|||||||
 void fib_del_ifaddr(struct in_ifaddr *, struct in_ifaddr *);
 | 
					 void fib_del_ifaddr(struct in_ifaddr *, struct in_ifaddr *);
 | 
				
			||||||
--- a/net/8021q/vlan_core.c
 | 
					--- a/net/8021q/vlan_core.c
 | 
				
			||||||
+++ b/net/8021q/vlan_core.c
 | 
					+++ b/net/8021q/vlan_core.c
 | 
				
			||||||
@@ -556,4 +556,12 @@ static int __init vlan_offload_init(void
 | 
					@@ -563,4 +563,12 @@ static int __init vlan_offload_init(void
 | 
				
			||||||
 	return 0;
 | 
					 	return 0;
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -170,7 +170,7 @@
 | 
				
			|||||||
 fs_initcall(vlan_offload_init);
 | 
					 fs_initcall(vlan_offload_init);
 | 
				
			||||||
--- a/net/bridge/br_fdb.c
 | 
					--- a/net/bridge/br_fdb.c
 | 
				
			||||||
+++ b/net/bridge/br_fdb.c
 | 
					+++ b/net/bridge/br_fdb.c
 | 
				
			||||||
@@ -38,6 +38,35 @@ static int fdb_insert(struct net_bridge
 | 
					@@ -37,6 +37,35 @@ static int fdb_insert(struct net_bridge
 | 
				
			||||||
 static void fdb_notify(struct net_bridge *br,
 | 
					 static void fdb_notify(struct net_bridge *br,
 | 
				
			||||||
 		       const struct net_bridge_fdb_entry *, int, bool);
 | 
					 		       const struct net_bridge_fdb_entry *, int, bool);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -206,7 +206,7 @@
 | 
				
			|||||||
 int __init br_fdb_init(void)
 | 
					 int __init br_fdb_init(void)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
 	br_fdb_cache = kmem_cache_create("bridge_fdb_cache",
 | 
					 	br_fdb_cache = kmem_cache_create("bridge_fdb_cache",
 | 
				
			||||||
@@ -343,6 +372,7 @@ void br_fdb_cleanup(struct work_struct *
 | 
					@@ -342,6 +371,7 @@ void br_fdb_cleanup(struct work_struct *
 | 
				
			||||||
 	unsigned long delay = hold_time(br);
 | 
					 	unsigned long delay = hold_time(br);
 | 
				
			||||||
 	unsigned long work_delay = delay;
 | 
					 	unsigned long work_delay = delay;
 | 
				
			||||||
 	unsigned long now = jiffies;
 | 
					 	unsigned long now = jiffies;
 | 
				
			||||||
@@ -214,7 +214,7 @@
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 	/* this part is tricky, in order to avoid blocking learning and
 | 
					 	/* this part is tricky, in order to avoid blocking learning and
 | 
				
			||||||
 	 * consequently forwarding, we rely on rcu to delete objects with
 | 
					 	 * consequently forwarding, we rely on rcu to delete objects with
 | 
				
			||||||
@@ -369,8 +399,15 @@ void br_fdb_cleanup(struct work_struct *
 | 
					@@ -368,8 +398,15 @@ void br_fdb_cleanup(struct work_struct *
 | 
				
			||||||
 			work_delay = min(work_delay, this_timer - now);
 | 
					 			work_delay = min(work_delay, this_timer - now);
 | 
				
			||||||
 		} else {
 | 
					 		} else {
 | 
				
			||||||
 			spin_lock_bh(&br->hash_lock);
 | 
					 			spin_lock_bh(&br->hash_lock);
 | 
				
			||||||
@@ -231,7 +231,7 @@
 | 
				
			|||||||
 			spin_unlock_bh(&br->hash_lock);
 | 
					 			spin_unlock_bh(&br->hash_lock);
 | 
				
			||||||
 		}
 | 
					 		}
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
@@ -618,6 +655,12 @@ void br_fdb_update(struct net_bridge *br
 | 
					@@ -615,6 +652,12 @@ void br_fdb_update(struct net_bridge *br
 | 
				
			||||||
 						      &fdb->flags)))
 | 
					 						      &fdb->flags)))
 | 
				
			||||||
 					clear_bit(BR_FDB_ADDED_BY_EXT_LEARN,
 | 
					 					clear_bit(BR_FDB_ADDED_BY_EXT_LEARN,
 | 
				
			||||||
 						  &fdb->flags);
 | 
					 						  &fdb->flags);
 | 
				
			||||||
@@ -244,9 +244,9 @@
 | 
				
			|||||||
 			}
 | 
					 			}
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 			if (unlikely(test_bit(BR_FDB_ADDED_BY_USER, &flags)))
 | 
					 			if (unlikely(test_bit(BR_FDB_ADDED_BY_USER, &flags)))
 | 
				
			||||||
@@ -799,6 +842,25 @@ static void fdb_notify(struct net_bridge
 | 
					@@ -794,6 +837,25 @@ static void fdb_notify(struct net_bridge
 | 
				
			||||||
 
 | 
					 	struct sk_buff *skb;
 | 
				
			||||||
 	br_offload_fdb_update(fdb);
 | 
					 	int err = -ENOBUFS;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
+	/* QCA NSS ECM support - Start */
 | 
					+	/* QCA NSS ECM support - Start */
 | 
				
			||||||
+	if (fdb->dst) {
 | 
					+	if (fdb->dst) {
 | 
				
			||||||
@@ -270,7 +270,7 @@
 | 
				
			|||||||
 	if (swdev_notify)
 | 
					 	if (swdev_notify)
 | 
				
			||||||
 		br_switchdev_fdb_notify(br, fdb, type);
 | 
					 		br_switchdev_fdb_notify(br, fdb, type);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -1382,3 +1444,62 @@ void br_fdb_clear_offload(const struct n
 | 
					@@ -1377,3 +1439,62 @@ void br_fdb_clear_offload(const struct n
 | 
				
			||||||
 	spin_unlock_bh(&p->br->hash_lock);
 | 
					 	spin_unlock_bh(&p->br->hash_lock);
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 EXPORT_SYMBOL_GPL(br_fdb_clear_offload);
 | 
					 EXPORT_SYMBOL_GPL(br_fdb_clear_offload);
 | 
				
			||||||
@@ -343,9 +343,9 @@
 | 
				
			|||||||
 #include <net/dsa.h>
 | 
					 #include <net/dsa.h>
 | 
				
			||||||
 #include <net/sock.h>
 | 
					 #include <net/sock.h>
 | 
				
			||||||
 #include <linux/if_vlan.h>
 | 
					 #include <linux/if_vlan.h>
 | 
				
			||||||
@@ -27,6 +28,12 @@
 | 
					@@ -26,6 +27,12 @@
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 #include "br_private.h"
 | 
					 #include "br_private.h"
 | 
				
			||||||
 #include "br_private_offload.h"
 | 
					 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
+/* QCA NSS ECM support - Start */
 | 
					+/* QCA NSS ECM support - Start */
 | 
				
			||||||
+/* Hook for external forwarding logic */
 | 
					+/* Hook for external forwarding logic */
 | 
				
			||||||
@@ -374,7 +374,7 @@
 | 
				
			|||||||
 	/* Since more than one interface can be attached to a bridge,
 | 
					 	/* Since more than one interface can be attached to a bridge,
 | 
				
			||||||
 	 * there still maybe an alternate path for netconsole to use;
 | 
					 	 * there still maybe an alternate path for netconsole to use;
 | 
				
			||||||
 	 * therefore there is no reason for a NETDEV_RELEASE event.
 | 
					 	 * therefore there is no reason for a NETDEV_RELEASE event.
 | 
				
			||||||
@@ -788,3 +799,75 @@ bool br_port_flag_is_set(const struct ne
 | 
					@@ -785,3 +796,75 @@ bool br_port_flag_is_set(const struct ne
 | 
				
			||||||
 	return p->flags & flag;
 | 
					 	return p->flags & flag;
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 EXPORT_SYMBOL_GPL(br_port_flag_is_set);
 | 
					 EXPORT_SYMBOL_GPL(br_port_flag_is_set);
 | 
				
			||||||
@@ -452,7 +452,7 @@
 | 
				
			|||||||
+/* QCA NSS ECM support - End */
 | 
					+/* QCA NSS ECM support - End */
 | 
				
			||||||
--- a/net/bridge/br_private.h
 | 
					--- a/net/bridge/br_private.h
 | 
				
			||||||
+++ b/net/bridge/br_private.h
 | 
					+++ b/net/bridge/br_private.h
 | 
				
			||||||
@@ -2120,4 +2120,9 @@ void br_do_proxy_suppress_arp(struct sk_
 | 
					@@ -2100,4 +2100,9 @@ void br_do_proxy_suppress_arp(struct sk_
 | 
				
			||||||
 void br_do_suppress_nd(struct sk_buff *skb, struct net_bridge *br,
 | 
					 void br_do_suppress_nd(struct sk_buff *skb, struct net_bridge *br,
 | 
				
			||||||
 		       u16 vid, struct net_bridge_port *p, struct nd_msg *msg);
 | 
					 		       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);
 | 
					 struct nd_msg *br_is_nd_neigh_msg(struct sk_buff *skb, struct nd_msg *m);
 | 
				
			||||||
@@ -464,7 +464,7 @@
 | 
				
			|||||||
 #endif
 | 
					 #endif
 | 
				
			||||||
--- a/net/core/dev.c
 | 
					--- a/net/core/dev.c
 | 
				
			||||||
+++ b/net/core/dev.c
 | 
					+++ b/net/core/dev.c
 | 
				
			||||||
@@ -1685,7 +1685,7 @@ const char *netdev_cmd_to_name(enum netd
 | 
					@@ -1690,7 +1690,7 @@ const char *netdev_cmd_to_name(enum netd
 | 
				
			||||||
 	N(UDP_TUNNEL_DROP_INFO) N(CHANGE_TX_QUEUE_LEN)
 | 
					 	N(UDP_TUNNEL_DROP_INFO) N(CHANGE_TX_QUEUE_LEN)
 | 
				
			||||||
 	N(CVLAN_FILTER_PUSH_INFO) N(CVLAN_FILTER_DROP_INFO)
 | 
					 	N(CVLAN_FILTER_PUSH_INFO) N(CVLAN_FILTER_DROP_INFO)
 | 
				
			||||||
 	N(SVLAN_FILTER_PUSH_INFO) N(SVLAN_FILTER_DROP_INFO)
 | 
					 	N(SVLAN_FILTER_PUSH_INFO) N(SVLAN_FILTER_DROP_INFO)
 | 
				
			||||||
@@ -475,7 +475,7 @@
 | 
				
			|||||||
 	return "UNKNOWN_NETDEV_EVENT";
 | 
					 	return "UNKNOWN_NETDEV_EVENT";
 | 
				
			||||||
--- a/net/core/neighbour.c
 | 
					--- a/net/core/neighbour.c
 | 
				
			||||||
+++ b/net/core/neighbour.c
 | 
					+++ b/net/core/neighbour.c
 | 
				
			||||||
@@ -1219,7 +1219,21 @@ static void neigh_update_hhs(struct neig
 | 
					@@ -1211,7 +1211,21 @@ static void neigh_update_hhs(struct neig
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -497,7 +497,7 @@
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 /* Generic update routine.
 | 
					 /* Generic update routine.
 | 
				
			||||||
    -- lladdr is new lladdr or NULL, if it is not supplied.
 | 
					    -- lladdr is new lladdr or NULL, if it is not supplied.
 | 
				
			||||||
@@ -1250,6 +1264,7 @@ static int __neigh_update(struct neighbo
 | 
					@@ -1242,6 +1256,7 @@ static int __neigh_update(struct neighbo
 | 
				
			||||||
 	int notify = 0;
 | 
					 	int notify = 0;
 | 
				
			||||||
 	struct net_device *dev;
 | 
					 	struct net_device *dev;
 | 
				
			||||||
 	int update_isrouter = 0;
 | 
					 	int update_isrouter = 0;
 | 
				
			||||||
@@ -505,7 +505,7 @@
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 	trace_neigh_update(neigh, lladdr, new, flags, nlmsg_pid);
 | 
					 	trace_neigh_update(neigh, lladdr, new, flags, nlmsg_pid);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -1264,6 +1279,8 @@ static int __neigh_update(struct neighbo
 | 
					@@ -1256,6 +1271,8 @@ static int __neigh_update(struct neighbo
 | 
				
			||||||
 		new = old;
 | 
					 		new = old;
 | 
				
			||||||
 		goto out;
 | 
					 		goto out;
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
@@ -514,7 +514,7 @@
 | 
				
			|||||||
 	if (!(flags & NEIGH_UPDATE_F_ADMIN) &&
 | 
					 	if (!(flags & NEIGH_UPDATE_F_ADMIN) &&
 | 
				
			||||||
 	    (old & (NUD_NOARP | NUD_PERMANENT)))
 | 
					 	    (old & (NUD_NOARP | NUD_PERMANENT)))
 | 
				
			||||||
 		goto out;
 | 
					 		goto out;
 | 
				
			||||||
@@ -1301,6 +1318,11 @@ static int __neigh_update(struct neighbo
 | 
					@@ -1293,6 +1310,11 @@ static int __neigh_update(struct neighbo
 | 
				
			||||||
 		   - compare new & old
 | 
					 		   - compare new & old
 | 
				
			||||||
 		   - if they are different, check override flag
 | 
					 		   - if they are different, check override flag
 | 
				
			||||||
 		 */
 | 
					 		 */
 | 
				
			||||||
@@ -526,7 +526,7 @@
 | 
				
			|||||||
 		if ((old & NUD_VALID) &&
 | 
					 		if ((old & NUD_VALID) &&
 | 
				
			||||||
 		    !memcmp(lladdr, neigh->ha, dev->addr_len))
 | 
					 		    !memcmp(lladdr, neigh->ha, dev->addr_len))
 | 
				
			||||||
 			lladdr = neigh->ha;
 | 
					 			lladdr = neigh->ha;
 | 
				
			||||||
@@ -1423,8 +1445,11 @@ out:
 | 
					@@ -1415,8 +1437,11 @@ out:
 | 
				
			||||||
 	if (((new ^ old) & NUD_PERMANENT) || ext_learn_change)
 | 
					 	if (((new ^ old) & NUD_PERMANENT) || ext_learn_change)
 | 
				
			||||||
 		neigh_update_gc_list(neigh);
 | 
					 		neigh_update_gc_list(neigh);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -551,7 +551,7 @@
 | 
				
			|||||||
 /* Caller must hold RTNL. */
 | 
					 /* Caller must hold RTNL. */
 | 
				
			||||||
 int fib_table_insert(struct net *net, struct fib_table *tb,
 | 
					 int fib_table_insert(struct net *net, struct fib_table *tb,
 | 
				
			||||||
 		     struct fib_config *cfg, struct netlink_ext_ack *extack)
 | 
					 		     struct fib_config *cfg, struct netlink_ext_ack *extack)
 | 
				
			||||||
@@ -1396,6 +1399,9 @@ int fib_table_insert(struct net *net, st
 | 
					@@ -1398,6 +1401,9 @@ int fib_table_insert(struct net *net, st
 | 
				
			||||||
 	rtmsg_fib(RTM_NEWROUTE, htonl(key), new_fa, plen, new_fa->tb_id,
 | 
					 	rtmsg_fib(RTM_NEWROUTE, htonl(key), new_fa, plen, new_fa->tb_id,
 | 
				
			||||||
 		  &cfg->fc_nlinfo, nlflags);
 | 
					 		  &cfg->fc_nlinfo, nlflags);
 | 
				
			||||||
 succeeded:
 | 
					 succeeded:
 | 
				
			||||||
@@ -561,7 +561,7 @@
 | 
				
			|||||||
 	return 0;
 | 
					 	return 0;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 out_remove_new_fa:
 | 
					 out_remove_new_fa:
 | 
				
			||||||
@@ -1766,6 +1772,9 @@ int fib_table_delete(struct net *net, st
 | 
					@@ -1769,6 +1775,9 @@ int fib_table_delete(struct net *net, st
 | 
				
			||||||
 	if (fa_to_delete->fa_state & FA_S_ACCESSED)
 | 
					 	if (fa_to_delete->fa_state & FA_S_ACCESSED)
 | 
				
			||||||
 		rt_cache_flush(cfg->fc_nlinfo.nl_net);
 | 
					 		rt_cache_flush(cfg->fc_nlinfo.nl_net);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -571,7 +571,7 @@
 | 
				
			|||||||
 	fib_release_info(fa_to_delete->fa_info);
 | 
					 	fib_release_info(fa_to_delete->fa_info);
 | 
				
			||||||
 	alias_free_mem_rcu(fa_to_delete);
 | 
					 	alias_free_mem_rcu(fa_to_delete);
 | 
				
			||||||
 	return 0;
 | 
					 	return 0;
 | 
				
			||||||
@@ -2394,6 +2403,20 @@ void __init fib_trie_init(void)
 | 
					@@ -2401,6 +2410,20 @@ void __init fib_trie_init(void)
 | 
				
			||||||
 					   0, SLAB_PANIC | SLAB_ACCOUNT, NULL);
 | 
					 					   0, SLAB_PANIC | SLAB_ACCOUNT, NULL);
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -594,7 +594,7 @@
 | 
				
			|||||||
 	struct fib_table *tb;
 | 
					 	struct fib_table *tb;
 | 
				
			||||||
--- a/net/ipv6/addrconf.c
 | 
					--- a/net/ipv6/addrconf.c
 | 
				
			||||||
+++ b/net/ipv6/addrconf.c
 | 
					+++ b/net/ipv6/addrconf.c
 | 
				
			||||||
@@ -987,6 +987,7 @@ void inet6_ifa_finish_destroy(struct ine
 | 
					@@ -1003,6 +1003,7 @@ void inet6_ifa_finish_destroy(struct ine
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	kfree_rcu(ifp, rcu);
 | 
					 	kfree_rcu(ifp, rcu);
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
@@ -602,7 +602,7 @@
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 static void
 | 
					 static void
 | 
				
			||||||
 ipv6_link_dev_addr(struct inet6_dev *idev, struct inet6_ifaddr *ifp)
 | 
					 ipv6_link_dev_addr(struct inet6_dev *idev, struct inet6_ifaddr *ifp)
 | 
				
			||||||
@@ -2048,6 +2049,7 @@ struct inet6_ifaddr *ipv6_get_ifaddr(str
 | 
					@@ -2064,6 +2065,7 @@ struct inet6_ifaddr *ipv6_get_ifaddr(str
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	return result;
 | 
					 	return result;
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
@@ -612,7 +612,7 @@
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
--- a/net/ipv6/ndisc.c
 | 
					--- a/net/ipv6/ndisc.c
 | 
				
			||||||
+++ b/net/ipv6/ndisc.c
 | 
					+++ b/net/ipv6/ndisc.c
 | 
				
			||||||
@@ -649,6 +649,7 @@ void ndisc_send_ns(struct net_device *de
 | 
					@@ -650,6 +650,7 @@ void ndisc_send_ns(struct net_device *de
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	ndisc_send_skb(skb, daddr, saddr);
 | 
					 	ndisc_send_skb(skb, daddr, saddr);
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
@@ -622,7 +622,7 @@
 | 
				
			|||||||
 		   const struct in6_addr *daddr)
 | 
					 		   const struct in6_addr *daddr)
 | 
				
			||||||
--- a/net/ipv6/route.c
 | 
					--- a/net/ipv6/route.c
 | 
				
			||||||
+++ b/net/ipv6/route.c
 | 
					+++ b/net/ipv6/route.c
 | 
				
			||||||
@@ -3878,6 +3878,9 @@ out_free:
 | 
					@@ -3875,6 +3875,9 @@ out_free:
 | 
				
			||||||
 	return ERR_PTR(err);
 | 
					 	return ERR_PTR(err);
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -632,7 +632,7 @@
 | 
				
			|||||||
 int ip6_route_add(struct fib6_config *cfg, gfp_t gfp_flags,
 | 
					 int ip6_route_add(struct fib6_config *cfg, gfp_t gfp_flags,
 | 
				
			||||||
 		  struct netlink_ext_ack *extack)
 | 
					 		  struct netlink_ext_ack *extack)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
@@ -3889,6 +3892,10 @@ int ip6_route_add(struct fib6_config *cf
 | 
					@@ -3886,6 +3889,10 @@ int ip6_route_add(struct fib6_config *cf
 | 
				
			||||||
 		return PTR_ERR(rt);
 | 
					 		return PTR_ERR(rt);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	err = __ip6_ins_rt(rt, &cfg->fc_nlinfo, extack);
 | 
					 	err = __ip6_ins_rt(rt, &cfg->fc_nlinfo, extack);
 | 
				
			||||||
@@ -643,7 +643,7 @@
 | 
				
			|||||||
 	fib6_info_release(rt);
 | 
					 	fib6_info_release(rt);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	return err;
 | 
					 	return err;
 | 
				
			||||||
@@ -3910,6 +3917,9 @@ static int __ip6_del_rt(struct fib6_info
 | 
					@@ -3907,6 +3914,9 @@ static int __ip6_del_rt(struct fib6_info
 | 
				
			||||||
 	err = fib6_del(rt, info);
 | 
					 	err = fib6_del(rt, info);
 | 
				
			||||||
 	spin_unlock_bh(&table->tb6_lock);
 | 
					 	spin_unlock_bh(&table->tb6_lock);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -653,7 +653,7 @@
 | 
				
			|||||||
 out:
 | 
					 out:
 | 
				
			||||||
 	fib6_info_release(rt);
 | 
					 	fib6_info_release(rt);
 | 
				
			||||||
 	return err;
 | 
					 	return err;
 | 
				
			||||||
@@ -6352,6 +6362,20 @@ static int ip6_route_dev_notify(struct n
 | 
					@@ -6343,6 +6353,20 @@ static int ip6_route_dev_notify(struct n
 | 
				
			||||||
 	return NOTIFY_OK;
 | 
					 	return NOTIFY_OK;
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -676,7 +676,7 @@
 | 
				
			|||||||
  */
 | 
					  */
 | 
				
			||||||
--- a/net/ipv6/ip6_gre.c
 | 
					--- a/net/ipv6/ip6_gre.c
 | 
				
			||||||
+++ b/net/ipv6/ip6_gre.c
 | 
					+++ b/net/ipv6/ip6_gre.c
 | 
				
			||||||
@@ -1934,6 +1934,7 @@ static void ip6gre_tap_setup(struct net_
 | 
					@@ -1943,6 +1943,7 @@ static void ip6gre_tap_setup(struct net_
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	dev->priv_flags &= ~IFF_TX_SKB_SHARING;
 | 
					 	dev->priv_flags &= ~IFF_TX_SKB_SHARING;
 | 
				
			||||||
 	dev->priv_flags |= IFF_LIVE_ADDR_CHANGE;
 | 
					 	dev->priv_flags |= IFF_LIVE_ADDR_CHANGE;
 | 
				
			||||||
@@ -686,7 +686,7 @@
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
--- a/net/ipv4/ip_gre.c
 | 
					--- a/net/ipv4/ip_gre.c
 | 
				
			||||||
+++ b/net/ipv4/ip_gre.c
 | 
					+++ b/net/ipv4/ip_gre.c
 | 
				
			||||||
@@ -1333,6 +1333,7 @@ static void ipgre_tap_setup(struct net_d
 | 
					@@ -1341,6 +1341,7 @@ static void ipgre_tap_setup(struct net_d
 | 
				
			||||||
 	dev->netdev_ops	= &gre_tap_netdev_ops;
 | 
					 	dev->netdev_ops	= &gre_tap_netdev_ops;
 | 
				
			||||||
 	dev->priv_flags &= ~IFF_TX_SKB_SHARING;
 | 
					 	dev->priv_flags &= ~IFF_TX_SKB_SHARING;
 | 
				
			||||||
 	dev->priv_flags	|= IFF_LIVE_ADDR_CHANGE;
 | 
					 	dev->priv_flags	|= IFF_LIVE_ADDR_CHANGE;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -91,7 +91,7 @@
 | 
				
			|||||||
 	depends on NETFILTER_ADVANCED
 | 
					 	depends on NETFILTER_ADVANCED
 | 
				
			||||||
--- a/net/netfilter/nf_conntrack_core.c
 | 
					--- a/net/netfilter/nf_conntrack_core.c
 | 
				
			||||||
+++ b/net/netfilter/nf_conntrack_core.c
 | 
					+++ b/net/netfilter/nf_conntrack_core.c
 | 
				
			||||||
@@ -2877,6 +2877,9 @@ int nf_conntrack_init_net(struct net *ne
 | 
					@@ -2899,6 +2899,9 @@ int nf_conntrack_init_net(struct net *ne
 | 
				
			||||||
 	nf_conntrack_ecache_pernet_init(net);
 | 
					 	nf_conntrack_ecache_pernet_init(net);
 | 
				
			||||||
 	nf_conntrack_helper_pernet_init(net);
 | 
					 	nf_conntrack_helper_pernet_init(net);
 | 
				
			||||||
 	nf_conntrack_proto_pernet_init(net);
 | 
					 	nf_conntrack_proto_pernet_init(net);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -48,7 +48,7 @@ Subject: [PATCH] Update 602-qca-add-pppoe-offload-support.patch for kernel
 | 
				
			|||||||
 /* Prototypes. */
 | 
					 /* Prototypes. */
 | 
				
			||||||
 static int ppp_unattached_ioctl(struct net *net, struct ppp_file *pf,
 | 
					 static int ppp_unattached_ioctl(struct net *net, struct ppp_file *pf,
 | 
				
			||||||
 			struct file *file, unsigned int cmd, unsigned long arg);
 | 
					 			struct file *file, unsigned int cmd, unsigned long arg);
 | 
				
			||||||
@@ -3450,7 +3470,10 @@ ppp_connect_channel(struct channel *pch,
 | 
					@@ -3452,7 +3472,10 @@ ppp_connect_channel(struct channel *pch,
 | 
				
			||||||
 	struct ppp_net *pn;
 | 
					 	struct ppp_net *pn;
 | 
				
			||||||
 	int ret = -ENXIO;
 | 
					 	int ret = -ENXIO;
 | 
				
			||||||
 	int hdrlen;
 | 
					 	int hdrlen;
 | 
				
			||||||
@@ -59,7 +59,7 @@ Subject: [PATCH] Update 602-qca-add-pppoe-offload-support.patch for kernel
 | 
				
			|||||||
 	pn = ppp_pernet(pch->chan_net);
 | 
					 	pn = ppp_pernet(pch->chan_net);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	mutex_lock(&pn->all_ppp_mutex);
 | 
					 	mutex_lock(&pn->all_ppp_mutex);
 | 
				
			||||||
@@ -3482,13 +3505,40 @@ ppp_connect_channel(struct channel *pch,
 | 
					@@ -3484,13 +3507,40 @@ ppp_connect_channel(struct channel *pch,
 | 
				
			||||||
 	++ppp->n_channels;
 | 
					 	++ppp->n_channels;
 | 
				
			||||||
 	pch->ppp = ppp;
 | 
					 	pch->ppp = ppp;
 | 
				
			||||||
 	refcount_inc(&ppp->file.refcnt);
 | 
					 	refcount_inc(&ppp->file.refcnt);
 | 
				
			||||||
@@ -101,7 +101,7 @@ Subject: [PATCH] Update 602-qca-add-pppoe-offload-support.patch for kernel
 | 
				
			|||||||
 	return ret;
 | 
					 	return ret;
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -3506,6 +3556,13 @@ ppp_disconnect_channel(struct channel *p
 | 
					@@ -3508,6 +3558,13 @@ ppp_disconnect_channel(struct channel *p
 | 
				
			||||||
 	pch->ppp = NULL;
 | 
					 	pch->ppp = NULL;
 | 
				
			||||||
 	write_unlock_bh(&pch->upl);
 | 
					 	write_unlock_bh(&pch->upl);
 | 
				
			||||||
 	if (ppp) {
 | 
					 	if (ppp) {
 | 
				
			||||||
@@ -115,7 +115,7 @@ Subject: [PATCH] Update 602-qca-add-pppoe-offload-support.patch for kernel
 | 
				
			|||||||
 		/* remove it from the ppp unit's list */
 | 
					 		/* remove it from the ppp unit's list */
 | 
				
			||||||
 		ppp_lock(ppp);
 | 
					 		ppp_lock(ppp);
 | 
				
			||||||
 		list_del(&pch->clist);
 | 
					 		list_del(&pch->clist);
 | 
				
			||||||
@@ -3585,6 +3642,222 @@ static void *unit_find(struct idr *p, in
 | 
					@@ -3587,6 +3644,222 @@ static void *unit_find(struct idr *p, in
 | 
				
			||||||
 	return idr_find(p, n);
 | 
					 	return idr_find(p, n);
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -338,7 +338,7 @@ Subject: [PATCH] Update 602-qca-add-pppoe-offload-support.patch for kernel
 | 
				
			|||||||
 /* Module/initialization stuff */
 | 
					 /* Module/initialization stuff */
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 module_init(ppp_init);
 | 
					 module_init(ppp_init);
 | 
				
			||||||
@@ -3601,6 +3874,7 @@ EXPORT_SYMBOL(ppp_input_error);
 | 
					@@ -3603,6 +3876,7 @@ EXPORT_SYMBOL(ppp_input_error);
 | 
				
			||||||
 EXPORT_SYMBOL(ppp_output_wakeup);
 | 
					 EXPORT_SYMBOL(ppp_output_wakeup);
 | 
				
			||||||
 EXPORT_SYMBOL(ppp_register_compressor);
 | 
					 EXPORT_SYMBOL(ppp_register_compressor);
 | 
				
			||||||
 EXPORT_SYMBOL(ppp_unregister_compressor);
 | 
					 EXPORT_SYMBOL(ppp_unregister_compressor);
 | 
				
			||||||
@@ -480,7 +480,7 @@ Subject: [PATCH] Update 602-qca-add-pppoe-offload-support.patch for kernel
 | 
				
			|||||||
 #endif /* !(__LINUX_IF_PPPOX_H) */
 | 
					 #endif /* !(__LINUX_IF_PPPOX_H) */
 | 
				
			||||||
--- a/include/linux/netdevice.h
 | 
					--- a/include/linux/netdevice.h
 | 
				
			||||||
+++ b/include/linux/netdevice.h
 | 
					+++ b/include/linux/netdevice.h
 | 
				
			||||||
@@ -2029,6 +2029,7 @@ struct net_device {
 | 
					@@ -2040,6 +2040,7 @@ struct net_device {
 | 
				
			||||||
 	unsigned int		flags;
 | 
					 	unsigned int		flags;
 | 
				
			||||||
 	unsigned int		priv_flags;
 | 
					 	unsigned int		priv_flags;
 | 
				
			||||||
 	unsigned int		extra_priv_flags;
 | 
					 	unsigned int		extra_priv_flags;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,7 +11,7 @@ Subject: [PATCH] Update 605-qca-add-add-nss-bridge-mgr-support.patch for
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
--- a/include/linux/if_bridge.h
 | 
					--- a/include/linux/if_bridge.h
 | 
				
			||||||
+++ b/include/linux/if_bridge.h
 | 
					+++ b/include/linux/if_bridge.h
 | 
				
			||||||
@@ -231,4 +231,8 @@ typedef struct net_bridge_port *br_get_d
 | 
					@@ -230,4 +230,8 @@ typedef struct net_bridge_port *br_get_d
 | 
				
			||||||
 extern br_get_dst_hook_t __rcu *br_get_dst_hook;
 | 
					 extern br_get_dst_hook_t __rcu *br_get_dst_hook;
 | 
				
			||||||
 /* QCA NSS ECM support - End */
 | 
					 /* QCA NSS ECM support - End */
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -22,7 +22,7 @@ Subject: [PATCH] Update 605-qca-add-add-nss-bridge-mgr-support.patch for
 | 
				
			|||||||
 #endif
 | 
					 #endif
 | 
				
			||||||
--- a/net/bridge/br_fdb.c
 | 
					--- a/net/bridge/br_fdb.c
 | 
				
			||||||
+++ b/net/bridge/br_fdb.c
 | 
					+++ b/net/bridge/br_fdb.c
 | 
				
			||||||
@@ -67,6 +67,15 @@ void br_fdb_update_unregister_notify(str
 | 
					@@ -66,6 +66,15 @@ void br_fdb_update_unregister_notify(str
 | 
				
			||||||
 EXPORT_SYMBOL_GPL(br_fdb_update_unregister_notify);
 | 
					 EXPORT_SYMBOL_GPL(br_fdb_update_unregister_notify);
 | 
				
			||||||
 /* QCA NSS ECM support - End */
 | 
					 /* QCA NSS ECM support - End */
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -38,7 +38,7 @@ Subject: [PATCH] Update 605-qca-add-add-nss-bridge-mgr-support.patch for
 | 
				
			|||||||
 int __init br_fdb_init(void)
 | 
					 int __init br_fdb_init(void)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
 	br_fdb_cache = kmem_cache_create("bridge_fdb_cache",
 | 
					 	br_fdb_cache = kmem_cache_create("bridge_fdb_cache",
 | 
				
			||||||
@@ -372,7 +381,7 @@ void br_fdb_cleanup(struct work_struct *
 | 
					@@ -371,7 +380,7 @@ void br_fdb_cleanup(struct work_struct *
 | 
				
			||||||
 	unsigned long delay = hold_time(br);
 | 
					 	unsigned long delay = hold_time(br);
 | 
				
			||||||
 	unsigned long work_delay = delay;
 | 
					 	unsigned long work_delay = delay;
 | 
				
			||||||
 	unsigned long now = jiffies;
 | 
					 	unsigned long now = jiffies;
 | 
				
			||||||
@@ -47,7 +47,7 @@ Subject: [PATCH] Update 605-qca-add-add-nss-bridge-mgr-support.patch for
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 	/* this part is tricky, in order to avoid blocking learning and
 | 
					 	/* this part is tricky, in order to avoid blocking learning and
 | 
				
			||||||
 	 * consequently forwarding, we rely on rcu to delete objects with
 | 
					 	 * consequently forwarding, we rely on rcu to delete objects with
 | 
				
			||||||
@@ -400,12 +409,13 @@ void br_fdb_cleanup(struct work_struct *
 | 
					@@ -399,12 +408,13 @@ void br_fdb_cleanup(struct work_struct *
 | 
				
			||||||
 		} else {
 | 
					 		} else {
 | 
				
			||||||
 			spin_lock_bh(&br->hash_lock);
 | 
					 			spin_lock_bh(&br->hash_lock);
 | 
				
			||||||
 			if (!hlist_unhashed(&f->fdb_node)) {
 | 
					 			if (!hlist_unhashed(&f->fdb_node)) {
 | 
				
			||||||
@@ -63,7 +63,7 @@ Subject: [PATCH] Update 605-qca-add-add-nss-bridge-mgr-support.patch for
 | 
				
			|||||||
 				/* QCA NSS ECM support - End */
 | 
					 				/* QCA NSS ECM support - End */
 | 
				
			||||||
 			}
 | 
					 			}
 | 
				
			||||||
 			spin_unlock_bh(&br->hash_lock);
 | 
					 			spin_unlock_bh(&br->hash_lock);
 | 
				
			||||||
@@ -623,6 +633,7 @@ void br_fdb_update(struct net_bridge *br
 | 
					@@ -620,6 +630,7 @@ void br_fdb_update(struct net_bridge *br
 | 
				
			||||||
 		   const unsigned char *addr, u16 vid, unsigned long flags)
 | 
					 		   const unsigned char *addr, u16 vid, unsigned long flags)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
 	struct net_bridge_fdb_entry *fdb;
 | 
					 	struct net_bridge_fdb_entry *fdb;
 | 
				
			||||||
@@ -71,7 +71,7 @@ Subject: [PATCH] Update 605-qca-add-add-nss-bridge-mgr-support.patch for
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 	/* some users want to always flood. */
 | 
					 	/* some users want to always flood. */
 | 
				
			||||||
 	if (hold_time(br) == 0)
 | 
					 	if (hold_time(br) == 0)
 | 
				
			||||||
@@ -648,6 +659,12 @@ void br_fdb_update(struct net_bridge *br
 | 
					@@ -645,6 +656,12 @@ void br_fdb_update(struct net_bridge *br
 | 
				
			||||||
 			if (unlikely(source != READ_ONCE(fdb->dst) &&
 | 
					 			if (unlikely(source != READ_ONCE(fdb->dst) &&
 | 
				
			||||||
 				     !test_bit(BR_FDB_STICKY, &fdb->flags))) {
 | 
					 				     !test_bit(BR_FDB_STICKY, &fdb->flags))) {
 | 
				
			||||||
 				br_switchdev_fdb_notify(br, fdb, RTM_DELNEIGH);
 | 
					 				br_switchdev_fdb_notify(br, fdb, RTM_DELNEIGH);
 | 
				
			||||||
@@ -84,7 +84,7 @@ Subject: [PATCH] Update 605-qca-add-add-nss-bridge-mgr-support.patch for
 | 
				
			|||||||
 				WRITE_ONCE(fdb->dst, source);
 | 
					 				WRITE_ONCE(fdb->dst, source);
 | 
				
			||||||
 				fdb_modified = true;
 | 
					 				fdb_modified = true;
 | 
				
			||||||
 				/* Take over HW learned entry */
 | 
					 				/* Take over HW learned entry */
 | 
				
			||||||
@@ -659,7 +676,7 @@ void br_fdb_update(struct net_bridge *br
 | 
					@@ -656,7 +673,7 @@ void br_fdb_update(struct net_bridge *br
 | 
				
			||||||
 				/* QCA NSS ECM support - Start */
 | 
					 				/* QCA NSS ECM support - Start */
 | 
				
			||||||
 				atomic_notifier_call_chain(
 | 
					 				atomic_notifier_call_chain(
 | 
				
			||||||
 					&br_fdb_update_notifier_list,
 | 
					 					&br_fdb_update_notifier_list,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,7 +10,7 @@
 | 
				
			|||||||
 static struct flow_dissector flow_keys_bonding __read_mostly;
 | 
					 static struct flow_dissector flow_keys_bonding __read_mostly;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 /*-------------------------- Forward declarations ---------------------------*/
 | 
					 /*-------------------------- Forward declarations ---------------------------*/
 | 
				
			||||||
@@ -4060,6 +4063,23 @@ static int bond_get_lowest_level_rcu(str
 | 
					@@ -4115,6 +4118,23 @@ static int bond_get_lowest_level_rcu(str
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 #endif
 | 
					 #endif
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -34,7 +34,7 @@
 | 
				
			|||||||
 static void bond_get_stats(struct net_device *bond_dev,
 | 
					 static void bond_get_stats(struct net_device *bond_dev,
 | 
				
			||||||
 			   struct rtnl_link_stats64 *stats)
 | 
					 			   struct rtnl_link_stats64 *stats)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
@@ -5392,6 +5412,10 @@ static void bond_destructor(struct net_d
 | 
					@@ -5447,6 +5467,10 @@ static void bond_destructor(struct net_d
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	if (bond->rr_tx_counter)
 | 
					 	if (bond->rr_tx_counter)
 | 
				
			||||||
 		free_percpu(bond->rr_tx_counter);
 | 
					 		free_percpu(bond->rr_tx_counter);
 | 
				
			||||||
@@ -45,7 +45,7 @@
 | 
				
			|||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 void bond_setup(struct net_device *bond_dev)
 | 
					 void bond_setup(struct net_device *bond_dev)
 | 
				
			||||||
@@ -5969,7 +5993,14 @@ int bond_create(struct net *net, const c
 | 
					@@ -6020,7 +6044,14 @@ int bond_create(struct net *net, const c
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	bond_work_init_all(bond);
 | 
					 	bond_work_init_all(bond);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -63,7 +63,7 @@
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
--- a/include/net/bonding.h
 | 
					--- a/include/net/bonding.h
 | 
				
			||||||
+++ b/include/net/bonding.h
 | 
					+++ b/include/net/bonding.h
 | 
				
			||||||
@@ -255,6 +255,7 @@ struct bonding {
 | 
					@@ -257,6 +257,7 @@ struct bonding {
 | 
				
			||||||
 	spinlock_t ipsec_lock;
 | 
					 	spinlock_t ipsec_lock;
 | 
				
			||||||
 #endif /* CONFIG_XFRM_OFFLOAD */
 | 
					 #endif /* CONFIG_XFRM_OFFLOAD */
 | 
				
			||||||
 	struct bpf_prog *xdp_prog;
 | 
					 	struct bpf_prog *xdp_prog;
 | 
				
			||||||
@@ -71,7 +71,7 @@
 | 
				
			|||||||
 };
 | 
					 };
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 #define bond_slave_get_rcu(dev) \
 | 
					 #define bond_slave_get_rcu(dev) \
 | 
				
			||||||
@@ -629,6 +630,7 @@ struct bond_net {
 | 
					@@ -631,6 +632,7 @@ struct bond_net {
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 int bond_arp_rcv(const struct sk_buff *skb, struct bonding *bond, struct slave *slave);
 | 
					 int bond_arp_rcv(const struct sk_buff *skb, struct bonding *bond, struct slave *slave);
 | 
				
			||||||
 netdev_tx_t bond_dev_queue_xmit(struct bonding *bond, struct sk_buff *skb, struct net_device *slave_dev);
 | 
					 netdev_tx_t bond_dev_queue_xmit(struct bonding *bond, struct sk_buff *skb, struct net_device *slave_dev);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
--- a/include/linux/skbuff.h
 | 
					--- a/include/linux/skbuff.h
 | 
				
			||||||
+++ b/include/linux/skbuff.h
 | 
					+++ b/include/linux/skbuff.h
 | 
				
			||||||
@@ -687,6 +687,7 @@ typedef unsigned char *sk_buff_data_t;
 | 
					@@ -689,6 +689,7 @@ typedef unsigned char *sk_buff_data_t;
 | 
				
			||||||
  *	@offload_fwd_mark: Packet was L2-forwarded in hardware
 | 
					  *	@offload_fwd_mark: Packet was L2-forwarded in hardware
 | 
				
			||||||
  *	@offload_l3_fwd_mark: Packet was L3-forwarded in hardware
 | 
					  *	@offload_l3_fwd_mark: Packet was L3-forwarded in hardware
 | 
				
			||||||
  *	@tc_skip_classify: do not classify packet. set by IFB device
 | 
					  *	@tc_skip_classify: do not classify packet. set by IFB device
 | 
				
			||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
  *	@tc_at_ingress: used within tc_classify to distinguish in/egress
 | 
					  *	@tc_at_ingress: used within tc_classify to distinguish in/egress
 | 
				
			||||||
  *	@redirected: packet was redirected by packet classifier
 | 
					  *	@redirected: packet was redirected by packet classifier
 | 
				
			||||||
  *	@from_ingress: packet was redirected from the ingress path
 | 
					  *	@from_ingress: packet was redirected from the ingress path
 | 
				
			||||||
@@ -902,6 +903,8 @@ struct sk_buff {
 | 
					@@ -905,6 +906,8 @@ struct sk_buff {
 | 
				
			||||||
 #ifdef CONFIG_NET_CLS_ACT
 | 
					 #ifdef CONFIG_NET_CLS_ACT
 | 
				
			||||||
 	__u8			tc_skip_classify:1;
 | 
					 	__u8			tc_skip_classify:1;
 | 
				
			||||||
 	__u8			tc_at_ingress:1;
 | 
					 	__u8			tc_at_ingress:1;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -52,7 +52,7 @@
 | 
				
			|||||||
 	dev->needs_free_netdev = true;
 | 
					 	dev->needs_free_netdev = true;
 | 
				
			||||||
--- a/include/linux/netdevice.h
 | 
					--- a/include/linux/netdevice.h
 | 
				
			||||||
+++ b/include/linux/netdevice.h
 | 
					+++ b/include/linux/netdevice.h
 | 
				
			||||||
@@ -4749,6 +4749,15 @@ void dev_uc_flush(struct net_device *dev
 | 
					@@ -4759,6 +4759,15 @@ void dev_uc_flush(struct net_device *dev
 | 
				
			||||||
 void dev_uc_init(struct net_device *dev);
 | 
					 void dev_uc_init(struct net_device *dev);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 /**
 | 
					 /**
 | 
				
			||||||
@@ -68,7 +68,7 @@
 | 
				
			|||||||
  *  __dev_uc_sync - Synchonize device's unicast list
 | 
					  *  __dev_uc_sync - Synchonize device's unicast list
 | 
				
			||||||
  *  @dev:  device to sync
 | 
					  *  @dev:  device to sync
 | 
				
			||||||
  *  @sync: function to call if address should be added
 | 
					  *  @sync: function to call if address should be added
 | 
				
			||||||
@@ -5298,6 +5307,11 @@ static inline bool netif_is_failover_sla
 | 
					@@ -5317,6 +5326,11 @@ static inline bool netif_is_failover_sla
 | 
				
			||||||
 	return dev->priv_flags & IFF_FAILOVER_SLAVE;
 | 
					 	return dev->priv_flags & IFF_FAILOVER_SLAVE;
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -333,7 +333,7 @@
 | 
				
			|||||||
 #endif
 | 
					 #endif
 | 
				
			||||||
--- a/net/sched/sch_api.c
 | 
					--- a/net/sched/sch_api.c
 | 
				
			||||||
+++ b/net/sched/sch_api.c
 | 
					+++ b/net/sched/sch_api.c
 | 
				
			||||||
@@ -2304,4 +2304,26 @@ static int __init pktsched_init(void)
 | 
					@@ -2351,4 +2351,26 @@ static int __init pktsched_init(void)
 | 
				
			||||||
 	return 0;
 | 
					 	return 0;
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -430,9 +430,9 @@
 | 
				
			|||||||
 /* Reset all TX qdiscs greater than index of a device.  */
 | 
					 /* Reset all TX qdiscs greater than index of a device.  */
 | 
				
			||||||
 static inline void qdisc_reset_all_tx_gt(struct net_device *dev, unsigned int i)
 | 
					 static inline void qdisc_reset_all_tx_gt(struct net_device *dev, unsigned int i)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
@@ -1336,4 +1371,9 @@ void mini_qdisc_pair_block_init(struct m
 | 
					@@ -1342,4 +1377,9 @@ static inline void qdisc_synchronize(con
 | 
				
			||||||
 
 | 
					 		msleep(1);
 | 
				
			||||||
 int sch_frag_xmit_hook(struct sk_buff *skb, int (*xmit)(struct sk_buff *skb));
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
+/* QCA NSS Qdisc Support - Start */
 | 
					+/* QCA NSS Qdisc Support - Start */
 | 
				
			||||||
+void qdisc_destroy(struct Qdisc *qdisc);
 | 
					+void qdisc_destroy(struct Qdisc *qdisc);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
--- a/net/l2tp/l2tp_core.c
 | 
					--- a/net/l2tp/l2tp_core.c
 | 
				
			||||||
+++ b/net/l2tp/l2tp_core.c
 | 
					+++ b/net/l2tp/l2tp_core.c
 | 
				
			||||||
@@ -400,6 +400,31 @@ err_tlock:
 | 
					@@ -398,6 +398,31 @@ err_tlock:
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 EXPORT_SYMBOL_GPL(l2tp_session_register);
 | 
					 EXPORT_SYMBOL_GPL(l2tp_session_register);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,7 +10,7 @@
 | 
				
			|||||||
 	__u32 flags;		/* tunnel flags */
 | 
					 	__u32 flags;		/* tunnel flags */
 | 
				
			||||||
--- a/include/net/ip_tunnels.h
 | 
					--- a/include/net/ip_tunnels.h
 | 
				
			||||||
+++ b/include/net/ip_tunnels.h
 | 
					+++ b/include/net/ip_tunnels.h
 | 
				
			||||||
@@ -531,4 +531,9 @@ static inline void ip_tunnel_info_opts_s
 | 
					@@ -534,4 +534,9 @@ static inline void ip_tunnel_info_opts_s
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 #endif /* CONFIG_INET */
 | 
					 #endif /* CONFIG_INET */
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -22,7 +22,7 @@
 | 
				
			|||||||
 #endif /* __NET_IP_TUNNELS_H */
 | 
					 #endif /* __NET_IP_TUNNELS_H */
 | 
				
			||||||
--- a/net/ipv6/ip6_tunnel.c
 | 
					--- a/net/ipv6/ip6_tunnel.c
 | 
				
			||||||
+++ b/net/ipv6/ip6_tunnel.c
 | 
					+++ b/net/ipv6/ip6_tunnel.c
 | 
				
			||||||
@@ -2429,6 +2429,26 @@ nla_put_failure:
 | 
					@@ -2440,6 +2440,26 @@ nla_put_failure:
 | 
				
			||||||
 	return -EMSGSIZE;
 | 
					 	return -EMSGSIZE;
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -51,7 +51,7 @@
 | 
				
			|||||||
 	struct ip6_tnl *tunnel = netdev_priv(dev);
 | 
					 	struct ip6_tnl *tunnel = netdev_priv(dev);
 | 
				
			||||||
--- a/net/ipv6/sit.c
 | 
					--- a/net/ipv6/sit.c
 | 
				
			||||||
+++ b/net/ipv6/sit.c
 | 
					+++ b/net/ipv6/sit.c
 | 
				
			||||||
@@ -1794,6 +1794,23 @@ nla_put_failure:
 | 
					@@ -1798,6 +1798,23 @@ nla_put_failure:
 | 
				
			||||||
 	return -EMSGSIZE;
 | 
					 	return -EMSGSIZE;
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -59,7 +59,7 @@
 | 
				
			|||||||
 /* caller should hold vxlan->hash_lock */
 | 
					 /* caller should hold vxlan->hash_lock */
 | 
				
			||||||
 static struct vxlan_rdst *vxlan_fdb_find_rdst(struct vxlan_fdb *f,
 | 
					 static struct vxlan_rdst *vxlan_fdb_find_rdst(struct vxlan_fdb *f,
 | 
				
			||||||
 					      union vxlan_addr *ip, __be16 port,
 | 
					 					      union vxlan_addr *ip, __be16 port,
 | 
				
			||||||
@@ -2744,6 +2775,9 @@ static void vxlan_xmit_one(struct sk_buf
 | 
					@@ -2746,6 +2777,9 @@ static void vxlan_xmit_one(struct sk_buf
 | 
				
			||||||
 			goto out_unlock;
 | 
					 			goto out_unlock;
 | 
				
			||||||
 		}
 | 
					 		}
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -69,7 +69,7 @@
 | 
				
			|||||||
 		tos = ip_tunnel_ecn_encap(tos, old_iph, skb);
 | 
					 		tos = ip_tunnel_ecn_encap(tos, old_iph, skb);
 | 
				
			||||||
 		ttl = ttl ? : ip4_dst_hoplimit(&rt->dst);
 | 
					 		ttl = ttl ? : ip4_dst_hoplimit(&rt->dst);
 | 
				
			||||||
 		err = vxlan_build_skb(skb, ndst, sizeof(struct iphdr),
 | 
					 		err = vxlan_build_skb(skb, ndst, sizeof(struct iphdr),
 | 
				
			||||||
@@ -2814,6 +2848,9 @@ static void vxlan_xmit_one(struct sk_buf
 | 
					@@ -2817,6 +2851,9 @@ static void vxlan_xmit_one(struct sk_buf
 | 
				
			||||||
 		if (err < 0)
 | 
					 		if (err < 0)
 | 
				
			||||||
 			goto tx_error;
 | 
					 			goto tx_error;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -101,7 +101,7 @@
 | 
				
			|||||||
 struct net_device *vxlan_dev_create(struct net *net, const char *name,
 | 
					 struct net_device *vxlan_dev_create(struct net *net, const char *name,
 | 
				
			||||||
 				    u8 name_assign_type, struct vxlan_config *conf);
 | 
					 				    u8 name_assign_type, struct vxlan_config *conf);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -376,6 +389,15 @@ static inline __be32 vxlan_compute_rco(u
 | 
					@@ -381,6 +394,15 @@ static inline __be32 vxlan_compute_rco(u
 | 
				
			||||||
 	return vni_field;
 | 
					 	return vni_field;
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
--- a/include/linux/ppp_channel.h
 | 
					--- a/include/linux/ppp_channel.h
 | 
				
			||||||
+++ b/include/linux/ppp_channel.h
 | 
					+++ b/include/linux/ppp_channel.h
 | 
				
			||||||
@@ -45,6 +56,47 @@ struct ppp_channel {
 | 
					@@ -59,6 +59,51 @@ struct ppp_channel {
 | 
				
			||||||
 };
 | 
					 };
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 #ifdef __KERNEL__
 | 
					 #ifdef __KERNEL__
 | 
				
			||||||
@@ -32,9 +32,13 @@
 | 
				
			|||||||
+extern int ppp_hold_channels(struct net_device *dev,
 | 
					+extern int ppp_hold_channels(struct net_device *dev,
 | 
				
			||||||
+                             struct ppp_channel *channels[],
 | 
					+                             struct ppp_channel *channels[],
 | 
				
			||||||
+                             unsigned int chan_sz);
 | 
					+                             unsigned int chan_sz);
 | 
				
			||||||
 | 
					+extern int __ppp_hold_channels(struct net_device *dev,
 | 
				
			||||||
 | 
					+ 				struct ppp_channel *channels[],
 | 
				
			||||||
 | 
					+ 				unsigned int chan_sz);
 | 
				
			||||||
+
 | 
					+
 | 
				
			||||||
+/* Test if the ppp device is a multi-link ppp device */
 | 
					+/* Test if the ppp device is a multi-link ppp device */
 | 
				
			||||||
+extern int ppp_is_multilink(struct net_device *dev);
 | 
					+extern int ppp_is_multilink(struct net_device *dev);
 | 
				
			||||||
 | 
					+extern int __ppp_is_multilink(struct net_device *dev);
 | 
				
			||||||
+
 | 
					+
 | 
				
			||||||
+/* Update statistics of the PPP net_device by incrementing related
 | 
					+/* Update statistics of the PPP net_device by incrementing related
 | 
				
			||||||
+ * statistics field value with corresponding parameter
 | 
					+ * statistics field value with corresponding parameter
 | 
				
			||||||
@@ -48,7 +52,7 @@
 | 
				
			|||||||
 /* Called by the channel when it can send some more data. */
 | 
					 /* Called by the channel when it can send some more data. */
 | 
				
			||||||
 extern void ppp_output_wakeup(struct ppp_channel *);
 | 
					 extern void ppp_output_wakeup(struct ppp_channel *);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -83,5 +135,17 @@ extern char *ppp_dev_name(struct ppp_cha
 | 
					@@ -146,5 +191,17 @@ extern void ppp_update_stats(struct net_
 | 
				
			||||||
  * that ppp_unregister_channel returns.
 | 
					  * that ppp_unregister_channel returns.
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -101,7 +105,28 @@
 | 
				
			|||||||
 #endif
 | 
					 #endif
 | 
				
			||||||
--- a/net/l2tp/l2tp_ppp.c
 | 
					--- a/net/l2tp/l2tp_ppp.c
 | 
				
			||||||
+++ b/net/l2tp/l2tp_ppp.c
 | 
					+++ b/net/l2tp/l2tp_ppp.c
 | 
				
			||||||
@@ -380,6 +392,13 @@ static int pppol2tp_xmit(struct ppp_chan
 | 
					@@ -123,9 +123,17 @@ struct pppol2tp_session {
 | 
				
			||||||
 | 
					 };
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 static int pppol2tp_xmit(struct ppp_channel *chan, struct sk_buff *skb);
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-static const struct ppp_channel_ops pppol2tp_chan_ops = {
 | 
				
			||||||
 | 
					-	.start_xmit =  pppol2tp_xmit,
 | 
				
			||||||
 | 
					+static int pppol2tp_get_channel_protocol(struct ppp_channel *);
 | 
				
			||||||
 | 
					+static int pppol2tp_get_channel_protocol_ver(struct ppp_channel *);
 | 
				
			||||||
 | 
					+static void pppol2tp_hold_chan(struct ppp_channel *);
 | 
				
			||||||
 | 
					+static void pppol2tp_release_chan(struct ppp_channel *);
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+static const struct pppol2tp_channel_ops pppol2tp_chan_ops = {
 | 
				
			||||||
 | 
					+	.ops.start_xmit =  pppol2tp_xmit,
 | 
				
			||||||
 | 
					+	.ops.get_channel_protocol = pppol2tp_get_channel_protocol,
 | 
				
			||||||
 | 
					+	.ops.get_channel_protocol_ver = pppol2tp_get_channel_protocol_ver,
 | 
				
			||||||
 | 
					+	.ops.hold = pppol2tp_hold_chan,
 | 
				
			||||||
 | 
					+	.ops.release = pppol2tp_release_chan,
 | 
				
			||||||
 | 
					 };
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 static const struct proto_ops pppol2tp_ops;
 | 
				
			||||||
 | 
					@@ -374,6 +382,13 @@ static int pppol2tp_xmit(struct ppp_chan
 | 
				
			||||||
 	skb->data[0] = PPP_ALLSTATIONS;
 | 
					 	skb->data[0] = PPP_ALLSTATIONS;
 | 
				
			||||||
 	skb->data[1] = PPP_UI;
 | 
					 	skb->data[1] = PPP_UI;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -113,9 +138,18 @@
 | 
				
			|||||||
+	/* QCA NSS ECM support - End */
 | 
					+	/* QCA NSS ECM support - End */
 | 
				
			||||||
+
 | 
					+
 | 
				
			||||||
 	local_bh_disable();
 | 
					 	local_bh_disable();
 | 
				
			||||||
 	l2tp_xmit_skb(session, skb, session->hdr_len);
 | 
					 	l2tp_xmit_skb(session, skb);
 | 
				
			||||||
 	local_bh_enable();
 | 
					 	local_bh_enable();
 | 
				
			||||||
@@ -1749,6 +1768,109 @@ static void __exit pppol2tp_exit(void)
 | 
					@@ -819,7 +834,7 @@ static int pppol2tp_connect(struct socke
 | 
				
			||||||
 | 
					 	po->chan.hdrlen = PPPOL2TP_L2TP_HDR_SIZE_NOSEQ;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 	po->chan.private = sk;
 | 
				
			||||||
 | 
					-	po->chan.ops	 = &pppol2tp_chan_ops;
 | 
				
			||||||
 | 
					+	po->chan.ops	 = (struct ppp_channel_ops *)&pppol2tp_chan_ops.ops;
 | 
				
			||||||
 | 
					 	po->chan.mtu	 = pppol2tp_tunnel_mtu(tunnel);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 	error = ppp_register_net_channel(sock_net(sk), &po->chan);
 | 
				
			||||||
 | 
					@@ -1733,6 +1748,109 @@ static void __exit pppol2tp_exit(void)
 | 
				
			||||||
 	unregister_pernet_device(&pppol2tp_net_ops);
 | 
					 	unregister_pernet_device(&pppol2tp_net_ops);
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -225,110 +259,106 @@
 | 
				
			|||||||
 module_init(pppol2tp_init);
 | 
					 module_init(pppol2tp_init);
 | 
				
			||||||
 module_exit(pppol2tp_exit);
 | 
					 module_exit(pppol2tp_exit);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
*** a/drivers/net/ppp/ppp_generic.c	2022-04-06 17:25:52.144576100 +0900
 | 
					--- a/drivers/net/ppp/ppp_generic.c
 | 
				
			||||||
--- b/drivers/net/ppp/ppp_generic.c	2022-04-06 17:32:55.164576100 +0900
 | 
					+++ b/drivers/net/ppp/ppp_generic.c
 | 
				
			||||||
*************** int ppp_is_multilink(struct net_device *
 | 
					@@ -3742,6 +3742,32 @@ int ppp_is_multilink(struct net_device *
 | 
				
			||||||
*** 3502,3507 ****
 | 
					 }
 | 
				
			||||||
--- 3502,3533 ----
 | 
					 EXPORT_SYMBOL(ppp_is_multilink);
 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  EXPORT_SYMBOL(ppp_is_multilink);
 | 
					 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
+ /* __ppp_is_multilink()
 | 
					+/* __ppp_is_multilink()
 | 
				
			||||||
+  *      Returns >0 if the device is a multilink PPP netdevice, 0 if not or < 0
 | 
					+ *      Returns >0 if the device is a multilink PPP netdevice, 0 if not or < 0
 | 
				
			||||||
+  *      if the device is not PPP. Caller should acquire ppp_lock before calling
 | 
					+ *      if the device is not PPP. Caller should acquire ppp_lock before calling
 | 
				
			||||||
+  *      this function
 | 
					+ *      this function
 | 
				
			||||||
+  */
 | 
					+ */
 | 
				
			||||||
+ int __ppp_is_multilink(struct net_device *dev)
 | 
					+int __ppp_is_multilink(struct net_device *dev)
 | 
				
			||||||
+ {
 | 
					+{
 | 
				
			||||||
+ 	struct ppp *ppp;
 | 
					+	struct ppp *ppp;
 | 
				
			||||||
+ 	unsigned int flags;
 | 
					+	unsigned int flags;
 | 
				
			||||||
+
 | 
					+
 | 
				
			||||||
+ 	if (!dev)
 | 
					+	if (!dev)
 | 
				
			||||||
+ 		return -1;
 | 
					+		return -1;
 | 
				
			||||||
+
 | 
					+
 | 
				
			||||||
+ 	if (dev->type != ARPHRD_PPP)
 | 
					+	if (dev->type != ARPHRD_PPP)
 | 
				
			||||||
+ 		return -1;
 | 
					+		return -1;
 | 
				
			||||||
+
 | 
					+
 | 
				
			||||||
+ 	ppp = netdev_priv(dev);
 | 
					+	ppp = netdev_priv(dev);
 | 
				
			||||||
+ 	flags = ppp->flags;
 | 
					+	flags = ppp->flags;
 | 
				
			||||||
+
 | 
					+
 | 
				
			||||||
+ 	if (flags & SC_MULTILINK)
 | 
					+	if (flags & SC_MULTILINK)
 | 
				
			||||||
+ 		return 1;
 | 
					+		return 1;
 | 
				
			||||||
+
 | 
					+
 | 
				
			||||||
+ 	return 0;
 | 
					+	return 0;
 | 
				
			||||||
+ }
 | 
					+}
 | 
				
			||||||
+ EXPORT_SYMBOL(__ppp_is_multilink);
 | 
					+EXPORT_SYMBOL(__ppp_is_multilink);
 | 
				
			||||||
+
 | 
					+
 | 
				
			||||||
  /* ppp_channel_get_protocol()
 | 
					 /* ppp_channel_get_protocol()
 | 
				
			||||||
   *	Call this to obtain the underlying protocol of the PPP channel,
 | 
					  *	Call this to obtain the underlying protocol of the PPP channel,
 | 
				
			||||||
   *	e.g. PX_PROTO_OE
 | 
					  *	e.g. PX_PROTO_OE
 | 
				
			||||||
*************** int ppp_hold_channels(struct net_device
 | 
					@@ -3880,6 +3906,59 @@ int ppp_hold_channels(struct net_device
 | 
				
			||||||
*** 3606,3611 ****
 | 
					 }
 | 
				
			||||||
--- 3632,3690 ----
 | 
					 EXPORT_SYMBOL(ppp_hold_channels);
 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  EXPORT_SYMBOL(ppp_hold_channels);
 | 
					 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
+ /* __ppp_hold_channels()
 | 
					+/* __ppp_hold_channels()
 | 
				
			||||||
+  *	Returns the PPP channels of the PPP device, storing each one into
 | 
					+ *	Returns the PPP channels of the PPP device, storing each one into
 | 
				
			||||||
+  *	channels[].
 | 
					+ *	channels[].
 | 
				
			||||||
+  *
 | 
					+ *
 | 
				
			||||||
+  * channels[] has chan_sz elements.
 | 
					+ * channels[] has chan_sz elements.
 | 
				
			||||||
+  * This function returns the number of channels stored, up to chan_sz.
 | 
					+ * This function returns the number of channels stored, up to chan_sz.
 | 
				
			||||||
+  * It will return < 0 if the device is not PPP.
 | 
					+ * It will return < 0 if the device is not PPP.
 | 
				
			||||||
+  *
 | 
					+ *
 | 
				
			||||||
+  * You MUST release the channels using ppp_release_channels().
 | 
					+ * You MUST release the channels using ppp_release_channels().
 | 
				
			||||||
+  */
 | 
					+ */
 | 
				
			||||||
+ int __ppp_hold_channels(struct net_device *dev, struct ppp_channel *channels[],
 | 
					+int __ppp_hold_channels(struct net_device *dev, struct ppp_channel *channels[],
 | 
				
			||||||
+ 		      unsigned int chan_sz)
 | 
					+		      unsigned int chan_sz)
 | 
				
			||||||
+ {
 | 
					+{
 | 
				
			||||||
+ 	struct ppp *ppp;
 | 
					+	struct ppp *ppp;
 | 
				
			||||||
+ 	int c;
 | 
					+	int c;
 | 
				
			||||||
+ 	struct channel *pch;
 | 
					+	struct channel *pch;
 | 
				
			||||||
+
 | 
					+
 | 
				
			||||||
+ 	if (!dev)
 | 
					+	if (!dev)
 | 
				
			||||||
+ 		return -1;
 | 
					+		return -1;
 | 
				
			||||||
+
 | 
					+
 | 
				
			||||||
+ 	if (dev->type != ARPHRD_PPP)
 | 
					+	if (dev->type != ARPHRD_PPP)
 | 
				
			||||||
+ 		return -1;
 | 
					+		return -1;
 | 
				
			||||||
+
 | 
					+
 | 
				
			||||||
+ 	ppp = netdev_priv(dev);
 | 
					+	ppp = netdev_priv(dev);
 | 
				
			||||||
+
 | 
					+
 | 
				
			||||||
+ 	c = 0;
 | 
					+	c = 0;
 | 
				
			||||||
+ 	list_for_each_entry(pch, &ppp->channels, clist) {
 | 
					+	list_for_each_entry(pch, &ppp->channels, clist) {
 | 
				
			||||||
+ 		struct ppp_channel *chan;
 | 
					+		struct ppp_channel *chan;
 | 
				
			||||||
+
 | 
					+
 | 
				
			||||||
+ 		if (!pch->chan) {
 | 
					+		if (!pch->chan) {
 | 
				
			||||||
+ 			/* Channel is going / gone away */
 | 
					+			/* Channel is going / gone away */
 | 
				
			||||||
+ 			continue;
 | 
					+			continue;
 | 
				
			||||||
+ 		}
 | 
					+		}
 | 
				
			||||||
+
 | 
					+
 | 
				
			||||||
+ 		if (c == chan_sz) {
 | 
					+		if (c == chan_sz) {
 | 
				
			||||||
+ 			/* No space to record channel */
 | 
					+			/* No space to record channel */
 | 
				
			||||||
+ 			return c;
 | 
					+			return c;
 | 
				
			||||||
+ 		}
 | 
					+		}
 | 
				
			||||||
+
 | 
					+
 | 
				
			||||||
+ 		/* Hold the channel, if supported */
 | 
					+		/* Hold the channel, if supported */
 | 
				
			||||||
+ 		chan = pch->chan;
 | 
					+		chan = pch->chan;
 | 
				
			||||||
+ 		if (!chan->ops->hold)
 | 
					+		if (!chan->ops->hold)
 | 
				
			||||||
+ 			continue;
 | 
					+			continue;
 | 
				
			||||||
+
 | 
					+
 | 
				
			||||||
+ 		chan->ops->hold(chan);
 | 
					+		chan->ops->hold(chan);
 | 
				
			||||||
+
 | 
					+
 | 
				
			||||||
+ 		 /* Record the channel */
 | 
					+		 /* Record the channel */
 | 
				
			||||||
+ 		channels[c++] = chan;
 | 
					+		channels[c++] = chan;
 | 
				
			||||||
+ 	}
 | 
					+	}
 | 
				
			||||||
+ 	return c;
 | 
					+	return c;
 | 
				
			||||||
+ }
 | 
					+}
 | 
				
			||||||
+ EXPORT_SYMBOL(__ppp_hold_channels);
 | 
					+EXPORT_SYMBOL(__ppp_hold_channels);
 | 
				
			||||||
+
 | 
					+
 | 
				
			||||||
  /* ppp_release_channels()
 | 
					 /* ppp_release_channels()
 | 
				
			||||||
   *	Releases channels
 | 
					  *	Releases channels
 | 
				
			||||||
   */
 | 
					  */
 | 
				
			||||||
--- a/net/l2tp/l2tp_core.h
 | 
					--- a/net/l2tp/l2tp_core.h
 | 
				
			||||||
+++ b/net/l2tp/l2tp_core.h
 | 
					+++ b/net/l2tp/l2tp_core.h
 | 
				
			||||||
@@ -232,6 +232,9 @@ struct l2tp_session *l2tp_session_get_nt
 | 
					@@ -235,6 +235,9 @@ struct l2tp_session *l2tp_session_get_by
 | 
				
			||||||
 struct l2tp_session *l2tp_session_get_by_ifname(const struct net *net,
 | 
					 void l2tp_stats_update(struct l2tp_tunnel *tunnel, struct l2tp_session *session,
 | 
				
			||||||
 						const char *ifname);
 | 
					                        struct l2tp_stats *stats);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
+void l2tp_stats_update(struct l2tp_tunnel *tunnel, struct l2tp_session *session,
 | 
					+void l2tp_stats_update(struct l2tp_tunnel *tunnel, struct l2tp_session *session,
 | 
				
			||||||
+                       struct l2tp_stats *stats);
 | 
					+                       struct l2tp_stats *stats);
 | 
				
			||||||
@@ -336,67 +366,3 @@
 | 
				
			|||||||
 /* Tunnel and session lifetime management.
 | 
					 /* Tunnel and session lifetime management.
 | 
				
			||||||
  * Creation of a new instance is a two-step process: create, then register.
 | 
					  * Creation of a new instance is a two-step process: create, then register.
 | 
				
			||||||
  * Destruction is triggered using the *_delete functions, and completes asynchronously.
 | 
					  * Destruction is triggered using the *_delete functions, and completes asynchronously.
 | 
				
			||||||
*** a/net/l2tp/l2tp_ppp.c	2022-08-20 11:19:37.748454800 +0900
 | 
					 | 
				
			||||||
--- b/net/l2tp/l2tp_ppp.c	2022-08-20 11:24:40.138454800 +0900
 | 
					 | 
				
			||||||
*************** struct pppol2tp_session {
 | 
					 | 
				
			||||||
*** 123,131 ****
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
  static int pppol2tp_xmit(struct ppp_channel *chan, struct sk_buff *skb);
 | 
					 | 
				
			||||||
! 
 | 
					 | 
				
			||||||
! static const struct ppp_channel_ops pppol2tp_chan_ops = {
 | 
					 | 
				
			||||||
! 	.start_xmit =  pppol2tp_xmit,
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
  static const struct proto_ops pppol2tp_ops;
 | 
					 | 
				
			||||||
--- 123,139 ----
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
  static int pppol2tp_xmit(struct ppp_channel *chan, struct sk_buff *skb);
 | 
					 | 
				
			||||||
! static int pppol2tp_get_channel_protocol(struct ppp_channel *);
 | 
					 | 
				
			||||||
! static int pppol2tp_get_channel_protocol_ver(struct ppp_channel *);
 | 
					 | 
				
			||||||
! static void pppol2tp_hold_chan(struct ppp_channel *);
 | 
					 | 
				
			||||||
! static void pppol2tp_release_chan(struct ppp_channel *);
 | 
					 | 
				
			||||||
! 
 | 
					 | 
				
			||||||
! static const struct pppol2tp_channel_ops pppol2tp_chan_ops = {
 | 
					 | 
				
			||||||
! 	.ops.start_xmit =  pppol2tp_xmit,
 | 
					 | 
				
			||||||
! 	.ops.get_channel_protocol = pppol2tp_get_channel_protocol,
 | 
					 | 
				
			||||||
! 	.ops.get_channel_protocol_ver = pppol2tp_get_channel_protocol_ver,
 | 
					 | 
				
			||||||
! 	.ops.hold = pppol2tp_hold_chan,
 | 
					 | 
				
			||||||
! 	.ops.release = pppol2tp_release_chan,
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
  static const struct proto_ops pppol2tp_ops;
 | 
					 | 
				
			||||||
*************** static int pppol2tp_connect(struct socke
 | 
					 | 
				
			||||||
*** 809,815 ****
 | 
					 | 
				
			||||||
  	po->chan.hdrlen = PPPOL2TP_L2TP_HDR_SIZE_NOSEQ;
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
  	po->chan.private = sk;
 | 
					 | 
				
			||||||
! 	po->chan.ops	 = &pppol2tp_chan_ops;
 | 
					 | 
				
			||||||
  	po->chan.mtu	 = pppol2tp_tunnel_mtu(tunnel);
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
  	error = ppp_register_net_channel(sock_net(sk), &po->chan);
 | 
					 | 
				
			||||||
--- 875,881 ----
 | 
					 | 
				
			||||||
  	po->chan.hdrlen = PPPOL2TP_L2TP_HDR_SIZE_NOSEQ;
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
  	po->chan.private = sk;
 | 
					 | 
				
			||||||
! 	po->chan.ops	 = (struct ppp_channel_ops *)&pppol2tp_chan_ops.ops;
 | 
					 | 
				
			||||||
  	po->chan.mtu	 = pppol2tp_tunnel_mtu(tunnel);
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
  	error = ppp_register_net_channel(sock_net(sk), &po->chan);
 | 
					 | 
				
			||||||
--- a/include/linux/ppp_channel.h	2022-11-08 21:01:55.607003500 +0900
 | 
					 | 
				
			||||||
+++ b/include/linux/ppp_channel.h	2022-11-08 21:03:40.027003500 +0900
 | 
					 | 
				
			||||||
@@ -87,9 +87,13 @@ extern int ppp_dev_index(struct ppp_chan
 | 
					 | 
				
			||||||
 extern int ppp_hold_channels(struct net_device *dev,
 | 
					 | 
				
			||||||
                              struct ppp_channel *channels[],
 | 
					 | 
				
			||||||
                              unsigned int chan_sz);
 | 
					 | 
				
			||||||
+extern int __ppp_hold_channels(struct net_device *dev,
 | 
					 | 
				
			||||||
+ 				struct ppp_channel *channels[],
 | 
					 | 
				
			||||||
+ 				unsigned int chan_sz);
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 /* Test if the ppp device is a multi-link ppp device */
 | 
					 | 
				
			||||||
 extern int ppp_is_multilink(struct net_device *dev);
 | 
					 | 
				
			||||||
+extern int __ppp_is_multilink(struct net_device *dev);
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 /* Update statistics of the PPP net_device by incrementing related
 | 
					 | 
				
			||||||
  * statistics field value with corresponding parameter
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
--- a/net/ipv6/ip6_tunnel.c	2022-11-08 20:48:53.057003500 +0900
 | 
					--- a/net/ipv6/ip6_tunnel.c
 | 
				
			||||||
+++ b/net/ipv6/ip6_tunnel.c	2022-11-08 20:49:15.247003500 +0900
 | 
					+++ b/net/ipv6/ip6_tunnel.c
 | 
				
			||||||
@@ -2435,7 +2435,7 @@ nla_put_failure:
 | 
					@@ -2446,7 +2446,7 @@ nla_put_failure:
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
 void ip6_update_offload_stats(struct net_device *dev, void *ptr)
 | 
					 void ip6_update_offload_stats(struct net_device *dev, void *ptr)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
@@ -9,9 +9,9 @@
 | 
				
			|||||||
 	const struct pcpu_sw_netstats *offload_stats =
 | 
					 	const struct pcpu_sw_netstats *offload_stats =
 | 
				
			||||||
 					(struct pcpu_sw_netstats *)ptr;
 | 
					 					(struct pcpu_sw_netstats *)ptr;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
--- a/net/ipv6/sit.c	2022-11-08 20:49:54.917003500 +0900
 | 
					--- a/net/ipv6/sit.c
 | 
				
			||||||
+++ b/net/ipv6/sit.c	2022-11-08 20:50:05.637003500 +0900
 | 
					+++ b/net/ipv6/sit.c
 | 
				
			||||||
@@ -1797,7 +1797,7 @@ nla_put_failure:
 | 
					@@ -1801,7 +1801,7 @@ nla_put_failure:
 | 
				
			||||||
 /* QCA NSS Clients Support - Start */
 | 
					 /* QCA NSS Clients Support - Start */
 | 
				
			||||||
 void ipip6_update_offload_stats(struct net_device *dev, void *ptr)
 | 
					 void ipip6_update_offload_stats(struct net_device *dev, void *ptr)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
--- a/include/linux/if_bridge.h
 | 
					--- a/include/linux/if_bridge.h
 | 
				
			||||||
+++ b/include/linux/if_bridge.h
 | 
					+++ b/include/linux/if_bridge.h
 | 
				
			||||||
@@ -235,4 +235,17 @@ extern br_get_dst_hook_t __rcu *br_get_d
 | 
					@@ -234,4 +234,17 @@ extern br_get_dst_hook_t __rcu *br_get_d
 | 
				
			||||||
 extern struct net_device *br_fdb_bridge_dev_get_and_hold(struct net_bridge *br);
 | 
					 extern struct net_device *br_fdb_bridge_dev_get_and_hold(struct net_bridge *br);
 | 
				
			||||||
 /* QCA NSS bridge-mgr support - End */
 | 
					 /* QCA NSS bridge-mgr support - End */
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -20,7 +20,7 @@
 | 
				
			|||||||
 #endif
 | 
					 #endif
 | 
				
			||||||
--- a/net/bridge/br_fdb.c
 | 
					--- a/net/bridge/br_fdb.c
 | 
				
			||||||
+++ b/net/bridge/br_fdb.c
 | 
					+++ b/net/bridge/br_fdb.c
 | 
				
			||||||
@@ -186,6 +186,7 @@ struct net_bridge_fdb_entry *br_fdb_find
 | 
					@@ -185,6 +185,7 @@ struct net_bridge_fdb_entry *br_fdb_find
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
 	return fdb_find_rcu(&br->fdb_hash_tbl, addr, vid);
 | 
					 	return fdb_find_rcu(&br->fdb_hash_tbl, addr, vid);
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
@@ -28,7 +28,7 @@
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 /* When a static FDB entry is added, the mac address from the entry is
 | 
					 /* When a static FDB entry is added, the mac address from the entry is
 | 
				
			||||||
  * added to the bridge private HW address list and all required ports
 | 
					  * added to the bridge private HW address list and all required ports
 | 
				
			||||||
@@ -892,6 +893,7 @@ static void fdb_notify(struct net_bridge
 | 
					@@ -887,6 +888,7 @@ static void fdb_notify(struct net_bridge
 | 
				
			||||||
 		kfree_skb(skb);
 | 
					 		kfree_skb(skb);
 | 
				
			||||||
 		goto errout;
 | 
					 		goto errout;
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
@@ -38,7 +38,7 @@
 | 
				
			|||||||
 errout:
 | 
					 errout:
 | 
				
			||||||
--- a/net/bridge/br_private.h
 | 
					--- a/net/bridge/br_private.h
 | 
				
			||||||
+++ b/net/bridge/br_private.h
 | 
					+++ b/net/bridge/br_private.h
 | 
				
			||||||
@@ -853,6 +853,7 @@ void br_manage_promisc(struct net_bridge
 | 
					@@ -833,6 +833,7 @@ void br_manage_promisc(struct net_bridge
 | 
				
			||||||
 int nbp_backup_change(struct net_bridge_port *p, struct net_device *backup_dev);
 | 
					 int nbp_backup_change(struct net_bridge_port *p, struct net_device *backup_dev);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 /* br_input.c */
 | 
					 /* br_input.c */
 | 
				
			||||||
@@ -46,7 +46,7 @@
 | 
				
			|||||||
 int br_handle_frame_finish(struct net *net, struct sock *sk, struct sk_buff *skb);
 | 
					 int br_handle_frame_finish(struct net *net, struct sock *sk, struct sk_buff *skb);
 | 
				
			||||||
 rx_handler_func_t *br_get_rx_handler(const struct net_device *dev);
 | 
					 rx_handler_func_t *br_get_rx_handler(const struct net_device *dev);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -2125,4 +2126,14 @@ struct nd_msg *br_is_nd_neigh_msg(struct
 | 
					@@ -2105,4 +2106,14 @@ struct nd_msg *br_is_nd_neigh_msg(struct
 | 
				
			||||||
 #define __br_get(__hook, __default, __args ...) \
 | 
					 #define __br_get(__hook, __default, __args ...) \
 | 
				
			||||||
 		(__hook ? (__hook(__args)) : (__default))
 | 
					 		(__hook ? (__hook(__args)) : (__default))
 | 
				
			||||||
 /* QCA NSS ECM support - End */
 | 
					 /* QCA NSS ECM support - End */
 | 
				
			||||||
@@ -73,7 +73,7 @@
 | 
				
			|||||||
 errout:
 | 
					 errout:
 | 
				
			||||||
--- a/net/bridge/br.c
 | 
					--- a/net/bridge/br.c
 | 
				
			||||||
+++ b/net/bridge/br.c
 | 
					+++ b/net/bridge/br.c
 | 
				
			||||||
@@ -463,6 +463,12 @@ static void __exit br_deinit(void)
 | 
					@@ -455,6 +455,12 @@ static void __exit br_deinit(void)
 | 
				
			||||||
 	br_fdb_fini();
 | 
					 	br_fdb_fini();
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -103,9 +103,9 @@
 | 
				
			|||||||
 			goto out;
 | 
					 			goto out;
 | 
				
			||||||
--- a/net/bridge/br_input.c
 | 
					--- a/net/bridge/br_input.c
 | 
				
			||||||
+++ b/net/bridge/br_input.c
 | 
					+++ b/net/bridge/br_input.c
 | 
				
			||||||
@@ -24,6 +24,16 @@
 | 
					@@ -23,6 +23,16 @@
 | 
				
			||||||
 | 
					 #include "br_private.h"
 | 
				
			||||||
 #include "br_private_tunnel.h"
 | 
					 #include "br_private_tunnel.h"
 | 
				
			||||||
 #include "br_private_offload.h"
 | 
					 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
+/* QCA qca-mcs support - Start */
 | 
					+/* QCA qca-mcs support - Start */
 | 
				
			||||||
+/* Hook for external Multicast handler */
 | 
					+/* Hook for external Multicast handler */
 | 
				
			||||||
@@ -120,7 +120,7 @@
 | 
				
			|||||||
 static int
 | 
					 static int
 | 
				
			||||||
 br_netif_receive_skb(struct net *net, struct sock *sk, struct sk_buff *skb)
 | 
					 br_netif_receive_skb(struct net *net, struct sock *sk, struct sk_buff *skb)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
@@ -31,7 +41,7 @@ br_netif_receive_skb(struct net *net, st
 | 
					@@ -30,7 +40,7 @@ br_netif_receive_skb(struct net *net, st
 | 
				
			||||||
 	return netif_receive_skb(skb);
 | 
					 	return netif_receive_skb(skb);
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -129,7 +129,7 @@
 | 
				
			|||||||
 {
 | 
					 {
 | 
				
			||||||
 	struct net_device *indev, *brdev = BR_INPUT_SKB_CB(skb)->brdev;
 | 
					 	struct net_device *indev, *brdev = BR_INPUT_SKB_CB(skb)->brdev;
 | 
				
			||||||
 	struct net_bridge *br = netdev_priv(brdev);
 | 
					 	struct net_bridge *br = netdev_priv(brdev);
 | 
				
			||||||
@@ -70,6 +80,7 @@ static int br_pass_frame_up(struct sk_bu
 | 
					@@ -69,6 +79,7 @@ static int br_pass_frame_up(struct sk_bu
 | 
				
			||||||
 		       dev_net(indev), NULL, skb, indev, NULL,
 | 
					 		       dev_net(indev), NULL, skb, indev, NULL,
 | 
				
			||||||
 		       br_netif_receive_skb);
 | 
					 		       br_netif_receive_skb);
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
@@ -137,7 +137,7 @@
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 /* note: already called with rcu_read_lock */
 | 
					 /* note: already called with rcu_read_lock */
 | 
				
			||||||
 int br_handle_frame_finish(struct net *net, struct sock *sk, struct sk_buff *skb)
 | 
					 int br_handle_frame_finish(struct net *net, struct sock *sk, struct sk_buff *skb)
 | 
				
			||||||
@@ -85,6 +96,11 @@ int br_handle_frame_finish(struct net *n
 | 
					@@ -84,6 +95,11 @@ int br_handle_frame_finish(struct net *n
 | 
				
			||||||
 	struct net_bridge *br;
 | 
					 	struct net_bridge *br;
 | 
				
			||||||
 	u16 vid = 0;
 | 
					 	u16 vid = 0;
 | 
				
			||||||
 	u8 state;
 | 
					 	u8 state;
 | 
				
			||||||
@@ -149,7 +149,7 @@
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 	if (!p || p->state == BR_STATE_DISABLED)
 | 
					 	if (!p || p->state == BR_STATE_DISABLED)
 | 
				
			||||||
 		goto drop;
 | 
					 		goto drop;
 | 
				
			||||||
@@ -141,6 +157,11 @@ int br_handle_frame_finish(struct net *n
 | 
					@@ -140,6 +156,11 @@ int br_handle_frame_finish(struct net *n
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	switch (pkt_type) {
 | 
					 	switch (pkt_type) {
 | 
				
			||||||
 	case BR_PKT_MULTICAST:
 | 
					 	case BR_PKT_MULTICAST:
 | 
				
			||||||
@@ -161,7 +161,7 @@
 | 
				
			|||||||
 		mdst = br_mdb_get(brmctx, skb, vid);
 | 
					 		mdst = br_mdb_get(brmctx, skb, vid);
 | 
				
			||||||
 		if ((mdst || BR_INPUT_SKB_CB_MROUTERS_ONLY(skb)) &&
 | 
					 		if ((mdst || BR_INPUT_SKB_CB_MROUTERS_ONLY(skb)) &&
 | 
				
			||||||
 		    br_multicast_querier_exists(brmctx, eth_hdr(skb), mdst)) {
 | 
					 		    br_multicast_querier_exists(brmctx, eth_hdr(skb), mdst)) {
 | 
				
			||||||
@@ -156,8 +177,15 @@ int br_handle_frame_finish(struct net *n
 | 
					@@ -155,8 +176,15 @@ int br_handle_frame_finish(struct net *n
 | 
				
			||||||
 		}
 | 
					 		}
 | 
				
			||||||
 		break;
 | 
					 		break;
 | 
				
			||||||
 	case BR_PKT_UNICAST:
 | 
					 	case BR_PKT_UNICAST:
 | 
				
			||||||
@@ -179,7 +179,7 @@
 | 
				
			|||||||
 	default:
 | 
					 	default:
 | 
				
			||||||
 		break;
 | 
					 		break;
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
@@ -172,12 +200,19 @@ int br_handle_frame_finish(struct net *n
 | 
					@@ -171,12 +199,19 @@ int br_handle_frame_finish(struct net *n
 | 
				
			||||||
 			dst->used = now;
 | 
					 			dst->used = now;
 | 
				
			||||||
 		br_forward(dst->dst, skb, local_rcv, false);
 | 
					 		br_forward(dst->dst, skb, local_rcv, false);
 | 
				
			||||||
 	} else {
 | 
					 	} else {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -45,7 +45,7 @@
 | 
				
			|||||||
 	esp.tfclen = 0;
 | 
					 	esp.tfclen = 0;
 | 
				
			||||||
 	if (x->tfcpad) {
 | 
					 	if (x->tfcpad) {
 | 
				
			||||||
 		struct xfrm_dst *dst = (struct xfrm_dst *)skb_dst(skb);
 | 
					 		struct xfrm_dst *dst = (struct xfrm_dst *)skb_dst(skb);
 | 
				
			||||||
@@ -895,6 +901,7 @@ static int esp_input(struct xfrm_state *
 | 
					@@ -897,6 +903,7 @@ static int esp_input(struct xfrm_state *
 | 
				
			||||||
 	u8 *iv;
 | 
					 	u8 *iv;
 | 
				
			||||||
 	struct scatterlist *sg;
 | 
					 	struct scatterlist *sg;
 | 
				
			||||||
 	int err = -EINVAL;
 | 
					 	int err = -EINVAL;
 | 
				
			||||||
@@ -53,7 +53,7 @@
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 	if (!pskb_may_pull(skb, sizeof(struct ip_esp_hdr) + ivlen))
 | 
					 	if (!pskb_may_pull(skb, sizeof(struct ip_esp_hdr) + ivlen))
 | 
				
			||||||
 		goto out;
 | 
					 		goto out;
 | 
				
			||||||
@@ -902,6 +909,12 @@ static int esp_input(struct xfrm_state *
 | 
					@@ -904,6 +911,12 @@ static int esp_input(struct xfrm_state *
 | 
				
			||||||
 	if (elen <= 0)
 | 
					 	if (elen <= 0)
 | 
				
			||||||
 		goto out;
 | 
					 		goto out;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -88,7 +88,7 @@
 | 
				
			|||||||
 	esp.tfclen = 0;
 | 
					 	esp.tfclen = 0;
 | 
				
			||||||
 	if (x->tfcpad) {
 | 
					 	if (x->tfcpad) {
 | 
				
			||||||
 		struct xfrm_dst *dst = (struct xfrm_dst *)skb_dst(skb);
 | 
					 		struct xfrm_dst *dst = (struct xfrm_dst *)skb_dst(skb);
 | 
				
			||||||
@@ -938,6 +944,7 @@ static int esp6_input(struct xfrm_state
 | 
					@@ -940,6 +946,7 @@ static int esp6_input(struct xfrm_state
 | 
				
			||||||
 	__be32 *seqhi;
 | 
					 	__be32 *seqhi;
 | 
				
			||||||
 	u8 *iv;
 | 
					 	u8 *iv;
 | 
				
			||||||
 	struct scatterlist *sg;
 | 
					 	struct scatterlist *sg;
 | 
				
			||||||
@@ -96,7 +96,7 @@
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 	if (!pskb_may_pull(skb, sizeof(struct ip_esp_hdr) + ivlen)) {
 | 
					 	if (!pskb_may_pull(skb, sizeof(struct ip_esp_hdr) + ivlen)) {
 | 
				
			||||||
 		ret = -EINVAL;
 | 
					 		ret = -EINVAL;
 | 
				
			||||||
@@ -949,6 +956,12 @@ static int esp6_input(struct xfrm_state
 | 
					@@ -951,6 +958,12 @@ static int esp6_input(struct xfrm_state
 | 
				
			||||||
 		goto out;
 | 
					 		goto out;
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
--- a/arch/arm/boot/dts/qcom-ipq8064.dtsi
 | 
					--- a/arch/arm/boot/dts/qcom-ipq8064.dtsi
 | 
				
			||||||
+++ b/arch/arm/boot/dts/qcom-ipq8064.dtsi
 | 
					+++ b/arch/arm/boot/dts/qcom-ipq8064.dtsi
 | 
				
			||||||
@@ -1513,7 +1513,6 @@
 | 
					@@ -1523,7 +1523,6 @@
 | 
				
			||||||
 			qcom,load-addr = <0x40000000>;
 | 
					 			qcom,load-addr = <0x40000000>;
 | 
				
			||||||
 			qcom,turbo-frequency;
 | 
					 			qcom,turbo-frequency;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 			qcom,gre-enabled;
 | 
					 			qcom,gre-enabled;
 | 
				
			||||||
 			qcom,gre-redir-enabled;
 | 
					 			qcom,gre-redir-enabled;
 | 
				
			||||||
 			qcom,gre_tunnel_enabled;
 | 
					 			qcom,gre_tunnel_enabled;
 | 
				
			||||||
@@ -1532,12 +1531,10 @@
 | 
					@@ -1542,12 +1541,10 @@
 | 
				
			||||||
 			qcom,vlan-enabled;
 | 
					 			qcom,vlan-enabled;
 | 
				
			||||||
 			qcom,wlan-dataplane-offload-enabled;
 | 
					 			qcom,wlan-dataplane-offload-enabled;
 | 
				
			||||||
 			qcom,wlanredirect-enabled;
 | 
					 			qcom,wlanredirect-enabled;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
--- a/include/linux/if_bridge.h
 | 
					--- a/include/linux/if_bridge.h
 | 
				
			||||||
+++ b/include/linux/if_bridge.h
 | 
					+++ b/include/linux/if_bridge.h
 | 
				
			||||||
@@ -198,7 +198,6 @@ extern struct net_device *br_port_dev_ge
 | 
					@@ -197,7 +197,6 @@ extern struct net_device *br_port_dev_ge
 | 
				
			||||||
 					  unsigned char *addr,
 | 
					 					  unsigned char *addr,
 | 
				
			||||||
 					  struct sk_buff *skb,
 | 
					 					  struct sk_buff *skb,
 | 
				
			||||||
 					  unsigned int cookie);
 | 
					 					  unsigned int cookie);
 | 
				
			||||||
@@ -10,7 +10,7 @@
 | 
				
			|||||||
 						     const char *addr,
 | 
					 						     const char *addr,
 | 
				
			||||||
--- a/net/bridge/br_fdb.c
 | 
					--- a/net/bridge/br_fdb.c
 | 
				
			||||||
+++ b/net/bridge/br_fdb.c
 | 
					+++ b/net/bridge/br_fdb.c
 | 
				
			||||||
@@ -1465,26 +1465,6 @@ void br_fdb_clear_offload(const struct n
 | 
					@@ -1460,26 +1460,6 @@ void br_fdb_clear_offload(const struct n
 | 
				
			||||||
 EXPORT_SYMBOL_GPL(br_fdb_clear_offload);
 | 
					 EXPORT_SYMBOL_GPL(br_fdb_clear_offload);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 /* QCA NSS ECM support - Start */
 | 
					 /* QCA NSS ECM support - Start */
 | 
				
			||||||
@@ -39,7 +39,7 @@
 | 
				
			|||||||
 {
 | 
					 {
 | 
				
			||||||
--- a/drivers/net/ppp/ppp_generic.c
 | 
					--- a/drivers/net/ppp/ppp_generic.c
 | 
				
			||||||
+++ b/drivers/net/ppp/ppp_generic.c
 | 
					+++ b/drivers/net/ppp/ppp_generic.c
 | 
				
			||||||
@@ -3772,34 +3772,6 @@ int ppp_channel_get_proto_version(struct
 | 
					@@ -3800,34 +3800,6 @@ int ppp_channel_get_proto_version(struct
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 EXPORT_SYMBOL(ppp_channel_get_proto_version);
 | 
					 EXPORT_SYMBOL(ppp_channel_get_proto_version);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -76,7 +76,7 @@
 | 
				
			|||||||
 {
 | 
					 {
 | 
				
			||||||
--- a/include/linux/ppp_channel.h
 | 
					--- a/include/linux/ppp_channel.h
 | 
				
			||||||
+++ b/include/linux/ppp_channel.h
 | 
					+++ b/include/linux/ppp_channel.h
 | 
				
			||||||
@@ -99,12 +99,6 @@ extern int ppp_channel_get_protocol(stru
 | 
					@@ -144,12 +144,6 @@ extern int ppp_channel_get_protocol(stru
 | 
				
			||||||
 /* Call this get protocol version */
 | 
					 /* Call this get protocol version */
 | 
				
			||||||
 extern int ppp_channel_get_proto_version(struct ppp_channel *);
 | 
					 extern int ppp_channel_get_proto_version(struct ppp_channel *);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -91,7 +91,7 @@
 | 
				
			|||||||
 				 unsigned int chan_sz);
 | 
					 				 unsigned int chan_sz);
 | 
				
			||||||
--- a/drivers/net/ppp/pptp.c
 | 
					--- a/drivers/net/ppp/pptp.c
 | 
				
			||||||
+++ b/drivers/net/ppp/pptp.c
 | 
					+++ b/drivers/net/ppp/pptp.c
 | 
				
			||||||
@@ -92,32 +92,6 @@ static int lookup_chan_dst(u16 call_id,
 | 
					@@ -93,32 +93,6 @@ static int lookup_chan_dst(u16 call_id,
 | 
				
			||||||
 	return i < MAX_CALLID;
 | 
					 	return i < MAX_CALLID;
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -124,7 +124,7 @@
 | 
				
			|||||||
 /* Search a pptp session based on peer call id and peer ip address */
 | 
					 /* Search a pptp session based on peer call id and peer ip address */
 | 
				
			||||||
 static int lookup_session_dst(struct pptp_opt *opt, u16 call_id, __be32 d_addr)
 | 
					 static int lookup_session_dst(struct pptp_opt *opt, u16 call_id, __be32 d_addr)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
@@ -748,20 +722,6 @@ int pptp_session_find(struct pptp_opt *o
 | 
					@@ -758,20 +732,6 @@ int pptp_session_find(struct pptp_opt *o
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 EXPORT_SYMBOL(pptp_session_find);
 | 
					 EXPORT_SYMBOL(pptp_session_find);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user