diff --git a/feeds/ipq807x_v5.4/ipq50xx/patches/107-bridge-allow-bcast-mcast-same-port-hairpinmode.patch b/feeds/ipq807x_v5.4/ipq50xx/patches/107-bridge-allow-bcast-mcast-same-port-hairpinmode.patch new file mode 100644 index 000000000..fd61d0c80 --- /dev/null +++ b/feeds/ipq807x_v5.4/ipq50xx/patches/107-bridge-allow-bcast-mcast-same-port-hairpinmode.patch @@ -0,0 +1,14 @@ +Index: linux-5.4.164-qsdk-26349818b464f8c7b52d59ce73579d9f3dd6bd5d/net/bridge/br_forward.c +=================================================================== +--- linux-5.4.164-qsdk-26349818b464f8c7b52d59ce73579d9f3dd6bd5d.orig/net/bridge/br_forward.c ++++ linux-5.4.164-qsdk-26349818b464f8c7b52d59ce73579d9f3dd6bd5d/net/bridge/br_forward.c +@@ -24,8 +24,7 @@ static inline int should_deliver(const s + struct net_bridge_vlan_group *vg; + + vg = nbp_vlan_group_rcu(p); +- return (((p->flags & BR_HAIRPIN_MODE) && !is_multicast_ether_addr(eth_hdr(skb)->h_dest)) +- || (skb->dev != p->dev)) && ++ return (((p->flags & BR_HAIRPIN_MODE)) || (skb->dev != p->dev)) && + br_allowed_egress(vg, skb) && (p->state == BR_STATE_FORWARDING) && + nbp_switchdev_allowed_egress(p, skb) && + !br_skb_isolated(p, skb); diff --git a/feeds/ipq807x_v5.4/ipq60xx/patches/107-bridge-allow-bcast-mcast-same-port-hairpinmode.patch b/feeds/ipq807x_v5.4/ipq60xx/patches/107-bridge-allow-bcast-mcast-same-port-hairpinmode.patch new file mode 100644 index 000000000..fd61d0c80 --- /dev/null +++ b/feeds/ipq807x_v5.4/ipq60xx/patches/107-bridge-allow-bcast-mcast-same-port-hairpinmode.patch @@ -0,0 +1,14 @@ +Index: linux-5.4.164-qsdk-26349818b464f8c7b52d59ce73579d9f3dd6bd5d/net/bridge/br_forward.c +=================================================================== +--- linux-5.4.164-qsdk-26349818b464f8c7b52d59ce73579d9f3dd6bd5d.orig/net/bridge/br_forward.c ++++ linux-5.4.164-qsdk-26349818b464f8c7b52d59ce73579d9f3dd6bd5d/net/bridge/br_forward.c +@@ -24,8 +24,7 @@ static inline int should_deliver(const s + struct net_bridge_vlan_group *vg; + + vg = nbp_vlan_group_rcu(p); +- return (((p->flags & BR_HAIRPIN_MODE) && !is_multicast_ether_addr(eth_hdr(skb)->h_dest)) +- || (skb->dev != p->dev)) && ++ return (((p->flags & BR_HAIRPIN_MODE)) || (skb->dev != p->dev)) && + br_allowed_egress(vg, skb) && (p->state == BR_STATE_FORWARDING) && + nbp_switchdev_allowed_egress(p, skb) && + !br_skb_isolated(p, skb); diff --git a/feeds/ipq807x_v5.4/ipq807x/patches/107-bridge-allow-bcast-mcast-same-port-hairpinmode.patch b/feeds/ipq807x_v5.4/ipq807x/patches/107-bridge-allow-bcast-mcast-same-port-hairpinmode.patch new file mode 100644 index 000000000..fd61d0c80 --- /dev/null +++ b/feeds/ipq807x_v5.4/ipq807x/patches/107-bridge-allow-bcast-mcast-same-port-hairpinmode.patch @@ -0,0 +1,14 @@ +Index: linux-5.4.164-qsdk-26349818b464f8c7b52d59ce73579d9f3dd6bd5d/net/bridge/br_forward.c +=================================================================== +--- linux-5.4.164-qsdk-26349818b464f8c7b52d59ce73579d9f3dd6bd5d.orig/net/bridge/br_forward.c ++++ linux-5.4.164-qsdk-26349818b464f8c7b52d59ce73579d9f3dd6bd5d/net/bridge/br_forward.c +@@ -24,8 +24,7 @@ static inline int should_deliver(const s + struct net_bridge_vlan_group *vg; + + vg = nbp_vlan_group_rcu(p); +- return (((p->flags & BR_HAIRPIN_MODE) && !is_multicast_ether_addr(eth_hdr(skb)->h_dest)) +- || (skb->dev != p->dev)) && ++ return (((p->flags & BR_HAIRPIN_MODE)) || (skb->dev != p->dev)) && + br_allowed_egress(vg, skb) && (p->state == BR_STATE_FORWARDING) && + nbp_switchdev_allowed_egress(p, skb) && + !br_skb_isolated(p, skb);