projects
/
powerpc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge master.kernel.org:/home/rmk/linux-2.6-serial
[powerpc.git]
/
net
/
ipv4
/
ip_output.c
diff --git
a/net/ipv4/ip_output.c
b/net/ipv4/ip_output.c
index
ca0e714
..
a2ede16
100644
(file)
--- a/
net/ipv4/ip_output.c
+++ b/
net/ipv4/ip_output.c
@@
-209,7
+209,7
@@
static inline int ip_finish_output(struct sk_buff *skb)
return dst_output(skb);
}
#endif
return dst_output(skb);
}
#endif
- if (skb->len > dst_mtu(skb->dst) && !skb_
shinfo(skb)->gso_size
)
+ if (skb->len > dst_mtu(skb->dst) && !skb_
is_gso(skb)
)
return ip_fragment(skb, ip_finish_output2);
else
return ip_finish_output2(skb);
return ip_fragment(skb, ip_finish_output2);
else
return ip_finish_output2(skb);
@@
-440,6
+440,7
@@
int ip_fragment(struct sk_buff *skb, int (*output)(struct sk_buff*))
iph = skb->nh.iph;
if (unlikely((iph->frag_off & htons(IP_DF)) && !skb->local_df)) {
iph = skb->nh.iph;
if (unlikely((iph->frag_off & htons(IP_DF)) && !skb->local_df)) {
+ IP_INC_STATS(IPSTATS_MIB_FRAGFAILS);
icmp_send(skb, ICMP_DEST_UNREACH, ICMP_FRAG_NEEDED,
htonl(dst_mtu(&rt->u.dst)));
kfree_skb(skb);
icmp_send(skb, ICMP_DEST_UNREACH, ICMP_FRAG_NEEDED,
htonl(dst_mtu(&rt->u.dst)));
kfree_skb(skb);
@@
-526,6
+527,8
@@
int ip_fragment(struct sk_buff *skb, int (*output)(struct sk_buff*))
err = output(skb);
err = output(skb);
+ if (!err)
+ IP_INC_STATS(IPSTATS_MIB_FRAGCREATES);
if (err || !frag)
break;
if (err || !frag)
break;
@@
-649,9
+652,6
@@
slow_path:
/*
* Put this fragment into the sending queue.
*/
/*
* Put this fragment into the sending queue.
*/
-
- IP_INC_STATS(IPSTATS_MIB_FRAGCREATES);
-
iph->tot_len = htons(len + hlen);
ip_send_check(iph);
iph->tot_len = htons(len + hlen);
ip_send_check(iph);
@@
-659,6
+659,8
@@
slow_path:
err = output(skb2);
if (err)
goto fail;
err = output(skb2);
if (err)
goto fail;
+
+ IP_INC_STATS(IPSTATS_MIB_FRAGCREATES);
}
kfree_skb(skb);
IP_INC_STATS(IPSTATS_MIB_FRAGOKS);
}
kfree_skb(skb);
IP_INC_STATS(IPSTATS_MIB_FRAGOKS);
@@
-946,7
+948,7
@@
alloc_new_skb:
skb_prev->csum = csum_sub(skb_prev->csum,
skb->csum);
data += fraggap;
skb_prev->csum = csum_sub(skb_prev->csum,
skb->csum);
data += fraggap;
-
skb_trim
(skb_prev, maxfraglen);
+
pskb_trim_unique
(skb_prev, maxfraglen);
}
copy = datalen - transhdrlen - fraggap;
}
copy = datalen - transhdrlen - fraggap;
@@
-1095,7
+1097,7
@@
ssize_t ip_append_page(struct sock *sk, struct page *page,
while (size > 0) {
int i;
while (size > 0) {
int i;
- if (skb_
shinfo(skb)->gso_size
)
+ if (skb_
is_gso(skb)
)
len = size;
else {
len = size;
else {
@@
-1141,7
+1143,7
@@
ssize_t ip_append_page(struct sock *sk, struct page *page,
data, fraggap, 0);
skb_prev->csum = csum_sub(skb_prev->csum,
skb->csum);
data, fraggap, 0);
skb_prev->csum = csum_sub(skb_prev->csum,
skb->csum);
-
skb_trim
(skb_prev, maxfraglen);
+
pskb_trim_unique
(skb_prev, maxfraglen);
}
/*
}
/*