diff options
| author | Ingo Molnar <mingo@elte.hu> | 2008-11-18 10:48:49 -0500 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2008-11-18 10:48:49 -0500 |
| commit | 73f56c0d35e6427081a4eabd620d8b8d8a35bd09 (patch) | |
| tree | 9fe1a2577baea03f3a6ec4a5e79f3ff26c4ee0ae /net/ipv4 | |
| parent | 0af40a4b1050c050e62eb1dc30b82d5ab22bf221 (diff) | |
| parent | 8501c45cc32c311ae755a2d5ac8c4a5f04908d42 (diff) | |
Merge branch 'iommu-fixes-2.6.28' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu into x86/urgent
Diffstat (limited to 'net/ipv4')
| -rw-r--r-- | net/ipv4/ip_input.c | 10 | ||||
| -rw-r--r-- | net/ipv4/proc.c | 58 | ||||
| -rw-r--r-- | net/ipv4/tcp_htcp.c | 14 |
3 files changed, 49 insertions, 33 deletions
diff --git a/net/ipv4/ip_input.c b/net/ipv4/ip_input.c index 861978a4f1a8..cfb38ac9d698 100644 --- a/net/ipv4/ip_input.c +++ b/net/ipv4/ip_input.c | |||
| @@ -209,9 +209,17 @@ static int ip_local_deliver_finish(struct sk_buff *skb) | |||
| 209 | 209 | ||
| 210 | hash = protocol & (MAX_INET_PROTOS - 1); | 210 | hash = protocol & (MAX_INET_PROTOS - 1); |
| 211 | ipprot = rcu_dereference(inet_protos[hash]); | 211 | ipprot = rcu_dereference(inet_protos[hash]); |
| 212 | if (ipprot != NULL && (net == &init_net || ipprot->netns_ok)) { | 212 | if (ipprot != NULL) { |
| 213 | int ret; | 213 | int ret; |
| 214 | 214 | ||
| 215 | if (!net_eq(net, &init_net) && !ipprot->netns_ok) { | ||
| 216 | if (net_ratelimit()) | ||
| 217 | printk("%s: proto %d isn't netns-ready\n", | ||
| 218 | __func__, protocol); | ||
| 219 | kfree_skb(skb); | ||
| 220 | goto out; | ||
| 221 | } | ||
| 222 | |||
| 215 | if (!ipprot->no_policy) { | 223 | if (!ipprot->no_policy) { |
| 216 | if (!xfrm4_policy_check(NULL, XFRM_POLICY_IN, skb)) { | 224 | if (!xfrm4_policy_check(NULL, XFRM_POLICY_IN, skb)) { |
| 217 | kfree_skb(skb); | 225 | kfree_skb(skb); |
diff --git a/net/ipv4/proc.c b/net/ipv4/proc.c index 8f5a403f6f6b..a631a1f110ca 100644 --- a/net/ipv4/proc.c +++ b/net/ipv4/proc.c | |||
| @@ -237,43 +237,45 @@ static const struct snmp_mib snmp4_net_list[] = { | |||
| 237 | SNMP_MIB_SENTINEL | 237 | SNMP_MIB_SENTINEL |
| 238 | }; | 238 | }; |
| 239 | 239 | ||
| 240 | static void icmpmsg_put_line(struct seq_file *seq, unsigned long *vals, | ||
| 241 | unsigned short *type, int count) | ||
| 242 | { | ||
| 243 | int j; | ||
| 244 | |||
| 245 | if (count) { | ||
| 246 | seq_printf(seq, "\nIcmpMsg:"); | ||
| 247 | for (j = 0; j < count; ++j) | ||
| 248 | seq_printf(seq, " %sType%u", | ||
| 249 | type[j] & 0x100 ? "Out" : "In", | ||
| 250 | type[j] & 0xff); | ||
| 251 | seq_printf(seq, "\nIcmpMsg:"); | ||
| 252 | for (j = 0; j < count; ++j) | ||
| 253 | seq_printf(seq, " %lu", vals[j]); | ||
| 254 | } | ||
| 255 | } | ||
| 256 | |||
| 240 | static void icmpmsg_put(struct seq_file *seq) | 257 | static void icmpmsg_put(struct seq_file *seq) |
| 241 | { | 258 | { |
| 242 | #define PERLINE 16 | 259 | #define PERLINE 16 |
| 243 | 260 | ||
| 244 | int j, i, count; | 261 | int i, count; |
| 245 | static int out[PERLINE]; | 262 | unsigned short type[PERLINE]; |
| 263 | unsigned long vals[PERLINE], val; | ||
| 246 | struct net *net = seq->private; | 264 | struct net *net = seq->private; |
| 247 | 265 | ||
| 248 | count = 0; | 266 | count = 0; |
| 249 | for (i = 0; i < ICMPMSG_MIB_MAX; i++) { | 267 | for (i = 0; i < ICMPMSG_MIB_MAX; i++) { |
| 250 | 268 | val = snmp_fold_field((void **) net->mib.icmpmsg_statistics, i); | |
| 251 | if (snmp_fold_field((void **) net->mib.icmpmsg_statistics, i)) | 269 | if (val) { |
| 252 | out[count++] = i; | 270 | type[count] = i; |
| 253 | if (count < PERLINE) | 271 | vals[count++] = val; |
| 254 | continue; | 272 | } |
| 255 | 273 | if (count == PERLINE) { | |
| 256 | seq_printf(seq, "\nIcmpMsg:"); | 274 | icmpmsg_put_line(seq, vals, type, count); |
| 257 | for (j = 0; j < PERLINE; ++j) | 275 | count = 0; |
| 258 | seq_printf(seq, " %sType%u", i & 0x100 ? "Out" : "In", | 276 | } |
| 259 | i & 0xff); | ||
| 260 | seq_printf(seq, "\nIcmpMsg: "); | ||
| 261 | for (j = 0; j < PERLINE; ++j) | ||
| 262 | seq_printf(seq, " %lu", | ||
| 263 | snmp_fold_field((void **) net->mib.icmpmsg_statistics, | ||
| 264 | out[j])); | ||
| 265 | seq_putc(seq, '\n'); | ||
| 266 | } | ||
| 267 | if (count) { | ||
| 268 | seq_printf(seq, "\nIcmpMsg:"); | ||
| 269 | for (j = 0; j < count; ++j) | ||
| 270 | seq_printf(seq, " %sType%u", out[j] & 0x100 ? "Out" : | ||
| 271 | "In", out[j] & 0xff); | ||
| 272 | seq_printf(seq, "\nIcmpMsg:"); | ||
| 273 | for (j = 0; j < count; ++j) | ||
| 274 | seq_printf(seq, " %lu", snmp_fold_field((void **) | ||
| 275 | net->mib.icmpmsg_statistics, out[j])); | ||
| 276 | } | 277 | } |
| 278 | icmpmsg_put_line(seq, vals, type, count); | ||
| 277 | 279 | ||
| 278 | #undef PERLINE | 280 | #undef PERLINE |
| 279 | } | 281 | } |
diff --git a/net/ipv4/tcp_htcp.c b/net/ipv4/tcp_htcp.c index af99776146ff..937549b8a921 100644 --- a/net/ipv4/tcp_htcp.c +++ b/net/ipv4/tcp_htcp.c | |||
| @@ -69,9 +69,12 @@ static u32 htcp_cwnd_undo(struct sock *sk) | |||
| 69 | const struct tcp_sock *tp = tcp_sk(sk); | 69 | const struct tcp_sock *tp = tcp_sk(sk); |
| 70 | struct htcp *ca = inet_csk_ca(sk); | 70 | struct htcp *ca = inet_csk_ca(sk); |
| 71 | 71 | ||
| 72 | ca->last_cong = ca->undo_last_cong; | 72 | if (ca->undo_last_cong) { |
| 73 | ca->maxRTT = ca->undo_maxRTT; | 73 | ca->last_cong = ca->undo_last_cong; |
| 74 | ca->old_maxB = ca->undo_old_maxB; | 74 | ca->maxRTT = ca->undo_maxRTT; |
| 75 | ca->old_maxB = ca->undo_old_maxB; | ||
| 76 | ca->undo_last_cong = 0; | ||
| 77 | } | ||
| 75 | 78 | ||
| 76 | return max(tp->snd_cwnd, (tp->snd_ssthresh << 7) / ca->beta); | 79 | return max(tp->snd_cwnd, (tp->snd_ssthresh << 7) / ca->beta); |
| 77 | } | 80 | } |
| @@ -268,7 +271,10 @@ static void htcp_state(struct sock *sk, u8 new_state) | |||
| 268 | case TCP_CA_Open: | 271 | case TCP_CA_Open: |
| 269 | { | 272 | { |
| 270 | struct htcp *ca = inet_csk_ca(sk); | 273 | struct htcp *ca = inet_csk_ca(sk); |
| 271 | ca->last_cong = jiffies; | 274 | if (ca->undo_last_cong) { |
| 275 | ca->last_cong = jiffies; | ||
| 276 | ca->undo_last_cong = 0; | ||
| 277 | } | ||
| 272 | } | 278 | } |
| 273 | break; | 279 | break; |
| 274 | case TCP_CA_CWR: | 280 | case TCP_CA_CWR: |
