Code Review
/
kvmfornfv.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
Upgrade to 4.4.50-rt62
[kvmfornfv.git]
/
kernel
/
net
/
ipv4
/
igmp.c
diff --git
a/kernel/net/ipv4/igmp.c
b/kernel/net/ipv4/igmp.c
index
05e4cba
..
17adfda
100644
(file)
--- a/
kernel/net/ipv4/igmp.c
+++ b/
kernel/net/ipv4/igmp.c
@@
-225,9
+225,14
@@
static void igmp_start_timer(struct ip_mc_list *im, int max_delay)
static void igmp_gq_start_timer(struct in_device *in_dev)
{
int tv = prandom_u32() % in_dev->mr_maxdelay;
static void igmp_gq_start_timer(struct in_device *in_dev)
{
int tv = prandom_u32() % in_dev->mr_maxdelay;
+ unsigned long exp = jiffies + tv + 2;
+
+ if (in_dev->mr_gq_running &&
+ time_after_eq(exp, (in_dev->mr_gq_timer).expires))
+ return;
in_dev->mr_gq_running = 1;
in_dev->mr_gq_running = 1;
- if (!mod_timer(&in_dev->mr_gq_timer,
jiffies+tv+2
))
+ if (!mod_timer(&in_dev->mr_gq_timer,
exp
))
in_dev_hold(in_dev);
}
in_dev_hold(in_dev);
}
@@
-356,9
+361,8
@@
static struct sk_buff *igmpv3_newpack(struct net_device *dev, unsigned int mtu)
skb_dst_set(skb, &rt->dst);
skb->dev = dev;
skb_dst_set(skb, &rt->dst);
skb->dev = dev;
- skb->reserved_tailroom = skb_end_offset(skb) -
- min(mtu, skb_end_offset(skb));
skb_reserve(skb, hlen);
skb_reserve(skb, hlen);
+ skb_tailroom_reserve(skb, mtu, tlen);
skb_reset_network_header(skb);
pip = ip_hdr(skb);
skb_reset_network_header(skb);
pip = ip_hdr(skb);