aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPavel Emelyanov <xemul@openvz.org>2008-07-16 23:32:25 -0400
committerDavid S. Miller <davem@davemloft.net>2008-07-16 23:32:25 -0400
commitf2bf415cfed703de5ba94d25cdb160920c01fb00 (patch)
tree58c2ea153c45d14ecf348b6a891bcf3b258c6547
parent6f67c817fcfd94f5ca0f14b114b7fa25c0210c8b (diff)
mib: add net to NET_ADD_STATS_BH
This one is tricky. The thing is that this macro is only used when killing tw buckets, but since this killer is promiscuous wrt to which net each particular tw belongs to, I have to use it only when NET_NS is off. When the net namespaces are on, I use the INET_INC_STATS_BH for each bucket. Signed-off-by: Pavel Emelyanov <xemul@openvz.org> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--include/net/ip.h2
-rw-r--r--net/ipv4/inet_timewait_sock.c15
2 files changed, 13 insertions, 4 deletions
diff --git a/include/net/ip.h b/include/net/ip.h
index 79d13192ecc8..a8275b1338d7 100644
--- a/include/net/ip.h
+++ b/include/net/ip.h
@@ -164,7 +164,7 @@ DECLARE_SNMP_STAT(struct linux_mib, net_statistics);
164#define NET_INC_STATS(net, field) do { (void)net; SNMP_INC_STATS(net_statistics, field); } while (0) 164#define NET_INC_STATS(net, field) do { (void)net; SNMP_INC_STATS(net_statistics, field); } while (0)
165#define NET_INC_STATS_BH(net, field) do { (void)net; SNMP_INC_STATS_BH(net_statistics, field); } while (0) 165#define NET_INC_STATS_BH(net, field) do { (void)net; SNMP_INC_STATS_BH(net_statistics, field); } while (0)
166#define NET_INC_STATS_USER(net, field) do { (void)net; SNMP_INC_STATS_USER(net_statistics, field); } while (0) 166#define NET_INC_STATS_USER(net, field) do { (void)net; SNMP_INC_STATS_USER(net_statistics, field); } while (0)
167#define NET_ADD_STATS_BH(field, adnd) SNMP_ADD_STATS_BH(net_statistics, field, adnd) 167#define NET_ADD_STATS_BH(net, field, adnd) do { (void)net; SNMP_ADD_STATS_BH(net_statistics, field, adnd); } while (0)
168#define NET_ADD_STATS_USER(field, adnd) SNMP_ADD_STATS_USER(net_statistics, field, adnd) 168#define NET_ADD_STATS_USER(field, adnd) SNMP_ADD_STATS_USER(net_statistics, field, adnd)
169 169
170extern unsigned long snmp_fold_field(void *mib[], int offt); 170extern unsigned long snmp_fold_field(void *mib[], int offt);
diff --git a/net/ipv4/inet_timewait_sock.c b/net/ipv4/inet_timewait_sock.c
index 06006a5ac8b9..75c2def8f9a0 100644
--- a/net/ipv4/inet_timewait_sock.c
+++ b/net/ipv4/inet_timewait_sock.c
@@ -160,6 +160,9 @@ rescan:
160 __inet_twsk_del_dead_node(tw); 160 __inet_twsk_del_dead_node(tw);
161 spin_unlock(&twdr->death_lock); 161 spin_unlock(&twdr->death_lock);
162 __inet_twsk_kill(tw, twdr->hashinfo); 162 __inet_twsk_kill(tw, twdr->hashinfo);
163#ifdef CONFIG_NET_NS
164 NET_INC_STATS_BH(twsk_net(tw), LINUX_MIB_TIMEWAITED);
165#endif
163 inet_twsk_put(tw); 166 inet_twsk_put(tw);
164 killed++; 167 killed++;
165 spin_lock(&twdr->death_lock); 168 spin_lock(&twdr->death_lock);
@@ -178,8 +181,9 @@ rescan:
178 } 181 }
179 182
180 twdr->tw_count -= killed; 183 twdr->tw_count -= killed;
181 NET_ADD_STATS_BH(LINUX_MIB_TIMEWAITED, killed); 184#ifndef CONFIG_NET_NS
182 185 NET_ADD_STATS_BH(&init_net, LINUX_MIB_TIMEWAITED, killed);
186#endif
183 return ret; 187 return ret;
184} 188}
185 189
@@ -372,6 +376,9 @@ void inet_twdr_twcal_tick(unsigned long data)
372 &twdr->twcal_row[slot]) { 376 &twdr->twcal_row[slot]) {
373 __inet_twsk_del_dead_node(tw); 377 __inet_twsk_del_dead_node(tw);
374 __inet_twsk_kill(tw, twdr->hashinfo); 378 __inet_twsk_kill(tw, twdr->hashinfo);
379#ifdef CONFIG_NET_NS
380 NET_INC_STATS_BH(twsk_net(tw), LINUX_MIB_TIMEWAITKILLED);
381#endif
375 inet_twsk_put(tw); 382 inet_twsk_put(tw);
376 killed++; 383 killed++;
377 } 384 }
@@ -395,7 +402,9 @@ void inet_twdr_twcal_tick(unsigned long data)
395out: 402out:
396 if ((twdr->tw_count -= killed) == 0) 403 if ((twdr->tw_count -= killed) == 0)
397 del_timer(&twdr->tw_timer); 404 del_timer(&twdr->tw_timer);
398 NET_ADD_STATS_BH(LINUX_MIB_TIMEWAITKILLED, killed); 405#ifndef CONFIG_NET_NS
406 NET_ADD_STATS_BH(&init_net, LINUX_MIB_TIMEWAITKILLED, killed);
407#endif
399 spin_unlock(&twdr->death_lock); 408 spin_unlock(&twdr->death_lock);
400} 409}
401 410