mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 03:01:39 -04:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Minor overlapping changes in net/ipv4/ipmr.c, in 'net' we were fixing the "BH-ness" of the counter bumps whilst in 'net-next' the functions were modified to take an explicit 'net' parameter. Signed-off-by: David S. Miller <[email protected]>
This commit is contained in:
commit
73186df8d7
27 changed files with 192 additions and 92 deletions
|
|
@ -1112,9 +1112,10 @@ static void nl_fib_lookup_exit(struct net *net)
|
|||
net->ipv4.fibnl = NULL;
|
||||
}
|
||||
|
||||
static void fib_disable_ip(struct net_device *dev, unsigned long event)
|
||||
static void fib_disable_ip(struct net_device *dev, unsigned long event,
|
||||
bool force)
|
||||
{
|
||||
if (fib_sync_down_dev(dev, event))
|
||||
if (fib_sync_down_dev(dev, event, force))
|
||||
fib_flush(dev_net(dev));
|
||||
rt_cache_flush(dev_net(dev));
|
||||
arp_ifdown(dev);
|
||||
|
|
@ -1142,7 +1143,7 @@ static int fib_inetaddr_event(struct notifier_block *this, unsigned long event,
|
|||
/* Last address was deleted from this interface.
|
||||
* Disable IP.
|
||||
*/
|
||||
fib_disable_ip(dev, event);
|
||||
fib_disable_ip(dev, event, true);
|
||||
} else {
|
||||
rt_cache_flush(dev_net(dev));
|
||||
}
|
||||
|
|
@ -1159,7 +1160,7 @@ static int fib_netdev_event(struct notifier_block *this, unsigned long event, vo
|
|||
unsigned int flags;
|
||||
|
||||
if (event == NETDEV_UNREGISTER) {
|
||||
fib_disable_ip(dev, event);
|
||||
fib_disable_ip(dev, event, true);
|
||||
rt_flush_dev(dev);
|
||||
return NOTIFY_DONE;
|
||||
}
|
||||
|
|
@ -1180,14 +1181,14 @@ static int fib_netdev_event(struct notifier_block *this, unsigned long event, vo
|
|||
rt_cache_flush(net);
|
||||
break;
|
||||
case NETDEV_DOWN:
|
||||
fib_disable_ip(dev, event);
|
||||
fib_disable_ip(dev, event, false);
|
||||
break;
|
||||
case NETDEV_CHANGE:
|
||||
flags = dev_get_flags(dev);
|
||||
if (flags & (IFF_RUNNING | IFF_LOWER_UP))
|
||||
fib_sync_up(dev, RTNH_F_LINKDOWN);
|
||||
else
|
||||
fib_sync_down_dev(dev, event);
|
||||
fib_sync_down_dev(dev, event, false);
|
||||
/* fall through */
|
||||
case NETDEV_CHANGEMTU:
|
||||
rt_cache_flush(net);
|
||||
|
|
|
|||
|
|
@ -1343,7 +1343,13 @@ int fib_sync_down_addr(struct net *net, __be32 local)
|
|||
return ret;
|
||||
}
|
||||
|
||||
int fib_sync_down_dev(struct net_device *dev, unsigned long event)
|
||||
/* Event force Flags Description
|
||||
* NETDEV_CHANGE 0 LINKDOWN Carrier OFF, not for scope host
|
||||
* NETDEV_DOWN 0 LINKDOWN|DEAD Link down, not for scope host
|
||||
* NETDEV_DOWN 1 LINKDOWN|DEAD Last address removed
|
||||
* NETDEV_UNREGISTER 1 LINKDOWN|DEAD Device removed
|
||||
*/
|
||||
int fib_sync_down_dev(struct net_device *dev, unsigned long event, bool force)
|
||||
{
|
||||
int ret = 0;
|
||||
int scope = RT_SCOPE_NOWHERE;
|
||||
|
|
@ -1352,8 +1358,7 @@ int fib_sync_down_dev(struct net_device *dev, unsigned long event)
|
|||
struct hlist_head *head = &fib_info_devhash[hash];
|
||||
struct fib_nh *nh;
|
||||
|
||||
if (event == NETDEV_UNREGISTER ||
|
||||
event == NETDEV_DOWN)
|
||||
if (force)
|
||||
scope = -1;
|
||||
|
||||
hlist_for_each_entry(nh, head, nh_hash) {
|
||||
|
|
@ -1498,6 +1503,13 @@ int fib_sync_up(struct net_device *dev, unsigned int nh_flags)
|
|||
if (!(dev->flags & IFF_UP))
|
||||
return 0;
|
||||
|
||||
if (nh_flags & RTNH_F_DEAD) {
|
||||
unsigned int flags = dev_get_flags(dev);
|
||||
|
||||
if (flags & (IFF_RUNNING | IFF_LOWER_UP))
|
||||
nh_flags |= RTNH_F_LINKDOWN;
|
||||
}
|
||||
|
||||
prev_fi = NULL;
|
||||
hash = fib_devindex_hashfn(dev->ifindex);
|
||||
head = &fib_info_devhash[hash];
|
||||
|
|
|
|||
|
|
@ -1683,8 +1683,8 @@ static inline int ipmr_forward_finish(struct net *net, struct sock *sk,
|
|||
{
|
||||
struct ip_options *opt = &(IPCB(skb)->opt);
|
||||
|
||||
IP_INC_STATS_BH(net, IPSTATS_MIB_OUTFORWDATAGRAMS);
|
||||
IP_ADD_STATS_BH(net, IPSTATS_MIB_OUTOCTETS, skb->len);
|
||||
IP_INC_STATS(net, IPSTATS_MIB_OUTFORWDATAGRAMS);
|
||||
IP_ADD_STATS(net, IPSTATS_MIB_OUTOCTETS, skb->len);
|
||||
|
||||
if (unlikely(opt->optlen))
|
||||
ip_forward_options(skb);
|
||||
|
|
@ -1746,7 +1746,7 @@ static void ipmr_queue_xmit(struct net *net, struct mr_table *mrt,
|
|||
* to blackhole.
|
||||
*/
|
||||
|
||||
IP_INC_STATS_BH(net, IPSTATS_MIB_FRAGFAILS);
|
||||
IP_INC_STATS(net, IPSTATS_MIB_FRAGFAILS);
|
||||
ip_rt_put(rt);
|
||||
goto out_free;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue