mirror of
https://github.com/Heleguo/lede.git
synced 2025-12-16 19:01:32 +00:00
kernel: bump all to latest HEAD
This commit is contained in:
parent
6e98a86bb5
commit
df34fd611a
@ -1,2 +1,2 @@
|
||||
LINUX_VERSION-5.10 = .241
|
||||
LINUX_KERNEL_HASH-5.10.241 = 08c1e982064c81f8445a8fff2293d430c716c11fd3185606b8275718d696d8d6
|
||||
LINUX_VERSION-5.10 = .242
|
||||
LINUX_KERNEL_HASH-5.10.242 = bc3ae7003174e26c9a39534cfb8d66cee1a0ba6e1dd0381a9fe092f9de6ba9cd
|
||||
|
||||
@ -1,2 +1,2 @@
|
||||
LINUX_VERSION-5.15 = .190
|
||||
LINUX_KERNEL_HASH-5.15.190 = 62b814f1a48e1d67764a28611f23ca1f1ce1084ad7f1d319acc05720a9a68604
|
||||
LINUX_VERSION-5.15 = .191
|
||||
LINUX_KERNEL_HASH-5.15.191 = 7a2db3ac34a3edb6f497204cc287497c29bb3218fdb7876951f8bceac46e924e
|
||||
|
||||
@ -1,2 +1,2 @@
|
||||
LINUX_VERSION-5.4 = .297
|
||||
LINUX_KERNEL_HASH-5.4.297 = f10cfcea7acf7588087d7cc17ebeeb7d3ff783c040536698c544eed7c5e8a841
|
||||
LINUX_VERSION-5.4 = .298
|
||||
LINUX_KERNEL_HASH-5.4.298 = 01163bed1abadc1e5e6480f0d694c360281cbff3446023c2e015f1e24504e4e6
|
||||
|
||||
@ -1,2 +1,2 @@
|
||||
LINUX_VERSION-6.1 = .149
|
||||
LINUX_KERNEL_HASH-6.1.149 = c4e906b8d39a5866d25e06371d4de4454fbfaaeb67979a04e4137e807877be39
|
||||
LINUX_VERSION-6.1 = .150
|
||||
LINUX_KERNEL_HASH-6.1.150 = 001bffcc08e2b544fb507c0588f9270f8b5b1138508a4be1205492e3c57824ef
|
||||
|
||||
@ -1,2 +1,2 @@
|
||||
LINUX_VERSION-6.12 = .44
|
||||
LINUX_KERNEL_HASH-6.12.44 = b650210ed3027b224969d148aa377452a9aad3ae7f2851abedd31adfef16bdae
|
||||
LINUX_VERSION-6.12 = .45
|
||||
LINUX_KERNEL_HASH-6.12.45 = 8f95a8549cfbdfb89c1181a1f55a971f04dfcd629508a2ed70b777ab92f9db3e
|
||||
|
||||
@ -1,2 +1,2 @@
|
||||
LINUX_VERSION-6.6 = .103
|
||||
LINUX_KERNEL_HASH-6.6.103 = d288dd38c3e62ba576ba6b3ad2a84cfba65cd43b702f6c50d1f701aee942b18e
|
||||
LINUX_VERSION-6.6 = .104
|
||||
LINUX_KERNEL_HASH-6.6.104 = 2a772f9d661afabaaddcdfd1116239acb2d943377aceab9e0baed2b7a915e36a
|
||||
|
||||
@ -1,47 +0,0 @@
|
||||
From 5189446ba995556eaa3755a6e875bc06675b88bd Mon Sep 17 00:00:00 2001
|
||||
From: Oscar Maes <oscmaes92@gmail.com>
|
||||
Date: Wed, 27 Aug 2025 08:23:21 +0200
|
||||
Subject: [PATCH] net: ipv4: fix regression in local-broadcast routes
|
||||
|
||||
Commit 9e30ecf23b1b ("net: ipv4: fix incorrect MTU in broadcast routes")
|
||||
introduced a regression where local-broadcast packets would have their
|
||||
gateway set in __mkroute_output, which was caused by fi = NULL being
|
||||
removed.
|
||||
|
||||
Fix this by resetting the fib_info for local-broadcast packets. This
|
||||
preserves the intended changes for directed-broadcast packets.
|
||||
|
||||
Cc: stable@vger.kernel.org
|
||||
Fixes: 9e30ecf23b1b ("net: ipv4: fix incorrect MTU in broadcast routes")
|
||||
Reported-by: Brett A C Sheffield <bacs@librecast.net>
|
||||
Closes: https://lore.kernel.org/regressions/20250822165231.4353-4-bacs@librecast.net
|
||||
Signed-off-by: Oscar Maes <oscmaes92@gmail.com>
|
||||
Reviewed-by: David Ahern <dsahern@kernel.org>
|
||||
Link: https://patch.msgid.link/20250827062322.4807-1-oscmaes92@gmail.com
|
||||
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
---
|
||||
net/ipv4/route.c | 10 +++++++---
|
||||
1 file changed, 7 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/net/ipv4/route.c
|
||||
+++ b/net/ipv4/route.c
|
||||
@@ -2532,12 +2532,16 @@ static struct rtable *__mkroute_output(c
|
||||
!netif_is_l3_master(dev_out))
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
- if (ipv4_is_lbcast(fl4->daddr))
|
||||
+ if (ipv4_is_lbcast(fl4->daddr)) {
|
||||
type = RTN_BROADCAST;
|
||||
- else if (ipv4_is_multicast(fl4->daddr))
|
||||
+
|
||||
+ /* reset fi to prevent gateway resolution */
|
||||
+ fi = NULL;
|
||||
+ } else if (ipv4_is_multicast(fl4->daddr)) {
|
||||
type = RTN_MULTICAST;
|
||||
- else if (ipv4_is_zeronet(fl4->daddr))
|
||||
+ } else if (ipv4_is_zeronet(fl4->daddr)) {
|
||||
return ERR_PTR(-EINVAL);
|
||||
+ }
|
||||
|
||||
if (dev_out->flags & IFF_LOOPBACK)
|
||||
flags |= RTCF_LOCAL;
|
||||
@ -1,47 +0,0 @@
|
||||
From 5189446ba995556eaa3755a6e875bc06675b88bd Mon Sep 17 00:00:00 2001
|
||||
From: Oscar Maes <oscmaes92@gmail.com>
|
||||
Date: Wed, 27 Aug 2025 08:23:21 +0200
|
||||
Subject: [PATCH] net: ipv4: fix regression in local-broadcast routes
|
||||
|
||||
Commit 9e30ecf23b1b ("net: ipv4: fix incorrect MTU in broadcast routes")
|
||||
introduced a regression where local-broadcast packets would have their
|
||||
gateway set in __mkroute_output, which was caused by fi = NULL being
|
||||
removed.
|
||||
|
||||
Fix this by resetting the fib_info for local-broadcast packets. This
|
||||
preserves the intended changes for directed-broadcast packets.
|
||||
|
||||
Cc: stable@vger.kernel.org
|
||||
Fixes: 9e30ecf23b1b ("net: ipv4: fix incorrect MTU in broadcast routes")
|
||||
Reported-by: Brett A C Sheffield <bacs@librecast.net>
|
||||
Closes: https://lore.kernel.org/regressions/20250822165231.4353-4-bacs@librecast.net
|
||||
Signed-off-by: Oscar Maes <oscmaes92@gmail.com>
|
||||
Reviewed-by: David Ahern <dsahern@kernel.org>
|
||||
Link: https://patch.msgid.link/20250827062322.4807-1-oscmaes92@gmail.com
|
||||
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
---
|
||||
net/ipv4/route.c | 10 +++++++---
|
||||
1 file changed, 7 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/net/ipv4/route.c
|
||||
+++ b/net/ipv4/route.c
|
||||
@@ -2547,12 +2547,16 @@ static struct rtable *__mkroute_output(c
|
||||
!netif_is_l3_master(dev_out))
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
- if (ipv4_is_lbcast(fl4->daddr))
|
||||
+ if (ipv4_is_lbcast(fl4->daddr)) {
|
||||
type = RTN_BROADCAST;
|
||||
- else if (ipv4_is_multicast(fl4->daddr))
|
||||
+
|
||||
+ /* reset fi to prevent gateway resolution */
|
||||
+ fi = NULL;
|
||||
+ } else if (ipv4_is_multicast(fl4->daddr)) {
|
||||
type = RTN_MULTICAST;
|
||||
- else if (ipv4_is_zeronet(fl4->daddr))
|
||||
+ } else if (ipv4_is_zeronet(fl4->daddr)) {
|
||||
return ERR_PTR(-EINVAL);
|
||||
+ }
|
||||
|
||||
if (dev_out->flags & IFF_LOOPBACK)
|
||||
flags |= RTCF_LOCAL;
|
||||
@ -8,9 +8,9 @@
|
||||
+ struct rtnl_link_stats64 *nlstats); */
|
||||
+extern bool br_is_hairpin_enabled(struct net_device *dev);
|
||||
|
||||
#if IS_ENABLED(CONFIG_BRIDGE) && IS_ENABLED(CONFIG_BRIDGE_IGMP_SNOOPING)
|
||||
int br_multicast_list_adjacent(struct net_device *dev,
|
||||
@@ -213,4 +216,42 @@ static inline clock_t br_get_ageing_time
|
||||
extern void br_dev_update_stats(struct net_device *dev,
|
||||
struct rtnl_link_stats64 *nlstats);
|
||||
@@ -216,4 +219,42 @@ static inline clock_t br_get_ageing_time
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -55,7 +55,7 @@
|
||||
#endif
|
||||
--- a/include/linux/if_vlan.h
|
||||
+++ b/include/linux/if_vlan.h
|
||||
@@ -143,7 +143,10 @@ extern struct net_device *__vlan_find_de
|
||||
@@ -138,7 +138,10 @@ extern struct net_device *__vlan_find_de
|
||||
extern int vlan_for_each(struct net_device *dev,
|
||||
int (*action)(struct net_device *dev, int vid,
|
||||
void *arg), void *arg);
|
||||
@ -76,12 +76,12 @@
|
||||
+
|
||||
+} /* QCA NSS ECM support */
|
||||
+
|
||||
static inline struct net_device *
|
||||
__vlan_find_dev_deep_rcu(struct net_device *real_dev,
|
||||
__be16 vlan_proto, u16 vlan_id)
|
||||
static inline bool is_vlan_dev(const struct net_device *dev)
|
||||
{
|
||||
return false;
|
||||
--- a/include/linux/netdevice.h
|
||||
+++ b/include/linux/netdevice.h
|
||||
@@ -2933,6 +2933,10 @@ enum netdev_cmd {
|
||||
@@ -2907,6 +2907,10 @@ enum netdev_cmd {
|
||||
NETDEV_OFFLOAD_XSTATS_REPORT_USED,
|
||||
NETDEV_OFFLOAD_XSTATS_REPORT_DELTA,
|
||||
NETDEV_XDP_FEAT_CHANGE,
|
||||
@ -94,7 +94,7 @@
|
||||
|
||||
--- a/include/net/ip6_route.h
|
||||
+++ b/include/net/ip6_route.h
|
||||
@@ -207,6 +207,11 @@ void rt6_multipath_rebalance(struct fib6
|
||||
@@ -215,6 +215,11 @@ void rt6_multipath_rebalance(struct fib6
|
||||
void rt6_uncached_list_add(struct rt6_info *rt);
|
||||
void rt6_uncached_list_del(struct rt6_info *rt);
|
||||
|
||||
@ -108,7 +108,7 @@
|
||||
const struct dst_entry *dst = skb_dst(skb);
|
||||
--- a/include/net/neighbour.h
|
||||
+++ b/include/net/neighbour.h
|
||||
@@ -249,6 +249,13 @@ static inline int neigh_parms_family(str
|
||||
@@ -250,6 +250,13 @@ static inline int neigh_parms_family(str
|
||||
return p->tbl->family;
|
||||
}
|
||||
|
||||
@ -122,7 +122,7 @@
|
||||
#define NEIGH_PRIV_ALIGN sizeof(long long)
|
||||
#define NEIGH_ENTRY_SIZE(size) ALIGN((size), NEIGH_PRIV_ALIGN)
|
||||
|
||||
@@ -395,6 +402,11 @@ void __neigh_for_each_release(struct nei
|
||||
@@ -396,6 +403,11 @@ void __neigh_for_each_release(struct nei
|
||||
int (*cb)(struct neighbour *));
|
||||
int neigh_xmit(int fam, struct net_device *, const void *, struct sk_buff *);
|
||||
|
||||
@ -134,7 +134,7 @@
|
||||
struct neigh_seq_state {
|
||||
struct seq_net_private p;
|
||||
struct neigh_table *tbl;
|
||||
@@ -600,4 +612,5 @@ static inline void neigh_update_is_route
|
||||
@@ -601,4 +613,5 @@ static inline void neigh_update_is_route
|
||||
*notify = 1;
|
||||
}
|
||||
}
|
||||
@ -142,7 +142,7 @@
|
||||
#endif
|
||||
--- a/include/net/route.h
|
||||
+++ b/include/net/route.h
|
||||
@@ -237,6 +237,11 @@ struct rtable *rt_dst_alloc(struct net_d
|
||||
@@ -246,6 +246,11 @@ struct rtable *rt_dst_alloc(struct net_d
|
||||
unsigned int flags, u16 type, bool noxfrm);
|
||||
struct rtable *rt_dst_clone(struct net_device *dev, struct rtable *rt);
|
||||
|
||||
@ -156,7 +156,7 @@
|
||||
void fib_del_ifaddr(struct in_ifaddr *, struct in_ifaddr *);
|
||||
--- a/net/bridge/br_private.h
|
||||
+++ b/net/bridge/br_private.h
|
||||
@@ -2267,4 +2267,6 @@ void br_do_suppress_nd(struct sk_buff *s
|
||||
@@ -2304,4 +2304,6 @@ void br_do_suppress_nd(struct sk_buff *s
|
||||
u16 vid, struct net_bridge_port *p, struct nd_msg *msg);
|
||||
struct nd_msg *br_is_nd_neigh_msg(struct sk_buff *skb, struct nd_msg *m);
|
||||
bool br_is_neigh_suppress_enabled(const struct net_bridge_port *p, u16 vid);
|
||||
@ -232,8 +232,8 @@
|
||||
+
|
||||
int __init br_fdb_init(void)
|
||||
{
|
||||
br_fdb_cache = kmem_cache_create("bridge_fdb_cache",
|
||||
@@ -195,6 +209,25 @@ static void fdb_notify(struct net_bridge
|
||||
br_fdb_cache = KMEM_CACHE(net_bridge_fdb_entry, SLAB_HWCACHE_ALIGN);
|
||||
@@ -192,6 +206,25 @@ static void fdb_notify(struct net_bridge
|
||||
if (swdev_notify)
|
||||
br_switchdev_fdb_notify(br, fdb, type);
|
||||
|
||||
@ -259,7 +259,7 @@
|
||||
skb = nlmsg_new(fdb_nlmsg_size(), GFP_ATOMIC);
|
||||
if (skb == NULL)
|
||||
goto errout;
|
||||
@@ -519,6 +552,22 @@ out:
|
||||
@@ -537,6 +570,22 @@ out:
|
||||
spin_unlock_bh(&br->hash_lock);
|
||||
}
|
||||
|
||||
@ -282,7 +282,7 @@
|
||||
void br_fdb_cleanup(struct work_struct *work)
|
||||
{
|
||||
struct net_bridge *br = container_of(work, struct net_bridge,
|
||||
@@ -527,6 +576,7 @@ void br_fdb_cleanup(struct work_struct *
|
||||
@@ -545,6 +594,7 @@ void br_fdb_cleanup(struct work_struct *
|
||||
unsigned long delay = hold_time(br);
|
||||
unsigned long work_delay = delay;
|
||||
unsigned long now = jiffies;
|
||||
@ -290,7 +290,7 @@
|
||||
|
||||
/* this part is tricky, in order to avoid blocking learning and
|
||||
* consequently forwarding, we rely on rcu to delete objects with
|
||||
@@ -553,8 +603,15 @@ void br_fdb_cleanup(struct work_struct *
|
||||
@@ -571,8 +621,15 @@ void br_fdb_cleanup(struct work_struct *
|
||||
work_delay = min(work_delay, this_timer - now);
|
||||
} else {
|
||||
spin_lock_bh(&br->hash_lock);
|
||||
@ -307,7 +307,7 @@
|
||||
spin_unlock_bh(&br->hash_lock);
|
||||
}
|
||||
}
|
||||
@@ -891,6 +948,12 @@ void br_fdb_update(struct net_bridge *br
|
||||
@@ -928,6 +985,12 @@ void br_fdb_update(struct net_bridge *br
|
||||
*/
|
||||
if (unlikely(test_bit(BR_FDB_LOCKED, &fdb->flags)))
|
||||
clear_bit(BR_FDB_LOCKED, &fdb->flags);
|
||||
@ -319,8 +319,8 @@
|
||||
+ /* QCA NSS ECM support - End */
|
||||
}
|
||||
|
||||
if (unlikely(test_bit(BR_FDB_ADDED_BY_USER, &flags)))
|
||||
@@ -914,6 +977,64 @@ void br_fdb_update(struct net_bridge *br
|
||||
if (unlikely(test_bit(BR_FDB_ADDED_BY_USER, &flags))) {
|
||||
@@ -955,6 +1018,64 @@ void br_fdb_update(struct net_bridge *br
|
||||
}
|
||||
}
|
||||
|
||||
@ -418,7 +418,7 @@
|
||||
/* Since more than one interface can be attached to a bridge,
|
||||
* there still maybe an alternate path for netconsole to use;
|
||||
* therefore there is no reason for a NETDEV_RELEASE event.
|
||||
@@ -775,3 +785,97 @@ bool br_port_flag_is_set(const struct ne
|
||||
@@ -797,3 +807,97 @@ bool br_port_flag_is_set(const struct ne
|
||||
return p->flags & flag;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(br_port_flag_is_set);
|
||||
@ -488,7 +488,7 @@
|
||||
+{
|
||||
+ struct pcpu_sw_netstats *tstats;
|
||||
+
|
||||
+ // Is this a bridge?
|
||||
+ // Is this a bridge?
|
||||
+ if (!(dev->priv_flags & IFF_EBRIDGE))
|
||||
+ return;
|
||||
+
|
||||
@ -518,7 +518,7 @@
|
||||
+/* QCA NSS ECM support - End */
|
||||
--- a/net/core/neighbour.c
|
||||
+++ b/net/core/neighbour.c
|
||||
@@ -1275,6 +1275,22 @@ static void neigh_update_hhs(struct neig
|
||||
@@ -1282,6 +1282,22 @@ static void neigh_update_hhs(struct neig
|
||||
}
|
||||
}
|
||||
|
||||
@ -541,7 +541,7 @@
|
||||
/* Generic update routine.
|
||||
-- lladdr is new lladdr or NULL, if it is not supplied.
|
||||
-- new is new state.
|
||||
@@ -1303,6 +1319,7 @@ static int __neigh_update(struct neighbo
|
||||
@@ -1310,6 +1326,7 @@ static int __neigh_update(struct neighbo
|
||||
struct net_device *dev;
|
||||
int err, notify = 0;
|
||||
u8 old;
|
||||
@ -549,7 +549,7 @@
|
||||
|
||||
trace_neigh_update(neigh, lladdr, new, flags, nlmsg_pid);
|
||||
|
||||
@@ -1317,7 +1334,10 @@ static int __neigh_update(struct neighbo
|
||||
@@ -1324,7 +1341,10 @@ static int __neigh_update(struct neighbo
|
||||
new = old;
|
||||
goto out;
|
||||
}
|
||||
@ -561,7 +561,7 @@
|
||||
(old & (NUD_NOARP | NUD_PERMANENT)))
|
||||
goto out;
|
||||
|
||||
@@ -1354,7 +1374,12 @@ static int __neigh_update(struct neighbo
|
||||
@@ -1361,7 +1381,12 @@ static int __neigh_update(struct neighbo
|
||||
- compare new & old
|
||||
- if they are different, check override flag
|
||||
*/
|
||||
@ -575,7 +575,7 @@
|
||||
!memcmp(lladdr, neigh->ha, dev->addr_len))
|
||||
lladdr = neigh->ha;
|
||||
} else {
|
||||
@@ -1476,8 +1501,11 @@ out:
|
||||
@@ -1483,8 +1508,11 @@ out:
|
||||
neigh_update_gc_list(neigh);
|
||||
if (managed_update)
|
||||
neigh_update_managed_list(neigh);
|
||||
@ -590,7 +590,7 @@
|
||||
}
|
||||
--- a/net/ipv4/fib_trie.c
|
||||
+++ b/net/ipv4/fib_trie.c
|
||||
@@ -1211,6 +1211,9 @@ static bool fib_valid_key_len(u32 key, u
|
||||
@@ -1196,6 +1196,9 @@ static int fib_insert_alias(struct trie
|
||||
static void fib_remove_alias(struct trie *t, struct key_vector *tp,
|
||||
struct key_vector *l, struct fib_alias *old);
|
||||
|
||||
@ -600,7 +600,7 @@
|
||||
/* Caller must hold RTNL. */
|
||||
int fib_table_insert(struct net *net, struct fib_table *tb,
|
||||
struct fib_config *cfg, struct netlink_ext_ack *extack)
|
||||
@@ -1404,6 +1407,9 @@ int fib_table_insert(struct net *net, st
|
||||
@@ -1386,6 +1389,9 @@ int fib_table_insert(struct net *net, st
|
||||
rtmsg_fib(RTM_NEWROUTE, htonl(key), new_fa, plen, new_fa->tb_id,
|
||||
&cfg->fc_nlinfo, nlflags);
|
||||
succeeded:
|
||||
@ -610,7 +610,7 @@
|
||||
return 0;
|
||||
|
||||
out_remove_new_fa:
|
||||
@@ -1775,6 +1781,9 @@ int fib_table_delete(struct net *net, st
|
||||
@@ -1754,6 +1760,9 @@ int fib_table_delete(struct net *net, st
|
||||
if (fa_to_delete->fa_state & FA_S_ACCESSED)
|
||||
rt_cache_flush(cfg->fc_nlinfo.nl_net);
|
||||
|
||||
@ -620,7 +620,7 @@
|
||||
fib_release_info(fa_to_delete->fa_info);
|
||||
alias_free_mem_rcu(fa_to_delete);
|
||||
return 0;
|
||||
@@ -2407,6 +2416,20 @@ void __init fib_trie_init(void)
|
||||
@@ -2386,6 +2395,20 @@ void __init fib_trie_init(void)
|
||||
0, SLAB_PANIC | SLAB_ACCOUNT, NULL);
|
||||
}
|
||||
|
||||
@ -643,7 +643,7 @@
|
||||
struct fib_table *tb;
|
||||
--- a/net/ipv6/ndisc.c
|
||||
+++ b/net/ipv6/ndisc.c
|
||||
@@ -666,6 +666,7 @@ void ndisc_send_ns(struct net_device *de
|
||||
@@ -670,6 +670,7 @@ void ndisc_send_ns(struct net_device *de
|
||||
if (skb)
|
||||
ndisc_send_skb(skb, daddr, saddr);
|
||||
}
|
||||
@ -653,7 +653,7 @@
|
||||
const struct in6_addr *daddr)
|
||||
--- a/net/ipv6/route.c
|
||||
+++ b/net/ipv6/route.c
|
||||
@@ -198,6 +198,9 @@ static void rt6_uncached_list_flush_dev(
|
||||
@@ -196,6 +196,9 @@ static void rt6_uncached_list_flush_dev(
|
||||
}
|
||||
}
|
||||
|
||||
@ -663,7 +663,7 @@
|
||||
static inline const void *choose_neigh_daddr(const struct in6_addr *p,
|
||||
struct sk_buff *skb,
|
||||
const void *daddr)
|
||||
@@ -3868,6 +3871,10 @@ int ip6_route_add(struct fib6_config *cf
|
||||
@@ -3917,6 +3920,10 @@ int ip6_route_add(struct fib6_config *cf
|
||||
return PTR_ERR(rt);
|
||||
|
||||
err = __ip6_ins_rt(rt, &cfg->fc_nlinfo, extack);
|
||||
@ -674,7 +674,7 @@
|
||||
fib6_info_release(rt);
|
||||
|
||||
return err;
|
||||
@@ -3889,6 +3896,9 @@ static int __ip6_del_rt(struct fib6_info
|
||||
@@ -3938,6 +3945,9 @@ static int __ip6_del_rt(struct fib6_info
|
||||
err = fib6_del(rt, info);
|
||||
spin_unlock_bh(&table->tb6_lock);
|
||||
|
||||
@ -684,7 +684,7 @@
|
||||
out:
|
||||
fib6_info_release(rt);
|
||||
return err;
|
||||
@@ -6336,6 +6346,20 @@ static int ip6_route_dev_notify(struct n
|
||||
@@ -6409,6 +6419,20 @@ static int ip6_route_dev_notify(struct n
|
||||
return NOTIFY_OK;
|
||||
}
|
||||
|
||||
@ -707,7 +707,7 @@
|
||||
*/
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -1699,6 +1699,7 @@ const char *netdev_cmd_to_name(enum netd
|
||||
@@ -1768,6 +1768,7 @@ const char *netdev_cmd_to_name(enum netd
|
||||
N(PRE_CHANGEADDR) N(OFFLOAD_XSTATS_ENABLE) N(OFFLOAD_XSTATS_DISABLE)
|
||||
N(OFFLOAD_XSTATS_REPORT_USED) N(OFFLOAD_XSTATS_REPORT_DELTA)
|
||||
N(XDP_FEAT_CHANGE)
|
||||
@ -717,7 +717,7 @@
|
||||
return "UNKNOWN_NETDEV_EVENT";
|
||||
--- a/net/ipv6/addrconf.c
|
||||
+++ b/net/ipv6/addrconf.c
|
||||
@@ -1002,6 +1002,7 @@ void inet6_ifa_finish_destroy(struct ine
|
||||
@@ -993,6 +993,7 @@ void inet6_ifa_finish_destroy(struct ine
|
||||
|
||||
kfree_rcu(ifp, rcu);
|
||||
}
|
||||
@ -727,7 +727,7 @@
|
||||
ipv6_link_dev_addr(struct inet6_dev *idev, struct inet6_ifaddr *ifp)
|
||||
--- a/include/net/vxlan.h
|
||||
+++ b/include/net/vxlan.h
|
||||
@@ -440,6 +440,15 @@ static inline __be32 vxlan_compute_rco(u
|
||||
@@ -441,6 +441,15 @@ static inline __be32 vxlan_compute_rco(u
|
||||
return vni_field;
|
||||
}
|
||||
|
||||
@ -754,7 +754,7 @@
|
||||
IPPROTO_ENCAP = 98, /* Encapsulation Header */
|
||||
#define IPPROTO_ENCAP IPPROTO_ENCAP
|
||||
IPPROTO_PIM = 103, /* Protocol Independent Multicast */
|
||||
@@ -327,7 +329,7 @@ struct sockaddr_in {
|
||||
@@ -329,7 +331,7 @@ struct sockaddr_in {
|
||||
#endif
|
||||
|
||||
/* <asm/byteorder.h> contains the htonl type stuff.. */
|
||||
@ -774,7 +774,7 @@
|
||||
IPPROTO_ENCAP = 98, /* Encapsulation Header */
|
||||
#define IPPROTO_ENCAP IPPROTO_ENCAP
|
||||
IPPROTO_PIM = 103, /* Protocol Independent Multicast */
|
||||
@@ -327,7 +329,7 @@ struct sockaddr_in {
|
||||
@@ -329,7 +331,7 @@ struct sockaddr_in {
|
||||
#endif
|
||||
|
||||
/* <asm/byteorder.h> contains the htonl type stuff.. */
|
||||
@ -785,7 +785,7 @@
|
||||
#endif /* _UAPI_LINUX_IN_H */
|
||||
--- a/net/netfilter/nf_conntrack_ecache.c
|
||||
+++ b/net/netfilter/nf_conntrack_ecache.c
|
||||
@@ -365,7 +365,7 @@ void nf_conntrack_register_notifier(stru
|
||||
@@ -365,7 +365,7 @@ int nf_conntrack_register_notifier(struc
|
||||
mutex_lock(&nf_ct_ecache_mutex);
|
||||
notify = rcu_dereference_protected(net->ct.nf_conntrack_event_cb,
|
||||
lockdep_is_held(&nf_ct_ecache_mutex));
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/bonding/bond_3ad.c
|
||||
+++ b/drivers/net/bonding/bond_3ad.c
|
||||
@@ -116,6 +116,40 @@ static void ad_marker_response_received(
|
||||
@@ -115,6 +115,40 @@ static void ad_marker_response_received(
|
||||
struct port *port);
|
||||
static void ad_update_actor_keys(struct port *port, bool reset);
|
||||
|
||||
@ -41,7 +41,7 @@
|
||||
|
||||
/* ================= api to bonding and kernel code ================== */
|
||||
|
||||
@@ -1073,7 +1107,31 @@ static void ad_mux_machine(struct port *
|
||||
@@ -1159,7 +1193,31 @@ static void ad_mux_machine(struct port *
|
||||
ad_disable_collecting_distributing(port,
|
||||
update_slave_arr);
|
||||
port->ntt = true;
|
||||
@ -73,7 +73,7 @@
|
||||
case AD_MUX_COLLECTING_DISTRIBUTING:
|
||||
port->actor_oper_port_state |= LACP_STATE_COLLECTING;
|
||||
port->actor_oper_port_state |= LACP_STATE_DISTRIBUTING;
|
||||
@@ -1917,6 +1975,7 @@ static void ad_enable_collecting_distrib
|
||||
@@ -2060,6 +2118,7 @@ static void ad_enable_collecting_distrib
|
||||
bool *update_slave_arr)
|
||||
{
|
||||
if (port->aggregator->is_active) {
|
||||
@ -81,7 +81,7 @@
|
||||
slave_dbg(port->slave->bond->dev, port->slave->dev,
|
||||
"Enabling port %d (LAG %d)\n",
|
||||
port->actor_port_number,
|
||||
@@ -1924,6 +1983,16 @@ static void ad_enable_collecting_distrib
|
||||
@@ -2067,6 +2126,16 @@ static void ad_enable_collecting_distrib
|
||||
__enable_port(port);
|
||||
/* Slave array needs update */
|
||||
*update_slave_arr = true;
|
||||
@ -98,7 +98,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2683,6 +2752,104 @@ int bond_3ad_get_active_agg_info(struct
|
||||
@@ -2824,6 +2893,104 @@ int bond_3ad_get_active_agg_info(struct
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -227,7 +227,7 @@
|
||||
/**
|
||||
* bond_dev_queue_xmit - Prepare skb for xmit.
|
||||
*
|
||||
@@ -1189,6 +1204,23 @@ void bond_change_active_slave(struct bon
|
||||
@@ -1308,6 +1323,23 @@ void bond_change_active_slave(struct bon
|
||||
if (BOND_MODE(bond) == BOND_MODE_8023AD)
|
||||
bond_3ad_handle_link_change(new_active, BOND_LINK_UP);
|
||||
|
||||
@ -251,7 +251,7 @@
|
||||
if (bond_is_lb(bond))
|
||||
bond_alb_handle_link_change(bond, new_active, BOND_LINK_UP);
|
||||
} else {
|
||||
@@ -1833,6 +1865,7 @@ int bond_enslave(struct net_device *bond
|
||||
@@ -1952,6 +1984,7 @@ int bond_enslave(struct net_device *bond
|
||||
const struct net_device_ops *slave_ops = slave_dev->netdev_ops;
|
||||
struct slave *new_slave = NULL, *prev_slave;
|
||||
struct sockaddr_storage ss;
|
||||
@ -259,7 +259,7 @@
|
||||
int link_reporting;
|
||||
int res = 0, i;
|
||||
|
||||
@@ -2278,6 +2311,15 @@ int bond_enslave(struct net_device *bond
|
||||
@@ -2412,6 +2445,15 @@ skip_mac_set:
|
||||
bond_is_active_slave(new_slave) ? "an active" : "a backup",
|
||||
new_slave->link != BOND_LINK_DOWN ? "an up" : "a down");
|
||||
|
||||
@ -275,7 +275,7 @@
|
||||
/* enslave is successful */
|
||||
bond_queue_slave_event(new_slave);
|
||||
return 0;
|
||||
@@ -2343,6 +2385,15 @@ err_undo_flags:
|
||||
@@ -2477,6 +2519,15 @@ err_undo_flags:
|
||||
}
|
||||
}
|
||||
|
||||
@ -291,7 +291,7 @@
|
||||
return res;
|
||||
}
|
||||
|
||||
@@ -2364,6 +2415,7 @@ static int __bond_release_one(struct net
|
||||
@@ -2498,6 +2549,7 @@ static int __bond_release_one(struct net
|
||||
struct bonding *bond = netdev_priv(bond_dev);
|
||||
struct slave *slave, *oldcurrent;
|
||||
struct sockaddr_storage ss;
|
||||
@ -299,7 +299,7 @@
|
||||
int old_flags = bond_dev->flags;
|
||||
netdev_features_t old_features = bond_dev->features;
|
||||
|
||||
@@ -2386,6 +2438,15 @@ static int __bond_release_one(struct net
|
||||
@@ -2520,6 +2572,15 @@ static int __bond_release_one(struct net
|
||||
|
||||
bond_set_slave_inactive_flags(slave, BOND_SLAVE_NOTIFY_NOW);
|
||||
|
||||
@ -315,7 +315,7 @@
|
||||
bond_sysfs_slave_del(slave);
|
||||
|
||||
/* recompute stats just before removing the slave */
|
||||
@@ -2708,6 +2769,8 @@ static void bond_miimon_commit(struct bo
|
||||
@@ -2850,6 +2911,8 @@ static void bond_miimon_commit(struct bo
|
||||
struct slave *slave, *primary, *active;
|
||||
bool do_failover = false;
|
||||
struct list_head *iter;
|
||||
@ -324,7 +324,7 @@
|
||||
|
||||
ASSERT_RTNL();
|
||||
|
||||
@@ -2747,6 +2810,12 @@ static void bond_miimon_commit(struct bo
|
||||
@@ -2889,6 +2952,12 @@ static void bond_miimon_commit(struct bo
|
||||
bond_set_active_slave(slave);
|
||||
}
|
||||
|
||||
@ -337,7 +337,7 @@
|
||||
slave_info(bond->dev, slave->dev, "link status definitely up, %u Mbps %s duplex\n",
|
||||
slave->speed == SPEED_UNKNOWN ? 0 : slave->speed,
|
||||
slave->duplex ? "full" : "half");
|
||||
@@ -2795,6 +2864,16 @@ static void bond_miimon_commit(struct bo
|
||||
@@ -2937,6 +3006,16 @@ static void bond_miimon_commit(struct bo
|
||||
unblock_netpoll_tx();
|
||||
}
|
||||
|
||||
@ -354,7 +354,7 @@
|
||||
bond_set_carrier(bond);
|
||||
}
|
||||
|
||||
@@ -4047,8 +4126,219 @@ static inline u32 bond_eth_hash(struct s
|
||||
@@ -4189,8 +4268,224 @@ static inline u32 bond_eth_hash(struct s
|
||||
return 0;
|
||||
|
||||
ep = (struct ethhdr *)(data + mhoff);
|
||||
@ -521,6 +521,11 @@
|
||||
+ u8 *dst_mac, void *src,
|
||||
+ void *dst, u16 protocol,
|
||||
+ struct net_device *bond_dev,
|
||||
+ __be16 *layer4hdr);
|
||||
+struct net_device *bond_get_tx_dev(struct sk_buff *skb, uint8_t *src_mac,
|
||||
+ u8 *dst_mac, void *src,
|
||||
+ void *dst, u16 protocol,
|
||||
+ struct net_device *bond_dev,
|
||||
+ __be16 *layer4hdr)
|
||||
+{
|
||||
+ struct bonding *bond;
|
||||
@ -575,7 +580,7 @@
|
||||
|
||||
static bool bond_flow_ip(struct sk_buff *skb, struct flow_keys *fk, const void *data,
|
||||
int hlen, __be16 l2_proto, int *nhoff, int *ip_proto, bool l34)
|
||||
@@ -5177,15 +5467,18 @@ static netdev_tx_t bond_3ad_xor_xmit(str
|
||||
@@ -5319,15 +5614,18 @@ static netdev_tx_t bond_3ad_xor_xmit(str
|
||||
struct net_device *dev)
|
||||
{
|
||||
struct bonding *bond = netdev_priv(dev);
|
||||
@ -601,7 +606,7 @@
|
||||
}
|
||||
|
||||
/* in broadcast mode, we send everything to all usable interfaces. */
|
||||
@@ -5435,8 +5728,9 @@ static netdev_tx_t __bond_start_xmit(str
|
||||
@@ -5577,8 +5875,9 @@ static netdev_tx_t __bond_start_xmit(str
|
||||
return bond_xmit_roundrobin(skb, dev);
|
||||
case BOND_MODE_ACTIVEBACKUP:
|
||||
return bond_xmit_activebackup(skb, dev);
|
||||
@ -614,10 +619,10 @@
|
||||
return bond_xmit_broadcast(skb, dev);
|
||||
--- a/include/net/bond_3ad.h
|
||||
+++ b/include/net/bond_3ad.h
|
||||
@@ -302,8 +302,15 @@ int bond_3ad_lacpdu_recv(const struct sk
|
||||
struct slave *slave);
|
||||
@@ -308,6 +308,14 @@ int bond_3ad_lacpdu_recv(const struct sk
|
||||
int bond_3ad_set_carrier(struct bonding *bond);
|
||||
void bond_3ad_update_lacp_rate(struct bonding *bond);
|
||||
void bond_3ad_update_lacp_active(struct bonding *bond);
|
||||
+/* QCA NSS ECM bonding support */
|
||||
+struct net_device *bond_3ad_get_tx_dev(struct sk_buff *skb, uint8_t *src_mac,
|
||||
+ uint8_t *dst_mac, void *src,
|
||||
@ -629,8 +634,6 @@
|
||||
void bond_3ad_update_ad_actor_settings(struct bonding *bond);
|
||||
int bond_3ad_stats_fill(struct sk_buff *skb, struct bond_3ad_stats *stats);
|
||||
size_t bond_3ad_stats_size(void);
|
||||
#endif /* _NET_BOND_3AD_H */
|
||||
-
|
||||
--- a/include/net/bonding.h
|
||||
+++ b/include/net/bonding.h
|
||||
@@ -90,6 +90,8 @@
|
||||
@ -642,7 +645,7 @@
|
||||
#ifdef CONFIG_NET_POLL_CONTROLLER
|
||||
extern atomic_t netpoll_block_tx;
|
||||
|
||||
@@ -653,6 +655,7 @@ struct bond_net {
|
||||
@@ -676,6 +678,7 @@ struct bond_net {
|
||||
|
||||
int bond_rcv_validate(const struct sk_buff *skb, struct bonding *bond, struct slave *slave);
|
||||
netdev_tx_t bond_dev_queue_xmit(struct bonding *bond, struct sk_buff *skb, struct net_device *slave_dev);
|
||||
@ -650,7 +653,7 @@
|
||||
int bond_create(struct net *net, const char *name);
|
||||
int bond_create_sysfs(struct bond_net *net);
|
||||
void bond_destroy_sysfs(struct bond_net *net);
|
||||
@@ -684,6 +687,13 @@ struct bond_vlan_tag *bond_verify_device
|
||||
@@ -707,6 +710,13 @@ struct bond_vlan_tag *bond_verify_device
|
||||
int level);
|
||||
int bond_update_slave_arr(struct bonding *bond, struct slave *skipslave);
|
||||
void bond_slave_arr_work_rearm(struct bonding *bond, unsigned long delay);
|
||||
@ -664,7 +667,7 @@
|
||||
void bond_work_init_all(struct bonding *bond);
|
||||
|
||||
#ifdef CONFIG_PROC_FS
|
||||
@@ -788,4 +798,18 @@ static inline netdev_tx_t bond_tx_drop(s
|
||||
@@ -811,4 +821,18 @@ static inline netdev_tx_t bond_tx_drop(s
|
||||
return NET_XMIT_DROP;
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user