diff options
author | John W. Linville <linville@tuxdriver.com> | 2006-03-15 17:02:08 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2006-03-15 17:02:08 -0500 |
commit | dd288e7d75b9041f79fecae77d61cfa345da7266 (patch) | |
tree | 85ff1d1ea0fe1d6eae0b6819422d5c6c05f862cd /net/ipv4 | |
parent | 30dcbf29cc6d92d70fa262e79e84011fe6913bed (diff) | |
parent | 72df16f109b73be37977a26d342e9103e8851cb6 (diff) |
Merge branch 'upstream-fixes'
Diffstat (limited to 'net/ipv4')
-rw-r--r-- | net/ipv4/ip_output.c | 7 | ||||
-rw-r--r-- | net/ipv4/netfilter/arp_tables.c | 2 | ||||
-rw-r--r-- | net/ipv4/tcp_highspeed.c | 2 | ||||
-rw-r--r-- | net/ipv4/tcp_output.c | 4 |
4 files changed, 10 insertions, 5 deletions
diff --git a/net/ipv4/ip_output.c b/net/ipv4/ip_output.c index 57d290d89e..8ee4d01674 100644 --- a/net/ipv4/ip_output.c +++ b/net/ipv4/ip_output.c | |||
@@ -847,10 +847,11 @@ int ip_append_data(struct sock *sk, | |||
847 | if (((length > mtu) && (sk->sk_protocol == IPPROTO_UDP)) && | 847 | if (((length > mtu) && (sk->sk_protocol == IPPROTO_UDP)) && |
848 | (rt->u.dst.dev->features & NETIF_F_UFO)) { | 848 | (rt->u.dst.dev->features & NETIF_F_UFO)) { |
849 | 849 | ||
850 | if(ip_ufo_append_data(sk, getfrag, from, length, hh_len, | 850 | err = ip_ufo_append_data(sk, getfrag, from, length, hh_len, |
851 | fragheaderlen, transhdrlen, mtu, flags)) | 851 | fragheaderlen, transhdrlen, mtu, |
852 | flags); | ||
853 | if (err) | ||
852 | goto error; | 854 | goto error; |
853 | |||
854 | return 0; | 855 | return 0; |
855 | } | 856 | } |
856 | 857 | ||
diff --git a/net/ipv4/netfilter/arp_tables.c b/net/ipv4/netfilter/arp_tables.c index dd1048be8a..7d7ab94a7a 100644 --- a/net/ipv4/netfilter/arp_tables.c +++ b/net/ipv4/netfilter/arp_tables.c | |||
@@ -771,7 +771,7 @@ static int get_entries(const struct arpt_get_entries *entries, | |||
771 | struct arpt_table *t; | 771 | struct arpt_table *t; |
772 | 772 | ||
773 | t = xt_find_table_lock(NF_ARP, entries->name); | 773 | t = xt_find_table_lock(NF_ARP, entries->name); |
774 | if (t || !IS_ERR(t)) { | 774 | if (t && !IS_ERR(t)) { |
775 | struct xt_table_info *private = t->private; | 775 | struct xt_table_info *private = t->private; |
776 | duprintf("t->private->number = %u\n", | 776 | duprintf("t->private->number = %u\n", |
777 | private->number); | 777 | private->number); |
diff --git a/net/ipv4/tcp_highspeed.c b/net/ipv4/tcp_highspeed.c index 63cf7e5408..e0e9d1383c 100644 --- a/net/ipv4/tcp_highspeed.c +++ b/net/ipv4/tcp_highspeed.c | |||
@@ -125,7 +125,7 @@ static void hstcp_cong_avoid(struct sock *sk, u32 adk, u32 rtt, | |||
125 | /* Update AIMD parameters */ | 125 | /* Update AIMD parameters */ |
126 | if (tp->snd_cwnd > hstcp_aimd_vals[ca->ai].cwnd) { | 126 | if (tp->snd_cwnd > hstcp_aimd_vals[ca->ai].cwnd) { |
127 | while (tp->snd_cwnd > hstcp_aimd_vals[ca->ai].cwnd && | 127 | while (tp->snd_cwnd > hstcp_aimd_vals[ca->ai].cwnd && |
128 | ca->ai < HSTCP_AIMD_MAX) | 128 | ca->ai < HSTCP_AIMD_MAX - 1) |
129 | ca->ai++; | 129 | ca->ai++; |
130 | } else if (tp->snd_cwnd < hstcp_aimd_vals[ca->ai].cwnd) { | 130 | } else if (tp->snd_cwnd < hstcp_aimd_vals[ca->ai].cwnd) { |
131 | while (tp->snd_cwnd > hstcp_aimd_vals[ca->ai].cwnd && | 131 | while (tp->snd_cwnd > hstcp_aimd_vals[ca->ai].cwnd && |
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index a7623ead39..9f498a6c88 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c | |||
@@ -1036,6 +1036,10 @@ static int tcp_tso_should_defer(struct sock *sk, struct tcp_sock *tp, struct sk_ | |||
1036 | 1036 | ||
1037 | limit = min(send_win, cong_win); | 1037 | limit = min(send_win, cong_win); |
1038 | 1038 | ||
1039 | /* If a full-sized TSO skb can be sent, do it. */ | ||
1040 | if (limit >= 65536) | ||
1041 | return 0; | ||
1042 | |||
1039 | if (sysctl_tcp_tso_win_divisor) { | 1043 | if (sysctl_tcp_tso_win_divisor) { |
1040 | u32 chunk = min(tp->snd_wnd, tp->snd_cwnd * tp->mss_cache); | 1044 | u32 chunk = min(tp->snd_wnd, tp->snd_cwnd * tp->mss_cache); |
1041 | 1045 | ||