forked from freifunk-gluon/gluon
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request freifunk-gluon#3265 from blocktrron/upstream-maste…
…r-updates modules: update to latest HEAD
- Loading branch information
Showing
2 changed files
with
39 additions
and
66 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -174,7 +174,7 @@ index 0000000000000000000000000000000000000000..077a563b6066cd1d3aee4b1e82328e8c | |
+ | ||
+ int system_bridge_addif(struct device *bridge, struct device *dev) | ||
diff --git a/target/linux/generic/config-5.15 b/target/linux/generic/config-5.15 | ||
index 00977650c7ac26f1c443d684e3f5247022962b3a..2c094533933a798ae0fc36a841ef6e9cfc5df8c7 100644 | ||
index 377553433846b5cec34e5d7036b8109f954aef5a..47c2ca0409654b4bfa08f32ed2869a6d077c8913 100644 | ||
--- a/target/linux/generic/config-5.15 | ||
+++ b/target/linux/generic/config-5.15 | ||
@@ -761,6 +761,7 @@ CONFIG_BRIDGE=y | ||
|
@@ -187,10 +187,10 @@ index 00977650c7ac26f1c443d684e3f5247022962b3a..2c094533933a798ae0fc36a841ef6e9c | |
# CONFIG_BRIDGE_NF_EBTABLES is not set | ||
diff --git a/target/linux/generic/hack-5.15/602-bridge-Implement-MLD-Querier-wake-up-calls-Android-b.patch b/target/linux/generic/hack-5.15/602-bridge-Implement-MLD-Querier-wake-up-calls-Android-b.patch | ||
new file mode 100644 | ||
index 0000000000000000000000000000000000000000..84f872ddc2433514ca5c210f73b37855723e5763 | ||
index 0000000000000000000000000000000000000000..91dd13e51549f40aa11a01d53e11be1a70f25d86 | ||
--- /dev/null | ||
+++ b/target/linux/generic/hack-5.15/602-bridge-Implement-MLD-Querier-wake-up-calls-Android-b.patch | ||
@@ -0,0 +1,690 @@ | ||
@@ -0,0 +1,663 @@ | ||
+From 4529dcf18d4c5e05d30cd2d6fabfbae201e6c347 Mon Sep 17 00:00:00 2001 | ||
+From: =?UTF-8?q?Linus=20L=C3=BCssing?= <[email protected]> | ||
+Date: Mon, 29 Jun 2020 19:04:05 +0200 | ||
|
@@ -237,8 +237,6 @@ index 0000000000000000000000000000000000000000..84f872ddc2433514ca5c210f73b37855 | |
+ net/ipv6/mcast_snoop.c | 3 +- | ||
+ 12 files changed, 386 insertions(+), 10 deletions(-) | ||
+ | ||
+diff --git a/include/linux/if_bridge.h b/include/linux/if_bridge.h | ||
+index 18d3b264b754..5ee206fb5ee7 100644 | ||
+--- a/include/linux/if_bridge.h | ||
++++ b/include/linux/if_bridge.h | ||
+@@ -59,6 +59,7 @@ struct br_ip_list { | ||
|
@@ -249,20 +247,16 @@ index 0000000000000000000000000000000000000000..84f872ddc2433514ca5c210f73b37855 | |
+ | ||
+ #define BR_DEFAULT_AGEING_TIME (300 * HZ) | ||
+ | ||
+diff --git a/include/net/addrconf.h b/include/net/addrconf.h | ||
+index 53627afab104..f31ea1726efa 100644 | ||
+--- a/include/net/addrconf.h | ||
++++ b/include/net/addrconf.h | ||
+@@ -233,6 +233,7 @@ void ipv6_mc_unmap(struct inet6_dev *idev); | ||
+@@ -241,6 +241,7 @@ void ipv6_mc_unmap(struct inet6_dev *ide | ||
+ void ipv6_mc_remap(struct inet6_dev *idev); | ||
+ void ipv6_mc_init_dev(struct inet6_dev *idev); | ||
+ void ipv6_mc_destroy_dev(struct inet6_dev *idev); | ||
++int ipv6_mc_check_icmpv6(struct sk_buff *skb); | ||
+ int ipv6_mc_check_mld(struct sk_buff *skb); | ||
+ void addrconf_dad_failure(struct sk_buff *skb, struct inet6_ifaddr *ifp); | ||
+ | ||
+diff --git a/include/uapi/linux/if_link.h b/include/uapi/linux/if_link.h | ||
+index be0ad9a79da8..baf07b15e481 100644 | ||
+--- a/include/uapi/linux/if_link.h | ||
++++ b/include/uapi/linux/if_link.h | ||
+@@ -537,6 +537,7 @@ enum { | ||
|
@@ -273,8 +267,6 @@ index 0000000000000000000000000000000000000000..84f872ddc2433514ca5c210f73b37855 | |
+ __IFLA_BRPORT_MAX | ||
+ }; | ||
+ #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1) | ||
+diff --git a/net/bridge/Kconfig b/net/bridge/Kconfig | ||
+index 3c8ded7d3e84..1a11e22c7d51 100644 | ||
+--- a/net/bridge/Kconfig | ||
++++ b/net/bridge/Kconfig | ||
+@@ -48,6 +48,32 @@ config BRIDGE_IGMP_SNOOPING | ||
|
@@ -310,11 +302,9 @@ index 0000000000000000000000000000000000000000..84f872ddc2433514ca5c210f73b37855 | |
+ config BRIDGE_VLAN_FILTERING | ||
+ bool "VLAN filtering" | ||
+ depends on BRIDGE | ||
+diff --git a/net/bridge/br_fdb.c b/net/bridge/br_fdb.c | ||
+index 46812b659710..eec5f3770ff8 100644 | ||
+--- a/net/bridge/br_fdb.c | ||
++++ b/net/bridge/br_fdb.c | ||
+@@ -84,6 +84,10 @@ static void fdb_rcu_free(struct rcu_head *head) | ||
+@@ -84,6 +84,10 @@ static void fdb_rcu_free(struct rcu_head | ||
+ { | ||
+ struct net_bridge_fdb_entry *ent | ||
+ = container_of(head, struct net_bridge_fdb_entry, rcu); | ||
|
@@ -325,7 +315,7 @@ index 0000000000000000000000000000000000000000..84f872ddc2433514ca5c210f73b37855 | |
+ kmem_cache_free(br_fdb_cache, ent); | ||
+ } | ||
+ | ||
+@@ -518,6 +522,12 @@ static struct net_bridge_fdb_entry *fdb_create(struct net_bridge *br, | ||
+@@ -518,6 +522,12 @@ static struct net_bridge_fdb_entry *fdb_ | ||
+ fdb->key.vlan_id = vid; | ||
+ fdb->flags = flags; | ||
+ fdb->updated = fdb->used = jiffies; | ||
|
@@ -338,27 +328,23 @@ index 0000000000000000000000000000000000000000..84f872ddc2433514ca5c210f73b37855 | |
+ if (rhashtable_lookup_insert_fast(&br->fdb_hash_tbl, | ||
+ &fdb->rhnode, | ||
+ br_fdb_rht_params)) { | ||
+diff --git a/net/bridge/br_input.c b/net/bridge/br_input.c | ||
+index fe80b8e4c2d7..879ae7adb845 100644 | ||
+--- a/net/bridge/br_input.c | ||
++++ b/net/bridge/br_input.c | ||
+@@ -164,8 +164,10 @@ int br_handle_frame_finish(struct net *net, struct sock *sk, struct sk_buff *skb | ||
+@@ -169,8 +169,10 @@ int br_handle_frame_finish(struct net *n | ||
+ if (dst) { | ||
+ unsigned long now = jiffies; | ||
+ | ||
+- if (test_bit(BR_FDB_LOCAL, &dst->flags)) | ||
++ if (test_bit(BR_FDB_LOCAL, &dst->flags)) { | ||
++ br_multicast_wakeupcall_rcv(brmctx, pmctx, skb, vid); | ||
+ return br_pass_frame_up(skb); | ||
+ return br_pass_frame_up(skb, false); | ||
++ } | ||
+ | ||
+ if (now != dst->used) | ||
+ dst->used = now; | ||
+diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c | ||
+index db4f2641d1cd..6822dfbafa71 100644 | ||
+--- a/net/bridge/br_multicast.c | ||
++++ b/net/bridge/br_multicast.c | ||
+@@ -950,15 +950,16 @@ static struct sk_buff *br_ip6_multicast_alloc_query(struct net_bridge_mcast *brm | ||
+@@ -950,15 +950,16 @@ static struct sk_buff *br_ip6_multicast_ | ||
+ const struct in6_addr *group, | ||
+ bool with_srcs, bool over_llqt, | ||
+ u8 sflag, u8 *igmp_type, | ||
|
@@ -377,7 +363,7 @@ index 0000000000000000000000000000000000000000..84f872ddc2433514ca5c210f73b37855 | |
+ __sum16 *csum = NULL; | ||
+ struct ipv6hdr *ip6h; | ||
+ struct mld_msg *mldq; | ||
+@@ -1040,9 +1041,13 @@ static struct sk_buff *br_ip6_multicast_alloc_query(struct net_bridge_mcast *brm | ||
+@@ -1040,9 +1041,13 @@ static struct sk_buff *br_ip6_multicast_ | ||
+ | ||
+ /* ICMPv6 */ | ||
+ skb_set_transport_header(skb, skb->len); | ||
|
@@ -394,7 +380,7 @@ index 0000000000000000000000000000000000000000..84f872ddc2433514ca5c210f73b37855 | |
+ *igmp_type = ICMPV6_MGM_QUERY; | ||
+ switch (brmctx->multicast_mld_version) { | ||
+ case 1: | ||
+@@ -1050,7 +1055,7 @@ static struct sk_buff *br_ip6_multicast_alloc_query(struct net_bridge_mcast *brm | ||
+@@ -1050,7 +1055,7 @@ static struct sk_buff *br_ip6_multicast_ | ||
+ mldq->mld_type = ICMPV6_MGM_QUERY; | ||
+ mldq->mld_code = 0; | ||
+ mldq->mld_cksum = 0; | ||
|
@@ -403,7 +389,7 @@ index 0000000000000000000000000000000000000000..84f872ddc2433514ca5c210f73b37855 | |
+ mldq->mld_reserved = 0; | ||
+ mldq->mld_mca = *group; | ||
+ csum = &mldq->mld_cksum; | ||
+@@ -1141,7 +1146,7 @@ static struct sk_buff *br_multicast_alloc_query(struct net_bridge_mcast *brmctx, | ||
+@@ -1141,7 +1146,7 @@ static struct sk_buff *br_multicast_allo | ||
+ &ip6_dst, &group->dst.ip6, | ||
+ with_srcs, over_lmqt, | ||
+ sflag, igmp_type, | ||
|
@@ -412,7 +398,7 @@ index 0000000000000000000000000000000000000000..84f872ddc2433514ca5c210f73b37855 | |
+ } | ||
+ #endif | ||
+ } | ||
+@@ -1619,6 +1624,169 @@ static void br_multicast_select_own_querier(struct net_bridge_mcast *brmctx, | ||
+@@ -1623,6 +1628,169 @@ static void br_multicast_select_own_quer | ||
+ #endif | ||
+ } | ||
+ | ||
|
@@ -582,7 +568,7 @@ index 0000000000000000000000000000000000000000..84f872ddc2433514ca5c210f73b37855 | |
+ static void __br_multicast_send_query(struct net_bridge_mcast *brmctx, | ||
+ struct net_bridge_mcast_port *pmctx, | ||
+ struct net_bridge_port_group *pg, | ||
+@@ -1651,6 +1819,13 @@ static void __br_multicast_send_query(struct net_bridge_mcast *brmctx, | ||
+@@ -1655,6 +1823,13 @@ again_under_lmqt: | ||
+ dev_net(pmctx->port->dev), NULL, skb, NULL, skb->dev, | ||
+ br_dev_queue_push_xmit); | ||
+ | ||
|
@@ -596,7 +582,7 @@ index 0000000000000000000000000000000000000000..84f872ddc2433514ca5c210f73b37855 | |
+ if (over_lmqt && with_srcs && sflag) { | ||
+ over_lmqt = false; | ||
+ goto again_under_lmqt; | ||
+@@ -3801,6 +3976,99 @@ int br_multicast_rcv(struct net_bridge_mcast **brmctx, | ||
+@@ -3805,6 +3980,99 @@ int br_multicast_rcv(struct net_bridge_m | ||
+ return ret; | ||
+ } | ||
+ | ||
|
@@ -696,7 +682,7 @@ index 0000000000000000000000000000000000000000..84f872ddc2433514ca5c210f73b37855 | |
+ static void br_multicast_query_expired(struct net_bridge_mcast *brmctx, | ||
+ struct bridge_mcast_own_query *query, | ||
+ struct bridge_mcast_querier *querier) | ||
+@@ -4325,6 +4593,15 @@ int br_multicast_set_vlan_router(struct net_bridge_vlan *v, u8 mcast_router) | ||
+@@ -4333,6 +4601,15 @@ int br_multicast_set_vlan_router(struct | ||
+ return err; | ||
+ } | ||
+ | ||
|
@@ -712,21 +698,19 @@ index 0000000000000000000000000000000000000000..84f872ddc2433514ca5c210f73b37855 | |
+ static void br_multicast_start_querier(struct net_bridge_mcast *brmctx, | ||
+ struct bridge_mcast_own_query *query) | ||
+ { | ||
+diff --git a/net/bridge/br_netlink.c b/net/bridge/br_netlink.c | ||
+index ae6007309a17..09d4861b7336 100644 | ||
+--- a/net/bridge/br_netlink.c | ||
++++ b/net/bridge/br_netlink.c | ||
+@@ -198,6 +198,9 @@ static inline size_t br_port_info_size(void) | ||
+ + nla_total_size_64bit(sizeof(u64)) /* IFLA_BRPORT_HOLD_TIMER */ | ||
+@@ -199,6 +199,9 @@ static inline size_t br_port_info_size(v | ||
+ #ifdef CONFIG_BRIDGE_IGMP_SNOOPING | ||
+ + nla_total_size(sizeof(u8)) /* IFLA_BRPORT_MULTICAST_ROUTER */ | ||
++#endif | ||
+ #endif | ||
++#ifdef CONFIG_BRIDGE_IGMP_SNOOPING_WAKEUPCALLS | ||
++ + nla_total_size(sizeof(u8)) /* IFLA_BRPORT_MCAST_WAKEUPCALL */ | ||
+ #endif | ||
++#endif | ||
+ + nla_total_size(sizeof(u16)) /* IFLA_BRPORT_GROUP_FWD_MASK */ | ||
+ + nla_total_size(sizeof(u8)) /* IFLA_BRPORT_MRP_RING_OPEN */ | ||
+@@ -296,6 +299,11 @@ static int br_port_fill_attrs(struct sk_buff *skb, | ||
+ + nla_total_size(sizeof(u8)) /* IFLA_BRPORT_MRP_IN_OPEN */ | ||
+@@ -296,6 +299,11 @@ static int br_port_fill_attrs(struct sk_ | ||
+ p->multicast_eht_hosts_cnt)) | ||
+ return -EMSGSIZE; | ||
+ #endif | ||
|
@@ -738,18 +722,20 @@ index 0000000000000000000000000000000000000000..84f872ddc2433514ca5c210f73b37855 | |
+ | ||
+ /* we might be called only with br->lock */ | ||
+ rcu_read_lock(); | ||
+@@ -823,6 +831,7 @@ static const struct nla_policy br_port_policy[IFLA_BRPORT_MAX + 1] = { | ||
+@@ -823,6 +831,7 @@ static const struct nla_policy br_port_p | ||
+ [IFLA_BRPORT_PROXYARP_WIFI] = { .type = NLA_U8 }, | ||
+ [IFLA_BRPORT_MULTICAST_ROUTER] = { .type = NLA_U8 }, | ||
+ [IFLA_BRPORT_MCAST_TO_UCAST] = { .type = NLA_U8 }, | ||
++ [IFLA_BRPORT_MCAST_WAKEUPCALL] = { .type = NLA_U8 }, | ||
+ [IFLA_BRPORT_MCAST_FLOOD] = { .type = NLA_U8 }, | ||
+ [IFLA_BRPORT_BCAST_FLOOD] = { .type = NLA_U8 }, | ||
+ [IFLA_BRPORT_VLAN_TUNNEL] = { .type = NLA_U8 }, | ||
+@@ -952,6 +961,16 @@ static int br_setport(struct net_bridge_port *p, struct nlattr *tb[], | ||
+@@ -950,6 +959,16 @@ static int br_setport(struct net_bridge_ | ||
+ if (err) | ||
+ return err; | ||
+ } | ||
+ #endif | ||
+ | ||
++#endif | ||
++ | ||
++#ifdef CONFIG_BRIDGE_IGMP_SNOOPING_WAKEUPCALLS | ||
++ if (tb[IFLA_BRPORT_MCAST_WAKEUPCALL]) { | ||
++ u8 wakeupcall = nla_get_u8(tb[IFLA_BRPORT_MCAST_WAKEUPCALL]); | ||
|
@@ -758,13 +744,9 @@ index 0000000000000000000000000000000000000000..84f872ddc2433514ca5c210f73b37855 | |
++ if (err) | ||
++ return err; | ||
++ } | ||
++#endif | ||
++ | ||
+ if (tb[IFLA_BRPORT_GROUP_FWD_MASK]) { | ||
+ u16 fwd_mask = nla_get_u16(tb[IFLA_BRPORT_GROUP_FWD_MASK]); | ||
+ #endif | ||
+ | ||
+diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h | ||
+index bd218c2b2cd9..32191519b500 100644 | ||
+ if (tb[IFLA_BRPORT_GROUP_FWD_MASK]) { | ||
+--- a/net/bridge/br_private.h | ||
++++ b/net/bridge/br_private.h | ||
+@@ -269,6 +269,10 @@ struct net_bridge_fdb_entry { | ||
|
@@ -786,7 +768,7 @@ index 0000000000000000000000000000000000000000..84f872ddc2433514ca5c210f73b37855 | |
+ #endif | ||
+ | ||
+ #ifdef CONFIG_SYSFS | ||
+@@ -1418,6 +1423,21 @@ br_multicast_ctx_options_equal(const struct net_bridge_mcast *brmctx1, | ||
+@@ -1419,6 +1424,21 @@ br_multicast_ctx_options_equal(const str | ||
+ } | ||
+ #endif | ||
+ | ||
|
@@ -808,11 +790,9 @@ index 0000000000000000000000000000000000000000..84f872ddc2433514ca5c210f73b37855 | |
+ /* br_vlan.c */ | ||
+ #ifdef CONFIG_BRIDGE_VLAN_FILTERING | ||
+ bool br_allowed_ingress(const struct net_bridge *br, | ||
+diff --git a/net/bridge/br_sysfs_if.c b/net/bridge/br_sysfs_if.c | ||
+index 9ee9c60738e2..9dcd4a9204db 100644 | ||
+--- a/net/bridge/br_sysfs_if.c | ||
++++ b/net/bridge/br_sysfs_if.c | ||
+@@ -260,6 +260,21 @@ BRPORT_ATTR_FLAG(multicast_fast_leave, BR_MULTICAST_FAST_LEAVE); | ||
+@@ -260,6 +260,21 @@ BRPORT_ATTR_FLAG(multicast_fast_leave, B | ||
+ BRPORT_ATTR_FLAG(multicast_to_unicast, BR_MULTICAST_TO_UNICAST); | ||
+ #endif | ||
+ | ||
|
@@ -834,18 +814,16 @@ index 0000000000000000000000000000000000000000..84f872ddc2433514ca5c210f73b37855 | |
+ static const struct brport_attribute *brport_attrs[] = { | ||
+ &brport_attr_path_cost, | ||
+ &brport_attr_priority, | ||
+@@ -285,6 +300,9 @@ static const struct brport_attribute *brport_attrs[] = { | ||
+ &brport_attr_multicast_router, | ||
+@@ -286,6 +301,9 @@ static const struct brport_attribute *br | ||
+ &brport_attr_multicast_fast_leave, | ||
+ &brport_attr_multicast_to_unicast, | ||
++#endif | ||
+ #endif | ||
++#ifdef CONFIG_BRIDGE_IGMP_SNOOPING_WAKEUPCALLS | ||
++ &brport_attr_multicast_wakeupcall, | ||
+ #endif | ||
++#endif | ||
+ &brport_attr_proxyarp, | ||
+ &brport_attr_proxyarp_wifi, | ||
+diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c | ||
+index e0fa875832a0..caf454185dc8 100644 | ||
+ &brport_attr_multicast_flood, | ||
+--- a/net/core/rtnetlink.c | ||
++++ b/net/core/rtnetlink.c | ||
+@@ -55,7 +55,7 @@ | ||
|
@@ -857,11 +835,9 @@ index 0000000000000000000000000000000000000000..84f872ddc2433514ca5c210f73b37855 | |
+ | ||
+ struct rtnl_link { | ||
+ rtnl_doit_func doit; | ||
+diff --git a/net/ipv6/mcast_snoop.c b/net/ipv6/mcast_snoop.c | ||
+index 04d5fcdfa6e0..9a5061edbaf3 100644 | ||
+--- a/net/ipv6/mcast_snoop.c | ||
++++ b/net/ipv6/mcast_snoop.c | ||
+@@ -131,7 +131,7 @@ static inline __sum16 ipv6_mc_validate_checksum(struct sk_buff *skb) | ||
+@@ -131,7 +131,7 @@ static inline __sum16 ipv6_mc_validate_c | ||
+ return skb_checksum_validate(skb, IPPROTO_ICMPV6, ip6_compute_pseudo); | ||
+ } | ||
+ | ||
|
@@ -870,14 +846,11 @@ index 0000000000000000000000000000000000000000..84f872ddc2433514ca5c210f73b37855 | |
+ { | ||
+ unsigned int len = skb_transport_offset(skb) + sizeof(struct icmp6hdr); | ||
+ unsigned int transport_len = ipv6_transport_len(skb); | ||
+@@ -150,6 +150,7 @@ static int ipv6_mc_check_icmpv6(struct sk_buff *skb) | ||
+@@ -150,6 +150,7 @@ static int ipv6_mc_check_icmpv6(struct s | ||
+ | ||
+ return 0; | ||
+ } | ||
++EXPORT_SYMBOL(ipv6_mc_check_icmpv6); | ||
+ | ||
+ /** | ||
+ * ipv6_mc_check_mld - checks whether this is a sane MLD packet | ||
+-- | ||
+2.40.1 | ||
+ |