diff options
Diffstat (limited to 'target/linux/generic/patches-4.4/645-bridge_multicast_to_unicast.patch')
-rw-r--r-- | target/linux/generic/patches-4.4/645-bridge_multicast_to_unicast.patch | 36 |
1 files changed, 18 insertions, 18 deletions
diff --git a/target/linux/generic/patches-4.4/645-bridge_multicast_to_unicast.patch b/target/linux/generic/patches-4.4/645-bridge_multicast_to_unicast.patch index 97a46fd334..bab091262c 100644 --- a/target/linux/generic/patches-4.4/645-bridge_multicast_to_unicast.patch +++ b/target/linux/generic/patches-4.4/645-bridge_multicast_to_unicast.patch @@ -11,8 +11,8 @@ Implement optinal multicast->unicast conversion for igmp snooping #define BR_ISOLATE_MODE BIT(11) +#define BR_MULTICAST_TO_UCAST BIT(12) - /* values as per ieee8021QBridgeFdbAgingTime */ - #define BR_MIN_AGEING_TIME (10 * HZ) + #define BR_DEFAULT_AGEING_TIME (300 * HZ) + --- a/net/bridge/br_multicast.c +++ b/net/bridge/br_multicast.c @@ -42,12 +42,13 @@ static void br_multicast_add_router(stru @@ -172,7 +172,7 @@ Implement optinal multicast->unicast conversion for igmp snooping if (!err) break; } -@@ -1422,7 +1448,8 @@ br_multicast_leave_group(struct net_brid +@@ -1424,7 +1450,8 @@ br_multicast_leave_group(struct net_brid struct net_bridge_port *port, struct br_ip *group, struct bridge_mcast_other_query *other_query, @@ -182,7 +182,7 @@ Implement optinal multicast->unicast conversion for igmp snooping { struct net_bridge_mdb_htable *mdb; struct net_bridge_mdb_entry *mp; -@@ -1446,7 +1473,7 @@ br_multicast_leave_group(struct net_brid +@@ -1448,7 +1475,7 @@ br_multicast_leave_group(struct net_brid for (pp = &mp->ports; (p = mlock_dereference(*pp, br)) != NULL; pp = &p->next) { @@ -191,7 +191,7 @@ Implement optinal multicast->unicast conversion for igmp snooping continue; rcu_assign_pointer(*pp, p->next); -@@ -1509,7 +1536,7 @@ br_multicast_leave_group(struct net_brid +@@ -1511,7 +1538,7 @@ br_multicast_leave_group(struct net_brid for (p = mlock_dereference(mp->ports, br); p != NULL; p = mlock_dereference(p->next, br)) { @@ -200,7 +200,7 @@ Implement optinal multicast->unicast conversion for igmp snooping continue; if (!hlist_unhashed(&p->mglist) && -@@ -1527,8 +1554,8 @@ out: +@@ -1529,8 +1556,8 @@ out: static void br_ip4_multicast_leave_group(struct net_bridge *br, struct net_bridge_port *port, @@ -211,7 +211,7 @@ Implement optinal multicast->unicast conversion for igmp snooping { struct br_ip br_group; struct bridge_mcast_own_query *own_query; -@@ -1543,14 +1570,14 @@ static void br_ip4_multicast_leave_group +@@ -1545,14 +1572,14 @@ static void br_ip4_multicast_leave_group br_group.vid = vid; br_multicast_leave_group(br, port, &br_group, &br->ip4_other_query, @@ -228,7 +228,7 @@ Implement optinal multicast->unicast conversion for igmp snooping { struct br_ip br_group; struct bridge_mcast_own_query *own_query; -@@ -1565,7 +1592,7 @@ static void br_ip6_multicast_leave_group +@@ -1567,7 +1594,7 @@ static void br_ip6_multicast_leave_group br_group.vid = vid; br_multicast_leave_group(br, port, &br_group, &br->ip6_other_query, @@ -237,7 +237,7 @@ Implement optinal multicast->unicast conversion for igmp snooping } #endif -@@ -1574,6 +1601,7 @@ static int br_multicast_ipv4_rcv(struct +@@ -1576,6 +1603,7 @@ static int br_multicast_ipv4_rcv(struct struct sk_buff *skb, u16 vid) { @@ -245,7 +245,7 @@ Implement optinal multicast->unicast conversion for igmp snooping struct sk_buff *skb_trimmed = NULL; struct igmphdr *ih; int err; -@@ -1590,12 +1618,13 @@ static int br_multicast_ipv4_rcv(struct +@@ -1592,12 +1620,13 @@ static int br_multicast_ipv4_rcv(struct BR_INPUT_SKB_CB(skb)->igmp = 1; ih = igmp_hdr(skb); @@ -260,7 +260,7 @@ Implement optinal multicast->unicast conversion for igmp snooping break; case IGMPV3_HOST_MEMBERSHIP_REPORT: err = br_ip4_multicast_igmp3_report(br, port, skb_trimmed, vid); -@@ -1604,7 +1633,7 @@ static int br_multicast_ipv4_rcv(struct +@@ -1606,7 +1635,7 @@ static int br_multicast_ipv4_rcv(struct err = br_ip4_multicast_query(br, port, skb_trimmed, vid); break; case IGMP_HOST_LEAVE_MESSAGE: @@ -269,7 +269,7 @@ Implement optinal multicast->unicast conversion for igmp snooping break; } -@@ -1620,6 +1649,7 @@ static int br_multicast_ipv6_rcv(struct +@@ -1622,6 +1651,7 @@ static int br_multicast_ipv6_rcv(struct struct sk_buff *skb, u16 vid) { @@ -277,7 +277,7 @@ Implement optinal multicast->unicast conversion for igmp snooping struct sk_buff *skb_trimmed = NULL; struct mld_msg *mld; int err; -@@ -1639,8 +1669,9 @@ static int br_multicast_ipv6_rcv(struct +@@ -1641,8 +1671,9 @@ static int br_multicast_ipv6_rcv(struct switch (mld->mld_type) { case ICMPV6_MGM_REPORT: @@ -288,7 +288,7 @@ Implement optinal multicast->unicast conversion for igmp snooping break; case ICMPV6_MLD2_REPORT: err = br_ip6_multicast_mld2_report(br, port, skb_trimmed, vid); -@@ -1649,7 +1680,8 @@ static int br_multicast_ipv6_rcv(struct +@@ -1651,7 +1682,8 @@ static int br_multicast_ipv6_rcv(struct err = br_ip6_multicast_query(br, port, skb_trimmed, vid); break; case ICMPV6_MGM_REDUCTION: @@ -300,17 +300,17 @@ Implement optinal multicast->unicast conversion for igmp snooping --- a/net/bridge/br_private.h +++ b/net/bridge/br_private.h -@@ -158,6 +158,9 @@ struct net_bridge_port_group { +@@ -157,7 +157,9 @@ struct net_bridge_port_group { + struct rcu_head rcu; struct timer_list timer; struct br_ip addr; - unsigned char state; -+ + unsigned char eth_addr[ETH_ALEN]; + unsigned char state; + bool unicast; }; struct net_bridge_mdb_entry -@@ -554,7 +557,8 @@ void br_multicast_free_pg(struct rcu_hea +@@ -554,7 +556,8 @@ void br_multicast_free_pg(struct rcu_hea struct net_bridge_port_group * br_multicast_new_port_group(struct net_bridge_port *port, struct br_ip *group, struct net_bridge_port_group __rcu *next, |