mirror of
				https://github.com/Telecominfraproject/wlan-ap.git
				synced 2025-10-31 18:38:10 +00:00 
			
		
		
		
	Compare commits
	
		
			5 Commits
		
	
	
		
			v2.3.0-rc1
			...
			release/v2
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | e3e3c9ea72 | ||
|   | a3125e6ab2 | ||
|   | 63e8b90656 | ||
|   | 70f231d948 | ||
|   | 2983d9ca2b | 
| @@ -1,4 +1,4 @@ | |||||||
| From b912dcd063381438ad70f4a3326ff0ac1be7c3ea Mon Sep 17 00:00:00 2001 | From 705ea724f1dc4083665746a1cf4c9b0f317667ec Mon Sep 17 00:00:00 2001 | ||||||
| From: Felix Fietkau <nbd@nbd.name> | From: Felix Fietkau <nbd@nbd.name> | ||||||
| Date: Tue, 26 Oct 2021 20:41:22 +0200 | Date: Tue, 26 Oct 2021 20:41:22 +0200 | ||||||
| Subject: [PATCH] bpf-headers: add a package with kernel headers for ebpf | Subject: [PATCH] bpf-headers: add a package with kernel headers for ebpf | ||||||
| @@ -87,7 +87,7 @@ index 0000000000..4e227a11d0 | |||||||
| + | + | ||||||
| diff --git a/package/kernel/bpf-headers/Makefile b/package/kernel/bpf-headers/Makefile | diff --git a/package/kernel/bpf-headers/Makefile b/package/kernel/bpf-headers/Makefile | ||||||
| new file mode 100644 | new file mode 100644 | ||||||
| index 0000000000..e316feea55 | index 0000000000..5f5b89370d | ||||||
| --- /dev/null | --- /dev/null | ||||||
| +++ b/package/kernel/bpf-headers/Makefile | +++ b/package/kernel/bpf-headers/Makefile | ||||||
| @@ -0,0 +1,99 @@ | @@ -0,0 +1,99 @@ | ||||||
| @@ -152,7 +152,7 @@ index 0000000000..e316feea55 | |||||||
| +	$(Kernel/Patch/Default) | +	$(Kernel/Patch/Default) | ||||||
| +endef | +endef | ||||||
| + | + | ||||||
| +BPF_DOC = $(wildcard $(patsubst %,$(LINUX_DIR)/scripts/%.py,bpf_doc bpf_helpers_doc)) | +BPF_DOC = $(PKG_BUILD_DIR)/scripts/bpf_helpers_doc.py | ||||||
| + | + | ||||||
| +define Build/Configure | +define Build/Configure | ||||||
| +	grep -vE 'CONFIG_(CPU_.*ENDIAN|HZ)' $(PKG_BUILD_DIR)/arch/mips/configs/generic_defconfig > $(PKG_BUILD_DIR)/.config | +	grep -vE 'CONFIG_(CPU_.*ENDIAN|HZ)' $(PKG_BUILD_DIR)/arch/mips/configs/generic_defconfig > $(PKG_BUILD_DIR)/.config | ||||||
|   | |||||||
| @@ -16,7 +16,7 @@ PKG_BUILD_DEPENDS:=bpf-headers | |||||||
|  |  | ||||||
| include $(INCLUDE_DIR)/package.mk | include $(INCLUDE_DIR)/package.mk | ||||||
| include $(INCLUDE_DIR)/cmake.mk | include $(INCLUDE_DIR)/cmake.mk | ||||||
| #include $(INCLUDE_DIR)/bpf.mk | include $(INCLUDE_DIR)/bpf.mk | ||||||
|  |  | ||||||
| define Package/qosify | define Package/qosify | ||||||
|   SECTION:=kernel |   SECTION:=kernel | ||||||
| @@ -27,12 +27,10 @@ define Package/qosify | |||||||
|   PKGFLAGS+=nonshared |   PKGFLAGS+=nonshared | ||||||
| endef | endef | ||||||
|  |  | ||||||
| #BPF_DOC = $(wildcard $(patsubst %,$(BPF_HEADERS_DIR)/scripts/%.py,bpf_doc bpf_helpers_doc)) | BPF_DOC = $(wildcard $(patsubst %,$(BPF_HEADERS_DIR)/scripts/%.py,bpf_doc bpf_helpers_doc)) | ||||||
|  |  | ||||||
| TARGET_CFLAGS += -I$(BPF_HEADERS_DIR)/user_headers/include |  | ||||||
|  |  | ||||||
| define Build/Compile | define Build/Compile | ||||||
| #	$(call CompileBPF,$(PKG_BUILD_DIR)/qosify-bpf.c) | 	$(call CompileBPF,$(PKG_BUILD_DIR)/qosify-bpf.c) | ||||||
| 	$(Build/Compile/Default) | 	$(Build/Compile/Default) | ||||||
| endef | endef | ||||||
|  |  | ||||||
| @@ -43,7 +41,7 @@ endef | |||||||
|  |  | ||||||
| define Package/qosify/install | define Package/qosify/install | ||||||
| 	$(INSTALL_DIR) $(1)/lib/bpf $(1)/usr/sbin $(1)/etc/init.d $(1)/etc/config $(1)/etc/hotplug.d/net | 	$(INSTALL_DIR) $(1)/lib/bpf $(1)/usr/sbin $(1)/etc/init.d $(1)/etc/config $(1)/etc/hotplug.d/net | ||||||
| 	$(INSTALL_DATA) ./files/qosify-bpf.o $(1)/lib/bpf | 	$(INSTALL_DATA) $(PKG_BUILD_DIR)/qosify-bpf.o $(1)/lib/bpf | ||||||
| 	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/qosify $(1)/usr/sbin/ | 	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/qosify $(1)/usr/sbin/ | ||||||
| 	$(INSTALL_BIN) ./files/qosify.init $(1)/etc/init.d/qosify | 	$(INSTALL_BIN) ./files/qosify.init $(1)/etc/init.d/qosify | ||||||
| 	$(INSTALL_DATA) ./files/qosify-defaults.conf $(1)/etc/qosify-defaults.conf | 	$(INSTALL_DATA) ./files/qosify-defaults.conf $(1)/etc/qosify-defaults.conf | ||||||
|   | |||||||
										
											Binary file not shown.
										
									
								
							| @@ -4,7 +4,7 @@ config defaults | |||||||
