Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 277503
b: refs/heads/master
c: acb32ba
h: refs/heads/master
i:
  277501: 08bdb45
  277499: ed5d01b
  277495: 1999558
  277487: 406881d
  277471: 75925bd
  277439: 273101f
  277375: b37a1d9
  277247: 62e164e
  276991: afef200
  276479: fb4d3be
v: v3
  • Loading branch information
Eric Dumazet authored and David S. Miller committed Nov 9, 2011
1 parent 0f64b3b commit 3d6add5
Show file tree
Hide file tree
Showing 6 changed files with 13 additions and 14 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: e56c57d0d3fdbbdf583d3af96bfb803b8dfa713e
refs/heads/master: acb32ba3dee66d58704caeeb8c6ff95f60efdc66
4 changes: 2 additions & 2 deletions trunk/include/net/icmp.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ struct icmp_err {
extern const struct icmp_err icmp_err_convert[];
#define ICMP_INC_STATS(net, field) SNMP_INC_STATS((net)->mib.icmp_statistics, field)
#define ICMP_INC_STATS_BH(net, field) SNMP_INC_STATS_BH((net)->mib.icmp_statistics, field)
#define ICMPMSGOUT_INC_STATS(net, field) SNMP_INC_STATS((net)->mib.icmpmsg_statistics, field+256)
#define ICMPMSGIN_INC_STATS_BH(net, field) SNMP_INC_STATS_BH((net)->mib.icmpmsg_statistics, field)
#define ICMPMSGOUT_INC_STATS(net, field) SNMP_INC_STATS_ATOMIC_LONG((net)->mib.icmpmsg_statistics, field+256)
#define ICMPMSGIN_INC_STATS_BH(net, field) SNMP_INC_STATS_ATOMIC_LONG((net)->mib.icmpmsg_statistics, field)

struct dst_entry;
struct net_proto_family;
Expand Down
2 changes: 1 addition & 1 deletion trunk/include/net/netns/mib.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ struct netns_mib {
DEFINE_SNMP_STAT(struct udp_mib, udp_statistics);
DEFINE_SNMP_STAT(struct udp_mib, udplite_statistics);
DEFINE_SNMP_STAT(struct icmp_mib, icmp_statistics);
DEFINE_SNMP_STAT(struct icmpmsg_mib, icmpmsg_statistics);
DEFINE_SNMP_STAT_ATOMIC(struct icmpmsg_mib, icmpmsg_statistics);

#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
struct proc_dir_entry *proc_net_devsnmp6;
Expand Down
2 changes: 1 addition & 1 deletion trunk/include/net/snmp.h
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ struct icmp_mib {

#define ICMPMSG_MIB_MAX __ICMPMSG_MIB_MAX
struct icmpmsg_mib {
unsigned long mibs[ICMPMSG_MIB_MAX];
atomic_long_t mibs[ICMPMSG_MIB_MAX];
};

/* ICMP6 (IPv6-ICMP) */
Expand Down
8 changes: 4 additions & 4 deletions trunk/net/ipv4/af_inet.c
Original file line number Diff line number Diff line change
Expand Up @@ -1572,9 +1572,9 @@ static __net_init int ipv4_mib_init_net(struct net *net)
sizeof(struct icmp_mib),
__alignof__(struct icmp_mib)) < 0)
goto err_icmp_mib;
if (snmp_mib_init((void __percpu **)net->mib.icmpmsg_statistics,
sizeof(struct icmpmsg_mib),
__alignof__(struct icmpmsg_mib)) < 0)
net->mib.icmpmsg_statistics = kzalloc(sizeof(struct icmpmsg_mib),
GFP_KERNEL);
if (!net->mib.icmpmsg_statistics)
goto err_icmpmsg_mib;

tcp_mib_init(net);
Expand All @@ -1598,7 +1598,7 @@ static __net_init int ipv4_mib_init_net(struct net *net)

static __net_exit void ipv4_mib_exit_net(struct net *net)
{
snmp_mib_free((void __percpu **)net->mib.icmpmsg_statistics);
kfree(net->mib.icmpmsg_statistics);
snmp_mib_free((void __percpu **)net->mib.icmp_statistics);
snmp_mib_free((void __percpu **)net->mib.udplite_statistics);
snmp_mib_free((void __percpu **)net->mib.udp_statistics);
Expand Down
9 changes: 4 additions & 5 deletions trunk/net/ipv4/proc.c
Original file line number Diff line number Diff line change
Expand Up @@ -288,7 +288,7 @@ static void icmpmsg_put(struct seq_file *seq)

count = 0;
for (i = 0; i < ICMPMSG_MIB_MAX; i++) {
val = snmp_fold_field((void __percpu **) net->mib.icmpmsg_statistics, i);
val = atomic_long_read(&net->mib.icmpmsg_statistics->mibs[i]);
if (val) {
type[count] = i;
vals[count++] = val;
Expand All @@ -307,6 +307,7 @@ static void icmp_put(struct seq_file *seq)
{
int i;
struct net *net = seq->private;
atomic_long_t *ptr = net->mib.icmpmsg_statistics->mibs;

seq_puts(seq, "\nIcmp: InMsgs InErrors");
for (i=0; icmpmibmap[i].name != NULL; i++)
Expand All @@ -319,15 +320,13 @@ static void icmp_put(struct seq_file *seq)
snmp_fold_field((void __percpu **) net->mib.icmp_statistics, ICMP_MIB_INERRORS));
for (i=0; icmpmibmap[i].name != NULL; i++)
seq_printf(seq, " %lu",
snmp_fold_field((void __percpu **) net->mib.icmpmsg_statistics,
icmpmibmap[i].index));
atomic_long_read(ptr + icmpmibmap[i].index));
seq_printf(seq, " %lu %lu",
snmp_fold_field((void __percpu **) net->mib.icmp_statistics, ICMP_MIB_OUTMSGS),
snmp_fold_field((void __percpu **) net->mib.icmp_statistics, ICMP_MIB_OUTERRORS));
for (i=0; icmpmibmap[i].name != NULL; i++)
seq_printf(seq, " %lu",
snmp_fold_field((void __percpu **) net->mib.icmpmsg_statistics,
icmpmibmap[i].index | 0x100));
atomic_long_read(ptr + (icmpmibmap[i].index | 0x100)));
}

/*
Expand Down

0 comments on commit 3d6add5

Please sign in to comment.