git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge to Fedora kernel-2.6.17-1.2187_FC5 patched with stable patch-2.6.17.13-vs2...
[linux-2.6.git]
/
net
/
ipv4
/
ip_output.c
diff --git
a/net/ipv4/ip_output.c
b/net/ipv4/ip_output.c
index
cff9c3a
..
20b1704
100644
(file)
--- a/
net/ipv4/ip_output.c
+++ b/
net/ipv4/ip_output.c
@@
-210,8
+210,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)->ufo_size || skb_shinfo(skb)->tso_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);
@@
-362,7
+361,7
@@
packet_routed:
}
ip_select_ident_more(iph, &rt->u.dst, sk,
}
ip_select_ident_more(iph, &rt->u.dst, sk,
- (skb_shinfo(skb)->
t
so_segs ?: 1) - 1);
+ (skb_shinfo(skb)->
g
so_segs ?: 1) - 1);
/* Add an IP checksum. */
ip_send_check(iph);
/* Add an IP checksum. */
ip_send_check(iph);
@@
-743,7
+742,8
@@
static inline int ip_ufo_append_data(struct sock *sk,
(length - transhdrlen));
if (!err) {
/* specify the length of each IP datagram fragment*/
(length - transhdrlen));
if (!err) {
/* specify the length of each IP datagram fragment*/
- skb_shinfo(skb)->ufo_size = (mtu - fragheaderlen);
+ skb_shinfo(skb)->gso_size = mtu - fragheaderlen;
+ skb_shinfo(skb)->gso_type = SKB_GSO_UDPV4;
__skb_queue_tail(&sk->sk_write_queue, skb);
return 0;
__skb_queue_tail(&sk->sk_write_queue, skb);
return 0;
@@
-839,7
+839,7
@@
int ip_append_data(struct sock *sk,
*/
if (transhdrlen &&
length + fragheaderlen <= mtu &&
*/
if (transhdrlen &&
length + fragheaderlen <= mtu &&
- rt->u.dst.dev->features
&(NETIF_F_IP_CSUM|NETIF_F_NO_CSUM|NETIF_F_HW_CSUM)
&&
+ rt->u.dst.dev->features
& NETIF_F_ALL_CSUM
&&
!exthdrlen)
csummode = CHECKSUM_HW;
!exthdrlen)
csummode = CHECKSUM_HW;
@@
-946,7
+946,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;
@@
-1086,14
+1086,16
@@
ssize_t ip_append_page(struct sock *sk, struct page *page,
inet->cork.length += size;
if ((sk->sk_protocol == IPPROTO_UDP) &&
inet->cork.length += size;
if ((sk->sk_protocol == IPPROTO_UDP) &&
- (rt->u.dst.dev->features & NETIF_F_UFO))
- skb_shinfo(skb)->ufo_size = (mtu - fragheaderlen);
+ (rt->u.dst.dev->features & NETIF_F_UFO)) {
+ skb_shinfo(skb)->gso_size = mtu - fragheaderlen;
+ skb_shinfo(skb)->gso_type = SKB_GSO_UDPV4;
+ }
while (size > 0) {
int i;
while (size > 0) {
int i;
- if (skb_
shinfo(skb)->ufo_size
)
+ if (skb_
is_gso(skb)
)
len = size;
else {
len = size;
else {
@@
-1139,7
+1141,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);
}
/*
}
/*