| 	option dscp_bulk CS0 | 	option dscp_bulk CS0 | ||||||
| 	option dscp_default_udp	CS4 | 	option dscp_default_udp	CS4 | ||||||
| 	option bulk_trigger_timeout 5 | 	option bulk_trigger_timeout 5 | ||||||
| 	option bulk_trigger_pps	100 | 	option bulk_trigger_pps	0 | ||||||
|  |  | ||||||
| config interface wan | config interface wan | ||||||
| 	option name wan | 	option name wan | ||||||
|   | |||||||
| @@ -20,7 +20,7 @@ add_defaults() { | |||||||
|  |  | ||||||
| 	json_add_boolean reset 1 | 	json_add_boolean reset 1 | ||||||
|  |  | ||||||
| 	config_get files "$cfg" files | 	config_get files "$cfg" defaults | ||||||
| 	json_add_array files | 	json_add_array files | ||||||
| 	for i in $files; do | 	for i in $files; do | ||||||
| 		json_add_string "" "$i" | 		json_add_string "" "$i" | ||||||
|   | |||||||
| @@ -62,6 +62,7 @@ int main(int argc, char **argv) | |||||||
|  |  | ||||||
| 	uloop_run(); | 	uloop_run(); | ||||||
|  |  | ||||||
|  | 	qosify_ubus_stop(); | ||||||
| 	qosify_iface_stop(); | 	qosify_iface_stop(); | ||||||
|  |  | ||||||
| 	uloop_done(); | 	uloop_done(); | ||||||
|   | |||||||
| @@ -238,6 +238,8 @@ parse_l4proto(struct qosify_config *config, struct __sk_buff *skb, | |||||||
| 		return; | 		return; | ||||||
|  |  | ||||||
| 	if ((*value & DSCP_FALLBACK_FLAG) && *dscp_out) | 	if ((*value & DSCP_FALLBACK_FLAG) && *dscp_out) | ||||||
|  | 		return; | ||||||
|  |  | ||||||
| 	*dscp_out = *value; | 	*dscp_out = *value; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -38,7 +38,7 @@ struct qosify_map_data { | |||||||
| 	uint8_t file_dscp; | 	uint8_t file_dscp; | ||||||
|  |  | ||||||
| 	union { | 	union { | ||||||
| 		uint16_t port; | 		uint32_t port; | ||||||
| 		struct in_addr ip; | 		struct in_addr ip; | ||||||
| 		struct in6_addr ip6; | 		struct in6_addr ip6; | ||||||
| 	} addr; | 	} addr; | ||||||
| @@ -77,6 +77,7 @@ void qosify_iface_status(struct blob_buf *b); | |||||||
| void qosify_iface_stop(void); | void qosify_iface_stop(void); | ||||||
|  |  | ||||||
| int qosify_ubus_init(void); | int qosify_ubus_init(void); | ||||||
|  | void qosify_ubus_stop(void); | ||||||
| int qosify_ubus_check_interface(const char *name, char *ifname, int ifname_len); | int qosify_ubus_check_interface(const char *name, char *ifname, int ifname_len); | ||||||
|  |  | ||||||
| #endif | #endif | ||||||
|   | |||||||
| @@ -139,8 +139,8 @@ static const struct blobmsg_policy qosify_config_policy[__CL_CONFIG_MAX] = { | |||||||
| 	[CL_CONFIG_RESET] = { "reset", BLOBMSG_TYPE_BOOL }, | 	[CL_CONFIG_RESET] = { "reset", BLOBMSG_TYPE_BOOL }, | ||||||
| 	[CL_CONFIG_FILES] = { "files", BLOBMSG_TYPE_ARRAY }, | 	[CL_CONFIG_FILES] = { "files", BLOBMSG_TYPE_ARRAY }, | ||||||
| 	[CL_CONFIG_TIMEOUT] = { "timeout", BLOBMSG_TYPE_INT32 }, | 	[CL_CONFIG_TIMEOUT] = { "timeout", BLOBMSG_TYPE_INT32 }, | ||||||
| 	[CL_CONFIG_DSCP_UDP] = { "dscp_default_tcp", BLOBMSG_TYPE_STRING }, | 	[CL_CONFIG_DSCP_UDP] = { "dscp_default_udp", BLOBMSG_TYPE_STRING }, | ||||||
| 	[CL_CONFIG_DSCP_TCP] = { "dscp_default_udp", BLOBMSG_TYPE_STRING }, | 	[CL_CONFIG_DSCP_TCP] = { "dscp_default_tcp", BLOBMSG_TYPE_STRING }, | ||||||
| 	[CL_CONFIG_DSCP_PRIO] = { "dscp_prio", BLOBMSG_TYPE_STRING }, | 	[CL_CONFIG_DSCP_PRIO] = { "dscp_prio", BLOBMSG_TYPE_STRING }, | ||||||
| 	[CL_CONFIG_DSCP_BULK] = { "dscp_bulk", BLOBMSG_TYPE_STRING }, | 	[CL_CONFIG_DSCP_BULK] = { "dscp_bulk", BLOBMSG_TYPE_STRING }, | ||||||
| 	[CL_CONFIG_DSCP_ICMP] = { "dscp_icmp", BLOBMSG_TYPE_STRING }, | 	[CL_CONFIG_DSCP_ICMP] = { "dscp_icmp", BLOBMSG_TYPE_STRING }, | ||||||
| @@ -308,6 +308,11 @@ int qosify_ubus_init(void) | |||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | void qosify_ubus_stop(void) | ||||||
|  | { | ||||||
|  | 	ubus_auto_shutdown(&conn); | ||||||
|  | } | ||||||
|  |  | ||||||
| struct iface_req { | struct iface_req { | ||||||
| 	char *name; | 	char *name; | ||||||
| 	int len; | 	int len; | ||||||
|   | |||||||
| @@ -31,7 +31,7 @@ ALLWIFIBOARDS:= \ | |||||||
| 	edgecore-eap101 \ | 	edgecore-eap101 \ | ||||||
| 	sercomm-wallaby \ | 	sercomm-wallaby \ | ||||||
| 	edgecore-eap102 \ | 	edgecore-eap102 \ | ||||||
| 	wallys-dr6018 | 	wallys-dr6018 \ | ||||||
| 	tplink-ex227 \ | 	tplink-ex227 \ | ||||||
| 	tplink-ex447 | 	tplink-ex447 | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,4 +1,4 @@ | |||||||
| From 164756923b3e89cb2fc825a80d4cc4236fb6dc89 Mon Sep 17 00:00:00 2001 | From 640973dcc794f43d99df7674209d9532711c49b4 Mon Sep 17 00:00:00 2001 | ||||||
| From: John Crispin <john@phrozen.org> | From: John Crispin <john@phrozen.org> | ||||||
| Date: Sat, 18 Jul 2020 08:53:44 +0200 | Date: Sat, 18 Jul 2020 08:53:44 +0200 | ||||||
| Subject: [PATCH 01/30] ipq807x: add the Qualcomm AX target support | Subject: [PATCH 01/30] ipq807x: add the Qualcomm AX target support | ||||||
| @@ -63,9 +63,9 @@ Signed-off-by: John Crispin <john@phrozen.org> | |||||||
|  .../ipq807x/patches/110-add-esmt-nand.patch   |    37 + |  .../ipq807x/patches/110-add-esmt-nand.patch   |    37 + | ||||||
|  target/linux/ipq807x/patches/111-eap106.patch |   765 + |  target/linux/ipq807x/patches/111-eap106.patch |   765 + | ||||||
|  target/linux/ipq807x/patches/112-pstore.patch |   147 + |  target/linux/ipq807x/patches/112-pstore.patch |   147 + | ||||||
|  .../ipq807x/patches/200-bpf_backport.patch    | 44635 ++++++++++++++++ |  .../ipq807x/patches/200-bpf_backport.patch    | 44763 ++++++++++++++++ | ||||||
|  toolchain/kernel-headers/Makefile             |     8 + |  toolchain/kernel-headers/Makefile             |     8 + | ||||||
|  60 files changed, 56539 insertions(+), 2 deletions(-) |  60 files changed, 56667 insertions(+), 2 deletions(-) | ||||||
|  create mode 100644 package/boot/uboot-envtools/files/ipq807x |  create mode 100644 package/boot/uboot-envtools/files/ipq807x | ||||||
|  create mode 100644 target/linux/ipq807x/109-logspam.patch |  create mode 100644 target/linux/ipq807x/109-logspam.patch | ||||||
|  create mode 100644 target/linux/ipq807x/Makefile |  create mode 100644 target/linux/ipq807x/Makefile | ||||||
| @@ -16570,10 +16570,10 @@ index 0000000000..dc3960306d | |||||||
| +  * The following routines scan a subtree and registers a device for
 | +  * The following routines scan a subtree and registers a device for
 | ||||||
| diff --git a/target/linux/ipq807x/patches/200-bpf_backport.patch b/target/linux/ipq807x/patches/200-bpf_backport.patch
 | diff --git a/target/linux/ipq807x/patches/200-bpf_backport.patch b/target/linux/ipq807x/patches/200-bpf_backport.patch
 | ||||||
| new file mode 100644 | new file mode 100644 | ||||||
| index 0000000000..3e730c313e
 | index 0000000000..915f965fa0
 | ||||||
| --- /dev/null
 | --- /dev/null
 | ||||||
| +++ b/target/linux/ipq807x/patches/200-bpf_backport.patch
 | +++ b/target/linux/ipq807x/patches/200-bpf_backport.patch
 | ||||||
| @@ -0,0 +1,44635 @@
 | @@ -0,0 +1,44763 @@
 | ||||||
| +--- a/arch/arm/Kconfig
 | +--- a/arch/arm/Kconfig
 | ||||||
| ++++ b/arch/arm/Kconfig
 | ++++ b/arch/arm/Kconfig
 | ||||||
| +@@ -38,7 +38,7 @@ config ARM
 | +@@ -38,7 +38,7 @@ config ARM
 | ||||||
| @@ -61209,6 +61209,134 @@ index 0000000000..3e730c313e | |||||||
| + 	if (IS_ERR(fp))
 | + 	if (IS_ERR(fp))
 | ||||||
| + 		return PTR_ERR(fp);
 | + 		return PTR_ERR(fp);
 | ||||||
| + 
 | + 
 | ||||||
|  | +--- a/net/8021q/vlan_core.c
 | ||||||
|  | ++++ b/net/8021q/vlan_core.c
 | ||||||
|  | +@@ -50,7 +50,7 @@ bool vlan_do_receive(struct sk_buff **sk
 | ||||||
|  | + 	}
 | ||||||
|  | + 
 | ||||||
|  | + 	skb->priority = vlan_get_ingress_priority(vlan_dev, skb->vlan_tci);
 | ||||||
|  | +-	skb->vlan_tci = 0;
 | ||||||
|  | ++	__vlan_hwaccel_clear_tag(skb);
 | ||||||
|  | + 
 | ||||||
|  | + 	rx_stats = this_cpu_ptr(vlan_dev_priv(vlan_dev)->vlan_pcpu_stats);
 | ||||||
|  | + 
 | ||||||
|  | +--- a/net/ipv4/ip_tunnel_core.c
 | ||||||
|  | ++++ b/net/ipv4/ip_tunnel_core.c
 | ||||||
|  | +@@ -128,7 +128,7 @@ int iptunnel_pull_header(struct sk_buff
 | ||||||
|  | + 	secpath_reset(skb);
 | ||||||
|  | + 	skb_clear_hash_if_not_l4(skb);
 | ||||||
|  | + 	skb_dst_drop(skb);
 | ||||||
|  | +-	skb->vlan_tci = 0;
 | ||||||
|  | ++	__vlan_hwaccel_clear_tag(skb);
 | ||||||
|  | + 	skb_set_queue_mapping(skb, 0);
 | ||||||
|  | + 	skb->pkt_type = PACKET_HOST;
 | ||||||
|  | + 
 | ||||||
|  | +--- a/net/bridge/br_netfilter_hooks.c
 | ||||||
|  | ++++ b/net/bridge/br_netfilter_hooks.c
 | ||||||
|  | +@@ -673,10 +673,8 @@ static int br_nf_push_frag_xmit(struct n
 | ||||||
|  | + 		return 0;
 | ||||||
|  | + 	}
 | ||||||
|  | + 
 | ||||||
|  | +-	if (data->vlan_tci) {
 | ||||||
|  | +-		skb->vlan_tci = data->vlan_tci;
 | ||||||
|  | +-		skb->vlan_proto = data->vlan_proto;
 | ||||||
|  | +-	}
 | ||||||
|  | ++	if (data->vlan_proto)
 | ||||||
|  | ++		__vlan_hwaccel_put_tag(skb, data->vlan_proto, data->vlan_tci);
 | ||||||
|  | + 
 | ||||||
|  | + 	skb_copy_to_linear_data_offset(skb, -data->size, data->mac, data->size);
 | ||||||
|  | + 	__skb_push(skb, data->encap_size);
 | ||||||
|  | +@@ -740,8 +738,13 @@ static int br_nf_dev_queue_xmit(struct n
 | ||||||
|  | + 
 | ||||||
|  | + 		data = this_cpu_ptr(&brnf_frag_data_storage);
 | ||||||
|  | + 
 | ||||||
|  | +-		data->vlan_tci = skb->vlan_tci;
 | ||||||
|  | +-		data->vlan_proto = skb->vlan_proto;
 | ||||||
|  | ++		if (skb_vlan_tag_present(skb)) {
 | ||||||
|  | ++			data->vlan_tci = skb->vlan_tci;
 | ||||||
|  | ++			data->vlan_proto = skb->vlan_proto;
 | ||||||
|  | ++		} else {
 | ||||||
|  | ++			data->vlan_proto = 0;
 | ||||||
|  | ++		}
 | ||||||
|  | ++
 | ||||||
|  | + 		data->encap_size = nf_bridge_encap_header_len(skb);
 | ||||||
|  | + 		data->size = ETH_HLEN + data->encap_size;
 | ||||||
|  | + 
 | ||||||
|  | +--- a/net/bridge/br_private.h
 | ||||||
|  | ++++ b/net/bridge/br_private.h
 | ||||||
|  | +@@ -751,7 +751,7 @@ static inline int br_vlan_get_tag(const
 | ||||||
|  | + 	int err = 0;
 | ||||||
|  | + 
 | ||||||
|  | + 	if (skb_vlan_tag_present(skb)) {
 | ||||||
|  | +-		*vid = skb_vlan_tag_get(skb) & VLAN_VID_MASK;
 | ||||||
|  | ++		*vid = skb_vlan_tag_get_id(skb);
 | ||||||
|  | + 	} else {
 | ||||||
|  | + 		*vid = 0;
 | ||||||
|  | + 		err = -EINVAL;
 | ||||||
|  | +--- a/net/bridge/br_vlan.c
 | ||||||
|  | ++++ b/net/bridge/br_vlan.c
 | ||||||
|  | +@@ -354,7 +354,7 @@ struct sk_buff *br_handle_vlan(struct ne
 | ||||||
|  | + 		}
 | ||||||
|  | + 	}
 | ||||||
|  | + 	if (v->flags & BRIDGE_VLAN_INFO_UNTAGGED)
 | ||||||
|  | +-		skb->vlan_tci = 0;
 | ||||||
|  | ++		__vlan_hwaccel_clear_tag(skb);
 | ||||||
|  | + 
 | ||||||
|  | + out:
 | ||||||
|  | + 	return skb;
 | ||||||
|  | +@@ -420,8 +420,8 @@ static bool __allowed_ingress(struct net
 | ||||||
|  | + 			__vlan_hwaccel_put_tag(skb, proto, pvid);
 | ||||||
|  | + 		else
 | ||||||
|  | + 			/* Priority-tagged Frame.
 | ||||||
|  | +-			 * At this point, We know that skb->vlan_tci had
 | ||||||
|  | +-			 * VLAN_TAG_PRESENT bit and its VID field was 0x000.
 | ||||||
|  | ++			 * At this point, we know that skb->vlan_tci VID
 | ||||||
|  | ++			 * field was 0.
 | ||||||
|  | + 			 * We update only VID field and preserve PCP field.
 | ||||||
|  | + 			 */
 | ||||||
|  | + 			skb->vlan_tci |= pvid;
 | ||||||
|  | +--- a/net/core/dev.c
 | ||||||
|  | ++++ b/net/core/dev.c
 | ||||||
|  | +@@ -3988,7 +3988,7 @@ ncls:
 | ||||||
|  | + 		 * and set skb->priority like in vlan_do_receive()
 | ||||||
|  | + 		 * For the time being, just ignore Priority Code Point
 | ||||||
|  | + 		 */
 | ||||||
|  | +-		skb->vlan_tci = 0;
 | ||||||
|  | ++		__vlan_hwaccel_clear_tag(skb);
 | ||||||
|  | + 	}
 | ||||||
|  | + 
 | ||||||
|  | + 	type = skb->protocol;
 | ||||||
|  | +@@ -4211,7 +4211,9 @@ static void gro_list_prepare(struct napi
 | ||||||
|  | + 		}
 | ||||||
|  | + 
 | ||||||
|  | + 		diffs = (unsigned long)p->dev ^ (unsigned long)skb->dev;
 | ||||||
|  | +-		diffs |= p->vlan_tci ^ skb->vlan_tci;
 | ||||||
|  | ++		diffs |= skb_vlan_tag_present(p) ^ skb_vlan_tag_present(skb);
 | ||||||
|  | ++		if (skb_vlan_tag_present(p))
 | ||||||
|  | ++			diffs |= p->vlan_tci ^ skb->vlan_tci;
 | ||||||
|  | + 		diffs |= skb_metadata_dst_cmp(p, skb);
 | ||||||
|  | + 		if (maclen == ETH_HLEN)
 | ||||||
|  | + 			diffs |= compare_ether_header(skb_mac_header(p),
 | ||||||
|  | +@@ -4452,7 +4454,7 @@ static void napi_reuse_skb(struct napi_s
 | ||||||
|  | + 	__skb_pull(skb, skb_headlen(skb));
 | ||||||
|  | + 	/* restore the reserve we had after netdev_alloc_skb_ip_align() */
 | ||||||
|  | + 	skb_reserve(skb, NET_SKB_PAD + NET_IP_ALIGN - skb_headroom(skb));
 | ||||||
|  | +-	skb->vlan_tci = 0;
 | ||||||
|  | ++	__vlan_hwaccel_clear_tag(skb);
 | ||||||
|  | + 	skb->dev = napi->dev;
 | ||||||
|  | + 	skb->skb_iif = 0;
 | ||||||
|  | + 	skb->encapsulation = 0;
 | ||||||
|  | +--- a/net/core/skbuff.c
 | ||||||
|  | ++++ b/net/core/skbuff.c
 | ||||||
|  | +@@ -4491,7 +4491,7 @@ int skb_vlan_pop(struct sk_buff *skb)
 | ||||||
|  | + 	int err;
 | ||||||
|  | + 
 | ||||||
|  | + 	if (likely(skb_vlan_tag_present(skb))) {
 | ||||||
|  | +-		skb->vlan_tci = 0;
 | ||||||
|  | ++		__vlan_hwaccel_clear_tag(skb);
 | ||||||
|  | + 	} else {
 | ||||||
|  | + 		if (unlikely((skb->protocol != htons(ETH_P_8021Q) &&
 | ||||||
|  | + 			      skb->protocol != htons(ETH_P_8021AD)) ||
 | ||||||
| diff --git a/toolchain/kernel-headers/Makefile b/toolchain/kernel-headers/Makefile
 | diff --git a/toolchain/kernel-headers/Makefile b/toolchain/kernel-headers/Makefile
 | ||||||
| index c33f26d46d..06236b5a47 100644
 | index c33f26d46d..06236b5a47 100644
 | ||||||
| --- a/toolchain/kernel-headers/Makefile
 | --- a/toolchain/kernel-headers/Makefile
 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user