diff options
Diffstat (limited to 'net/ipv4/tcp_output.c')
-rw-r--r-- | net/ipv4/tcp_output.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index 9d79546d384e..a28ae593b976 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c | |||
@@ -59,9 +59,6 @@ int sysctl_tcp_tso_win_divisor = 3; | |||
59 | int sysctl_tcp_mtu_probing = 0; | 59 | int sysctl_tcp_mtu_probing = 0; |
60 | int sysctl_tcp_base_mss = 512; | 60 | int sysctl_tcp_base_mss = 512; |
61 | 61 | ||
62 | EXPORT_SYMBOL(sysctl_tcp_mtu_probing); | ||
63 | EXPORT_SYMBOL(sysctl_tcp_base_mss); | ||
64 | |||
65 | static void update_send_head(struct sock *sk, struct tcp_sock *tp, | 62 | static void update_send_head(struct sock *sk, struct tcp_sock *tp, |
66 | struct sk_buff *skb) | 63 | struct sk_buff *skb) |
67 | { | 64 | { |
@@ -536,6 +533,7 @@ int tcp_fragment(struct sock *sk, struct sk_buff *skb, u32 len, unsigned int mss | |||
536 | struct tcp_sock *tp = tcp_sk(sk); | 533 | struct tcp_sock *tp = tcp_sk(sk); |
537 | struct sk_buff *buff; | 534 | struct sk_buff *buff; |
538 | int nsize, old_factor; | 535 | int nsize, old_factor; |
536 | int nlen; | ||
539 | u16 flags; | 537 | u16 flags; |
540 | 538 | ||
541 | BUG_ON(len > skb->len); | 539 | BUG_ON(len > skb->len); |
@@ -554,7 +552,11 @@ int tcp_fragment(struct sock *sk, struct sk_buff *skb, u32 len, unsigned int mss | |||
554 | buff = sk_stream_alloc_skb(sk, nsize, GFP_ATOMIC); | 552 | buff = sk_stream_alloc_skb(sk, nsize, GFP_ATOMIC); |
555 | if (buff == NULL) | 553 | if (buff == NULL) |
556 | return -ENOMEM; /* We'll just try again later. */ | 554 | return -ENOMEM; /* We'll just try again later. */ |
555 | |||
557 | sk_charge_skb(sk, buff); | 556 | sk_charge_skb(sk, buff); |
557 | nlen = skb->len - len - nsize; | ||
558 | buff->truesize += nlen; | ||
559 | skb->truesize -= nlen; | ||
558 | 560 | ||
559 | /* Correct the sequence numbers. */ | 561 | /* Correct the sequence numbers. */ |
560 | TCP_SKB_CB(buff)->seq = TCP_SKB_CB(skb)->seq + len; | 562 | TCP_SKB_CB(buff)->seq = TCP_SKB_CB(skb)->seq + len; |
@@ -1040,7 +1042,8 @@ static int tso_fragment(struct sock *sk, struct sk_buff *skb, unsigned int len, | |||
1040 | if (unlikely(buff == NULL)) | 1042 | if (unlikely(buff == NULL)) |
1041 | return -ENOMEM; | 1043 | return -ENOMEM; |
1042 | 1044 | ||
1043 | buff->truesize = nlen; | 1045 | sk_charge_skb(sk, buff); |
1046 | buff->truesize += nlen; | ||
1044 | skb->truesize -= nlen; | 1047 | skb->truesize -= nlen; |
1045 | 1048 | ||
1046 | /* Correct the sequence numbers. */ | 1049 | /* Correct the sequence numbers. */ |