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
|
depends on NETFILTER_ADVANCED
|
||||||
--- a/net/netfilter/nf_conntrack_core.c
|
--- a/net/netfilter/nf_conntrack_core.c
|
||||||
+++ b/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_helper_pernet_init(net);
|
||||||
nf_conntrack_proto_pernet_init(net);
|
nf_conntrack_proto_pernet_init(net);
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@
|
|||||||
int (*fcn)(unsigned int events, struct nf_ct_event *item);
|
int (*fcn)(unsigned int events, struct nf_ct_event *item);
|
||||||
--- a/net/bridge/br_if.c
|
--- a/net/bridge/br_if.c
|
||||||
+++ b/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);
|
br_recalculate_neigh_suppress_enabled(br);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -80,7 +80,7 @@
|
|||||||
struct net_bridge_port *p;
|
struct net_bridge_port *p;
|
||||||
--- a/net/core/dev.c
|
--- a/net/core/dev.c
|
||||||
+++ b/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;
|
unsigned int len;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
@ -99,7 +99,7 @@
|
|||||||
#ifdef CONFIG_ETHERNET_PACKET_MANGLE
|
#ifdef CONFIG_ETHERNET_PACKET_MANGLE
|
||||||
if (!dev->eth_mangle_tx ||
|
if (!dev->eth_mangle_tx ||
|
||||||
(skb = dev->eth_mangle_tx(dev, skb)) != NULL)
|
(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);
|
EXPORT_SYMBOL_GPL(netdev_rx_handler_unregister);
|
||||||
|
|
||||||
@ -111,7 +111,7 @@
|
|||||||
/*
|
/*
|
||||||
* Limit the use of PFMEMALLOC reserves to those protocols that implement
|
* Limit the use of PFMEMALLOC reserves to those protocols that implement
|
||||||
* the special handling of PFMEMALLOC skbs.
|
* 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;
|
int ret = NET_RX_DROP;
|
||||||
__be16 type;
|
__be16 type;
|
||||||
|
|
||||||
@ -122,7 +122,7 @@
|
|||||||
net_timestamp_check(!netdev_tstamp_prequeue, skb);
|
net_timestamp_check(!netdev_tstamp_prequeue, skb);
|
||||||
|
|
||||||
trace_netif_receive_skb(skb);
|
trace_netif_receive_skb(skb);
|
||||||
@@ -4791,6 +4808,16 @@ another_round:
|
@@ -4803,6 +4820,16 @@ another_round:
|
||||||
goto out;
|
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)
|
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,
|
if (changed && !test_bit(PHYLINK_DISABLE_STOPPED,
|
||||||
&pl->phylink_disable_state))
|
&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)
|
const struct sfp_eeprom_id *id)
|
||||||
{
|
{
|
||||||
struct phylink *pl = upstream;
|
struct phylink *pl = upstream;
|
||||||
|
@ -33,7 +33,7 @@ Signed-off-by: Mathieu Olivari <mathieu@codeaurora.org>
|
|||||||
|
|
||||||
--- a/arch/arm/Kconfig
|
--- a/arch/arm/Kconfig
|
||||||
+++ b/arch/arm/Kconfig
|
+++ b/arch/arm/Kconfig
|
||||||
@@ -318,7 +318,7 @@ config ARCH_MULTIPLATFORM
|
@@ -319,7 +319,7 @@ config ARCH_MULTIPLATFORM
|
||||||
depends on MMU
|
depends on MMU
|
||||||
select ARM_HAS_SG_CHAIN
|
select ARM_HAS_SG_CHAIN
|
||||||
select ARM_PATCH_PHYS_VIRT
|
select ARM_PATCH_PHYS_VIRT
|
||||||
|
@ -22,7 +22,7 @@ Signed-off-by: Adrian Panella <ianchi74@outlook.com>
|
|||||||
|
|
||||||
--- a/arch/arm/Kconfig
|
--- a/arch/arm/Kconfig
|
||||||
+++ b/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
|
The command-line arguments provided by the boot loader will be
|
||||||
appended to the the device tree bootargs property.
|
appended to the the device tree bootargs property.
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/arch/arm/Kconfig
|
--- a/arch/arm/Kconfig
|
||||||
+++ b/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
|
endchoice
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- b/arch/arm/boot/dts/qcom-ipq8064.dtsi
|
--- b/arch/arm/boot/dts/qcom-ipq8064.dtsi
|
||||||
+++ a/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";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -13,7 +13,7 @@
|
|||||||
gmac0: ethernet@37000000 {
|
gmac0: ethernet@37000000 {
|
||||||
device_type = "network";
|
device_type = "network";
|
||||||
compatible = "qcom,ipq806x-gmac";
|
compatible = "qcom,ipq806x-gmac";
|
||||||
@@ -1492,7 +1498,132 @@
|
@@ -1556,7 +1562,132 @@
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -147,7 +147,7 @@
|
|||||||
compatible = "qcom,bam-v1.3.0";
|
compatible = "qcom,bam-v1.3.0";
|
||||||
reg = <0x12402000 0x8000>;
|
reg = <0x12402000 0x8000>;
|
||||||
interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
@@ -1558,6 +1689,20 @@
|
@@ -1622,6 +1753,20 @@
|
||||||
dma-names = "tx", "rx";
|
dma-names = "tx", "rx";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -121,7 +121,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
|
|||||||
define_cache_functions b15
|
define_cache_functions b15
|
||||||
--- a/arch/arm/mm/proc-macros.S
|
--- a/arch/arm/mm/proc-macros.S
|
||||||
+++ b/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\()_flush_kern_dcache_area
|
||||||
.long \name\()_dma_map_area
|
.long \name\()_dma_map_area
|
||||||
.long \name\()_dma_unmap_area
|
.long \name\()_dma_unmap_area
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/include/linux/if_bridge.h
|
--- a/include/linux/if_bridge.h
|
||||||
+++ b/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
|
#endif
|
||||||
|
|
||||||
@ -75,7 +75,7 @@
|
|||||||
#endif
|
#endif
|
||||||
--- a/include/linux/if_vlan.h
|
--- a/include/linux/if_vlan.h
|
||||||
+++ b/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);
|
extern bool vlan_uses_dev(const struct net_device *dev);
|
||||||
|
|
||||||
@ -106,7 +106,7 @@
|
|||||||
__be16 vlan_proto, u16 vlan_id)
|
__be16 vlan_proto, u16 vlan_id)
|
||||||
--- a/include/linux/netdevice.h
|
--- a/include/linux/netdevice.h
|
||||||
+++ b/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_LIVE_RENAME_OK IFF_LIVE_RENAME_OK
|
||||||
#define IFF_NO_IP_ALIGN IFF_NO_IP_ALIGN
|
#define IFF_NO_IP_ALIGN IFF_NO_IP_ALIGN
|
||||||
|
|
||||||
@ -127,7 +127,7 @@
|
|||||||
/**
|
/**
|
||||||
* struct net_device - The DEVICE structure.
|
* 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 flags;
|
||||||
unsigned int priv_flags;
|
unsigned int priv_flags;
|
||||||
@ -135,7 +135,7 @@
|
|||||||
|
|
||||||
unsigned short gflags;
|
unsigned short gflags;
|
||||||
unsigned short padded;
|
unsigned short padded;
|
||||||
@@ -2527,6 +2542,10 @@ enum netdev_cmd {
|
@@ -2583,6 +2598,10 @@ enum netdev_cmd {
|
||||||
NETDEV_CVLAN_FILTER_DROP_INFO,
|
NETDEV_CVLAN_FILTER_DROP_INFO,
|
||||||
NETDEV_SVLAN_FILTER_PUSH_INFO,
|
NETDEV_SVLAN_FILTER_PUSH_INFO,
|
||||||
NETDEV_SVLAN_FILTER_DROP_INFO,
|
NETDEV_SVLAN_FILTER_DROP_INFO,
|
||||||
@ -164,7 +164,7 @@
|
|||||||
|
|
||||||
--- a/include/net/bonding.h
|
--- a/include/net/bonding.h
|
||||||
+++ b/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 */
|
#endif /* CONFIG_DEBUG_FS */
|
||||||
struct rtnl_link_stats64 bond_stats;
|
struct rtnl_link_stats64 bond_stats;
|
||||||
struct lock_class_key stats_lock_key;
|
struct lock_class_key stats_lock_key;
|
||||||
@ -172,7 +172,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
#define bond_slave_get_rcu(dev) \
|
#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);
|
dev_kfree_skb_any(skb);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -201,7 +201,7 @@
|
|||||||
const struct dst_entry *dst = skb_dst(skb);
|
const struct dst_entry *dst = skb_dst(skb);
|
||||||
--- a/include/net/neighbour.h
|
--- a/include/net/neighbour.h
|
||||||
+++ b/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;
|
*notify = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -352,7 +352,7 @@
|
|||||||
break;
|
break;
|
||||||
case AD_MUX_COLLECTING_DISTRIBUTING:
|
case AD_MUX_COLLECTING_DISTRIBUTING:
|
||||||
if (!(port->sm_vars & AD_PORT_SELECTED) ||
|
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)
|
bool *update_slave_arr)
|
||||||
{
|
{
|
||||||
if (port->aggregator->is_active) {
|
if (port->aggregator->is_active) {
|
||||||
@ -361,7 +361,7 @@
|
|||||||
slave_dbg(port->slave->bond->dev, port->slave->dev,
|
slave_dbg(port->slave->bond->dev, port->slave->dev,
|
||||||
"Enabling port %d (LAG %d)\n",
|
"Enabling port %d (LAG %d)\n",
|
||||||
port->actor_port_number,
|
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);
|
__enable_port(port);
|
||||||
/* Slave array needs update */
|
/* Slave array needs update */
|
||||||
*update_slave_arr = true;
|
*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;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -965,7 +965,7 @@
|
|||||||
spin_unlock_bh(&br->hash_lock);
|
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 */
|
/* Take over HW learned entry */
|
||||||
if (unlikely(fdb->added_by_external_learn))
|
if (unlikely(fdb->added_by_external_learn))
|
||||||
fdb->added_by_external_learn = 0;
|
fdb->added_by_external_learn = 0;
|
||||||
@ -978,7 +978,7 @@
|
|||||||
}
|
}
|
||||||
if (now != fdb->updated)
|
if (now != fdb->updated)
|
||||||
fdb->updated = now;
|
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;
|
struct sk_buff *skb;
|
||||||
int err = -ENOBUFS;
|
int err = -ENOBUFS;
|
||||||
|
|
||||||
@ -1004,7 +1004,7 @@
|
|||||||
if (swdev_notify)
|
if (swdev_notify)
|
||||||
br_switchdev_fdb_notify(fdb, type);
|
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);
|
spin_unlock_bh(&p->br->hash_lock);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(br_fdb_clear_offload);
|
EXPORT_SYMBOL_GPL(br_fdb_clear_offload);
|
||||||
@ -1064,7 +1064,7 @@
|
|||||||
/*
|
/*
|
||||||
* Determine initial path cost based on speed.
|
* Determine initial path cost based on speed.
|
||||||
* using recommendations from 802.1d standard
|
* using recommendations from 802.1d standard
|
||||||
@@ -681,6 +687,8 @@
|
@@ -695,6 +701,8 @@
|
||||||
|
|
||||||
kobject_uevent(&p->kobj, KOBJ_ADD);
|
kobject_uevent(&p->kobj, KOBJ_ADD);
|
||||||
|
|
||||||
@ -1073,7 +1073,7 @@
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
err7:
|
err7:
|
||||||
@@ -713,6 +721,8 @@
|
@@ -730,6 +738,8 @@
|
||||||
p = br_port_get_rtnl(dev);
|
p = br_port_get_rtnl(dev);
|
||||||
if (!p || p->br != br)
|
if (!p || p->br != br)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
@ -1082,7 +1082,7 @@
|
|||||||
|
|
||||||
/* Since more than one interface can be attached to a bridge,
|
/* Since more than one interface can be attached to a bridge,
|
||||||
* there still maybe an alternate path for netconsole to use;
|
* 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);
|
EXPORT_SYMBOL_GPL(br_dev_update_stats);
|
||||||
|
|
||||||
@ -1153,7 +1153,7 @@
|
|||||||
|
|
||||||
--- a/net/bridge/br_private.h
|
--- a/net/bridge/br_private.h
|
||||||
+++ b/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,
|
void br_do_suppress_nd(struct sk_buff *skb, struct net_bridge *br,
|
||||||
u16 vid, struct net_bridge_port *p, struct nd_msg *msg);
|
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);
|
struct nd_msg *br_is_nd_neigh_msg(struct sk_buff *skb, struct nd_msg *m);
|
||||||
@ -1165,7 +1165,7 @@
|
|||||||
#endif
|
#endif
|
||||||
--- a/net/core/neighbour.c
|
--- a/net/core/neighbour.c
|
||||||
+++ b/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.
|
/* Generic update routine.
|
||||||
-- lladdr is new lladdr or NULL, if it is not supplied.
|
-- 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;
|
int notify = 0;
|
||||||
struct net_device *dev;
|
struct net_device *dev;
|
||||||
int update_isrouter = 0;
|
int update_isrouter = 0;
|
||||||
@ -1195,7 +1195,7 @@
|
|||||||
|
|
||||||
trace_neigh_update(neigh, lladdr, new, flags, nlmsg_pid);
|
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;
|
old = neigh->nud_state;
|
||||||
err = -EPERM;
|
err = -EPERM;
|
||||||
|
|
||||||
@ -1204,7 +1204,7 @@
|
|||||||
if (neigh->dead) {
|
if (neigh->dead) {
|
||||||
NL_SET_ERR_MSG(extack, "Neighbor entry is now dead");
|
NL_SET_ERR_MSG(extack, "Neighbor entry is now dead");
|
||||||
new = old;
|
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
|
- compare new & old
|
||||||
- if they are different, check override flag
|
- if they are different, check override flag
|
||||||
*/
|
*/
|
||||||
@ -1216,7 +1216,7 @@
|
|||||||
if ((old & NUD_VALID) &&
|
if ((old & NUD_VALID) &&
|
||||||
!memcmp(lladdr, neigh->ha, dev->addr_len))
|
!memcmp(lladdr, neigh->ha, dev->addr_len))
|
||||||
lladdr = neigh->ha;
|
lladdr = neigh->ha;
|
||||||
@@ -1399,8 +1421,11 @@ out:
|
@@ -1412,8 +1434,11 @@ out:
|
||||||
if (((new ^ old) & NUD_PERMANENT) || ext_learn_change)
|
if (((new ^ old) & NUD_PERMANENT) || ext_learn_change)
|
||||||
neigh_update_gc_list(neigh);
|
neigh_update_gc_list(neigh);
|
||||||
|
|
||||||
@ -1261,7 +1261,7 @@
|
|||||||
fib_release_info(fa_to_delete->fa_info);
|
fib_release_info(fa_to_delete->fa_info);
|
||||||
alias_free_mem_rcu(fa_to_delete);
|
alias_free_mem_rcu(fa_to_delete);
|
||||||
return 0;
|
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);
|
0, SLAB_PANIC, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1322,7 +1322,7 @@
|
|||||||
+
|
+
|
||||||
--- a/net/ipv6/ndisc.c
|
--- a/net/ipv6/ndisc.c
|
||||||
+++ b/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);
|
ndisc_send_skb(skb, daddr, saddr);
|
||||||
}
|
}
|
||||||
@ -1332,7 +1332,7 @@
|
|||||||
const struct in6_addr *daddr)
|
const struct in6_addr *daddr)
|
||||||
--- a/net/ipv6/route.c
|
--- a/net/ipv6/route.c
|
||||||
+++ b/net/ipv6/route.c
|
+++ b/net/ipv6/route.c
|
||||||
@@ -3747,6 +3747,9 @@ out:
|
@@ -3784,6 +3784,9 @@ out:
|
||||||
return ERR_PTR(err);
|
return ERR_PTR(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1342,7 +1342,7 @@
|
|||||||
int ip6_route_add(struct fib6_config *cfg, gfp_t gfp_flags,
|
int ip6_route_add(struct fib6_config *cfg, gfp_t gfp_flags,
|
||||||
struct netlink_ext_ack *extack)
|
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);
|
return PTR_ERR(rt);
|
||||||
|
|
||||||
err = __ip6_ins_rt(rt, &cfg->fc_nlinfo, extack);
|
err = __ip6_ins_rt(rt, &cfg->fc_nlinfo, extack);
|
||||||
@ -1353,7 +1353,7 @@
|
|||||||
fib6_info_release(rt);
|
fib6_info_release(rt);
|
||||||
|
|
||||||
return err;
|
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);
|
err = fib6_del(rt, info);
|
||||||
spin_unlock_bh(&table->tb6_lock);
|
spin_unlock_bh(&table->tb6_lock);
|
||||||
|
|
||||||
@ -1363,7 +1363,7 @@
|
|||||||
out:
|
out:
|
||||||
fib6_info_release(rt);
|
fib6_info_release(rt);
|
||||||
return err;
|
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;
|
return NOTIFY_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1559,7 +1559,7 @@
|
|||||||
|
|
||||||
--- a/net/netfilter/Kconfig
|
--- a/net/netfilter/Kconfig
|
||||||
+++ b/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'.
|
If unsure, say `N'.
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/include/linux/if_bridge.h
|
--- a/include/linux/if_bridge.h
|
||||||
+++ b/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;
|
struct net_device *dev;
|
||||||
unsigned char addr[6];
|
unsigned char addr[6];
|
||||||
unsigned char is_local;
|
unsigned char is_local;
|
||||||
@ -11,7 +11,7 @@
|
|||||||
extern void br_fdb_unregister_notify(struct notifier_block *nb);
|
extern void br_fdb_unregister_notify(struct notifier_block *nb);
|
||||||
--- a/include/linux/netdevice.h
|
--- a/include/linux/netdevice.h
|
||||||
+++ b/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_L2TPV2 = 1<<1,
|
||||||
IFF_QCA_ECM_PPP_L2TPV3 = 1<<2,
|
IFF_QCA_ECM_PPP_L2TPV3 = 1<<2,
|
||||||
IFF_QCA_ECM_PPP_PPTP = 1<<3,
|
IFF_QCA_ECM_PPP_PPTP = 1<<3,
|
||||||
@ -82,7 +82,7 @@
|
|||||||
#endif
|
#endif
|
||||||
--- a/drivers/net/tun.c
|
--- a/drivers/net/tun.c
|
||||||
+++ b/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_CTAG_TX |
|
||||||
NETIF_F_HW_VLAN_STAG_TX);
|
NETIF_F_HW_VLAN_STAG_TX);
|
||||||
|
|
||||||
@ -93,7 +93,7 @@
|
|||||||
|
|
||||||
--- a/net/ipv4/ip_gre.c
|
--- a/net/ipv4/ip_gre.c
|
||||||
+++ b/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->netdev_ops = &gre_tap_netdev_ops;
|
||||||
dev->priv_flags &= ~IFF_TX_SKB_SHARING;
|
dev->priv_flags &= ~IFF_TX_SKB_SHARING;
|
||||||
dev->priv_flags |= IFF_LIVE_ADDR_CHANGE;
|
dev->priv_flags |= IFF_LIVE_ADDR_CHANGE;
|
||||||
@ -103,7 +103,7 @@
|
|||||||
|
|
||||||
--- a/net/ipv6/ip6_gre.c
|
--- a/net/ipv6/ip6_gre.c
|
||||||
+++ b/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_TX_SKB_SHARING;
|
||||||
dev->priv_flags |= IFF_LIVE_ADDR_CHANGE;
|
dev->priv_flags |= IFF_LIVE_ADDR_CHANGE;
|
||||||
@ -113,7 +113,7 @@
|
|||||||
|
|
||||||
--- a/include/linux/if_bridge.h
|
--- a/include/linux/if_bridge.h
|
||||||
+++ b/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 brioctl_set(int (*ioctl_hook)(struct net *, unsigned int, void __user *));
|
||||||
extern void br_dev_update_stats(struct net_device *dev,
|
extern void br_dev_update_stats(struct net_device *dev,
|
||||||
struct rtnl_link_stats64 *nlstats);
|
struct rtnl_link_stats64 *nlstats);
|
||||||
@ -123,7 +123,7 @@
|
|||||||
int br_multicast_list_adjacent(struct net_device *dev,
|
int br_multicast_list_adjacent(struct net_device *dev,
|
||||||
--- a/net/bridge/br_if.c
|
--- a/net/bridge/br_if.c
|
||||||
+++ b/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);
|
EXPORT_SYMBOL_GPL(br_dev_update_stats);
|
||||||
|
|
||||||
/* QCA NSS ECM support - Start */
|
/* QCA NSS ECM support - Start */
|
||||||
|
@ -15,8 +15,6 @@ Signed-off-by: Murat Sezgin <msezgin@codeaurora.org>
|
|||||||
include/linux/ppp_channel.h | 38 +++++++++
|
include/linux/ppp_channel.h | 38 +++++++++
|
||||||
4 files changed, 317 insertions(+), 6 deletions(-)
|
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
|
--- a/drivers/net/ppp/ppp_generic.c
|
||||||
+++ b/drivers/net/ppp/ppp_generic.c
|
+++ b/drivers/net/ppp/ppp_generic.c
|
||||||
@@ -1,5 +1,21 @@
|
@@ -1,5 +1,21 @@
|
||||||
@ -41,7 +39,7 @@ index 56af90b..58b889e 100644
|
|||||||
* Generic PPP layer for Linux.
|
* Generic PPP layer for Linux.
|
||||||
*
|
*
|
||||||
* Copyright 1999-2002 Paul Mackerras.
|
* 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);
|
return idr_find(p, n);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -220,7 +218,7 @@ index 56af90b..58b889e 100644
|
|||||||
/* Module/initialization stuff */
|
/* Module/initialization stuff */
|
||||||
|
|
||||||
module_init(ppp_init);
|
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_output_wakeup);
|
||||||
EXPORT_SYMBOL(ppp_register_compressor);
|
EXPORT_SYMBOL(ppp_register_compressor);
|
||||||
EXPORT_SYMBOL(ppp_unregister_compressor);
|
EXPORT_SYMBOL(ppp_unregister_compressor);
|
||||||
@ -229,8 +227,6 @@ index 56af90b..58b889e 100644
|
|||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
MODULE_ALIAS_CHARDEV(PPP_MAJOR, 0);
|
MODULE_ALIAS_CHARDEV(PPP_MAJOR, 0);
|
||||||
MODULE_ALIAS_RTNL_LINK("ppp");
|
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
|
--- a/drivers/net/ppp/pppoe.c
|
||||||
+++ b/drivers/net/ppp/pppoe.c
|
+++ b/drivers/net/ppp/pppoe.c
|
||||||
@@ -62,6 +62,7 @@
|
@@ -62,6 +62,7 @@
|
||||||
@ -250,7 +246,7 @@ index df5d418..23590dd 100644
|
|||||||
|
|
||||||
/* per-net private data for this module */
|
/* per-net private data for this module */
|
||||||
static unsigned int pppoe_net_id __read_mostly;
|
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)) {
|
if (stage_session(po->pppoe_pa.sid)) {
|
||||||
pppox_unbind_sock(sk);
|
pppox_unbind_sock(sk);
|
||||||
pn = pppoe_pernet(sock_net(sk));
|
pn = pppoe_pernet(sock_net(sk));
|
||||||
@ -258,7 +254,7 @@ index df5d418..23590dd 100644
|
|||||||
delete_item(pn, po->pppoe_pa.sid,
|
delete_item(pn, po->pppoe_pa.sid,
|
||||||
po->pppoe_pa.remote, po->pppoe_ifindex);
|
po->pppoe_pa.remote, po->pppoe_ifindex);
|
||||||
if (po->pppoe_dev) {
|
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.mtu = dev->mtu - sizeof(struct pppoe_hdr) - 2;
|
||||||
po->chan.private = sk;
|
po->chan.private = sk;
|
||||||
@ -267,7 +263,7 @@ index df5d418..23590dd 100644
|
|||||||
|
|
||||||
error = ppp_register_net_channel(dev_net(dev), &po->chan);
|
error = ppp_register_net_channel(dev_net(dev), &po->chan);
|
||||||
if (error) {
|
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 */
|
#endif /* CONFIG_NF_FLOW_TABLE */
|
||||||
|
|
||||||
@ -349,8 +345,6 @@ index df5d418..23590dd 100644
|
|||||||
};
|
};
|
||||||
|
|
||||||
static int pppoe_recvmsg(struct socket *sock, struct msghdr *m,
|
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
|
--- a/include/linux/if_pppox.h
|
||||||
+++ b/include/linux/if_pppox.h
|
+++ b/include/linux/if_pppox.h
|
||||||
@@ -1,13 +1,14 @@
|
@@ -1,13 +1,14 @@
|
||||||
@ -387,8 +381,6 @@ index 69e813b..98131ea 100644
|
|||||||
+ struct pppoe_opt *addressing);
|
+ struct pppoe_opt *addressing);
|
||||||
+
|
+
|
||||||
#endif /* !(__LINUX_IF_PPPOX_H) */
|
#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
|
--- a/include/linux/ppp_channel.h
|
||||||
+++ b/include/linux/ppp_channel.h
|
+++ b/include/linux/ppp_channel.h
|
||||||
@@ -32,6 +32,14 @@ struct ppp_channel_ops {
|
@@ -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. */
|
/* Called by the channel when it can send some more data. */
|
||||||
extern void ppp_output_wakeup(struct ppp_channel *);
|
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 ++
|
net/l2tp/l2tp_core.h | 2 ++
|
||||||
4 files changed, 36 insertions(+), 2 deletions(-)
|
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
|
--- a/drivers/net/ppp/ppp_generic.c
|
||||||
+++ b/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. */
|
/* Updates the PPP interface statistics. */
|
||||||
void ppp_update_stats(struct net_device *dev, unsigned long rx_packets,
|
void ppp_update_stats(struct net_device *dev, unsigned long rx_packets,
|
||||||
unsigned long rx_bytes, unsigned long tx_packets,
|
unsigned long rx_bytes, unsigned long tx_packets,
|
||||||
@ -31,7 +29,7 @@ index 58b889e..9cf7fe3 100644
|
|||||||
{
|
{
|
||||||
struct ppp *ppp;
|
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_xmit_lock(ppp);
|
||||||
ppp->stats64.tx_packets += tx_packets;
|
ppp->stats64.tx_packets += tx_packets;
|
||||||
ppp->stats64.tx_bytes += tx_bytes;
|
ppp->stats64.tx_bytes += tx_bytes;
|
||||||
@ -47,8 +45,6 @@ index 58b889e..9cf7fe3 100644
|
|||||||
ppp_recv_unlock(ppp);
|
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
|
--- a/include/linux/ppp_channel.h
|
||||||
+++ b/include/linux/ppp_channel.h
|
+++ b/include/linux/ppp_channel.h
|
||||||
@@ -82,7 +82,9 @@ extern int ppp_is_multilink(struct net_device *dev);
|
@@ -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. */
|
/* Called by the channel when it can send some more data. */
|
||||||
extern void ppp_output_wakeup(struct ppp_channel *);
|
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
|
--- a/net/l2tp/l2tp_core.c
|
||||||
+++ b/net/l2tp/l2tp_core.c
|
+++ b/net/l2tp/l2tp_core.c
|
||||||
@@ -355,6 +355,30 @@ err_tlock:
|
@@ -355,6 +355,30 @@ err_tlock:
|
||||||
@ -97,8 +91,6 @@ index 425b95e..b098099 100644
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Receive data handling
|
* 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
|
--- a/net/l2tp/l2tp_core.h
|
||||||
+++ b/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);
|
@@ -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,
|
int l2tp_tunnel_create(struct net *net, int fd, int version, u32 tunnel_id,
|
||||||
u32 peer_tunnel_id, struct l2tp_tunnel_cfg *cfg,
|
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 ++++
|
drivers/net/ppp/ppp_generic.c | 4 ++++
|
||||||
1 file changed, 4 insertions(+)
|
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
|
--- a/drivers/net/ppp/ppp_generic.c
|
||||||
+++ b/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->stats64.tx_bytes += tx_bytes;
|
||||||
ppp->dev->stats.tx_errors += tx_errors;
|
ppp->dev->stats.tx_errors += tx_errors;
|
||||||
ppp->dev->stats.tx_dropped += tx_dropped;
|
ppp->dev->stats.tx_dropped += tx_dropped;
|
||||||
@ -25,7 +23,7 @@ index 9cf7fe3..b7bab8e 100644
|
|||||||
ppp_xmit_unlock(ppp);
|
ppp_xmit_unlock(ppp);
|
||||||
|
|
||||||
ppp_recv_lock(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->stats64.rx_bytes += rx_bytes;
|
||||||
ppp->dev->stats.rx_errors += rx_errors;
|
ppp->dev->stats.rx_errors += rx_errors;
|
||||||
ppp->dev->stats.rx_dropped += rx_dropped;
|
ppp->dev->stats.rx_dropped += rx_dropped;
|
||||||
@ -34,5 +32,3 @@ index 9cf7fe3..b7bab8e 100644
|
|||||||
ppp_recv_unlock(ppp);
|
ppp_recv_unlock(ppp);
|
||||||
}
|
}
|
||||||
|
|
||||||
--
|
|
||||||
cgit v1.1
|
|
||||||
|
@ -68,7 +68,7 @@
|
|||||||
|
|
||||||
--- a/net/ipv6/esp6.c
|
--- a/net/ipv6/esp6.c
|
||||||
+++ b/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 ip_esp_hdr *esph;
|
||||||
struct crypto_aead *aead;
|
struct crypto_aead *aead;
|
||||||
struct esp_info esp;
|
struct esp_info esp;
|
||||||
@ -76,7 +76,7 @@
|
|||||||
|
|
||||||
esp.inplace = true;
|
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;
|
aead = x->data;
|
||||||
alen = crypto_aead_authsize(aead);
|
alen = crypto_aead_authsize(aead);
|
||||||
|
|
||||||
@ -88,7 +88,7 @@
|
|||||||
esp.tfclen = 0;
|
esp.tfclen = 0;
|
||||||
if (x->tfcpad) {
|
if (x->tfcpad) {
|
||||||
struct xfrm_dst *dst = (struct xfrm_dst *)skb_dst(skb);
|
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;
|
__be32 *seqhi;
|
||||||
u8 *iv;
|
u8 *iv;
|
||||||
struct scatterlist *sg;
|
struct scatterlist *sg;
|
||||||
@ -96,7 +96,7 @@
|
|||||||
|
|
||||||
if (!pskb_may_pull(skb, sizeof(struct ip_esp_hdr) + ivlen)) {
|
if (!pskb_may_pull(skb, sizeof(struct ip_esp_hdr) + ivlen)) {
|
||||||
ret = -EINVAL;
|
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;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/include/net/sch_generic.h
|
--- a/include/net/sch_generic.h
|
||||||
+++ b/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_INVISIBLE 0x80 /* invisible by default in dump */
|
||||||
#define TCQ_F_NOLOCK 0x100 /* qdisc does not require locking */
|
#define TCQ_F_NOLOCK 0x100 /* qdisc does not require locking */
|
||||||
#define TCQ_F_OFFLOADED 0x200 /* qdisc is offloaded to HW */
|
#define TCQ_F_OFFLOADED 0x200 /* qdisc is offloaded to HW */
|
||||||
@ -8,7 +8,7 @@
|
|||||||
u32 limit;
|
u32 limit;
|
||||||
const struct Qdisc_ops *ops;
|
const struct Qdisc_ops *ops;
|
||||||
struct qdisc_size_table __rcu *stab;
|
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);
|
qstats_overlimit_inc(res->qstats);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -20,7 +20,7 @@
|
|||||||
#endif
|
#endif
|
||||||
--- a/include/uapi/linux/pkt_sched.h
|
--- a/include/uapi/linux/pkt_sched.h
|
||||||
+++ b/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)
|
#define TCA_TAPRIO_ATTR_MAX (__TCA_TAPRIO_ATTR_MAX - 1)
|
||||||
|
|
||||||
@ -271,7 +271,7 @@
|
|||||||
#endif
|
#endif
|
||||||
--- a/net/sched/sch_api.c
|
--- a/net/sched/sch_api.c
|
||||||
+++ b/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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -300,7 +300,7 @@
|
|||||||
subsys_initcall(pktsched_init);
|
subsys_initcall(pktsched_init);
|
||||||
--- a/net/sched/sch_generic.c
|
--- a/net/sched/sch_generic.c
|
||||||
+++ b/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);
|
qdisc_free(q);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -309,7 +309,7 @@
|
|||||||
{
|
{
|
||||||
const struct Qdisc_ops *ops = qdisc->ops;
|
const struct Qdisc_ops *ops = qdisc->ops;
|
||||||
struct sk_buff *skb, *tmp;
|
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);
|
call_rcu(&qdisc->rcu, qdisc_free_cb);
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/net/ppp/ppp_generic.c
|
--- a/drivers/net/ppp/ppp_generic.c
|
||||||
+++ b/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 <net/slhc_vj.h>
|
||||||
#include <linux/atomic.h>
|
#include <linux/atomic.h>
|
||||||
#include <linux/refcount.h>
|
#include <linux/refcount.h>
|
||||||
@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
#include <linux/nsproxy.h>
|
#include <linux/nsproxy.h>
|
||||||
#include <net/net_namespace.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;
|
struct ppp_net *pn;
|
||||||
int ret = -ENXIO;
|
int ret = -ENXIO;
|
||||||
int hdrlen;
|
int hdrlen;
|
||||||
@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
pn = ppp_pernet(pch->chan_net);
|
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;
|
++ppp->n_channels;
|
||||||
pch->ppp = ppp;
|
pch->ppp = ppp;
|
||||||
refcount_inc(&ppp->file.refcnt);
|
refcount_inc(&ppp->file.refcnt);
|
||||||
@ -46,7 +46,7 @@
|
|||||||
ppp_unlock(ppp);
|
ppp_unlock(ppp);
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
|
||||||
@@ -3341,6 +3366,56 @@
|
@@ -3555,6 +3580,56 @@
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(ppp_release_channels);
|
EXPORT_SYMBOL(ppp_release_channels);
|
||||||
|
|
||||||
@ -105,16 +105,16 @@
|
|||||||
module_init(ppp_init);
|
module_init(ppp_init);
|
||||||
--- a/include/linux/ppp_channel.h
|
--- a/include/linux/ppp_channel.h
|
||||||
+++ b/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
|
* the channel subtype
|
||||||
*/
|
*/
|
||||||
int (*get_channel_protocol)(struct ppp_channel *);
|
int (*get_channel_protocol)(struct ppp_channel *);
|
||||||
+ /* Get channel protocol version */
|
+ /* Get channel protocol version */
|
||||||
+ int (*get_channel_protocol_ver)(struct ppp_channel *);
|
+ int (*get_channel_protocol_ver)(struct ppp_channel *);
|
||||||
/* Hold the channel from being destroyed */
|
/* Hold the channel from being destroyed */
|
||||||
void (*hold)(struct ppp_channel *);
|
void (*hold)(struct ppp_channel *);
|
||||||
/* Release hold on the channel */
|
/* Release hold on the channel */
|
||||||
@@ -84,6 +96,15 @@
|
@@ -69,6 +71,15 @@
|
||||||
/* Test if ppp xmit lock is locked */
|
/* Test if ppp xmit lock is locked */
|
||||||
extern bool ppp_is_xmit_locked(struct net_device *dev);
|
extern bool ppp_is_xmit_locked(struct net_device *dev);
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/include/linux/ppp_channel.h
|
--- a/include/linux/ppp_channel.h
|
||||||
+++ b/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 *);
|
extern int ppp_dev_index(struct ppp_channel *);
|
||||||
/* QCA NSS ECM Support - End */
|
/* QCA NSS ECM Support - End */
|
||||||
|
|
||||||
@ -20,7 +20,7 @@
|
|||||||
#endif
|
#endif
|
||||||
--- a/drivers/net/ppp/ppp_generic.c
|
--- a/drivers/net/ppp/ppp_generic.c
|
||||||
+++ b/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_before(a, b) ((s32)((a) - (b)) < 0)
|
||||||
#define seq_after(a, b) ((s32)((a) - (b)) > 0)
|
#define seq_after(a, b) ((s32)((a) - (b)) > 0)
|
||||||
|
|
||||||
@ -47,7 +47,7 @@
|
|||||||
/* Prototypes. */
|
/* Prototypes. */
|
||||||
static int ppp_unattached_ioctl(struct net *net, struct ppp_file *pf,
|
static int ppp_unattached_ioctl(struct net *net, struct ppp_file *pf,
|
||||||
struct file *file, unsigned int cmd, unsigned long arg);
|
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 ppp_proto;
|
||||||
int version;
|
int version;
|
||||||
/* QCA NSS ECM Support - End */
|
/* QCA NSS ECM Support - End */
|
||||||
@ -55,7 +55,7 @@
|
|||||||
|
|
||||||
pn = ppp_pernet(pch->chan_net);
|
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;
|
ppp->dev->priv_flags_qca_ecm |= IFF_QCA_ECM_PPP_L2TPV3;
|
||||||
}
|
}
|
||||||
/* QCA NSS ECM support - End */
|
/* QCA NSS ECM support - End */
|
||||||
@ -64,7 +64,7 @@
|
|||||||
out2:
|
out2:
|
||||||
ppp_unlock(ppp);
|
ppp_unlock(ppp);
|
||||||
ret = 0;
|
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);
|
write_unlock_bh(&pch->upl);
|
||||||
out:
|
out:
|
||||||
mutex_unlock(&pn->all_ppp_mutex);
|
mutex_unlock(&pn->all_ppp_mutex);
|
||||||
@ -81,7 +81,7 @@
|
|||||||
return ret;
|
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;
|
pch->ppp = NULL;
|
||||||
write_unlock_bh(&pch->upl);
|
write_unlock_bh(&pch->upl);
|
||||||
if (ppp) {
|
if (ppp) {
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
__u32 flags; /* tunnel flags */
|
__u32 flags; /* tunnel flags */
|
||||||
--- a/include/net/ip_tunnels.h
|
--- a/include/net/ip_tunnels.h
|
||||||
+++ b/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 */
|
#endif /* CONFIG_INET */
|
||||||
|
|
||||||
@ -22,7 +22,7 @@
|
|||||||
#endif /* __NET_IP_TUNNELS_H */
|
#endif /* __NET_IP_TUNNELS_H */
|
||||||
--- a/net/ipv6/ip6_tunnel.c
|
--- a/net/ipv6/ip6_tunnel.c
|
||||||
+++ b/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;
|
return -EMSGSIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -51,7 +51,7 @@
|
|||||||
struct ip6_tnl *tunnel = netdev_priv(dev);
|
struct ip6_tnl *tunnel = netdev_priv(dev);
|
||||||
--- a/net/ipv6/sit.c
|
--- a/net/ipv6/sit.c
|
||||||
+++ b/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;
|
return -EMSGSIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/include/linux/if_bridge.h
|
--- a/include/linux/if_bridge.h
|
||||||
+++ b/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;
|
extern br_get_dst_hook_t __rcu *br_get_dst_hook;
|
||||||
/* QCA NSS ECM support - End */
|
/* QCA NSS ECM support - End */
|
||||||
|
|
||||||
@ -88,7 +88,7 @@
|
|||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
--- a/net/bridge/br_device.c
|
--- a/net/bridge/br_device.c
|
||||||
+++ b/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)) {
|
if (is_broadcast_ether_addr(dest)) {
|
||||||
br_flood(br, skb, BR_PKT_BROADCAST, false, true);
|
br_flood(br, skb, BR_PKT_BROADCAST, false, true);
|
||||||
} else if (is_multicast_ether_addr(dest)) {
|
} else if (is_multicast_ether_addr(dest)) {
|
||||||
@ -544,7 +544,7 @@
|
|||||||
static const struct fib_rules_ops __net_initconst ipmr_rules_ops_template = {
|
static const struct fib_rules_ops __net_initconst ipmr_rules_ops_template = {
|
||||||
.family = RTNL_FAMILY_IPMR,
|
.family = RTNL_FAMILY_IPMR,
|
||||||
.rule_size = sizeof(struct ipmr_rule),
|
.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);
|
mroute_netlink_event(mrt, c, RTM_DELROUTE);
|
||||||
mr_cache_put(&c->_c);
|
mr_cache_put(&c->_c);
|
||||||
|
|
||||||
@ -556,7 +556,7 @@
|
|||||||
return 0;
|
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,
|
call_ipmr_mfc_entry_notifiers(net, FIB_EVENT_ENTRY_REPLACE, c,
|
||||||
mrt->id);
|
mrt->id);
|
||||||
mroute_netlink_event(mrt, c, RTM_NEWROUTE);
|
mroute_netlink_event(mrt, c, RTM_NEWROUTE);
|
||||||
@ -569,7 +569,7 @@
|
|||||||
return 0;
|
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 net *net = read_pnet(&mrt->net);
|
||||||
struct mr_mfc *c, *tmp;
|
struct mr_mfc *c, *tmp;
|
||||||
struct mfc_cache *cache;
|
struct mfc_cache *cache;
|
||||||
@ -577,7 +577,7 @@
|
|||||||
LIST_HEAD(list);
|
LIST_HEAD(list);
|
||||||
int i;
|
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);
|
rhltable_remove(&mrt->mfc_hash, &c->mnode, ipmr_rht_params);
|
||||||
list_del_rcu(&c->list);
|
list_del_rcu(&c->list);
|
||||||
cache = (struct mfc_cache *)c;
|
cache = (struct mfc_cache *)c;
|
||||||
@ -617,7 +617,7 @@
|
|||||||
#ifdef CONFIG_IPV6_MROUTE_MULTIPLE_TABLES
|
#ifdef CONFIG_IPV6_MROUTE_MULTIPLE_TABLES
|
||||||
#define ip6mr_for_each_table(mrt, net) \
|
#define ip6mr_for_each_table(mrt, net) \
|
||||||
list_for_each_entry_rcu(mrt, &net->ipv6.mr6_tables, list)
|
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,
|
.cmparg_any = &ip6mr_mr_table_ops_cmparg_any,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -845,7 +845,7 @@
|
|||||||
static struct mr_table *ip6mr_new_table(struct net *net, u32 id)
|
static struct mr_table *ip6mr_new_table(struct net *net, u32 id)
|
||||||
{
|
{
|
||||||
struct mr_table *mrt;
|
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)
|
int parent)
|
||||||
{
|
{
|
||||||
struct mfc6_cache *c;
|
struct mfc6_cache *c;
|
||||||
@ -853,7 +853,7 @@
|
|||||||
|
|
||||||
/* The entries are added/deleted only under RTNL */
|
/* The entries are added/deleted only under RTNL */
|
||||||
rcu_read_lock();
|
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();
|
rcu_read_unlock();
|
||||||
if (!c)
|
if (!c)
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
@ -866,7 +866,7 @@
|
|||||||
rhltable_remove(&mrt->mfc_hash, &c->_c.mnode, ip6mr_rht_params);
|
rhltable_remove(&mrt->mfc_hash, &c->_c.mnode, ip6mr_rht_params);
|
||||||
list_del_rcu(&c->_c.list);
|
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);
|
FIB_EVENT_ENTRY_DEL, c, mrt->id);
|
||||||
mr6_netlink_event(mrt, c, RTM_DELROUTE);
|
mr6_netlink_event(mrt, c, RTM_DELROUTE);
|
||||||
mr_cache_put(&c->_c);
|
mr_cache_put(&c->_c);
|
||||||
@ -879,7 +879,7 @@
|
|||||||
return 0;
|
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,
|
call_ip6mr_mfc_entry_notifiers(net, FIB_EVENT_ENTRY_REPLACE,
|
||||||
c, mrt->id);
|
c, mrt->id);
|
||||||
mr6_netlink_event(mrt, c, RTM_NEWROUTE);
|
mr6_netlink_event(mrt, c, RTM_NEWROUTE);
|
||||||
@ -892,7 +892,7 @@
|
|||||||
return 0;
|
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)
|
static void mroute_clean_tables(struct mr_table *mrt, int flags)
|
||||||
{
|
{
|
||||||
@ -903,7 +903,7 @@
|
|||||||
struct mr_mfc *c, *tmp;
|
struct mr_mfc *c, *tmp;
|
||||||
LIST_HEAD(list);
|
LIST_HEAD(list);
|
||||||
int i;
|
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)) ||
|
if (((c->mfc_flags & MFC_STATIC) && !(flags & MRT6_FLUSH_MFC_STATIC)) ||
|
||||||
(!(c->mfc_flags & MFC_STATIC) && !(flags & MRT6_FLUSH_MFC)))
|
(!(c->mfc_flags & MFC_STATIC) && !(flags & MRT6_FLUSH_MFC)))
|
||||||
continue;
|
continue;
|
||||||
|
Loading…
Reference in New Issue
Block a user