mirror of
				https://github.com/Telecominfraproject/wlan-ap.git
				synced 2025-10-30 18:07:52 +00:00 
			
		
		
		
	patches: remove netifd VLAN awareness fix
Remove netifd VLAN awareness fix as this change is already upstreamed in OpenWrt 24.10. Signed-off-by: John Crispin <john@phrozen.org>
This commit is contained in:
		| @@ -1,103 +0,0 @@ | |||||||
| From 85c07855f533db2972144ea2b7ebd086388dd2ce Mon Sep 17 00:00:00 2001 |  | ||||||
| From: John Crispin <john@phrozen.org> |  | ||||||
| Date: Tue, 5 Dec 2023 15:57:08 +0100 |  | ||||||
| Subject: [PATCH 32/68] netifd: fix vlan-awareness bug |  | ||||||
|  |  | ||||||
| Signed-off-by: John Crispin <john@phrozen.org> |  | ||||||
| --- |  | ||||||
|  .../netifd/patches/004-vlan-awareness.patch   | 83 +++++++++++++++++++ |  | ||||||
|  1 file changed, 83 insertions(+) |  | ||||||
|  create mode 100644 package/network/config/netifd/patches/004-vlan-awareness.patch |  | ||||||
|  |  | ||||||
| diff --git a/package/network/config/netifd/patches/004-vlan-awareness.patch b/package/network/config/netifd/patches/004-vlan-awareness.patch |  | ||||||
| new file mode 100644 |  | ||||||
| index 0000000000..00d43957e1 |  | ||||||
| --- /dev/null |  | ||||||
| +++ b/package/network/config/netifd/patches/004-vlan-awareness.patch |  | ||||||
| @@ -0,0 +1,83 @@ |  | ||||||
| +diff --git a/bridge.c b/bridge.c |  | ||||||
| +index c931923e3299..2128ec75a0fb 100644 |  | ||||||
| +--- a/bridge.c |  | ||||||
| ++++ b/bridge.c |  | ||||||
| +@@ -223,7 +223,9 @@ bridge_set_member_vlan(struct bridge_member *bm, struct bridge_vlan *vlan, bool |  | ||||||
| + 	if (!port) |  | ||||||
| + 		return; |  | ||||||
| +  |  | ||||||
| +-	if (bridge_member_vlan_is_pvid(bm, port)) |  | ||||||
| ++	if (!add && bm->pvid == vlan->vid) |  | ||||||
| ++		bm->pvid = 0; |  | ||||||
| ++	else if (add && bridge_member_vlan_is_pvid(bm, port)) |  | ||||||
| + 		bm->pvid = vlan->vid; |  | ||||||
| +  |  | ||||||
| + 	__bridge_set_member_vlan(bm, vlan, port, add); |  | ||||||
| +@@ -275,12 +277,12 @@ bridge_set_vlan_state(struct bridge_state *bst, struct bridge_vlan *vlan, bool a |  | ||||||
| + { |  | ||||||
| + 	struct bridge_member *bm; |  | ||||||
| + 	struct bridge_vlan *vlan2; |  | ||||||
| ++	bool clear_pvid = false; |  | ||||||
| +  |  | ||||||
| + 	bridge_set_local_vlan(bst, vlan, add); |  | ||||||
| +  |  | ||||||
| + 	vlist_for_each_element(&bst->members, bm, node) { |  | ||||||
| + 		struct bridge_vlan_port *port; |  | ||||||
| +-		int new_pvid = -1; |  | ||||||
| +  |  | ||||||
| + 		port = bridge_find_vlan_member_port(bm, vlan); |  | ||||||
| + 		if (!port) |  | ||||||
| +@@ -293,17 +295,18 @@ bridge_set_vlan_state(struct bridge_state *bst, struct bridge_vlan *vlan, bool a |  | ||||||
| + 			vlan2 = bridge_recalc_member_pvid(bm); |  | ||||||
| + 			if (vlan2 && vlan2->vid != vlan->vid) { |  | ||||||
| + 				bridge_set_member_vlan(bm, vlan2, false); |  | ||||||
| ++				bm->pvid = vlan2->vid; |  | ||||||
| + 				bridge_set_member_vlan(bm, vlan2, true); |  | ||||||
| ++			} else if (!vlan2) { |  | ||||||
| ++				clear_pvid = true; |  | ||||||
| + 			} |  | ||||||
| +-			new_pvid = vlan2 ? vlan2->vid : 0; |  | ||||||
| + 		} |  | ||||||
| +  |  | ||||||
| +-		if (!bm->present) |  | ||||||
| +-			continue; |  | ||||||
| ++		if (bm->present) |  | ||||||
| ++			__bridge_set_member_vlan(bm, vlan, port, add); |  | ||||||
| +  |  | ||||||
| +-		__bridge_set_member_vlan(bm, vlan, port, add); |  | ||||||
| +-		if (new_pvid >= 0) |  | ||||||
| +-			bm->pvid = new_pvid; |  | ||||||
| ++		if (clear_pvid) |  | ||||||
| ++			bm->pvid = 0; |  | ||||||
| + 	} |  | ||||||
| + } |  | ||||||
| +  |  | ||||||
| +@@ -1369,14 +1372,14 @@ bridge_vlan_update(struct vlist_tree *tree, struct vlist_node *node_new, |  | ||||||
| + 	struct bridge_state *bst = container_of(tree, struct bridge_state, dev.vlans); |  | ||||||
| + 	struct bridge_vlan *vlan_new = NULL, *vlan_old = NULL; |  | ||||||
| +  |  | ||||||
| +-	if (!bst->has_vlans || !bst->active) |  | ||||||
| +-		goto out; |  | ||||||
| +- |  | ||||||
| + 	if (node_old) |  | ||||||
| + 		vlan_old = container_of(node_old, struct bridge_vlan, node); |  | ||||||
| + 	if (node_new) |  | ||||||
| + 		vlan_new = container_of(node_new, struct bridge_vlan, node); |  | ||||||
| +  |  | ||||||
| ++	if (!bst->has_vlans || !bst->active) |  | ||||||
| ++		goto out; |  | ||||||
| ++ |  | ||||||
| + 	if (node_new && node_old && bridge_vlan_equal(vlan_old, vlan_new)) { |  | ||||||
| + 		list_splice_init(&vlan_old->hotplug_ports, &vlan_new->hotplug_ports); |  | ||||||
| + 		goto out; |  | ||||||
| +@@ -1391,9 +1394,8 @@ bridge_vlan_update(struct vlist_tree *tree, struct vlist_node *node_new, |  | ||||||
| + 	if (node_new) |  | ||||||
| + 		vlan_new->pending = true; |  | ||||||
| +  |  | ||||||
| +-	bst->dev.config_pending = true; |  | ||||||
| +- |  | ||||||
| + out: |  | ||||||
| ++	bst->dev.config_pending = true; |  | ||||||
| + 	bridge_vlan_free(vlan_old); |  | ||||||
| + } |  | ||||||
| +  |  | ||||||
| --  |  | ||||||
| 2.34.1 |  | ||||||
|  |  | ||||||
		Reference in New Issue
	
	Block a user
	 John Crispin
					John Crispin