Skip to content

Commit

Permalink
Merge pull request freifunk-gluon#3265 from blocktrron/upstream-maste…
Browse files Browse the repository at this point in the history
…r-updates

modules: update to latest HEAD
  • Loading branch information
blocktrron authored May 20, 2024
2 parents acc07c6 + bc59e3c commit d3588a9
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 66 deletions.
4 changes: 2 additions & 2 deletions modules
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@ GLUON_FEEDS='gluon packages routing'

OPENWRT_REPO=https://github.com/openwrt/openwrt.git
OPENWRT_BRANCH=openwrt-23.05
OPENWRT_COMMIT=447eef2063cce1ad472a07af3e368826158b1da3
OPENWRT_COMMIT=09a8f75077117ca2ab880cbf854cf7a2dae0d494

PACKAGES_GLUON_REPO=https://github.com/freifunk-gluon/packages.git
PACKAGES_GLUON_COMMIT=3d08b0fee8dc5d96d8bcdb985fad1d5564de4022

PACKAGES_PACKAGES_REPO=https://github.com/openwrt/packages.git
PACKAGES_PACKAGES_BRANCH=openwrt-23.05
PACKAGES_PACKAGES_COMMIT=ade006dc9feded81a13d0d268a2557b594f61b7e
PACKAGES_PACKAGES_COMMIT=a14bb12dffba451e1b386e2d080997d9293d1481

PACKAGES_ROUTING_REPO=https://github.com/openwrt/routing.git
PACKAGES_ROUTING_BRANCH=openwrt-23.05
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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 {
Expand All @@ -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 {
Expand All @@ -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
Expand Down Expand Up @@ -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);
Expand All @@ -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;
Expand All @@ -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,
Expand All @@ -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);
Expand All @@ -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;
Expand All @@ -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,
Expand All @@ -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
+ }
+
Expand Down Expand Up @@ -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);
+
Expand All @@ -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;
+ }
+
Expand Down Expand Up @@ -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;
+ }
+
Expand All @@ -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
Expand All @@ -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]);
Expand All @@ -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 {
Expand All @@ -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
+
Expand All @@ -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
+
Expand All @@ -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 @@
Expand All @@ -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);
+ }
+
Expand All @@ -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
+

0 comments on commit d3588a9

Please sign in to comment.