mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-04-16 04:13:31 +00:00
Fix offset for some patches of kernel-5.4 (#9085)
This commit is contained in:
parent
f92cfbbd3e
commit
a44076d63c
@ -115,7 +115,7 @@ Signed-off-by: Zhi Chen <zhichen@codeaurora.org>
|
||||
depends on NETFILTER_ADVANCED
|
||||
--- a/net/netfilter/nf_conntrack_core.c
|
||||
+++ b/net/netfilter/nf_conntrack_core.c
|
||||
@@ -2597,6 +2597,9 @@ int nf_conntrack_init_net(struct net *ne
|
||||
@@ -2572,6 +2572,9 @@ int nf_conntrack_init_net(struct net *ne
|
||||
nf_conntrack_helper_pernet_init(net);
|
||||
nf_conntrack_proto_pernet_init(net);
|
||||
|
||||
|
@ -49,7 +49,7 @@
|
||||
int (*fcn)(unsigned int events, struct nf_ct_event *item);
|
||||
--- a/net/bridge/br_if.c
|
||||
+++ b/net/bridge/br_if.c
|
||||
@@ -761,6 +761,28 @@ void br_port_flags_change(struct net_bri
|
||||
@@ -763,6 +763,28 @@ void br_port_flags_change(struct net_bri
|
||||
br_recalculate_neigh_suppress_enabled(br);
|
||||
}
|
||||
|
||||
@ -80,7 +80,7 @@
|
||||
struct net_bridge_port *p;
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -3189,9 +3189,17 @@ static int xmit_one(struct sk_buff *skb,
|
||||
@@ -3197,9 +3197,17 @@ static int xmit_one(struct sk_buff *skb,
|
||||
unsigned int len;
|
||||
int rc;
|
||||
|
||||
@ -99,7 +99,7 @@
|
||||
#ifdef CONFIG_ETHERNET_PACKET_MANGLE
|
||||
if (!dev->eth_mangle_tx ||
|
||||
(skb = dev->eth_mangle_tx(dev, skb)) != NULL)
|
||||
@@ -4702,6 +4710,11 @@ void netdev_rx_handler_unregister(struct
|
||||
@@ -4714,6 +4722,11 @@ void netdev_rx_handler_unregister(struct
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(netdev_rx_handler_unregister);
|
||||
|
||||
@ -111,7 +111,7 @@
|
||||
/*
|
||||
* Limit the use of PFMEMALLOC reserves to those protocols that implement
|
||||
* the special handling of PFMEMALLOC skbs.
|
||||
@@ -4752,6 +4765,10 @@ static int __netif_receive_skb_core(stru
|
||||
@@ -4764,6 +4777,10 @@ static int __netif_receive_skb_core(stru
|
||||
int ret = NET_RX_DROP;
|
||||
__be16 type;
|
||||
|
||||
@ -122,7 +122,7 @@
|
||||
net_timestamp_check(!netdev_tstamp_prequeue, skb);
|
||||
|
||||
trace_netif_receive_skb(skb);
|
||||
@@ -4791,6 +4808,16 @@ another_round:
|
||||
@@ -4803,6 +4820,16 @@ another_round:
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
@ -47,7 +47,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -803,13 +796,23 @@ static int __phylink_connect_phy(struct
|
||||
@@ -806,13 +796,23 @@ static int __phylink_connect_phy(struct
|
||||
*/
|
||||
int phylink_connect_phy(struct phylink *pl, struct phy_device *phy)
|
||||
{
|
||||
|
@ -55,7 +55,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
if (changed && !test_bit(PHYLINK_DISABLE_STOPPED,
|
||||
&pl->phylink_disable_state))
|
||||
@@ -1770,15 +1778,20 @@ static int phylink_sfp_module_insert(voi
|
||||
@@ -1775,15 +1778,20 @@ static int phylink_sfp_module_insert(voi
|
||||
const struct sfp_eeprom_id *id)
|
||||
{
|
||||
struct phylink *pl = upstream;
|
||||
|
@ -33,7 +33,7 @@ Signed-off-by: Mathieu Olivari <mathieu@codeaurora.org>
|
||||
|
||||
--- a/arch/arm/Kconfig
|
||||
+++ b/arch/arm/Kconfig
|
||||
@@ -318,7 +318,7 @@ config ARCH_MULTIPLATFORM
|
||||
@@ -319,7 +319,7 @@ config ARCH_MULTIPLATFORM
|
||||
depends on MMU
|
||||
select ARM_HAS_SG_CHAIN
|
||||
select ARM_PATCH_PHYS_VIRT
|
||||
|
@ -22,7 +22,7 @@ Signed-off-by: Adrian Panella <ianchi74@outlook.com>
|
||||
|
||||
--- a/arch/arm/Kconfig
|
||||
+++ b/arch/arm/Kconfig
|
||||
@@ -1827,6 +1827,17 @@ config ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEN
|
||||
@@ -1828,6 +1828,17 @@ config ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEN
|
||||
The command-line arguments provided by the boot loader will be
|
||||
appended to the the device tree bootargs property.
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/arch/arm/Kconfig
|
||||
+++ b/arch/arm/Kconfig
|
||||
@@ -1840,6 +1840,14 @@ config ARM_ATAG_DTB_COMPAT_CMDLINE_MANGL
|
||||
@@ -1841,6 +1841,14 @@ config ARM_ATAG_DTB_COMPAT_CMDLINE_MANGL
|
||||
|
||||
endchoice
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- b/arch/arm/boot/dts/qcom-ipq8064.dtsi
|
||||
+++ a/arch/arm/boot/dts/qcom-ipq8064.dtsi
|
||||
@@ -1392,6 +1392,12 @@
|
||||
@@ -1456,6 +1456,12 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
gmac0: ethernet@37000000 {
|
||||
device_type = "network";
|
||||
compatible = "qcom,ipq806x-gmac";
|
||||
@@ -1492,7 +1498,132 @@
|
||||
@@ -1556,7 +1562,132 @@
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
@ -147,7 +147,7 @@
|
||||
compatible = "qcom,bam-v1.3.0";
|
||||
reg = <0x12402000 0x8000>;
|
||||
interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
|
||||
@@ -1558,6 +1689,20 @@
|
||||
@@ -1622,6 +1753,20 @@
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
};
|
||||
|
@ -121,7 +121,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||
define_cache_functions b15
|
||||
--- a/arch/arm/mm/proc-macros.S
|
||||
+++ b/arch/arm/mm/proc-macros.S
|
||||
@@ -335,6 +335,8 @@ ENTRY(\name\()_cache_fns)
|
||||
@@ -336,6 +336,8 @@ ENTRY(\name\()_cache_fns)
|
||||
.long \name\()_flush_kern_dcache_area
|
||||
.long \name\()_dma_map_area
|
||||
.long \name\()_dma_unmap_area
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/include/linux/if_bridge.h
|
||||
+++ b/include/linux/if_bridge.h
|
||||
@@ -148,4 +148,39 @@ br_port_flag_is_set(const struct net_dev
|
||||
@@ -149,4 +149,39 @@ br_port_flag_is_set(const struct net_dev
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -75,7 +75,7 @@
|
||||
#endif
|
||||
--- a/include/linux/if_vlan.h
|
||||
+++ b/include/linux/if_vlan.h
|
||||
@@ -220,7 +220,28 @@ extern void vlan_vids_del_by_dev(struct
|
||||
@@ -222,7 +222,28 @@ extern void vlan_vids_del_by_dev(struct
|
||||
|
||||
extern bool vlan_uses_dev(const struct net_device *dev);
|
||||
|
||||
@ -106,7 +106,7 @@
|
||||
__be16 vlan_proto, u16 vlan_id)
|
||||
--- a/include/linux/netdevice.h
|
||||
+++ b/include/linux/netdevice.h
|
||||
@@ -1581,6 +1581,20 @@ enum netdev_priv_flags {
|
||||
@@ -1590,6 +1590,20 @@ enum netdev_priv_flags {
|
||||
#define IFF_LIVE_RENAME_OK IFF_LIVE_RENAME_OK
|
||||
#define IFF_NO_IP_ALIGN IFF_NO_IP_ALIGN
|
||||
|
||||
@ -127,7 +127,7 @@
|
||||
/**
|
||||
* struct net_device - The DEVICE structure.
|
||||
*
|
||||
@@ -1890,6 +1904,7 @@ struct net_device {
|
||||
@@ -1900,6 +1914,7 @@ struct net_device {
|
||||
|
||||
unsigned int flags;
|
||||
unsigned int priv_flags;
|
||||
@ -135,7 +135,7 @@
|
||||
|
||||
unsigned short gflags;
|
||||
unsigned short padded;
|
||||
@@ -2527,6 +2542,10 @@ enum netdev_cmd {
|
||||
@@ -2583,6 +2598,10 @@ enum netdev_cmd {
|
||||
NETDEV_CVLAN_FILTER_DROP_INFO,
|
||||
NETDEV_SVLAN_FILTER_PUSH_INFO,
|
||||
NETDEV_SVLAN_FILTER_DROP_INFO,
|
||||
@ -164,7 +164,7 @@
|
||||
|
||||
--- a/include/net/bonding.h
|
||||
+++ b/include/net/bonding.h
|
||||
@@ -238,6 +238,7 @@ struct bonding {
|
||||
@@ -243,6 +243,7 @@ struct bonding {
|
||||
#endif /* CONFIG_DEBUG_FS */
|
||||
struct rtnl_link_stats64 bond_stats;
|
||||
struct lock_class_key stats_lock_key;
|
||||
@ -172,7 +172,7 @@
|
||||
};
|
||||
|
||||
#define bond_slave_get_rcu(dev) \
|
||||
@@ -749,4 +749,12 @@ static inline void bond_tx_drop(struct n
|
||||
@@ -757,4 +758,12 @@ static inline void bond_tx_drop(struct n
|
||||
dev_kfree_skb_any(skb);
|
||||
}
|
||||
|
||||
@ -201,7 +201,7 @@
|
||||
const struct dst_entry *dst = skb_dst(skb);
|
||||
--- a/include/net/neighbour.h
|
||||
+++ b/include/net/neighbour.h
|
||||
@@ -568,4 +568,15 @@ static inline void neigh_update_is_route
|
||||
@@ -575,4 +575,15 @@ static inline void neigh_update_is_route
|
||||
*notify = 1;
|
||||
}
|
||||
}
|
||||
@ -352,7 +352,7 @@
|
||||
break;
|
||||
case AD_MUX_COLLECTING_DISTRIBUTING:
|
||||
if (!(port->sm_vars & AD_PORT_SELECTED) ||
|
||||
@@ -1895,6 +1951,8 @@ static void ad_enable_collecting_distrib
|
||||
@@ -1896,6 +1952,8 @@ static void ad_enable_collecting_distrib
|
||||
bool *update_slave_arr)
|
||||
{
|
||||
if (port->aggregator->is_active) {
|
||||
@ -361,7 +361,7 @@
|
||||
slave_dbg(port->slave->bond->dev, port->slave->dev,
|
||||
"Enabling port %d (LAG %d)\n",
|
||||
port->actor_port_number,
|
||||
@@ -1902,6 +1960,16 @@ static void ad_enable_collecting_distrib
|
||||
@@ -1903,6 +1961,16 @@ static void ad_enable_collecting_distrib
|
||||
__enable_port(port);
|
||||
/* Slave array needs update */
|
||||
*update_slave_arr = true;
|
||||
@ -378,7 +378,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2759,3 +2827,101 @@ int bond_3ad_stats_fill(struct sk_buff *
|
||||
@@ -2780,3 +2848,101 @@ int bond_3ad_stats_fill(struct sk_buff *
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -965,7 +965,7 @@
|
||||
spin_unlock_bh(&br->hash_lock);
|
||||
}
|
||||
}
|
||||
@@ -586,6 +623,12 @@ void br_fdb_update(struct net_bridge *br
|
||||
@@ -587,6 +624,12 @@ void br_fdb_update(struct net_bridge *br
|
||||
/* Take over HW learned entry */
|
||||
if (unlikely(fdb->added_by_external_learn))
|
||||
fdb->added_by_external_learn = 0;
|
||||
@ -978,7 +978,7 @@
|
||||
}
|
||||
if (now != fdb->updated)
|
||||
fdb->updated = now;
|
||||
@@ -695,6 +738,25 @@ static void fdb_notify(struct net_bridge
|
||||
@@ -696,6 +739,25 @@ static void fdb_notify(struct net_bridge
|
||||
struct sk_buff *skb;
|
||||
int err = -ENOBUFS;
|
||||
|
||||
@ -1004,7 +1004,7 @@
|
||||
if (swdev_notify)
|
||||
br_switchdev_fdb_notify(fdb, type);
|
||||
|
||||
@@ -1211,3 +1273,44 @@ void br_fdb_clear_offload(const struct n
|
||||
@@ -1212,3 +1274,44 @@ void br_fdb_clear_offload(const struct n
|
||||
spin_unlock_bh(&p->br->hash_lock);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(br_fdb_clear_offload);
|
||||
@ -1064,7 +1064,7 @@
|
||||
/*
|
||||
* Determine initial path cost based on speed.
|
||||
* using recommendations from 802.1d standard
|
||||
@@ -681,6 +687,8 @@
|
||||
@@ -695,6 +701,8 @@
|
||||
|
||||
kobject_uevent(&p->kobj, KOBJ_ADD);
|
||||
|
||||
@ -1073,7 +1073,7 @@
|
||||
return 0;
|
||||
|
||||
err7:
|
||||
@@ -713,6 +721,8 @@
|
||||
@@ -730,6 +738,8 @@
|
||||
p = br_port_get_rtnl(dev);
|
||||
if (!p || p->br != br)
|
||||
return -EINVAL;
|
||||
@ -1082,7 +1082,7 @@
|
||||
|
||||
/* Since more than one interface can be attached to a bridge,
|
||||
* there still maybe an alternate path for netconsole to use;
|
||||
@@ -768,6 +778,67 @@
|
||||
@@ -785,6 +795,67 @@
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(br_dev_update_stats);
|
||||
|
||||
@ -1153,7 +1153,7 @@
|
||||
|
||||
--- a/net/bridge/br_private.h
|
||||
+++ b/net/bridge/br_private.h
|
||||
@@ -1258,4 +1258,9 @@ void br_do_proxy_suppress_arp(struct sk_
|
||||
@@ -1269,4 +1269,9 @@ void br_do_proxy_suppress_arp(struct sk_
|
||||
void br_do_suppress_nd(struct sk_buff *skb, struct net_bridge *br,
|
||||
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);
|
||||
@ -1165,7 +1165,7 @@
|
||||
#endif
|
||||
--- a/net/core/neighbour.c
|
||||
+++ b/net/core/neighbour.c
|
||||
@@ -1202,7 +1202,21 @@ static void neigh_update_hhs(struct neig
|
||||
@@ -1208,7 +1208,21 @@ static void neigh_update_hhs(struct neig
|
||||
}
|
||||
}
|
||||
|
||||
@ -1187,7 +1187,7 @@
|
||||
|
||||
/* Generic update routine.
|
||||
-- lladdr is new lladdr or NULL, if it is not supplied.
|
||||
@@ -1233,6 +1247,7 @@ static int __neigh_update(struct neighbo
|
||||
@@ -1239,6 +1253,7 @@ static int __neigh_update(struct neighbo
|
||||
int notify = 0;
|
||||
struct net_device *dev;
|
||||
int update_isrouter = 0;
|
||||
@ -1195,7 +1195,7 @@
|
||||
|
||||
trace_neigh_update(neigh, lladdr, new, flags, nlmsg_pid);
|
||||
|
||||
@@ -1259,6 +1259,8 @@ static int __neigh_update(struct neighbo
|
||||
@@ -1248,6 +1263,8 @@ static int __neigh_update(struct neighbo
|
||||
old = neigh->nud_state;
|
||||
err = -EPERM;
|
||||
|
||||
@ -1204,7 +1204,7 @@
|
||||
if (neigh->dead) {
|
||||
NL_SET_ERR_MSG(extack, "Neighbor entry is now dead");
|
||||
new = old;
|
||||
@@ -1277,6 +1294,11 @@ static int __neigh_update(struct neighbo
|
||||
@@ -1290,6 +1307,11 @@ static int __neigh_update(struct neighbo
|
||||
- compare new & old
|
||||
- if they are different, check override flag
|
||||
*/
|
||||
@ -1216,7 +1216,7 @@
|
||||
if ((old & NUD_VALID) &&
|
||||
!memcmp(lladdr, neigh->ha, dev->addr_len))
|
||||
lladdr = neigh->ha;
|
||||
@@ -1399,8 +1421,11 @@ out:
|
||||
@@ -1412,8 +1434,11 @@ out:
|
||||
if (((new ^ old) & NUD_PERMANENT) || ext_learn_change)
|
||||
neigh_update_gc_list(neigh);
|
||||
|
||||
@ -1261,7 +1261,7 @@
|
||||
fib_release_info(fa_to_delete->fa_info);
|
||||
alias_free_mem_rcu(fa_to_delete);
|
||||
return 0;
|
||||
@@ -2219,6 +2228,20 @@ void __init fib_trie_init(void)
|
||||
@@ -2220,6 +2229,20 @@ void __init fib_trie_init(void)
|
||||
0, SLAB_PANIC, NULL);
|
||||
}
|
||||
|
||||
@ -1322,7 +1322,7 @@
|
||||
+
|
||||
--- a/net/ipv6/ndisc.c
|
||||
+++ b/net/ipv6/ndisc.c
|
||||
@@ -646,6 +646,7 @@ void ndisc_send_ns(struct net_device *de
|
||||
@@ -648,6 +648,7 @@ void ndisc_send_ns(struct net_device *de
|
||||
|
||||
ndisc_send_skb(skb, daddr, saddr);
|
||||
}
|
||||
@ -1332,7 +1332,7 @@
|
||||
const struct in6_addr *daddr)
|
||||
--- a/net/ipv6/route.c
|
||||
+++ b/net/ipv6/route.c
|
||||
@@ -3747,6 +3747,9 @@ out:
|
||||
@@ -3784,6 +3784,9 @@ out:
|
||||
return ERR_PTR(err);
|
||||
}
|
||||
|
||||
@ -1342,7 +1342,7 @@
|
||||
int ip6_route_add(struct fib6_config *cfg, gfp_t gfp_flags,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
@@ -3758,6 +3761,10 @@ int ip6_route_add(struct fib6_config *cf
|
||||
@@ -3795,6 +3798,10 @@ int ip6_route_add(struct fib6_config *cf
|
||||
return PTR_ERR(rt);
|
||||
|
||||
err = __ip6_ins_rt(rt, &cfg->fc_nlinfo, extack);
|
||||
@ -1353,7 +1353,7 @@
|
||||
fib6_info_release(rt);
|
||||
|
||||
return err;
|
||||
@@ -3779,6 +3786,9 @@ static int __ip6_del_rt(struct fib6_info
|
||||
@@ -3816,6 +3823,9 @@ static int __ip6_del_rt(struct fib6_info
|
||||
err = fib6_del(rt, info);
|
||||
spin_unlock_bh(&table->tb6_lock);
|
||||
|
||||
@ -1363,7 +1363,7 @@
|
||||
out:
|
||||
fib6_info_release(rt);
|
||||
return err;
|
||||
@@ -6068,6 +6078,20 @@ static int ip6_route_dev_notify(struct n
|
||||
@@ -6136,6 +6146,20 @@ static int ip6_route_dev_notify(struct n
|
||||
return NOTIFY_OK;
|
||||
}
|
||||
|
||||
@ -1559,7 +1559,7 @@
|
||||
|
||||
--- a/net/netfilter/Kconfig
|
||||
+++ b/net/netfilter/Kconfig
|
||||
@@ -158,6 +158,13 @@ config NF_CONNTRACK_TIMEOUT
|
||||
@@ -136,6 +136,13 @@ config NF_CONNTRACK_TIMEOUT
|
||||
|
||||
If unsure, say `N'.
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/include/linux/if_bridge.h
|
||||
+++ b/include/linux/if_bridge.h
|
||||
@@ -173,6 +173,8 @@ struct br_fdb_event {
|
||||
@@ -174,6 +174,8 @@ struct br_fdb_event {
|
||||
struct net_device *dev;
|
||||
unsigned char addr[6];
|
||||
unsigned char is_local;
|
||||
@ -11,7 +11,7 @@
|
||||
extern void br_fdb_unregister_notify(struct notifier_block *nb);
|
||||
--- a/include/linux/netdevice.h
|
||||
+++ b/include/linux/netdevice.h
|
||||
@@ -1587,12 +1587,18 @@ enum netdev_priv_qca_ecm_flags {
|
||||
@@ -1596,12 +1596,18 @@ enum netdev_priv_qca_ecm_flags {
|
||||
IFF_QCA_ECM_PPP_L2TPV2 = 1<<1,
|
||||
IFF_QCA_ECM_PPP_L2TPV3 = 1<<2,
|
||||
IFF_QCA_ECM_PPP_PPTP = 1<<3,
|
||||
@ -82,7 +82,7 @@
|
||||
#endif
|
||||
--- a/drivers/net/tun.c
|
||||
+++ b/drivers/net/tun.c
|
||||
@@ -2833,6 +2833,8 @@ static int tun_set_iff(struct net *net,
|
||||
@@ -2860,6 +2860,8 @@ static int tun_set_iff(struct net *net,
|
||||
~(NETIF_F_HW_VLAN_CTAG_TX |
|
||||
NETIF_F_HW_VLAN_STAG_TX);
|
||||
|
||||
@ -93,7 +93,7 @@
|
||||
|
||||
--- a/net/ipv4/ip_gre.c
|
||||
+++ b/net/ipv4/ip_gre.c
|
||||
@@ -1287,6 +1287,7 @@ static void ipgre_tap_setup(struct net_d
|
||||
@@ -1300,6 +1300,7 @@ static void ipgre_tap_setup(struct net_d
|
||||
dev->netdev_ops = &gre_tap_netdev_ops;
|
||||
dev->priv_flags &= ~IFF_TX_SKB_SHARING;
|
||||
dev->priv_flags |= IFF_LIVE_ADDR_CHANGE;
|
||||
@ -103,7 +103,7 @@
|
||||
|
||||
--- a/net/ipv6/ip6_gre.c
|
||||
+++ b/net/ipv6/ip6_gre.c
|
||||
@@ -1895,6 +1895,7 @@ static void ip6gre_tap_setup(struct net_
|
||||
@@ -1911,6 +1911,7 @@ static void ip6gre_tap_setup(struct net_
|
||||
|
||||
dev->priv_flags &= ~IFF_TX_SKB_SHARING;
|
||||
dev->priv_flags |= IFF_LIVE_ADDR_CHANGE;
|
||||
@ -113,7 +113,7 @@
|
||||
|
||||
--- a/include/linux/if_bridge.h
|
||||
+++ b/include/linux/if_bridge.h
|
||||
@@ -68,6 +68,7 @@ extern void br_fdb_update_unregister_notify(struct notifier_block *nb);
|
||||
@@ -54,6 +54,7 @@ extern void br_fdb_update_unregister_notify(struct notifier_block *nb);
|
||||
extern void brioctl_set(int (*ioctl_hook)(struct net *, unsigned int, void __user *));
|
||||
extern void br_dev_update_stats(struct net_device *dev,
|
||||
struct rtnl_link_stats64 *nlstats);
|
||||
@ -123,7 +123,7 @@
|
||||
int br_multicast_list_adjacent(struct net_device *dev,
|
||||
--- a/net/bridge/br_if.c
|
||||
+++ b/net/bridge/br_if.c
|
||||
@@ -684,6 +684,17 @@ void br_dev_update_stats(struct net_device *dev,
|
||||
@@ -796,6 +796,17 @@ void br_dev_update_stats(struct net_device *dev,
|
||||
EXPORT_SYMBOL_GPL(br_dev_update_stats);
|
||||
|
||||
/* QCA NSS ECM support - Start */
|
||||
|
@ -15,8 +15,6 @@ Signed-off-by: Murat Sezgin <msezgin@codeaurora.org>
|
||||
include/linux/ppp_channel.h | 38 +++++++++
|
||||
4 files changed, 317 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/ppp/ppp_generic.c b/drivers/net/ppp/ppp_generic.c
|
||||
index 56af90b..58b889e 100644
|
||||
--- a/drivers/net/ppp/ppp_generic.c
|
||||
+++ b/drivers/net/ppp/ppp_generic.c
|
||||
@@ -1,5 +1,21 @@
|
||||
@ -41,7 +39,7 @@ index 56af90b..58b889e 100644
|
||||
* Generic PPP layer for Linux.
|
||||
*
|
||||
* Copyright 1999-2002 Paul Mackerras.
|
||||
@@ -3341,6 +3357,178 @@ static void *unit_find(struct idr *p, int n)
|
||||
@@ -3357,6 +3373,178 @@ static void *unit_find(struct idr *p, int n)
|
||||
return idr_find(p, n);
|
||||
}
|
||||
|
||||
@ -220,7 +218,7 @@ index 56af90b..58b889e 100644
|
||||
/* Module/initialization stuff */
|
||||
|
||||
module_init(ppp_init);
|
||||
@@ -3357,6 +3545,8 @@ EXPORT_SYMBOL(ppp_input_error);
|
||||
@@ -3373,6 +3561,8 @@ EXPORT_SYMBOL(ppp_input_error);
|
||||
EXPORT_SYMBOL(ppp_output_wakeup);
|
||||
EXPORT_SYMBOL(ppp_register_compressor);
|
||||
EXPORT_SYMBOL(ppp_unregister_compressor);
|
||||
@ -229,8 +227,6 @@ index 56af90b..58b889e 100644
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_ALIAS_CHARDEV(PPP_MAJOR, 0);
|
||||
MODULE_ALIAS_RTNL_LINK("ppp");
|
||||
diff --git a/drivers/net/ppp/pppoe.c b/drivers/net/ppp/pppoe.c
|
||||
index df5d418..23590dd 100644
|
||||
--- a/drivers/net/ppp/pppoe.c
|
||||
+++ b/drivers/net/ppp/pppoe.c
|
||||
@@ -62,6 +62,7 @@
|
||||
@ -250,7 +246,7 @@ index df5d418..23590dd 100644
|
||||
|
||||
/* per-net private data for this module */
|
||||
static unsigned int pppoe_net_id __read_mostly;
|
||||
@@ -649,6 +650,7 @@ static int pppoe_connect(struct socket *sock, struct sockaddr *uservaddr,
|
||||
@@ -652,6 +653,7 @@ static int pppoe_connect(struct socket *sock, struct sockaddr *uservaddr,
|
||||
if (stage_session(po->pppoe_pa.sid)) {
|
||||
pppox_unbind_sock(sk);
|
||||
pn = pppoe_pernet(sock_net(sk));
|
||||
@ -258,7 +254,7 @@ index df5d418..23590dd 100644
|
||||
delete_item(pn, po->pppoe_pa.sid,
|
||||
po->pppoe_pa.remote, po->pppoe_ifindex);
|
||||
if (po->pppoe_dev) {
|
||||
@@ -696,7 +698,7 @@ static int pppoe_connect(struct socket *sock, struct sockaddr *uservaddr,
|
||||
@@ -699,7 +701,7 @@ static int pppoe_connect(struct socket *sock, struct sockaddr *uservaddr,
|
||||
|
||||
po->chan.mtu = dev->mtu - sizeof(struct pppoe_hdr) - 2;
|
||||
po->chan.private = sk;
|
||||
@ -267,7 +263,7 @@ index df5d418..23590dd 100644
|
||||
|
||||
error = ppp_register_net_channel(dev_net(dev), &po->chan);
|
||||
if (error) {
|
||||
@@ -1001,11 +1003,78 @@ static int pppoe_flow_offload_check(struct ppp_channel *chan,
|
||||
@@ -1004,11 +1006,78 @@ static int pppoe_flow_offload_check(struct ppp_channel *chan,
|
||||
}
|
||||
#endif /* CONFIG_NF_FLOW_TABLE */
|
||||
|
||||
@ -349,8 +345,6 @@ index df5d418..23590dd 100644
|
||||
};
|
||||
|
||||
static int pppoe_recvmsg(struct socket *sock, struct msghdr *m,
|
||||
diff --git a/include/linux/if_pppox.h b/include/linux/if_pppox.h
|
||||
index 69e813b..98131ea 100644
|
||||
--- a/include/linux/if_pppox.h
|
||||
+++ b/include/linux/if_pppox.h
|
||||
@@ -1,13 +1,14 @@
|
||||
@ -387,8 +381,6 @@ index 69e813b..98131ea 100644
|
||||
+ struct pppoe_opt *addressing);
|
||||
+
|
||||
#endif /* !(__LINUX_IF_PPPOX_H) */
|
||||
diff --git a/include/linux/ppp_channel.h b/include/linux/ppp_channel.h
|
||||
index 326a6fa..db352ff 100644
|
||||
--- a/include/linux/ppp_channel.h
|
||||
+++ b/include/linux/ppp_channel.h
|
||||
@@ -32,6 +32,14 @@ struct ppp_channel_ops {
|
||||
@ -443,5 +435,3 @@ index 326a6fa..db352ff 100644
|
||||
/* Called by the channel when it can send some more data. */
|
||||
extern void ppp_output_wakeup(struct ppp_channel *);
|
||||
|
||||
--
|
||||
cgit v1.1
|
||||
|
@ -16,11 +16,9 @@ Signed-off-by: Murat Sezgin <msezgin@codeaurora.org>
|
||||
net/l2tp/l2tp_core.h | 2 ++
|
||||
4 files changed, 36 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/ppp/ppp_generic.c b/drivers/net/ppp/ppp_generic.c
|
||||
index 58b889e..9cf7fe3 100644
|
||||
--- a/drivers/net/ppp/ppp_generic.c
|
||||
+++ b/drivers/net/ppp/ppp_generic.c
|
||||
@@ -3360,7 +3360,9 @@ static void *unit_find(struct idr *p, int n)
|
||||
@@ -3376,7 +3376,9 @@ static void *unit_find(struct idr *p, int n)
|
||||
/* Updates the PPP interface statistics. */
|
||||
void ppp_update_stats(struct net_device *dev, unsigned long rx_packets,
|
||||
unsigned long rx_bytes, unsigned long tx_packets,
|
||||
@ -31,7 +29,7 @@ index 58b889e..9cf7fe3 100644
|
||||
{
|
||||
struct ppp *ppp;
|
||||
|
||||
@@ -3375,11 +3377,15 @@ void ppp_update_stats(struct net_device *dev, unsigned long rx_packets,
|
||||
@@ -3391,11 +3393,15 @@ void ppp_update_stats(struct net_device *dev, unsigned long rx_packets,
|
||||
ppp_xmit_lock(ppp);
|
||||
ppp->stats64.tx_packets += tx_packets;
|
||||
ppp->stats64.tx_bytes += tx_bytes;
|
||||
@ -47,8 +45,6 @@ index 58b889e..9cf7fe3 100644
|
||||
ppp_recv_unlock(ppp);
|
||||
}
|
||||
|
||||
diff --git a/include/linux/ppp_channel.h b/include/linux/ppp_channel.h
|
||||
index db352ff..82d51537 100644
|
||||
--- a/include/linux/ppp_channel.h
|
||||
+++ b/include/linux/ppp_channel.h
|
||||
@@ -82,7 +82,9 @@ extern int ppp_is_multilink(struct net_device *dev);
|
||||
@ -62,8 +58,6 @@ index db352ff..82d51537 100644
|
||||
|
||||
/* Called by the channel when it can send some more data. */
|
||||
extern void ppp_output_wakeup(struct ppp_channel *);
|
||||
diff --git a/net/l2tp/l2tp_core.c b/net/l2tp/l2tp_core.c
|
||||
index 425b95e..b098099 100644
|
||||
--- a/net/l2tp/l2tp_core.c
|
||||
+++ b/net/l2tp/l2tp_core.c
|
||||
@@ -355,6 +355,30 @@ err_tlock:
|
||||
@ -97,8 +91,6 @@ index 425b95e..b098099 100644
|
||||
/*****************************************************************************
|
||||
* Receive data handling
|
||||
*****************************************************************************/
|
||||
diff --git a/net/l2tp/l2tp_core.h b/net/l2tp/l2tp_core.h
|
||||
index 2db3d50..5cc42a4 100644
|
||||
--- a/net/l2tp/l2tp_core.h
|
||||
+++ b/net/l2tp/l2tp_core.h
|
||||
@@ -200,6 +200,8 @@ struct l2tp_session *l2tp_session_get(const struct net *net, u32 session_id);
|
||||
@ -110,6 +102,3 @@ index 2db3d50..5cc42a4 100644
|
||||
|
||||
int l2tp_tunnel_create(struct net *net, int fd, int version, u32 tunnel_id,
|
||||
u32 peer_tunnel_id, struct l2tp_tunnel_cfg *cfg,
|
||||
--
|
||||
cgit v1.1
|
||||
|
||||
|
@ -12,11 +12,9 @@ Signed-off-by: Murat Sezgin <msezgin@codeaurora.org>
|
||||
drivers/net/ppp/ppp_generic.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/drivers/net/ppp/ppp_generic.c b/drivers/net/ppp/ppp_generic.c
|
||||
index 9cf7fe3..b7bab8e 100644
|
||||
--- a/drivers/net/ppp/ppp_generic.c
|
||||
+++ b/drivers/net/ppp/ppp_generic.c
|
||||
@@ -3379,6 +3379,8 @@ void ppp_update_stats(struct net_device *dev, unsigned long rx_packets,
|
||||
@@ -3395,6 +3395,8 @@ void ppp_update_stats(struct net_device *dev, unsigned long rx_packets,
|
||||
ppp->stats64.tx_bytes += tx_bytes;
|
||||
ppp->dev->stats.tx_errors += tx_errors;
|
||||
ppp->dev->stats.tx_dropped += tx_dropped;
|
||||
@ -25,7 +23,7 @@ index 9cf7fe3..b7bab8e 100644
|
||||
ppp_xmit_unlock(ppp);
|
||||
|
||||
ppp_recv_lock(ppp);
|
||||
@@ -3386,6 +3388,8 @@ void ppp_update_stats(struct net_device *dev, unsigned long rx_packets,
|
||||
@@ -3402,6 +3404,8 @@ void ppp_update_stats(struct net_device *dev, unsigned long rx_packets,
|
||||
ppp->stats64.rx_bytes += rx_bytes;
|
||||
ppp->dev->stats.rx_errors += rx_errors;
|
||||
ppp->dev->stats.rx_dropped += rx_dropped;
|
||||
@ -34,5 +32,3 @@ index 9cf7fe3..b7bab8e 100644
|
||||
ppp_recv_unlock(ppp);
|
||||
}
|
||||
|
||||
--
|
||||
cgit v1.1
|
||||
|
@ -68,7 +68,7 @@
|
||||
|
||||
--- a/net/ipv6/esp6.c
|
||||
+++ b/net/ipv6/esp6.c
|
||||
@@ -429,6 +429,7 @@ static int esp6_output(struct xfrm_state *x, struct sk_buff *skb)
|
||||
@@ -424,6 +424,7 @@ static int esp6_output(struct xfrm_state *x, struct sk_buff *skb)
|
||||
struct ip_esp_hdr *esph;
|
||||
struct crypto_aead *aead;
|
||||
struct esp_info esp;
|
||||
@ -76,7 +76,7 @@
|
||||
|
||||
esp.inplace = true;
|
||||
|
||||
@@ -440,6 +441,11 @@ static int esp6_output(struct xfrm_state *x, struct sk_buff *skb)
|
||||
@@ -435,6 +436,11 @@ static int esp6_output(struct xfrm_state *x, struct sk_buff *skb)
|
||||
aead = x->data;
|
||||
alen = crypto_aead_authsize(aead);
|
||||
|
||||
@ -88,7 +88,7 @@
|
||||
esp.tfclen = 0;
|
||||
if (x->tfcpad) {
|
||||
struct xfrm_dst *dst = (struct xfrm_dst *)skb_dst(skb);
|
||||
@@ -603,6 +609,7 @@ static int esp6_input(struct xfrm_state *x, struct sk_buff *skb)
|
||||
@@ -598,6 +604,7 @@ static int esp6_input(struct xfrm_state *x, struct sk_buff *skb)
|
||||
__be32 *seqhi;
|
||||
u8 *iv;
|
||||
struct scatterlist *sg;
|
||||
@ -96,7 +96,7 @@
|
||||
|
||||
if (!pskb_may_pull(skb, sizeof(struct ip_esp_hdr) + ivlen)) {
|
||||
ret = -EINVAL;
|
||||
@@ -614,6 +621,12 @@ static int esp6_input(struct xfrm_state *x, struct sk_buff *skb)
|
||||
@@ -609,6 +616,12 @@ static int esp6_input(struct xfrm_state *x, struct sk_buff *skb)
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/include/net/sch_generic.h
|
||||
+++ b/include/net/sch_generic.h
|
||||
@@ -79,6 +79,7 @@ struct Qdisc {
|
||||
@@ -80,6 +80,7 @@ struct Qdisc {
|
||||
#define TCQ_F_INVISIBLE 0x80 /* invisible by default in dump */
|
||||
#define TCQ_F_NOLOCK 0x100 /* qdisc does not require locking */
|
||||
#define TCQ_F_OFFLOADED 0x200 /* qdisc is offloaded to HW */
|
||||
@ -8,7 +8,7 @@
|
||||
u32 limit;
|
||||
const struct Qdisc_ops *ops;
|
||||
struct qdisc_size_table __rcu *stab;
|
||||
@@ -1295,4 +1296,9 @@ static inline void skb_tc_reinsert(struc
|
||||
@@ -1349,4 +1350,9 @@ static inline void skb_tc_reinsert(struc
|
||||
qstats_overlimit_inc(res->qstats);
|
||||
}
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
#endif
|
||||
--- a/include/uapi/linux/pkt_sched.h
|
||||
+++ b/include/uapi/linux/pkt_sched.h
|
||||
@@ -1181,4 +1181,248 @@ enum {
|
||||
@@ -1183,4 +1183,248 @@ enum {
|
||||
|
||||
#define TCA_TAPRIO_ATTR_MAX (__TCA_TAPRIO_ATTR_MAX - 1)
|
||||
|
||||
@ -271,7 +271,7 @@
|
||||
#endif
|
||||
--- a/net/sched/sch_api.c
|
||||
+++ b/net/sched/sch_api.c
|
||||
@@ -2290,4 +2290,26 @@ static int __init pktsched_init(void)
|
||||
@@ -2297,4 +2297,26 @@ static int __init pktsched_init(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -300,7 +300,7 @@
|
||||
subsys_initcall(pktsched_init);
|
||||
--- a/net/sched/sch_generic.c
|
||||
+++ b/net/sched/sch_generic.c
|
||||
@@ -741,7 +741,7 @@ static void qdisc_free_cb(struct rcu_hea
|
||||
@@ -767,7 +767,7 @@ static void qdisc_free_cb(struct rcu_hea
|
||||
qdisc_free(q);
|
||||
}
|
||||
|
||||
@ -309,7 +309,7 @@
|
||||
{
|
||||
const struct Qdisc_ops *ops = qdisc->ops;
|
||||
struct sk_buff *skb, *tmp;
|
||||
@@ -772,6 +772,7 @@ static void qdisc_destroy(struct Qdisc *
|
||||
@@ -798,6 +798,7 @@ static void qdisc_destroy(struct Qdisc *
|
||||
|
||||
call_rcu(&qdisc->rcu, qdisc_free_cb);
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/ppp/ppp_generic.c
|
||||
+++ b/drivers/net/ppp/ppp_generic.c
|
||||
@@ -48,6 +48,7 @@
|
||||
@@ -64,6 +64,7 @@
|
||||
#include <net/slhc_vj.h>
|
||||
#include <linux/atomic.h>
|
||||
#include <linux/refcount.h>
|
||||
@ -8,7 +8,7 @@
|
||||
|
||||
#include <linux/nsproxy.h>
|
||||
#include <net/net_namespace.h>
|
||||
@@ -3207,6 +3208,10 @@ ppp_connect_channel(struct channel *pch,
|
||||
@@ -3239,6 +3240,10 @@ ppp_connect_channel(struct channel *pch,
|
||||
struct ppp_net *pn;
|
||||
int ret = -ENXIO;
|
||||
int hdrlen;
|
||||
@ -19,7 +19,7 @@
|
||||
|
||||
pn = ppp_pernet(pch->chan_net);
|
||||
|
||||
@@ -3238,6 +3243,26 @@ ppp_connect_channel(struct channel *pch,
|
||||
@@ -3270,6 +3275,26 @@ ppp_connect_channel(struct channel *pch,
|
||||
++ppp->n_channels;
|
||||
pch->ppp = ppp;
|
||||
refcount_inc(&ppp->file.refcnt);
|
||||
@ -46,7 +46,7 @@
|
||||
ppp_unlock(ppp);
|
||||
ret = 0;
|
||||
|
||||
@@ -3341,6 +3366,56 @@
|
||||
@@ -3555,6 +3580,56 @@
|
||||
}
|
||||
EXPORT_SYMBOL(ppp_release_channels);
|
||||
|
||||
@ -105,16 +105,16 @@
|
||||
module_init(ppp_init);
|
||||
--- a/include/linux/ppp_channel.h
|
||||
+++ b/include/linux/ppp_channel.h
|
||||
@@ -32,6 +32,8 @@ struct ppp_channel_ops {
|
||||
@@ -36,6 +36,8 @@ struct ppp_channel_ops {
|
||||
* the channel subtype
|
||||
*/
|
||||
int (*get_channel_protocol)(struct ppp_channel *);
|
||||
+ /* Get channel protocol version */
|
||||
+ int (*get_channel_protocol_ver)(struct ppp_channel *);
|
||||
/* Hold the channel from being destroyed */
|
||||
void (*hold)(struct ppp_channel *);
|
||||
/* Release hold on the channel */
|
||||
@@ -84,6 +96,15 @@
|
||||
/* Hold the channel from being destroyed */
|
||||
void (*hold)(struct ppp_channel *);
|
||||
/* Release hold on the channel */
|
||||
@@ -69,6 +71,15 @@
|
||||
/* Test if ppp xmit lock is locked */
|
||||
extern bool ppp_is_xmit_locked(struct net_device *dev);
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/include/linux/ppp_channel.h
|
||||
+++ b/include/linux/ppp_channel.h
|
||||
@@ -146,5 +146,17 @@ extern void ppp_update_stats(struct net_
|
||||
@@ -135,5 +135,17 @@ extern void ppp_update_stats(struct net_
|
||||
extern int ppp_dev_index(struct ppp_channel *);
|
||||
/* QCA NSS ECM Support - End */
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
#endif
|
||||
--- a/drivers/net/ppp/ppp_generic.c
|
||||
+++ b/drivers/net/ppp/ppp_generic.c
|
||||
@@ -256,6 +256,26 @@ struct ppp_net {
|
||||
@@ -274,6 +274,26 @@ struct ppp_net {
|
||||
#define seq_before(a, b) ((s32)((a) - (b)) < 0)
|
||||
#define seq_after(a, b) ((s32)((a) - (b)) > 0)
|
||||
|
||||
@ -47,7 +47,7 @@
|
||||
/* Prototypes. */
|
||||
static int ppp_unattached_ioctl(struct net *net, struct ppp_file *pf,
|
||||
struct file *file, unsigned int cmd, unsigned long arg);
|
||||
@@ -3212,6 +3232,7 @@ ppp_connect_channel(struct channel *pch,
|
||||
@@ -3244,6 +3264,7 @@ ppp_connect_channel(struct channel *pch,
|
||||
int ppp_proto;
|
||||
int version;
|
||||
/* QCA NSS ECM Support - End */
|
||||
@ -55,7 +55,7 @@
|
||||
|
||||
pn = ppp_pernet(pch->chan_net);
|
||||
|
||||
@@ -3262,6 +3283,8 @@ ppp_connect_channel(struct channel *pch,
|
||||
@@ -3294,6 +3315,8 @@ ppp_connect_channel(struct channel *pch,
|
||||
ppp->dev->priv_flags_qca_ecm |= IFF_QCA_ECM_PPP_L2TPV3;
|
||||
}
|
||||
/* QCA NSS ECM support - End */
|
||||
@ -64,7 +64,7 @@
|
||||
out2:
|
||||
ppp_unlock(ppp);
|
||||
ret = 0;
|
||||
@@ -3270,6 +3293,16 @@ ppp_connect_channel(struct channel *pch,
|
||||
@@ -3302,6 +3325,16 @@ ppp_connect_channel(struct channel *pch,
|
||||
write_unlock_bh(&pch->upl);
|
||||
out:
|
||||
mutex_unlock(&pn->all_ppp_mutex);
|
||||
@ -81,7 +81,7 @@
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -3287,6 +3320,15 @@ ppp_disconnect_channel(struct channel *p
|
||||
@@ -3319,6 +3352,15 @@ ppp_disconnect_channel(struct channel *p
|
||||
pch->ppp = NULL;
|
||||
write_unlock_bh(&pch->upl);
|
||||
if (ppp) {
|
||||
|
@ -10,7 +10,7 @@
|
||||
__u32 flags; /* tunnel flags */
|
||||
--- a/include/net/ip_tunnels.h
|
||||
+++ b/include/net/ip_tunnels.h
|
||||
@@ -525,4 +525,9 @@ static inline void ip_tunnel_info_opts_s
|
||||
@@ -529,4 +529,9 @@ static inline void ip_tunnel_info_opts_s
|
||||
|
||||
#endif /* CONFIG_INET */
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
#endif /* __NET_IP_TUNNELS_H */
|
||||
--- a/net/ipv6/ip6_tunnel.c
|
||||
+++ b/net/ipv6/ip6_tunnel.c
|
||||
@@ -2392,6 +2392,26 @@ nla_put_failure:
|
||||
@@ -2399,6 +2399,26 @@ nla_put_failure:
|
||||
return -EMSGSIZE;
|
||||
}
|
||||
|
||||
@ -51,7 +51,7 @@
|
||||
struct ip6_tnl *tunnel = netdev_priv(dev);
|
||||
--- a/net/ipv6/sit.c
|
||||
+++ b/net/ipv6/sit.c
|
||||
@@ -1741,6 +1741,23 @@ nla_put_failure:
|
||||
@@ -1739,6 +1739,23 @@ nla_put_failure:
|
||||
return -EMSGSIZE;
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/include/linux/if_bridge.h
|
||||
+++ b/include/linux/if_bridge.h
|
||||
@@ -186,4 +186,17 @@ typedef struct net_bridge_port *br_get_d
|
||||
@@ -187,4 +187,17 @@ typedef struct net_bridge_port *br_get_d
|
||||
extern br_get_dst_hook_t __rcu *br_get_dst_hook;
|
||||
/* QCA NSS ECM support - End */
|
||||
|
||||
@ -88,7 +88,7 @@
|
||||
MODULE_LICENSE("GPL");
|
||||
--- a/net/bridge/br_device.c
|
||||
+++ b/net/bridge/br_device.c
|
||||
@@ -87,6 +87,12 @@ netdev_tx_t br_dev_xmit(struct sk_buff *
|
||||
@@ -85,6 +85,12 @@ netdev_tx_t br_dev_xmit(struct sk_buff *
|
||||
if (is_broadcast_ether_addr(dest)) {
|
||||
br_flood(br, skb, BR_PKT_BROADCAST, false, true);
|
||||
} else if (is_multicast_ether_addr(dest)) {
|
||||
@ -544,7 +544,7 @@
|
||||
static const struct fib_rules_ops __net_initconst ipmr_rules_ops_template = {
|
||||
.family = RTNL_FAMILY_IPMR,
|
||||
.rule_size = sizeof(struct ipmr_rule),
|
||||
@@ -1208,6 +1439,11 @@ static int ipmr_mfc_delete(struct mr_tab
|
||||
@@ -1210,6 +1441,11 @@ static int ipmr_mfc_delete(struct mr_tab
|
||||
mroute_netlink_event(mrt, c, RTM_DELROUTE);
|
||||
mr_cache_put(&c->_c);
|
||||
|
||||
@ -556,7 +556,7 @@
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1237,6 +1473,12 @@ static int ipmr_mfc_add(struct net *net,
|
||||
@@ -1239,6 +1475,12 @@ static int ipmr_mfc_add(struct net *net,
|
||||
call_ipmr_mfc_entry_notifiers(net, FIB_EVENT_ENTRY_REPLACE, c,
|
||||
mrt->id);
|
||||
mroute_netlink_event(mrt, c, RTM_NEWROUTE);
|
||||
@ -569,7 +569,7 @@
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1297,6 +1539,7 @@ static void mroute_clean_tables(struct m
|
||||
@@ -1299,6 +1541,7 @@ static void mroute_clean_tables(struct m
|
||||
struct net *net = read_pnet(&mrt->net);
|
||||
struct mr_mfc *c, *tmp;
|
||||
struct mfc_cache *cache;
|
||||
@ -577,7 +577,7 @@
|
||||
LIST_HEAD(list);
|
||||
int i;
|
||||
|
||||
@@ -1321,10 +1564,19 @@ static void mroute_clean_tables(struct m
|
||||
@@ -1323,10 +1566,19 @@ static void mroute_clean_tables(struct m
|
||||
rhltable_remove(&mrt->mfc_hash, &c->mnode, ipmr_rht_params);
|
||||
list_del_rcu(&c->list);
|
||||
cache = (struct mfc_cache *)c;
|
||||
@ -617,7 +617,7 @@
|
||||
#ifdef CONFIG_IPV6_MROUTE_MULTIPLE_TABLES
|
||||
#define ip6mr_for_each_table(mrt, net) \
|
||||
list_for_each_entry_rcu(mrt, &net->ipv6.mr6_tables, list)
|
||||
@@ -374,6 +385,227 @@ static struct mr_table_ops ip6mr_mr_tabl
|
||||
@@ -376,6 +387,227 @@ static struct mr_table_ops ip6mr_mr_tabl
|
||||
.cmparg_any = &ip6mr_mr_table_ops_cmparg_any,
|
||||
};
|
||||
|
||||
@ -845,7 +845,7 @@
|
||||
static struct mr_table *ip6mr_new_table(struct net *net, u32 id)
|
||||
{
|
||||
struct mr_table *mrt;
|
||||
@@ -1210,6 +1442,7 @@ static int ip6mr_mfc_delete(struct mr_ta
|
||||
@@ -1212,6 +1444,7 @@ static int ip6mr_mfc_delete(struct mr_ta
|
||||
int parent)
|
||||
{
|
||||
struct mfc6_cache *c;
|
||||
@ -853,7 +853,7 @@
|
||||
|
||||
/* The entries are added/deleted only under RTNL */
|
||||
rcu_read_lock();
|
||||
@@ -1218,6 +1451,12 @@ static int ip6mr_mfc_delete(struct mr_ta
|
||||
@@ -1220,6 +1453,12 @@ static int ip6mr_mfc_delete(struct mr_ta
|
||||
rcu_read_unlock();
|
||||
if (!c)
|
||||
return -ENOENT;
|
||||
@ -866,7 +866,7 @@
|
||||
rhltable_remove(&mrt->mfc_hash, &c->_c.mnode, ip6mr_rht_params);
|
||||
list_del_rcu(&c->_c.list);
|
||||
|
||||
@@ -1225,6 +1464,12 @@ static int ip6mr_mfc_delete(struct mr_ta
|
||||
@@ -1227,6 +1466,12 @@ static int ip6mr_mfc_delete(struct mr_ta
|
||||
FIB_EVENT_ENTRY_DEL, c, mrt->id);
|
||||
mr6_netlink_event(mrt, c, RTM_DELROUTE);
|
||||
mr_cache_put(&c->_c);
|
||||
@ -879,7 +879,7 @@
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1433,6 +1678,12 @@ static int ip6mr_mfc_add(struct net *net
|
||||
@@ -1435,6 +1680,12 @@ static int ip6mr_mfc_add(struct net *net
|
||||
call_ip6mr_mfc_entry_notifiers(net, FIB_EVENT_ENTRY_REPLACE,
|
||||
c, mrt->id);
|
||||
mr6_netlink_event(mrt, c, RTM_NEWROUTE);
|
||||
@ -892,7 +892,7 @@
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1495,6 +1746,10 @@ static int ip6mr_mfc_add(struct net *net
|
||||
@@ -1497,6 +1748,10 @@ static int ip6mr_mfc_add(struct net *net
|
||||
|
||||
static void mroute_clean_tables(struct mr_table *mrt, int flags)
|
||||
{
|
||||
@ -903,7 +903,7 @@
|
||||
struct mr_mfc *c, *tmp;
|
||||
LIST_HEAD(list);
|
||||
int i;
|
||||
@@ -1517,13 +1772,23 @@ static void mroute_clean_tables(struct m
|
||||
@@ -1519,13 +1774,23 @@ static void mroute_clean_tables(struct m
|
||||
if (((c->mfc_flags & MFC_STATIC) && !(flags & MRT6_FLUSH_MFC_STATIC)) ||
|
||||
(!(c->mfc_flags & MFC_STATIC) && !(flags & MRT6_FLUSH_MFC)))
|
||||
continue;
|
||||
|
Loading…
Reference in New Issue
Block a user