diff options
| -rw-r--r-- | net/xfrm/xfrm_proc.c | 17 |
1 files changed, 2 insertions, 15 deletions
diff --git a/net/xfrm/xfrm_proc.c b/net/xfrm/xfrm_proc.c index 284eaef1dbf2..a2adb51849a9 100644 --- a/net/xfrm/xfrm_proc.c +++ b/net/xfrm/xfrm_proc.c | |||
| @@ -44,27 +44,14 @@ static struct snmp_mib xfrm_mib_list[] = { | |||
| 44 | SNMP_MIB_SENTINEL | 44 | SNMP_MIB_SENTINEL |
| 45 | }; | 45 | }; |
| 46 | 46 | ||
| 47 | static unsigned long | ||
| 48 | fold_field(void *mib[], int offt) | ||
| 49 | { | ||
| 50 | unsigned long res = 0; | ||
| 51 | int i; | ||
| 52 | |||
| 53 | for_each_possible_cpu(i) { | ||
| 54 | res += *(((unsigned long *)per_cpu_ptr(mib[0], i)) + offt); | ||
| 55 | res += *(((unsigned long *)per_cpu_ptr(mib[1], i)) + offt); | ||
| 56 | } | ||
| 57 | return res; | ||
| 58 | } | ||
| 59 | |||
| 60 | static int xfrm_statistics_seq_show(struct seq_file *seq, void *v) | 47 | static int xfrm_statistics_seq_show(struct seq_file *seq, void *v) |
| 61 | { | 48 | { |
| 62 | struct net *net = seq->private; | 49 | struct net *net = seq->private; |
| 63 | int i; | 50 | int i; |
| 64 | for (i=0; xfrm_mib_list[i].name; i++) | 51 | for (i=0; xfrm_mib_list[i].name; i++) |
| 65 | seq_printf(seq, "%-24s\t%lu\n", xfrm_mib_list[i].name, | 52 | seq_printf(seq, "%-24s\t%lu\n", xfrm_mib_list[i].name, |
| 66 | fold_field((void **)net->mib.xfrm_statistics, | 53 | snmp_fold_field((void **)net->mib.xfrm_statistics, |
| 67 | xfrm_mib_list[i].entry)); | 54 | xfrm_mib_list[i].entry)); |
| 68 | return 0; | 55 | return 0; |
| 69 | } | 56 | } |
| 70 | 57 | ||
